OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
DefaultVisitor.h
Go to the documentation of this file.
1 #ifndef CLASSIC_DefaultVisitor_HH
2 #define CLASSIC_DefaultVisitor_HH
3 
4 // ------------------------------------------------------------------------
5 // $RCSfile: DefaultVisitor.h,v $
6 // ------------------------------------------------------------------------
7 // $Revision: 1.3 $
8 // ------------------------------------------------------------------------
9 // Copyright: see Copyright.readme
10 // ------------------------------------------------------------------------
11 //
12 // Class: DefaultVisitor
13 // The default interface for a BeamlineVisitor.
14 //
15 // ------------------------------------------------------------------------
16 // Class category: Algorithms
17 // ------------------------------------------------------------------------
18 //
19 // $Date: 2000/05/03 08:16:04 $
20 // $Author: mad $
21 //
22 // ------------------------------------------------------------------------
23 
25 
26 class ElementBase;
27 
28 // Class DefaultVisitor
29 // ------------------------------------------------------------------------
31 // A default implementation for all visitors that can iterate over a
32 // beam line representation.
33 // This abstract base class implements the default behaviour for the
34 // structural classes Beamline and FlaggedElmPtr, and for all wrappers.
35 // It also holds the data required for all visitors in a protected area.
36 
38 
39 public:
40 
42  // Arguments:
43  // [ol]
44  // [li]The beamline to be used.
45  // [li]If true, the beam runs backwards through the line.
46  // [li]If true, we track against the beam.
47  // [/ol]
48  DefaultVisitor(const Beamline &beamline, bool backBeam, bool backTrack);
49 
50  virtual ~DefaultVisitor() = 0;
51 
53  virtual void execute();
54 
56  virtual void visitBeamBeam(const BeamBeam &);
57 
59  virtual void visitBeamStripping(const BeamStripping &);
60 
62  virtual void visitCCollimator(const CCollimator &);
63 
65  virtual void visitComponent(const Component &);
66 
68  virtual void visitCyclotron(const Cyclotron &);
69 
71  virtual void visitRing(const Ring &);
72 
74  virtual void visitCorrector(const Corrector &);
75 
77  virtual void visitDegrader(const Degrader &);
78 
80  virtual void visitDiagnostic(const Diagnostic &);
81 
83  virtual void visitDrift(const Drift &);
84 
86  virtual void visitFlexibleCollimator(const FlexibleCollimator &);
87 
89  virtual void visitLambertson(const Lambertson &);
90 
92  virtual void visitMarker(const Marker &);
93 
95  virtual void visitMonitor(const Monitor &);
96 
98  virtual void visitMultipole(const Multipole &);
99 
101  virtual void visitMultipoleT(const MultipoleT &);
102 
104  virtual void visitMultipoleTStraight(const MultipoleTStraight &);
105 
108 
111 
113  virtual void visitOffset(const Offset &);
114 
116  virtual void visitPatch(const Patch &pat);
117 
119  virtual void visitProbe(const Probe &prob);
120 
122  virtual void visitRBend(const RBend &);
123 
125  virtual void visitRBend3D(const RBend3D &);
126 
128  virtual void visitVariableRFCavity(const VariableRFCavity &vcav);
129 
132 
134  virtual void visitRFCavity(const RFCavity &);
135 
137  virtual void visitTravelingWave(const TravelingWave &);
138 
140  virtual void visitRFQuadrupole(const RFQuadrupole &);
141 
143  virtual void visitSBend(const SBend &);
144 
146  virtual void visitSBend3D(const SBend3D &);
147 
149  virtual void visitScalingFFAMagnet(const ScalingFFAMagnet &);
150 
152  virtual void visitVerticalFFAMagnet(const VerticalFFAMagnet &);
153 
155  virtual void visitSeparator(const Separator &);
156 
158  virtual void visitSeptum(const Septum &);
159 
161  virtual void visitSolenoid(const Solenoid &);
162 
164  virtual void visitSource(const Source &);
165 
167  virtual void visitParallelPlate(const ParallelPlate &);
168 
170  virtual void visitCyclotronValley(const CyclotronValley &);
171 
173  virtual void visitStripper(const Stripper &);
174 
176  virtual void visitBeamline(const Beamline &);
177 
179  virtual void visitFlaggedElmPtr(const FlaggedElmPtr &);
180 
181 
183  virtual void visitAlignWrapper(const AlignWrapper &);
184 
186  virtual void visitCorrectorWrapper(const CorrectorWrapper &);
187 
189  virtual void visitCyclotronWrapper(const CyclotronWrapper &);
190 
192  virtual void visitMultipoleWrapper(const MultipoleWrapper &);
193 
195  virtual void visitRBendWrapper(const RBendWrapper &);
196 
198  virtual void visitSBendWrapper(const SBendWrapper &);
199 
200 
202  virtual void visitIntegrator(const Integrator &);
203 
205  virtual void visitMapIntegrator(const MapIntegrator &);
206 
208  virtual void visitTrackIntegrator(const TrackIntegrator &);
209 
210 protected:
211 
212  // The top level beamline.
214 
215  // The direction flags and corresponding factors.
216  bool back_beam; // true, if beam runs from right (s=C) to left (s=0).
217  bool back_track; // true, if tracking opposite to the beam direction.
218  bool back_path; // true, if tracking from right (s=C) to left (s=0).
219  // back_path = back_beam && ! back_track || back_track && ! back_beam.
220 
221  double flip_B; // set to -1.0 to flip B fields, when back_beam is true.
222  double flip_s; // set to -1.0 to flip direction of s,
223  // when back_path is true.
224 
225 private:
226 
227  // Not implemented.
228  DefaultVisitor();
230  void operator=(const DefaultVisitor &);
231 
232  // Default do-nothing routine.
233  virtual void applyDefault(const ElementBase &);
234 
235  // The element order flag. Initially set to back_path.
236  // This flag is reversed locally for reflected beam lines.
238 };
239 
240 #endif // CLASSIC_DefaultVisitor_HH
virtual void visitCyclotron(const Cyclotron &)
Apply the algorithm to an cyclotron.
virtual void visitFlexibleCollimator(const FlexibleCollimator &)
Apply the algorithm to a flexible collimator.
Definition: Source.h:12
Interface for solenoids.
Definition: RBend3D.h:39
virtual void visitMultipoleWrapper(const MultipoleWrapper &)
Apply the algorithm to an multipole wrapper..
virtual void visitDrift(const Drift &)
Apply the algorithm to a drift.
virtual void visitMonitor(const Monitor &)
Apply the algorithm to a monitor.
Interface for basic beam line object.
Definition: ElementBase.h:128
Definition: Offset.h:66
virtual void applyDefault(const ElementBase &)
Interface for septum magnet.
Definition: Septum.h:11
Interface for electrostatic separator.
Definition: Separator.h:33
Interface for a Cyclotron.
Definition: Cyclotron.h:91
virtual void visitTravelingWave(const TravelingWave &)
Apply the algorithm to a RF cavity.
Interface for beam position monitors.
Definition: Monitor.h:41
Interface for RF Quadrupole.
Definition: RFQuadrupole.h:30
virtual void visitRFQuadrupole(const RFQuadrupole &)
Apply the algorithm to a RF quadrupole.
virtual void visitAlignWrapper(const AlignWrapper &)
Apply the algorithm to an align wrapper..
virtual void visitVerticalFFAMagnet(const VerticalFFAMagnet &)
Apply the algorithm to a RF cavity.
virtual void visitSolenoid(const Solenoid &)
Apply the algorithm to a solenoid.
virtual void visitOffset(const Offset &)
Apply the algorithm to an Offset.
Define the position of a misaligned element.
Definition: AlignWrapper.h:39
Interface for RF cavity.
Definition: ParallelPlate.h:36
virtual void visitMultipoleTCurvedVarRadius(const MultipoleTCurvedVarRadius &)
Apply the algorithm to a multipoleTCurvedVarRadius.
virtual void visitCyclotronWrapper(const CyclotronWrapper &)
Apply the algorithm to an cyclotron wrapper..
virtual void visitCorrector(const Corrector &)
Apply the algorithm to a corrector.
virtual void visitRing(const Ring &)
Apply the algorithm to an opal ring..
Interface for general corrector.
Definition: Corrector.h:35
Abstract collimator.
Definition: RBend.h:73
Interface for beam diagnostics.
Definition: Diagnostic.h:32
Interface for a marker.
Definition: Marker.h:32
virtual void visitFlaggedElmPtr(const FlaggedElmPtr &)
Apply the algorithm to a FlaggedElmPtr.
Representation of a perturbed multipole.
virtual void visitBeamBeam(const BeamBeam &)
Apply the algorithm to a beam-beam.
void operator=(const DefaultVisitor &)
Interface for drift space.
Definition: Drift.h:33
virtual void visitCyclotronValley(const CyclotronValley &)
Apply the algorithm to a CyclotronValley.
virtual void visitCorrectorWrapper(const CorrectorWrapper &)
Apply the algorithm to an corrector wrapper..
virtual void visitMapIntegrator(const MapIntegrator &)
Apply the algorithm to an integrator capable of mapping.
Default algorithms.
virtual void visitMultipoleTCurvedConstRadius(const MultipoleTCurvedConstRadius &)
Apply the algorithm to a multipoleTCurvedConstRadius.
Interface for general multipole.
Definition: Multipole.h:46
virtual void visitIntegrator(const Integrator &)
Apply the algorithm to a generic integrator.
virtual void visitMultipoleT(const MultipoleT &)
Apply the algorithm to a multipoleT.
virtual void visitTrackIntegrator(const TrackIntegrator &)
Apply the algorithm to an integrator capable of tracking.
virtual void visitMarker(const Marker &)
Apply the algorithm to a marker.
virtual void visitRFCavity(const RFCavity &)
Apply the algorithm to a RF cavity.
Interface for probe.
Definition: Probe.h:16
virtual void visitRBend(const RBend &)
Apply the algorithm to a rectangular bend.
virtual void visitVariableRFCavity(const VariableRFCavity &vcav)
Apply the algorithm to a RF cavity.
virtual ~DefaultVisitor()=0
virtual void visitMultipoleTStraight(const MultipoleTStraight &)
Apply the algorithm to a multipoleTStraight.
virtual void visitDegrader(const Degrader &)
Apply the algorithm to a drift.
virtual void visitBeamStripping(const BeamStripping &)
Apply the algorithm to a beam stripping.
virtual void visitSBend3D(const SBend3D &)
Apply the algorithm to a sector bend.
Interface for cyclotron collimator.
Definition: CCollimator.h:13
Abstract beam-beam interaction.
Definition: BeamBeam.h:37
Interface for RF cavity.
Definition: TravelingWave.h:37
Definition: SBend.h:68
Representation of a perturbed cyclotron.
const Beamline & itsLine
virtual void visitMultipole(const Multipole &)
Apply the algorithm to a multipole.
Interface for cyclotron valley.
virtual void visitRBendWrapper(const RBendWrapper &)
Apply the algorithm to an RBend wrapper..
Representation of a perturbed sector bend.
Definition: SBendWrapper.h:37
Interface for solenoids.
Definition: Solenoid.h:36
An abstract sequence of beam line components.
Definition: Beamline.h:37
Integrate particle.
virtual void visitSeptum(const Septum &)
Apply the algorithm to a septum.
virtual void visitBeamline(const Beamline &)
Apply the algorithm to a beam line.
virtual void visitStripper(const Stripper &)
Apply the algorithm to a charge stripper.
virtual void execute()
Apply the algorithm to the top-level beamline.
Representation for a perturbed closed orbit corrector.
virtual void visitDiagnostic(const Diagnostic &)
Apply the algorithm to a diagnostic.
virtual void visitPatch(const Patch &pat)
Apply the algorithm to a patch.
Interface for RF cavity.
Definition: RFCavity.h:37
virtual void visitComponent(const Component &)
Apply the algorithm to an arbitrary component.
virtual void visitSBend(const SBend &)
Apply the algorithm to a sector bend.
virtual void visitProbe(const Probe &prob)
Apply the algorithm to a probe.
Abstract collimator.
Definition: Degrader.h:37
virtual void visitCCollimator(const CCollimator &)
Apply the algorithm to a collimator.
virtual void visitLambertson(const Lambertson &)
Apply the algorithm to a Lambertson.
virtual void visitScalingFFAMagnet(const ScalingFFAMagnet &)
Apply the algorithm to a scaling FFA magnet.
virtual void visitParallelPlate(const ParallelPlate &)
Apply the algorithm to a ParallelPlate.
Base class for special integrators.
Definition: Integrator.h:41
Ring describes a ring type geometry for tracking.
Definition: Ring.h:64
Interface for a geometric patch.
Definition: Patch.h:34
Interface for a single beam element.
Definition: Component.h:51
virtual void visitVariableRFCavityFringeField(const VariableRFCavityFringeField &vcav)
Apply the algorithm to a RF cavity.
Representation of a perturbed rectangular bend.
Definition: RBendWrapper.h:37
virtual void visitRBend3D(const RBend3D &)
Apply the algorithm to a rectangular bend.
Abstract algorithm.
virtual void visitSource(const Source &)
Apply the algorithm to a source.
virtual void visitSeparator(const Separator &)
Apply the algorithm to a separator.
Interface for a Lambertson septum.
Definition: Lambertson.h:33
Integrate a map.
Definition: MapIntegrator.h:41
virtual void visitSBendWrapper(const SBendWrapper &)
Apply the algorithm to an SBend wrapper..
A section of a beam line.
Definition: FlaggedElmPtr.h:36