OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
ThickTracker Class Reference

Track using thick-lens algorithm. More...

#include <ThickTracker.h>

Inheritance diagram for ThickTracker:
Collaboration diagram for ThickTracker:

Public Types

enum  {
  X , PX , Y , PY ,
  T , PT
}

Public Member Functions

 ThickTracker (const Beamline &bl, const PartData &data, bool revBeam, bool revTrack)
 Constructor.
 ThickTracker (const Beamline &bl, PartBunchBase< double, 3 > *bunch, Beam &beam, DataSink &ds, const PartData &data, bool revBeam, bool revTrack, const std::vector< unsigned long long > &maxSTEPS, double zstart, const std::vector< double > &zstop, const std::vector< double > &dt, const int &truncOrder)
 Constructor.
virtual ~ThickTracker ()
virtual void execute ()
 Apply the algorithm to the top-level beamline.
virtual void visitBeamline (const Beamline &)
 Apply the algorithm to a beam line.
virtual void visitCCollimator (const CCollimator &)
 Apply the algorithm to a collimator.
virtual void visitCorrector (const Corrector &)
 Apply the algorithm to a closed orbit corrector.
virtual void visitDegrader (const Degrader &)
 Apply the algorithm to a degrader.
virtual void visitDrift (const Drift &)
 Apply the algorithm to a drift space.
virtual void visitFlexibleCollimator (const FlexibleCollimator &)
 Apply the algorithm to a flexible collimator.
virtual void visitMarker (const Marker &)
 Apply the algorithm to a marker.
virtual void visitMonitor (const Monitor &)
 Apply the algorithm to a beam position monitor.
virtual void visitMultipole (const Multipole &)
 Apply the algorithm to a multipole.
virtual void visitProbe (const Probe &)
 Apply the algorithm to a probe.
virtual void visitRBend (const RBend &)
 Apply the algorithm to a rectangular bend.
virtual void visitRFCavity (const RFCavity &)
 Apply the algorithm to a RF cavity.
virtual void visitSBend (const SBend &)
 Apply the algorithm to a sector bend.
virtual void visitSeptum (const Septum &)
 Apply the algorithm to a septum.
virtual void visitSolenoid (const Solenoid &)
 Apply the algorithm to a solenoid.
virtual void visitTravelingWave (const TravelingWave &)
 Apply the algorithm to a traveling wave.
virtual void visitVacuum (const Vacuum &)
 Apply the algorithm to a vacuum space.
void prepareSections ()
const PartBunchBase< double, 3 > * getBunch () const
 Return the current bunch.
void addToBunch (const OpalParticle &)
 Add particle to bunch.
virtual void visitComponent (const Component &)
 Store the bunch.
virtual void setNumBunch (short)
 set total number of tracked bunches
virtual short getNumBunch ()
 get total number of tracked bunches
virtual void visitCyclotron (const Cyclotron &)
 Apply the algorithm to an cyclotron.
virtual void visitFlaggedElmPtr (const FlaggedElmPtr &)
 Apply the algorithm to a FlaggedElmPtr.
virtual void visitMultipoleT (const MultipoleT &)
 Apply the algorithm to to an arbitrary multipole.
virtual void visitOffset (const Offset &)
 Apply the algorithm to an offset (placement).
virtual void visitOutputPlane (const OutputPlane &)
 Apply the algorithm to an output plane.
virtual void visitRBend3D (const RBend3D &)
 Apply the algorithm to a rectangular bend.
virtual void visitRing (const Ring &)
 Apply the algorithm to a ring.
virtual void visitSBend3D (const SBend3D &)
 Apply the algorithm to a sector bend with 3D field map.
virtual void visitScalingFFAMagnet (const ScalingFFAMagnet &)
 Apply the algorithm to a scaling FFA magnet.
virtual void visitSource (const Source &)
 Apply the algorithm to a source.
virtual void visitStripper (const Stripper &)
 Apply the algorithm to a particle stripper.
virtual void visitVariableRFCavity (const VariableRFCavity &vcav)
 Apply the algorithm to a a variable RF cavity.
virtual void visitVariableRFCavityFringeField (const VariableRFCavityFringeField &vcav)
 Apply the algorithm to a a variable RF cavity with Fringe Field.
virtual void visitVerticalFFAMagnet (const VerticalFFAMagnet &)
 Apply the algorithm to a vertical FFA magnet.

Public Attributes

FieldList cavities_m
const BeamlineitsBeamline_m

Protected Member Functions

void applyDrift (double length)
 Apply a drift length.
void applyThinMultipole (const BMultipoleField &field, double factor)
void applyThinSBend (const BMultipoleField &field, double scale, double h)
void applyTransform (const Euclid3D &, double refLength=0.0)
 Apply a geometric transformation.
FTps< double, 2 > buildMultipoleVectorPotential2D (const BMultipoleField &)
 Construct vector potential for a Multipole.
FTps< double, 6 > buildMultipoleVectorPotential (const BMultipoleField &)
 Construct vector potential for a Multipole.
FTps< double, 2 > buildSBendVectorPotential2D (const BMultipoleField &, double h)
 Construct vector potential for a SBend.
FTps< double, 6 > buildSBendVectorPotential (const BMultipoleField &, double h)
 Construct vector potential for a SBend.

