OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
MultipoleT Class Reference

#include <MultipoleT.h>

Inheritance diagram for MultipoleT:
Collaboration diagram for MultipoleT:

Public Member Functions

 MultipoleT (const std::string &name)
 MultipoleT (const MultipoleT &right)
 ~MultipoleT ()
ElementBaseclone () const override
EMFieldgetField () override
const EMFieldgetField () const override
void getDimensions (double &zBegin, double &zEnd) const override
bool apply (const Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
bool apply (const size_t &i, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) override
void initialise (PartBunch_t *, double &startField, double &endField) override
void initialise ()
void finalise () override
bool bends () const override
PlanarArcGeometrygetGeometry () override
const PlanarArcGeometrygetGeometry () const override
void accept (BeamlineVisitor &visitor) const override
double getDipoleConstant () const
void setDipoleConstant (double B0)
std::size_t getMaxOrder () const
void setMaxOrder (std::size_t maxOrder)
std::size_t getMaxXOrder () const
void setMaxXOrder (std::size_t maxXOrder)
std::size_t getTransMaxOrder () const
void setTransMaxOrder (std::size_t transMaxOrder)
void setTransProfile (std::size_t n, double Bn)
double getTransProfile (int n) const
std::vector< double > getTransProfile () const
bool setFringeField (double s0, double lambda_left, double lambda_right)
std::vector< double > getFringeLength () const
void setBendAngle (double angle)
double getBendAngle () const
void setEntranceAngle (double entranceAngle)
double getEntranceAngle () const
double getBendRadius () const
void setLength (double length)
double getLength () const
double getChordLength () const
void setAperture (double vertAp, double horizAp)
std::vector< double > getAperture () const
void setRotation (double rot)
double getRotation () const
void setVarRadius ()
bool getVarRadius () const
double getBoundingBoxLength () const
void setBoundingBoxLength (const double &boundingBoxLength)
EVector Efield (const Point3D &P) const
 Return the field in a point.
EVector Efield (const Point3D &P, double t) const
 Return the field in a point.
BVector Bfield (const Point3D &P) const
 Return the field in a point.
BVector Bfield (const Point3D &P, double t) const
 Return the field in a point.
EBVectors EBfield (const Point3D &P) const
 Return the field in a point.
EBVectors EBfield (const Point3D &P, double t) const
 Return the field in a point.
virtual bool applyToReferenceParticle (const Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B)
virtual bool getPotential (const Vector_t< double, 3 > &, const double &, Vector_t< double, 3 > &, double &)
virtual double getDesignEnergy () const
virtual void setDesignEnergy (const double &energy, bool changeable=true)
virtual void goOnline (const double &kineticEnergy)
virtual void goOffline ()
virtual bool Online ()
virtual ElementType getType () const
 Get element type std::string.
virtual const ElementBasegetDesign () const
 Return design element.
virtual void trackBunch (PartBunch_t *bunch, const PartData &, bool revBeam, bool revTrack) const
 Track particle bunch.
virtual void trackMap (FVps< double, 6 > &map, const PartData &, bool revBeam, bool revTrack) const
 Track a map.
void setExitFaceSlope (const double &)
virtual const std::string & getName () const
 Get element name.
virtual void setName (const std::string &name)
 Set element name.
std::string getTypeString () const
virtual double getArcLength () const
 Get arc length.
virtual double getElementLength () const
 Get design length.
virtual void setElementLength (double length)
 Set design length.
virtual void getElementDimensions (double &begin, double &end) const
virtual double getOrigin () const
 Get origin position.
virtual double getEntrance () const
 Get entrance position.
virtual double getExit () const
 Get exit position.
virtual Euclid3D getTransform (double fromS, double toS) const
 Get transform.
virtual Euclid3D getTransform (double s) const
 Get transform.
virtual Euclid3D getTotalTransform () const
 Get transform.
virtual Euclid3D getEntranceFrame () const
 Get transform.
virtual Euclid3D getExitFrame () const
 Get transform.
virtual Euclid3D getEntrancePatch () const
 Get patch.
virtual Euclid3D getExitPatch () const
 Get patch.
virtual double getAttribute (const std::string &aKey) const
 Get attribute value.
virtual bool hasAttribute (const std::string &aKey) const
 Test for existence of an attribute.
virtual void removeAttribute (const std::string &aKey)
 Remove an existing attribute.
virtual void setAttribute (const std::string &aKey, double val)
 Set value of an attribute.
virtual ChannelgetChannel (const std::string &aKey, bool create=false)
 Construct a read/write channel.
virtual const ConstChannelgetConstChannel (const std::string &aKey) const
 Construct a read-only channel.
virtual ElementBasecopyStructure ()
 Make a structural copy.
bool isSharable () const
 Test if the element can be shared.
virtual void makeSharable ()
 Set sharable flag.
bool update (const AttributeSet &)
 Update element.
virtual void setBoundaryGeometry (BoundaryGeometry *geo)
virtual BoundaryGeometrygetBoundaryGeometry () const
 return the attached boundary geometrt object if there is any
virtual bool hasBoundaryGeometry () const
virtual void setWake (WakeFunction *wf)
 attach a wake field to the element
virtual WakeFunction * getWake () const
 return the attached wake object if there is any
virtual bool hasWake () const
virtual void setParticleMatterInteraction (ParticleMatterInteractionHandler *spys)
virtual ParticleMatterInteractionHandler * getParticleMatterInteraction () const
virtual bool hasParticleMatterInteraction () const
void setCSTrafoGlobal2Local (const CoordinateSystemTrafo &ori)
CoordinateSystemTrafo getCSTrafoGlobal2Local () const
void releasePosition ()
void fixPosition ()
bool isPositioned () const
virtual CoordinateSystemTrafo getEdgeToBegin () const
virtual CoordinateSystemTrafo getEdgeToEnd () const
void setAperture (const ApertureType &type, const std::vector< double > &args)
virtual bool isInside (const Vector_t< double, 3 > &r) const
void setMisalignment (const CoordinateSystemTrafo &cst)
void getMisalignment (double &x, double &y, double &s) const
CoordinateSystemTrafo getMisalignment () const
void setActionRange (const std::queue< std::pair< double, double > > &range)
void setCurrentSCoordinate (double s)
void setRotationAboutZ (double rotation)
 Set rotation about z axis in bend frame.
double getRotationAboutZ () const
virtual BoundingBox getBoundingBoxInLabCoords () const
virtual int getRequiredNumberOfTimeSteps () const
void setOutputFN (std::string fn)
 Set output filename.
std::string getOutputFN () const
 Get output filename.
void setFlagDeleteOnTransverseExit (bool=true)
bool getFlagDeleteOnTransverseExit () const
int addReference () const
 Increment reference count.
int removeReference () const
 Decrement the reference count.
bool isShared () const
 Test for sharing.
void setElementPosition (double elemedge)
 Access to ELEMEDGE attribute.
double getElementPosition () const
bool isElementPositionSet () const

Static Public Member Functions

static std::string getTypeString (ElementType type)

Protected Member Functions

bool isInsideTransverse (const Vector_t< double, 3 > &r) const

Protected Attributes

double exit_face_slope_m
PartBunch_tRefPartBunch_m
bool online_m
bool shareFlag
CoordinateSystemTrafo csTrafoGlobal2Local_m
CoordinateSystemTrafo misalignment_m
std::pair< ApertureType, std::vector< double > > aperture_m
double elementEdge_m
double rotationZAxis_m

Static Protected Attributes

static const std::vector< double > defaultAperture_m = std::vector<double>({1e6, 1e6, 1.0})

Private Member Functions

MultipoleT operator= (const MultipoleT &rhs)
Vector_t< double, 3 > rotateFrame (const Vector_t< double, 3 > &R)
Vector_t< double, 3 > rotateFrameInverse (Vector_t< double, 3 > &B)
Vector_t< double, 3 > transformCoords (const Vector_t< double, 3 > &R)
double getBx (const Vector_t< double, 3 > &R)
double getBz (const Vector_t< double, 3 > &R)
double getBs (const Vector_t< double, 3 > &R)
double getFringeDeriv (int n, double s)
double getTransDeriv (std::size_t n, double x)
bool insideAperture (const Vector_t< double, 3 > &R)
double getRadius (double s)
double getScaleFactor (double x, double s)
double getFnDerivX (std::size_t n, double x, double s)
double getFnDerivS (std::size_t n, double x, double s)
double getFn (std::size_t n, double x, double s)

Private Attributes

endfieldmodel::Tanh fringeField_l
endfieldmodel::Tanh fringeField_r
std::size_t maxOrder_m = 0
std::size_t maxOrderX_m = 0
std::vector< polynomial::RecursionRelationTworecursion_VarRadius_m
std::vector< polynomial::RecursionRelationrecursion_ConstRadius_m
std::size_t transMaxOrder_m = 0
std::vector< double > transProfile_m
PlanarArcGeometry planarArcGeometry_m
double length_m
double angle_m
double entranceAngle_m
double rotation_m
bool variableRadius_m
double boundingBoxLength_m
double verticalApert_m
double horizApert_m
BMultipoleField dummy
std::string elementID
AttributeSet userAttribs
WakeFunction * wake_m
BoundaryGeometrybgeometry_m
ParticleMatterInteractionHandler * parmatint_m
bool positionIsFixed
std::queue< std::pair< double, double > > actionRange_m
std::string outputfn_m
bool deleteOnTransverseExit_m = true
int refCount
double elementPosition_m
 ELEMEDGE attribute.
bool elemedgeSet_m

Static Private Attributes

static const std::map< ElementType, std::string > elementTypeToString_s

Detailed Description


MultipoleT defines a straight or curved combined function magnet (up to arbitrary multipole component) with Fringe Fields


Class category: AbsBeamline
$Author: Titus Dascalu, Martin Duy Tat, Chris Rogers


The field is obtained from the scalar potential

\[ V = f_0(x,s) z + f_1 (x,s) \frac{z^3}{3!} + f_2 (x,s) \frac{z^5}{5!} + ... \]


(x,z,s) -> Frenet-Serret local coordinates along the magnet
z -> vertical component
assume mid-plane symmetry
set field on mid-plane -> \( B_z = f_0(x,s) = T(x) \cdot S(s) \)
T(x) -> transverse profile; this is a polynomial describing the field expansion on the mid-plane inside the magnet (not in the fringe field); 1st term is the dipole strength, 2nd term is the quadrupole gradient * x, etc.
-> when setting the magnet, one gives the multipole coefficients of this polynomial (i.e. dipole strength, quadrupole gradient, etc.)

----------— example --------------------------------------------—
Setting a combined function magnet with dipole, quadrupole and sextupole components:
\( T(x) = B_0 + B_1 \cdot x + B_2 \cdot x^2 \)
user gives \( B_0, B_1, B_2 \)
----------— example end ----------------------------------------—

S(s) -> fringe field
recursion -> \( f_n (x,s) = (-1)^n \cdot \sum_{i=0}^{n} C_n^i \cdot T^{(2i)} \cdot S^{(2n-2i)} \)
for curved magnets the above recursion is more complicated
\( C_n^i \) -> binomial coeff; \( T^{(n)} \) -> n-th derivative


Definition at line 88 of file MultipoleT.h.

Constructor & Destructor Documentation

◆ MultipoleT() [1/2]

MultipoleT::MultipoleT ( const std::string & name)
explicit

Constructor

Parameters
name-> User-defined name

Definition at line 42 of file MultipoleT.cpp.

References angle_m, boundingBoxLength_m, Component::Component(), entranceAngle_m, fringeField_l, fringeField_r, horizApert_m, length_m, maxOrder_m, maxOrderX_m, planarArcGeometry_m, rotation_m, transMaxOrder_m, variableRadius_m, and verticalApert_m.

Referenced by clone(), MultipoleT(), and operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MultipoleT() [2/2]

MultipoleT::MultipoleT ( const MultipoleT & right)

Copy constructor

Definition at line 60 of file MultipoleT.cpp.

References angle_m, boundingBoxLength_m, Component::Component(), dummy, entranceAngle_m, fringeField_l, fringeField_r, horizApert_m, length_m, maxOrder_m, maxOrderX_m, MultipoleT(), planarArcGeometry_m, recursion_ConstRadius_m, recursion_VarRadius_m, Component::RefPartBunch_m, rotation_m, transMaxOrder_m, transProfile_m, variableRadius_m, and verticalApert_m.

Here is the call graph for this function:

◆ ~MultipoleT()

MultipoleT::~MultipoleT ( )

Destructor

Definition at line 83 of file MultipoleT.cpp.

Member Function Documentation

◆ accept()

void MultipoleT::accept ( BeamlineVisitor & visitor) const
overridevirtual

Accept a beamline visitor

Implements ElementBase.

Definition at line 400 of file MultipoleT.cpp.

References BeamlineVisitor::visitMultipoleT().

Here is the call graph for this function:

◆ addReference()

int RCObject::addReference ( ) const
inlineinherited

Increment reference count.

Definition at line 83 of file RCObject.h.

References refCount.

Referenced by Pointer< Object >::operator=(), Pointer< Object >::operator=(), and Pointer< Object >::unique().

Here is the caller graph for this function:

◆ apply() [1/2]

bool MultipoleT::apply ( const size_t & i,
const double & t,
Vector_t< double, 3 > & E,
Vector_t< double, 3 > & B )
overridevirtual

Calculate the field at the position of the ith particle

Parameters
i-> Index of the particle event override; field is calculated at this position If particle is outside field map true is returned, otherwise false is returned
t-> Time at which the field is to be calculated
E-> Calculated electric field - always 0 (no E-field)
B-> Calculated magnetic field

Reimplemented from Component.

Definition at line 138 of file MultipoleT.cpp.

References apply(), and Component::RefPartBunch_m.

Here is the call graph for this function:

◆ apply() [2/2]

bool MultipoleT::apply ( const Vector_t< double, 3 > & R,
const Vector_t< double, 3 > & P,
const double & t,
Vector_t< double, 3 > & E,
Vector_t< double, 3 > & B )
overridevirtual

Calculate the field at some arbitrary position If particle is outside field map true is returned, otherwise false is returned

Parameters
R-> Position in the lab coordinate system of the multipole
P-> Not used
t-> Time at which the field is to be calculated
E-> Calculated electric field - always 0 (no E-field)
B-> Calculated magnetic field

Rotate coordinates around the central axis of the magnet

If magnet is not straight go to local Frenet-Serret coordinates

Transform B-field from local to lab coordinates

Reimplemented from Component.

Definition at line 96 of file MultipoleT.cpp.

References angle_m, fringeField_l, fringeField_r, getBs(), getBx(), getBz(), ElementBase::getFlagDeleteOnTransverseExit(), insideAperture(), length_m, rotateFrame(), transformCoords(), and variableRadius_m.

Referenced by apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ applyToReferenceParticle()

bool Component::applyToReferenceParticle ( const Vector_t< double, 3 > & R,
const Vector_t< double, 3 > & P,
const double & t,
Vector_t< double, 3 > & E,
Vector_t< double, 3 > & B )
virtualinherited

Reimplemented in Monitor, Multipole, PluginElement, RFCavity, Solenoid, and TravelingWave.

Definition at line 100 of file Component.cpp.

References ElementBase::getElementLength(), and ElementBase::isInsideTransverse().

Here is the call graph for this function:

◆ bends()

bool MultipoleT::bends ( ) const
overridevirtual

Return true if dipole component not zero

Implements Component.

Definition at line 528 of file MultipoleT.cpp.

References transProfile_m.

◆ Bfield() [1/2]

BVector Component::Bfield ( const Point3D & P) const
inlineinherited

Return the field in a point.

Definition at line 196 of file Component.h.

References EMField::Bfield(), and getField().

Here is the call graph for this function:

◆ Bfield() [2/2]

BVector Component::Bfield ( const Point3D & P,
double t ) const
inlineinherited

Return the field in a point.

Definition at line 204 of file Component.h.

References EMField::Bfield(), and getField().

Here is the call graph for this function:

◆ clone()

ElementBase * MultipoleT::clone ( ) const
overridevirtual

Inheritable copy constructor

Implements ElementBase.

Definition at line 86 of file MultipoleT.cpp.

References ElementBase::ElementBase(), initialise(), and MultipoleT().

Here is the call graph for this function:

◆ copyStructure()

ElementBase * ElementBase::copyStructure ( )
virtualinherited

Make a structural copy.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 204 of file ElementBase.cpp.

References clone(), ElementBase(), and isSharable().

Referenced by Sequence::copy(), Line::parse(), and SequenceParser::parseMember().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EBfield() [1/2]

EBVectors Component::EBfield ( const Point3D & P) const
inlineinherited

Return the field in a point.

Definition at line 208 of file Component.h.

References EMField::EBfield(), and getField().

Here is the call graph for this function:

◆ EBfield() [2/2]

EBVectors Component::EBfield ( const Point3D & P,
double t ) const
inlineinherited

Return the field in a point.

Definition at line 212 of file Component.h.

References EMField::EBfield(), and getField().

Here is the call graph for this function:

◆ Efield() [1/2]

EVector Component::Efield ( const Point3D & P) const
inlineinherited

Return the field in a point.

Definition at line 192 of file Component.h.

References EMField::Efield(), and getField().

Here is the call graph for this function:

◆ Efield() [2/2]

EVector Component::Efield ( const Point3D & P,
double t ) const
inlineinherited

Return the field in a point.

Definition at line 200 of file Component.h.

References EMField::Efield(), and getField().

Here is the call graph for this function:

◆ finalise()

void MultipoleT::finalise ( )
overridevirtual

Finalise the MultipoleT - sets bunch to nullptr

Implements Component.

Definition at line 92 of file MultipoleT.cpp.

References Component::RefPartBunch_m.

◆ fixPosition()

void ElementBase::fixPosition ( )
inlineinherited

Definition at line 521 of file ElementBase.h.

References positionIsFixed.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ getAperture()

std::vector< double > MultipoleT::getAperture ( ) const

Get the aperture dimensions Returns a vector of 2 doubles

Definition at line 412 of file MultipoleT.cpp.

References horizApert_m, and verticalApert_m.

◆ getArcLength()

double ElementBase::getArcLength ( ) const
inlinevirtualinherited

Get arc length.

Reimplemented in MarkerRep, TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 392 of file ElementBase.h.

References BGeometryBase::getArcLength(), and getGeometry().

Referenced by TBeamline< T >::getTransform().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getAttribute()

double ElementBase::getAttribute ( const std::string & aKey) const
virtualinherited

Get attribute value.

Definition at line 153 of file ElementBase.cpp.

References getConstChannel().

Here is the call graph for this function:

◆ getBendAngle()

double MultipoleT::getBendAngle ( ) const
inline

Get the bending angle of the magnet

Definition at line 401 of file MultipoleT.h.

References angle_m.

◆ getBendRadius()

double MultipoleT::getBendRadius ( ) const

Get the bending radius
Not used, when needed radius is found from length_m / angle_m

◆ getBoundaryGeometry()

BoundaryGeometry * ElementBase::getBoundaryGeometry ( ) const
inlinevirtualinherited

return the attached boundary geometrt object if there is any

Definition at line 456 of file ElementBase.h.

References bgeometry_m.

◆ getBoundingBoxInLabCoords()

BoundingBox ElementBase::getBoundingBoxInLabCoords ( ) const
virtualinherited

Definition at line 272 of file ElementBase.cpp.

References csTrafoGlobal2Local_m, getEdgeToBegin(), and getEdgeToEnd().

Here is the call graph for this function:

◆ getBoundingBoxLength()

double MultipoleT::getBoundingBoxLength ( ) const
inline

Get distance between centre of magnet and entrance

Definition at line 410 of file MultipoleT.h.

References boundingBoxLength_m.

◆ getBs()

double MultipoleT::getBs ( const Vector_t< double, 3 > & R)
private

Returns the component of the field along the central axis 1/h_s * sum_n z^(2n+1) / (2n+1)! \partial_s f_n

Definition at line 321 of file MultipoleT.cpp.

References angle_m, getFnDerivS(), getFringeDeriv(), getScaleFactor(), getTransDeriv(), maxOrder_m, and variableRadius_m.

Referenced by apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBx()

double MultipoleT::getBx ( const Vector_t< double, 3 > & R)
private

Get field component methods

Returns the radial component of the field sum_n z^(2n+1) / (2n+1)! * \partial_x f_n

Definition at line 290 of file MultipoleT.cpp.

References angle_m, getFnDerivX(), getFringeDeriv(), getTransDeriv(), maxOrder_m, and variableRadius_m.

Referenced by apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBz()

double MultipoleT::getBz ( const Vector_t< double, 3 > & R)
private

Returns the vertical field component sum_n f_n * z^(2n) / (2n)!

Definition at line 259 of file MultipoleT.cpp.

References angle_m, getFn(), getFringeDeriv(), getTransDeriv(), maxOrder_m, and variableRadius_m.

Referenced by apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getChannel()

Channel * ElementBase::getChannel ( const std::string & aKey,
bool create = false )
virtualinherited

Construct a read/write channel.

Reimplemented in DriftRep, MonitorRep, MultipoleRep, ProbeRep, RFCavityRep, SolenoidRep, and TravelingWaveRep.

Definition at line 190 of file ElementBase.cpp.

References userAttribs.

Referenced by DriftRep::getChannel(), MonitorRep::getChannel(), MultipoleRep::getChannel(), ProbeRep::getChannel(), RFCavityRep::getChannel(), SolenoidRep::getChannel(), TravelingWaveRep::getChannel(), getConstChannel(), and setAttribute().

Here is the caller graph for this function:

◆ getChordLength()

double MultipoleT::getChordLength ( ) const

Not used

◆ getConstChannel()

const ConstChannel * ElementBase::getConstChannel ( const std::string & aKey) const
virtualinherited

Construct a read-only channel.

Definition at line 194 of file ElementBase.cpp.

References ElementBase(), and getChannel().

Referenced by getAttribute(), and hasAttribute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getCSTrafoGlobal2Local()

CoordinateSystemTrafo ElementBase::getCSTrafoGlobal2Local ( ) const
inlineinherited

Definition at line 479 of file ElementBase.h.

References csTrafoGlobal2Local_m.

Referenced by MeshGenerator::add().

Here is the caller graph for this function:

◆ getDesign()

const ElementBase & Component::getDesign ( ) const
virtualinherited

Return design element.

Definition at line 52 of file Component.cpp.

References ElementBase::ElementBase().

Here is the call graph for this function:

◆ getDesignEnergy()

double Component::getDesignEnergy ( ) const
inlinevirtualinherited

Reimplemented in RFCavity.

Definition at line 231 of file Component.h.

◆ getDimensions()

void MultipoleT::getDimensions ( double & zBegin,
double & zEnd ) const
overridevirtual

Not implemented

Implements Component.

Definition at line 404 of file MultipoleT.cpp.

◆ getDipoleConstant()

double MultipoleT::getDipoleConstant ( ) const
inline

Get the dipole constant B_0

Definition at line 371 of file MultipoleT.h.

References transProfile_m.

◆ getEdgeToBegin()

CoordinateSystemTrafo ElementBase::getEdgeToBegin ( ) const
inlinevirtualinherited

Reimplemented in RFCavity, Solenoid, and TravelingWave.

Definition at line 483 of file ElementBase.h.

Referenced by getBoundingBoxInLabCoords(), and TBeamline< FlaggedElmPtr >::getConstChannel().

Here is the caller graph for this function:

◆ getEdgeToEnd()

CoordinateSystemTrafo ElementBase::getEdgeToEnd ( ) const
inlinevirtualinherited

Reimplemented in RFCavity, Solenoid, and TravelingWave.

Definition at line 488 of file ElementBase.h.

References getElementLength().

Referenced by getBoundingBoxInLabCoords().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getElementDimensions()

virtual void ElementBase::getElementDimensions ( double & begin,
double & end ) const
inlinevirtualinherited

Reimplemented in RFCavity, Solenoid, and TravelingWave.

Definition at line 159 of file ElementBase.h.

References begin(), end(), and getElementLength().

Referenced by MeshGenerator::add().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getElementLength()

double ElementBase::getElementLength ( ) const
inlinevirtualinherited

◆ getElementPosition()

double ElementBase::getElementPosition ( ) const
inlineinherited

Definition at line 553 of file ElementBase.h.

References elemedgeSet_m, elementPosition_m, and getName().

Here is the call graph for this function:

◆ getEntrance()

double ElementBase::getEntrance ( ) const
inlinevirtualinherited

Get entrance position.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 408 of file ElementBase.h.

References BGeometryBase::getEntrance(), and getGeometry().

Here is the call graph for this function:

◆ getEntranceAngle()

double MultipoleT::getEntranceAngle ( ) const
inline

Get the entrance angle

Definition at line 362 of file MultipoleT.h.

References entranceAngle_m.

◆ getEntranceFrame()

Euclid3D ElementBase::getEntranceFrame ( ) const
inlinevirtualinherited

Get transform.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 428 of file ElementBase.h.

References BGeometryBase::getEntranceFrame(), and getGeometry().

Here is the call graph for this function:

◆ getEntrancePatch()

Euclid3D ElementBase::getEntrancePatch ( ) const
inlinevirtualinherited

Get patch.

Definition at line 436 of file ElementBase.h.

References BGeometryBase::getEntrancePatch(), and getGeometry().

Here is the call graph for this function:

◆ getExit()

double ElementBase::getExit ( ) const
inlinevirtualinherited

Get exit position.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 412 of file ElementBase.h.

References BGeometryBase::getExit(), and getGeometry().

Here is the call graph for this function:

◆ getExitFrame()

Euclid3D ElementBase::getExitFrame ( ) const
inlinevirtualinherited

Get transform.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 432 of file ElementBase.h.

References BGeometryBase::getExitFrame(), and getGeometry().

Here is the call graph for this function:

◆ getExitPatch()

Euclid3D ElementBase::getExitPatch ( ) const
inlinevirtualinherited

Get patch.

Definition at line 440 of file ElementBase.h.

References BGeometryBase::getExitPatch(), and getGeometry().

Here is the call graph for this function:

◆ getField() [1/2]

const EMField & MultipoleT::getField ( ) const
overridevirtual

Return a dummy field value

Implements Component.

Definition at line 544 of file MultipoleT.cpp.

References dummy.

◆ getField() [2/2]

EMField & MultipoleT::getField ( )
overridevirtual

Return a dummy field value

Implements Component.

Definition at line 540 of file MultipoleT.cpp.

References dummy.

◆ getFlagDeleteOnTransverseExit()

bool ElementBase::getFlagDeleteOnTransverseExit ( ) const
inlineinherited

Definition at line 574 of file ElementBase.h.

References deleteOnTransverseExit_m.

Referenced by Corrector::apply(), Multipole::apply(), Multipole::apply(), MultipoleT::apply(), MultipoleTBase::apply(), RFCavity::apply(), Solenoid::apply(), and TravelingWave::apply().

Here is the caller graph for this function:

◆ getFn()

double MultipoleT::getFn ( std::size_t n,
double x,
double s )
private

Calculate fn(x, s) by expanding the differential operator (from Laplacian and scalar potential) in terms of polynomials

Parameters
n-> nth derivative
x-> Coordinate x
s-> Coordinate s

Definition at line 474 of file MultipoleT.cpp.

References angle_m, getFringeDeriv(), getTransDeriv(), length_m, recursion_ConstRadius_m, recursion_VarRadius_m, and variableRadius_m.

Referenced by getBz(), getFnDerivS(), and getFnDerivX().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFnDerivS()

double MultipoleT::getFnDerivS ( std::size_t n,
double x,
double s )
private

Calculate partial derivative of fn wrt s using a 5-point finite difference formuln Error of order stepSize^4

Parameters
n-> nth derivative
x-> Coordinate x
s-> Coordinate s

Definition at line 460 of file MultipoleT.cpp.

References getFn(), getFringeDeriv(), and getTransDeriv().

Referenced by getBs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFnDerivX()

double MultipoleT::getFnDerivX ( std::size_t n,
double x,
double s )
private

Calculate partial derivative of fn wrt x using a 5-point finite difference formula
Error of order stepSize^4

Parameters
n-> nth derivative
x-> Coordinate x
s-> Coordinate s

Definition at line 446 of file MultipoleT.cpp.

References getFn(), getFringeDeriv(), and getTransDeriv().

Referenced by getBx().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFringeDeriv()

double MultipoleT::getFringeDeriv ( int n,
double s )
private

Returns the value of the fringe field n-th derivative at s

Parameters
n-> nth derivative
s-> Coordinate s

Definition at line 353 of file MultipoleT.cpp.

References fringeField_l, fringeField_r, and tanhderiv::integrate().

Referenced by getBs(), getBx(), getBz(), getFn(), getFnDerivS(), getFnDerivX(), and getRadius().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFringeLength()

std::vector< double > MultipoleT::getFringeLength ( ) const

Return vector of 2 doubles [left fringe length, right fringelength]

Definition at line 419 of file MultipoleT.cpp.

References fringeField_l, and fringeField_r.

◆ getGeometry() [1/2]

const PlanarArcGeometry & MultipoleT::getGeometry ( ) const
overridevirtual

Return the cell geometry

Implements ElementBase.

Definition at line 536 of file MultipoleT.cpp.

References planarArcGeometry_m.

◆ getGeometry() [2/2]

PlanarArcGeometry & MultipoleT::getGeometry ( )
overridevirtual

Return the cell geometry

Implements ElementBase.

Definition at line 532 of file MultipoleT.cpp.

References planarArcGeometry_m.

◆ getLength()

double MultipoleT::getLength ( ) const
inline

Get the length of the magnet

Definition at line 407 of file MultipoleT.h.

References length_m.

◆ getMaxOrder()

std::size_t MultipoleT::getMaxOrder ( ) const
inline

Get the number of terms used in calculation of field components

Definition at line 374 of file MultipoleT.h.

References maxOrder_m.

◆ getMaxXOrder()

std::size_t MultipoleT::getMaxXOrder ( ) const
inline

Get highest power of x in polynomial expansions

Definition at line 378 of file MultipoleT.h.

References maxOrderX_m.

◆ getMisalignment() [1/2]

CoordinateSystemTrafo ElementBase::getMisalignment ( ) const
inlineinherited

Definition at line 513 of file ElementBase.h.

References misalignment_m.

◆ getMisalignment() [2/2]

void ElementBase::getMisalignment ( double & x,
double & y,
double & s ) const
inherited

◆ getName()

◆ getOrigin()

double ElementBase::getOrigin ( ) const
inlinevirtualinherited

Get origin position.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 404 of file ElementBase.h.

References getGeometry(), and BGeometryBase::getOrigin().

Here is the call graph for this function:

◆ getOutputFN()

std::string ElementBase::getOutputFN ( ) const
inherited

Get output filename.

Definition at line 144 of file ElementBase.cpp.

References getName(), and outputfn_m.

Referenced by Probe::doInitialise(), Monitor::initialise(), and PluginElement::initialise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getParticleMatterInteraction()

ParticleMatterInteractionHandler * ElementBase::getParticleMatterInteraction ( ) const
inlinevirtualinherited

Definition at line 464 of file ElementBase.h.

References parmatint_m.

◆ getPotential()

virtual bool Component::getPotential ( const Vector_t< double, 3 > & ,
const double & ,
Vector_t< double, 3 > & ,
double &  )
inlinevirtualinherited

Calculate the four-potential at some position relative to the component

Parameters
Rposition in the local coordinate system of the component
ttime
Afilled with the calculated magnetic vector potential
phifilled with the calculated electric potential Note that any existing values in A and phi may be overwritten by this method.
Returns
true if particle is outside the field map, else false Default for component is to return false and make no change to A and phi

Definition at line 122 of file Component.h.

◆ getRadius()

double MultipoleT::getRadius ( double s)
private

Radius of curvature
If radius of curvature is infinite, -1 is returned
If radius is constant, then
\( \rho(s) = length_m / angle_m \)
If radius is variable, then \( \rho(s) = rho(0) * S(0) / S(s) \) where S(s) is the fringe field

Parameters
s-> Coordinate s

Definition at line 426 of file MultipoleT.cpp.

References angle_m, getFringeDeriv(), length_m, and variableRadius_m.

Referenced by getScaleFactor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getRequiredNumberOfTimeSteps()

int ElementBase::getRequiredNumberOfTimeSteps ( ) const
inlinevirtualinherited

Reimplemented in Drift, Marker, and Monitor.

Definition at line 566 of file ElementBase.h.

◆ getRotation()

double MultipoleT::getRotation ( ) const
inline

Get the angle of rotation of the magnet around its axis

Definition at line 392 of file MultipoleT.h.

References rotation_m.

◆ getRotationAboutZ()

double ElementBase::getRotationAboutZ ( ) const
inlineinherited

Definition at line 540 of file ElementBase.h.

References rotationZAxis_m.

◆ getScaleFactor()

double MultipoleT::getScaleFactor ( double x,
double s )
private

Returns the scale factor \( h_s = 1 + x / \rho(s) \)

Parameters
x-> Coordinate x
s-> Coordinate s

Definition at line 438 of file MultipoleT.cpp.

References angle_m, getRadius(), length_m, and variableRadius_m.

Referenced by getBs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getTotalTransform()

Euclid3D ElementBase::getTotalTransform ( ) const
inlinevirtualinherited

Get transform.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 420 of file ElementBase.h.

References getGeometry(), and BGeometryBase::getTotalTransform().

Here is the call graph for this function:

◆ getTransDeriv()

double MultipoleT::getTransDeriv ( std::size_t n,
double x )
private

Returns the value of the transverse field n-th derivative at x

Parameters
n-> nth derivative
x-> Coordinate x

Sets a vector of the coefficients in the polynomial expansion of transverse profile; shifts them to the left and multiply by corresponding power each time to take derivative once; repeats until desired derivative is reached

Definition at line 363 of file MultipoleT.cpp.

References transMaxOrder_m, and transProfile_m.

Referenced by getBs(), getBx(), getBz(), getFn(), getFnDerivS(), and getFnDerivX().

Here is the caller graph for this function:

◆ getTransform() [1/2]

Euclid3D ElementBase::getTransform ( double fromS,
double toS ) const
inlinevirtualinherited

Get transform.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 416 of file ElementBase.h.

References getGeometry(), and BGeometryBase::getTransform().

Referenced by TBeamline< T >::getTransform().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getTransform() [2/2]

Euclid3D ElementBase::getTransform ( double s) const
inlinevirtualinherited

Get transform.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 424 of file ElementBase.h.

References getGeometry(), and BGeometryBase::getTransform().

Here is the call graph for this function:

◆ getTransMaxOrder()

std::size_t MultipoleT::getTransMaxOrder ( ) const
inline

Get the maximum order in the given transverse profile

Definition at line 385 of file MultipoleT.h.

References transMaxOrder_m.

◆ getTransProfile() [1/2]

std::vector< double > MultipoleT::getTransProfile ( ) const
inline

Get all terms of transverse profile

Definition at line 368 of file MultipoleT.h.

References transProfile_m.

◆ getTransProfile() [2/2]

double MultipoleT::getTransProfile ( int n) const
inline

Get transverse profile

Parameters
n-> Power of x

Definition at line 365 of file MultipoleT.h.

References transProfile_m.

◆ getType()

ElementType Component::getType ( ) const
virtualinherited

Get element type std::string.

Implements ElementBase.

Reimplemented in Corrector, Drift, Marker, Monitor, Multipole, Probe, RFCavity, Solenoid, and TravelingWave.

Definition at line 76 of file Component.cpp.

References ANY.

◆ getTypeString() [1/2]

std::string ElementBase::getTypeString ( ) const
inlineinherited

Definition at line 544 of file ElementBase.h.

References getType(), and getTypeString().

Referenced by getTypeString().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getTypeString() [2/2]

std::string ElementBase::getTypeString ( ElementType type)
staticinherited

Definition at line 200 of file ElementBase.cpp.

References elementTypeToString_s.

◆ getVarRadius()

bool MultipoleT::getVarRadius ( ) const
inline

Get the value of variableRadius_m

Definition at line 356 of file MultipoleT.h.

References variableRadius_m.

◆ getWake()

WakeFunction * ElementBase::getWake ( ) const
inlinevirtualinherited

return the attached wake object if there is any

Definition at line 448 of file ElementBase.h.

References wake_m.

◆ goOffline()

void Component::goOffline ( )
virtualinherited

Reimplemented in Monitor, PluginElement, RFCavity, Solenoid, and TravelingWave.

Definition at line 68 of file Component.cpp.

References online_m.

◆ goOnline()

void Component::goOnline ( const double & kineticEnergy)
virtualinherited

Reimplemented in Corrector, Monitor, RFCavity, Solenoid, and TravelingWave.

Definition at line 64 of file Component.cpp.

References online_m.

Referenced by PluginElement::initialise().

Here is the caller graph for this function:

◆ hasAttribute()

bool ElementBase::hasAttribute ( const std::string & aKey) const
virtualinherited

Test for existence of an attribute.

Definition at line 165 of file ElementBase.cpp.

References getConstChannel().

Here is the call graph for this function:

◆ hasBoundaryGeometry()

bool ElementBase::hasBoundaryGeometry ( ) const
inlinevirtualinherited

Definition at line 460 of file ElementBase.h.

References bgeometry_m.

◆ hasParticleMatterInteraction()

bool ElementBase::hasParticleMatterInteraction ( ) const
inlinevirtualinherited

Definition at line 468 of file ElementBase.h.

References parmatint_m.

◆ hasWake()

bool ElementBase::hasWake ( ) const
inlinevirtualinherited

Definition at line 452 of file ElementBase.h.

References wake_m.

◆ initialise() [1/2]

void MultipoleT::initialise ( )

Initialises the geometry

Definition at line 518 of file MultipoleT.cpp.

References angle_m, boundingBoxLength_m, length_m, and planarArcGeometry_m.

◆ initialise() [2/2]

void MultipoleT::initialise ( PartBunch_t * ,
double & startField,
double & endField )
overridevirtual

Initialise the MultipoleT

Parameters
bunch-> Bunch the global bunch object
startField-> Not used
endField-> Not used

Implements Component.

Referenced by clone(), and OpalMultipoleT::update().

Here is the caller graph for this function:

◆ insideAperture()

bool MultipoleT::insideAperture ( const Vector_t< double, 3 > & R)
private

Tests if inside the magnet

Parameters
R-> Coordinate vector

Definition at line 179 of file MultipoleT.cpp.

References horizApert_m, and verticalApert_m.

Referenced by apply().

Here is the caller graph for this function:

◆ isElementPositionSet()

bool ElementBase::isElementPositionSet ( ) const
inlineinherited

Definition at line 562 of file ElementBase.h.

References elemedgeSet_m.

◆ isInside()

bool ElementBase::isInside ( const Vector_t< double, 3 > & r) const
inlinevirtualinherited

Reimplemented in Monitor, Multipole, RFCavity, Solenoid, and TravelingWave.

Definition at line 504 of file ElementBase.h.

References getElementLength(), and isInsideTransverse().

Here is the call graph for this function:

◆ isInsideTransverse()

bool ElementBase::isInsideTransverse ( const Vector_t< double, 3 > & r) const
protectedinherited

Definition at line 245 of file ElementBase.cpp.

References aperture_m.

Referenced by Component::apply(), Corrector::apply(), Multipole::apply(), Multipole::apply(), Component::applyToReferenceParticle(), Multipole::applyToReferenceParticle(), isInside(), Monitor::isInside(), Multipole::isInside(), RFCavity::isInside(), Solenoid::isInside(), and TravelingWave::isInside().

Here is the caller graph for this function:

◆ isPositioned()

bool ElementBase::isPositioned ( ) const
inlineinherited

Definition at line 525 of file ElementBase.h.

References positionIsFixed.

◆ isSharable()

bool ElementBase::isSharable ( ) const
inlineinherited

Test if the element can be shared.

Definition at line 444 of file ElementBase.h.

References shareFlag.

Referenced by copyStructure(), TBeamline< T >::copyStructure(), and Sequence::updateList().

Here is the caller graph for this function:

◆ isShared()

bool RCObject::isShared ( ) const
inlineinherited

Test for sharing.

Definition at line 93 of file RCObject.h.

References refCount.

◆ makeSharable()

void ElementBase::makeSharable ( )
virtualinherited

Set sharable flag.

Reimplemented in TBeamline< T >, TBeamline< FlaggedElmPtr >, and TBeamline< SequenceMember >.

Definition at line 212 of file ElementBase.cpp.

References shareFlag.

Referenced by OpalMarker::OpalMarker().

Here is the caller graph for this function:

◆ Online()

bool Component::Online ( )
virtualinherited

Definition at line 72 of file Component.cpp.

References online_m.

◆ operator=()

MultipoleT MultipoleT::operator= ( const MultipoleT & rhs)
private

References MultipoleT().

Here is the call graph for this function:

◆ releasePosition()

void ElementBase::releasePosition ( )
inlineinherited

Definition at line 517 of file ElementBase.h.

References positionIsFixed.

◆ removeAttribute()

void ElementBase::removeAttribute ( const std::string & aKey)
virtualinherited

Remove an existing attribute.

Definition at line 176 of file ElementBase.cpp.

References userAttribs.

◆ removeReference()

int RCObject::removeReference ( ) const
inlineinherited

Decrement the reference count.

Definition at line 88 of file RCObject.h.

References refCount.

◆ rotateFrame()

Vector_t< double, 3 > MultipoleT::rotateFrame ( const Vector_t< double, 3 > & R)
private

Rotate frame for skew elements Consecutive rotations: 1st -> about central axis 2nd -> azimuthal rotation

Parameters
R-> Vector to be rotated

Apply two 2D rotation matrices to coordinate vector Rotate around central axis => skew fields Rotate azymuthaly => entrance angle

Definition at line 150 of file MultipoleT.cpp.

References entranceAngle_m, and rotation_m.

Referenced by apply().

Here is the caller graph for this function:

◆ rotateFrameInverse()

Vector_t< double, 3 > MultipoleT::rotateFrameInverse ( Vector_t< double, 3 > & B)
private

Inverse of the 1st rotation in rotateFrame() method
Used to rotate B field back to global coordinate system

This function represents the inverse of the rotation around the central axis performed by rotateFrame() method Used to rotate B field back to global coordinate system

Definition at line 167 of file MultipoleT.cpp.

References rotation_m.

◆ setActionRange()

void ElementBase::setActionRange ( const std::queue< std::pair< double, double > > & range)
inlineinherited

Definition at line 529 of file ElementBase.h.

References actionRange_m, and elementEdge_m.

◆ setAperture() [1/2]

void ElementBase::setAperture ( const ApertureType & type,
const std::vector< double > & args )
inlineinherited

Definition at line 495 of file ElementBase.h.

References aperture_m.

Referenced by Component::Component(), Offset::operator=(), and OpalElement::update().

Here is the caller graph for this function:

◆ setAperture() [2/2]

void MultipoleT::setAperture ( double vertAp,
double horizAp )

Set the aperture dimensions This element only supports a rectangular aperture

Parameters
vertAp-> Vertical aperture length
horizAp-> Horisontal aperture length

Definition at line 407 of file MultipoleT.cpp.

References horizApert_m, and verticalApert_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setAttribute()

void ElementBase::setAttribute ( const std::string & aKey,
double val )
virtualinherited

Set value of an attribute.

Definition at line 180 of file ElementBase.cpp.

References getChannel(), and Channel::isSettable().

Referenced by update(), and OpalElement::updateUnknown().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setBendAngle()

void MultipoleT::setBendAngle ( double angle)
inline

Set the bending angle of the magnet

Definition at line 398 of file MultipoleT.h.

References angle_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setBoundaryGeometry()

void ElementBase::setBoundaryGeometry ( BoundaryGeometry * geo)
virtualinherited

attach a boundary geometry field to the element

Definition at line 228 of file ElementBase.cpp.

References bgeometry_m.

◆ setBoundingBoxLength()

void MultipoleT::setBoundingBoxLength ( const double & boundingBoxLength)
inline

Set distance between centre of magnet and enctrance

Parameters
boundingBoxLength-> Distance between centre and entrance

Definition at line 413 of file MultipoleT.h.

References boundingBoxLength_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setCSTrafoGlobal2Local()

void ElementBase::setCSTrafoGlobal2Local ( const CoordinateSystemTrafo & ori)
inlineinherited

Definition at line 472 of file ElementBase.h.

References csTrafoGlobal2Local_m, and positionIsFixed.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ setCurrentSCoordinate()

void ElementBase::setCurrentSCoordinate ( double s)
inherited

Definition at line 236 of file ElementBase.cpp.

◆ setDesignEnergy()

void Component::setDesignEnergy ( const double & energy,
bool changeable = true )
inlinevirtualinherited

Reimplemented in Corrector, and RFCavity.

Definition at line 228 of file Component.h.

◆ setDipoleConstant()

void MultipoleT::setDipoleConstant ( double B0)

Set the dipole constant B_0

Definition at line 393 of file MultipoleT.cpp.

References transMaxOrder_m, and transProfile_m.

◆ setElementLength()

void ElementBase::setElementLength ( double length)
inlinevirtualinherited

Set design length.

Definition at line 400 of file ElementBase.h.

References getGeometry(), and BGeometryBase::setElementLength().

Referenced by RFCavity::initialise(), Solenoid::initialise(), TravelingWave::initialise(), SequenceMember::setLength(), OpalCavity::update(), OpalMonitor::update(), OpalMultipole::update(), OpalMultipoleT::update(), OpalProbe::update(), OpalSolenoid::update(), and OpalTravelingWave::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setElementPosition()

void ElementBase::setElementPosition ( double elemedge)
inlineinherited

Access to ELEMEDGE attribute.

Definition at line 548 of file ElementBase.h.

References elemedgeSet_m, and elementPosition_m.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ setEntranceAngle()

void MultipoleT::setEntranceAngle ( double entranceAngle)
inline

Set the entrance angle

Parameters
entranceAngle-> Entrance angle

Definition at line 359 of file MultipoleT.h.

References entranceAngle_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setExitFaceSlope()

void Component::setExitFaceSlope ( const double & m)
inlineinherited

Definition at line 224 of file Component.h.

References exit_face_slope_m.

◆ setFlagDeleteOnTransverseExit()

void ElementBase::setFlagDeleteOnTransverseExit ( bool flag = true)
inlineinherited

Definition at line 570 of file ElementBase.h.

References deleteOnTransverseExit_m.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ setFringeField()

bool MultipoleT::setFringeField ( double s0,
double lambda_left,
double lambda_right )

Set fringe field model
Tanh model used here

\[ 1/2 * \left [tanh \left( \frac{s + s_0}{\lambda_{left}} \right) - tanh \left( \frac{s - s_0}{\lambda_{right}} \right) \right] \]

Parameters
s0-> Centre field length

lambda_{left} -> Left end field length

Parameters

lambda_{right} -> Right end field length

Definition at line 247 of file MultipoleT.cpp.

References fringeField_l, fringeField_r, and maxOrder_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setLength()

void MultipoleT::setLength ( double length)
inline

Set the length of the magnet
If straight-> Actual length
If curved -> Arc length

Definition at line 404 of file MultipoleT.h.

References length_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setMaxOrder()

void MultipoleT::setMaxOrder ( std::size_t maxOrder)

Set the number of terms used in calculation of field components
Maximum power of z in Bz is 2 * maxOrder_m

Parameters
maxOrder-> Number of terms in expansion in z

Definition at line 216 of file MultipoleT.cpp.

References angle_m, maxOrder_m, maxOrderX_m, recursion_ConstRadius_m, recursion_VarRadius_m, polynomial::RecursionRelation::resizeX(), polynomial::RecursionRelationTwo::resizeX(), transMaxOrder_m, polynomial::RecursionRelation::truncate(), polynomial::RecursionRelationTwo::truncate(), and variableRadius_m.

Referenced by OpalMultipoleT::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMaxXOrder()

void MultipoleT::setMaxXOrder ( std::size_t maxXOrder)
inline

Set the number of terms used in polynomial expansions

Parameters
maxXOrder-> Number of terms in expansion in z

Definition at line 382 of file MultipoleT.h.

References maxOrderX_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setMisalignment()

void ElementBase::setMisalignment ( const CoordinateSystemTrafo & cst)
inlineinherited

Definition at line 509 of file ElementBase.h.

References misalignment_m.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ setName()

void ElementBase::setName ( const std::string & name)
virtualinherited

Set element name.

Definition at line 136 of file ElementBase.cpp.

References elementID.

Referenced by Sequence::insertDrifts(), Offset::Offset(), and Offset::operator=().

Here is the caller graph for this function:

◆ setOutputFN()

void ElementBase::setOutputFN ( std::string fn)
inherited

Set output filename.

Definition at line 140 of file ElementBase.cpp.

References outputfn_m.

Referenced by OpalMonitor::update(), and OpalProbe::update().

Here is the caller graph for this function:

◆ setParticleMatterInteraction()

void ElementBase::setParticleMatterInteraction ( ParticleMatterInteractionHandler * spys)
virtualinherited

Definition at line 232 of file ElementBase.cpp.

◆ setRotation()

void MultipoleT::setRotation ( double rot)
inline

Set the angle of rotation of the magnet around its axis
To make skew components

Parameters
rot-> Angle of rotation

Definition at line 395 of file MultipoleT.h.

References rotation_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setRotationAboutZ()

void ElementBase::setRotationAboutZ ( double rotation)
inlineinherited

Set rotation about z axis in bend frame.

Definition at line 536 of file ElementBase.h.

References rotationZAxis_m.

Referenced by OpalElement::update().

Here is the caller graph for this function:

◆ setTransMaxOrder()

void MultipoleT::setTransMaxOrder ( std::size_t transMaxOrder)
inline

Set the maximum order in the given transverse profile

Parameters
transMaxOrder-> Highest power of x in field expansion

Definition at line 388 of file MultipoleT.h.

References transMaxOrder_m, and transProfile_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setTransProfile()

void MultipoleT::setTransProfile ( std::size_t n,
double Bn )

Set transverse profile T(x) T(x) = B_0 + B1 x + B2 x^2 + B3 x^3 + ...

Parameters
n-> Order of the term (d^n/dx^n) to be set
Bn-> Value of transverse profile coefficient

Definition at line 239 of file MultipoleT.cpp.

References transMaxOrder_m, and transProfile_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setVarRadius()

void MultipoleT::setVarRadius ( )
inline

Set variable radius flag to true

Definition at line 353 of file MultipoleT.h.

References variableRadius_m.

Referenced by OpalMultipoleT::update().

Here is the caller graph for this function:

◆ setWake()

void ElementBase::setWake ( WakeFunction * wf)
virtualinherited

attach a wake field to the element

Definition at line 224 of file ElementBase.cpp.

References wake_m.

◆ trackBunch()

void Component::trackBunch ( PartBunch_t * bunch,
const PartData & ,
bool revBeam,
bool revTrack ) const
virtualinherited

Track particle bunch.

Definition at line 56 of file Component.cpp.

References ElementBase::getName().

Referenced by Tracker::visitComponent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ trackMap()

void Component::trackMap ( FVps< double, 6 > & map,
const PartData & ,
bool revBeam,
bool revTrack ) const
virtualinherited

Track a map.

Definition at line 60 of file Component.cpp.

References ElementBase::getName().

Here is the call graph for this function:

◆ transformCoords()

Vector_t< double, 3 > MultipoleT::transformCoords ( const Vector_t< double, 3 > & R)
private

Transform to Frenet-Serret coordinates for sector magnets

Definition at line 187 of file MultipoleT.cpp.

References angle_m, fringeField_l, fringeField_r, coordinatetransform::CoordinateTransform::getTransformation(), length_m, and variableRadius_m.

Referenced by apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

bool ElementBase::update ( const AttributeSet & set)
inherited

Update element.

Definition at line 216 of file ElementBase.cpp.

References AttributeSet::begin(), AttributeSet::end(), and setAttribute().

Here is the call graph for this function:

Member Data Documentation

◆ actionRange_m

std::queue<std::pair<double, double> > ElementBase::actionRange_m
privateinherited

Definition at line 382 of file ElementBase.h.

Referenced by setActionRange().

◆ angle_m

◆ aperture_m

std::pair<ApertureType, std::vector<double> > ElementBase::aperture_m
protectedinherited

Definition at line 353 of file ElementBase.h.

Referenced by ElementBase(), getAperture(), isInsideTransverse(), and setAperture().

◆ bgeometry_m

BoundaryGeometry* ElementBase::bgeometry_m
privateinherited

◆ boundingBoxLength_m

double MultipoleT::boundingBoxLength_m
private

Distance between centre of magnet and entrance

Definition at line 288 of file MultipoleT.h.

Referenced by getBoundingBoxLength(), initialise(), MultipoleT(), MultipoleT(), and setBoundingBoxLength().

◆ csTrafoGlobal2Local_m

CoordinateSystemTrafo ElementBase::csTrafoGlobal2Local_m
protectedinherited

◆ defaultAperture_m

const std::vector< double > Component::defaultAperture_m = std::vector<double>({1e6, 1e6, 1.0})
staticprotectedinherited

Definition at line 181 of file Component.h.

Referenced by Component().

◆ deleteOnTransverseExit_m

bool ElementBase::deleteOnTransverseExit_m = true
privateinherited

◆ dummy

BMultipoleField MultipoleT::dummy
private

Not implemented

Definition at line 298 of file MultipoleT.h.

Referenced by getField(), getField(), and MultipoleT().

◆ elemedgeSet_m

bool ElementBase::elemedgeSet_m
privateinherited

◆ elementEdge_m

double ElementBase::elementEdge_m
protectedinherited

Definition at line 355 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), and setActionRange().

