|
OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
|
#include <MultipoleT.h>


Public Member Functions | |
| MultipoleT (const std::string &name) | |
| Constructor. More... | |
| MultipoleT (const MultipoleT &right) | |
| Copy constructor. More... | |
| ~MultipoleT () override=default | |
| Destructor. More... | |
| ElementBase * | clone () const override |
| Inheritable copy constructor. More... | |
| void | accept (BeamlineVisitor &visitor) const override |
| Accept a beamline visitor. More... | |
| BGeometryBase & | getGeometry () override |
| Return the cell geometry. More... | |
| const BGeometryBase & | getGeometry () const override |
| Return the cell geometry. More... | |
| EMField & | getField () override |
| Return a dummy field value. More... | |
| const EMField & | getField () const override |
| Return a dummy field value. More... | |
| bool | apply (const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override |
| Calculate the field at some arbitrary position If particle is outside field map true is returned, otherwise false is returned. More... | |
| bool | apply (const size_t &i, const double &t, Vector_t &E, Vector_t &B) override |
| Calculate the field at the position of the ith particle. More... | |
| void | initialise (PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override |
| Initialise the MultipoleT. More... | |
| void | finalise () override |
| Finalise the MultipoleT - sets bunch to nullptr. More... | |
| bool | bends () const override |
| Return true if dipole component not zero. More... | |
| size_t | getMaxFOrder () const |
| Get the number of terms used in calculation of field components. More... | |
| size_t | getMaxXOrder () const |
| void | setMaxOrder (size_t orderZ, size_t orderX) |
| Set the number of terms used in calculation of field components . More... | |
| std::size_t | getTransMaxOrder () const |
| Get the maximum order in the given transverse profile. More... | |
| void | setTransProfile (const std::vector< double > &profile) |
| Set the the transverse profile. More... | |
| const std::vector< double > & | getTransProfile () const |
| Get all terms of transverse profile. More... | |
| void | setFringeField (const double &s0, const double &lambda_left, const double &lambda_right) |
| Set fringe field model Tanh model used here . More... | |
| std::tuple< double, double, double > | getFringeField () const |
| Get the fringe field model. More... | |
| void | setEntranceAngle (double entranceAngle) |
| Set the entrance angle. More... | |
| void | setEntryOffset (double offset) |
| Set the offset of the entry point from the standard position. More... | |
| double | getEntryOffset () const |
| Get the offset of the entry point from the standard position. More... | |
| bool | getVariableRadius () const |
| Get the variable radius of the magnet. More... | |
| void | setBendAngle (double angle, bool variableRadius) |
| Set the bending angle of the magnet. More... | |
| double | getBendAngle () const |
| Get the bending angle of the magnet. More... | |
| double | getEntranceAngle () const |
| Get the entrance angle. More... | |
| void | setElementLength (double length) override |
| Set the length of the magnet If straight-> Actual length If curved -> Arc length. More... | |
| double | getLength () const |
| Get the length of the magnet. More... | |
| void | setAperture (const double &vertAp, const double &horizAp) |
| Set the aperture dimensions This element only supports a rectangular aperture. More... | |
| std::tuple< double, double > | getAperture () |
| Get the aperture dimensions. More... | |
| void | setRotation (double rot) |
| Set the angle of rotation of the magnet around its axis To make skew components. More... | |
| double | getRotation () const |
| Get the angle of rotation of the magnet around its axis. More... | |
| double | getBoundingBoxLength () const |
| Get the bounding box size. More... | |
| void | setBoundingBoxLength (double boundingBoxLength) |
| Set the bounding box size. More... | |
| void | getDimensions (double &, double &) const override |
| Not implemented. More... | |
| double | getFringeDeriv (const std::size_t &n, const double &s) |
| Returns the value of the fringe field n-th derivative at s. More... | |
| double | getFnDerivX (const std::size_t &n, const double &x, const double &s) |
| Calculate partial derivative of fn wrt x using a 5-point finite difference formula Error of order stepSize^4. More... | |
| double | getFnDerivS (const std::size_t &n, const double &x, const double &s) |
| Calculate partial derivative of fn wrt s using a 5-point finite difference formula Error of order stepSize^4. More... | |
| double | getTransDeriv (const std::size_t &n, const double &x) const |
| Returns the value of the transverse field n-th derivative at x Transverse field is a polynomial in x, differentiation follows usual polynomial rules of differentiation. More... | |
| Vector_t | toMagnetCoords (const Vector_t &R) |
| Vector_t | getField (const Vector_t &magnetCoords) |
| Vector_t | localCartesianToOpalCartesian (const Vector_t &r) |
| double | localCartesianRotation () |
| void | setScalingName (const std::string &name) |
| void | setScalingModel (const std::shared_ptr< AbstractTimeDependence > &td) |
| std::string | getScalingName () const |
| void | initialiseTimeDepencencies () const |
| EVector | Efield (const Point3D &P) const |
| Return the field in a point. More... | |
| EVector | Efield (const Point3D &P, double t) const |
| Return the field in a point. More... | |
| BVector | Bfield (const Point3D &P) const |
| Return the field in a point. More... | |
| BVector | Bfield (const Point3D &P, double t) const |
| Return the field in a point. More... | |
| EBVectors | EBfield (const Point3D &P) const |
| Return the field in a point. More... | |
| EBVectors | EBfield (const Point3D &P, double t) const |
| Return the field in a point. More... | |
| virtual bool | applyToReferenceParticle (const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) |
| virtual bool | getPotential (const Vector_t &, const double &, Vector_t &, double &) |
| Calculate the four-potential at some position relative to the component. More... | |
| 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 override |
| Get element type std::string. More... | |
| virtual const ElementBase & | getDesign () const |
| Return design element. More... | |
| virtual void | trackBunch (PartBunchBase< double, 3 > *bunch, const PartData &, bool revBeam, bool revTrack) const |
| Track particle bunch. More... | |
| virtual void | trackMap (FVps< double, 6 > &map, const PartData &, bool revBeam, bool revTrack) const |
| Track a map. More... | |
| void | setExitFaceSlope (const double &) |
| virtual const std::string & | getName () const |
| Get element name. More... | |
| virtual void | setName (const std::string &name) |
| Set element name. More... | |
| std::string | getTypeString () const |
| virtual double | getArcLength () const |
| Get arc length. More... | |
| virtual double | getElementLength () const |
| Get design length. More... | |
| virtual void | getElementDimensions (double &begin, double &end) const |
| 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 fromS, double toS) const |
| Get transform. More... | |
| virtual Euclid3D | getTransform (double s) const |
| Get transform. More... | |
| virtual Euclid3D | getTotalTransform () const |
| Get transform. More... | |
| virtual Euclid3D | getEntranceFrame () const |
| Get transform. More... | |
| virtual Euclid3D | getExitFrame () const |
| Get transform. More... | |
| virtual Euclid3D | getEntrancePatch () const |
| Get patch. More... | |
| virtual Euclid3D | getExitPatch () const |
| Get patch. More... | |
| virtual double | getAttribute (const std::string &aKey) const |
| Get attribute value. More... | |
| virtual bool | hasAttribute (const std::string &aKey) const |
| Test for existence of an attribute. More... | |
| virtual void | removeAttribute (const std::string &aKey) |
| Remove an existing attribute. More... | |
| virtual void | setAttribute (const std::string &aKey, double val) |
| Set value of an attribute. More... | |
| virtual Channel * | getChannel (const std::string &aKey, bool create=false) |
| Construct a read/write channel. More... | |
| virtual const ConstChannel * | getConstChannel (const std::string &aKey) const |
| Construct a read-only channel. More... | |
| virtual ElementBase * | copyStructure () |
| Make a structural copy. More... | |
| bool | isSharable () const |
| Test if the element can be shared. More... | |
| virtual void | makeSharable () |
| Set sharable flag. More... | |
| bool | update (const AttributeSet &) |
| Update element. More... | |
| virtual void | setBoundaryGeometry (BoundaryGeometry *geo) |
| attach a boundary geometry field to the element More... | |
| virtual BoundaryGeometry * | getBoundaryGeometry () const |
| return the attached boundary geometrt object if there is any More... | |
| virtual bool | hasBoundaryGeometry () const |
| virtual void | setWake (WakeFunction *wf) |
| attach a wake field to the element More... | |
| virtual WakeFunction * | getWake () const |
| return the attached wake object if there is any More... | |
| 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) |
| std::pair< ApertureType, std::vector< double > > | getAperture () const |
| virtual bool | isInside (const Vector_t &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. More... | |
| double | getRotationAboutZ () const |
| virtual BoundingBox | getBoundingBoxInLabCoords () const |
| virtual int | getRequiredNumberOfTimeSteps () const |
| void | setOutputFN (std::string fn) |
| Set output filename. More... | |
| std::string | getOutputFN () const |
| Get output filename. More... | |
| void | setFlagDeleteOnTransverseExit (bool=true) |
| bool | getFlagDeleteOnTransverseExit () const |
| int | addReference () const |
| Increment reference count. More... | |
| int | removeReference () const |
| Decrement the reference count. More... | |
| bool | isShared () const |
| Test for sharing. More... | |
| void | setElementPosition (double elemedge) |
| Access to ELEMEDGE attribute. More... | |
| double | getElementPosition () const |
| bool | isElementPositionSet () const |
Static Public Member Functions | |
| static std::string | getTypeString (ElementType type) |
Protected Member Functions | |
| Vector_t | rotateFrame (const Vector_t &R) const |
| Rotate the frame to account for the rotation and entry angles. More... | |
| bool | insideAperture (const Vector_t &R) const |
| bool | insideBoundingBox (const Vector_t &R) const |
| void | chooseImplementation () |
| bool | isInsideTransverse (const Vector_t &r) const |
Protected Attributes | |
| endfieldmodel::Tanh | fringeField_l {endfieldmodel::Tanh()} |
| endfieldmodel::Tanh | fringeField_r {endfieldmodel::Tanh()} |
| std::size_t | maxFOrder_m {3} |
| Number of terms in z expansion used in calculating field components. More... | |
| std::size_t | maxXOrder_m {20} |
| Highest order of polynomial expansions in x. More... | |
| std::vector< double > | transProfile_m {0.0} |
| List of transverse profile coefficients. More... | |
| size_t | transMaxOrder_m {1} |
| double | length_m {1.0} |
| Magnet parameters. More... | |
| double | entranceAngle_m {0.0} |
| double | rotation_m {0.0} |
| double | bendAngle_m {0.0} |
| bool | variableRadius_m {false} |
| double | boundingBoxLength_m {0.0} |
| double | entryOffset_m {0.0} |
| double | verticalApert_m {0.5} |
| Assume rectangular aperture with these dimensions. More... | |
| double | horizontalApert_m {0.5} |
| BMultipoleField | dummy |
| Not implemented. More... | |
| std::string | scalingName_m |
| std::shared_ptr< AbstractTimeDependence > | scalingTD_m |
| std::unique_ptr< MultipoleTBase > | implementation_ {} |
| double | exit_face_slope_m |
| PartBunchBase< double, 3 > * | RefPartBunch_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 |
Private Attributes | |
| std::string | elementID |
| AttributeSet | userAttribs |
| WakeFunction * | wake_m |
| BoundaryGeometry * | bgeometry_m |
| ParticleMatterInteractionHandler * | parmatint_m |
| bool | positionIsFixed |
| std::queue< std::pair< double, double > > | actionRange_m |
| std::string | outputfn_m |
| The name of the outputfile. More... | |
| bool | deleteOnTransverseExit_m = true |
| int | refCount |
| double | elementPosition_m |
| ELEMEDGE attribute. More... | |
| bool | elemedgeSet_m |
Static Private Attributes | |
| static const std::map< ElementType, std::string > | elementTypeToString_s |
MultipoleT implements 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.
|
explicit |
Constructor.
| name | -> User-defined name |
Definition at line 42 of file MultipoleT.cpp.
References chooseImplementation().
Referenced by clone().

| MultipoleT::MultipoleT | ( | const MultipoleT & | right | ) |
Copy constructor.
Definition at line 47 of file MultipoleT.cpp.
References chooseImplementation(), and Component::RefPartBunch_m.

|
overridedefault |
Destructor.
|
overridevirtual |
Accept a beamline visitor.
Implements ElementBase.
Definition at line 73 of file MultipoleT.cpp.
References initialiseTimeDepencencies(), and BeamlineVisitor::visitMultipoleT().

|
inlineinherited |
Increment reference count.
Definition at line 83 of file RCObject.h.
References RCObject::refCount.
Referenced by Pointer< Object >::operator=(), and Pointer< Object >::unique().
|
overridevirtual |
Calculate the field at the position of the ith particle.
| i | -> Index of the particle event; 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 228 of file MultipoleT.cpp.
References apply(), PartBunchBase< T, Dim >::P, PartBunchBase< T, Dim >::R, and Component::RefPartBunch_m.

|
overridevirtual |
Calculate the field at some arbitrary position
If particle is outside field map true is returned, otherwise false is returned.
| 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 |
Reimplemented from Component.
Definition at line 129 of file MultipoleT.cpp.
References getField(), ElementBase::getFlagDeleteOnTransverseExit(), insideAperture(), insideBoundingBox(), Attrib::Distribution::R, scalingTD_m, and toMagnetCoords().
Referenced by apply().

|
virtualinherited |
Reimplemented in Bend2D, Degrader, FlexibleCollimator, Monitor, Multipole, PluginElement, RBend3D, RFCavity, Solenoid, TravelingWave, Vacuum, VariableRFCavity, and VariableRFCavityFringeField.
Definition at line 121 of file Component.cpp.
References ElementBase::getElementLength(), ElementBase::isInsideTransverse(), and Attrib::Distribution::R.

|
overridevirtual |
Return true if dipole component not zero.
Implements Component.
Definition at line 293 of file MultipoleT.cpp.
References bendAngle_m, and transProfile_m.
Return the field in a point.
Definition at line 202 of file Component.h.
References EMField::Bfield(), and Component::getField().

Return the field in a point.
Definition at line 208 of file Component.h.
References EMField::Bfield(), and Component::getField().

|
protected |
Definition at line 247 of file MultipoleT.cpp.
References bendAngle_m, implementation_, and variableRadius_m.
Referenced by MultipoleT(), and setBendAngle().
|
overridevirtual |
Inheritable copy constructor.
Implements ElementBase.
Definition at line 69 of file MultipoleT.cpp.
References MultipoleT().
Referenced by ParallelCyclotronTracker::visitMultipoleT().

|
virtualinherited |
Make a structural copy.
Reimplemented in TBeamline< T >.
Definition at line 244 of file ElementBase.cpp.
References ElementBase::clone(), and ElementBase::isSharable().
Referenced by Sequence::copy(), Line::parse(), SequenceParser::parseMember(), and Replacer::visitFlaggedElmPtr().

Return the field in a point.
Definition at line 211 of file Component.h.
References EMField::EBfield(), and Component::getField().

Return the field in a point.
Definition at line 214 of file Component.h.
References EMField::EBfield(), and Component::getField().

Return the field in a point.
Definition at line 199 of file Component.h.
References EMField::Efield(), and Component::getField().

Return the field in a point.
Definition at line 205 of file Component.h.
References EMField::Efield(), and Component::getField().

|
overridevirtual |
Finalise the MultipoleT - sets bunch to nullptr.
Implements Component.
Definition at line 224 of file MultipoleT.cpp.
References Component::RefPartBunch_m.
|
inlineinherited |
Definition at line 551 of file ElementBase.h.
References ElementBase::positionIsFixed.
Referenced by OpalElement::update(), OpalRBend::update(), OpalRBend3D::update(), and OpalSBend::update().
|
inline |
Get the aperture dimensions.
Definition at line 206 of file MultipoleT.h.
References horizontalApert_m, and verticalApert_m.
|
inlineinherited |
Definition at line 525 of file ElementBase.h.
References ElementBase::aperture_m.
Referenced by MeshGenerator::add(), and Offset::operator=().
|
inlinevirtualinherited |
Get arc length.
Reimplemented in MarkerRep, and TBeamline< T >.
Definition at line 411 of file ElementBase.h.
References BGeometryBase::getArcLength(), and ElementBase::getGeometry().
Referenced by BeamlineGeometry::getArcLength(), and TBeamline< T >::getTransform().

|
virtualinherited |
Get attribute value.
Definition at line 187 of file ElementBase.cpp.
References ElementBase::getConstChannel().

|
inline |
Get the bending angle of the magnet.
Definition at line 187 of file MultipoleT.h.
References bendAngle_m.
Referenced by MultipoleTCurvedConstRadius::getFn(), MultipoleTCurvedVarRadius::getFn(), MultipoleTCurvedConstRadius::getScaleFactor(), MultipoleTCurvedVarRadius::getScaleFactor(), MultipoleTCurvedConstRadius::initialise(), MultipoleTCurvedVarRadius::initialise(), MultipoleTCurvedVarRadius::localCartesianToCurvilinear(), MultipoleTCurvedConstRadius::localCartesianToOpalCartesian(), MultipoleTCurvedConstRadius::transformBField(), MultipoleTCurvedVarRadius::transformBField(), and MultipoleTCurvedConstRadius::transformCoords().
|
inlinevirtualinherited |
return the attached boundary geometrt object if there is any
Definition at line 475 of file ElementBase.h.
References ElementBase::bgeometry_m.
|
virtualinherited |
Reimplemented in Bend2D.
Definition at line 313 of file ElementBase.cpp.
References ElementBase::aperture_m, ElementBase::csTrafoGlobal2Local_m, BoundingBox::getBoundingBox(), ElementBase::getEdgeToBegin(), ElementBase::getEdgeToEnd(), and CoordinateSystemTrafo::transformFrom().

|
inline |
Get the bounding box size.
Definition at line 215 of file MultipoleT.h.
References boundingBoxLength_m.
|
virtualinherited |
Construct a read/write channel.
Reimplemented in CCollimatorRep, CorrectorRep, CyclotronRep, DegraderRep, DriftRep, FlexibleCollimatorRep, MonitorRep, MultipoleRep, ProbeRep, RBendRep, RFCavityRep, SBendRep, SeptumRep, SingleMultipole< order >, SolenoidRep, SourceRep, StripperRep, TravelingWaveRep, UndulatorRep, VacuumRep, XCorrectorRep, and YCorrectorRep.
Definition at line 228 of file ElementBase.cpp.
References AttributeSet::getChannel(), and ElementBase::userAttribs.
Referenced by CCollimatorRep::getChannel(), CorrectorRep::getChannel(), CyclotronRep::getChannel(), DegraderRep::getChannel(), DriftRep::getChannel(), FlexibleCollimatorRep::getChannel(), MonitorRep::getChannel(), MultipoleRep::getChannel(), ProbeRep::getChannel(), RBendRep::getChannel(), RFCavityRep::getChannel(), SBendRep::getChannel(), SeptumRep::getChannel(), SingleMultipole< order >::getChannel(), SolenoidRep::getChannel(), SourceRep::getChannel(), StripperRep::getChannel(), TravelingWaveRep::getChannel(), UndulatorRep::getChannel(), VacuumRep::getChannel(), XCorrectorRep::getChannel(), YCorrectorRep::getChannel(), ElementBase::getConstChannel(), and ElementBase::setAttribute().

|
virtualinherited |
Construct a read-only channel.
Definition at line 233 of file ElementBase.cpp.
References ElementBase::getChannel().
Referenced by ElementBase::getAttribute(), and ElementBase::hasAttribute().

|
inlineinherited |
Definition at line 498 of file ElementBase.h.
References ElementBase::csTrafoGlobal2Local_m.
Referenced by MeshGenerator::add(), ParallelTTracker::computeParticleMatterInteraction(), Monitor::driftToCorrectPositionAndSave(), OpalRBend::update(), OpalRBend3D::update(), and OpalSBend::update().
|
virtualinherited |
Return design element.
Definition at line 67 of file Component.cpp.
|
inlinevirtualinherited |
Reimplemented in BendBase, and RFCavity.
Definition at line 231 of file Component.h.
|
inlineoverridevirtual |
|
inlinevirtualinherited |
Reimplemented in RFCavity, Solenoid, and TravelingWave.
Definition at line 503 of file ElementBase.h.
Referenced by ElementBase::getBoundingBoxInLabCoords(), Bend2D::getBoundingBoxInLabCoords(), and ElementBase::isInsideTransverse().
|
inlinevirtualinherited |
Reimplemented in Bend2D, RFCavity, Solenoid, and TravelingWave.
Definition at line 511 of file ElementBase.h.
References ElementBase::getElementLength().
Referenced by ElementBase::getBoundingBoxInLabCoords().

|
inlinevirtualinherited |
Reimplemented in RFCavity, TravelingWave, and Solenoid.
Definition at line 174 of file ElementBase.h.
References begin(), end(), and ElementBase::getElementLength().
Referenced by MeshGenerator::add().

|
inlinevirtualinherited |
Get design length.
Reimplemented in MarkerRep, TBeamline< T >, and RFCavity.
Definition at line 415 of file ElementBase.h.
References BGeometryBase::getElementLength(), and ElementBase::getGeometry().
Referenced by ScatteringPhysics::addBackToBunch(), Undulator::apply(), Multipole::apply(), Component::apply(), Corrector::apply(), Solenoid::apply(), Component::applyToReferenceParticle(), Multipole::applyToReferenceParticle(), Solenoid::applyToReferenceParticle(), Vacuum::checkPoint(), ScatteringPhysics::copyFromBunch(), RBend::findChordLength(), SBend::findChordLength(), Corrector::getDimensions(), CCollimator::getDimensions(), Degrader::getDimensions(), Drift::getDimensions(), FlexibleCollimator::getDimensions(), Multipole::getDimensions(), RBend3D::getDimensions(), Solenoid::getDimensions(), Vacuum::getDimensions(), ElementBase::getEdgeToEnd(), Solenoid::getEdgeToEnd(), ElementBase::getElementDimensions(), Solenoid::getElementDimensions(), BeamlineGeometry::getElementLength(), RFCavity::getElementLength(), Corrector::initialise(), Degrader::initialise(), Drift::initialise(), FlexibleCollimator::initialise(), Multipole::initialise(), RBend3D::initialise(), Solenoid::initialise(), Source::initialise(), Vacuum::initialise(), ElementBase::isInside(), Degrader::isInside(), Monitor::isInside(), Multipole::isInside(), ElementBase::isInsideTransverse(), FlexibleCollimator::isStopped(), ScatteringPhysics::setTimeStepForLeavingParticles(), Bend2D::setupDefaultFieldMap(), ParallelCyclotronTracker::visitCorrector(), ParallelCyclotronTracker::visitDrift(), ThickTracker::visitDrift(), ParallelCyclotronTracker::visitMultipole(), ThickTracker::visitMultipole(), ParallelCyclotronTracker::visitRBend(), ParallelCyclotronTracker::visitSBend(), and ThickTracker::visitSBend().

|
inlineinherited |
Definition at line 589 of file ElementBase.h.
References ElementBase::elemedgeSet_m, ElementBase::elementPosition_m, and ElementBase::getName().

|
inlinevirtualinherited |
Get entrance position.
Reimplemented in TBeamline< T >.
Definition at line 427 of file ElementBase.h.
References BGeometryBase::getEntrance(), and ElementBase::getGeometry().
Referenced by BeamlineGeometry::getEntrance().

|
inline |
|
inlinevirtualinherited |
Get transform.
Reimplemented in TBeamline< T >.
Definition at line 447 of file ElementBase.h.
References BGeometryBase::getEntranceFrame(), and ElementBase::getGeometry().
Referenced by BeamlineGeometry::getEntranceFrame().

|
inlinevirtualinherited |
Get patch.
Definition at line 455 of file ElementBase.h.
References BGeometryBase::getEntrancePatch(), and ElementBase::getGeometry().

|
inline |
Get the offset of the entry point from the standard position.
Definition at line 181 of file MultipoleT.h.
References entryOffset_m.
Referenced by MultipoleTCurvedVarRadius::initialise().
|
inlinevirtualinherited |
Get exit position.
Reimplemented in TBeamline< T >.
Definition at line 431 of file ElementBase.h.
References BGeometryBase::getExit(), and ElementBase::getGeometry().
Referenced by BeamlineGeometry::getExit().

|
inlinevirtualinherited |
Get transform.
Reimplemented in TBeamline< T >.
Definition at line 451 of file ElementBase.h.
References BGeometryBase::getExitFrame(), and ElementBase::getGeometry().
Referenced by BeamlineGeometry::getExitFrame().

|
inlinevirtualinherited |
Get patch.
Definition at line 459 of file ElementBase.h.
References BGeometryBase::getExitPatch(), and ElementBase::getGeometry().

|
inlineoverridevirtual |
Return a dummy field value.
Implements Component.
Definition at line 109 of file MultipoleT.h.
References dummy.
|
inlineoverridevirtual |
Return a dummy field value.
Implements Component.
Definition at line 107 of file MultipoleT.h.
References dummy.
Referenced by apply().
Calculate B-field in the local Frenet-Serret frame
Transform B-field from local to lab coordinates
Definition at line 117 of file MultipoleT.cpp.
References implementation_.
|
inlineinherited |
Definition at line 614 of file ElementBase.h.
References ElementBase::deleteOnTransverseExit_m.
Referenced by Multipole::apply(), Corrector::apply(), Bend2D::apply(), apply(), RFCavity::apply(), Solenoid::apply(), TravelingWave::apply(), and FlexibleCollimator::isStopped().
| double MultipoleT::getFnDerivS | ( | const std::size_t & | n, |
| const double & | x, | ||
| const double & | s | ||
| ) |
Calculate partial derivative of fn wrt s using a 5-point finite difference formula Error of order stepSize^4.
| n | -> nth derivative |
| x | -> Coordinate x |
| s | -> Coordinate s |
Definition at line 210 of file MultipoleT.cpp.
References Physics::e, getFringeDeriv(), getTransDeriv(), implementation_, and Hypervolume::n.
Referenced by MultipoleTBase::getBs().

| double MultipoleT::getFnDerivX | ( | const std::size_t & | n, |
| const double & | x, | ||
| const double & | s | ||
| ) |
Calculate partial derivative of fn wrt x using a 5-point finite difference formula Error of order stepSize^4.
| n | -> nth derivative |
| x | -> Coordinate x |
| s | -> Coordinate s |
Definition at line 196 of file MultipoleT.cpp.
References Physics::e, getFringeDeriv(), getTransDeriv(), implementation_, and Hypervolume::n.
Referenced by MultipoleTBase::getBx().

| double MultipoleT::getFringeDeriv | ( | const std::size_t & | n, |
| const double & | s | ||
| ) |
Returns the value of the fringe field n-th derivative at s.
| n | -> nth derivative |
| s | -> Coordinate s |
Definition at line 159 of file MultipoleT.cpp.
References fringeField_l, fringeField_r, endfieldmodel::Tanh::getLambda(), endfieldmodel::Tanh::getNegTanh(), endfieldmodel::Tanh::getTanh(), endfieldmodel::Tanh::getX0(), tanhderiv::integrate(), and Hypervolume::n.
Referenced by MultipoleTStraight::getBs(), MultipoleTStraight::getBx(), MultipoleTCurvedConstRadius::getFn(), MultipoleTCurvedVarRadius::getFn(), MultipoleTStraight::getFn(), getFnDerivS(), getFnDerivX(), and MultipoleTCurvedVarRadius::getScaleFactor().

| std::tuple< double, double, double > MultipoleT::getFringeField | ( | ) | const |
Get the fringe field model.
Definition at line 155 of file MultipoleT.cpp.
References fringeField_l, fringeField_r, endfieldmodel::Tanh::getLambda(), and endfieldmodel::Tanh::getX0().
Referenced by MultipoleTCurvedVarRadius::initialise(), MultipoleTCurvedVarRadius::localCartesianToCurvilinear(), and MultipoleTCurvedVarRadius::transformBField().

|
overridevirtual |
Return the cell geometry.
Implements ElementBase.
Definition at line 319 of file MultipoleT.cpp.
References implementation_.
|
overridevirtual |
Return the cell geometry.
Implements ElementBase.
Definition at line 315 of file MultipoleT.cpp.
References implementation_.
|
inline |
Get the length of the magnet.
Definition at line 196 of file MultipoleT.h.
References length_m.
Referenced by MultipoleTCurvedConstRadius::getFn(), MultipoleTCurvedVarRadius::getFn(), MultipoleTCurvedConstRadius::getScaleFactor(), MultipoleTCurvedVarRadius::getScaleFactor(), MultipoleTCurvedConstRadius::initialise(), MultipoleTCurvedVarRadius::initialise(), MultipoleTStraight::initialise(), MultipoleTCurvedVarRadius::localCartesianToCurvilinear(), MultipoleTCurvedConstRadius::localCartesianToOpalCartesian(), MultipoleTStraight::localCartesianToOpalCartesian(), MultipoleTCurvedConstRadius::transformBField(), MultipoleTCurvedVarRadius::transformBField(), MultipoleTCurvedConstRadius::transformCoords(), and MultipoleTStraight::transformCoords().
|
inline |
Get the number of terms used in calculation of field components.
Definition at line 143 of file MultipoleT.h.
References maxFOrder_m.
Referenced by MultipoleTBase::getBs(), MultipoleTStraight::getBs(), MultipoleTBase::getBx(), MultipoleTStraight::getBx(), MultipoleTBase::getBz(), MultipoleTCurvedConstRadius::initialise(), and MultipoleTCurvedVarRadius::initialise().
|
inline |
Definition at line 144 of file MultipoleT.h.
References maxXOrder_m.
Referenced by MultipoleTCurvedConstRadius::initialise(), and MultipoleTCurvedVarRadius::initialise().
|
inlineinherited |
Definition at line 541 of file ElementBase.h.
References ElementBase::misalignment_m.
|
inherited |
Referenced by ParallelTTracker::computeParticleMatterInteraction().
|
virtualinherited |
Get element name.
Definition at line 162 of file ElementBase.cpp.
References ElementBase::elementID.
Referenced by Ring::appendElement(), Cyclotron::apply(), Ring::apply(), Bend2D::calculateRefTrajectory(), OutputPlane::checkOne(), Vacuum::checkPressure(), Stripper::doCheck(), CCollimator::doFinalise(), Stripper::doFinalise(), OutputPlane::doGoOffline(), Probe::doGoOffline(), OutputPlane::doInitialise(), PlaceRep::enter(), Cyclotron::finalise(), Degrader::finalise(), FlexibleCollimator::finalise(), Vacuum::finalise(), PyOpal::Field::getElementName(), ElementBase::getElementPosition(), RFCavity::getMomentaKick(), BeamStrippingPhysics::getName(), ScatteringPhysics::getName(), Bend2D::getOutline(), ElementBase::getOutputFN(), CavityAutophaser::getPhaseAtMaxEnergy(), Selector::handleElement(), Ring::initialise(), Bend2D::initialise(), RBend3D::initialise(), RFCavity::initialise(), Solenoid::initialise(), CSRIGFWakeFunction::initialize(), CSRWakeFunction::initialize(), OpalWake::initWakefunction(), PlaceRep::leave(), operator<<(), Offset::operator=(), VariableRFCavity::operator=(), operator==(), Line::parse(), Vacuum::print(), BeamStrippingPhysics::print(), ScatteringPhysics::print(), Sequence::print(), ParticleMatterInteraction::print(), Bend2D::readFieldMap(), PyOpal::PyLine_< C >::registerObject(), Component::trackBunch(), Component::trackMap(), RBend3D::trackRefParticleThrough(), OpalRBend::update(), OpalRBend3D::update(), OpalSBend::update(), Sequence::updateList(), ParallelTTracker::updateRFElement(), ParallelCyclotronTracker::visitCCollimator(), Replacer::visitFlaggedElmPtr(), ParallelCyclotronTracker::visitProbe(), ParallelCyclotronTracker::visitRFCavity(), ParallelCyclotronTracker::visitSeptum(), ParallelCyclotronTracker::visitStripper(), and ParallelTTracker::writePhaseSpace().
|
inlinevirtualinherited |
Get origin position.
Reimplemented in TBeamline< T >.
Definition at line 423 of file ElementBase.h.
References ElementBase::getGeometry(), and BGeometryBase::getOrigin().
Referenced by BeamlineGeometry::getOrigin().

|
inherited |
Get output filename.
Definition at line 177 of file ElementBase.cpp.
References ElementBase::getName(), and ElementBase::outputfn_m.
Referenced by Probe::doInitialise(), PluginElement::initialise(), Cyclotron::initialise(), FlexibleCollimator::initialise(), Monitor::initialise(), and Source::initialise().

|
inlinevirtualinherited |
Definition at line 483 of file ElementBase.h.
References ElementBase::parmatint_m.
Referenced by Degrader::applyToReferenceParticle(), CCollimator::doInitialise(), Vacuum::initialise(), and FlexibleCollimator::initialise().
|
inlinevirtualinherited |
Calculate the four-potential at some position relative to the component.
| R | position in the local coordinate system of the component |
| t | time |
| A | filled with the calculated magnetic vector potential |
| phi | filled with the calculated electric potential Note that any existing values in A and phi may be overwritten by this method. |
Definition at line 130 of file Component.h.
|
inlinevirtualinherited |
|
inline |
Get the angle of rotation of the magnet around its axis.
Definition at line 213 of file MultipoleT.h.
References rotation_m.
|
inlineinherited |
Definition at line 574 of file ElementBase.h.
References ElementBase::rotationZAxis_m.
Referenced by OpalBeamline::compute3DLattice(), and Bend2D::setFieldCalcParam().
|
inline |
Definition at line 262 of file MultipoleT.h.
References scalingName_m.
|
inlinevirtualinherited |
Get transform.
Reimplemented in TBeamline< T >.
Definition at line 439 of file ElementBase.h.
References ElementBase::getGeometry(), and BGeometryBase::getTotalTransform().
Referenced by BeamlineGeometry::getTotalTransform().

| double MultipoleT::getTransDeriv | ( | const std::size_t & | n, |
| const double & | x | ||
| ) | const |
Returns the value of the transverse field n-th derivative at x
Transverse field is a polynomial in x, differentiation follows usual polynomial rules of differentiation.
| n | -> nth derivative |
| x | -> Coordinate x |
Definition at line 172 of file MultipoleT.cpp.
References getTransMaxOrder(), getTransProfile(), Hypervolume::n, and transMaxOrder_m.
Referenced by MultipoleTStraight::getBs(), MultipoleTStraight::getBx(), MultipoleTCurvedConstRadius::getFn(), MultipoleTCurvedVarRadius::getFn(), MultipoleTStraight::getFn(), getFnDerivS(), and getFnDerivX().

|
inlinevirtualinherited |
Get transform.
Reimplemented in TBeamline< T >.
Definition at line 435 of file ElementBase.h.
References ElementBase::getGeometry(), and BGeometryBase::getTransform().
Referenced by BeamlineGeometry::getTransform(), and TBeamline< T >::getTransform().

|
inlinevirtualinherited |
Get transform.
Reimplemented in TBeamline< T >.
Definition at line 443 of file ElementBase.h.
References ElementBase::getGeometry(), and BGeometryBase::getTransform().

|
inline |
Get the maximum order in the given transverse profile.
Definition at line 151 of file MultipoleT.h.
References transMaxOrder_m.
Referenced by getTransDeriv(), MultipoleTCurvedConstRadius::setMaxOrder(), and MultipoleTCurvedVarRadius::setMaxOrder().
|
inline |
Get all terms of transverse profile.
Definition at line 157 of file MultipoleT.h.
References transProfile_m.
Referenced by getTransDeriv().
|
overridevirtualinherited |
Get element type std::string.
Implements ElementBase.
Reimplemented in Corrector, Cyclotron, Undulator, CCollimator, Degrader, Drift, FlexibleCollimator, Marker, Monitor, Multipole, OutputPlane, Probe, RBend, RBend3D, RFCavity, SBend, Septum, Solenoid, Source, Stripper, TravelingWave, Vacuum, and Bend2D.
Definition at line 95 of file Component.cpp.
References ANY.
|
inlineinherited |
Definition at line 579 of file ElementBase.h.
References ElementBase::getType(), and ElementBase::getTypeString().
Referenced by ParallelCyclotronTracker::execute(), ElementBase::getTypeString(), Vacuum::print(), and OpalBeamline::visit().

|
staticinherited |
Definition at line 240 of file ElementBase.cpp.
References ElementBase::elementTypeToString_s.
|
inline |
Get the variable radius of the magnet.
Definition at line 183 of file MultipoleT.h.
References variableRadius_m.
|
inlinevirtualinherited |
return the attached wake object if there is any
Definition at line 467 of file ElementBase.h.
References ElementBase::wake_m.
|
virtualinherited |
Reimplemented in PluginElement, Degrader, FlexibleCollimator, Monitor, RBend3D, RFCavity, Solenoid, Source, TravelingWave, and Vacuum.
Definition at line 87 of file Component.cpp.
References Component::online_m.
|
virtualinherited |
Reimplemented in Corrector, Bend2D, CCollimator, Degrader, FlexibleCollimator, Monitor, RBend3D, RFCavity, Solenoid, Source, TravelingWave, and Vacuum.
Definition at line 83 of file Component.cpp.
References Component::online_m.
Referenced by PluginElement::initialise().
|
virtualinherited |
Test for existence of an attribute.
Definition at line 200 of file ElementBase.cpp.
References ElementBase::getConstChannel().
Referenced by ParallelCyclotronTracker::visitSolenoid().

|
inlinevirtualinherited |
Definition at line 479 of file ElementBase.h.
References ElementBase::bgeometry_m.
|
inlinevirtualinherited |
Definition at line 487 of file ElementBase.h.
References ElementBase::parmatint_m.
|
inlinevirtualinherited |
Definition at line 471 of file ElementBase.h.
References ElementBase::wake_m.
|
overridevirtual |
Initialise the MultipoleT.
| bunch | -> Bunch the global bunch object |
| startField | -> Not used |
| endField | -> Not used |
Implements Component.
Definition at line 297 of file MultipoleT.cpp.
References implementation_, and Component::RefPartBunch_m.
| void MultipoleT::initialiseTimeDepencencies | ( | ) | const |
Definition at line 308 of file MultipoleT.cpp.
References AbstractTimeDependence::getTimeDependence(), scalingName_m, and scalingTD_m.
Referenced by accept(), and PyOpal::PyOpalObjectNS::PyOpalObject< C >::doSetup().

|
protected |
Definition at line 98 of file MultipoleT.cpp.
References abs(), horizontalApert_m, Attrib::Distribution::R, and verticalApert_m.
Referenced by apply().

|
protected |
Definition at line 103 of file MultipoleT.cpp.
References boundingBoxLength_m, fabs(), and Attrib::Distribution::R.
Referenced by apply().

|
inlineinherited |
Definition at line 598 of file ElementBase.h.
References ElementBase::elemedgeSet_m.
|
inlinevirtualinherited |
Reimplemented in Bend2D, Degrader, Monitor, Multipole, RBend3D, RFCavity, Solenoid, and TravelingWave.
Definition at line 530 of file ElementBase.h.
References ElementBase::getElementLength(), and ElementBase::isInsideTransverse().

|
protectedinherited |
Definition at line 287 of file ElementBase.cpp.
References abs(), ElementBase::aperture_m, CONIC_ELLIPTICAL, CONIC_RECTANGULAR, ELLIPTICAL, ElementBase::getEdgeToBegin(), ElementBase::getElementLength(), pow(), RECTANGULAR, and CoordinateSystemTrafo::transformTo().
Referenced by Undulator::apply(), Multipole::apply(), Component::apply(), Corrector::apply(), Component::applyToReferenceParticle(), Multipole::applyToReferenceParticle(), ElementBase::isInside(), Monitor::isInside(), Multipole::isInside(), RFCavity::isInside(), Solenoid::isInside(), TravelingWave::isInside(), and FlexibleCollimator::isStopped().

|
inlineinherited |
Definition at line 556 of file ElementBase.h.
References ElementBase::positionIsFixed.
Referenced by OpalRBend::update(), OpalRBend3D::update(), and OpalSBend::update().
|
inlineinherited |
Test if the element can be shared.
Definition at line 463 of file ElementBase.h.
References ElementBase::shareFlag.
Referenced by ElementBase::copyStructure(), and Sequence::updateList().
|
inlineinherited |
| double MultipoleT::localCartesianRotation | ( | ) |
Definition at line 327 of file MultipoleT.cpp.
References implementation_.
Definition at line 323 of file MultipoleT.cpp.
References implementation_.
|
virtualinherited |
Set sharable flag.
Reimplemented in TBeamline< T >.
Definition at line 253 of file ElementBase.cpp.
References ElementBase::shareFlag.
Referenced by OpalMarker::OpalMarker(), and Element::setShared().
|
virtualinherited |
Definition at line 91 of file Component.cpp.
References Component::online_m.
|
inlineinherited |
Definition at line 546 of file ElementBase.h.
References ElementBase::positionIsFixed.
Referenced by OpalRBend::update(), OpalRBend3D::update(), and OpalSBend::update().
|
virtualinherited |
Remove an existing attribute.
Definition at line 212 of file ElementBase.cpp.
References AttributeSet::removeAttribute(), and ElementBase::userAttribs.

|
inlineinherited |
Decrement the reference count.
Definition at line 88 of file RCObject.h.
References RCObject::refCount.
Rotate the frame to account for the rotation and entry angles.
| R | -> coordinate to rotate |
Apply two 2D rotation matrices to coordinate vector Rotate around central axis => skew fields Rotate azimuthally => entrance angle
Definition at line 78 of file MultipoleT.cpp.
References cos(), entranceAngle_m, Attrib::Distribution::R, rotation_m, and sin().
Referenced by toMagnetCoords().

|
inlineinherited |
Definition at line 561 of file ElementBase.h.
References ElementBase::actionRange_m, and ElementBase::elementEdge_m.
|
inlineinherited |
Definition at line 519 of file ElementBase.h.
References ElementBase::aperture_m.
Referenced by Component::Component(), Offset::operator=(), OpalElement::update(), OpalRBend::update(), OpalRBend3D::update(), OpalSBend::update(), and OpalSlit::update().
| void MultipoleT::setAperture | ( | const double & | vertAp, |
| const double & | horizAp | ||
| ) |
Set the aperture dimensions
This element only supports a rectangular aperture.
| vertAp | -> Vertical aperture length |
| horizAp | -> Horisontal aperture length |
Definition at line 258 of file MultipoleT.cpp.
References horizontalApert_m, and verticalApert_m.
|
virtualinherited |
Set value of an attribute.
Definition at line 217 of file ElementBase.cpp.
References endl(), ElementBase::getChannel(), and Channel::isSettable().
Referenced by ElementBase::update(), and OpalElement::updateUnknown().

| void MultipoleT::setBendAngle | ( | double | angle, |
| bool | variableRadius | ||
| ) |
Set the bending angle of the magnet.
Definition at line 240 of file MultipoleT.cpp.
References bendAngle_m, chooseImplementation(), and variableRadius_m.

|
virtualinherited |
attach a boundary geometry field to the element
Definition at line 270 of file ElementBase.cpp.
References ElementBase::bgeometry_m.
Referenced by OpalCavity::update(), OpalCyclotron::update(), and OpalDrift::update().
| void MultipoleT::setBoundingBoxLength | ( | double | boundingBoxLength | ) |
Set the bounding box size.
This controls the region for
| boundingBoxLength | -> Distance between centre and entrance |
Definition at line 263 of file MultipoleT.cpp.
References boundingBoxLength_m.
|
inlineinherited |
Definition at line 491 of file ElementBase.h.
References ElementBase::csTrafoGlobal2Local_m, and ElementBase::positionIsFixed.
Referenced by OpalElement::update(), OpalRBend::update(), OpalRBend3D::update(), and OpalSBend::update().
|
inherited |
Definition at line 278 of file ElementBase.cpp.
References ElementBase::actionRange_m, and ElementBase::elementEdge_m.
|
inlinevirtualinherited |
Reimplemented in Corrector, RFCavity, and BendBase.
Definition at line 228 of file Component.h.
|
overridevirtual |
Set the length of the magnet If straight-> Actual length If curved -> Arc length.
Reimplemented from ElementBase.
Definition at line 232 of file MultipoleT.cpp.
References implementation_, length_m, and ElementBase::setElementLength().
Referenced by OpalMultipoleT::update().

|
inlineinherited |
Access to ELEMEDGE attribute.
Definition at line 583 of file ElementBase.h.
References ElementBase::elemedgeSet_m, and ElementBase::elementPosition_m.
Referenced by OpalElement::update().
| void MultipoleT::setEntranceAngle | ( | double | entranceAngle | ) |
Set the entrance angle.
| entranceAngle | -> Entrance angle |
Definition at line 285 of file MultipoleT.cpp.
References entranceAngle_m.
| void MultipoleT::setEntryOffset | ( | double | offset | ) |
Set the offset of the entry point from the standard position.
| offset | positive for further away from the center |
Definition at line 289 of file MultipoleT.cpp.
References entryOffset_m.
|
inlineinherited |
Definition at line 225 of file Component.h.
References Component::exit_face_slope_m.
|
inlineinherited |
Definition at line 608 of file ElementBase.h.
References ElementBase::deleteOnTransverseExit_m.
Referenced by OpalElement::update().
| void MultipoleT::setFringeField | ( | const double & | s0, |
| const double & | lambda_left, | ||
| const 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] \]
| s0 | -> Centre field length and |
| lambda_left | -> Left end field length |
| lambda_right | -> Right end field length |
Definition at line 146 of file MultipoleT.cpp.
References fringeField_l, fringeField_r, implementation_, maxFOrder_m, endfieldmodel::Tanh::setLambda(), and endfieldmodel::Tanh::setX0().

