OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
ThinMapper.h
Go to the documentation of this file.
1 #ifndef CLASSIC_ThinMapper_HH
2 #define CLASSIC_ThinMapper_HH 1
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: ThinMapper.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.1.1.1 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: ThinMapper
13 //
14 // ------------------------------------------------------------------------
15 // Class category: Algorithms
16 // ------------------------------------------------------------------------
17 //
18 // $Date: 2000/03/27 09:32:33 $
19 // $Author: fci $
20 //
21 // ------------------------------------------------------------------------
22 
23 #include "Algorithms/Mapper.h"
24 
25 class BMultipoleField;
26 
27 
28 // Class ThinMapper
29 // ------------------------------------------------------------------------
31 // The visitor class for building a FVps<double,6> for a beamline
32 // using a thin-lens approximation for all elements.
33 // [P]
34 // Approximations used:
35 // [UL]
36 // [LI]All active elements are represented as thin lenses, sandwiched
37 // between two drifts, each half of the element length.
38 // [LI]Drifts are handled with a second-order approximation.
39 // [LI]Geometric transformations ignore rotations about transverse axes
40 // and translations along the design orbit and truncate after second order.
41 // [/UL]
42 
43 class ThinMapper: public Mapper {
44 
45 public:
46 
48  // The beam line to be tracked is [b]bl[/b].
49  // The particle reference data are taken from [b]data[/b].
50  // If [b]revBeam[/b] is true, the beam runs from s = C to s = 0.
51  // If [b]revTracl[/b] is true, we track against the beam.
52  ThinMapper(const Beamline &bl, const PartData &data,
53  bool revBeam, bool revTrack);
54 
55  virtual ~ThinMapper();
56 
57 
59  virtual void visitBeamBeam(const BeamBeam &);
60 
62  virtual void visitBeamStripping(const BeamStripping &);
63 
65  virtual void visitCCollimator(const CCollimator &);
66 
68  virtual void visitCorrector(const Corrector &);
69 
71  virtual void visitDegrader(const Degrader &);
72 
74  virtual void visitDiagnostic(const Diagnostic &);
75 
77  virtual void visitDrift(const Drift &);
78 
80  virtual void visitFlexibleCollimator(const FlexibleCollimator &);
81 
83  virtual void visitLambertson(const Lambertson &);
84 
86  virtual void visitMarker(const Marker &);
87 
89  virtual void visitMonitor(const Monitor &);
90 
92  virtual void visitMultipole(const Multipole &);
93 
95  virtual void visitProbe(const Probe &);
96 
98  virtual void visitRBend(const RBend &);
99 
101  virtual void visitRFCavity(const RFCavity &);
102 
104  virtual void visitRFQuadrupole(const RFQuadrupole &);
105 
107  virtual void visitSBend(const SBend &);
108 
110  virtual void visitSeparator(const Separator &);
111 
113  virtual void visitSeptum(const Septum &);
114 
116  virtual void visitSolenoid(const Solenoid &);
117 
119  virtual void visitParallelPlate(const ParallelPlate &);
120 
122  virtual void visitCyclotronValley(const CyclotronValley &);
123 
124 protected:
125 
126  // Apply a drift length.
127  // Approximate method to gain speed.
128  void applyDrift(double length);
129 
130 private:
131 
132  // Not implemented.
133  ThinMapper();
134  ThinMapper(const ThinMapper &);
135  void operator=(const ThinMapper &);
136 };
137 
138 #endif // CLASSIC_ThinMapper_HH
Interface for septum magnet.
Definition: Septum.h:11
Interface for electrostatic separator.
Definition: Separator.h:33
void operator=(const ThinMapper &)
Interface for beam position monitors.
Definition: Monitor.h:41
virtual void visitMarker(const Marker &)
Apply the algorithm to a marker.
Definition: ThinMapper.cpp:126
Interface for RF Quadrupole.
Definition: RFQuadrupole.h:30
virtual void visitParallelPlate(const ParallelPlate &)
Apply the algorithm to a ParallelPlate.
Definition: ThinMapper.cpp:329
Interface for RF cavity.
Definition: ParallelPlate.h:36
Particle reference data.
Definition: PartData.h:38
virtual void visitMonitor(const Monitor &)
Apply the algorithm to a monitor.
Definition: ThinMapper.cpp:131
Interface for general corrector.
Definition: Corrector.h:35
virtual void visitCorrector(const Corrector &)
Apply the algorithm to a corrector.
Definition: ThinMapper.cpp:89
Abstract collimator.
Definition: RBend.h:73
Interface for beam diagnostics.
Definition: Diagnostic.h:32
Interface for a marker.
Definition: Marker.h:32
Interface for drift space.
Definition: Drift.h:33
Interface for general multipole.
Definition: Multipole.h:46
virtual void visitSeptum(const Septum &)
Apply the algorithm to a septum.
Definition: ThinMapper.cpp:287
Construct thin lens map.
Definition: ThinMapper.h:43
virtual void visitCyclotronValley(const CyclotronValley &)
Apply the algorithm to a CyclotronValley.
Definition: ThinMapper.cpp:333
Interface for probe.
Definition: Probe.h:16
virtual ~ThinMapper()
Definition: ThinMapper.cpp:68
virtual void visitRBend(const RBend &)
Apply the algorithm to a rectangular bend.
Definition: ThinMapper.cpp:163
virtual void visitProbe(const Probe &)
Apply the algorithm to a probe.
Definition: ThinMapper.cpp:158
Interface for cyclotron collimator.
Definition: CCollimator.h:13
Abstract beam-beam interaction.
Definition: BeamBeam.h:37
Definition: SBend.h:68
Interface for cyclotron valley.
virtual void visitRFQuadrupole(const RFQuadrupole &)
Apply the algorithm to a RF quadrupole.
Definition: ThinMapper.cpp:223
Build transfer map.
Definition: Mapper.h:85
virtual void visitSolenoid(const Solenoid &)
Apply the algorithm to a solenoid.
Definition: ThinMapper.cpp:293
Interface for solenoids.
Definition: Solenoid.h:36
An abstract sequence of beam line components.
Definition: Beamline.h:37
virtual void visitBeamBeam(const BeamBeam &)
Apply the algorithm to a beam-beam.
Definition: ThinMapper.cpp:72
virtual void visitBeamStripping(const BeamStripping &)
Apply the algorithm to a beam stripping.
Definition: ThinMapper.cpp:76
virtual void visitRFCavity(const RFCavity &)
Apply the algorithm to a RF cavity.
Definition: ThinMapper.cpp:203
virtual void visitSeparator(const Separator &)
Apply the algorithm to a separator.
Definition: ThinMapper.cpp:268
virtual void visitFlexibleCollimator(const FlexibleCollimator &)
Apply the algorithm to a flexible collimator.
Definition: ThinMapper.cpp:116
The magnetic field of a multipole.
Interface for RF cavity.
Definition: RFCavity.h:37
Abstract collimator.
Definition: Degrader.h:37
virtual void visitSBend(const SBend &)
Apply the algorithm to a sector bend.
Definition: ThinMapper.cpp:229
virtual void visitCCollimator(const CCollimator &)
Apply the algorithm to a collimator.
Definition: ThinMapper.cpp:84
virtual void visitDiagnostic(const Diagnostic &)
Apply the algorithm to a diagnostic.
Definition: ThinMapper.cpp:106
virtual void visitLambertson(const Lambertson &)
Apply the algorithm to a Lambertson.
Definition: ThinMapper.cpp:120
void applyDrift(double length)
Definition: ThinMapper.cpp:337
virtual void visitDrift(const Drift &)
Apply the algorithm to a drift.
Definition: ThinMapper.cpp:112
virtual void visitDegrader(const Degrader &)
Apply the algorithm to a drift.
Definition: ThinMapper.cpp:80
Interface for a Lambertson septum.
Definition: Lambertson.h:33
virtual void visitMultipole(const Multipole &)
Apply the algorithm to a multipole.
Definition: ThinMapper.cpp:136