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