18#ifndef ABSBEAMLINE_MULTIPOLET_H
19#define ABSBEAMLINE_MULTIPOLET_H
95 bool apply(
const std::shared_ptr<ParticleContainer_t>& pc)
override;
130 bool bends()
const override;
158 void setFringeField(
const double& s0,
const double& lambda_left,
const double& lambda_right);
193 void setAperture(
const double& vertAp,
const double& horizAp);
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
Abstract base class for accelerator geometry classes.
The magnetic field of a multipole.
Abstract base class for electromagnetic fields.
virtual double getElementLength() const
Get design length.
void setRotation(double rot)
std::size_t getTransMaxOrder() const
double getBoundingBoxLength() const
void setScalingName(const std::string &name)
size_t getMaxFOrder() const
const EMField & getField() const override
bool getVariableRadius() const
void setBendAngle(double angle, bool variableRadius)
void setElementLength(double length) override
void initialise(PartBunch_t *bunch, double &startField, double &endField) override
void setEntranceAngle(double entranceAngle)
MultipoleTConfig & getConfig()
ElementBase * clone() const override
std::tuple< double, double > getAperture()
const Kokkos::Array< double, MultipoleTConfig::NumPoles > & getTransProfile() const
std::string scalingName_m
EMField & getField() override
void accept(BeamlineVisitor &visitor) const override
MultipoleTConfig config_m
void setAperture(const double &vertAp, const double &horizAp)
void setMaxOrder(size_t orderZ, size_t orderX)
void initialiseTimeDependencies() const
double getScaling(double t) const
~MultipoleT() override=default
void getFieldExtend(double &zBegin, double &zEnd) const override
size_t getMaxXOrder() const
BGeometryBase & getGeometry() override
bool bends() const override
double getRotation() const
std::shared_ptr< AbstractTimeDependence > scalingTD_m
void chooseImplementation()
std::string getScalingName() const
double getEntranceAngle() const
void setFringeField(const double &s0, const double &lambda_left, const double &lambda_right)
bool apply(const std::shared_ptr< ParticleContainer_t > &pc) override
std::tuple< double, double, double > getFringeField() const
double getBendAngle() const
void setEntryOffset(double offset)
void validateConfiguration() const
void setBoundingBoxLength(double boundingBoxLength)
double getEntryOffset() const
void setTransProfile(const std::vector< double > &profile)
std::unique_ptr< MultipoleTBase > implementation_
double horizontalAperture_m
unsigned int transverseProfileMaxOrder_m
double verticalAperture_m
Kokkos::Array< double, NumPoles > transverseProfile_m
double boundingBoxLength_m