add a few methods in the v interface
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliVTrack.h
CommitLineData
74ca66e3 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"
fc9b31a7 15#include "AliPID.h"
1f516476 16#include "AliVMisc.h"
74ca66e3 17
d38034b8 18class AliVEvent;
74ca66e3 19class AliVVertex;
16af082b 20class AliExternalTrackParam;
74ca66e3 21class AliTPCdEdxInfo;
22class AliDetectorPID;
42fcc729 23class AliTOFHeader;
fc9b31a7 24
16af082b 25
74ca66e3 26class AliVTrack: public AliVParticle {
27
28public:
29 enum {
2e4eee7d 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
74ca66e3 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);
a4b2769d 74 // constructor for reinitialisation of vtable
1f516476 75 AliVTrack( AliVConstructorReinitialisationFlag f) :AliVParticle(f){}
74ca66e3 76
d38034b8 77 virtual const AliVEvent* GetEvent() const {return 0;}
74ca66e3 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;}
50ff8c36 95 virtual Int_t GetNumberOfClusters() const {return 0;}
e3d1b1e2 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 {;}
74ca66e3 102
103 virtual Int_t GetEMCALcluster() const {return kEMCALNoMatch;}
104 virtual void SetEMCALcluster(Int_t) {;}
105 virtual Bool_t IsEMCAL() const {return kFALSE;}
106
d60591b8
CL
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;}
ca6e83df 111 virtual Bool_t IsExtrapolatedToEMCAL() const {return GetTrackPtOnEMCal()!=-999;}
a29b2a8a 112 virtual void SetTrackPhiEtaPtOnEMCal(Double_t,Double_t,Double_t=-999) {;}
74ca66e3 113
114 virtual Int_t GetPHOScluster() const {return -1;}
115 virtual void SetPHOScluster(Int_t) {;}
116 virtual Bool_t IsPHOS() const {return kFALSE;}
a3314882 117 virtual void SetPIDForTracking(Int_t ) {}
118 virtual Int_t GetPIDForTracking() const {return -999;}
74ca66e3 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.;}
ef7661fd 129 virtual Double_t GetTPCTgl() const {return 0.;}
3740029a 130 virtual Double_t GetTgl() const {return 0.;}
131 virtual void GetImpactParameters(Float_t& ,Float_t& ) const {}
74ca66e3 132 virtual Double_t GetTOFsignal() const {return 0.;}
a2c30af1 133 virtual Double_t GetTOFsignalTunedOnData() const {return 0.;}
74ca66e3 134 virtual Double_t GetHMPIDsignal() const {return 0.;}
6736efd5 135 virtual Double_t GetTRDsignal() const {return 0.;}
16af082b 136 virtual UChar_t GetTRDNchamberdEdx() const {return 0;}
137 virtual UChar_t GetTRDNclusterdEdx() const {return 0;}
74ca66e3 138
567624b5 139 virtual Double_t GetHMPIDoccupancy() const {return 0.;}
140
141 virtual Int_t GetHMPIDcluIdx() const {return 0;}
142
143 virtual void GetHMPIDtrk(Float_t &/*&x*/, Float_t &/*y*/, Float_t &/*th*/, Float_t &/*ph*/) const {;}
144 virtual void GetHMPIDmip(Float_t &/*x*/, Float_t &/*y*/, Int_t &/*q*/,Int_t &/*nph*/) const {;}
145
146 virtual Bool_t GetOuterHmpPxPyPz(Double_t */*p*/) const {return kFALSE;}
6a33e0e9 147
148 virtual const AliExternalTrackParam * GetInnerParam() const { return NULL;}
149 virtual const AliExternalTrackParam * GetOuterParam() const { return NULL;}
150 virtual const AliExternalTrackParam * GetTPCInnerParam() const { return NULL;}
e3d1b1e2 151 virtual const AliExternalTrackParam * GetConstrainedParam() const {return NULL;}
6a33e0e9 152
fc9b31a7 153 virtual void GetIntegratedTimes(Double_t */*times*/, Int_t nspec=AliPID::kSPECIESC) const;
74ca66e3 154 virtual Double_t GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}
155 virtual void GetHMPIDpid(Double_t */*p*/) const {;}
9b5c8b95 156 virtual Double_t GetIntegratedLength() const { return 0.;}
157
74ca66e3 158 virtual ULong_t GetStatus() const = 0;
08f45a9c 159 virtual Bool_t GetXYZ(Double_t* /*p*/) const ;
16af082b 160 virtual Bool_t GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const ;
74ca66e3 161 virtual Double_t GetBz() const;
162 virtual void GetBxByBz(Double_t b[3]) const;
163 virtual Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
164 virtual Bool_t PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;
74ca66e3 165 virtual Int_t GetNcls(Int_t /*idet*/) const { return 0; }
166 virtual Bool_t GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
167 virtual void SetID(Short_t /*id*/) {;}
168 virtual Int_t GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}
42fcc729 169 virtual const AliTOFHeader *GetTOFHeader() const {return NULL;};
74ca66e3 170
f8356e9e 171 //---------------------------------------------------------------------------
172 //--the calibration interface--
173 //--to be used in online calibration/QA
174 //--should also be implemented in ESD so it works offline as well
175 //-----------
176 virtual Int_t GetTrackParam ( AliExternalTrackParam& ) const {return 0;}
177 virtual Int_t GetTrackParamRefitted ( AliExternalTrackParam& ) const {return 0;}
178 virtual Int_t GetTrackParamIp ( AliExternalTrackParam& ) const {return 0;}
179 virtual Int_t GetTrackParamTPCInner ( AliExternalTrackParam& ) const {return 0;}
180 virtual Int_t GetTrackParamOp ( AliExternalTrackParam& ) const {return 0;}
181 virtual Int_t GetTrackParamCp ( AliExternalTrackParam& ) const {return 0;}
182 virtual Int_t GetTrackParamITSOut ( AliExternalTrackParam& ) const {return 0;}
183
e3d1b1e2 184 virtual Int_t GetKinkIndex(Int_t /*i*/) const { return 0;}
185 virtual Double_t GetSigned1Pt() const { return 0;}
186 virtual Bool_t IsOn(Int_t /*mask*/) const {return 0;}
187 virtual Double_t GetX() const {return 0;}
188 virtual Double_t GetY() const {return 0;}
189 virtual Double_t GetZ() const {return 0;}
190 virtual const Double_t *GetParameter() const {return 0;}
191 virtual Double_t GetAlpha() const {return 0;}
192 virtual UShort_t GetTPCncls(Int_t /*row0*/=0, Int_t /*row1*/=159) const {return 0;}
193 virtual Double_t GetTOFsignalDz() const {return 0;}
194 virtual Double_t GetP() const {return 0;}
195 virtual void GetDirection(Double_t []) const {;}
196 virtual Double_t GetLinearD(Double_t /*xv*/, Double_t /*yv*/) const {return 0;}
197 virtual void GetDZ(Double_t /*x*/,Double_t /*y*/,Double_t /*z*/,Double_t /*b*/,Float_t [] /*dz[2]*/) const {;}
198 virtual Double_t GetTgl() const {return 0;}
199 virtual Char_t GetITSclusters(Int_t */**idx*/) const {return 0;}
200 virtual UChar_t GetTRDclusters(Int_t */**idx*/) const {return 0;}
201
202
74ca66e3 203 ClassDef(AliVTrack,1) // base class for tracks
204};
205
206#endif