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
hadronic/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_
erhic::hadronic::ParticleMC::ParticleMC
ParticleMC()
Default constructor.
Definition: hadronic/ParticleMC.cxx:21
erhic::hadronic::ParticleMC::SetVertex
virtual void SetVertex(const TVector3 &)
Sets the origin coordinates.
Definition: hadronic/ParticleMC.h:268
erhic::hadronic::ParticleMC::Set4Vector
virtual void Set4Vector(const TLorentzVector &)
Sets the four-momentum of the particle.
Definition: hadronic/ParticleMC.cxx:101
erhic::hadronic::ParticleMC::GetM
virtual Double_t GetM() const
Returns invariant mass (GeV/c2).
Definition: hadronic/ParticleMC.h:220
Pid.h
erhic::hadronic::ParticleMC::SetXFeynman
virtual void SetXFeynman(double xf)
Sets the Feynman-x.
Definition: hadronic/ParticleMC.h:264
erhic::Pid
Particle identity.
Definition: Pid.h:22
erhic
Definition: EventDis.cxx:14
erhic::hadronic::ParticleMC::zv
Double32_t zv
z vertex position (cm)
Definition: hadronic/ParticleMC.h:187
erhic::hadronic::ParticleMC::GetPt
virtual Double_t GetPt() const
Returns momentum perpendicular to the beam direction.
Definition: hadronic/ParticleMC.h:224
erhic::hadronic::ParticleMC::id
Int_t id
PDG code identifying the particle.
Definition: hadronic/ParticleMC.h:172
erhic::hadronic::ParticleMC::GetXFeynman
virtual Double_t GetXFeynman() const
Returns Feynman-x.
Definition: hadronic/ParticleMC.h:256
erhic::hadronic::ParticleMC::KS
UShort_t KS
Status code: see PYTHIA manual.
Definition: hadronic/ParticleMC.h:170
erhic::hadronic::ParticleMC::GetVertex
virtual TVector3 GetVertex() const
Returns the origin point of the particle in cm.
Definition: hadronic/ParticleMC.h:244
erhic::hadronic::ParticleMC::GetEta
virtual Double_t GetEta() const
Returns the pseudorapidity.
Definition: hadronic/ParticleMC.h:240
erhic::hadronic::ParticleMC::rapidity
Double32_t rapidity
Rapidity.
Definition: hadronic/ParticleMC.h:182
erhic::hadronic::ParticleMC::p
Double32_t p
Magnitude of momentum (GeV/c)
Definition: hadronic/ParticleMC.h:177
erhic::hadronic::ParticleMC::xv
Double32_t xv
x vertex position (cm)
Definition: hadronic/ParticleMC.h:185
erhic::hadronic::ParticleMC
A realisation of erhic::VirtualParticle for tracks from a hadron-hadron Monte Carlo event.
Definition: hadronic/ParticleMC.h:30
erhic::hadronic::ParticleMC::m
Double32_t m
Invariant mass (GeV/c2)
Definition: hadronic/ParticleMC.h:178
erhic::hadronic::ParticleMC::GetStatus
virtual UShort_t GetStatus() const
A general "status" code for the particle (definition depends on implementation).
Definition: hadronic/ParticleMC.h:248
VirtualParticle.h
erhic::hadronic::ParticleMC::GetPz
virtual Double_t GetPz() const
Returns the z component of 3-momentum.
Definition: hadronic/ParticleMC.h:208
erhic::hadronic::ParticleMC::eta
Double32_t eta
Pseudorapidity.
Definition: hadronic/ParticleMC.h:183
erhic::hadronic::ParticleMC::orig
UShort_t orig
I of parent particle.
Definition: hadronic/ParticleMC.h:171
erhic::VirtualParticle
Abstract base class for a general particle.
Definition: VirtualParticle.h:23
erhic::hadronic::ParticleMC::GetTheta
virtual Double_t GetTheta() const
Returns the polar angle in the range [0, pi] radians.
Definition: hadronic/ParticleMC.h:228
erhic::hadronic::ParticleMC::GetParentIndex
virtual UShort_t GetParentIndex() const
Index of this particle's precursor in the event.
Definition: hadronic/ParticleMC.h:252
erhic::hadronic::ParticleMC::yv
Double32_t yv
y vertex position (cm)
Definition: hadronic/ParticleMC.h:186
erhic::hadronic::ParticleMC::~ParticleMC
virtual ~ParticleMC()
Destructor.
Definition: hadronic/ParticleMC.h:35
erhic::hadronic::ParticleMC::GetE
virtual Double_t GetE() const
Returns total energy.
Definition: hadronic/ParticleMC.h:212
erhic::hadronic::ParticleMC::E
Double32_t E
Total energy (GeV)
Definition: hadronic/ParticleMC.h:176
erhic::hadronic::ParticleMC::GetRapidity
virtual Double_t GetRapidity() const
Returns the rapidity.
Definition: hadronic/ParticleMC.h:236
erhic::hadronic::ParticleMC::SetParentIndex
virtual void SetParentIndex(UShort_t)
Sets the parent index, in the range [1, N - 1] for particles with parents, or 0 for those without.
Definition: hadronic/ParticleMC.cxx:97
erhic::hadronic::ParticleMC::py
Double32_t py
y component of momentum (GeV/c)
Definition: hadronic/ParticleMC.h:174
erhic::hadronic::ParticleMC::phi
Double32_t phi
Angle of azimuth (radians [0, 2pi])
Definition: hadronic/ParticleMC.h:181
erhic::hadronic::ParticleMC::pz
Double32_t pz
z component of momentum (GeV/c)
Definition: hadronic/ParticleMC.h:175
erhic::hadronic::ParticleMC::px
Double32_t px
x component of momentum (GeV/c)
Definition: hadronic/ParticleMC.h:173
erhic::hadronic::ParticleMC::xFeynman
Double32_t xFeynman
Feynman x = 2 * pz / centre of mass energy.
Definition: hadronic/ParticleMC.h:184
erhic::hadronic::ParticleMC::GetPx
virtual Double_t GetPx() const
Returns the x component of 3-momentum.
Definition: hadronic/ParticleMC.h:200
erhic::hadronic::ParticleMC::Id
virtual erhic::Pid Id() const
Returns identity information for the Particle species.
Definition: hadronic/ParticleMC.h:192
erhic::hadronic::ParticleMC::Get4Vector
virtual TLorentzVector Get4Vector() const
Returns the momentum-energy four-vector (px, py, pz, E).
Definition: hadronic/ParticleMC.h:196
erhic::hadronic::ParticleMC::GetP
virtual Double_t GetP() const
Returns the magnitude of 3-momentum (GeV).
Definition: hadronic/ParticleMC.h:216
erhic::hadronic::ParticleMC::GetPy
virtual Double_t GetPy() const
Returns the y component of 3-momentum.
Definition: hadronic/ParticleMC.h:204
erhic::hadronic::ParticleMC::theta
Double32_t theta
Polar angle (radians [0, pi])
Definition: hadronic/ParticleMC.h:180
erhic::hadronic::ParticleMC::pt
Double32_t pt
Momentum transverse to the beam direction (GeV/c)
Definition: hadronic/ParticleMC.h:179
erhic::hadronic::ParticleMC::GetPhi
virtual Double_t GetPhi() const
Returns the polar angle in the range [0, 2pi] radians.
Definition: hadronic/ParticleMC.h:232
erhic::hadronic::ParticleMC::SetStatus
virtual void SetStatus(UShort_t)
Sets the status code.
Definition: hadronic/ParticleMC.h:260