OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Corrector.h
Go to the documentation of this file.
1 #ifndef CLASSIC_Corrector_HH
2 #define CLASSIC_Corrector_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: Corrector.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: Corrector
13 // Defines the abstract interface for a orbit corrector.
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"
27 #include "Fields/BDipoleField.h"
28 
29 // Class Corrector
30 // ------------------------------------------------------------------------
32 // Class Corrector defines the abstract interface for closed orbit
33 // correctors.
34 
35 class Corrector: public Component {
36 
37 public:
38 
40  enum Plane {
42  OFF,
44  X,
46  Y,
49  };
50 
52  explicit Corrector(const std::string &name);
53 
54  Corrector();
55  Corrector(const Corrector &right);
56  virtual ~Corrector();
57 
59  virtual void accept(BeamlineVisitor &) const;
60 
61 
63  // Version for non-constant object.
64  virtual BDipoleField &getField() = 0;
65 
67  // Version for constant object.
68  virtual const BDipoleField &getField() const = 0;
69 
71  virtual StraightGeometry &getGeometry() = 0;
72 
74  virtual const StraightGeometry &getGeometry() const = 0;
75 
77  virtual Plane getPlane() const = 0;
78 
79  virtual bool apply(const size_t &i,
80  const double &t,
81  Vector_t &E,
82  Vector_t &B);
83 
84  virtual bool apply(const Vector_t &R,
85  const Vector_t &P,
86  const double &t,
87  Vector_t &E,
88  Vector_t &B);
89 
90  virtual void initialise(PartBunchBase<double, 3> *bunch, double &startField, double &endField);
91 
92  virtual void goOnline(const double &kineticEnergy);
93 
94  virtual void finalise();
95 
96  virtual bool bends() const;
97 
98  virtual ElementBase::ElementType getType() const;
99 
100  virtual void getDimensions(double &zBegin, double &zEnd) const;
101 
102  void setKickX(double k);
103 
104  void setKickY(double k);
105 
106  virtual void setDesignEnergy(const double& ekin, bool changeable = true);
107 
108  double getKickX() const;
109 
110  double getKickY() const;
111 
112  void setKickField(const Vector_t &k0);
113 
114 private:
115  double kickX_m;
116  double kickY_m;
120 
122 
123 protected:
124 
125  // Not implemented.
126  void operator=(const Corrector &);
127 
129 };
130 
131 inline
132 void Corrector::setKickX(double k) {
133  kickX_m = k;
134 }
135 
136 inline
137 void Corrector::setKickY(double k) {
138  kickY_m = k;
139 }
140 
141 inline
142 double Corrector::getKickX() const {
143  return kickX_m;
144 }
145 
146 inline
147 double Corrector::getKickY() const {
148  return kickY_m;
149 }
150 
151 inline
153  kickField_m = k0;
154  kickFieldSet_m = true;
155 }
156 #endif // CLASSIC_Corrector_HH
virtual ElementBase::ElementType getType() const
Get element type std::string.
Definition: Corrector.cpp:152
virtual void accept(BeamlineVisitor &) const
Apply a visitor to Corrector.
Definition: Corrector.cpp:64
virtual BDipoleField & getField()=0
Return the corrector field.
virtual void finalise()
Definition: Corrector.cpp:106
double kickY_m
Definition: Corrector.h:116
Definition: TSVMeta.h:24
The field of a magnetic dipole.
Definition: BDipoleField.h:31
Corrector acts on both planes.
Definition: Corrector.h:48
Vector_t kickField_m
Definition: Corrector.h:121
Corrector is off (inactive).
Definition: Corrector.h:42
void setKickY(double k)
Definition: Corrector.h:137
bool kickFieldSet_m
Definition: Corrector.h:119
Interface for general corrector.
Definition: Corrector.h:35
virtual Plane getPlane() const =0
Return the plane on which the corrector acts.
Plane plane_m
Definition: Corrector.h:128
virtual bool bends() const
Definition: Corrector.cpp:142
virtual void goOnline(const double &kineticEnergy)
Definition: Corrector.cpp:109
virtual void setDesignEnergy(const double &ekin, bool changeable=true)
Definition: Corrector.cpp:127
void operator=(const Corrector &)
virtual void getDimensions(double &zBegin, double &zEnd) const
Definition: Corrector.cpp:146
bool designEnergyChangeable_m
Definition: Corrector.h:118
Plane
Plane selection.
Definition: Corrector.h:40
void setKickX(double k)
Definition: Corrector.h:132
Corrector acts on y-plane.
Definition: Corrector.h:46
virtual StraightGeometry & getGeometry()=0
Return the corrector geometry.
Corrector acts on x-plane.
Definition: Corrector.h:44
double getKickX() const
Definition: Corrector.h:142
double getKickY() const
Definition: Corrector.h:147
A geometry representing a straight line.
const std::string name
virtual ~Corrector()
Definition: Corrector.cpp:60
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField)
Definition: Corrector.cpp:101
double designEnergy_m
Definition: Corrector.h:117
Interface for a single beam element.
Definition: Component.h:51
Abstract algorithm.
double kickX_m
Definition: Corrector.h:115
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B)
Definition: Corrector.cpp:68
void setKickField(const Vector_t &k0)
Definition: Corrector.h:152