StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
PhotosParticle.h
1 #ifndef _PhotosParticle_h_included_
2 #define _PhotosParticle_h_included_
3 
19 #include <vector>
20 #include "Photos.h"
21 
22 namespace Photospp
23 {
24 
25 class PhotosParticle
26 {
27 public:
29  static const int STABLE=1;
30 
32  static const int DECAYED=2;
33 
35  static const int HISTORY=3;
36 
38  static const int X_AXIS=1;
39 
41  static const int Y_AXIS=2;
42 
44  static const int Z_AXIS=3;
45 
47  static const int Z0 = 23;
48 
50  static const int HIGGS = 25;
51 
53  static const int HIGGS_H = 35;
54 
56  static const int HIGGS_A = 36;
57 
59  static const int HIGGS_PLUS = 37;
60 
62  static const int HIGGS_MINUS = -37;
63 
65  static const int W_PLUS = 24;
66 
68  static const int W_MINUS = -24;
69 
71  static const int GAMMA = 22;
72 
74  static const int TAU_PLUS = -15;
75 
77  static const int TAU_MINUS = 15;
78 
80  static const int TAU_NEUTRINO = 16;
81 
83  static const int TAU_ANTINEUTRINO = -16;
84 
86  static const int MUON_PLUS = -13;
87 
89  static const int MUON_MINUS = 13;
90 
92  static const int MUON_NEUTRINO = 14;
93 
95  static const int MUON_ANTINEUTRINO = -14;
96 
98  static const int POSITRON = -11;
99 
101  static const int ELECTRON = 11;
102 
104  static const int ELECTRON_NEUTRINO = 12;
105 
107  static const int ELECTRON_ANTINEUTRINO = -12;
108 
110  static const int UP = 2;
111 
113  static const int ANTIUP = -2;
114 
116  static const int DOWN = 1;
117 
119  static const int ANTIDOWN = -1;
120 
122  static const int OTHER = 0;
123 
124 public:
125  virtual ~PhotosParticle(){};
126 
128  bool hasDaughters();
129 
134 
137  std::vector<PhotosParticle *> findProductionMothers();
138 
140  std::vector<PhotosParticle *> getDecayTree();
141 
144  void boostToRestFrame(PhotosParticle * boost);
145 
149 
152  void boostFromRestFrame(PhotosParticle * boost);
153 
157 
159  void boostAlongZ(double pz, double e);
160 
163  void rotate(int axis, double phi, int second_axis=Z_AXIS);
164 
167  void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS);
168 
174  double getRotationAngle(int axis, int second_axis=Z_AXIS);
175 
177  double getP();
178 
180  double getP(int axis);
181 
183  void setP(int axis, double p_component);
184 
186  virtual double getVirtuality();
187 
188 public:
191  virtual bool checkMomentumConservation()=0;
192 
194  virtual double getPx()=0;
195 
197  virtual double getPy()=0;
198 
200  virtual double getPz()=0;
201 
203  virtual double getE()=0;
204 
206  virtual double getMass() = 0;
207 
209  virtual void setPx( double px )=0;
210 
212  virtual void setPy( double py )=0;
213 
215  virtual void setPz( double pz )=0;
216 
218  virtual void setE( double e )=0;
219 
221  virtual void setMothers(std::vector<PhotosParticle*> mothers)=0;
222 
224  virtual void setDaughters(std::vector<PhotosParticle*> daughters)=0;
225 
227  virtual void addDaughter(PhotosParticle* daughter)=0;
228 
230  virtual std::vector<PhotosParticle*> getMothers()=0;
231 
233  virtual std::vector<PhotosParticle*> getDaughters()=0;
234 
237  virtual std::vector<PhotosParticle*> getAllDecayProducts()=0;
238 
240  virtual void setPdgID(int pdg_id)=0;
241 
243  virtual void setMass(double mass)=0;
244 
246  virtual void setStatus(int status)=0;
247 
249  virtual int getPdgID()=0;
250 
252  virtual int getStatus()=0;
253 
255  virtual int getBarcode()=0;
256 
264  virtual PhotosParticle * createNewParticle(int pdg_id, int status,
265  double mass, double px,
266  double py, double pz,
267  double e)=0;
268 
272  virtual void createHistoryEntry()=0;
273 
276  virtual void createSelfDecayVertex(PhotosParticle *out)=0;
277 
279  virtual void print()=0;
280 };
281 
282 } // namespace Photospp
283 #endif
virtual void setPz(double pz)=0
void boostToRestFrame(PhotosParticle *boost)
void boostDaughtersFromRestFrame(PhotosParticle *boost)
void boostAlongZ(double pz, double e)
static const int Z_AXIS
static const int DECAYED
void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS)
double getRotationAngle(int axis, int second_axis=Z_AXIS)
PhotosParticle * findLastSelf()
virtual PhotosParticle * createNewParticle(int pdg_id, int status, double mass, double px, double py, double pz, double e)=0
void boostDaughtersToRestFrame(PhotosParticle *boost)
static const int TAU_MINUS
static const int ANTIDOWN
virtual void setPx(double px)=0
static const int OTHER
static const int ANTIUP
virtual double getVirtuality()
virtual double getPy()=0
std::vector< PhotosParticle * > findProductionMothers()
virtual int getPdgID()=0
static const int HIGGS_H
static const int HIGGS_A
static const int W_MINUS
static const int GAMMA
static const int STABLE
virtual double getPx()=0
static const int W_PLUS
static const int TAU_ANTINEUTRINO
virtual int getBarcode()=0
virtual void setPy(double py)=0
static const int ELECTRON_NEUTRINO
static const int HISTORY
virtual void setMothers(std::vector< PhotosParticle * > mothers)=0
virtual double getPz()=0
static const int ELECTRON
static const int HIGGS
static const int TAU_PLUS
void boostFromRestFrame(PhotosParticle *boost)
std::vector< PhotosParticle * > getDecayTree()
static const int HIGGS_MINUS
virtual void addDaughter(PhotosParticle *daughter)=0
virtual void setE(double e)=0
static const int TAU_NEUTRINO
static const int MUON_PLUS
virtual std::vector< PhotosParticle * > getAllDecayProducts()=0
void setP(int axis, double p_component)
Abstract base class for particle in the event. This class also handles boosting.
virtual int getStatus()=0
virtual void setMass(double mass)=0
virtual void setDaughters(std::vector< PhotosParticle * > daughters)=0
static const int MUON_ANTINEUTRINO
static const int MUON_NEUTRINO
virtual bool checkMomentumConservation()=0
static const int ELECTRON_ANTINEUTRINO
static const int Y_AXIS
static const int X_AXIS
static const int HIGGS_PLUS
virtual void setPdgID(int pdg_id)=0
static const int POSITRON
static const int MUON_MINUS
virtual void createHistoryEntry()=0
virtual void print()=0
virtual std::vector< PhotosParticle * > getMothers()=0
virtual void setStatus(int status)=0
virtual std::vector< PhotosParticle * > getDaughters()=0
virtual void createSelfDecayVertex(PhotosParticle *out)=0
virtual double getMass()=0
virtual double getE()=0
void rotate(int axis, double phi, int second_axis=Z_AXIS)