OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
BendBase.h
Go to the documentation of this file.
1 #ifndef CLASSIC_BENDBASE_H
2 #define CLASSIC_BENDBASE_H
3 
5 
6 #include <vector>
7 #include <string>
8 
9 class BendBase: public Component {
10 public:
11  BendBase();
12  BendBase(const BendBase &);
13  BendBase(const std::string &);
14 
16  virtual bool bends() const;
17 
18  void setLength(double length);
19  double getLength() const;
20  double getChordLength() const;
21  virtual void setBendAngle(double angle);
22  double getBendAngle() const;
23  virtual void setEntranceAngle(double entranceAngle);
24  double getEntranceAngle() const;
25  virtual double getExitAngle() const = 0;
26  void setFullGap(double);
27  double getFullGap() const;
28 
29  virtual void setDesignEnergy(const double& energy, bool changeable = true);
30  double getDesignEnergy() const;
31  std::vector<Vector_t> getDesignPath() const;
32 
33  void setFieldAmplitude(double k0, double k0s);
34  double getFieldAmplitude() const;
35 
36  void setFieldMapFN(std::string fileName);
37  std::string getFieldMapFN() const;
38 
39 protected:
40  double length_m;
41  double chordLength_m;
42  double angle_m;
43  double entranceAngle_m;
44 
45  double gap_m;
46 
47  double designEnergy_m;
50  std::vector<Vector_t> refTrajMap_m;
51 
52  double bX_m;
53  double bY_m;
55 
56  std::string fileName_m;
57 };
58 
59 inline
60 bool BendBase::bends() const {
61  return true;
62 }
63 
64 inline
65 void BendBase::setLength(double length) {
66  length_m = std::abs(length);
67 }
68 
69 inline
70 double BendBase::getLength() const
71 {
72  return length_m;
73 }
74 
75 inline
76 double BendBase::getChordLength() const {
77  return chordLength_m;
78 }
79 
80 inline
81 void BendBase::setBendAngle(double angle) {
82  angle_m = angle;
83 }
84 
85 inline
86 double BendBase::getBendAngle() const {
87  return angle_m;
88 }
89 
90 inline
91 void BendBase::setEntranceAngle(double angle)
92 {
93  entranceAngle_m = angle;
94 }
95 
96 inline
98  return entranceAngle_m;
99 }
100 
101 inline
102 void BendBase::setFullGap(double gap) {
103  gap_m = std::abs(gap);
104 }
105 
106 inline
107 double BendBase::getFullGap() const {
108  return gap_m;
109 }
110 
111 inline
112 void BendBase::setDesignEnergy(const double& energy, bool changeable) {
114  designEnergy_m = std::abs(energy) * 1e6;
115  designEnergyChangeable_m = changeable;
116  }
117 }
118 
119 inline
121  return designEnergy_m;
122 }
123 
124 inline
125 void BendBase::setFieldAmplitude(double k0, double k0s) {
126  bY_m = k0;
127  bX_m = k0s;
128 }
129 
130 inline
132 {
133  return fieldAmplitude_m;
134 }
135 
136 inline
137 void BendBase::setFieldMapFN(std::string fileName) {
138  fileName_m = fileName;
139 }
140 
141 inline
142 std::string BendBase::getFieldMapFN() const {
143  return fileName_m;
144 }
145 
146 
147 #endif
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
BendBase()
Definition: BendBase.cpp:3
std::string fileName_m
Definition: BendBase.h:56
void setFullGap(double)
Definition: BendBase.h:102
double chordLength_m
Definition: BendBase.h:41
double getChordLength() const
Definition: BendBase.h:76
double bX_m
Definition: BendBase.h:52
virtual double getExitAngle() const =0
std::vector< Vector_t > getDesignPath() const
Definition: BendBase.cpp:43
double getDesignEnergy() const
Definition: BendBase.h:120
virtual void setEntranceAngle(double entranceAngle)
Definition: BendBase.h:91
double getBendAngle() const
Definition: BendBase.h:86
virtual void setDesignEnergy(const double &energy, bool changeable=true)
Definition: BendBase.h:112
virtual void setBendAngle(double angle)
Definition: BendBase.h:81
void setFieldMapFN(std::string fileName)
Definition: BendBase.h:137
bool designEnergyChangeable_m
Bend design energy (eV).
Definition: BendBase.h:48
double entranceAngle_m
Definition: BendBase.h:43
double getFieldAmplitude() const
Definition: BendBase.h:131
std::string getFieldMapFN() const
Definition: BendBase.h:142
void setLength(double length)
Definition: BendBase.h:65
double fieldAmplitude_m
Definition: BendBase.h:54
virtual bool bends() const
Indicates that element bends the beam.
Definition: BendBase.h:60
double getLength() const
Definition: BendBase.h:70
double length_m
Definition: BendBase.h:40
double designEnergy_m
Definition: BendBase.h:47
void setFieldAmplitude(double k0, double k0s)
Definition: BendBase.h:125
Interface for a single beam element.
Definition: Component.h:51
double gap_m
Angle between incoming reference trajectory.
Definition: BendBase.h:45
double getEntranceAngle() const
Definition: BendBase.h:97
double angle_m
Definition: BendBase.h:42
double bY_m
Definition: BendBase.h:53
std::vector< Vector_t > refTrajMap_m
Map of reference particle trajectory.
Definition: BendBase.h:50
double getFullGap() const
Definition: BendBase.h:107