Coding rule violations corrected.
[u/mrichter/AliRoot.git] / ANALYSIS / AliVAODParticle.h
1 #ifndef ALIVAODPARTICLE_H
2 #define ALIVAODPARTICLE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 /////////////////////////////////////////////////////////////
9 //
10 // base class for AOD particles
11 //
12 /////////////////////////////////////////////////////////////
13
14 #include <TObject.h>
15 #include <TLorentzVector.h>
16 #include <TVector3.h>
17
18 #include "AliAnalysis.h"
19
20 class AliTrackPoints;
21 class AliClusterMap;
22
23 class AliVAODParticle : public TObject {
24 public:
25    AliVAODParticle(){}
26    virtual ~AliVAODParticle(){}
27   // kinematics
28   virtual TLorentzVector   FourMomentum() const = 0;
29   virtual TVector3         Momentum() const {return FourMomentum().Vect();};
30   virtual Double_t         Mass() const {return FourMomentum().M();};
31   virtual Double_t         E() const {return FourMomentum().E();};
32   virtual Double_t         P() const {return FourMomentum().P();};
33   virtual Double_t         Pt() const {return FourMomentum().Pt();};
34   virtual Double_t         Px() const {return FourMomentum().Px();};
35   virtual Double_t         Py() const {return FourMomentum().Py();};
36   virtual Double_t         Pz() const {return FourMomentum().Pz();};
37   virtual Double_t         Phi() const {return FourMomentum().Phi();};
38   virtual Double_t         Theta() const {return FourMomentum().Theta();};
39   virtual Double_t         Eta() const {return FourMomentum().Eta();};
40   virtual Double_t         Y() const {return FourMomentum().Rapidity();};
41
42   // PID
43   virtual Double_t         Charge() const = 0;
44   virtual Double_t         GetProbability(Int_t pdg) const = 0;
45   virtual Int_t            GetMostProbable() const = 0;
46   
47   virtual Int_t            GetPdgCode() const = 0;//We need to assume some PID (f.e. energy calculation) 
48                                                   //sotimes one track can apear in analysis twise (e.g. ones as pion ones as kaon)
49   
50   // vertices
51   virtual TVector3         ProductionVertex() const = 0;
52   virtual Double_t         Vx() const {return ProductionVertex().X();};
53   virtual Double_t         Vy() const {return ProductionVertex().Y();};
54   virtual Double_t         Vz() const {return ProductionVertex().Z();};
55   virtual AliVAODParticle*  Mother() const {return NULL;};
56   virtual Bool_t           HasDecayVertex() const {return kFALSE;};
57   virtual TVector3         DecayVertex() const {return TVector3();};
58   virtual Int_t            NumberOfDaughters() const {return 0;};
59   virtual AliVAODParticle*  Daughter(Int_t /*index*/) const {return NULL;};
60
61
62   // type information
63   virtual Bool_t           IsSimulated() {return kFALSE;};
64   virtual Bool_t           IsTrack() {return kFALSE;};
65   virtual Bool_t           IsCluster() {return kFALSE;};
66
67   //HBT specific 
68   virtual AliTrackPoints*  GetTrackPoints() const {return 0x0;}
69   virtual AliClusterMap*   GetClusterMap() const {return 0x0;}
70   virtual void             Print() const = 0;
71
72   static void    SetDebug(Int_t dbg=1){fgDebug=dbg;}
73   static Int_t   GetDebug(){return fgDebug;}
74
75 private:
76   static Int_t fgDebug;//! debug level for all the analysis package
77
78   ClassDef(AliVAODParticle,1)  // base class for AOD particles
79 };
80
81 #endif