68 Ring(std::string ring);
139 virtual bool bends()
const override {
152 virtual void getDimensions(
double& zBegin,
double& zEnd)
const override;
156 return new Ring(*
this);
472 return Vector3D({vec_t[0], vec_t[1], vec_t[2]});
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
ippl::Vector< T, Dim > Vector_t
std::vector< RingSection * > RingSectionList
Interface for a single beam element.
Component(const std::string &name)
Constructor with given name.
ElementBase(const std::string &name)
Constructor with given name.
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
virtual bool apply(const size_t &id, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
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()
virtual void getDimensions(double &zBegin, double &zEnd) const override
void setRFFreq(double rfFreq)
void setLatticeRInit(double rInit)
virtual PlanarArcGeometry & getGeometry() override
void appendElement(const Component &element)
void rotateToCyclCoordinates(Euclid3D &euclid3d) const
double getLatticeRInit() const
static const double lengthTolerance_m
static const double angleTolerance_m
PartBunch_t * getLossDataSink() const
Displacement and rotation in space.
A simple arc in the XZ plane.
Rotation in 3-dimensional space.
Abstract base class for electromagnetic fields.
Component placement handler in ring geometry.