OPAL (Object Oriented Parallel Accelerator Library)
2021.1.99
OPAL
|
#include <VarRadiusGeometry.h>
Public Member Functions | |
VarRadiusGeometry (double length, double rho, double s_0, double lambda_left, double lambda_right) | |
VarRadiusGeometry (const VarRadiusGeometry &right) | |
virtual | ~VarRadiusGeometry () |
const VarRadiusGeometry & | operator= (const VarRadiusGeometry &right) |
virtual double | getArcLength () const |
virtual double | getElementLength () const |
virtual void | setElementLength (double length) |
double | getRadius () const |
void | setRadius (const double &rho) |
double | getS0 () const |
void | setS0 (const double &s_0) |
double | getLambdaLeft () const |
void | setLambdaLeft (const double &lambda_left) |
double | getLambdaRight () const |
void | setLambdaRight (const double &lambda_right) |
virtual Euclid3D | getTransform (double fromS, double toS) const |
virtual Euclid3D | getEntranceFrame () const |
virtual Euclid3D | getExitFrame () const |
Public Member Functions inherited from BGeometryBase | |
BGeometryBase () | |
BGeometryBase (const BGeometryBase &right) | |
virtual | ~BGeometryBase () |
const BGeometryBase & | operator= (const BGeometryBase &right) |
virtual double | getOrigin () const |
Get origin position. More... | |
virtual double | getEntrance () const |
Get entrance position. More... | |
virtual double | getExit () const |
Get exit position. More... | |
virtual Euclid3D | getTransform (double s) const |
Get transform. More... | |
virtual Euclid3D | getTotalTransform () const |
Get transform. More... | |
virtual Euclid3D | getEntrancePatch () const |
Get patch. More... | |
virtual Euclid3D | getExitPatch () const |
Get patch. More... | |
Private Attributes | |
double | length_m |
double | rho_m |
double | s_0_m |
double | lambda_left_m |
double | lambda_right_m |
VarRadiusGeometry represents a Geometry with variable radius. Assuming
a Tanh model for fringe fields, the radius of curvature varies inversely
proportional with the fringe field. Such a magnet will follow the
trajectory of the reference particle. The origin is defined at the centre and extends from -length / 2 to
+length / 2. Transformations are calculated using a CoordinateTransformation object,
which integrates to find the reference trajectory.
Class category: AbsBeamline
$Author: Martin Duy Tat, Chris Rogers
Definition at line 57 of file VarRadiusGeometry.h.
|
inline |
Build VarRadiusGeometry with given length, centre radius of curvature and fringe field
length | -> Length of geometry |
rho | -> Centre radius of curvature of geometry |
s_0 | -> Length of central fringe field |
lambda_left | -> Length of left end fringe field |
lambda_right | -> Length of right end fringe field |
Definition at line 136 of file VarRadiusGeometry.h.
|
inline |
Copy constructor
Definition at line 146 of file VarRadiusGeometry.h.
|
inlinevirtual |
Destructor
Definition at line 164 of file VarRadiusGeometry.h.
|
inlinevirtual |
Arc length along the design arc
Implements BGeometryBase.
Definition at line 167 of file VarRadiusGeometry.h.
References length_m.
|
inlinevirtual |
Get element length measured along hte design arc
Implements BGeometryBase.
Definition at line 171 of file VarRadiusGeometry.h.
References length_m.
|
inlinevirtual |
Transform of the local coordinate system from the origin to the entrance of the element Equivalent to getTransform(0.0, getEntrance())
Reimplemented from BGeometryBase.
Definition at line 215 of file VarRadiusGeometry.h.
References BGeometryBase::getEntrance(), BGeometryBase::getOrigin(), and getTransform().
|
inlinevirtual |
Transform of the local coordinate system from the origin to the exit of the element Equivalent to getTransform(0.0, getExit())
Reimplemented from BGeometryBase.
Definition at line 219 of file VarRadiusGeometry.h.
References BGeometryBase::getExit(), BGeometryBase::getOrigin(), and getTransform().
|
inline |
Get left end fringe field length
Definition at line 199 of file VarRadiusGeometry.h.
References lambda_left_m.
|
inline |
Get right end fringe field length
Definition at line 207 of file VarRadiusGeometry.h.
References lambda_right_m.
|
inline |
Get centre radius of curvature
Definition at line 183 of file VarRadiusGeometry.h.
References rho_m.
|
inline |
Get central fringe field length
Definition at line 191 of file VarRadiusGeometry.h.
References s_0_m.
|
virtual |
Transform of the local coordinate system
fromS | -> Transform from this position |
toS | -> Transform to this position |
Implements BGeometryBase.
Definition at line 34 of file VarRadiusGeometry.cpp.
References acos(), coordinatetransform::CoordinateTransform::calcReferenceTrajectory(), coordinatetransform::CoordinateTransform::getUnitTangentVector(), lambda_left_m, lambda_right_m, rho_m, s_0_m, Euclid3D::setX(), Euclid3D::setZ(), and Euclid3D::YRotation().
Referenced by getEntranceFrame(), and getExitFrame().
|
inline |
Assigment operator
Definition at line 154 of file VarRadiusGeometry.h.
References lambda_left_m, lambda_right_m, length_m, rho_m, and s_0_m.
|
inlinevirtual |
Set arc length
length | -> Length of element |
Reimplemented from BGeometryBase.
Definition at line 175 of file VarRadiusGeometry.h.
References length_m, and max().
Referenced by MultipoleTCurvedVarRadius::initialise().
|
inline |
Set left end fringe field length
lambda_left | -> Left end fringe field length |
Definition at line 203 of file VarRadiusGeometry.h.
References lambda_left_m.
Referenced by MultipoleTCurvedVarRadius::initialise().
|
inline |
Set right end fringe field length
lambda_right | -> Right end fringe field length |
Definition at line 211 of file VarRadiusGeometry.h.
References lambda_right_m.
Referenced by MultipoleTCurvedVarRadius::initialise().
|
inline |
Set centre radius of curvature
rho | -> Central radius of curvature |
Definition at line 187 of file VarRadiusGeometry.h.
References rho_m.
Referenced by MultipoleTCurvedVarRadius::initialise().
|
inline |
Set central fringe field length
s_0 | -> Central fringe field length |
Definition at line 195 of file VarRadiusGeometry.h.
References s_0_m.
Referenced by MultipoleTCurvedVarRadius::initialise().
|
private |
Definition at line 129 of file VarRadiusGeometry.h.
Referenced by getLambdaLeft(), getTransform(), operator=(), and setLambdaLeft().
|
private |
Definition at line 130 of file VarRadiusGeometry.h.
Referenced by getLambdaRight(), getTransform(), operator=(), and setLambdaRight().
|
private |
Definition at line 126 of file VarRadiusGeometry.h.
Referenced by getArcLength(), getElementLength(), operator=(), and setElementLength().
|
private |
Definition at line 127 of file VarRadiusGeometry.h.
Referenced by getRadius(), getTransform(), operator=(), and setRadius().
|
private |
Definition at line 128 of file VarRadiusGeometry.h.
Referenced by getS0(), getTransform(), operator=(), and setS0().