Protected Attributes

PartBunchBase< double, 3 > * itsBunch_m
 The bunch of particles to be tracked.
const PartData itsReference
 The reference information.
const BeamlineitsLine
bool back_beam
bool back_track
bool back_path
double flip_B
double flip_s

Private Types

typedef Hamiltonian::series_t series_t
typedef FVps< double, 6 > map_t
typedef FVector< double, 6 > particle_t
typedef std::tuple< series_t, std::size_t, double > tuple_t
typedef std::list< tuple_tbeamline_t
typedef FMatrix< double, 6, 6 > fMatrix_t

Private Member Functions

 ThickTracker ()=delete
 ThickTracker (const ThickTracker &)=delete
void operator= (const ThickTracker &)=delete
void throwElementError_m (std::string element)
void checkElementOrder_m ()
void fillGaps_m ()
 Fills undefined beam path with a Drift Space.
void track_m ()
particle_t particleToVector_m (const Vector_t &R, const Vector_t &P) const
void vectorToParticle_m (const particle_t &particle, Vector_t &R, Vector_t &P) const
void advanceParticles_m (const map_t &map)
void updateParticle_m (particle_t &particle, const map_t &map)
void dump_m ()
void update_m (const double &spos, const std::size_t &step)
void write_m (const map_t &map)
void concatenateMaps_m (const map_t &x, map_t &y)
void advanceDispersion_m (fMatrix_t tempMatrix, FMatrix< double, 1, 4 > initialVal, double pos)
 Writes Dispersion in X and Y plane.
void applyEntranceFringe (double edge, double curve, const BMultipoleField &field, double scale)
void applyExitFringe (double edge, double curve, const BMultipoleField &field, double scale)
virtual void applyDefault (const ElementBase &)

Private Attributes

Hamiltonian hamiltonian_m
Vector_t RefPartR_m
Vector_t RefPartP_m
DataSinkitsDataSink_m
OpalBeamline itsOpalBeamline_m
double zstart_m
 Start of beam line.
double zstop_m
 End of beam line.
double threshold_m
 Threshold for element overlaps and gaps.
beamline_t elements_m
 elements in beam line
CoordinateSystemTrafo referenceToLabCSTrafo_m
int truncOrder_m
 truncation order of map tracking
IpplTimings::TimerRef mapCreation_m
 creation of elements_m
IpplTimings::TimerRef mapCombination_m
 map accumulation along elements_m -> Transfermap
IpplTimings::TimerRef mapTracking_m
 track particles trough maps of elements_m
bool local_flip

Detailed Description

Track using thick-lens algorithm.

Definition at line 86 of file ThickTracker.h.

Member Typedef Documentation

◆ beamline_t

typedef std::list<tuple_t> ThickTracker::beamline_t
private

Definition at line 93 of file ThickTracker.h.

◆ fMatrix_t

typedef FMatrix<double, 6, 6> ThickTracker::fMatrix_t
private

Definition at line 94 of file ThickTracker.h.

◆ map_t

typedef FVps<double, 6> ThickTracker::map_t
private

Definition at line 90 of file ThickTracker.h.

◆ particle_t

typedef FVector<double, 6> ThickTracker::particle_t
private

Definition at line 91 of file ThickTracker.h.

◆ series_t

Definition at line 89 of file ThickTracker.h.

◆ tuple_t

typedef std::tuple<series_t, std::size_t, double> ThickTracker::tuple_t
private

Definition at line 92 of file ThickTracker.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited
Enumerator
PX 
PY 
PT 

Definition at line 39 of file AbstractTracker.h.

Constructor & Destructor Documentation

◆ ThickTracker() [1/4]

ThickTracker::ThickTracker ( const Beamline & bl,
const PartData & data,
bool revBeam,
bool revTrack )
explicit

Constructor.

Definition at line 41 of file ThickTracker.cpp.

References Beamline::getInitialDirection(), Beamline::getOrigin3D(), hamiltonian_m, CoordinateSystemTrafo::inverted(), itsDataSink_m, itsOpalBeamline_m, mapCombination_m, mapCreation_m, mapTracking_m, referenceToLabCSTrafo_m, RefPartP_m, RefPartR_m, threshold_m, Tracker::Tracker(), truncOrder_m, zstart_m, and zstop_m.

Referenced by operator=(), and ThickTracker().

Here is the call graph for this function:

◆ ThickTracker() [2/4]

ThickTracker::ThickTracker ( const Beamline & bl,
PartBunchBase< double, 3 > * bunch,
Beam & beam,
DataSink & ds,
const PartData & data,
bool revBeam,
bool revTrack,
const std::vector< unsigned long long > & maxSTEPS,
double zstart,
const std::vector< double > & zstop,
const std::vector< double > & dt,
const int & truncOrder )
explicit

Constructor.

Definition at line 64 of file ThickTracker.cpp.

References Beamline::getInitialDirection(), Beamline::getOrigin3D(), hamiltonian_m, CoordinateSystemTrafo::inverted(), itsDataSink_m, itsOpalBeamline_m, mapCombination_m, mapCreation_m, mapTracking_m, referenceToLabCSTrafo_m, RefPartP_m, RefPartR_m, threshold_m, Tps< T >::truncOrder, Tracker::Tracker(), truncOrder_m, zstart_m, and zstop_m.

