OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
Tracker Class Reference

Track particles or bunches. More...

#include <Tracker.h>

Inheritance diagram for Tracker:
Inheritance graph
[legend]
Collaboration diagram for Tracker:
Collaboration graph
[legend]

Public Member Functions

 Tracker (const Beamline &, const PartData &, bool backBeam, bool backTrack)
 Constructor. More...
 
 Tracker (const Beamline &, PartBunchBase< double, 3 > *bunch, const PartData &, bool backBeam, bool backTrack)
 Constructor. More...
 
virtual ~Tracker ()
 
const PartBunchBase< double, 3 > * getBunch () const
 Return the current bunch. More...
 
void addToBunch (const OpalParticle &)
 Add particle to bunch. More...
 
virtual void visitComponent (const Component &)
 Store the bunch. More...
 
virtual void visitPatch (const Patch &pat)
 Apply the algorithm to a patch. More...
 
virtual void visitAlignWrapper (const AlignWrapper &)
 Apply the algorithm to an align wrapper. More...
 
virtual void visitTrackIntegrator (const TrackIntegrator &)
 Apply the algorithm to an integrator capable of tracking. More...
 
virtual void visitMapIntegrator (const MapIntegrator &)
 Apply the algorithm to an integrator capable of mapping. More...
 
virtual void setNumBunch (int)
 set total number of tracked bunches More...
 
virtual int getNumBunch ()
 get total number of tracked bunches More...
 
- Public Member Functions inherited from AbstractTracker
 AbstractTracker (const Beamline &, const PartData &, bool backBeam, bool backTrack)
 Constructor. More...
 
virtual ~AbstractTracker ()
 
- Public Member Functions inherited from DefaultVisitor
 DefaultVisitor (const Beamline &beamline, bool backBeam, bool backTrack)
 Constructor. More...
 
virtual ~DefaultVisitor ()=0
 
virtual void execute ()
 Apply the algorithm to the top-level beamline. More...
 
virtual void visitBeamBeam (const BeamBeam &)
 Apply the algorithm to a beam-beam. More...
 
virtual void visitBeamStripping (const BeamStripping &)
 Apply the algorithm to a beam stripping. More...
 
virtual void visitCCollimator (const CCollimator &)
 Apply the algorithm to a collimator. More...
 
virtual void visitCyclotron (const Cyclotron &)
 Apply the algorithm to an cyclotron. More...
 
virtual void visitRing (const Ring &)
 Apply the algorithm to an opal ring.. More...
 
virtual void visitCorrector (const Corrector &)
 Apply the algorithm to a corrector. More...
 
virtual void visitDegrader (const Degrader &)
 Apply the algorithm to a drift. More...
 
virtual void visitDiagnostic (const Diagnostic &)
 Apply the algorithm to a diagnostic. More...
 
virtual void visitDrift (const Drift &)
 Apply the algorithm to a drift. More...
 
virtual void visitFlexibleCollimator (const FlexibleCollimator &)
 Apply the algorithm to a flexible collimator. More...
 
virtual void visitLambertson (const Lambertson &)
 Apply the algorithm to a Lambertson. More...
 
virtual void visitMarker (const Marker &)
 Apply the algorithm to a marker. More...
 
virtual void visitMonitor (const Monitor &)
 Apply the algorithm to a monitor. More...
 
virtual void visitMultipole (const Multipole &)
 Apply the algorithm to a multipole. More...
 
virtual void visitMultipoleT (const MultipoleT &)
 Apply the algorithm to a multipoleT. More...
 
virtual void visitMultipoleTStraight (const MultipoleTStraight &)
 Apply the algorithm to a multipoleTStraight. More...
 
virtual void visitMultipoleTCurvedConstRadius (const MultipoleTCurvedConstRadius &)
 Apply the algorithm to a multipoleTCurvedConstRadius. More...
 
virtual void visitMultipoleTCurvedVarRadius (const MultipoleTCurvedVarRadius &)
 Apply the algorithm to a multipoleTCurvedVarRadius. More...
 
virtual void visitOffset (const Offset &)
 Apply the algorithm to an Offset. More...
 
virtual void visitProbe (const Probe &prob)
 Apply the algorithm to a probe. More...
 
