eic-smear  1.0.3
A collection of ROOT classes for Monte Carlo events and a fast-smearing code simulating detector effects for the Electron-Ion Collider task force
Acceptance.h
Go to the documentation of this file.
1 
10 #ifndef INCLUDE_EICSMEAR_SMEAR_ACCEPTANCE_H_
11 #define INCLUDE_EICSMEAR_SMEAR_ACCEPTANCE_H_
12 
13 #include <set>
14 #include <vector>
15 
16 #include <TFormula.h>
17 #include <TMath.h>
18 
19 #include "eicsmear/smear/Smear.h" // Definition of KinType
20 
21 class TString;
22 
23 namespace erhic {
24 
25 class VirtualParticle;
26 
27 } // namespace erhic
28 
29 namespace Smear {
30 
36 class Acceptance {
37  public:
44  class CustomCut {
45  public:
46  virtual ~CustomCut();
47  CustomCut();
48  CustomCut(const TString&, double min, double max);
49  virtual bool Contains(const erhic::VirtualParticle&) const;
50  protected:
51  TFormula mFormula;
52  int dim;
53  KinType Kin1;
54  KinType Kin2;
55  double Min;
56  double Max;
57  };
58 
62  class Zone {
63  public:
65  virtual ~Zone();
66 
73  Zone(double theta = 0., double = TMath::Pi(),
74  double phi = 0., double = TMath::TwoPi(),
75  double E = 0., double = TMath::Infinity(),
76  double p = 0., double = TMath::Infinity(),
77  double pt = 0., double = TMath::Infinity(),
78  double pz = -TMath::Infinity(), double = TMath::Infinity());
79 
83  virtual void Add(const CustomCut&);
84 
88  virtual Bool_t Contains(const erhic::VirtualParticle&) const;
89 
90  protected:
91  double thetaMin;
92  double thetaMax;
93  double phiMin;
94  double phiMax;
95  double EMin;
96  double EMax;
97  double PMin;
98  double PMax;
99  double pTMin;
100  double pTMax;
101  double pZMin;
102  double pZMax;
103  std::vector<Smear::Acceptance::CustomCut> CustomCuts;
104  // We want to be able to write Acceptance objects to a ROOT file,
105  // so nested classes need a dictionary as well.
106  ClassDef(Smear::Acceptance::Zone, 1)
107  };
108 
110  virtual ~Acceptance();
111 
118  explicit Acceptance(int genre = kAll);
119 
124  void AddZone(const Zone&);
125 
129  UInt_t GetNZones() const;
130 
134  Int_t GetGenre() const;
135 
139  void SetGenre(int genre);
140 
144  void SetCharge(ECharge charge);
145 
149  ECharge GetCharge() const;
150 
157  void AddParticle(int particle);
158 
167  bool Is(const erhic::VirtualParticle& prt) const;
168 
169  protected:
170  int mGenre;
171  ECharge mCharge; // Particle charges accepted (neutral, charged or all)
172  std::vector<Zone> mZones;
173  std::set<int> mParticles;
174 
175  ClassDef(Smear::Acceptance, 1)
176 };
177 
178 inline UInt_t Acceptance::GetNZones() const {
179  return mZones.size();
180 }
181 
182 inline Int_t Acceptance::GetGenre() const {
183  return mGenre;
184 }
185 
186 inline ECharge Acceptance::GetCharge() const {
187  return mCharge;
188 }
189 
190 } // namespace Smear
191 
192 #endif // INCLUDE_EICSMEAR_SMEAR_ACCEPTANCE_H_
virtual void Add(const CustomCut &)
Definition: Acceptance.cxx:165
Zone(double theta=0., double=TMath::Pi(), double phi=0., double=TMath::TwoPi(), double E=0., double=TMath::Infinity(), double p=0., double=TMath::Infinity(), double pt=0., double=TMath::Infinity(), double pz=-TMath::Infinity(), double=TMath::Infinity())
Definition: Acceptance.cxx:145
virtual ~Acceptance()
Definition: Acceptance.cxx:18
void AddZone(const Zone &)
Definition: Acceptance.cxx:26
void SetGenre(int genre)
Definition: Acceptance.cxx:30
virtual Bool_t Contains(const erhic::VirtualParticle &) const
Definition: Acceptance.cxx:169
bool Is(const erhic::VirtualParticle &prt) const
Definition: Acceptance.cxx:46
UInt_t GetNZones() const
Definition: Acceptance.h:178
void AddParticle(int particle)
Definition: Acceptance.cxx:42
Acceptance(int genre=kAll)
Definition: Acceptance.cxx:21
Int_t GetGenre() const
Definition: Acceptance.h:182
ECharge GetCharge() const
Definition: Acceptance.h:186
Abstract base class for a general particle.
void SetCharge(ECharge charge)
Definition: Acceptance.cxx:38