◆ elementID

std::string ElementBase::elementID
privateinherited

Definition at line 364 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), and setName().

◆ elementPosition_m

double ElementBase::elementPosition_m
privateinherited

ELEMEDGE attribute.

Definition at line 379 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), getElementPosition(), and setElementPosition().

◆ elementTypeToString_s

const std::map< ElementType, std::string > ElementBase::elementTypeToString_s
staticprivateinherited
Initial value:

Definition at line 69 of file ElementBase.h.

Referenced by getTypeString().

◆ entranceAngle_m

double MultipoleT::entranceAngle_m
private

Definition at line 283 of file MultipoleT.h.

Referenced by getEntranceAngle(), MultipoleT(), MultipoleT(), rotateFrame(), and setEntranceAngle().

◆ exit_face_slope_m

double Component::exit_face_slope_m
protectedinherited

Definition at line 183 of file Component.h.

Referenced by Component(), Component(), and setExitFaceSlope().

◆ fringeField_l

endfieldmodel::Tanh MultipoleT::fringeField_l
private

◆ fringeField_r

endfieldmodel::Tanh MultipoleT::fringeField_r
private

◆ horizApert_m

double MultipoleT::horizApert_m
private

Definition at line 296 of file MultipoleT.h.

Referenced by getAperture(), insideAperture(), MultipoleT(), MultipoleT(), and setAperture().

