30 #ifndef CLASSIC_MULTIPOLET_H
31 #define CLASSIC_MULTIPOLET_H
86 #include "gsl/gsl_sf.h"
106 void getDimensions(
double &zBegin,
double &zEnd)
const override;
135 double &endField)
override;
142 bool bends()
const override;
192 bool setFringeField(
double s0,
double lambda_left,
double lambda_right);
351 double getFn(std::size_t
n,
double x,
double s);
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
Interface for a single beam element.
void setBendAngle(double angle)
void setRotation(double rot)
std::size_t getTransMaxOrder() const
std::vector< double > transProfile_m
void setDipoleConstant(double B0)
double getBoundingBoxLength() const
std::size_t transMaxOrder_m
void setMaxXOrder(std::size_t maxXOrder)
void setAperture(double vertAp, double horizAp)
MultipoleT operator=(const MultipoleT &rhs)
double getTransDeriv(std::size_t n, double x)
void setMaxOrder(std::size_t maxOrder)
std::vector< polynomial::RecursionRelationTwo > recursion_VarRadius_m
endfieldmodel::Tanh fringeField_r
endfieldmodel::Tanh fringeField_l
void setEntranceAngle(double entranceAngle)
ElementBase * clone() const override
Vector_t rotateFrame(const Vector_t &R)
void setTransMaxOrder(std::size_t transMaxOrder)
EMField & getField() override
double getScaleFactor(double x, double s)
double getFnDerivX(std::size_t n, double x, double s)
void accept(BeamlineVisitor &visitor) const override
void setBoundingBoxLength(const double &boundingBoxLength)
double getChordLength() const
std::size_t getMaxOrder() const
void getDimensions(double &zBegin, double &zEnd) const override
bool getVarRadius() const
double getFnDerivS(std::size_t n, double x, double s)
double getRadius(double s)
std::vector< polynomial::RecursionRelation > recursion_ConstRadius_m
double getBx(const Vector_t &R)
std::size_t getMaxXOrder() const
double getFn(std::size_t n, double x, double s)
bool setFringeField(double s0, double lambda_left, double lambda_right)
Vector_t transformCoords(const Vector_t &R)
bool apply(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
double getFringeDeriv(int n, double s)
double getDipoleConstant() const
bool insideAperture(const Vector_t &R)
double getBz(const Vector_t &R)
Vector_t rotateFrameInverse(Vector_t &B)
PlanarArcGeometry planarArcGeometry_m
void setLength(double length)
bool bends() const override
std::vector< double > getAperture() const
double getRotation() const
void setTransProfile(std::size_t n, double Bn)
double getBendRadius() const
double boundingBoxLength_m
MultipoleT(const std::string &name)
std::vector< double > getTransProfile() const
double getEntranceAngle() const
double getBendAngle() const
PlanarArcGeometry & getGeometry() override
double getBs(const Vector_t &R)
std::vector< double > getFringeLength() const
A simple arc in the XZ plane.
The magnetic field of a multipole.
Abstract base class for electromagnetic fields.