PairCut stuff moved from AliHBTAnalysis to AliAnalysis
[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 class AliTrackPoints;
19 class AliClusterMap;
20
21 class AliVAODParticle : public TObject {
22 public:
23    AliVAODParticle(){}
24    virtual ~AliVAODParticle(){}
25   // kinematics
26   virtual TLorentzVector   FourMomentum() const = 0;
27   virtual TVector3         Momentum() const {return FourMomentum().Vect();};
28   virtual Double_t         Mass() const {return FourMomentum().M();};
29   virtual Double_t         E() const {return FourMomentum().E();};
30   virtual Double_t         P() const {return FourMomentum().P();};
31   virtual Double_t         Pt() const {return FourMomentum().Pt();};
32   virtual Double_t         Px() const {return FourMomentum().Px();};
33   virtual Double_t         Py() const {return FourMomentum().Py();};
34   virtual Double_t         Pz() const {return FourMomentum().Pz();};
35   virtual Double_t         Phi() const {return FourMomentum().Phi();};
36   virtual Double_t         Theta() const {return FourMomentum().Theta();};
37   virtual Double_t         Eta() const {return FourMomentum().Eta();};
38   virtual Double_t         Y() const {return FourMomentum().Rapidity();};
39   
40   virtual void             SetMomentum(Double_t/*px*/,Double_t/*py*/,Double_t/*pz*/,Double_t/*E*/) = 0;
41   virtual void             SetProductionVertex(Double_t /*vx*/, Double_t /*vy*/, Double_t /*vz*/, Double_t /*t*/) = 0;
42
43   // PID
44   virtual Double_t         Charge() const = 0;
45   virtual Double_t         GetProbability(Int_t pdg) const = 0;
46   virtual Double_t         GetPidProb() const = 0;
47   virtual Int_t            GetMostProbable() const = 0;
48   
49   virtual Int_t            GetPdgCode() const = 0;//We need to assume some PID (f.e. energy calculation) 
50                                                   //sotimes one track can apear in analysis twise (e.g. ones as pion ones as kaon)
51   virtual Int_t            GetNumberOfPids() const = 0; //returns number of non zero PID probabilities
52   virtual Int_t            GetNthPid         (Int_t idx) const = 0;//These two methods are made to be able to
53   virtual Float_t          GetNthPidProb     (Int_t idx) const = 0;//copy pid information i.e. in copy ctors
54   
55   // vertices
56   virtual TVector3         ProductionVertex() const = 0;
57   virtual Double_t         Vx() const {return ProductionVertex().X();};
58   virtual Double_t         Vy() const {return ProductionVertex().Y();};
59   virtual Double_t         Vz() const {return ProductionVertex().Z();};
60   virtual Double_t         T()  const {return 0.0;};
61
62   virtual AliVAODParticle*  Mother() const {return NULL;};
63   virtual Bool_t           HasDecayVertex() const {return kFALSE;};
64   virtual TVector3         DecayVertex() const {return TVector3();};
65   virtual Int_t            NumberOfDaughters() const {return 0;};
66   virtual AliVAODParticle* Daughter(Int_t /*index*/) const {return NULL;};
67
68   virtual Int_t            GetUID() const { return 0;}//returns unique ID of this track 
69                                                       //(may happen than the same track is selected
70                                                       //twise, f.g. as a pion and as a kaon than both have the same UID)
71                                                       
72   // type information
73   virtual Bool_t           IsSimulated() {return kFALSE;};
74   virtual Bool_t           IsTrack() {return kFALSE;};
75   virtual Bool_t           IsCluster() {return kFALSE;};
76
77   //HBT specific 
78   virtual AliTrackPoints*  GetTPCTrackPoints() const {return 0x0;}
79   virtual AliTrackPoints*  GetITSTrackPoints() const {return 0x0;}
80   virtual AliClusterMap*   GetClusterMap() const {return 0x0;}
81   virtual void             Print() const = 0;
82
83   static void    SetDebug(Int_t dbg=1){fgDebug=dbg;}
84   static Int_t   GetDebug(){return fgDebug;}
85
86 private:
87   static Int_t fgDebug;//! debug level for all the analysis package
88
89   ClassDef(AliVAODParticle,1)  // base class for AOD particles
90 };
91
92 #endif