68 Ring(std::string ring);
92 virtual bool apply(
const std::shared_ptr<ParticleContainer_t>& pc)
override;
142 virtual bool bends()
const override {
return true; }
153 virtual void getFieldExtend(
double& zBegin,
double& zEnd)
const override;
421 return Vector3D({vec_t[0], vec_t[1], vec_t[2]});
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
std::vector< RingSection * > RingSectionList
Abstract base class for electromagnetic fields.
Displacement and rotation in space.
A simple arc in the XZ plane.
Component placement handler in ring geometry.
Ring describes a ring type geometry for tracking.
virtual const EMField & getField() const override
double getBeamRInit() const
void setSymmetry(double symmetry)
PartBunch_t * getRefPartBunch() const
double getLatticePhiInit() const
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
double getRingMinR() const
static Vector_t< double, 3 > convert(const Vector3D &vec)
Rotation3D getRotationStartToEnd(Euclid3D delta) const
virtual EMField & getField() override
static bool sectionCompare(RingSection const *const sec1, RingSection const *const sec2)
double getBeamPRInit() const
virtual void finalise() override
Vector_t< double, 3 > getNextPosition() const
double getSymmetry() const
Vector_t< double, 3 > getNextNormal() const
Ring & operator=(const Ring &ring)
RingSection * getLastSectionPlaced() const
void setBeamRInit(double rInit)
virtual const PlanarArcGeometry & getGeometry() const override
void setIsClosed(bool isClosed)
void setLatticeThetaInit(double thetaInit)
virtual ElementBase * clone() const override
void setHarmonicNumber(double cyclHarm)
void setLatticePhiInit(double phiInit)
virtual bool bends() const override
double getLatticeThetaInit() const
double latticeThetaInit_m
std::vector< RingSectionList > ringSections_m
virtual void accept(BeamlineVisitor &visitor) const override
void setRingAperture(double minR, double maxR)
void setScale(double scale)
RingSectionList section_list_m
double getBeamPhiInit() const
void setBeamPRInit(double pRInit)
double getIsClosed() const
std::vector< RingSection * > getSectionsAt(const Vector_t< double, 3 > &pos)
double getRingMaxR() const
void checkMidplane(Euclid3D delta) const
void setLossDataSink(LossDataSink *sink)
PartBunch_t * refPartBunch_m
void setBeamPhiInit(double phiInit)
void setRefPartBunch(PartBunch_t *bunch)
PlanarArcGeometry planarArcGeometry_m
double getHarmonicNumber()
void setRFFreq(double rfFreq)
void setLatticeRInit(double rInit)
virtual PlanarArcGeometry & getGeometry() override
void appendElement(const Component &element)
virtual bool apply(const std::shared_ptr< ParticleContainer_t > &pc) override
void rotateToCyclCoordinates(Euclid3D &euclid3d) const
double getLatticeRInit() const
static const double lengthTolerance_m
static const double angleTolerance_m
virtual void getFieldExtend(double &zBegin, double &zEnd) const override
PartBunch_t * getLossDataSink() const
Rotation in 3-dimensional space.