OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Monitor.h
Go to the documentation of this file.
1 #ifndef CLASSIC_Monitor_HH
2 #define CLASSIC_Monitor_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: Monitor.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: Monitor
13 // Defines the abstract interface for a beam position monitor.
14 //
15 // ------------------------------------------------------------------------
16 // Class category: AbsBeamline
17 // ------------------------------------------------------------------------
18 //
19 // $Date: 2000/03/27 09:32:31 $
20 // $Author: fci $
21 //
22 // ------------------------------------------------------------------------
23 
24 #include "AbsBeamline/Component.h"
26 #include "Structure/LossDataSink.h"
27 
28 #include <map>
29 #include <string>
30 
31 template <class T, unsigned Dim>
32 class PartBunchBase;
33 class BeamlineVisitor;
34 
35 // Class Monitor
36 // ------------------------------------------------------------------------
38 // Class Monitor defines the abstract interface for general beam position
39 // monitors.
40 
41 class Monitor: public Component {
42 
43 public:
44 
46  enum Plane {
48  OFF,
50  X,
52  Y,
55  };
56 
57  enum Type {
60  };
61 
63  explicit Monitor(const std::string &name);
64 
65  Monitor();
66  Monitor(const Monitor &);
67  virtual ~Monitor();
68 
70  virtual void accept(BeamlineVisitor &) const override;
71 
73  virtual StraightGeometry &getGeometry() override = 0;
74 
76  virtual const StraightGeometry &getGeometry() const override = 0;
77 
79  virtual Plane getPlane() const = 0;
80 
81  virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override;
82 
83  virtual bool applyToReferenceParticle(const Vector_t &R,
84  const Vector_t &P,
85  const double &t,
86  Vector_t &E,
87  Vector_t &B) override;
88 
89  virtual void initialise(PartBunchBase<double, 3> *bunch, double &startField, double &endField) override;
90 
91  virtual void finalise() override;
92 
93  virtual bool bends() const override;
94 
95  virtual void goOnline(const double &kineticEnergy) override;
96 
97  virtual void goOffline() override;
98 
99  virtual ElementBase::ElementType getType() const override;
100 
101  virtual void getDimensions(double &zBegin, double &zEnd) const override;
102 
103  void setOutputFN(std::string fn);
104 
105  void setType(Type type);
106 
107  static void writeStatistics();
108 private:
109 
110  // Not implemented.
111  void operator=(const Monitor &);
112  std::string filename_m;
115  unsigned int numPassages_m;
116 
117  std::unique_ptr<LossDataSink> lossDs_m;
118 
119  static std::map<double, SetStatistics> statFileEntries_sm;
120  static const double halfLength_s;
121 };
122 
123 inline
125  type_m = type;
126 }
127 
128 #endif // CLASSIC_Monitor_HH
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
Definition: Monitor.cpp:139
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Monitor.
Definition: Monitor.cpp:70
Type type_m
Definition: Monitor.h:114
Definition: TSVMeta.h:24
Interface for beam position monitors.
Definition: Monitor.h:41
virtual StraightGeometry & getGeometry() override=0
Get geometry.
std::string filename_m
Definition: Monitor.h:112
static std::map< double, SetStatistics > statFileEntries_sm
Definition: Monitor.h:119
std::unique_ptr< LossDataSink > lossDs_m
Definition: Monitor.h:117
Monitor acts on both planes.
Definition: Monitor.h:54
unsigned int numPassages_m
Definition: Monitor.h:115
virtual void goOffline() override
Definition: Monitor.cpp:180
Monitor acts on x-plane.
Definition: Monitor.h:50
Monitor is off (inactive).
Definition: Monitor.h:48
virtual void finalise() override
Definition: Monitor.cpp:172
virtual void getDimensions(double &zBegin, double &zEnd) const override
Definition: Monitor.cpp:199
static const double halfLength_s
Definition: Monitor.h:120
Class: DataSink.
Definition: OpalData.h:29
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
Definition: Monitor.cpp:74
virtual Plane getPlane() const =0
Get plane on which monitor observes.
Plane plane_m
Definition: Monitor.h:113
Monitor acts on y-plane.
Definition: Monitor.h:52
virtual ElementBase::ElementType getType() const override
Get element type std::string.
Definition: Monitor.cpp:205
virtual ~Monitor()
Definition: Monitor.cpp:66
A geometry representing a straight line.
void setType(Type type)
Definition: Monitor.h:124
void operator=(const Monitor &)
static void writeStatistics()
Definition: Monitor.cpp:209
Monitor()
Definition: Monitor.cpp:43
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
Definition: Monitor.cpp:93
const std::string name
Interface for a single beam element.
Definition: Component.h:51
virtual bool bends() const override
Definition: Monitor.cpp:191
Abstract algorithm.
virtual void goOnline(const double &kineticEnergy) override
Definition: Monitor.cpp:176
Plane
Plane selection.
Definition: Monitor.h:46
void setOutputFN(std::string fn)
Definition: Monitor.cpp:195