1 #ifndef CLASSIC_OrbitTracker_HH
2 #define CLASSIC_OrbitTracker_HH
29 template <
class T,
int N>
class FTps;
50 bool backBeam,
bool backTrack);
179 (
double k,
double L,
double &
c,
double &s,
double &d,
double &f);
186 #endif // CLASSIC_OrbitTracker_HH
virtual void visitSolenoid(const Solenoid &)
Apply the algorithm to a solenoid.
virtual void visitCCollimator(const CCollimator &)
Apply the algorithm to a collimator.
virtual void visitRBend(const RBend &)
Apply the algorithm to a rectangular bend.
virtual void visitCorrector(const Corrector &)
Apply the algorithm to a corrector.
virtual void visitDegrader(const Degrader &)
Apply the algorithm to a drift.
virtual void visitBeamBeam(const BeamBeam &)
Apply the algorithm to a beam-beam.
virtual void visitSBend(const SBend &)
Apply the algorithm to a sector bend.
Track particles or bunches.
Interface for septum magnet.
Interface for electrostatic separator.
void applySBendBody(double length, double refLength, double h, const BMultipoleField &field, double scale)
Apply thin multipole kick (integrated over length) to all particles.
Interface for beam position monitors.
Interface for RF Quadrupole.
FVector< double, 6 > itsOrbit
Define the position of a misaligned element.
virtual void visitParallelPlate(const ParallelPlate &)
Apply the algorithm to a ParallelPlate.
virtual void visitRFQuadrupole(const RFQuadrupole &)
Apply the algorithm to a RF quadrupole.
virtual void visitMonitor(const Monitor &)
Apply the algorithm to a monitor.
Interface for general corrector.
Interface for beam diagnostics.
void applyTransform(const Euclid3D &, double refLength)
Apply transform.
virtual void visitMarker(const Marker &)
Apply the algorithm to a marker.
Interface for drift space.
virtual void visitAlignWrapper(const AlignWrapper &)
Apply the algorithm to an align wrapper..
Interface for general multipole.
virtual void visitSeparator(const Separator &)
Apply the algorithm to a separator.
void setOrbit(const FVector< double, 6 > orbit)
Reset the current orbit.
void applyLinearMap(double length, double refLength, double h, const FTps< double, 2 > &Fx, const FTps< double, 2 > &Fy)
Apply linear map, defined by the linear expansions Fx and Fy.
virtual void visitProbe(const Probe &prob)
Apply the algorithm to a probe.
virtual void visitComponent(const Component &)
Apply the algorithm to an arbitrary component.
void applyThinMultipole(const BMultipoleField &field, double factor)
Thin multipole kick.
constexpr double c
The velocity of light in m/s.
Interface for cyclotron collimator.
Displacement and rotation in space.
Abstract beam-beam interaction.
void applyDrift(double length)
Apply drift length.
void applyExitFringe(double edge, const BMultipoleField &field, double scale)
Interface for cyclotron valley.
virtual void visitDiagnostic(const Diagnostic &)
Apply the algorithm to a diagnostic.
An abstract sequence of beam line components.
virtual void visitRFCavity(const RFCavity &)
Apply the algorithm to a RF cavity.
virtual void visitSeptum(const Septum &)
Apply the algorithm to a septum.
FTps< double, 2 > buildSBendVectorPotential(const BMultipoleField &, double h)
Construct the vector potential for a SBend.
virtual void visitPatch(const Patch &pat)
Apply the algorithm to a patch.
virtual void visitFlexibleCollimator(const FlexibleCollimator &)
Apply the algorithm to a flexible collimator.
The magnetic field of a multipole.
virtual void visitLambertson(const Lambertson &)
Apply the algorithm to a Lambertson.
void applyMultipoleBody(double length, double refLength, const BMultipoleField &field, double scale)
Apply body of SBend.
void operator=(const OrbitTracker &)
virtual void visitMultipole(const Multipole &)
Apply the algorithm to a multipole.
virtual void visitBeamStripping(const BeamStripping &)
Apply the algorithm to a beam stripping.
const FVector< double, 6 > & getOrbit() const
Return the current orbit.
void applyEntranceFringe(double edge, const BMultipoleField &field, double scale)
Transforms fringing fields.
virtual void visitCyclotronValley(const CyclotronValley &)
Apply the algorithm to a CyclotronValley.
static void makeFocus(double k, double L, double &c, double &s, double &d, double &f)
Helper function for finding first-order coefficients.
Truncated power series in N variables of type T.
Interface for a geometric patch.
Interface for a single beam element.
virtual void visitDrift(const Drift &)
Apply the algorithm to a drift.
Interface for a Lambertson septum.