30 #ifndef CLASSIC_MULTIPOLET_CURVED_CONST_RADIUS_H
31 #define CLASSIC_MULTIPOLET_CURVED_CONST_RADIUS_H
105 virtual void setMaxOrder(
const std::size_t &maxOrder)
override;
113 virtual void setBendAngle(
const double &angle)
override;
123 double &endField)
override;
143 virtual double getRadius(
const double &s)
override;
148 virtual double getScaleFactor(
const double &x,
const double &s)
override;
155 virtual double getFn(
const std::size_t &
n,
157 const double &s)
override;
166 const std::size_t &maxXorder) {
virtual void visitMultipoleTCurvedConstRadius(const MultipoleTCurvedConstRadius &)=0
Apply the algorithm to an arbitrary curved multipole of constant radius.
PartBunchBase< double, 3 > * RefPartBunch_m
double getBoundingBoxLength() const
std::size_t getMaxXOrder() const
std::vector< polynomial::RecursionRelation > recursion_m
virtual void transformBField(Vector_t &B, const Vector_t &R) override
virtual double getFn(const std::size_t &n, const double &x, const double &s) override
void setMaxXOrder(const std::size_t &maxXOrder)
virtual void setBendAngle(const double &angle) override
void accept(BeamlineVisitor &visitor) const override
MultipoleTCurvedConstRadius(const std::string &name)
virtual double getRadius(const double &s) override
PlanarArcGeometry & getGeometry() override
PlanarArcGeometry planarArcGeometry_m
virtual void setMaxOrder(const std::size_t &maxOrder) override
~MultipoleTCurvedConstRadius()
virtual void transformCoords(Vector_t &R) override
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
virtual double getBendAngle() const override
virtual double getScaleFactor(const double &x, const double &s) override
MultipoleTCurvedConstRadius operator=(const MultipoleTCurvedConstRadius &rhs)
virtual ElementBase * clone() const override
A simple arc in the XZ plane.
void setCurvature(double)
Set curvature.
virtual void setElementLength(double)
Set length.