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
ParticleMCS.h
Go to the documentation of this file.
1 
10 #ifndef INCLUDE_EICSMEAR_SMEAR_PARTICLEMCS_H_
11 #define INCLUDE_EICSMEAR_SMEAR_PARTICLEMCS_H_
12 
13 #include <cmath>
14 
15 #include <TLorentzVector.h>
16 
17 #include "eicsmear/erhic/Pid.h"
19 
20 namespace Smear {
21 
22 class Event;
23 
28  public:
32  virtual ~ParticleMCS();
33 
39  ParticleMCS();
40 
44  ParticleMCS(const TLorentzVector&, int pdg, int status);
45 
49  virtual Double_t GetPx() const;
50 
54  virtual Double_t GetPy() const;
55 
59  virtual Double_t GetPz() const;
60 
64  virtual Double_t GetE() const;
65 
69  virtual TLorentzVector Get4Vector() const;
70 
74  virtual TLorentzVector PxPyPzE() const { return Get4Vector(); }
75 
85  virtual Double_t GetM() const;
86 
91  virtual Double_t GetPt() const;
92 
97  virtual TVector3 GetVertex() const;
98 
102  virtual Double_t GetP() const;
103 
107  virtual Double_t GetTheta() const;
108 
112  virtual Double_t GetPhi() const;
113 
117  virtual Double_t GetRapidity() const;
118 
122  virtual Double_t GetEta() const;
123 
128  virtual UShort_t GetStatus() const;
129 
133  virtual ::erhic::Pid Id() const;
134 
135  virtual void SetE(Double_t);
136 
137  virtual void SetP(Double_t);
138 
139  virtual void SetPt(Double_t);
140 
141  virtual void SetPz(Double_t);
142 
143  virtual void SetPhi(Double_t);
144 
145  virtual void SetTheta(Double_t);
146 
150  void Set4Vector(const TLorentzVector&) { }
151 
152  virtual void SetId(Int_t);
153 
154  virtual void SetStatus(Int_t);
155 
156  virtual UShort_t GetParentIndex() const { return 0; }
157 
162  virtual void Print(Option_t* = "") const;
163 
168  virtual void SetVertex(const TVector3&) { }
169 
170 // protected:
171  UShort_t status;
172  Int_t id;
173  Double32_t px;
174  Double32_t py;
175  Double32_t pz;
176  Double32_t E;
177  Double32_t pt;
178  Double32_t p;
179  Double32_t theta;
180  Double32_t phi;
181 
182  ClassDef(Smear::ParticleMCS, 1)
183 };
184 
185 inline Double_t ParticleMCS::GetPx() const {
186  return p * sin(theta) * cos(phi);
187 }
188 
189 inline Double_t ParticleMCS::GetPy() const {
190  return p * sin(theta) * sin(phi);
191 }
192 
193 inline Double_t ParticleMCS::GetPz() const {
194  return pz;
195 }
196 
197 inline Double_t ParticleMCS::GetE() const {
198  return E;
199 }
200 
201 inline Double_t ParticleMCS::GetM() const {
202  return sqrt(pow(E, 2.) - pow(p, 2.));
203 }
204 
205 inline Double_t ParticleMCS::GetPt() const {
206  return pt;
207 }
208 
209 inline TVector3 ParticleMCS::GetVertex() const {
210  return TVector3();
211 }
212 
213 inline Double_t ParticleMCS::GetP() const {
214  return p;
215 }
216 
217 inline Double_t ParticleMCS::GetTheta() const {
218  return theta;
219 }
220 
221 inline Double_t ParticleMCS::GetPhi() const {
222  return phi;
223 }
224 
225 inline UShort_t ParticleMCS::GetStatus() const {
226  return status;
227 }
228 
229 inline void ParticleMCS::SetE(Double_t e) {
230  E = e;
231 }
232 
233 inline void ParticleMCS::SetP(Double_t momentum) {
234  p = momentum;
235 }
236 
237 inline void ParticleMCS::SetPt(Double_t momentum) {
238  pt = momentum;
239 }
240 
241 inline void ParticleMCS::SetPz(Double_t momentum) {
242  pz = momentum;
243 }
244 
245 inline void ParticleMCS::SetPhi(Double_t value) {
246  phi = value;
247 }
248 
249 inline void ParticleMCS::SetTheta(Double_t value) {
250  theta = value;
251 }
252 
253 inline void ParticleMCS::SetId(Int_t i) {
254  id = i;
255 }
256 
257 inline void ParticleMCS::SetStatus(Int_t i) {
258  status = i;
259 }
260 
261 inline erhic::Pid ParticleMCS::Id() const {
262  return ::erhic::Pid(id);
263 }
264 
265 } // namespace Smear
266 
267 #endif // INCLUDE_EICSMEAR_SMEAR_PARTICLEMCS_H_
virtual ~ParticleMCS()
Definition: ParticleMCS.cxx:45
Int_t id
PDG particle code.
Definition: ParticleMCS.h:172
virtual void SetVertex(const TVector3 &)
Definition: ParticleMCS.h:168
Double32_t phi
Azimuthal angle.
Definition: ParticleMCS.h:180
virtual TLorentzVector PxPyPzE() const
Definition: ParticleMCS.h:74
virtual TLorentzVector Get4Vector() const
Definition: ParticleMCS.cxx:48
virtual ::erhic::Pid Id() const
Definition: ParticleMCS.h:261
virtual Double_t GetM() const
Definition: ParticleMCS.h:201
virtual Double_t GetPy() const
Definition: ParticleMCS.h:189
void Set4Vector(const TLorentzVector &)
Definition: ParticleMCS.h:150
Double32_t E
Energy of particle.
Definition: ParticleMCS.h:176
virtual void Print(Option_t *="") const
Definition: ParticleMCS.cxx:52
Double32_t py
y component of particle momentum
Definition: ParticleMCS.h:174
virtual Double_t GetPhi() const
Definition: ParticleMCS.h:221
Double32_t p
Total momentum of particle.
Definition: ParticleMCS.h:178
virtual UShort_t GetParentIndex() const
Definition: ParticleMCS.h:156
Double32_t px
x component of particle momentum
Definition: ParticleMCS.h:173
virtual Double_t GetPx() const
Definition: ParticleMCS.h:185
virtual Double_t GetTheta() const
Definition: ParticleMCS.h:217
virtual Double_t GetRapidity() const
Definition: ParticleMCS.cxx:81
UShort_t status
Status code.
Definition: ParticleMCS.h:171
virtual TVector3 GetVertex() const
Definition: ParticleMCS.h:209
Double32_t pt
Transverse momentum of particle.
Definition: ParticleMCS.h:177
virtual Double_t GetE() const
Definition: ParticleMCS.h:197
Definition: Pid.h:22
virtual Double_t GetP() const
Definition: ParticleMCS.h:213
virtual UShort_t GetStatus() const
Definition: ParticleMCS.h:225
Double32_t pz
z component of particle momentum
Definition: ParticleMCS.h:175
virtual Double_t GetPt() const
Definition: ParticleMCS.h:205
Abstract base class for a general particle.
Double32_t theta
Polar angle.
Definition: ParticleMCS.h:179
virtual Double_t GetPz() const
Definition: ParticleMCS.h:193
virtual Double_t GetEta() const
Definition: ParticleMCS.cxx:70