◆ length_m

double MultipoleT::length_m
private

◆ maxOrder_m

std::size_t MultipoleT::maxOrder_m = 0
private

Field expansion parameters
Number of terms in z expansion used in calculating field components

Definition at line 255 of file MultipoleT.h.

Referenced by getBs(), getBx(), getBz(), getMaxOrder(), MultipoleT(), MultipoleT(), setFringeField(), and setMaxOrder().

◆ maxOrderX_m

std::size_t MultipoleT::maxOrderX_m = 0
private

Highest order of polynomial expansions in x

Definition at line 257 of file MultipoleT.h.

Referenced by getMaxXOrder(), MultipoleT(), MultipoleT(), setMaxOrder(), and setMaxXOrder().

◆ misalignment_m

CoordinateSystemTrafo ElementBase::misalignment_m
protectedinherited

Definition at line 351 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), getMisalignment(), and setMisalignment().

◆ online_m

◆ outputfn_m

std::string ElementBase::outputfn_m
privateinherited

The name of the outputfile

Definition at line 384 of file ElementBase.h.

Referenced by ElementBase(), getOutputFN(), and setOutputFN().

◆ parmatint_m

ParticleMatterInteractionHandler* ElementBase::parmatint_m
privateinherited

◆ planarArcGeometry_m

