OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Solenoid.h
Go to the documentation of this file.
1 #ifndef CLASSIC_Solenoid_HH
2 #define CLASSIC_Solenoid_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: Solenoid.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: Solenoid
13 // Defines the abstract interface for a solenoid magnet.
14 //
15 // ------------------------------------------------------------------------
16 // Class category: AbsBeamline
17 // ------------------------------------------------------------------------
18 //
19 // $Date: 2000/03/27 09:32:32 $
20 // $Author: fci $
21 //
22 // ------------------------------------------------------------------------
23 
24 #include "AbsBeamline/Component.h"
25 
26 template <class T, unsigned Dim>
27 class PartBunchBase;
28 class Fieldmap;
29 
30 // Class Solenoid
31 // ------------------------------------------------------------------------
33 // Class Solenoid defines the abstract interface for solenoid magnets.
34 
35 
36 class Solenoid: public Component {
37 
38 public:
39 
41  explicit Solenoid(const std::string &name);
42 
43  Solenoid();
44  Solenoid(const Solenoid &);
45  virtual ~Solenoid();
46 
48  virtual void accept(BeamlineVisitor &) const override;
49 
51  virtual double getBz() const = 0;
52 
53  void setKS(double ks);
54  void setDKS(double ks);
55 
56  virtual void addKR(int i, double t, Vector_t &K) override;
57 
58  virtual void addKT(int i, double t, Vector_t &K) override;
59 
60  virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override;
61 
62  virtual bool apply(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override;
63 
64  virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override;
65 
66  virtual void initialise(PartBunchBase<double, 3> *bunch, double &startField, double &endField) override;
67 
68  virtual void finalise() override;
69 
70  virtual bool bends() const override;
71 
72  virtual void goOnline(const double &kineticEnergy) override;
73 
74  virtual void goOffline() override;
75 
76  // Assign the field filename.
77  void setFieldMapFN(std::string fn);
78 
79  void setFast(bool fast);
80 
81  bool getFast() const;
82 
83  virtual ElementBase::ElementType getType() const override;
84 
85  virtual void getDimensions(double &zBegin, double &zEnd) const override;
86 
87  virtual bool isInside(const Vector_t &r) const override;
88 
89  virtual double getElementLength() const override;
90 
91  virtual void getElementDimensions(double &zBegin, double &zEnd) const override;
92 
93  virtual CoordinateSystemTrafo getEdgeToBegin() const override;
94  virtual CoordinateSystemTrafo getEdgeToEnd() const override;
95 
96 private:
97 
98  // std::string name; /**< The name of the object*/
99  std::string filename_m;
101  double scale_m;
102  double scaleError_m;
104  double startField_m;
105  double length_m;
106 
107  bool fast_m;
108  // Not implemented.
109  void operator=(const Solenoid &);
110 };
111 
112 
113 
114 inline
116 {
118  Quaternion(1, 0, 0, 0));
119 
120  return ret;
121 }
122 
123 inline
125 {
127  Quaternion(1, 0, 0, 0));
128 
129  return ret;
130 }
131 #endif // CLASSIC_Solenoid_HH
virtual bool isInside(const Vector_t &r) const override
Definition: Solenoid.cpp:251
void operator=(const Solenoid &)
double scaleError_m
Definition: Solenoid.h:102
virtual bool bends() const override
Definition: Solenoid.cpp:218
virtual double getBz() const =0
Get solenoid field Bz in Teslas.
bool getFast() const
Definition: Solenoid.cpp:84
double length_m
Definition: Solenoid.h:105
virtual CoordinateSystemTrafo getEdgeToBegin() const override
Definition: Solenoid.h:115
void setKS(double ks)
Definition: Solenoid.cpp:233
virtual double getElementLength() const override
Get design length.
Definition: Solenoid.cpp:256
Solenoid()
Definition: Solenoid.cpp:35
virtual void finalise() override
Definition: Solenoid.cpp:215
Class: DataSink.
Definition: OpalData.h:29
bool fast_m
Definition: Solenoid.h:107
void setFast(bool fast)
Definition: Solenoid.cpp:79
virtual void getDimensions(double &zBegin, double &zEnd) const override
Definition: Solenoid.cpp:241
double scale_m
Definition: Solenoid.h:101
virtual void addKR(int i, double t, Vector_t &K) override
ENVELOPE COMPONENT for radial focussing of the beam Calculates the transverse envelope component for ...
Definition: Solenoid.cpp:93
virtual void goOnline(const double &kineticEnergy) override
Definition: Solenoid.cpp:223
Vektor< double, 3 > Vector_t
Definition: Vektor.h:6
Interface for solenoids.
Definition: Solenoid.h:36
void setFieldMapFN(std::string fn)
Definition: Solenoid.cpp:75
virtual void goOffline() override
Definition: Solenoid.cpp:228
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
Definition: Solenoid.cpp:179
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
Definition: Solenoid.cpp:161
virtual void getElementDimensions(double &zBegin, double &zEnd) const override
Definition: Solenoid.cpp:260
void setDKS(double ks)
Definition: Solenoid.cpp:237
virtual CoordinateSystemTrafo getEdgeToEnd() const override
Definition: Solenoid.h:124
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
Definition: Solenoid.cpp:193
const std::string name
Fieldmap * myFieldmap_m
Definition: Solenoid.h:100
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Solenoid.
Definition: Solenoid.cpp:71
Interface for a single beam element.
Definition: Component.h:51
#define K
Definition: integrate.cpp:118
Abstract algorithm.
double startField_m
Definition: Solenoid.h:104
virtual ~Solenoid()
Definition: Solenoid.cpp:66
std::string filename_m
Definition: Solenoid.h:99
virtual void addKT(int i, double t, Vector_t &K) override
Definition: Solenoid.cpp:115
virtual ElementBase::ElementType getType() const override
Get element type std::string.
Definition: Solenoid.cpp:247