]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/TRD/info/AliTRDtrackInfo.h
add ITS to TRD prolongation monitoring
[u/mrichter/AliRoot.git] / PWGPP / TRD / info / AliTRDtrackInfo.h
CommitLineData
1ee39b3a 1#ifndef ALITRDTRACKINFO_H
2#define ALITRDTRACKINFO_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4* See cxx source for full Copyright notice */
5
6/* $Id: AliTRDtrackInfo.h 27496 2008-07-22 08:35:45Z cblume $ */
7
8////////////////////////////////////////////////////////////////////////////
9// //
10// Reconstruction QA //
11// //
12////////////////////////////////////////////////////////////////////////////
13
1ee39b3a 14#ifndef ALIPID_H
15#include "AliPID.h"
16#endif
17
4226db3e 18
19template <typename Value> class TVectorT;
ebb644ed 20typedef class TVectorT<Double_t> TVectorD;
1ee39b3a 21class AliTRDseedV1;
22class AliTRDtrackV1;
23class AliTrackReference;
24class AliExternalTrackParam;
25class AliTRDtrackInfo : public TObject{
26public:
27 enum{
28 kNTrackRefs = 12
29 };
30 class AliESDinfo{
31 friend class AliTRDtrackInfo; // Friend class
32 public:
33 AliESDinfo();
34 AliESDinfo(const AliESDinfo &esd);
35 virtual ~AliESDinfo();
36 AliESDinfo& operator=(const AliESDinfo &esd);
8778aca3 37 void Delete(const Option_t *);
3ceb45ae 38 Bool_t HasV0() const { return fHasV0;}
39 Int_t GetId() const { return fId;}
40 ULong_t GetStatus() const { return fStatus;}
41 Int_t GetKinkIndex() const { return fKinkIndex;}
566c3d46 42 Short_t GetTOFbc() const { return fTOFbc;}
3ceb45ae 43 UShort_t GetTPCncls() const { return fTPCncls;}
44 UChar_t GetPidQuality() const { return fTRDpidQuality;}
45 Int_t GetNSlices() const { return fTRDnSlices;}
46 Double32_t* GetSliceIter() const { return fTRDslices;}
47 const Double32_t* GetResponseIter() const { return &fTRDr[0];}
1ee39b3a 48 AliExternalTrackParam* GetOuterParam() const { return fOP;}
b9058d72 49 AliExternalTrackParam* GetITSoutParam() const { return fITSout;}
35983729 50 AliExternalTrackParam* GetTPCoutParam() const { return fTPCout;}
3ceb45ae 51 const Int_t* GetV0pid() const { return &fTRDv0pid[0];}
52 Int_t GetV0pid(Int_t i) const { return fTRDv0pid[i];}
1ee39b3a 53
54 protected:
b9ddd472 55 UChar_t fHasV0; // v0 bit
1ee39b3a 56 Int_t fId; // ESD track id
57 ULong_t fStatus; // ESD track status
58 Int_t fKinkIndex; // ESD kink index
59 UShort_t fTPCncls; // Number of Clusters inside TPC
566c3d46 60 Short_t fTOFbc; // TOF bunch crossing index
1ee39b3a 61 Double32_t fTRDr[AliPID::kSPECIES]; // TRD radial position
62 UChar_t fTRDpidQuality; // TRD PID quality
63 Int_t fTRDnSlices; // number of slices used for PID
64 Double32_t *fTRDslices; //[fTRDnSlices]
35983729 65 AliExternalTrackParam *fOP; // outer track param
66 AliExternalTrackParam *fTPCout; // outer TPC param
b9058d72 67 AliExternalTrackParam *fITSout; // outer ITS param
b554ac34 68 Int_t fTRDv0pid[AliPID::kSPECIES]; // PID from v0s
1ee39b3a 69
b9058d72 70 ClassDef(AliESDinfo, 6) // ESD info related to TRD
1ee39b3a 71 };
72
73 class AliMCinfo{
74 friend class AliTRDtrackInfo;
75 public:
76 //typedef AliTrackReference (const* constAliTrackReference);
77 AliMCinfo();
78 AliMCinfo(const AliMCinfo &mc);
79 virtual ~AliMCinfo();
80 AliMCinfo& operator=(const AliMCinfo &mc);
81 Int_t GetLabel() const {return fLabel;}
82 Int_t GetNTrackRefs() const {return fNTrackRefs;}
83 Int_t GetPDG() const {return fPDG;}
b9ddd472 84 Int_t GetPID() const ;
f429b017 85 Bool_t GetDirections(Float_t &x0, Float_t &y0, Float_t &z0, Float_t &dydx, Float_t &dzdx, Float_t &pt, Float_t &eta, Float_t &phi, UChar_t &s) const;
1ee39b3a 86 AliTrackReference const* GetTrackRef(Int_t ref=0) const {return fTrackRefs[ref];}
5b1ba251 87 static Double_t GetKalmanStep() {return fgKalmanStep;}
3ceb45ae 88 static Bool_t IsKalmanUpdate() {return fgKalmanUpdate;}
89 Bool_t PropagateKalman(
90 TVectorD *x, TVectorD *y, TVectorD *z,
91 TVectorD *dx, TVectorD *dy, TVectorD *dz,
92 TVectorD *pt, TVectorD *dpt, TVectorD *budget, TVectorD *c, Double_t mass=-1) const;
5066aa9a 93 static void SetKalmanStep(Double_t s) {fgKalmanStep = s;}
3ceb45ae 94 static void SetKalmanUpdate(Bool_t s=kTRUE) {fgKalmanUpdate = s;}
1ee39b3a 95 protected:
5066aa9a 96 Int_t fLabel; // MC label
97 Int_t fPDG; // particle code
98 Int_t fNTrackRefs; // number of track refs
99 static Double_t fgKalmanStep; // Kalman step propagation
3ceb45ae 100 static Bool_t fgKalmanUpdate; // Kalman update with TRD tracklets
1ee39b3a 101 AliTrackReference *fTrackRefs[kNTrackRefs]; // track refs array
5066aa9a 102
103 ClassDef(AliMCinfo, 2) // MC info related to TRD
1ee39b3a 104 };
105
106 AliTRDtrackInfo();
107 AliTRDtrackInfo(const AliTRDtrackInfo &trdInfo);
108 ~AliTRDtrackInfo();
4226db3e 109
1ee39b3a 110// void Clear(const Option_t *){}
111 void Delete(const Option_t *);
1ee39b3a 112 AliTRDtrackInfo& operator=(const AliTRDtrackInfo &trdInfo);
1ee39b3a 113 void AddTrackRef(const AliTrackReference *trackRef);
3ceb45ae 114 Int_t GetTrackId() const { return fESD.fId;}
115 const AliESDinfo* GetESDinfo() const { return &fESD; }
116 const AliMCinfo* GetMCinfo() const { return fMC; }
1ee39b3a 117 Int_t GetNumberOfClusters() const;
3ceb45ae 118 Int_t GetNumberOfClustersRefit() const { return fNClusters;}
1ee39b3a 119 Int_t GetNTracklets() const;
3ceb45ae 120 Int_t GetNTrackRefs() const { return fMC ? fMC->fNTrackRefs:0;}
121 Int_t GetLabel() const { return fMC ? fMC->fLabel:0; }
122 Int_t GetKinkIndex() const { return fESD.fKinkIndex;}
566c3d46 123 Short_t GetTOFbc() const { return fESD.fTOFbc;}
3ceb45ae 124 UShort_t GetTPCncls() const { return fESD.fTPCncls;}
125 Int_t GetPDG() const { return fMC ? fMC->fPDG : 0; }
126 Int_t GetPID() const { return fMC ? fMC->GetPID() : -1; }
127 ULong_t GetStatus() const { return fESD.fStatus;}
128 AliTRDtrackV1* GetTrack() const { return fTRDtrack; }
1ee39b3a 129 AliTrackReference* GetTrackRef(Int_t entry) const;
61f6b45e 130 AliTrackReference* GetTrackRef(const AliTRDseedV1* const tracklet) const;
1ee39b3a 131
3ceb45ae 132 Bool_t IsCurved() const { return TestBit(kCurv);}
133 Bool_t IsPrimary() const { return TestBit(kPrim);}
134 Bool_t HasESDtrack() const { return ((fTRDtrack != 0x0) ||(fESD.fOP != 0));}
135 Bool_t HasMCinfo() const { return (Bool_t)fMC; }
1ee39b3a 136
3ceb45ae 137 void SetCurved(Bool_t curv = kTRUE) { SetBit(kCurv, curv);}
138 void SetLabel(Int_t lab) { if(fMC) fMC->fLabel = lab; }
139 void SetNumberOfClustersRefit(Int_t n){fNClusters = n;}
1ee39b3a 140 inline void SetMC();
3ceb45ae 141 void SetPDG(Int_t pdg) { if(fMC) fMC->fPDG = pdg; }
142 void SetPrimary(Bool_t prim = kTRUE) {SetBit(kPrim, prim);}
1ee39b3a 143 void SetOuterParam(const AliExternalTrackParam *op);
b9058d72 144 void SetITSoutParam(const AliExternalTrackParam *op);
35983729 145 void SetTPCoutParam(const AliExternalTrackParam *op);
3ceb45ae 146 void SetStatus(ULong_t stat) { fESD.fStatus = stat;}
147 void SetKinkIndex(Int_t kinkIndex) { fESD.fKinkIndex = kinkIndex;}
566c3d46 148 void SetTOFbc(Int_t bc) { fESD.fTOFbc = bc;}
3ceb45ae 149 void SetTPCncls(UShort_t TPCncls) { fESD.fTPCncls = TPCncls;}
150 void SetTrackId(Int_t id) { fESD.fId = id;}
1ee39b3a 151 void SetTrack(const AliTRDtrackV1 *track);
3ceb45ae 152 void SetESDpidQuality(UChar_t q) { fESD.fTRDpidQuality = q;}
1ee39b3a 153 void SetSlices(Int_t n, Double32_t *s);
154 inline void SetESDpid(Double_t *);
b554ac34 155 inline void SetV0pid(Int_t *);
3ceb45ae 156 void SetV0(Bool_t v0=kTRUE) { fESD.fHasV0 = v0;}
1ee39b3a 157
158private:
159 enum{
160 kCurv = 14,
161 kPrim = 15
162 };
163 // this 2 data members have to go to ESD header.
164 Int_t fNClusters; // Numer of clusters from refit
165 AliTRDtrackV1 *fTRDtrack; // tracklets data array
166 AliMCinfo *fMC; // MC extract for TRD
167 AliESDinfo fESD; // ESD extract for TRD
168
b554ac34 169 ClassDef(AliTRDtrackInfo, 4) // TRD track info
1ee39b3a 170};
171
172
173//________________________________________________________
174inline void AliTRDtrackInfo::SetMC()
175{
176 if(!fMC) fMC = new AliMCinfo();
177}
178
179//________________________________________________________
180inline void AliTRDtrackInfo::SetESDpid(Double_t * const r)
181{
182 for(Int_t is = AliPID::kSPECIES; is--;) fESD.fTRDr[is] = r[is];
183}
184
b554ac34 185//________________________________________________________
186inline void AliTRDtrackInfo::SetV0pid(Int_t * const r)
187{
188 for(Int_t is = AliPID::kSPECIES; is--;) fESD.fTRDv0pid[is] = r[is];
189}
190
1ee39b3a 191#endif