Here is the call graph for this function:

◆ ~ThickTracker()

ThickTracker::~ThickTracker ( )
virtual

Definition at line 100 of file ThickTracker.cpp.

◆ ThickTracker() [3/4]

ThickTracker::ThickTracker ( )
privatedelete

◆ ThickTracker() [4/4]

ThickTracker::ThickTracker ( const ThickTracker & )
privatedelete

References ThickTracker().

Here is the call graph for this function:

Member Function Documentation

◆ addToBunch()

void Tracker::addToBunch ( const OpalParticle & part)
inherited

Add particle to bunch.

Definition at line 107 of file Tracker.cpp.

References itsBunch_m.

◆ advanceDispersion_m()

void ThickTracker::advanceDispersion_m ( fMatrix_t tempMatrix,
FMatrix< double, 1, 4 > initialVal,
double pos )
private

Writes Dispersion in X and Y plane.

Tracks Dispersion along beam line writes it in .dispersion file.

\[ \begin{pmatrix} \eta_{x} \\ \eta_{p_x} \end{pmatrix}_{s_1} = \begin{pmatrix} R_{11} & R_{12} \\ R_{21} & R_{22} \end{pmatrix} \cdot \begin{pmatrix} \eta_{x} \\ \eta_{p_x} \end{pmatrix}_{s_0} + \begin{pmatrix} R_{16} \\ R_{26} \end{pmatrix} \]

Parameters
tempMatrixaccumulated Transfer map \(R\) at pos
initialValinitial Dispersion { \(\eta_{x0},\, \eta_{p_x0},\, \eta_{y0},\, \eta_{p_y0} \)}
posposition of tracking

used formula:

\[\begin{pmatrix}\eta_{x} \\ \eta_{p_x}\end{pmatrix}_{s_1} = \begin{pmatrix} R_{11} & R_{12} \\ R_{21} & R_{22} \end{pmatrix} \cdot \begin{pmatrix} \eta_{x} \\ \eta_{p_x} \end{pmatrix}_{s_0} + \begin{pmatrix} R_{16} \\ R_{26} \end{pmatrix}\]

Definition at line 502 of file ThickTracker.cpp.

References OpalData::getInputBasename(), OpalData::getInstance(), Tracker::itsBunch_m, and IpplInfo::myNode().

Referenced by track_m().

Here is the call graph for this function:

◆ advanceParticles_m()

void ThickTracker::advanceParticles_m ( const map_t & map)
private

Advances itsBunch_m trough map

Parameters
mapMap of slice

Definition at line 426 of file ThickTracker.cpp.

References Tracker::itsBunch_m, particleToVector_m(), RefPartP_m, RefPartR_m, updateParticle_m(), and vectorToParticle_m().

Referenced by track_m().

Here is the call graph for this function:

◆ applyDefault()

◆ applyDrift()

void Tracker::applyDrift ( double length)
protectedinherited

Apply a drift length.

Definition at line 122 of file Tracker.cpp.

References dot(), OpalParticle::getP(), OpalParticle::getX(), OpalParticle::getY(), OpalParticle::getZ(), itsBunch_m, AbstractTracker::itsReference, OpalParticle::setX(), OpalParticle::setY(), and OpalParticle::setZ().

Here is the call graph for this function:

◆ applyEntranceFringe()

void ThickTracker::applyEntranceFringe ( double edge,
double curve,
const BMultipoleField & field,
double scale )
private

:TODO: Fringe fields for entrance of SBEND.

Parameters
edge
curve
field
scale

◆ applyExitFringe()

void ThickTracker::applyExitFringe ( double edge,
double curve,
const BMultipoleField & field,
double scale )
private

:TODO: Fringe fields for exit of SBEND.

Parameters
edge
curve
field
scale

◆ applyThinMultipole()

void Tracker::applyThinMultipole ( const BMultipoleField & field,
double factor )
protectedinherited

Definition at line 140 of file Tracker.cpp.

References OpalParticle::getPx(), OpalParticle::getPy(), OpalParticle::getX(), OpalParticle::getY(), itsBunch_m, BMultipoleField::normal(), BMultipoleField::order(), OpalParticle::setPx(), OpalParticle::setPy(), and BMultipoleField::skew().

Here is the call graph for this function:

◆ applyThinSBend()

void Tracker::applyThinSBend ( const BMultipoleField & field,
double scale,
double h )
protectedinherited

Definition at line 169 of file Tracker.cpp.

References buildSBendVectorPotential2D(), FTps< T, N >::derivative(), FTps< T, N >::evaluate(), OpalParticle::getPx(), OpalParticle::getPy(), OpalParticle::getX(), OpalParticle::getY(), itsBunch_m, OpalParticle::setPx(), and OpalParticle::setPy().

Here is the call graph for this function:

◆ applyTransform()

void Tracker::applyTransform ( const Euclid3D & euclid,
double refLength = 0.0 )
protectedinherited

Apply a geometric transformation.

Definition at line 189 of file Tracker.cpp.

