28#ifndef CLASSIC_VarRadiusGeometry_HH
29#define CLASSIC_VarRadiusGeometry_HH
97 void setS0(
const double &s_0);
140 double lambda_right):
141 length_m(length), rho_m(rho), s_0_m(s_0),
142 lambda_left_m(lambda_left), lambda_right_m(lambda_right) {
148 length_m(rhs.length_m), rho_m(rhs.rho_m), s_0_m(rhs.s_0_m),
149 lambda_left_m(rhs.lambda_left_m), lambda_right_m(rhs.lambda_right_m) {
178 "The length of an element has to be positive");
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
Displacement and rotation in space.
Abstract base class for accelerator geometry classes.
virtual double getEntrance() const
Get entrance position.
virtual double getExit() const
Get exit position.
virtual double getOrigin() const
Get origin position.
virtual Euclid3D getExitFrame() const
Transform of the local coordinate system from the origin to the exit of the element Equivalent to get...
virtual ~VarRadiusGeometry()
Destructor.
void setS0(const double &s_0)
Set central fringe field length.
const VarRadiusGeometry & operator=(const VarRadiusGeometry &right)
Assigment operator.
virtual void setElementLength(double length)
Set arc length.
virtual Euclid3D getEntranceFrame() const
Transform of the local coordinate system from the origin to the entrance of the element Equivalent to...
void setLambdaRight(const double &lambda_right)
Set right end fringe field length.
double getLambdaLeft() const
Get left end fringe field length.
void setLambdaLeft(const double &lambda_left)
Set left end fringe field length.
void setRadius(const double &rho)
Set centre radius of curvature.
double getS0() const
Get central fringe field length.
virtual double getArcLength() const
Arc length along the design arc.
virtual double getElementLength() const
Get element length measured along hte design arc.
VarRadiusGeometry(double length, double rho, double s_0, double lambda_left, double lambda_right)
Build VarRadiusGeometry with given length, centre radius of curvature and fringe field.
double getRadius() const
Get centre radius of curvature.
virtual Euclid3D getTransform(double fromS, double toS) const
Transform of the local coordinate system.
double getLambdaRight() const
Get right end fringe field length.