virtual void visitRBend (const RBend &)
 Apply the algorithm to a rectangular bend. More...
 
virtual void visitRBend3D (const RBend3D &)
 Apply the algorithm to a rectangular bend. More...
 
virtual void visitVariableRFCavity (const VariableRFCavity &vcav)
 Apply the algorithm to a RF cavity. More...
 
virtual void visitVariableRFCavityFringeField (const VariableRFCavityFringeField &vcav)
 Apply the algorithm to a RF cavity. More...
 
virtual void visitRFCavity (const RFCavity &)
 Apply the algorithm to a RF cavity. More...
 
virtual void visitTravelingWave (const TravelingWave &)
 Apply the algorithm to a RF cavity. More...
 
virtual void visitRFQuadrupole (const RFQuadrupole &)
 Apply the algorithm to a RF quadrupole. More...
 
virtual void visitSBend (const SBend &)
 Apply the algorithm to a sector bend. More...
 
virtual void visitSBend3D (const SBend3D &)
 Apply the algorithm to a sector bend. More...
 
virtual void visitScalingFFAMagnet (const ScalingFFAMagnet &)
 Apply the algorithm to a scaling FFA magnet. More...
 
virtual void visitVerticalFFAMagnet (const VerticalFFAMagnet &)
 Apply the algorithm to a RF cavity. More...
 
virtual void visitSeparator (const Separator &)
 Apply the algorithm to a separator. More...
 
virtual void visitSeptum (const Septum &)
 Apply the algorithm to a septum. More...
 
virtual void visitSolenoid (const Solenoid &)
 Apply the algorithm to a solenoid. More...
 
virtual void visitSource (const Source &)
 Apply the algorithm to a source. More...
 
virtual void visitParallelPlate (const ParallelPlate &)
 Apply the algorithm to a ParallelPlate. More...
 
virtual void visitCyclotronValley (const CyclotronValley &)
 Apply the algorithm to a CyclotronValley. More...
 
virtual void visitStripper (const Stripper &)
 Apply the algorithm to a charge stripper. More...
 
virtual void visitBeamline (const Beamline &)
 Apply the algorithm to a beam line. More...
 
virtual void visitFlaggedElmPtr (const FlaggedElmPtr &)
 Apply the algorithm to a FlaggedElmPtr. More...
 
virtual void visitCorrectorWrapper (const CorrectorWrapper &)
 Apply the algorithm to an corrector wrapper.. More...
 
virtual void visitCyclotronWrapper (const CyclotronWrapper &)
 Apply the algorithm to an cyclotron wrapper.. More...
 
virtual void visitMultipoleWrapper (const MultipoleWrapper &)
 Apply the algorithm to an multipole wrapper.. More...
 
virtual void visitRBendWrapper (const RBendWrapper &)
 Apply the algorithm to an RBend wrapper.. More...
 
virtual void visitSBendWrapper (const SBendWrapper &)
 Apply the algorithm to an SBend wrapper.. More...
 
virtual void visitIntegrator (const Integrator &)
 Apply the algorithm to a generic integrator. More...
 
- Public Member Functions inherited from BeamlineVisitor
 BeamlineVisitor ()
 
virtual ~BeamlineVisitor ()
 

Public Attributes

FieldList cavities_m
 set multipacting flag More...
 
const BeamlineitsBeamline_m
 

Protected Member Functions

void applyDrift (double length)
 Apply a drift length. More...
 
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. More...
 
FTps< double, 2 > buildMultipoleVectorPotential2D (const BMultipoleField &)
 Construct vector potential for a Multipole. More...
 
FTps< double, 6 > buildMultipoleVectorPotential (const BMultipoleField &)
 Construct vector potential for a Multipole. More...
 
FTps< double, 2 > buildSBendVectorPotential2D (const BMultipoleField &, double h)
 Construct vector potential for a SBend. More...
 
FTps< double, 6 > buildSBendVectorPotential (const BMultipoleField &, double h)
 Construct vector potential for a SBend. More...
 

Protected Attributes

PartBunchBase< double, 3 > * itsBunch_m
 The bunch of particles to be tracked. More...
 
- Protected Attributes inherited from AbstractTracker
const PartData itsReference
 The reference information. More...
 
- Protected Attributes inherited from DefaultVisitor
const BeamlineitsLine
 