| void MultipoleT::setMaxOrder | ( | size_t | orderZ, |
| size_t | orderX | ||
| ) |
Set the number of terms used in calculation of field components
.
| orderZ | -> Number of terms in expansion in z |
| orderX | -> Number of terms in expansion in x |
Definition at line 275 of file MultipoleT.cpp.
References implementation_, maxFOrder_m, and maxXOrder_m.
|
inlineinherited |
Definition at line 536 of file ElementBase.h.
References ElementBase::misalignment_m.
Referenced by OpalElement::update().
|
virtualinherited |
Set element name.
Definition at line 167 of file ElementBase.cpp.
References ElementBase::elementID, and name.
Referenced by Sequence::insertDrifts(), Offset::operator=(), and VariableRFCavity::operator=().
|
inherited |
Set output filename.
Definition at line 172 of file ElementBase.cpp.
References ElementBase::outputfn_m.
Referenced by OpalCCollimator::update(), OpalCyclotron::update(), OpalECollimator::update(), OpalFlexibleCollimator::update(), OpalMonitor::update(), OpalOutputPlane::update(), OpalPepperPot::update(), OpalProbe::update(), OpalRCollimator::update(), OpalSeptum::update(), OpalSlit::update(), OpalSource::update(), and OpalStripper::update().
|
virtualinherited |
Definition at line 274 of file ElementBase.cpp.
References ElementBase::parmatint_m.
Referenced by OpalCCollimator::update(), OpalDrift::update(), OpalECollimator::update(), OpalFlexibleCollimator::update(), OpalPepperPot::update(), OpalQuadrupole::update(), OpalRBend::update(), OpalRBend3D::update(), OpalRCollimator::update(), OpalSBend::update(), OpalSlit::update(), and OpalVacuum::update().
| void MultipoleT::setRotation | ( | double | rot | ) |
Set the angle of rotation of the magnet around its axis
To make skew components.
| rot | -> Angle of rotation |
Definition at line 281 of file MultipoleT.cpp.
References rotation_m.
|
inlineinherited |
Set rotation about z axis in bend frame.
Definition at line 569 of file ElementBase.h.
References ElementBase::rotationZAxis_m.
Referenced by OpalElement::update().
|
inline |
Definition at line 261 of file MultipoleT.h.
References scalingTD_m.
| void MultipoleT::setScalingName | ( | const std::string & | name | ) |
Definition at line 303 of file MultipoleT.cpp.
References name, and scalingName_m.
| void MultipoleT::setTransProfile | ( | const std::vector< double > & | profile | ) |
Set the the transverse profile.
| profile | -> Multipole field profile |
Definition at line 267 of file MultipoleT.cpp.
References transMaxOrder_m, and transProfile_m.
|
virtualinherited |
attach a wake field to the element
Definition at line 266 of file ElementBase.cpp.
References ElementBase::wake_m.
Referenced by OpalCavity::update(), OpalDrift::update(), OpalProbe::update(), OpalRBend::update(), OpalRBend3D::update(), OpalSBend::update(), OpalSeptum::update(), and OpalTravelingWave::update().
Rotate coordinates around the central axis of the magnet
Go to local Frenet-Serret coordinates
Definition at line 107 of file MultipoleT.cpp.
References implementation_, Attrib::Distribution::R, and rotateFrame().
Referenced by apply().