References OpalParticle::getPx(), OpalParticle::getPy(), OpalParticle::getPz(), Euclid3D::getX(), OpalParticle::getX(), Euclid3D::getY(), OpalParticle::getY(), Euclid3D::getZ(), OpalParticle::getZ(), Euclid3D::isIdentity(), itsBunch_m, AbstractTracker::itsReference, Euclid3D::M(), OpalParticle::setPx(), OpalParticle::setPy(), OpalParticle::setX(), OpalParticle::setY(), and OpalParticle::setZ().

Here is the call graph for this function:

◆ buildMultipoleVectorPotential()

Series Tracker::buildMultipoleVectorPotential ( const BMultipoleField & field)
protectedinherited

Construct vector potential for a Multipole.

Definition at line 252 of file Tracker.cpp.

References FTps< T, N >::getMaxOrder(), FTps< double, 6 >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setTruncOrder(), BMultipoleField::skew(), AbstractTracker::X, and AbstractTracker::Y.

Here is the call graph for this function:

◆ buildMultipoleVectorPotential2D()

Series2 Tracker::buildMultipoleVectorPotential2D ( const BMultipoleField & field)
protectedinherited

Construct vector potential for a Multipole.

Definition at line 225 of file Tracker.cpp.

References FTps< T, N >::getMaxOrder(), FTps< double, 2 >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setTruncOrder(), and BMultipoleField::skew().

Here is the call graph for this function:

◆ buildSBendVectorPotential()

Series Tracker::buildSBendVectorPotential ( const BMultipoleField & field,
double h )
protectedinherited

Construct vector potential for a SBend.

Definition at line 332 of file Tracker.cpp.

References FTps< T, N >::derivative(), FTps< T, N >::getMaxOrder(), FTps< double, 6 >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setTruncOrder(), BMultipoleField::skew(), AbstractTracker::X, and AbstractTracker::Y.

Here is the call graph for this function:

◆ buildSBendVectorPotential2D()

Series2 Tracker::buildSBendVectorPotential2D ( const BMultipoleField & field,
double h )
protectedinherited

Construct vector potential for a SBend.

Definition at line 280 of file Tracker.cpp.

References FTps< T, N >::derivative(), FTps< T, N >::getMaxOrder(), FTps< double, 2 >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setTruncOrder(), BMultipoleField::skew(), and AbstractTracker::X.

Referenced by applyThinSBend().

Here is the call graph for this function:

◆ checkElementOrder_m()

void ThickTracker::checkElementOrder_m ( )
private

Tests the order of the elements in the beam line according to their position

Definition at line 237 of file ThickTracker.cpp.

References ANY, elements_m, itsOpalBeamline_m, threshold_m, and zstart_m.

Referenced by execute().

◆ concatenateMaps_m()

void ThickTracker::concatenateMaps_m ( const map_t & x,
map_t & y )
private

Concatenate map x and y

\[ y = x \circ y \]

Parameters
x
yis result

Definition at line 485 of file ThickTracker.cpp.

References mapCombination_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), FVps< T, N >::truncate(), and truncOrder_m.

Referenced by track_m().

Here is the call graph for this function:

◆ dump_m()

void ThickTracker::dump_m ( )
private

Dumps bunch in .stat or .h5 files

Definition at line 551 of file ThickTracker.cpp.

References endl(), gmsg, Tracker::itsBunch_m, itsDataSink_m, itsOpalBeamline_m, Options::psDumpFreq, referenceToLabCSTrafo_m, RefPartP_m, RefPartR_m, Options::statDumpFreq, and Units::Vpm2MVpm.

Referenced by track_m().

Here is the call graph for this function:

◆ execute()

void ThickTracker::execute ( )
virtual

Apply the algorithm to the top-level beamline.

Algorithm for Thick Map-Tracking.

Reimplemented from DefaultVisitor.

Definition at line 191 of file ThickTracker.cpp.

References OpalData::APPEND, checkElementOrder_m(), endl(), euclidean_norm(), fillGaps_m(), OpalData::getInstance(), gmsg, Tracker::itsBunch_m, prepareSections(), RefPartP_m, RefPartR_m, OpalData::setGlobalPhaseShift(), OpalData::setInPrepState(), OpalData::setOpenMode(), track_m(), truncOrder_m, and zstart_m.

Here is the call graph for this function:

◆ fillGaps_m()

void ThickTracker::fillGaps_m ( )
private

Fills undefined beam path with a Drift Space.

Inserts Drift maps in undefined beam line sections

\[H_{Drift}= \frac{\delta}{\beta_0} - \sqrt{\left(\frac{1}{\beta_0} + \delta \right)^2 -p_x^2 -p_y^2 - \frac{1}{\left(\beta_0 \gamma_0\right)^2 } } \]

Definition at line 267 of file ThickTracker.cpp.

References ANY, elements_m, hamiltonian_m, itsOpalBeamline_m, AbstractTracker::itsReference, threshold_m, zstart_m, and zstop_m.

Referenced by execute().

◆ getBunch()

const PartBunchBase< double, 3 > * Tracker::getBunch ( ) const
inherited

Return the current bunch.

Definition at line 102 of file Tracker.cpp.

References itsBunch_m.

◆ getNumBunch()

virtual short Tracker::getNumBunch ( )
inlinevirtualinherited

get total number of tracked bunches

Definition at line 117 of file Tracker.h.

◆ operator=()

void ThickTracker::operator= ( const ThickTracker & )
privatedelete

References ThickTracker().