bool back_beam
 
bool back_track
 
bool back_path
 
double flip_B
 
double flip_s
 

Private Member Functions

 Tracker ()
 
 Tracker (const Tracker &)
 
void operator= (const Tracker &)
 

Additional Inherited Members

- Public Types inherited from AbstractTracker
enum  {
  X, PX, Y, PY,
  T, PT
}
 

Detailed Description

Track particles or bunches.

Definition at line 84 of file Tracker.h.

Constructor & Destructor Documentation

Tracker::Tracker ( const Beamline beamline,
const PartData reference,
bool  backBeam,
bool  backTrack 
)

Constructor.

Definition at line 45 of file Tracker.cpp.

Tracker::Tracker ( const Beamline beamline,
PartBunchBase< double, 3 > *  bunch,
const PartData reference,
bool  backBeam,
bool  backTrack 
)

Constructor.

Definition at line 60 of file Tracker.cpp.

Tracker::~Tracker ( )
virtual

Definition at line 70 of file Tracker.cpp.

Tracker::Tracker ( )
private
Tracker::Tracker ( const Tracker )
private

Member Function Documentation

void Tracker::addToBunch ( const OpalParticle part)

Add particle to bunch.

Definition at line 79 of file Tracker.cpp.

References itsBunch_m, and PartBunchBase< T, Dim >::push_back().

Here is the call graph for this function:

void Tracker::applyDrift ( double  length)
protected
void Tracker::applyThinMultipole ( const BMultipoleField field,
double  factor 
)
protected
void Tracker::applyThinSBend ( const BMultipoleField field,
double  scale,
double  h 
)
protected

Definition at line 183 of file Tracker.cpp.

References FTps< T, N >::derivative(), FTps< T, N >::evaluate(), OpalParticle::px(), OpalParticle::py(), OpalParticle::x(), and OpalParticle::y().

Here is the call graph for this function:

void Tracker::applyTransform ( const Euclid3D euclid,
double  refLength = 0.0 
)
protected
Series Tracker::buildMultipoleVectorPotential ( const BMultipoleField field)
protected
Series2 Tracker::buildMultipoleVectorPotential2D ( const BMultipoleField field)
protected

Construct vector potential for a Multipole.

Definition at line 239 of file Tracker.cpp.

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

Here is the call graph for this function:

Series Tracker::buildSBendVectorPotential ( const BMultipoleField field,
double  h 
)
protected
Series2 Tracker::buildSBendVectorPotential2D ( const BMultipoleField field,
double  h 
)
protected
const PartBunchBase< double, 3 > * Tracker::getBunch ( ) const

Return the current bunch.

Definition at line 74 of file Tracker.cpp.

References itsBunch_m.

virtual int Tracker::getNumBunch ( )
inlinevirtual

get total number of tracked bunches

Definition at line 137 of file Tracker.h.

void Tracker::operator= ( const Tracker )
private
virtual void Tracker::setNumBunch ( int  )
inlinevirtual

set total number of tracked bunches

Definition at line 134 of file Tracker.h.

void Tracker::visitAlignWrapper ( const AlignWrapper wrap)
virtual

Apply the algorithm to an align wrapper.

Reimplemented from DefaultVisitor.

Reimplemented in ThickTracker, ParallelTTracker, ParallelSliceTracker, and NilTracker.

Definition at line 101 of file Tracker.cpp.

References ElementBase::accept(), applyTransform(), DefaultVisitor::back_path, AlignWrapper::getElement(), AlignWrapper::getEntranceTransform(), AlignWrapper::getExitTransform(), Inverse(), Euclid3D::isIdentity(), and AlignWrapper::offset().

Here is the call graph for this function:

void Tracker::visitComponent ( const Component comp)
virtual

Store the bunch.

Apply the algorithm to an arbitrary component.

Reimplemented from DefaultVisitor.

Definition at line 89 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:

void Tracker::visitMapIntegrator ( const MapIntegrator i)
virtual

Apply the algorithm to an integrator capable of mapping.

Reimplemented from DefaultVisitor.

Definition at line 128 of file Tracker.cpp.

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

Here is the call graph for this function:

void Tracker::visitPatch ( const Patch pat)
virtual

Apply the algorithm to a patch.