|
virtualinherited |
Track particle bunch.
Definition at line 71 of file Component.cpp.
References ElementBase::getName().
Referenced by Tracker::visitComponent().

|
virtualinherited |
Track a map.
Definition at line 77 of file Component.cpp.
References ElementBase::getName().

|
inherited |
Update element.
Definition at line 258 of file ElementBase.cpp.
References AttributeSet::begin(), AttributeSet::end(), and ElementBase::setAttribute().
Referenced by Monitor::driftToCorrectPositionAndSave().

|
privateinherited |
Definition at line 399 of file ElementBase.h.
Referenced by ElementBase::setActionRange(), and ElementBase::setCurrentSCoordinate().
|
protectedinherited |
Definition at line 369 of file ElementBase.h.
Referenced by ElementBase::getAperture(), ElementBase::getBoundingBoxInLabCoords(), Bend2D::getOutline(), Bend2D::getSurfaceMesh(), Bend2D::inMagnetCentralRegion(), Bend2D::inMagnetEntranceRegion(), Bend2D::inMagnetExitRegion(), ElementBase::isInsideTransverse(), ElementBase::setAperture(), Bend2D::setFieldCalcParam(), Bend2D::setupBendGeometry(), and Bend2D::setupFringeWidths().
|
protected |
Definition at line 289 of file MultipoleT.h.
Referenced by bends(), chooseImplementation(), getBendAngle(), and setBendAngle().
|
privateinherited |
Definition at line 390 of file ElementBase.h.
Referenced by ElementBase::ElementBase(), ElementBase::getBoundaryGeometry(), ElementBase::hasBoundaryGeometry(), and ElementBase::setBoundaryGeometry().
|
protected |
Definition at line 291 of file MultipoleT.h.
Referenced by getBoundingBoxLength(), insideBoundingBox(), and setBoundingBoxLength().
|
protectedinherited |
Definition at line 366 of file ElementBase.h.
Referenced by Monitor::applyToReferenceParticle(), ElementBase::getBoundingBoxInLabCoords(), Bend2D::getBoundingBoxInLabCoords(), ElementBase::getCSTrafoGlobal2Local(), and ElementBase::setCSTrafoGlobal2Local().
|
staticprotectedinherited |
Definition at line 187 of file Component.h.
Referenced by Component::Component().
|
privateinherited |
Definition at line 403 of file ElementBase.h.
Referenced by ElementBase::getFlagDeleteOnTransverseExit(), and ElementBase::setFlagDeleteOnTransverseExit().
|
protected |
|
privateinherited |
Definition at line 397 of file ElementBase.h.
Referenced by ElementBase::getElementPosition(), ElementBase::isElementPositionSet(), and ElementBase::setElementPosition().
|
protectedinherited |
Definition at line 371 of file ElementBase.h.
Referenced by Bend2D::getEffectiveCenter(), Bend2D::initialise(), Bend2D::print(), ElementBase::setActionRange(), ElementBase::setCurrentSCoordinate(), and Bend2D::setupBendGeometry().
|
privateinherited |
Definition at line 381 of file ElementBase.h.
Referenced by ElementBase::getName(), and ElementBase::setName().
|
privateinherited |
ELEMEDGE attribute.
Definition at line 396 of file ElementBase.h.
Referenced by ElementBase::getElementPosition(), and ElementBase::setElementPosition().
|
staticprivateinherited |
Definition at line 383 of file ElementBase.h.
Referenced by ElementBase::getTypeString().
|
protected |
Definition at line 287 of file MultipoleT.h.
Referenced by getEntranceAngle(), rotateFrame(), and setEntranceAngle().
|
protected |
Definition at line 292 of file MultipoleT.h.
Referenced by getEntryOffset(), and setEntryOffset().
|
protectedinherited |
Definition at line 189 of file Component.h.
Referenced by Component::setExitFaceSlope().
|
protected |
Definition at line 276 of file MultipoleT.h.
Referenced by getFringeDeriv(), getFringeField(), and setFringeField().
|
protected |
Definition at line 277 of file MultipoleT.h.
Referenced by getFringeDeriv(), getFringeField(), and setFringeField().
|
protected |
Definition at line 295 of file MultipoleT.h.
Referenced by getAperture(), insideAperture(), and setAperture().
|
protected |
Definition at line 302 of file MultipoleT.h.
Referenced by chooseImplementation(), getField(), getFnDerivS(), getFnDerivX(), getGeometry(), initialise(), localCartesianRotation(), localCartesianToOpalCartesian(), setElementLength(), setFringeField(), setMaxOrder(), and toMagnetCoords().
|
protected |
Magnet parameters.
Definition at line 286 of file MultipoleT.h.
Referenced by getLength(), and setElementLength().
|
protected |
Number of terms in z expansion used in calculating field components.
Definition at line 279 of file MultipoleT.h.
Referenced by getMaxFOrder(), setFringeField(), and setMaxOrder().
|
protected |
Highest order of polynomial expansions in x.
Definition at line 281 of file MultipoleT.h.
Referenced by getMaxXOrder(), and setMaxOrder().
|
protectedinherited |
Definition at line 367 of file ElementBase.h.
Referenced by ElementBase::getMisalignment(), and ElementBase::setMisalignment().
|
protectedinherited |
Definition at line 192 of file Component.h.
Referenced by Monitor::apply(), Source::apply(), Probe::doGoOffline(), Cyclotron::finalise(), PluginElement::finalise(), Bend2D::finalise(), FlexibleCollimator::finalise(), Multipole::finalise(), Ring::finalise(), Vacuum::finalise(), Component::goOffline(), PluginElement::goOffline(), Degrader::goOffline(), FlexibleCollimator::goOffline(), RBend3D::goOffline(), RFCavity::goOffline(), Solenoid::goOffline(), Source::goOffline(), Vacuum::goOffline(), Component::goOnline(), Corrector::goOnline(), Bend2D::goOnline(), CCollimator::goOnline(), Degrader::goOnline(), FlexibleCollimator::goOnline(), Monitor::goOnline(), RBend3D::goOnline(), RFCavity::goOnline(), Solenoid::goOnline(), Source::goOnline(), TravelingWave::goOnline(), Vacuum::goOnline(), Ring::initialise(), Septum::initialise(), Cyclotron::initialise(), Multipole::initialise(), Component::Online(), Degrader::~Degrader(), FlexibleCollimator::~FlexibleCollimator(), and Vacuum::~Vacuum().
|
privateinherited |
The name of the outputfile.
Definition at line 401 of file ElementBase.h.
Referenced by ElementBase::getOutputFN(), and ElementBase::setOutputFN().
|
privateinherited |
Definition at line 392 of file ElementBase.h.
Referenced by ElementBase::ElementBase(), ElementBase::getParticleMatterInteraction(), ElementBase::hasParticleMatterInteraction(), and ElementBase::setParticleMatterInteraction().
|
privateinherited |
Definition at line 394 of file ElementBase.h.
Referenced by ElementBase::fixPosition(), ElementBase::isPositioned(), ElementBase::releasePosition(), and ElementBase::setCSTrafoGlobal2Local().
|
mutableprivateinherited |
Definition at line 76 of file RCObject.h.
Referenced by RCObject::addReference(), RCObject::isShared(), and RCObject::removeReference().
|
protectedinherited |
Definition at line 191 of file Component.h.
Referenced by Corrector::apply(), Undulator::apply(), VerticalFFAMagnet::apply(), Bend2D::apply(), Degrader::apply(), FlexibleCollimator::apply(), Monitor::apply(), Multipole::apply(), apply(), RBend3D::apply(), RFCavity::apply(), SBend3D::apply(), ScalingFFAMagnet::apply(), Solenoid::apply(), Source::apply(), TravelingWave::apply(), VariableRFCavity::apply(), VariableRFCavityFringeField::apply(), Cyclotron::apply(), Degrader::applyToReferenceParticle(), Monitor::applyToReferenceParticle(), BendBase::calcDesignRadius(), BendBase::calcFieldAmplitude(), BendBase::calcGamma(), Bend2D::calculateBendAngle(), Bend2D::calculateRefTrajectory(), Monitor::driftToCorrectPositionAndSave(), VerticalFFAMagnet::finalise(), finalise(), Offset::finalise(), SBend3D::finalise(), ScalingFFAMagnet::finalise(), VariableRFCavity::finalise(), RBend::findChordLength(), Bend2D::findIdealBendParameters(), Corrector::goOnline(), Degrader::goOnline(), Degrader::initialise(), PluginElement::initialise(), Vacuum::initialise(), Corrector::initialise(), Cyclotron::initialise(), Undulator::initialise(), VerticalFFAMagnet::initialise(), Drift::initialise(), FlexibleCollimator::initialise(), Marker::initialise(), Monitor::initialise(), Multipole::initialise(), initialise(), Offset::initialise(), RBend3D::initialise(), RFCavity::initialise(), SBend3D::initialise(), ScalingFFAMagnet::initialise(), Solenoid::initialise(), Source::initialise(), TravelingWave::initialise(), VariableRFCavity::initialise(), VariableRFCavity::initNull(), Multipole::isFocusing(), MultipoleT(), CCollimator::print(), FlexibleCollimator::print(), SBend3D::SBend3D(), ScalingFFAMagnet::ScalingFFAMagnet(), Corrector::setDesignEnergy(), Ring::setRefPartBunch(), Bend2D::setupPusher(), RFCavity::trackOnAxisParticle(), RBend3D::trackRefParticleThrough(), Vacuum::updateParticleAttributes(), and VerticalFFAMagnet::VerticalFFAMagnet().
|
protected |
Definition at line 288 of file MultipoleT.h.
Referenced by getRotation(), rotateFrame(), and setRotation().
|
protectedinherited |
Definition at line 373 of file ElementBase.h.
Referenced by Bend2D::findIdealBendParameters(), ElementBase::getRotationAboutZ(), RBend3D::initialise(), Bend2D::print(), and ElementBase::setRotationAboutZ().
|
protected |
Definition at line 299 of file MultipoleT.h.
Referenced by getScalingName(), initialiseTimeDepencencies(), and setScalingName().
|
mutableprotected |
Definition at line 300 of file MultipoleT.h.
Referenced by apply(), initialiseTimeDepencencies(), and setScalingModel().
|
mutableprotectedinherited |
Definition at line 364 of file ElementBase.h.
Referenced by Beamline::Beamline(), ElementBase::isSharable(), and ElementBase::makeSharable().
|
protected |
Definition at line 284 of file MultipoleT.h.
Referenced by getTransDeriv(), getTransMaxOrder(), and setTransProfile().
|
protected |
List of transverse profile coefficients.
Definition at line 283 of file MultipoleT.h.
Referenced by bends(), getTransProfile(), and setTransProfile().
|
privateinherited |
Definition at line 386 of file ElementBase.h.
Referenced by ElementBase::getChannel(), and ElementBase::removeAttribute().
|
protected |
Definition at line 290 of file MultipoleT.h.
Referenced by chooseImplementation(), getVariableRadius(), and setBendAngle().
|
protected |
Assume rectangular aperture with these dimensions.
Definition at line 294 of file MultipoleT.h.
Referenced by getAperture(), insideAperture(), and setAperture().
|
privateinherited |
Definition at line 388 of file ElementBase.h.
Referenced by ElementBase::getWake(), ElementBase::hasWake(), and ElementBase::setWake().