30 #ifndef CLASSIC_MULTIPOLETBASE_H
31 #define CLASSIC_MULTIPOLETBASE_H
145 virtual void setMaxOrder(
const std::size_t &maxOrder);
173 const double &lambda_left,
174 const double &lambda_right);
201 void setAperture(
const double &vertAp,
const double &horizAp);
220 virtual void getDimensions(
double &zBegin,
double &zEnd)
const;
293 virtual double getRadius(
const double &s) = 0;
298 virtual double getScaleFactor(
const double &x,
const double &s) = 0;
325 virtual double getFn(
const std::size_t &n,
327 const double &s) = 0;
429 const double &horizAp) {
435 std::vector<double> temp(2, 0.0);
442 std::vector<double> temp(2, 0.0);
double getBoundingBoxLength() const
Vector_t rotateFrameInverse(Vector_t &B)
void setTransMaxOrder(const std::size_t &transMaxOrder)
double getEntranceAngle() const
double getRotation() const
item[EANGLE] Entrance edge angle(radians).\item[ROTATION] Rotation of the magnet about its central axis(radians
virtual double getFn(const std::size_t &n, const double &x, const double &s)=0
virtual double getBs(const Vector_t &R)
std::vector< double > getFringeLength() const
std::size_t transMaxOrder_m
virtual void transformCoords(Vector_t &R)=0
std::vector< double > getTransProfile() const
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
Abstract base class for electromagnetic fields.
endfieldmodel::Tanh fringeField_r
ParticleAttrib< Vector_t > P
endfieldmodel::Tanh fringeField_l
PartBunchBase< double, 3 > * RefPartBunch_m
virtual double getBx(const Vector_t &R)
double boundingBoxLength_m
void setTransProfile(const std::size_t &n, const double &Bn)
void setAperture(const double &vertAp, const double &horizAp)
double getFnDerivS(const std::size_t &n, const double &x, const double &s)
std::size_t getMaxOrder() const
virtual void setMaxOrder(const std::size_t &maxOrder)
void initialise(PartBunchBase< double, 3 > *, double &startField, double &endField)
std::vector< double > transProfile_m
void setEntranceAngle(const double &entranceAngle)
bool apply(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B)
void setLength(const double &length)
virtual void getDimensions(double &zBegin, double &zEnd) const
void setRotation(const double &rot)
double getTransDeriv(const std::size_t &n, const double &x)
double getFringeDeriv(const std::size_t &n, const double &s)
double getDipoleConstant() const
void setDipoleConstant(const double &B0)
virtual double getBendAngle() const
std::size_t getTransMaxOrder() const
bool setFringeField(const double &s0, const double &lambda_left, const double &lambda_right)
bool insideAperture(const Vector_t &R)
void setBoundingBoxLength(const double &boundingBoxLength)
virtual double getRadius(const double &s)=0
double getBz(const Vector_t &R)
Vector_t rotateFrame(const Vector_t &R)
Interface for a single beam element.
std::vector< double > getAperture() const
virtual double getScaleFactor(const double &x, const double &s)=0
double getFnDerivX(const std::size_t &n, const double &x, const double &s)
virtual void setBendAngle(const double &angle)
The magnetic field of a multipole.
virtual void transformBField(Vector_t &B, const Vector_t &R)=0