Reimplemented from DefaultVisitor.

Definition at line 94 of file Tracker.cpp.

References applyTransform(), DefaultVisitor::back_path, Patch::getPatch(), and Inverse().

Here is the call graph for this function:

void Tracker::visitTrackIntegrator ( const TrackIntegrator i)
virtual

Apply the algorithm to an integrator capable of tracking.

Reimplemented from DefaultVisitor.

Definition at line 123 of file Tracker.cpp.

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

Here is the call graph for this function:

Member Data Documentation

FieldList Tracker::cavities_m
const Beamline& Tracker::itsBeamline_m
PartBunchBase<double, 3>* Tracker::itsBunch_m
protected

The bunch of particles to be tracked.

Definition at line 174 of file Tracker.h.

Referenced by addToBunch(), ThickTracker::advanceDispersion_m(), ThickTracker::advanceParticles_m(), ThinTracker::applyDrift(), applyDrift(), ParallelTTracker::applyFractionalStep(), ParallelCyclotronTracker::applyPluginElements(), applyTransform(), ParallelTTracker::autophaseCavities(), ParallelCyclotronTracker::bgf_main_collision_test(), ParallelCyclotronTracker::borisExternalFields(), ParallelCyclotronTracker::bunchDumpPhaseSpaceData(), ParallelCyclotronTracker::bunchDumpStatData(), ParallelCyclotronTracker::bunchMode_m(), ParallelCyclotronTracker::calcMeanP(), ParallelCyclotronTracker::calcMeanR(), ParallelTTracker::changeDT(), 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(), 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::singleMode_m(), ParallelCyclotronTracker::singleParticleDump(), ParallelTTracker::timeIntegration2(), ThickTracker::track_m(), ParallelTTracker::transformBunch(), ThickTracker::update_m(), ParallelCyclotronTracker::update_m(), ThickTracker::updateParticle_m(), ParallelCyclotronTracker::updatePathLength(), ParallelTTracker::updateReferenceParticle(), ParallelTTracker::updateRefToLabCSTrafo(), ParallelCyclotronTracker::updateTime(), ParallelTTracker::visitAlignWrapper(), ThinTracker::visitBeamBeam(), ParallelTTracker::visitBeamBeam(), ParallelCyclotronTracker::visitBeamStripping(), ParallelTTracker::visitBeamStripping(), ThickTracker::visitBeamStripping(), ParallelCyclotronTracker::visitCCollimator(), ParallelTTracker::visitCCollimator(), visitComponent(), ThinTracker::visitCorrector(), ParallelTTracker::visitCorrector(), ParallelCyclotronTracker::visitCyclotron(), ParallelTTracker::visitCyclotronValley(), ParallelTTracker::visitDegrader(), ParallelTTracker::visitDiagnostic(), ParallelTTracker::visitDrift(), ThickTracker::visitDrift(), ParallelTTracker::visitFlexibleCollimator(), ParallelTTracker::visitLambertson(), visitMapIntegrator(), ParallelTTracker::visitMarker(), ParallelTTracker::visitMonitor(), ParallelTTracker::visitMultipole(), ThickTracker::visitMultipole(), ParallelTTracker::visitMultipoleT(), ParallelTTracker::visitParallelPlate(), ParallelCyclotronTracker::visitProbe(), ParallelTTracker::visitProbe(), ThinTracker::visitRBend(), ParallelTTracker::visitRBend(), ParallelTTracker::visitRBend3D(), ParallelCyclotronTracker::visitRFCavity(), ThinTracker::visitRFCavity(), ParallelTTracker::visitRFCavity(), ParallelTTracker::visitRFQuadrupole(), ParallelCyclotronTracker::visitRing(), ThinTracker::visitSBend(), ParallelTTracker::visitSBend(), ThickTracker::visitSBend(), ThinTracker::visitSeparator(), ParallelTTracker::visitSeparator(), ParallelCyclotronTracker::visitSeptum(), ParallelTTracker::visitSeptum(), ThinTracker::visitSolenoid(), ParallelTTracker::visitSolenoid(), ParallelTTracker::visitSource(), ParallelCyclotronTracker::visitStripper(), visitTrackIntegrator(), ParallelTTracker::visitTravelingWave(), and ParallelTTracker::writePhaseSpace().


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