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
virtual ~VarRadiusGeometry()
void setS0(const double &s_0)
const VarRadiusGeometry & operator=(const VarRadiusGeometry &right)
virtual void setElementLength(double length)
virtual Euclid3D getEntranceFrame() const
void setLambdaRight(const double &lambda_right)
double getLambdaLeft() const
void setLambdaLeft(const double &lambda_left)
void setRadius(const double &rho)
virtual double getArcLength() const
virtual double getElementLength() const
VarRadiusGeometry(double length, double rho, double s_0, double lambda_left, double lambda_right)
virtual Euclid3D getTransform(double fromS, double toS) const
double getLambdaRight() const