OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
Corrector.h
Go to the documentation of this file.
1#ifndef OPALX_Corrector_HH
2#define OPALX_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
27#include "Fields/BDipoleField.h"
28
29// Class Corrector
30// ------------------------------------------------------------------------
32// Class Corrector defines the abstract interface for closed orbit
33// correctors.
34
35class Corrector : public Component {
36public:
38 enum Plane {
46 XY
47 };
48
50 explicit Corrector(const std::string& name);
51
52 Corrector();
53 Corrector(const Corrector& right);
54 virtual ~Corrector();
55
57 virtual void accept(BeamlineVisitor&) const;
58
60 // Version for non-constant object.
61 virtual BDipoleField& getField() = 0;
62
64 // Version for constant object.
65 virtual const BDipoleField& getField() const = 0;
66
69
71 virtual const StraightGeometry& getGeometry() const = 0;
72
74 virtual Plane getPlane() const = 0;
75
76 virtual bool apply(
77 const size_t& i, const double& t, Vector_t<double, 3>& E, Vector_t<double, 3>& B);
78
79 virtual bool apply(
80 const Vector_t<double, 3>& R, const Vector_t<double, 3>& P, const double& t,
82
83 virtual void initialise(PartBunch_t* bunch, double& startField, double& endField);
84
85 virtual void goOnline(const double& kineticEnergy);
86
87 virtual void finalise();
88
89 virtual bool bends() const;
90
91 virtual ElementType getType() const;
92
93 virtual void getFieldExtend(double& zBegin, double& zEnd) const;
94
95 void setKickX(double k);
96
97 void setKickY(double k);
98
99 virtual void setDesignEnergy(const double& ekin, bool changeable = true);
100
101 double getKickX() const;
102
103 double getKickY() const;
104
105 void setKickField(const Vector_t<double, 3>& k0);
106
107private:
108 double kickX_m;
109 double kickY_m;
113
115
116protected:
117 // Not implemented.
118 void operator=(const Corrector&);
119
121};
122
123inline void Corrector::setKickX(double k) { kickX_m = k; }
124
125inline void Corrector::setKickY(double k) { kickY_m = k; }
126
127inline double Corrector::getKickX() const { return kickX_m; }
128
129inline double Corrector::getKickY() const { return kickY_m; }
130
132 kickField_m = k0;
133 kickFieldSet_m = true;
134}
135#endif // OPALX_Corrector_HH
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
ElementType
Definition ElementBase.h:94
The field of a magnetic dipole.
Interface for general corrector.
Definition Corrector.h:35
virtual StraightGeometry & getGeometry()=0
Return the corrector geometry.
virtual ~Corrector()
Definition Corrector.cpp:51
virtual void goOnline(const double &kineticEnergy)
Definition Corrector.cpp:93
virtual bool bends() const
virtual bool apply(const size_t &i, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B)
Apply to particle i.
Definition Corrector.cpp:55
void operator=(const Corrector &)
virtual ElementType getType() const
Get element type std::string.
double designEnergy_m
Definition Corrector.h:110
virtual const BDipoleField & getField() const =0
Return the corrector field.
Plane
Plane selection.
Definition Corrector.h:38
@ OFF
Corrector is off (inactive).
Definition Corrector.h:40
@ X
Corrector acts on x-plane.
Definition Corrector.h:42
@ Y
Corrector acts on y-plane.
Definition Corrector.h:44
@ XY
Corrector acts on both planes.
Definition Corrector.h:46
double kickX_m
Definition Corrector.h:108
bool designEnergyChangeable_m
Definition Corrector.h:111
virtual void accept(BeamlineVisitor &) const
Apply a visitor to Corrector.
Definition Corrector.cpp:53
double getKickX() const
Definition Corrector.h:127
virtual Plane getPlane() const =0
Return the plane on which the corrector acts.
void setKickField(const Vector_t< double, 3 > &k0)
Definition Corrector.h:131
Vector_t< double, 3 > kickField_m
Definition Corrector.h:114
virtual void getFieldExtend(double &zBegin, double &zEnd) const
Return the field-support extent of the component.
void setKickY(double k)
Definition Corrector.h:125
double kickY_m
Definition Corrector.h:109
virtual const StraightGeometry & getGeometry() const =0
Return the corrector geometry. Version for const object.
virtual BDipoleField & getField()=0
Return the corrector field.
Plane plane_m
Definition Corrector.h:120
virtual void setDesignEnergy(const double &ekin, bool changeable=true)
void setKickX(double k)
Definition Corrector.h:123
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField)
Definition Corrector.cpp:86
bool kickFieldSet_m
Definition Corrector.h:112
virtual void finalise()
Definition Corrector.cpp:91
double getKickY() const
Definition Corrector.h:129
A geometry representing a straight line.