Here is the call graph for this function:

◆ particleToVector_m()

ThickTracker::particle_t ThickTracker::particleToVector_m ( const Vector_t & R,
const Vector_t & P ) const
private

Definition at line 377 of file ThickTracker.cpp.

Referenced by advanceParticles_m().

◆ prepareSections()

void ThickTracker::prepareSections ( )

Definition at line 123 of file ThickTracker.cpp.

References Tracker::itsBeamline_m, and itsOpalBeamline_m.

Referenced by execute().

◆ setNumBunch()

virtual void Tracker::setNumBunch ( short )
inlinevirtualinherited

set total number of tracked bunches

Definition at line 114 of file Tracker.h.

◆ throwElementError_m()

void ThickTracker::throwElementError_m ( std::string element)
inlineprivate

◆ track_m()

void ThickTracker::track_m ( )
private

Tracks itsBunch_m trough beam line

Definition at line 303 of file ThickTracker.cpp.

References advanceDispersion_m(), advanceParticles_m(), concatenateMaps_m(), dump_m(), elements_m, ExpMap(), Tracker::itsBunch_m, FVps< T, N >::linearTerms(), mapTracking_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), FVps< T, N >::truncate(), truncOrder_m, update_m(), write_m(), and zstart_m.

Referenced by execute().

Here is the call graph for this function:

◆ update_m()

void ThickTracker::update_m ( const double & spos,
const std::size_t & step )
private

Updates itsBunch_m

Parameters
sposposition of tracking
stepstepsize of applied map

Definition at line 601 of file ThickTracker.cpp.

References Physics::c, and Tracker::itsBunch_m.

Referenced by track_m().

◆ updateParticle_m()

void ThickTracker::updateParticle_m ( particle_t & particle,
const map_t & map )
private

Applies map on particle

Parameters
particletracked particle
mapMap of slice

Definition at line 451 of file ThickTracker.cpp.

References Tracker::itsBunch_m.

Referenced by advanceParticles_m().

◆ vectorToParticle_m()

void ThickTracker::vectorToParticle_m ( const particle_t & particle,
Vector_t & R,
Vector_t & P ) const
private

Definition at line 389 of file ThickTracker.cpp.

Referenced by advanceParticles_m().

◆ visitBeamline()

void ThickTracker::visitBeamline ( const Beamline & bl)
virtual

Apply the algorithm to a beam line.

Reimplemented from DefaultVisitor.

Definition at line 105 of file ThickTracker.cpp.

References endl(), TBeamline< T >::getInitialDirection(), TBeamline< T >::getOrigin3D(), TBeamline< T >::getRelativeFlag(), gmsg, TBeamline< T >::iterate(), itsOpalBeamline_m, OpalBeamline::merge(), and OpalBeamline::swap().

Here is the call graph for this function:

◆ visitCCollimator()

void ThickTracker::visitCCollimator ( const CCollimator & )
inlinevirtual

Apply the algorithm to a collimator.

Reimplemented from DefaultVisitor.

Definition at line 338 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitComponent()

void Tracker::visitComponent ( const Component & comp)
virtualinherited

Store the bunch.

Apply the algorithm to an arbitrary component.

Reimplemented from DefaultVisitor.

Definition at line 117 of file Tracker.cpp.

References DefaultVisitor::back_beam, DefaultVisitor::back_track, itsBunch_m, AbstractTracker::itsReference, and Component::trackBunch().

Here is the call graph for this function:

◆ visitCorrector()

void ThickTracker::visitCorrector ( const Corrector & )
inlinevirtual

Apply the algorithm to a closed orbit corrector.

Reimplemented from DefaultVisitor.

Definition at line 344 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitCyclotron()

void DefaultVisitor::visitCyclotron ( const Cyclotron & cyc)
virtualinherited

Apply the algorithm to an cyclotron.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 97 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitDegrader()

void ThickTracker::visitDegrader ( const Degrader & )
inlinevirtual

Apply the algorithm to a degrader.

Reimplemented from DefaultVisitor.

Definition at line 350 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitDrift()

void ThickTracker::visitDrift ( const Drift & drift)
inlinevirtual

Apply the algorithm to a drift space.

Reimplemented from DefaultVisitor.

Definition at line 356 of file ThickTracker.h.

References elements_m, ElementBase::getElementLength(), Drift::getNSlices(), hamiltonian_m, Tracker::itsBunch_m, itsOpalBeamline_m, and AbstractTracker::itsReference.

Here is the call graph for this function:

◆ visitFlaggedElmPtr()

void DefaultVisitor::visitFlaggedElmPtr ( const FlaggedElmPtr & fep)
virtualinherited

Apply the algorithm to a FlaggedElmPtr.

Implements BeamlineVisitor.

Reimplemented in Flagger, RangeSelector, and Replacer.

Definition at line 220 of file DefaultVisitor.cpp.

References ElementBase::accept(), ElmPtr::getElement(), FlaggedElmPtr::getReflectionFlag(), and local_flip.

Referenced by RangeSelector::handleBeamline(), RangeSelector::handleElement(), Flagger::visitFlaggedElmPtr(), and Replacer::visitFlaggedElmPtr().

Here is the call graph for this function:

◆ visitFlexibleCollimator()

