StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
TauolaParticle.h
1 #ifndef _TauolaParticle_h_included_
2 #define _TauolaParticle_h_included_
3 
22 #include <iostream>
23 #include <math.h>
24 #include <vector>
25 
26 #include "DecayList.h"
27 #include "Tauola.h"
28 #include "f_Decay.h"
29 
30 namespace Tauolapp
31 {
32 
33 class TauolaParticle{
34 
35  public:
36 
37  virtual ~TauolaParticle(){};
38 
41  static const int SAME_SIGN=1;
42 
45  static const int OPPOSITE_SIGN=2;
46 
49  static const int NA_SIGN=3;
50 
52  static const int STABLE=1;
53 
55  static const int DECAYED=2;
56 
58  static const int HISTORY=3;
59 
61  static const int X_AXIS=1;
62 
64  static const int Y_AXIS=2;
65 
67  static const int Z_AXIS=3;
68 
70  static const int Z0 = 23;
71 
73  static const int HIGGS = 25;
74 
76  static const int HIGGS_A = 36;
77 
79  static const int HIGGS_PLUS = 37;
80 
82  static const int HIGGS_MINUS = -37;
83 
84 
86  static const int W_PLUS = 24;
87 
89  static const int W_MINUS = -24;
90 
92  static const int GAMMA = 22;
93 
95  static const int TAU_PLUS = -15;
96 
98  static const int TAU_MINUS = 15;
99 
101  static const int TAU_NEUTRINO = 16;
102 
104  static const int TAU_ANTINEUTRINO = -16;
105 
106 
108  static const int MUON_PLUS = -13;
109 
111  static const int MUON_MINUS = 13;
112 
114  static const int MUON_NEUTRINO = 14;
115 
117  static const int MUON_ANTINEUTRINO = -14;
118 
119 
121  static const int POSITRON = -11;
122 
124  static const int ELECTRON = 11;
125 
127  static const int ELECTRON_NEUTRINO = 12;
128 
130  static const int ELECTRON_ANTINEUTRINO = -12;
131 
133  static const int UP = 2;
134 
136  static const int ANTIUP = -2;
137 
139  static const int DOWN = 1;
140 
142  static const int ANTIDOWN = -1;
143 
144  static const int GLUON = 21;
145  static const int CHARM = 4;
146  static const int TOP = 6;
147  static const int STRANGE = 3;
148  static const int BOTTOM = 5;
149 
151  static const int OTHER = 0;
152 
155  TauolaParticle * clone();
156 
158  double getAngle(TauolaParticle *);
159 
161  void add(TauolaParticle *);
162 
164  void subtract(TauolaParticle *);
165 
168  void decay();
169 
172  void addDecayToEventRecord();
173 
177  int getSign();
178 
181  double getPolarimetricX();
182 
185  double getPolarimetricY();
186 
189  double getPolarimetricZ();
190 
192  bool hasDaughters();
193 
198 
201  std::vector<TauolaParticle *> findProductionMothers();
202 
205  void boostToRestFrame(TauolaParticle * boost);
206 
210 
211 
214  void boostFromRestFrame(TauolaParticle * boost);
215 
216  void boostDaughtersFromRestFrame(TauolaParticle * boost);
217 
219  void boostAlongZ(double pz, double e);
220 
223  void rotate(int axis, double phi, int second_axis=Z_AXIS);
224 
225  void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS);
226 
232  double getRotationAngle(int axis, int second_axis=Z_AXIS);
233 
235  double getP();
236 
238  double getP(int axis);
239 
241  void setP(int axis, double p_component);
242 
244  double getMass();
245 
246 
247 
248  /**********************************************
249  Beginning of virtual methods
250 
251  ********************************************/
252 
254  virtual void undecay(){};
255 
258  virtual void checkMomentumConservation(){};
259 
261  virtual void decayEndgame(){};
262 
264  virtual double getPx()=0;
265 
267  virtual double getPy()=0;
268 
270  virtual double getPz()=0;
271 
273  virtual double getE()=0;
274 
276  virtual void setPx( double px )=0;
277 
279  virtual void setPy( double py )=0;
280 
282  virtual void setPz( double pz )=0;
283 
285  virtual void setE( double e )=0;
286 
288  virtual void setMothers(std::vector<TauolaParticle*> mothers)=0;
289 
291  virtual void setDaughters(std::vector<TauolaParticle*> daughters)=0;
292 
294  virtual std::vector<TauolaParticle*> getMothers()=0;
295 
297  virtual std::vector<TauolaParticle*> getDaughters()=0;
298 
300  virtual void setPdgID(int pdg_id)=0;
301 
303  virtual void setMass(double mass)=0;
304 
306  virtual void setStatus(int status)=0;
307 
309  virtual int getPdgID()=0;
310 
312  virtual int getStatus()=0;
313 
315  virtual int getBarcode()=0;
316 
324  virtual TauolaParticle * createNewParticle(int pdg_id, int status,
325  double mass, double px,
326  double py, double pz,
327  double e)=0;
328 
330  virtual void print()=0;
331 
332  private:
333 
336  double m_pol_x;
337 
340  double m_pol_y;
341 
344  double m_pol_z;
345 
348  double m_pol_n;
349 };
350 
351 } // namespace Tauolapp
352 #endif
353 
static const int TAU_NEUTRINO
virtual void setStatus(int status)=0
void setP(int axis, double p_component)
static const int ELECTRON
virtual void print()=0
void boostFromRestFrame(TauolaParticle *boost)
static const int POSITRON
static const int DECAYED
static const int OPPOSITE_SIGN
static const int ANTIUP
static const int MUON_PLUS
static const int SAME_SIGN
void boostDaughtersToRestFrame(TauolaParticle *boost)
static const int STABLE
static const int NA_SIGN
TauolaParticle * findLastSelf()
virtual std::vector< TauolaParticle * > getMothers()=0
virtual void setMothers(std::vector< TauolaParticle * > mothers)=0
static const int TAU_MINUS
virtual void decayEndgame()
static const int Y_AXIS
static const int X_AXIS
Abstract base class for particle in the event. This class also handles boosting.
void subtract(TauolaParticle *)
virtual void setPz(double pz)=0
static const int W_PLUS
static const int HIGGS
static const int MUON_ANTINEUTRINO
static const int OTHER
static const int ELECTRON_NEUTRINO
virtual void setPx(double px)=0
virtual void setPdgID(int pdg_id)=0
static const int MUON_NEUTRINO
virtual double getPx()=0
virtual double getE()=0
void rotate(int axis, double phi, int second_axis=Z_AXIS)
virtual void setMass(double mass)=0
static const int TAU_PLUS
virtual void setDaughters(std::vector< TauolaParticle * > daughters)=0
virtual double getPz()=0
void boostAlongZ(double pz, double e)
virtual TauolaParticle * createNewParticle(int pdg_id, int status, double mass, double px, double py, double pz, double e)=0
virtual void checkMomentumConservation()
static const int ELECTRON_ANTINEUTRINO
virtual void setE(double e)=0
static const int Z_AXIS
double getAngle(TauolaParticle *)
TauolaParticle * clone()
static const int HIGGS_MINUS
virtual void setPy(double py)=0
double getRotationAngle(int axis, int second_axis=Z_AXIS)
virtual int getStatus()=0
static const int HIGGS_PLUS
void boostToRestFrame(TauolaParticle *boost)
static const int ANTIDOWN
virtual int getPdgID()=0
std::vector< TauolaParticle * > findProductionMothers()
static const int W_MINUS
static const int HISTORY
virtual int getBarcode()=0
virtual double getPy()=0
virtual std::vector< TauolaParticle * > getDaughters()=0
static const int TAU_ANTINEUTRINO
static const int HIGGS_A
void add(TauolaParticle *)
static const int MUON_MINUS
static const int GAMMA