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;
430 const double &horizAp) {
436 std::vector<double> temp(2, 0.0);
443 std::vector<double> temp(2, 0.0);
ParticleAttrib< Vector_t > P
virtual double getFn(const std::size_t &n, const double &x, const double &s)=0
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
double getEntranceAngle() const
std::vector< double > getFringeLength() const
bool setFringeField(const double &s0, const double &lambda_left, const double &lambda_right)
double getFnDerivX(const std::size_t &n, const double &x, const double &s)
virtual void getDimensions(double &zBegin, double &zEnd) const
void setDipoleConstant(const double &B0)
void setAperture(const double &vertAp, const double &horizAp)
virtual double getRadius(const double &s)=0
PETE_TUTree< FnFabs, typename T::PETE_Expr_t > fabs(const PETE_Expr< T > &l)
virtual void setBendAngle(const double &angle)
virtual void transformCoords(Vector_t &R)=0
std::size_t getTransMaxOrder() const
std::size_t transMaxOrder_m
void setTransProfile(const std::size_t &n, const double &Bn)
std::vector< double > getTransProfile() const
endfieldmodel::Tanh fringeField_l
double getRotation() const
void setTransMaxOrder(const std::size_t &transMaxOrder)
void setEntranceAngle(const double &entranceAngle)
PartBunchBase< double, 3 > * RefPartBunch_m
double boundingBoxLength_m
virtual double getBx(const Vector_t &R)
void setLength(const double &length)
void setBoundingBoxLength(const double &boundingBoxLength)
bool insideAperture(const Vector_t &R)
Abstract base class for electromagnetic fields.
bool apply(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B)
double getTransDeriv(const std::size_t &n, const double &x)
The magnetic field of a multipole.
virtual void transformBField(Vector_t &B, const Vector_t &R)=0
endfieldmodel::Tanh fringeField_r
double getFnDerivS(const std::size_t &n, const double &x, const double &s)
virtual double getScaleFactor(const double &x, const double &s)=0
void initialise(PartBunchBase< double, 3 > *, double &startField, double &endField)
double getFringeDeriv(const std::size_t &n, const double &s)
std::size_t getMaxOrder() const
virtual double getBs(const Vector_t &R)
virtual double getBendAngle() const
void setRotation(const double &rot)
double getBoundingBoxLength() const
Interface for a single beam element.
virtual void setMaxOrder(const std::size_t &maxOrder)
double getDipoleConstant() const
std::vector< double > transProfile_m
Vector_t rotateFrameInverse(Vector_t &B)
std::vector< double > getAperture() const
Vector_t rotateFrame(const Vector_t &R)
double getBz(const Vector_t &R)