void ThickTracker::visitFlexibleCollimator ( const FlexibleCollimator & )
inlinevirtual

Apply the algorithm to a flexible collimator.

Reimplemented from DefaultVisitor.

Definition at line 369 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitMarker()

void ThickTracker::visitMarker ( const Marker & )
inlinevirtual

Apply the algorithm to a marker.

Reimplemented from DefaultVisitor.

Definition at line 375 of file ThickTracker.h.

◆ visitMonitor()

void ThickTracker::visitMonitor ( const Monitor & )
inlinevirtual

Apply the algorithm to a beam position monitor.

Reimplemented from DefaultVisitor.

Definition at line 381 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitMultipole()

void ThickTracker::visitMultipole ( const Multipole & mult)
inlinevirtual

Apply the algorithm to a multipole.

Reimplemented from DefaultVisitor.

Definition at line 387 of file ThickTracker.h.

References Physics::c, elements_m, ElementBase::getElementLength(), Multipole::getField(), BMultipoleField::getNormalComponent(), Multipole::getNSlices(), hamiltonian_m, Tracker::itsBunch_m, itsOpalBeamline_m, and AbstractTracker::itsReference.

Here is the call graph for this function:

◆ visitMultipoleT()

void DefaultVisitor::visitMultipoleT ( const MultipoleT & multT)
virtualinherited

Apply the algorithm to to an arbitrary multipole.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker, and ParallelTTracker.

Definition at line 125 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitOffset()

void DefaultVisitor::visitOffset ( const Offset & off)
virtualinherited

Apply the algorithm to an offset (placement).

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 129 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitOutputPlane()

void DefaultVisitor::visitOutputPlane ( const OutputPlane & out)
virtualinherited

Apply the algorithm to an output plane.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 133 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitProbe()

void ThickTracker::visitProbe ( const Probe & )
inlinevirtual

Apply the algorithm to a probe.

Reimplemented from DefaultVisitor.

Definition at line 407 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitRBend()

void ThickTracker::visitRBend ( const RBend & )
inlinevirtual

Apply the algorithm to a rectangular bend.

Reimplemented from DefaultVisitor.

Definition at line 413 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitRBend3D()

void DefaultVisitor::visitRBend3D ( const RBend3D & bend)
virtualinherited

Apply the algorithm to a rectangular bend.

Reimplemented from BeamlineVisitor.

Reimplemented in ParallelTTracker.

Definition at line 145 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitRFCavity()

void ThickTracker::visitRFCavity ( const RFCavity & )
inlinevirtual

Apply the algorithm to a RF cavity.

Reimplemented from DefaultVisitor.

Definition at line 419 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitRing()

void DefaultVisitor::visitRing ( const Ring & ring)
virtualinherited

Apply the algorithm to a ring.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 153 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitSBend()

void ThickTracker::visitSBend ( const SBend & bend)
inlinevirtual

Apply the algorithm to a sector bend.

Reimplemented from DefaultVisitor.

Definition at line 425 of file ThickTracker.h.

References Physics::c, elements_m, SBend::getB(), BendBase::getDesignEnergy(), ElementBase::getElementLength(), BendBase::getEntranceAngle(), Bend2D::getExitAngle(), Bend2D::getNSlices(), hamiltonian_m, Tracker::itsBunch_m, itsOpalBeamline_m, and AbstractTracker::itsReference.

Here is the call graph for this function:

◆ visitSBend3D()

void DefaultVisitor::visitSBend3D ( const SBend3D & bend)
virtualinherited

Apply the algorithm to a sector bend with 3D field map.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 161 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitScalingFFAMagnet()

void DefaultVisitor::visitScalingFFAMagnet ( const ScalingFFAMagnet & spiral)
virtualinherited

Apply the algorithm to a scaling FFA magnet.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 165 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitSeptum()

void ThickTracker::visitSeptum ( const Septum & )
inlinevirtual

Apply the algorithm to a septum.

Reimplemented from DefaultVisitor.

Definition at line 477 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitSolenoid()

void ThickTracker::visitSolenoid ( const Solenoid & )
inlinevirtual

Apply the algorithm to a solenoid.

Reimplemented from DefaultVisitor.

Definition at line 483 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitSource()

void DefaultVisitor::visitSource ( const Source & sou)
virtualinherited

Apply the algorithm to a source.

Implements BeamlineVisitor.

Reimplemented in ParallelTTracker.

Definition at line 177 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitStripper()

void DefaultVisitor::visitStripper ( const Stripper & stripper)
virtualinherited

Apply the algorithm to a particle stripper.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 181 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitTravelingWave()

void ThickTracker::visitTravelingWave ( const TravelingWave & )
inlinevirtual

Apply the algorithm to a traveling wave.

Reimplemented from DefaultVisitor.

Definition at line 489 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitVacuum()

void ThickTracker::visitVacuum ( const Vacuum & )
inlinevirtual

Apply the algorithm to a vacuum space.

Reimplemented from DefaultVisitor.

Definition at line 495 of file ThickTracker.h.

References throwElementError_m().

Here is the call graph for this function:

◆ visitVariableRFCavity()

void DefaultVisitor::visitVariableRFCavity ( const VariableRFCavity & vcav)
virtualinherited

Apply the algorithm to a a variable RF cavity.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 199 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitVariableRFCavityFringeField()

