OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
FlexibleCollimator.h
Go to the documentation of this file.
1 #ifndef CLASSIC_FlexibleCollimator_HH
2 #define CLASSIC_FlexibleCollimator_HH
3 
5 #include "Utilities/MSLang.h"
7 
8 #include <memory>
9 
10 class BeamlineVisitor;
11 class LossDataSink;
12 // Class FlexibleCollimator
13 // ------------------------------------------------------------------------
15 // Class FlexibleCollimator defines the abstract interface for a collimator.
16 
18 
19 public:
20 
22  explicit FlexibleCollimator(const std::string &name);
23 
26  virtual ~FlexibleCollimator();
27 
29  virtual void accept(BeamlineVisitor &) const override;
30 
31  virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override;
32 
33  virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override;
34 
35  virtual bool checkCollimator(PartBunchBase<double, 3> *bunch, const int turnnumber, const double t, const double tstep);
36 
37  virtual void initialise(PartBunchBase<double, 3> *bunch, double &startField, double &endField) override;
38 
39  virtual void initialise(PartBunchBase<double, 3> *bunch);
40 
41  virtual void finalise() override;
42 
43  virtual bool bends() const override;
44 
45  virtual void goOnline(const double &kineticEnergy) override;
46 
47  virtual void goOffline() override;
48 
49  virtual ElementBase::ElementType getType() const override;
50 
51  virtual void getDimensions(double &zBegin, double &zEnd) const override;
52 
53  void print();
54 
55  void setOutputFN(const std::string &fn);
56  std::string getOutputFN() const;
57 
58  unsigned int getLosses() const;
59 
60  void setDescription(const std::string &desc);
61  std::string getDescription() const;
62 
63  bool isStopped(const Vector_t &R, const Vector_t &P, double recpgamma);
64 
65  void writeHolesAndQuadtree(const std::string &baseFilename) const;
66 
67 private:
68 
69  // Not implemented.
70  void operator=(const FlexibleCollimator &);
71 
72  std::string description_m;
73  std::vector<std::shared_ptr<mslang::Base> > holes_m;
76 
77  std::string filename_m;
79  bool informed_m;
80  unsigned int losses_m;
81  std::unique_ptr<LossDataSink> lossDs_m;
82 
84 };
85 
86 inline
87 unsigned int FlexibleCollimator::getLosses() const {
88  return losses_m;
89 }
90 
91 inline
93  return false;
94 }
95 
96 inline
97 void FlexibleCollimator::setOutputFN(const std::string &fn) {
98  filename_m = fn;
99 }
100 
101 inline
102 std::string FlexibleCollimator::getOutputFN() const {
103  return filename_m;
104 }
105 
106 inline
108  return description_m;
109 }
110 
111 #endif // CLASSIC_FlexibleCollimator_HH
std::string getDescription() const
Abstract collimator.
virtual void getDimensions(double &zBegin, double &zEnd) const override
virtual void accept(BeamlineVisitor &) const override
Apply visitor to FlexibleCollimator.
std::vector< std::shared_ptr< mslang::Base > > holes_m
bool isStopped(const Vector_t &R, const Vector_t &P, double recpgamma)
ParticleMatterInteractionHandler * parmatint_m
virtual ElementBase::ElementType getType() const override
Get element type std::string.
virtual void finalise() override
void setDescription(const std::string &desc)
std::unique_ptr< LossDataSink > lossDs_m
void writeHolesAndQuadtree(const std::string &baseFilename) const
std::string getOutputFN() const
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
void setOutputFN(const std::string &fn)
virtual void goOnline(const double &kineticEnergy) override
void operator=(const FlexibleCollimator &)
mslang::QuadTree tree_m
const std::string name
virtual bool checkCollimator(PartBunchBase< double, 3 > *bunch, const int turnnumber, const double t, const double tstep)
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
Interface for a single beam element.
Definition: Component.h:51
mslang::BoundingBox bb_m
Abstract algorithm.
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
unsigned int getLosses() const
virtual void goOffline() override
virtual bool bends() const override