42 filename_m(right.filename_m),
43 myFieldmap_m(right.myFieldmap_m),
44 scale_m(right.scale_m),
45 scaleError_m(right.scaleError_m),
46 startField_m(right.startField_m),
47 length_m(right.length_m),
48 fast_m(right.fast_m) {
94 Inform msg(
"Solenoid::addKR()");
116 Inform msg(
"Solenoid::addKT()");
167 Vector_t tmpE(0.0, 0.0, 0.0), tmpB(0.0, 0.0, 0.0);
169 if (tmpR(2) >= 0.0 && tmpR(2) <
length_m) {
171 if (out_of_bounds)
return true;
181 Vector_t tmpE(0.0, 0.0, 0.0), tmpB(0.0, 0.0, 0.0);
183 if (tmpR(2) >= 0.0 && tmpR(2) <
length_m) {
185 if (out_of_bounds)
return true;
194 Inform msg(
"Solenoid ", *gmsg);
204 double zBegin = 0.0, zEnd = 0.0, rBegin = 0.0, rEnd = 0.0;
211 endField = startField;
virtual double getPy0(int i)
ParticleAttrib< Vector_t > P
virtual void getInfo(Inform *msg)=0
virtual bool isInside(const Vector_t &r) const override
virtual bool bends() const override
virtual bool isInside(const Vector_t &r) const
virtual void getFieldDimensions(double &zBegin, double &zEnd, double &rBegin, double &rEnd) const =0
virtual const std::string & getName() const
Get element name.
virtual void visitSolenoid(const Solenoid &)=0
Apply the algorithm to a solenoid.
static Fieldmap * getFieldmap(std::string Filename, bool fast=false)
virtual double getY(int i)
virtual double getElementLength() const override
Get design length.
Inform & level2(Inform &inf)
virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const =0
virtual double getGamma(int i)
virtual void finalise() override
void setElType(ElemType elt)
set the element type as enumeration needed in the envelope tracker
virtual void getDimensions(double &zBegin, double &zEnd) const override
virtual double getBeta(int i)
constexpr double c
The velocity of light in m/s.
virtual double getY0(int i)
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 ...
PartBunchBase< double, 3 > * RefPartBunch_m
virtual void goOnline(const double &kineticEnergy) override
Vektor< double, 3 > Vector_t
void setFieldMapFN(std::string fn)
virtual void goOffline() override
virtual double getPx0(int i)
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
virtual void getElementDimensions(double &zBegin, double &zEnd) const override
virtual double getX0(int i)
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
constexpr double q_e
The elementary charge in As.
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Solenoid.
virtual double getZ(int i)
bool isInsideTransverse(const Vector_t &r, double f=1) const
Interface for a single beam element.
virtual double getX(int i)
virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const =0
virtual void addKT(int i, double t, Vector_t &K) override
virtual ElementBase::ElementType getType() const override
Get element type std::string.