void DefaultVisitor::visitVariableRFCavityFringeField ( const VariableRFCavityFringeField & vcav)
virtualinherited

Apply the algorithm to a a variable RF cavity with Fringe Field.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 203 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ visitVerticalFFAMagnet()

void DefaultVisitor::visitVerticalFFAMagnet ( const VerticalFFAMagnet & mag)
virtualinherited

Apply the algorithm to a vertical FFA magnet.

Implements BeamlineVisitor.

Reimplemented in ParallelCyclotronTracker.

Definition at line 208 of file DefaultVisitor.cpp.

References applyDefault().

Here is the call graph for this function:

◆ write_m()

void ThickTracker::write_m ( const map_t & map)
private

Writes map (Transfermap) in .map file @map text for .map file

Definition at line 400 of file ThickTracker.cpp.

References OpalData::getInputBasename(), OpalData::getInstance(), and IpplInfo::myNode().

Referenced by track_m().

Here is the call graph for this function:

Member Data Documentation

◆ back_beam

bool DefaultVisitor::back_beam
protectedinherited

Definition at line 155 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), execute(), and Tracker::visitComponent().

◆ back_path

bool DefaultVisitor::back_path
protectedinherited

Definition at line 157 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ back_track

◆ cavities_m

FieldList Tracker::cavities_m
inherited

Definition at line 120 of file Tracker.h.

◆ elements_m

beamline_t ThickTracker::elements_m
private

elements in beam line

Definition at line 326 of file ThickTracker.h.

Referenced by checkElementOrder_m(), fillGaps_m(), track_m(), visitDrift(), visitMultipole(), and visitSBend().

◆ flip_B

double DefaultVisitor::flip_B
protectedinherited

Definition at line 160 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ flip_s

double DefaultVisitor::flip_s
protectedinherited

Definition at line 161 of file DefaultVisitor.h.

Referenced by DefaultVisitor().

◆ hamiltonian_m

Hamiltonian ThickTracker::hamiltonian_m
private

◆ itsBeamline_m

const Beamline& Tracker::itsBeamline_m
inherited

◆ itsBunch_m

PartBunchBase<double, 3>* Tracker::itsBunch_m
protectedinherited

The bunch of particles to be tracked.

Definition at line 151 of file Tracker.h.

Referenced by addToBunch(), ThickTracker::advanceDispersion_m(), ThickTracker::advanceParticles_m(), applyDrift(), ParallelTTracker::applyFractionalStep(), ParallelCyclotronTracker::applyPluginElements(), applyThinMultipole(), applyThinSBend(), applyTransform(), ParallelTTracker::autophaseCavities(), ParallelCyclotronTracker::bgf_main_collision_test(), ParallelCyclotronTracker::borisExternalFields(), ParallelCyclotronTracker::bunchDumpPhaseSpaceData(), ParallelCyclotronTracker::bunchDumpStatData(), ParallelCyclotronTracker::bunchMode_m(), ParallelCyclotronTracker::calcMeanP(), ParallelCyclotronTracker::calcMeanR(), ParallelTTracker::changeDT(), ParallelCyclotronTracker::checkFileMomentum(), ParallelCyclotronTracker::checkNumPart(), ParallelTTracker::computeExternalFields(), ParallelTTracker::computeParticleMatterInteraction(), ParallelCyclotronTracker::computePathLengthUpdate(), ParallelTTracker::computeSpaceChargeFields(), ParallelCyclotronTracker::computeSpaceChargeFields_m(), ParallelTTracker::computeWakefield(), ParallelCyclotronTracker::deleteParticle(), ParallelTTracker::doBinaryRepartition(), ThickTracker::dump_m(), ParallelTTracker::dumpStats(), ParallelTTracker::emitParticles(), ParallelTTracker::evenlyDistributeParticles(), ParallelCyclotronTracker::execute(), ParallelTTracker::execute(), ThickTracker::execute(), ParallelCyclotronTracker::finalizeTracking_m(), ParallelTTracker::findStartPosition(), ParallelCyclotronTracker::gapCrossKick_m(), ParallelCyclotronTracker::GenericTracker(), getBunch(), ParallelCyclotronTracker::getFieldsAtPoint(), ParallelCyclotronTracker::globalToLocal(), ParallelTTracker::hasEndOfLineReached(), ParallelCyclotronTracker::initDistInGlobalFrame(), ParallelCyclotronTracker::initializeTracking_m(), ParallelCyclotronTracker::initTrackOrbitFile(), ParallelCyclotronTracker::injectBunch(), ParallelCyclotronTracker::isMultiBunch(), ParallelCyclotronTracker::kick(), ParallelTTracker::kickParticles(), ParallelCyclotronTracker::localToGlobal(), ParallelCyclotronTracker::MtsTracker(), ParallelTTracker::prepareEmission(), ParallelCyclotronTracker::push(), ParallelTTracker::pushParticles(), ParallelCyclotronTracker::repartition(), ParallelCyclotronTracker::RFkick(), ParallelCyclotronTracker::rotateAroundX(), ParallelCyclotronTracker::rotateAroundZ(), ParallelCyclotronTracker::rotateWithQuaternion(), ParallelCyclotronTracker::saveInjectValues(), ParallelTTracker::selectDT(), ParallelCyclotronTracker::seoMode_m(), ParallelTTracker::setTime(), ParallelCyclotronTracker::setTimeStep(), ParallelCyclotronTracker::singleMode_m(), ParallelCyclotronTracker::singleParticleDump(), ParallelTTracker::timeIntegration2(), ThickTracker::track_m(), Tracker(), ParallelTTracker::transformBunch(), ParallelCyclotronTracker::update_m(), ThickTracker::update_m(), ThickTracker::updateParticle_m(), ParallelCyclotronTracker::updatePathLength(), ParallelTTracker::updateReferenceParticle(), ParallelTTracker::updateRefToLabCSTrafo(), ParallelCyclotronTracker::updateTime(), ParallelCyclotronTracker::visitCCollimator(), ParallelTTracker::visitCCollimator(), visitComponent(), ParallelTTracker::visitCorrector(), ParallelCyclotronTracker::visitCyclotron(), ParallelTTracker::visitDegrader(), ParallelTTracker::visitDrift(), ThickTracker::visitDrift(), ParallelTTracker::visitFlexibleCollimator(), ParallelTTracker::visitMarker(), ParallelTTracker::visitMonitor(), ParallelTTracker::visitMultipole(), ThickTracker::visitMultipole(), ParallelTTracker::visitMultipoleT(), ParallelCyclotronTracker::visitOutputPlane(), ParallelCyclotronTracker::visitProbe(), ParallelTTracker::visitProbe(), ParallelTTracker::visitRBend(), ParallelTTracker::visitRBend3D(), ParallelCyclotronTracker::visitRFCavity(), ParallelTTracker::visitRFCavity(), ParallelCyclotronTracker::visitRing(), ParallelTTracker::visitSBend(), ThickTracker::visitSBend(), ParallelCyclotronTracker::visitSeptum(), ParallelTTracker::visitSeptum(), ParallelTTracker::visitSolenoid(), ParallelTTracker::visitSource(), ParallelCyclotronTracker::visitStripper(), ParallelTTracker::visitTravelingWave(), ParallelCyclotronTracker::visitVacuum(), ParallelTTracker::visitVacuum(), and ParallelTTracker::writePhaseSpace().

