19 #ifndef CLASSIC_Multipole_HH
20 #define CLASSIC_Multipole_HH
27 template <
class T,
unsigned Dim>
125 virtual bool bends()
const override;
129 virtual void getDimensions(
double &zBegin,
double &zEnd)
const override;
166 #endif // CLASSIC_Multipole_HH
std::vector< double > NormalComponentErrors
A geometry representing a straight line.
virtual bool isInside(const Vector_t &r) const override
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Multipole.
void setNormalComponent(int, double)
Set normal component.
item[EANGLE] Entrance edge counterclockwise This enables to obtain skew at each point along the its radius is computed such that the reference trajectory always remains in the centre of the magnet In the body of the magnet the radius is set from the LENGTH and ANGLE attributes It is then continuously changed to be proportional to the dipole field on the reference trajectory while entering the end fields This attribute is only to be set TRUE for a non zero dipole component(Default:FALSE)\item[VARSTEP] The step size(meters) used in calculating the reference trajectory for VARRARDIUS
size_t getMaxSkewComponentIndex() const
bool isFocusing(unsigned int component) const
virtual void finalise() override
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
virtual bool bends() const override
int max_NormalComponent_m
Interface for general multipole.
void setNSlices(const std::size_t &nSlices)
virtual BMultipoleField & getField() override=0
Get multipole field.
std::vector< double > NormalComponents
void operator=(const Multipole &)
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
std::vector< double > SkewComponents
std::size_t getNSlices() const
virtual void getDimensions(double &zBegin, double &zEnd) const override
void computeField(Vector_t R, Vector_t &E, Vector_t &B)
double getNormalComponent(int n) const
Get normal component.
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
size_t getMaxNormalComponentIndex() const
double getSkewComponent(int n) const
Get skew component.
std::vector< double > SkewComponentErrors
Interface for a single beam element.
void setSkewComponent(int, double)
Set skew component.
virtual StraightGeometry & getGeometry() override=0
Get geometry.
The magnetic field of a multipole.
virtual ElementType getType() const override
Get element type std::string.