OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Track.h
Go to the documentation of this file.
1 #ifndef OPAL_Track_HH
2 #define OPAL_Track_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: Track.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Struct: Track
13 //
14 // ------------------------------------------------------------------------
15 //
16 // $Date: 2000/03/27 09:33:46 $
17 // $Author: Andreas Adelmann $
18 //
19 // ------------------------------------------------------------------------
20 
21 #include "Algorithms/PartData.h"
22 #include "Track/TrackParser.h"
23 #include <stack>
24 
25 class BeamSequence;
26 class TrackParser;
27 
28 template <class T, unsigned Dim>
29 class PartBunchBase;
30 
31 class EnvelopeBunch;
32 
33 // Class Track
34 // ------------------------------------------------------------------------
36 // Acts as a communication area between the various tracking commands.
37 
38 class Track {
39 
40 public:
41 
42  Track(BeamSequence *, const PartData &, const std::vector<double> & dt,
43  const std::vector<unsigned long long> & maxtsteps, int stepsperturn,
44  double zStart, const std::vector<double> & zStop, int timeintegrator,
45  int nslices, double t0, double dtScInit, double deltaTau);
46  ~Track();
47 
50 
52 
55 
58 
61 
63  static Track *block;
64 
65  static void stash();
66  static Track* pop();
67 
69  std::vector<double> dT;
70 
71  // For AMTS integrator in OPAL-T
72  double dtScInit, deltaTau;
73 
76  double t0_m;
77 
79  std::vector<unsigned long long> localTimeSteps;
80 
83 
85  double zstart;
86 
88  std::vector<double> zstop;
89 
91  // 0 --- RK-4(default)
92  // 1 --- LF-2
93  // 2 --- MTS
94  // 3 --- AMTS
96 
99 
100 private:
101 
102  // Not implemented.
103  Track();
104  Track(const Track &);
105  void operator=(const Track &);
106 
107  static std::stack<Track*> stashedTrack;
108 };
109 
110 #endif // OPAL_Track_HH
std::vector< double > zstop
The location at which the simulation stops.
Definition: Track.h:88
double zstart
The location at which the simulation starts.
Definition: Track.h:85
static void stash()
Definition: Track.cpp:95
~Track()
Definition: Track.cpp:92
core of the envelope tracker based on Rene Bakkers BET implementation
Definition: EnvelopeBunch.h:60
int timeIntegrator
The ID of time integrator.
Definition: Track.h:95
std::vector< double > dT
The initial timestep.
Definition: Track.h:69
void operator=(const Track &)
Particle reference data.
Definition: PartData.h:38
The parser class used by the OPAL tracking module.
Definition: TrackParser.h:32
double t0_m
Definition: Track.h:76
std::vector< unsigned long long > localTimeSteps
Maximal number of timesteps.
Definition: Track.h:79
EnvelopeBunch * slbunch
Definition: Track.h:51
Class: DataSink.
Definition: OpalData.h:29
TrackParser parser
The parser used during tracking.
Definition: Track.h:60
static Track * block
The block of track data.
Definition: Track.h:63
int truncOrder
Trunction order for map tracking.
Definition: Track.h:98
PartBunchBase< double, 3 > * bunch
The particle bunch to be tracked.
Definition: Track.h:49
static Track * pop()
Definition: Track.cpp:102
The base class for all OPAL beam lines and sequences.
Definition: BeamSequence.h:32
BeamSequence * use
The lattice to be tracked through.
Definition: Track.h:57
double deltaTau
Definition: Track.h:72
double dtScInit
Definition: Track.h:72
static std::stack< Track * > stashedTrack
Definition: Track.h:107
PartData reference
The reference data.
Definition: Track.h:54
Hold data for tracking.
Definition: Track.h:38
int stepsPerTurn
The timsteps per revolution period. ONLY available for OPAL-cycl.
Definition: Track.h:82