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