30 #ifndef CLASSIC_MULTIPOLET_CURVED_VAR_RADIUS_H
31 #define CLASSIC_MULTIPOLET_CURVED_VAR_RADIUS_H
107 virtual void setMaxOrder(
const std::size_t &maxOrder)
override;
125 double &endField)
override;
145 virtual double getRadius(
const double &s)
override;
150 virtual double getScaleFactor(
const double &x,
const double &s)
override;
157 virtual double getFn(
const std::size_t &
n,
159 const double &s)
override;
168 const std::size_t &maxXorder) {
double getBoundingBoxLength() const
~MultipoleTCurvedVarRadius()
item[EANGLE] Entrance edge angle(radians).\item[ROTATION] Rotation of the magnet about its central axis(radians
std::vector< double > getFringeLength() const
MultipoleTCurvedVarRadius operator=(const MultipoleTCurvedVarRadius &rhs)
virtual double getRadius(const double &s) override
virtual void visitMultipoleTCurvedVarRadius(const MultipoleTCurvedVarRadius &)=0
Apply the algorithm to an arbitrary curved multipole of variable radius.
VarRadiusGeometry varRadiusGeometry_m
PartBunchBase< double, 3 > * RefPartBunch_m
virtual double getBendAngle() const override
void setS0(const double &s_0)
virtual void setBendAngle(const double &angle) override
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
std::vector< polynomial::RecursionRelationTwo > recursion_m
void accept(BeamlineVisitor &visitor) const override
VarRadiusGeometry & getGeometry() override
virtual void transformCoords(Vector_t &R) override
virtual void setMaxOrder(const std::size_t &maxOrder) override
void setLambdaRight(const double &lambda_right)
std::size_t getMaxXOrder() const
virtual ElementBase * clone() const override
void setLambdaLeft(const double &lambda_left)
virtual void transformBField(Vector_t &B, const Vector_t &R) override
void setRadius(const double &rho)
void setMaxXOrder(const std::size_t &maxXOrder)
virtual double getFn(const std::size_t &n, const double &x, const double &s) override
virtual void setElementLength(double length)
virtual double getScaleFactor(const double &x, const double &s) override
MultipoleTCurvedVarRadius(const std::string &name)