NilTracker.h 1.97 KB
Newer Older
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#ifndef OPAL_NILTRACKER_H
#define OPAL_NILTRACKER_H

//
//  Copyright & License: See Copyright.readme in src directory
//

/*!
  Class documentation
*/

#define NIL_VISITELEMENT(elem) virtual void visit##elem(const elem &) { }

#include "Algorithms/Tracker.h"

class BMultipoleField;
frey_m's avatar
frey_m committed
17 18
template <class T, unsigned Dim>
class PartBunchBase;
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
19 20
class AlignWrapper;
class BeamBeam;
21
class BeamStripping;
22
class CCollimator;
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
23 24 25 26 27 28
class Corrector;
class CyclotronValley;
class Degrader;
class Diagnostic;
class Drift;
class ElementBase;
29
class FlexibleCollimator;
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
class Lambertson;
class Marker;
class Monitor;
class Multipole;
class ParallelPlate;
class Probe;
class RBend;
class RFCavity;
class RFQuadrupole;
class SBend;
class Separator;
class Septum;
class Solenoid;
class TravelingWave;

class NilTracker: public Tracker {

public:
    /// Constructor.
    explicit NilTracker(const Beamline &beamline,
frey_m's avatar
frey_m committed
50 51 52
                        const PartData &reference,
                        bool revBeam,
                        bool revTrack);
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
53 54 55 56 57 58

    virtual ~NilTracker();

    NIL_VISITELEMENT(AlignWrapper)
    NIL_VISITELEMENT(Beamline)
    NIL_VISITELEMENT(BeamBeam)
59
    NIL_VISITELEMENT(BeamStripping)
60
    NIL_VISITELEMENT(CCollimator)
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
61 62 63 64 65
    NIL_VISITELEMENT(Corrector)
    NIL_VISITELEMENT(CyclotronValley)
    NIL_VISITELEMENT(Degrader)
    NIL_VISITELEMENT(Diagnostic)
    NIL_VISITELEMENT(Drift)
66
    NIL_VISITELEMENT(FlexibleCollimator)
Christof Metzger-Kraus's avatar
Christof Metzger-Kraus committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    NIL_VISITELEMENT(Lambertson)
    NIL_VISITELEMENT(Marker)
    NIL_VISITELEMENT(Monitor)
    NIL_VISITELEMENT(Multipole)
    NIL_VISITELEMENT(ParallelPlate)
    NIL_VISITELEMENT(Probe)
    NIL_VISITELEMENT(RBend)
    NIL_VISITELEMENT(RFCavity)
    NIL_VISITELEMENT(RFQuadrupole)
    NIL_VISITELEMENT(SBend)
    NIL_VISITELEMENT(Separator)
    NIL_VISITELEMENT(Septum)
    NIL_VISITELEMENT(Solenoid)
    NIL_VISITELEMENT(TravelingWave)

    virtual void execute();

private:

    NilTracker();
    NilTracker(const NilTracker &);

    void operator=(const NilTracker &);
};

#endif // OPAL_NILTRACKER_H