AliRoot Core  3dc7879 (3dc7879)
AliVParticle.h
Go to the documentation of this file.
1 #ifndef AliVParticle_H
2 #define AliVParticle_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 /* $Id$ */
7 
8 //-------------------------------------------------------------------------
9 // base class for ESD and AOD particles
10 // Author: Markus Oldenburg, CERN
11 //-------------------------------------------------------------------------
12 
13 #include <Rtypes.h>
14 #include <TObject.h>
15 #include "AliVMisc.h"
16 
17 class TLorentzVector;
18 class TParticle;
19 
20 #include <float.h>
21 
22 const Double_t kAlmost1=1. - Double_t(FLT_EPSILON);
23 const Double_t kAlmost0=Double_t(FLT_MIN);
24 
25 const Double_t kB2C=-0.299792458e-3;
26 const Double_t kAlmost0Field=1.e-13;
27 
28 class AliVParticle: public TObject {
29 
30 public:
32  virtual ~AliVParticle() { }
33  AliVParticle(const AliVParticle& vPart);
34  AliVParticle& operator=(const AliVParticle& vPart);
35 
36  // constructor for reinitialisation of vtable
38 
39  // kinematics
40  virtual Double_t Px() const = 0;
41  virtual Double_t Py() const = 0;
42  virtual Double_t Pz() const = 0;
43  virtual Double_t Pt() const = 0;
44  virtual Double_t P() const = 0;
45  virtual Bool_t PxPyPz(Double_t p[3]) const = 0;
46 
47  virtual void Momentum(TLorentzVector &) { ; }
48 
49  virtual Double_t Xv() const = 0;
50  virtual Double_t Yv() const = 0;
51  virtual Double_t Zv() const = 0;
52  virtual Bool_t XvYvZv(Double_t x[3]) const = 0;
53 //virtual Double_t T() const { return -1; } // Conflicts with AliAODTrack.h
54  virtual Double_t Tv() const { return 0 ; }
55 
56  virtual Double_t OneOverPt() const = 0;
57  virtual Double_t Phi() const = 0;
58  virtual Double_t Theta() const = 0;
59 
60 
61  virtual Double_t E() const = 0;
62  virtual Double_t M() const = 0;
63 
64  virtual Double_t Eta() const = 0;
65  virtual Double_t Y() const = 0;
66 
67  virtual Short_t Charge() const = 0;
68 
69  virtual Int_t Label() const { return -1; }
70  virtual Int_t GetLabel() const = 0;
71  // PID
72  virtual Int_t PdgCode() const = 0;
73  virtual const Double_t *PID() const = 0; // return PID object (to be defined, still)
74 
75  // Not possible GetStatus(), Long in AliVTrack, Int in AliMCParticle
76  virtual ULong64_t GetStatus() const { return 0 ; }
77  virtual UInt_t MCStatusCode() const { return 0 ; }
78 
79  virtual TParticle *Particle() const { return NULL ; }
80 
87  Int_t Compare( const TObject* obj) const;
88 
89 
93  Bool_t IsSortable() const { return kTRUE; }
94 
95  virtual void SetFlag(UInt_t) {;}
96  virtual UInt_t GetFlag() const {return 0;}
97 
98  // coordinate system conversions
99  Bool_t Local2GlobalMomentum(Double_t p[3], Double_t alpha) const;
100  Bool_t Local2GlobalPosition(Double_t r[3], Double_t alpha) const;
101  Bool_t Global2LocalMomentum(Double_t p[3], Short_t charge, Double_t &alpha) const;
102  Bool_t Global2LocalPosition(Double_t r[3], Double_t alpha) const;
103 
104  //Navigation
105  virtual Int_t GetMother() const {return -1;}
106  virtual Int_t GetFirstDaughter() const {return -1;}
107  virtual Int_t GetLastDaughter() const {return -1;}
108  // Cannot use GetDaughter because of AliAODRecoDecay
109 //virtual Int_t GetDaughter(Int_t) const {return -1;}
110  virtual Int_t GetDaughterLabel(Int_t) const {return -1;}
111  virtual Int_t GetNDaughters () const {return 0 ;}
112 
113  virtual void SetGeneratorIndex(Short_t) {;}
114  virtual Short_t GetGeneratorIndex() const {return -1;}
115 
116  virtual void SetPrimary(Bool_t) { ; }
117  virtual Bool_t IsPrimary() const { return 0 ; }
118 
119  virtual void SetPhysicalPrimary(Bool_t ) { ; }
120  virtual Bool_t IsPhysicalPrimary() const { return 0 ; }
121 
122  virtual void SetSecondaryFromWeakDecay(Bool_t ) { ; }
123  virtual Bool_t IsSecondaryFromWeakDecay() const { return 0 ; }
124 
125  virtual void SetSecondaryFromMaterial(Bool_t ) { ; }
126  virtual Bool_t IsSecondaryFromMaterial() const { return 0 ; }
127 
128  ClassDef(AliVParticle, 4) // base class for particles
129 };
130 
131 #endif
virtual Bool_t IsPhysicalPrimary() const
Definition: AliVParticle.h:120
virtual Int_t GetLastDaughter() const
Definition: AliVParticle.h:107
Int_t Compare(const TObject *obj) const
virtual void Momentum(TLorentzVector &)
Definition: AliVParticle.h:47
virtual Double_t Y() const =0
virtual Double_t Tv() const
Definition: AliVParticle.h:54
virtual void SetSecondaryFromMaterial(Bool_t)
Definition: AliVParticle.h:125
virtual Double_t Zv() const =0
virtual Double_t Phi() const =0
virtual Short_t Charge() const =0
virtual Short_t GetGeneratorIndex() const
Definition: AliVParticle.h:114
AliVParticle & operator=(const AliVParticle &vPart)
virtual Bool_t PxPyPz(Double_t p[3]) const =0
virtual UInt_t MCStatusCode() const
Definition: AliVParticle.h:77
virtual Double_t P() const =0
virtual Double_t Xv() const =0
virtual Int_t GetDaughterLabel(Int_t) const
Definition: AliVParticle.h:110
Float_t p[]
Definition: kNNTest.C:133
virtual TParticle * Particle() const
Definition: AliVParticle.h:79
virtual Int_t GetLabel() const =0
Bool_t Local2GlobalMomentum(Double_t p[3], Double_t alpha) const
virtual Double_t Yv() const =0
virtual Bool_t XvYvZv(Double_t x[3]) const =0
virtual Double_t Px() const =0
Bool_t Global2LocalPosition(Double_t r[3], Double_t alpha) const
virtual Double_t Theta() const =0
const Double_t kB2C
Definition: AliVParticle.h:25
Bool_t Global2LocalMomentum(Double_t p[3], Short_t charge, Double_t &alpha) const
virtual void SetPhysicalPrimary(Bool_t)
Definition: AliVParticle.h:119
virtual Double_t Pz() const =0
virtual UInt_t GetFlag() const
Definition: AliVParticle.h:96
virtual Int_t GetMother() const
Definition: AliVParticle.h:105
virtual void SetSecondaryFromWeakDecay(Bool_t)
Definition: AliVParticle.h:122
AliVConstructorReinitialisationFlag
Definition: AliVMisc.h:10
virtual void SetFlag(UInt_t)
Definition: AliVParticle.h:95
virtual Int_t GetFirstDaughter() const
Definition: AliVParticle.h:106
virtual Double_t OneOverPt() const =0
const Double_t kAlmost0
Definition: AliVParticle.h:23
const Double_t kAlmost0Field
Definition: AliVParticle.h:26
virtual Double_t M() const =0
virtual Double_t Pt() const =0
virtual Int_t Label() const
Definition: AliVParticle.h:69
virtual Bool_t IsSecondaryFromMaterial() const
Definition: AliVParticle.h:126
virtual void SetGeneratorIndex(Short_t)
Definition: AliVParticle.h:113
Bool_t IsSortable() const
Definition: AliVParticle.h:93
virtual ULong64_t GetStatus() const
Definition: AliVParticle.h:76
virtual const Double_t * PID() const =0
Bool_t Local2GlobalPosition(Double_t r[3], Double_t alpha) const
AliVParticle(AliVConstructorReinitialisationFlag)
Definition: AliVParticle.h:37
virtual Int_t PdgCode() const =0
virtual Double_t Eta() const =0
virtual ~AliVParticle()
Definition: AliVParticle.h:32
virtual Int_t GetNDaughters() const
Definition: AliVParticle.h:111
virtual Bool_t IsPrimary() const
Definition: AliVParticle.h:117
virtual Double_t Py() const =0
virtual void SetPrimary(Bool_t)
Definition: AliVParticle.h:116
virtual Double_t E() const =0
virtual Bool_t IsSecondaryFromWeakDecay() const
Definition: AliVParticle.h:123
const Double_t kAlmost1
Definition: AliVParticle.h:22