OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
ClassicField.h
Go to the documentation of this file.
1 #ifndef CLASSIC_FIELD_H
2 #define CLASSIC_FIELD_H
3 
4 #include <vector>
5 #include <list>
6 #include <memory>
10 
11 class ClassicField {
12 public:
13  ClassicField(std::shared_ptr<Component>, const double &, const double &);
14  ~ClassicField();
15  std::shared_ptr<Component> getElement();
16  std::shared_ptr<const Component> getElement() const;
17  double getLength() const;
18  const double &getStart() const;
19  const double &getEnd() const;
20  void setStart(const double & z);
21  void setEnd(const double & z);
22  const bool &isOn() const;
23  void setOn(const double &kinematicEnergy);
24  void setOff();
25 
26  static bool SortAsc(const ClassicField &fle1, const ClassicField &fle2) {
27  return (fle1.start_m < fle2.start_m);
28  }
29 
30  static bool ZeroLength(const ClassicField &fle) {
31  return (fle.getLength() < 1.e-6);
32  }
33 
34 
37  bool isPositioned() const;
38  void fixPosition();
39  unsigned int order_m;
40 private:
41  std::shared_ptr<Component> element_m;
42  double start_m;
43  double end_m;
44  bool is_on_m;
45 };
46 
47 typedef std::list<ClassicField> FieldList;
48 
49 inline std::shared_ptr<Component> ClassicField::getElement() {
50  return element_m;
51 }
52 
53 inline std::shared_ptr<const Component> ClassicField::getElement() const {
54  return element_m;
55 }
56 
57 inline double ClassicField::getLength() const {
58  return end_m - start_m;
59 }
60 
61 inline const double &ClassicField::getStart() const {
62  return start_m;
63 }
64 
65 inline const double &ClassicField::getEnd() const {
66  return end_m;
67 }
68 
69 inline const bool &ClassicField::isOn() const {
70  return is_on_m;
71 }
72 
73 inline void ClassicField::setStart(const double & z) {
74  start_m = z;
75 }
76 
77 inline void ClassicField::setEnd(const double & z) {
78  end_m = z;
79 }
80 
81 inline
83  return element_m->getCSTrafoGlobal2Local();
84 }
85 
86 inline
88  element_m->setCSTrafoGlobal2Local(trafo);
89 }
90 
91 inline
93  return element_m->isPositioned();
94 }
95 
96 inline
98  element_m->fixPosition();
99 }
100 
101 #endif // CLASSIC_FIELD_H
void setEnd(const double &z)
Definition: ClassicField.h:77
CoordinateSystemTrafo getCoordTransformationTo() const
Definition: ClassicField.h:82
std::list< ClassicField > FieldList
Definition: ClassicField.h:47
std::shared_ptr< Component > element_m
Definition: ClassicField.h:41
unsigned int order_m
Definition: ClassicField.h:39
double start_m
Definition: ClassicField.h:42
const double & getEnd() const
Definition: ClassicField.h:65
void fixPosition()
Definition: ClassicField.h:97
static bool SortAsc(const ClassicField &fle1, const ClassicField &fle2)
Definition: ClassicField.h:26
ClassicField(std::shared_ptr< Component >, const double &, const double &)
Definition: ClassicField.cpp:5
double getLength() const
Definition: ClassicField.h:57
void setCoordTransformationTo(const CoordinateSystemTrafo &trafo)
Definition: ClassicField.h:87
std::shared_ptr< Component > getElement()
Definition: ClassicField.h:49
const double & getStart() const
Definition: ClassicField.h:61
const bool & isOn() const
Definition: ClassicField.h:69
double end_m
Definition: ClassicField.h:43
static bool ZeroLength(const ClassicField &fle)
Definition: ClassicField.h:30
void setOn(const double &kinematicEnergy)
void setStart(const double &z)
Definition: ClassicField.h:73
bool isPositioned() const
Definition: ClassicField.h:92