OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
TrackIntegrator.h
Go to the documentation of this file.
1 #ifndef CLASSIC_TrackIntegrator_HH
2 #define CLASSIC_TrackIntegrator_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: TrackIntegrator.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: TrackIntegrator
13 //
14 // ------------------------------------------------------------------------
15 // Class category: Algorithms
16 // ------------------------------------------------------------------------
17 //
18 // $Date: 2000/03/27 09:32:33 $
19 // $Author: fci $
20 //
21 // ------------------------------------------------------------------------
22 
23 #include "AbsBeamline/Integrator.h"
24 
25 class PartData;
26 
27 namespace classic {
28 class Particle;
29 }
30 
31 template <class T, int N> class FVps;
32 
33 
34 // Class TrackIntegrator
35 // ------------------------------------------------------------------------
37 // An abstract base class for all integrators capable of tracking particles
38 // or particle bunches through a beam element. It is assumed that this
39 // integrator has no maps available. It can therefore not track a map.
40 
41 class TrackIntegrator: public Integrator {
42 
43 public:
44 
45  explicit TrackIntegrator(ElementBase *);
47  virtual ~TrackIntegrator();
48 
49 
51  virtual void accept(BeamlineVisitor &visitor) const;
52 
54  virtual TrackIntegrator *clone() const = 0;
55 
57  // The map is stored in [b]map[/b].
58  // The particle reference data are taken from [b]data[/b].
59  // If [b]revBeam[/b] is true, the beam runs from s = C to s = 0.
60  // If [b]revTrack[/b] is true, we track against the beam.
61  // This version throws LogicalError, since the integrator has no map.
62  virtual void trackMap(FVps<double, 6> &map, const PartData &data,
63  bool backBeam, bool backTrack) const;
64 
65 private:
66 
67  // Not Implemented.
69  void operator=(const TrackIntegrator &);
70 };
71 
72 #endif // CLASSIC_TrackIntegrator_HH
virtual void trackMap(FVps< double, 6 > &map, const PartData &data, bool backBeam, bool backTrack) const
Track a map.
Interface for basic beam line object.
Definition: ElementBase.h:128
Particle reference data.
Definition: PartData.h:38
virtual void accept(BeamlineVisitor &visitor) const
Apply visitor.
Integrate particle.
void operator=(const TrackIntegrator &)
virtual TrackIntegrator * clone() const =0
Make a clone.
Base class for special integrators.
Definition: Integrator.h:41
virtual ~TrackIntegrator()
Abstract algorithm.
Vector truncated power series in n variables.