*** V interface for TPCCalibTasks ***
[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 #include "AliVMisc.h"
17
18 class AliVEvent;
19 class AliVVertex;
20 class AliExternalTrackParam;
21 class AliTPCdEdxInfo;
22 class AliDetectorPID;
23 class AliTOFHeader;
24
25  
26 class AliVTrack: public AliVParticle {
27
28 public:
29   enum {
30     kITSin        = 0x1
31     ,kITSout      = 0x2
32     ,kITSrefit    = 0x4
33     ,kITSpid      = 0x8
34     ,kTPCin       = 0x10
35     ,kTPCout      = 0x20
36     ,kTPCrefit    = 0x40
37     ,kTPCpid      = 0x80
38     ,kTRDin       = 0x100
39     ,kTRDout      = 0x200
40     ,kTRDrefit    = 0x400
41     ,kTRDpid      = 0x800
42     ,kTOFin       = 0x1000
43     ,kTOFout      = 0x2000
44     ,kTOFrefit    = 0x4000
45     ,kTOFpid      = 0x8000
46     ,kHMPIDout    = 0x10000
47     ,kHMPIDpid    = 0x20000
48     ,kEMCALmatch  = 0x40000
49     ,kTRDbackup   = 0x80000
50     ,kTOFmismatch = 0x100000
51     ,kPHOSmatch   = 0x200000
52     ,kITSupg      = 0x400000     // flag that in the ITSupgrade reco
53     //
54     ,kGlobalMerge = 0x1000000
55     ,kMultInV0    = 0x2000000     //BIT(25): assumed to be belong to V0 in multiplicity estimates
56     ,kMultSec     = 0x4000000     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates
57     ,kEmbedded    = 0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event
58     //
59     ,kITSpureSA   = 0x10000000
60     ,kTRDStop     = 0x20000000
61     ,kESDpid      = 0x40000000
62     ,kTIME        = 0x80000000
63   };
64   enum {
65     kTRDnPlanes = 6,
66     kEMCALNoMatch = -4096,
67     kTOFBCNA = -100
68   };
69
70   AliVTrack() { }
71   virtual ~AliVTrack() { }
72   AliVTrack(const AliVTrack& vTrack); 
73   AliVTrack& operator=(const AliVTrack& vTrack);
74   // constructor for reinitialisation of vtable
75   AliVTrack( AliVConstructorReinitialisationFlag f) :AliVParticle(f){}
76
77   virtual const AliVEvent* GetEvent() const {return 0;}
78   virtual Int_t    GetID() const = 0;
79   virtual UChar_t  GetITSClusterMap() const = 0;
80   virtual void     GetITSdEdxSamples(Double_t s[4]) const {for (int i=4;i--;) s[i]=0;};
81   virtual const TBits* GetTPCClusterMapPtr() const {return NULL;}
82   virtual const TBits* GetTPCFitMapPtr()     const {return NULL;}
83   virtual const TBits* GetTPCSharedMapPtr()  const {return NULL;}
84   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.;}
85   virtual AliTPCdEdxInfo * GetTPCdEdxInfo() const {return 0x0;}
86   virtual UShort_t GetTPCNcls() const { return 0;}
87   virtual UShort_t GetTPCNclsF() const { return 0;}
88   virtual Double_t GetTRDslice(Int_t /*plane*/, Int_t /*slice*/) const { return -1.; }
89   virtual Int_t    GetNumberOfTRDslices() const { return 0; }
90   virtual UChar_t  GetTRDncls() const {return 0;}
91   virtual UChar_t  GetTRDntrackletsPID() const { return 0;}
92   virtual void     SetDetectorPID(const AliDetectorPID */*pid*/) {;}
93   virtual const    AliDetectorPID* GetDetectorPID() const { return 0x0; }
94   virtual Double_t GetTRDchi2()          const { return -1;}
95   virtual Int_t    GetNumberOfClusters() const {return 0;}
96
97   virtual Float_t GetTPCCrossedRows() const {return 0;}
98   virtual void GetImpactParameters(Float_t [], Float_t []) const {;}
99   virtual void GetImpactParameters(Float_t &/*&xy*/,Float_t &/*&z*/) const {;}
100   virtual void GetImpactParametersTPC(Float_t &/*&xy*/,Float_t &/*&z*/) const {;}
101   virtual void GetImpactParametersTPC(Float_t [] /*p[2]*/, Float_t [] /*cov[3]*/) const {;}
102   
103   virtual Int_t GetEMCALcluster()     const {return kEMCALNoMatch;}
104   virtual void SetEMCALcluster(Int_t)       {;}
105   virtual Bool_t IsEMCAL()            const {return kFALSE;}
106
107   virtual Double_t GetTrackPhiOnEMCal()  const {return -999;}
108   virtual Double_t GetTrackEtaOnEMCal()  const {return -999;}
109   virtual Double_t GetTrackPtOnEMCal()   const {return -999;}
110   virtual Double_t GetTrackPOnEMCal()    const {return -999;}
111   virtual Bool_t IsExtrapolatedToEMCAL() const {return GetTrackPtOnEMCal()!=-999;} 
112   virtual void SetTrackPhiEtaPtOnEMCal(Double_t,Double_t,Double_t=-999) {;}
113
114   virtual Int_t GetPHOScluster()      const {return -1;}
115   virtual void SetPHOScluster(Int_t)        {;}
116   virtual Bool_t IsPHOS()             const {return kFALSE;}
117   virtual void   SetPIDForTracking(Int_t ) {}
118   virtual Int_t  GetPIDForTracking() const {return -999;}
119   
120   //pid info
121   virtual void     SetStatus(ULong_t /*flags*/) {;}
122   virtual void     ResetStatus(ULong_t /*flags*/) {;}
123
124   virtual Double_t  GetITSsignal()       const {return 0.;}
125   virtual Double_t  GetTPCsignal()       const {return 0.;}
126   virtual Double_t  GetTPCsignalTunedOnData() const {return 0.;}
127   virtual UShort_t  GetTPCsignalN()      const {return 0 ;}
128   virtual Double_t  GetTPCmomentum()     const {return 0.;}
129   virtual Double_t  GetTPCTgl()          const {return 0.;}
130   virtual Double_t  GetTOFsignal()       const {return 0.;}
131   virtual Double_t  GetTOFsignalTunedOnData() const {return 0.;}
132   virtual Double_t  GetHMPIDsignal()     const {return 0.;}
133   virtual Double_t  GetTRDsignal()       const {return 0.;}
134   virtual UChar_t GetTRDNchamberdEdx() const {return 0;}
135   virtual UChar_t GetTRDNclusterdEdx() const {return 0;}
136
137   virtual Double_t  GetHMPIDoccupancy()  const {return 0.;}
138   
139   virtual Int_t     GetHMPIDcluIdx()     const {return 0;}
140   
141   virtual void GetHMPIDtrk(Float_t &/*&x*/, Float_t &/*y*/, Float_t &/*th*/, Float_t &/*ph*/) const {;}  
142   virtual void GetHMPIDmip(Float_t &/*x*/, Float_t &/*y*/, Int_t &/*q*/,Int_t &/*nph*/) const {;}
143   
144   virtual Bool_t GetOuterHmpPxPyPz(Double_t */*p*/) const {return kFALSE;}
145
146   virtual const AliExternalTrackParam * GetInnerParam() const { return NULL;}
147   virtual const AliExternalTrackParam * GetOuterParam() const { return NULL;}
148   virtual const AliExternalTrackParam * GetTPCInnerParam() const { return NULL;}
149   virtual const AliExternalTrackParam * GetConstrainedParam() const {return NULL;}
150
151   virtual void      GetIntegratedTimes(Double_t */*times*/, Int_t nspec=AliPID::kSPECIESC) const;
152   virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}
153   virtual void      GetHMPIDpid(Double_t */*p*/) const {;}
154   virtual Double_t  GetIntegratedLength() const { return 0.;}
155   
156   virtual ULong_t  GetStatus() const = 0;
157   virtual Bool_t   GetXYZ(Double_t* /*p*/) const ;
158   virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const ;
159   virtual Double_t GetBz() const;
160   virtual void     GetBxByBz(Double_t b[3]) const;
161   virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
162   virtual Bool_t   PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;
163   virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }
164   virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
165   virtual void     SetID(Short_t /*id*/) {;}
166   virtual Int_t    GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}
167   virtual const AliTOFHeader *GetTOFHeader() const {return NULL;};
168
169   //---------------------------------------------------------------------------
170   //--the calibration interface--
171   //--to be used in online calibration/QA
172   //--should also be implemented in ESD so it works offline as well
173   //-----------
174   virtual Int_t GetTrackParam         ( AliExternalTrackParam& ) const {return 0;}
175   virtual Int_t GetTrackParamRefitted ( AliExternalTrackParam& ) const {return 0;}
176   virtual Int_t GetTrackParamIp       ( AliExternalTrackParam& ) const {return 0;}
177   virtual Int_t GetTrackParamTPCInner ( AliExternalTrackParam& ) const {return 0;}
178   virtual Int_t GetTrackParamOp       ( AliExternalTrackParam& ) const {return 0;}
179   virtual Int_t GetTrackParamCp       ( AliExternalTrackParam& ) const {return 0;}
180   virtual Int_t GetTrackParamITSOut   ( AliExternalTrackParam& ) const {return 0;}
181
182   virtual Int_t             GetKinkIndex(Int_t /*i*/) const { return 0;}
183   virtual Double_t          GetSigned1Pt()         const { return 0;}
184   virtual Bool_t            IsOn(Int_t /*mask*/) const {return 0;}
185   virtual Double_t          GetX()    const {return 0;}
186   virtual Double_t          GetY()    const {return 0;}
187   virtual Double_t          GetZ()    const {return 0;}
188   virtual const Double_t   *GetParameter() const {return 0;}
189   virtual Double_t          GetAlpha() const {return 0;}
190   virtual UShort_t          GetTPCncls(Int_t /*row0*/=0, Int_t /*row1*/=159) const {return 0;}
191   virtual Double_t          GetTOFsignalDz() const {return 0;}
192   virtual Double_t          GetP() const {return 0;}
193   virtual void              GetDirection(Double_t []) const {;}
194   virtual Double_t          GetLinearD(Double_t /*xv*/, Double_t /*yv*/) const {return 0;}
195   virtual void              GetDZ(Double_t /*x*/,Double_t /*y*/,Double_t /*z*/,Double_t /*b*/,Float_t [] /*dz[2]*/) const {;}
196   virtual Double_t          GetTgl()  const {return 0;}
197   virtual Char_t            GetITSclusters(Int_t */**idx*/) const {return 0;}
198   virtual UChar_t           GetTRDclusters(Int_t */**idx*/) const {return 0;}
199
200
201   ClassDef(AliVTrack,1)  // base class for tracks
202 };
203
204 #endif