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