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