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
ParticleMC.h
Go to the documentation of this file.
1 
10 #ifndef INCLUDE_EICSMEAR_HADRONIC_PARTICLEMC_H_
11 #define INCLUDE_EICSMEAR_HADRONIC_PARTICLEMC_H_
12 
13 #include <iostream>
14 
15 #include <TLorentzVector.h>
16 #include <TVector3.h>
17 
18 #include "eicsmear/erhic/Pid.h"
20 
21 class TMCParticle; // ROOT Monte Carlo particle class
22 
23 namespace erhic {
24 namespace hadronic {
25 
31  public:
35  virtual ~ParticleMC() { }
36 
40  ParticleMC();
41 
45  explicit ParticleMC(const TMCParticle&);
46 
51  ParticleMC(const TLorentzVector&, const TVector3&, int, int, int);
52 
56  virtual erhic::Pid Id() const;
57 
61  virtual TLorentzVector Get4Vector() const;
62 
66  virtual Double_t GetPx() const;
67 
71  virtual Double_t GetPy() const;
72 
76  virtual Double_t GetPz() const;
77 
81  virtual Double_t GetE() const;
82 
86  virtual Double_t GetP() const;
87 
91  virtual Double_t GetM() const;
92 
96  virtual Double_t GetPt() const;
97 
101  virtual Double_t GetTheta() const;
102 
106  virtual Double_t GetPhi() const;
107 
111  virtual Double_t GetRapidity() const;
112 
116  virtual Double_t GetEta() const;
117 
122  virtual TVector3 GetVertex() const;
123 
128  virtual UShort_t GetStatus() const;
129 
134  virtual UShort_t GetParentIndex() const;
135 
140  virtual Double_t GetXFeynman() const;
141 
145  virtual void SetStatus(UShort_t);
146 
151  virtual void SetParentIndex(UShort_t);
152 
156  virtual void SetXFeynman(double xf);
157 
162  virtual void Set4Vector(const TLorentzVector&);
163 
167  virtual void SetVertex(const TVector3&);
168 
169  protected:
170  UShort_t KS;
171  UShort_t orig;
172  Int_t id;
173  Double32_t px;
174  Double32_t py;
175  Double32_t pz;
176  Double32_t E;
177  Double32_t p;
178  Double32_t m;
179  Double32_t pt;
180  Double32_t theta;
181  Double32_t phi;
182  Double32_t rapidity;
183  Double32_t eta;
184  Double32_t xFeynman;
185  Double32_t xv;
186  Double32_t yv;
187  Double32_t zv;
188 
189  ClassDef(erhic::hadronic::ParticleMC, 1)
190 };
191 
192 inline Pid ParticleMC::Id() const {
193  return Pid(id);
194 }
195 
196 inline TLorentzVector ParticleMC::Get4Vector() const {
197  return TLorentzVector(GetPx(), GetPy(), GetPz(), GetE());
198 }
199 
200 inline Double_t ParticleMC::GetPx() const {
201  return px;
202 }
203 
204 inline Double_t ParticleMC::GetPy() const {
205  return py;
206 }
207 
208 inline Double_t ParticleMC::GetPz() const {
209  return pz;
210 }
211 
212 inline Double_t ParticleMC::GetE() const {
213  return E;
214 }
215 
216 inline Double_t ParticleMC::GetP() const {
217  return p;
218 }
219 
220 inline Double_t ParticleMC::GetM() const {
221  return m;
222 }
223 
224 inline Double_t ParticleMC::GetPt() const {
225  return pt;
226 }
227 
228 inline Double_t ParticleMC::GetTheta() const {
229  return theta;
230 }
231 
232 inline Double_t ParticleMC::GetPhi() const {
233  return phi;
234 }
235 
236 inline Double_t ParticleMC::GetRapidity() const {
237  return rapidity;
238 }
239 
240 inline Double_t ParticleMC::GetEta() const {
241  return eta;
242 }
243 
244 inline TVector3 ParticleMC::GetVertex() const {
245  return TVector3(xv, yv, zv);
246 }
247 
248 inline UShort_t ParticleMC::GetStatus() const {
249  return KS;
250 }
251 
252 inline UShort_t ParticleMC::GetParentIndex() const {
253  return orig;
254 }
255 
256 inline Double_t ParticleMC::GetXFeynman() const {
257  return xFeynman;
258 }
259 
260 inline void ParticleMC::SetStatus(UShort_t i) {
261  KS = i;
262 }
263 
264 inline void ParticleMC::SetXFeynman(double xf) {
265  xFeynman = xf;
266 }
267 
268 inline void ParticleMC::SetVertex(const TVector3& v) {
269  xv = v.x();
270  yv = v.y();
271  zv = v.z();
272 }
273 
274 } // namespace hadronic
275 } // namespace erhic
276 
277 #endif // INCLUDE_EICSMEAR_HADRONIC_PARTICLEMC_H_
virtual Double_t GetM() const
Definition: ParticleMC.h:220
Double32_t p
Magnitude of momentum (GeV/c)
Definition: ParticleMC.h:177
UShort_t orig
I of parent particle.
Definition: ParticleMC.h:171
Double32_t px
x component of momentum (GeV/c)
Definition: ParticleMC.h:173
Double32_t E
Total energy (GeV)
Definition: ParticleMC.h:176
Double32_t yv
y vertex position (cm)
Definition: ParticleMC.h:186
Double32_t py
y component of momentum (GeV/c)
Definition: ParticleMC.h:174
Double32_t xFeynman
Feynman x = 2 * pz / centre of mass energy.
Definition: ParticleMC.h:184
Double32_t phi
Angle of azimuth (radians [0, 2pi])
Definition: ParticleMC.h:181
virtual Double_t GetPx() const
Definition: ParticleMC.h:200
Double32_t theta
Polar angle (radians [0, pi])
Definition: ParticleMC.h:180
virtual Double_t GetE() const
Definition: ParticleMC.h:212
virtual void SetParentIndex(UShort_t)
Definition: ParticleMC.cxx:97
Double32_t pz
z component of momentum (GeV/c)
Definition: ParticleMC.h:175
virtual void Set4Vector(const TLorentzVector &)
Definition: ParticleMC.cxx:101
virtual Double_t GetPy() const
Definition: ParticleMC.h:204
virtual Double_t GetPhi() const
Definition: ParticleMC.h:232
virtual Double_t GetPt() const
Definition: ParticleMC.h:224
Double32_t pt
Momentum transverse to the beam direction (GeV/c)
Definition: ParticleMC.h:179
virtual TVector3 GetVertex() const
Definition: ParticleMC.h:244
Double32_t zv
z vertex position (cm)
Definition: ParticleMC.h:187
virtual Double_t GetPz() const
Definition: ParticleMC.h:208
virtual UShort_t GetParentIndex() const
Definition: ParticleMC.h:252
Int_t id
PDG code identifying the particle.
Definition: ParticleMC.h:172
virtual void SetStatus(UShort_t)
Definition: ParticleMC.h:260
virtual void SetVertex(const TVector3 &)
Definition: ParticleMC.h:268
virtual void SetXFeynman(double xf)
Definition: ParticleMC.h:264
virtual Double_t GetRapidity() const
Definition: ParticleMC.h:236
virtual TLorentzVector Get4Vector() const
Definition: ParticleMC.h:196
virtual Double_t GetXFeynman() const
Definition: ParticleMC.h:256
Definition: Pid.h:22
virtual Double_t GetTheta() const
Definition: ParticleMC.h:228
UShort_t KS
Status code: see PYTHIA manual.
Definition: ParticleMC.h:170
Double32_t xv
x vertex position (cm)
Definition: ParticleMC.h:185
virtual Double_t GetP() const
Definition: ParticleMC.h:216
Abstract base class for a general particle.
virtual UShort_t GetStatus() const
Definition: ParticleMC.h:248
virtual erhic::Pid Id() const
Definition: ParticleMC.h:192
Double32_t rapidity
Rapidity.
Definition: ParticleMC.h:182
virtual Double_t GetEta() const
Definition: ParticleMC.h:240
Double32_t m
Invariant mass (GeV/c2)
Definition: ParticleMC.h:178
Double32_t eta
Pseudorapidity.
Definition: ParticleMC.h:183