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;
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 
187  return mCharge;
188 }
189 
190 } // namespace Smear
191 
192 #endif // INCLUDE_EICSMEAR_SMEAR_ACCEPTANCE_H_
Smear::Acceptance::Zone::pTMax
double pTMax
Definition: Acceptance.h:100
Smear::Acceptance::Acceptance
Acceptance(int genre=kAll)
Default constructor.
Definition: Acceptance.cxx:21
Smear
Definition: Acceptance.cxx:16
Smear::Acceptance::CustomCut::Max
double Max
Definition: Acceptance.h:56
Smear::Acceptance::Is
bool Is(const erhic::VirtualParticle &prt) const
This function determines if the particle provided lies within the acceptance of the detector.
Definition: Acceptance.cxx:46
erhic
Definition: EventDis.cxx:14
Smear::Acceptance::Zone::EMin
double EMin
Definition: Acceptance.h:95
Smear::Acceptance::CustomCut::Kin2
KinType Kin2
Definition: Acceptance.h:54
Smear::Acceptance::Zone::pZMax
double pZMax
Definition: Acceptance.h:102
Smear::Acceptance::Zone::pTMin
double pTMin
Definition: Acceptance.h:99
Smear::kAll
@ kAll
Definition: Smear.h:49
Smear::Acceptance::GetNZones
UInt_t GetNZones() const
Returns the number of acceptance zones.
Definition: Acceptance.h:178
Smear::Acceptance::Zone::Add
virtual void Add(const CustomCut &)
Add a CustomCut to the list of acceptance tests.
Definition: Acceptance.cxx:165
Smear::Acceptance::AddParticle
void AddParticle(int particle)
Add a particle type to the list of particles to be smeared.
Definition: Acceptance.cxx:42
Smear.h
Smear::Acceptance::Zone::CustomCuts
std::vector< Smear::Acceptance::CustomCut > CustomCuts
Definition: Acceptance.h:103
Smear::Acceptance::Zone
A single contiguous region of acceptance.
Definition: Acceptance.h:62
Smear::Acceptance::Zone::~Zone
virtual ~Zone()
Destructor.
Definition: Acceptance.cxx:142
Smear::Acceptance::CustomCut::CustomCut
CustomCut()
Definition: Acceptance.cxx:92
Smear::Acceptance
Defines a range of acceptance in one or more of: theta, phi, E, p, pt, pz.
Definition: Acceptance.h:36
Smear::Acceptance::mParticles
std::set< int > mParticles
Definition: Acceptance.h:173
Smear::Acceptance::CustomCut::dim
int dim
Definition: Acceptance.h:52
Smear::Acceptance::SetGenre
void SetGenre(int genre)
Select the class(es) of particles to accept.
Definition: Acceptance.cxx:30
Smear::Acceptance::SetCharge
void SetCharge(ECharge charge)
Select the charges of particles to accept.
Definition: Acceptance.cxx:38
erhic::VirtualParticle
Abstract base class for a general particle.
Definition: VirtualParticle.h:23
Smear::Acceptance::Zone::PMin
double PMin
Definition: Acceptance.h:97
Smear::Acceptance::Zone::pZMin
double pZMin
Definition: Acceptance.h:101
Smear::Acceptance::GetCharge
ECharge GetCharge() const
Returns the charge of particles to accept.
Definition: Acceptance.h:186
Smear::Acceptance::Zone::EMax
double EMax
Definition: Acceptance.h:96
Smear::Acceptance::Zone::thetaMin
double thetaMin
Definition: Acceptance.h:91
Smear::Acceptance::Zone::Contains
virtual Bool_t Contains(const erhic::VirtualParticle &) const
Returns true if the particle lies in this zone, false if not.
Definition: Acceptance.cxx:169
Smear::Acceptance::~Acceptance
virtual ~Acceptance()
Destructor.
Definition: Acceptance.cxx:18
Smear::Acceptance::CustomCut
A (min, max) range in some variable evaluated as an arbitrary function of theta, phi,...
Definition: Acceptance.h:44
Smear::Acceptance::CustomCut::Min
double Min
Definition: Acceptance.h:55
Smear::Acceptance::mGenre
int mGenre
Definition: Acceptance.h:170
Smear::Acceptance::mZones
std::vector< Zone > mZones
Definition: Acceptance.h:172
Smear::Acceptance::mCharge
ECharge mCharge
Definition: Acceptance.h:171
Smear::Acceptance::CustomCut::mFormula
TFormula mFormula
Definition: Acceptance.h:51
Smear::Acceptance::Zone::Zone
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())
Constructor.
Definition: Acceptance.cxx:145
Smear::Acceptance::CustomCut::~CustomCut
virtual ~CustomCut()
Definition: Acceptance.cxx:89
Smear::ECharge
ECharge
Particle charged.
Definition: Smear.h:53
Smear::Acceptance::AddZone
void AddZone(const Zone &)
Add a new zone with user-specified coverage.
Definition: Acceptance.cxx:26
Smear::KinType
KinType
Enumerator listing particle wise kinematic variables.
Definition: Smear.h:43
Smear::Acceptance::CustomCut::Kin1
KinType Kin1
Definition: Acceptance.h:53
Smear::Acceptance::Zone::PMax
double PMax
Definition: Acceptance.h:98
Smear::Acceptance::Zone::phiMax
double phiMax
Definition: Acceptance.h:94
Smear::Acceptance::Zone::phiMin
double phiMin
Definition: Acceptance.h:93
Smear::Acceptance::GetGenre
Int_t GetGenre() const
Returns the "genre" of the particle (em, hadronic or all).
Definition: Acceptance.h:182
Smear::Acceptance::CustomCut::Contains
virtual bool Contains(const erhic::VirtualParticle &) const
Definition: Acceptance.cxx:127
Smear::Acceptance::Zone::thetaMax
double thetaMax
Definition: Acceptance.h:92