30#ifndef CLASSIC_MULTIPOLET_CURVED_VAR_RADIUS_H
31#define CLASSIC_MULTIPOLET_CURVED_VAR_RADIUS_H
109 virtual void setMaxOrder(
const std::size_t &maxOrder)
override;
117 virtual void setBendAngle(
const double &angle)
override;
127 double &endField)
override;
147 virtual double getRadius(
const double &s)
override;
152 virtual double getScaleFactor(
const double &x,
const double &s)
override;
159 virtual double getFn(
const std::size_t &n,
161 const double &s)
override;
170 const std::size_t &maxXorder) {
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
ippl::Vector< T, Dim > Vector_t
virtual void visitMultipoleTCurvedVarRadius(const MultipoleTCurvedVarRadius &)=0
Apply the algorithm to an arbitrary curved multipole of variable radius.
PartBunch_t * RefPartBunch_m
ElementBase(const std::string &name)
Constructor with given name.
double getBoundingBoxLength() const
std::vector< double > getFringeLength() const
std::vector< polynomial::RecursionRelationTwo > recursion_m
virtual void transformCoords(Vector_t< double, 3 > &R) override
virtual double getScaleFactor(const double &x, const double &s) override
~MultipoleTCurvedVarRadius()
virtual void setBendAngle(const double &angle) override
VarRadiusGeometry & getGeometry() override
virtual void transformBField(Vector_t< double, 3 > &B, const Vector_t< double, 3 > &R) override
virtual double getRadius(const double &s) override
virtual void setMaxOrder(const std::size_t &maxOrder) override
void setMaxXOrder(const std::size_t &maxXOrder)
virtual ElementBase * clone() const override
VarRadiusGeometry varRadiusGeometry_m
void accept(BeamlineVisitor &visitor) const override
virtual double getFn(const std::size_t &n, const double &x, const double &s) override
MultipoleTCurvedVarRadius(const std::string &name)
std::size_t getMaxXOrder() const
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
MultipoleTCurvedVarRadius operator=(const MultipoleTCurvedVarRadius &rhs)
virtual double getBendAngle() const override