ae1af45f36648e516fe8b68bcc632a075141335d
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliVTrack.h
1 #ifndef AliVTrack_H\r
2 #define AliVTrack_H\r
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *\r
4  * See cxx source for full Copyright notice                               */\r
5 \r
6 \r
7 //-------------------------------------------------------------------------\r
8 //     base class for ESD and AOD tracks\r
9 //     Author: A. Dainese\r
10 //-------------------------------------------------------------------------\r
11 \r
12 #include <TBits.h>\r
13 \r
14 #include "AliVParticle.h"\r
15 \r
16 class AliVVertex;\r
17 class AliExternalTrackParam;\r
18 class AliTPCdEdxInfo;\r
19  \r
20 class AliVTrack: public AliVParticle {\r
21 \r
22 public:\r
23   enum {\r
24     kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,\r
25     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,\r
26     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,\r
27     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,\r
28     kTOFmismatch=0x100000,\r
29     kHMPIDout=0x10000,kHMPIDpid=0x20000,\r
30     kEMCALmatch=0x40000,\r
31     kPHOSmatch=0x200000,\r
32     kTRDbackup =0x80000,\r
33     kTRDStop=0x20000000,\r
34     kESDpid=0x40000000,\r
35     kTIME=0x80000000,\r
36     kGlobalMerge=0x08000000,\r
37     kITSpureSA=0x10000000,\r
38     kMultInV0 =0x2000000,    //BIT(25): assumed to be belong to V0 in multiplicity estimates\r
39     kMultSec  =0x4000000,     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates\r
40     kEmbedded =0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event\r
41   };\r
42   enum {\r
43     kTRDnPlanes = 6,\r
44     kEMCALNoMatch = -4096,\r
45     kTOFBCNA = -100\r
46   };\r
47 \r
48   AliVTrack() { }\r
49   virtual ~AliVTrack() { }\r
50   AliVTrack(const AliVTrack& vTrack); \r
51   AliVTrack& operator=(const AliVTrack& vTrack);\r
52 \r
53   virtual Int_t    GetID() const = 0;\r
54   virtual UChar_t  GetITSClusterMap() const = 0;\r
55   virtual const TBits* GetTPCClusterMapPtr() const {return NULL;}\r
56   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.;}\r
57   virtual AliTPCdEdxInfo * GetTPCdEdxInfo() const {return 0x0;}\r
58   virtual UShort_t GetTPCNcls() const { return 0;}\r
59   virtual UShort_t GetTPCNclsF() const { return 0;}\r
60   virtual Double_t GetTRDslice(Int_t /*plane*/, Int_t /*slice*/) const { return -1.; }\r
61   virtual Int_t    GetNumberOfTRDslices() const { return 0; }\r
62   virtual UChar_t  GetTRDntrackletsPID() const { return 0;}\r
63   virtual Double_t GetTRDchi2()          const { return -1;}\r
64   \r
65   virtual Int_t GetEMCALcluster()     const {return -1;}\r
66   virtual void SetEMCALcluster(Int_t)       {;}\r
67   virtual Bool_t IsEMCAL()            const {return kFALSE;}\r
68 \r
69   virtual Double_t GetTrackPhiOnEMCal() const {return -999;}\r
70   virtual Double_t GetTrackEtaOnEMCal() const {return -999;}\r
71   virtual void SetTrackPhiEtaOnEMCal(Double_t,Double_t) {;}\r
72 \r
73   virtual Int_t GetPHOScluster()      const {return -1;}\r
74   virtual void SetPHOScluster(Int_t)        {;}\r
75   virtual Bool_t IsPHOS()             const {return kFALSE;}\r
76   \r
77   //pid info\r
78   virtual void     SetStatus(ULong_t /*flags*/) {;}\r
79   virtual void     ResetStatus(ULong_t /*flags*/) {;}\r
80 \r
81   virtual Double_t  GetITSsignal()       const {return 0.;}\r
82   virtual Double_t  GetTPCsignal()       const {return 0.;}\r
83   virtual Double_t  GetTPCsignalTunedOnData() const {return 0.;}\r
84   virtual UShort_t  GetTPCsignalN()      const {return 0 ;}\r
85   virtual Double_t  GetTPCmomentum()     const {return 0.;}\r
86   virtual Double_t  GetTOFsignal()       const {return 0.;}\r
87   virtual Double_t  GetHMPIDsignal()     const {return 0.;}\r
88 \r
89   virtual void      GetIntegratedTimes(Double_t */*times*/) const { return; }\r
90   virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}\r
91   virtual void      GetHMPIDpid(Double_t */*p*/) const {;}\r
92     \r
93   virtual ULong_t  GetStatus() const = 0;\r
94   virtual Bool_t   GetXYZ(Double_t *p) const = 0;\r
95   virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const {return kFALSE;}\r
96   virtual Double_t GetBz() const;\r
97   virtual void     GetBxByBz(Double_t b[3]) const;\r
98   virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;\r
99   virtual Bool_t   PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;\r
100   virtual const    AliExternalTrackParam * GetOuterParam() const { return NULL; }\r
101   virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }\r
102   virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }\r
103   virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }\r
104   virtual void     SetID(Short_t /*id*/) {;}\r
105   virtual Int_t    GetTOFBunchCrossing(Double_t = 0, Bool_t = kFALSE) const { return kTOFBCNA;}\r
106 \r
107   ClassDef(AliVTrack,1)  // base class for tracks\r
108 };\r
109 \r
110 #endif\r