PandaRoot
PhotosParticle.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 //****************************************************************************
14 //* This file is part of PandaRoot. *
15 //* *
16 //* PandaRoot is distributed under the terms of the *
17 //* GNU General Public License (GPL) version 3, *
18 //* copied verbatim in the file "LICENSE". *
19 //* *
20 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
21 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
22 //* The authors are listed in the file "AUTHORS". *
23 //****************************************************************************
24 
25 #ifndef _PhotosParticle_h_included_
26 #define _PhotosParticle_h_included_
27 
43 #include <vector>
44 #include "Photos.h"
45 
46 namespace Photospp {
47 
49  public:
51  static const int STABLE = 1;
52 
54  static const int DECAYED = 2;
55 
57  static const int HISTORY = 3;
58 
60  static const int X_AXIS = 1;
61 
63  static const int Y_AXIS = 2;
64 
66  static const int Z_AXIS = 3;
67 
69  static const int Z0 = 23;
70 
72  static const int HIGGS = 25;
73 
75  static const int HIGGS_H = 35;
76 
78  static const int HIGGS_A = 36;
79 
81  static const int HIGGS_PLUS = 37;
82 
84  static const int HIGGS_MINUS = -37;
85 
87  static const int W_PLUS = 24;
88 
90  static const int W_MINUS = -24;
91 
93  static const int GAMMA = 22;
94 
96  static const int TAU_PLUS = -15;
97 
99  static const int TAU_MINUS = 15;
100 
102  static const int TAU_NEUTRINO = 16;
103 
105  static const int TAU_ANTINEUTRINO = -16;
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 
120  static const int POSITRON = -11;
121 
123  static const int ELECTRON = 11;
124 
126  static const int ELECTRON_NEUTRINO = 12;
127 
129  static const int ELECTRON_ANTINEUTRINO = -12;
130 
132  static const int UP = 2;
133 
135  static const int ANTIUP = -2;
136 
138  static const int DOWN = 1;
139 
141  static const int ANTIDOWN = -1;
142 
144  static const int OTHER = 0;
145 
146  public:
147  virtual ~PhotosParticle(){};
148 
150  bool hasDaughters();
151 
156 
159  std::vector<PhotosParticle *> findProductionMothers();
160 
162  std::vector<PhotosParticle *> getDecayTree();
163 
166  void boostToRestFrame(PhotosParticle *boost);
167 
171 
174  void boostFromRestFrame(PhotosParticle *boost);
175 
179 
181  void boostAlongZ(double pz, double e);
182 
185  void rotate(int axis, double phi, int second_axis = Z_AXIS);
186 
189  void rotateDaughters(int axis, double phi, int second_axis = Z_AXIS);
190 
196  double getRotationAngle(int axis, int second_axis = Z_AXIS);
197 
199  double getP();
200 
202  double getP(int axis);
203 
205  void setP(int axis, double p_component);
206 
208  virtual double getVirtuality();
209 
210  public:
213  virtual bool checkMomentumConservation() = 0;
214 
216  virtual double getPx() = 0;
217 
219  virtual double getPy() = 0;
220 
222  virtual double getPz() = 0;
223 
225  virtual double getE() = 0;
226 
228  virtual double getMass() = 0;
229 
231  virtual void setPx(double px) = 0;
232 
234  virtual void setPy(double py) = 0;
235 
237  virtual void setPz(double pz) = 0;
238 
240  virtual void setE(double e) = 0;
241 
243  virtual void setMothers(std::vector<PhotosParticle *> mothers) = 0;
244 
246  virtual void setDaughters(std::vector<PhotosParticle *> daughters) = 0;
247 
249  virtual void addDaughter(PhotosParticle *daughter) = 0;
250 
252  virtual std::vector<PhotosParticle *> getMothers() = 0;
253 
255  virtual std::vector<PhotosParticle *> getDaughters() = 0;
256 
259  virtual std::vector<PhotosParticle *> getAllDecayProducts() = 0;
260 
262  virtual void setPdgID(int pdg_id) = 0;
263 
265  virtual void setMass(double mass) = 0;
266 
268  virtual void setStatus(int status) = 0;
269 
271  virtual int getPdgID() = 0;
272 
274  virtual int getStatus() = 0;
275 
277  virtual int getBarcode() = 0;
278 
286  virtual PhotosParticle *createNewParticle(int pdg_id, int status, double mass, double px, double py, double pz, double e) = 0;
287 
291  virtual void createHistoryEntry() = 0;
292 
295  virtual void createSelfDecayVertex(PhotosParticle *out) = 0;
296 
298  virtual void print() = 0;
299 };
300 
301 } // namespace Photospp
302 #endif
virtual void setPz(double pz)=0
virtual void setMothers(std::vector< PhotosParticle *> mothers)=0
static const int Z_AXIS
static const int DECAYED
void boostDaughtersFromRestFrame(PhotosParticle *boost)
std::vector< PhotosParticle * > getDecayTree()
PhotosParticle * findLastSelf()
virtual PhotosParticle * createNewParticle(int pdg_id, int status, double mass, double px, double py, double pz, double e)=0
virtual std::vector< PhotosParticle * > getAllDecayProducts()=0
static const int TAU_MINUS
double getRotationAngle(int axis, int second_axis=Z_AXIS)
static const int ANTIDOWN
virtual void setPx(double px)=0
static const int OTHER
static const int ANTIUP
virtual double getPy()=0
virtual int getPdgID()=0
static const int HIGGS_H
static const int HIGGS_A
static const int W_MINUS
Definition: Log.h:54
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 double getPz()=0
static const int ELECTRON
static const int HIGGS
static const int TAU_PLUS
void boostToRestFrame(PhotosParticle *boost)
virtual std::vector< PhotosParticle * > getMothers()=0
static const int HIGGS_MINUS
virtual void addDaughter(PhotosParticle *daughter)=0
virtual void setE(double e)=0
static const int TAU_NEUTRINO
virtual std::vector< PhotosParticle * > getDaughters()=0
static const int MUON_PLUS
void rotateDaughters(int axis, double phi, int second_axis=Z_AXIS)
axis
std::vector< PhotosParticle * > findProductionMothers()
virtual int getStatus()=0
virtual void setMass(double mass)=0
static const int MUON_ANTINEUTRINO
virtual double getVirtuality()
static const int MUON_NEUTRINO
virtual bool checkMomentumConservation()=0
static const int ELECTRON_ANTINEUTRINO
static const int Y_AXIS
void boostFromRestFrame(PhotosParticle *boost)
static const int X_AXIS
static const int HIGGS_PLUS
virtual void setPdgID(int pdg_id)=0
static const int POSITRON
void boostAlongZ(double pz, double e)
static const int MUON_MINUS
virtual void createHistoryEntry()=0
virtual void setDaughters(std::vector< PhotosParticle *> daughters)=0
virtual void print()=0
void setP(int axis, double p_component)
virtual void setStatus(int status)=0
virtual void createSelfDecayVertex(PhotosParticle *out)=0
virtual double getMass()=0
double pz[39]
Definition: pipisigmas.h:25
int status[10]
Definition: f_Init.h:48
void boostDaughtersToRestFrame(PhotosParticle *boost)
void rotate(int axis, double phi, int second_axis=Z_AXIS)
virtual double getE()=0