◆ itsDataSink_m

DataSink* ThickTracker::itsDataSink_m
private

Definition at line 319 of file ThickTracker.h.

Referenced by dump_m(), ThickTracker(), and ThickTracker().

◆ itsLine

const Beamline& DefaultVisitor::itsLine
protectedinherited

Definition at line 152 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), and execute().

◆ itsOpalBeamline_m

◆ itsReference

◆ local_flip

bool DefaultVisitor::local_flip
privateinherited

Definition at line 176 of file DefaultVisitor.h.

Referenced by DefaultVisitor(), execute(), visitBeamline(), and visitFlaggedElmPtr().

◆ mapCombination_m

IpplTimings::TimerRef ThickTracker::mapCombination_m
private

map accumulation along elements_m -> Transfermap

Definition at line 333 of file ThickTracker.h.

Referenced by concatenateMaps_m(), ThickTracker(), and ThickTracker().

◆ mapCreation_m

IpplTimings::TimerRef ThickTracker::mapCreation_m
private

creation of elements_m

Definition at line 332 of file ThickTracker.h.

Referenced by ThickTracker(), and ThickTracker().

◆ mapTracking_m

IpplTimings::TimerRef ThickTracker::mapTracking_m
private

track particles trough maps of elements_m

Definition at line 334 of file ThickTracker.h.

Referenced by ThickTracker(), ThickTracker(), and track_m().

◆ referenceToLabCSTrafo_m

CoordinateSystemTrafo ThickTracker::referenceToLabCSTrafo_m
private

Definition at line 328 of file ThickTracker.h.

Referenced by dump_m(), ThickTracker(), and ThickTracker().

◆ RefPartP_m

Vector_t ThickTracker::RefPartP_m
private

Definition at line 317 of file ThickTracker.h.

Referenced by advanceParticles_m(), dump_m(), execute(), ThickTracker(), and ThickTracker().

◆ RefPartR_m

Vector_t ThickTracker::RefPartR_m
private

Definition at line 316 of file ThickTracker.h.

Referenced by advanceParticles_m(), dump_m(), execute(), ThickTracker(), and ThickTracker().

◆ threshold_m

double ThickTracker::threshold_m
private

Threshold for element overlaps and gaps.

Definition at line 325 of file ThickTracker.h.

Referenced by checkElementOrder_m(), fillGaps_m(), ThickTracker(), and ThickTracker().

◆ truncOrder_m

int ThickTracker::truncOrder_m
private

truncation order of map tracking

Definition at line 330 of file ThickTracker.h.

Referenced by concatenateMaps_m(), execute(), ThickTracker(), ThickTracker(), and track_m().

◆ zstart_m

double ThickTracker::zstart_m
private

Start of beam line.

Definition at line 323 of file ThickTracker.h.

Referenced by checkElementOrder_m(), execute(), fillGaps_m(), ThickTracker(), ThickTracker(), and track_m().

◆ zstop_m

double ThickTracker::zstop_m
private

End of beam line.

Definition at line 324 of file ThickTracker.h.

Referenced by fillGaps_m(), ThickTracker(), and ThickTracker().


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