PlanarArcGeometry MultipoleT::planarArcGeometry_m
private

Geometry

Definition at line 266 of file MultipoleT.h.

Referenced by getGeometry(), getGeometry(), initialise(), MultipoleT(), and MultipoleT().

◆ positionIsFixed

bool ElementBase::positionIsFixed
privateinherited

◆ recursion_ConstRadius_m

std::vector<polynomial::RecursionRelation> MultipoleT::recursion_ConstRadius_m
private

Definition at line 260 of file MultipoleT.h.

Referenced by getFn(), MultipoleT(), and setMaxOrder().

◆ recursion_VarRadius_m

std::vector<polynomial::RecursionRelationTwo> MultipoleT::recursion_VarRadius_m
private

Objects for storing differential operator acting on Fn

Definition at line 259 of file MultipoleT.h.

Referenced by getFn(), MultipoleT(), and setMaxOrder().

◆ refCount

int RCObject::refCount
mutableprivateinherited

Definition at line 76 of file RCObject.h.

Referenced by addReference(), isShared(), RCObject(), RCObject(), and removeReference().

◆ RefPartBunch_m

◆ rotation_m

double MultipoleT::rotation_m
private

◆ rotationZAxis_m

double ElementBase::rotationZAxis_m
protectedinherited

Definition at line 357 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), getRotationAboutZ(), and setRotationAboutZ().

