19#ifndef CLASSIC_Multipole_HH
20#define CLASSIC_Multipole_HH
48 explicit Multipole(
const std::string& name);
102 bool isFocusing(
unsigned int component)
const;
125 virtual bool bends()
const override;
129 virtual void getDimensions(
double& zBegin,
double& zEnd)
const override;
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
ippl::Vector< T, Dim > Vector_t
Component(const std::string &name)
Constructor with given name.
std::vector< double > SkewComponents
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Multipole.
int max_NormalComponent_m
size_t getMaxSkewComponentIndex() const
size_t getMaxNormalComponentIndex() const
virtual const StraightGeometry & getGeometry() const override=0
Get geometry.
virtual void getDimensions(double &zBegin, double &zEnd) const override
virtual const BMultipoleField & getField() const override=0
Get multipole field. Version for const object.
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
virtual bool apply(const size_t &i, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
std::vector< double > SkewComponentErrors
virtual bool applyToReferenceParticle(const Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
virtual StraightGeometry & getGeometry() override=0
Get geometry.
virtual void finalise() override
void setNSlices(const std::size_t &nSlices)
virtual bool bends() const override
bool isFocusing(unsigned int component) const
virtual ElementType getType() const override
Get element type std::string.
virtual bool isInside(const Vector_t< double, 3 > &r) const override
std::vector< double > NormalComponents
void computeField(Vector_t< double, 3 > R, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B)
void setNormalComponent(int, double)
Set normal component.
Multipole(const std::string &name)
Constructor with given name.
double getSkewComponent(int n) const
Get skew component.
std::size_t getNSlices() const
void setSkewComponent(int, double)
Set skew component.
std::vector< double > NormalComponentErrors
double getNormalComponent(int n) const
Get normal component.
virtual BMultipoleField & getField() override=0
Get multipole field.
void operator=(const Multipole &)
A geometry representing a straight line.
The magnetic field of a multipole.