]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliVTrack.h
Take into account different MC/raw Uri structure
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliVTrack.h
1 #ifndef AliVTrack_H
2 #define AliVTrack_H
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 //-------------------------------------------------------------------------
8 //     base class for ESD and AOD tracks
9 //     Author: A. Dainese
10 //-------------------------------------------------------------------------
11
12 #include <TBits.h>
13
14 #include "AliVParticle.h"
15 #include "AliPID.h"
16
17 class AliVEvent;
18 class AliVVertex;
19 class AliExternalTrackParam;
20 class AliTPCdEdxInfo;
21 class AliDetectorPID;
22 class AliTOFHeader;
23
24  
25 class AliVTrack: public AliVParticle {
26
27 public:
28   enum {
29     kITSin        = 0x1
30     ,kITSout      = 0x2
31     ,kITSrefit    = 0x4
32     ,kITSpid      = 0x8
33     ,kTPCin       = 0x10
34     ,kTPCout      = 0x20
35     ,kTPCrefit    = 0x40
36     ,kTPCpid      = 0x80
37     ,kTRDin       = 0x100
38     ,kTRDout      = 0x200
39     ,kTRDrefit    = 0x400
40     ,kTRDpid      = 0x800
41     ,kTOFin       = 0x1000
42     ,kTOFout      = 0x2000
43     ,kTOFrefit    = 0x4000
44     ,kTOFpid      = 0x8000
45     ,kHMPIDout    = 0x10000
46     ,kHMPIDpid    = 0x20000
47     ,kEMCALmatch  = 0x40000
48     ,kTRDbackup   = 0x80000
49     ,kTOFmismatch = 0x100000
50     ,kPHOSmatch   = 0x200000
51     ,kITSupg      = 0x400000     // flag that in the ITSupgrade reco
52     //
53     ,kGlobalMerge = 0x1000000
54     ,kMultInV0    = 0x2000000     //BIT(25): assumed to be belong to V0 in multiplicity estimates
55     ,kMultSec     = 0x4000000     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates
56     ,kEmbedded    = 0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event
57     //
58     ,kITSpureSA   = 0x10000000
59     ,kTRDStop     = 0x20000000
60     ,kESDpid      = 0x40000000
61     ,kTIME        = 0x80000000
62   };
63   enum {
64     kTRDnPlanes = 6,
65     kEMCALNoMatch = -4096,
66     kTOFBCNA = -100
67   };
68
69   AliVTrack() { }
70   virtual ~AliVTrack() { }
71   AliVTrack(const AliVTrack& vTrack); 
72   AliVTrack& operator=(const AliVTrack& vTrack);
73
74   virtual const AliVEvent* GetEvent() const {return 0;}
75   virtual Int_t    GetID() const = 0;
76   virtual UChar_t  GetITSClusterMap() const = 0;
77   virtual void     GetITSdEdxSamples(Double_t s[4]) const {for (int i=4;i--;) s[i]=0;};
78   virtual const TBits* GetTPCClusterMapPtr() const {return NULL;}
79   virtual const TBits* GetTPCFitMapPtr()     const {return NULL;}
80   virtual const TBits* GetTPCSharedMapPtr()  const {return NULL;}
81   virtual Float_t  GetTPCClusterInfo(Int_t /*nNeighbours*/, Int_t /*type*/, Int_t /*row0*/=0, Int_t /*row1*/=159, Int_t /*type*/= 0) const {return 0.;}
82   virtual AliTPCdEdxInfo * GetTPCdEdxInfo() const {return 0x0;}
83   virtual UShort_t GetTPCNcls() const { return 0;}
84   virtual UShort_t GetTPCNclsF() const { return 0;}
85   virtual Double_t GetTRDslice(Int_t /*plane*/, Int_t /*slice*/) const { return -1.; }
86   virtual Int_t    GetNumberOfTRDslices() const { return 0; }
87   virtual UChar_t  GetTRDncls() const {return 0;}
88   virtual UChar_t  GetTRDntrackletsPID() const { return 0;}
89   virtual void     SetDetectorPID(const AliDetectorPID */*pid*/) {;}
90   virtual const    AliDetectorPID* GetDetectorPID() const { return 0x0; }
91   virtual Double_t GetTRDchi2()          const { return -1;}
92   
93   virtual Int_t GetEMCALcluster()     const {return kEMCALNoMatch;}
94   virtual void SetEMCALcluster(Int_t)       {;}
95   virtual Bool_t IsEMCAL()            const {return kFALSE;}
96
97   virtual Double_t GetTrackPhiOnEMCal()  const {return -999;}
98   virtual Double_t GetTrackEtaOnEMCal()  const {return -999;}
99   virtual Double_t GetTrackPtOnEMCal()   const {return -999;}
100   virtual Double_t GetTrackPOnEMCal()    const {return -999;}
101   virtual Bool_t IsExtrapolatedToEMCAL() const {return GetTrackPtOnEMCal()!=-999;} 
102   virtual void SetTrackPhiEtaPtOnEMCal(Double_t,Double_t,Double_t=-999) {;}
103
104   virtual Int_t GetPHOScluster()      const {return -1;}
105   virtual void SetPHOScluster(Int_t)        {;}
106   virtual Bool_t IsPHOS()             const {return kFALSE;}
107   virtual void   SetPIDForTracking(Int_t ) {}
108   virtual Int_t  GetPIDForTracking() const {return -999;}
109   
110   //pid info
111   virtual void     SetStatus(ULong_t /*flags*/) {;}
112   virtual void     ResetStatus(ULong_t /*flags*/) {;}
113
114   virtual Double_t  GetITSsignal()       const {return 0.;}
115   virtual Double_t  GetTPCsignal()       const {return 0.;}
116   virtual Double_t  GetTPCsignalTunedOnData() const {return 0.;}
117   virtual UShort_t  GetTPCsignalN()      const {return 0 ;}
118   virtual Double_t  GetTPCmomentum()     const {return 0.;}
119   virtual Double_t  GetTPCTgl()          const {return 0.;}
120   virtual Double_t  GetTOFsignal()       const {return 0.;}
121   virtual Double_t  GetTOFsignalTunedOnData() const {return 0.;}
122   virtual Double_t  GetHMPIDsignal()     const {return 0.;}
123   virtual Double_t  GetTRDsignal()       const {return 0.;}
124
125   virtual Double_t  GetHMPIDoccupancy()  const {return 0.;}
126   
127   virtual Int_t     GetHMPIDcluIdx()     const {return 0;}
128   
129   virtual void GetHMPIDtrk(Float_t &/*&x*/, Float_t &/*y*/, Float_t &/*th*/, Float_t &/*ph*/) const {;}  
130   virtual void GetHMPIDmip(Float_t &/*x*/, Float_t &/*y*/, Int_t &/*q*/,Int_t &/*nph*/) const {;}
131   
132   virtual Bool_t GetOuterHmpPxPyPz(Double_t */*p*/) const {return kFALSE;}
133   
134   virtual void      GetIntegratedTimes(Double_t */*times*/, Int_t nspec=AliPID::kSPECIESC) const;
135   virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}
136   virtual void      GetHMPIDpid(Double_t */*p*/) const {;}
137   virtual Double_t  GetIntegratedLength() const { return 0.;}
138   
139   virtual ULong_t  GetStatus() const = 0;
140   virtual Bool_t   GetXYZ(Double_t *p) const = 0;
141   virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const {return kFALSE;}
142   virtual Double_t GetBz() const;
143   virtual void     GetBxByBz(Double_t b[3]) const;
144   virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
145   virtual Bool_t   PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;
146   virtual const    AliExternalTrackParam * GetOuterParam() const { return NULL; }
147   virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }
148   virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }
149   virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
150   virtual void     SetID(Short_t /*id*/) {;}
151   virtual Int_t    GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}
152   virtual const AliTOFHeader *GetTOFHeader() const {return NULL;};
153
154   ClassDef(AliVTrack,1)  // base class for tracks
155 };
156
157 #endif