◆ shareFlag

bool ElementBase::shareFlag
mutableprotectedinherited

◆ transMaxOrder_m

std::size_t MultipoleT::transMaxOrder_m = 0
private

Highest power in given mid-plane field

Definition at line 262 of file MultipoleT.h.

Referenced by getTransDeriv(), getTransMaxOrder(), MultipoleT(), MultipoleT(), setDipoleConstant(), setMaxOrder(), setTransMaxOrder(), and setTransProfile().

◆ transProfile_m

std::vector<double> MultipoleT::transProfile_m
private

List of transverse profile coefficients

Definition at line 264 of file MultipoleT.h.

Referenced by bends(), getDipoleConstant(), getTransDeriv(), getTransProfile(), getTransProfile(), MultipoleT(), setDipoleConstant(), setTransMaxOrder(), and setTransProfile().

◆ userAttribs

AttributeSet ElementBase::userAttribs
privateinherited

Definition at line 369 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), getChannel(), and removeAttribute().

◆ variableRadius_m

bool MultipoleT::variableRadius_m
private

◆ verticalApert_m

double MultipoleT::verticalApert_m
private

Assume rectangular aperture with these dimensions

Definition at line 295 of file MultipoleT.h.

Referenced by getAperture(), insideAperture(), MultipoleT(), MultipoleT(), and setAperture().

◆ wake_m

WakeFunction* ElementBase::wake_m
privateinherited

Definition at line 371 of file ElementBase.h.

Referenced by ElementBase(), ElementBase(), getWake(), hasWake(), and setWake().


The documentation for this class was generated from the following files: