]>
Commit | Line | Data |
---|---|---|
1bda006f | 1 | // $Id$ |
2 | // | |
3 | // Modified track class to be able to store cached quantities. | |
4 | // | |
cd231d42 | 5 | // Author: C.Loizides |
1bda006f | 6 | |
7 | #include "AliEsdTrackExt.h" | |
8 | #include <TVector3.h> | |
9 | #include "AliESDEvent.h" | |
10 | ||
1ff5f905 | 11 | //_________________________________________________________________________________________________ |
12 | AliEsdTrackExt::AliEsdTrackExt() | |
13 | : AliESDtrack(), fEmcEta(-10), fEmcPhi(-10), fNCrossedRows(-10), fChi2TPCConstrainedVsGlobal(-10) | |
14 | { | |
15 | // Default constructor. | |
16 | } | |
17 | ||
1bda006f | 18 | //_________________________________________________________________________________________________ |
19 | AliEsdTrackExt::AliEsdTrackExt(const AliESDtrack &t) | |
20 | : AliESDtrack(t), fEmcEta(-10), fEmcPhi(-10), fNCrossedRows(-10), fChi2TPCConstrainedVsGlobal(-10) | |
21 | { | |
22 | // Constructor. | |
23 | ||
24 | const AliExternalTrackParam *outp = GetOuterParam(); | |
25 | if (outp&&IsEMCAL()) { | |
26 | Double_t trkPos[3] = {0.,0.,0.}; | |
27 | if (outp->GetXYZ(trkPos)) { | |
28 | TVector3 vec(trkPos[0],trkPos[1],trkPos[2]); | |
29 | Double_t veta = vec.Eta(); | |
30 | Double_t vphi = vec.Phi(); | |
31 | if(vphi<0) | |
32 | vphi += 2*TMath::Pi(); | |
33 | fEmcEta = veta; | |
34 | fEmcPhi = vphi; | |
35 | } | |
36 | } | |
37 | ||
38 | fNCrossedRows = GetTPCCrossedRows(); | |
39 | ||
40 | const AliESDVertex* vertex = 0; | |
41 | vertex = fESDEvent->GetPrimaryVertexTracks(); | |
42 | if (!vertex || !vertex->GetStatus()) | |
43 | vertex = fESDEvent->GetPrimaryVertexSPD(); | |
44 | if (vertex) { | |
45 | fChi2TPCConstrainedVsGlobal = GetChi2TPCConstrainedVsGlobal(vertex); | |
46 | fCacheChi2TPCConstrainedVsGlobalVertex = vertex; | |
47 | } | |
48 | } | |
49 | ||
50 | //_________________________________________________________________________________________________ | |
51 | void AliEsdTrackExt::DeleteParams() | |
52 | { | |
53 | // Delete the unneeded params. | |
54 | ||
55 | delete fIp; fIp = 0; | |
56 | delete fTPCInner; fTPCInner = 0; | |
57 | delete fHMPIDp; fHMPIDp = 0; | |
58 | delete fFriendTrack; fFriendTrack = 0; | |
59 | if (!IsEMCAL()) { | |
60 | delete fOp; fOp = 0; | |
61 | } | |
62 | } | |
63 | ||
64 | //_________________________________________________________________________________________________ | |
1ff5f905 | 65 | void AliEsdTrackExt::MakeMiniTrack(Bool_t dall, Bool_t dcon, Bool_t dtrp, Bool_t dmap, |
66 | Bool_t dits, Bool_t dtpc, Bool_t dtrd, Bool_t dtof, | |
67 | Bool_t dhmp) | |
1bda006f | 68 | { |
69 | // Make mini track depending on what should be reset. | |
70 | ||
1ff5f905 | 71 | if (fCp && !dcon) |
72 | fCp->ResetCovariance(1); | |
73 | ||
1bda006f | 74 | if (dtrp) { |
1ff5f905 | 75 | if (dcon) { |
76 | delete fCp; | |
77 | fCp = 0; | |
78 | } | |
1bda006f | 79 | delete fIp; fIp = 0; |
80 | delete fTPCInner; fTPCInner = 0; | |
81 | delete fOp; fOp = 0; | |
82 | delete fHMPIDp; fHMPIDp = 0; | |
83 | delete fFriendTrack; fFriendTrack = 0; | |
84 | } | |
85 | ||
86 | if (dmap) { | |
87 | fTPCFitMap.Clear(); | |
88 | fTPCClusterMap.Clear(); | |
89 | fTPCSharedMap.Clear(); | |
90 | } | |
91 | ||
92 | // Reset ITS track related information | |
93 | if (dits) { | |
94 | if (dall) { | |
95 | fITSchi2 = 0; | |
96 | fITSncls = 0; | |
97 | fITSClusterMap = 0; | |
98 | fITSSharedMap = 0; | |
99 | fITSsignal = 0; | |
1bda006f | 100 | } |
1ff5f905 | 101 | fITSLabel = 0; |
1bda006f | 102 | for (Int_t i=0;i<4;++i) fITSdEdxSamples[i] = 0.; |
103 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fITSr[i] = 0; | |
104 | for (Int_t i=0;i<12;++i) fITSModule[i] = -1; | |
105 | } | |
106 | ||
107 | // Reset TPC related track information | |
108 | if (dtpc) { | |
109 | if (dall) { | |
110 | fTPCchi2 = 0; | |
111 | fTPCchi2Iter1 = 0; | |
112 | fTPCncls = 0; | |
113 | fTPCnclsF = 0; | |
114 | fTPCnclsIter1 = 0; | |
115 | fTPCnclsFIter1 = 0; | |
116 | fTPCFitMap = 0; | |
117 | fTPCClusterMap = 0; | |
118 | fTPCSharedMap = 0; | |
119 | fTPCsignal = 0; | |
120 | fTPCsignalS = 0; | |
121 | fTPCsignalN = 0; | |
1bda006f | 122 | } |
1ff5f905 | 123 | fTPCLabel = 0; |
124 | fdTPC = 0; | |
125 | fzTPC = 0; | |
126 | fCddTPC = 0; | |
127 | fCdzTPC = 0; | |
128 | fCzzTPC = 0; | |
129 | fCchi2TPC = 0; | |
1bda006f | 130 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fTPCr[i] = 0; |
131 | for (Int_t i=0;i<4;++i) fTPCPoints[i] = 0; | |
132 | for (Int_t i=0; i<3;++i) fKinkIndexes[i] = 0; | |
133 | for (Int_t i=0; i<3;++i) fV0Indexes[i] = 0; | |
134 | delete fTPCdEdxInfo; fTPCdEdxInfo = 0; | |
135 | } | |
136 | ||
137 | // Reset TRD related track information | |
138 | if (dtrd) { | |
139 | fTRDchi2 = 0; | |
140 | fTRDncls = 0; | |
141 | fTRDncls0 = 0; | |
142 | fTRDsignal = 0; | |
143 | fTRDLabel = 0; | |
144 | fTRDQuality = 0; | |
145 | fTRDntracklets = 0; | |
146 | fTRDslices = 0; | |
147 | fTRDBudget = 0; | |
148 | for (Int_t i=0;i<kTRDnPlanes;++i) fTRDTimBin[i] = 0; | |
149 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fTRDr[i] = 0; | |
150 | fTRDnSlices = 0; | |
151 | if(fTRDnSlices) | |
152 | delete[] fTRDslices; | |
153 | } | |
154 | ||
155 | // Reset TOF related track information | |
156 | if (dtof) { | |
157 | if (dall) { | |
158 | fTOFchi2 = 0; | |
159 | fTOFindex = -1; | |
160 | fTOFsignal = 99999; | |
161 | fTOFCalChannel = -1; | |
162 | fTOFsignalToT = 99999; | |
163 | fTOFsignalRaw = 99999; | |
164 | fTOFsignalDz = 999; | |
165 | fTOFsignalDx = 999; | |
166 | fTOFdeltaBC = 999; | |
167 | fTOFl0l1 = 999; | |
168 | } | |
169 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fTOFr[i] = 0; | |
170 | for (Int_t i=0;i<3;++i) fTOFLabel[i] = -1; | |
171 | for (Int_t i=0;i<10;++i) fTOFInfo[i] = 0; | |
172 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fTrackTime[i] = 0; | |
173 | } | |
174 | ||
175 | // Reset HMPID related track information | |
176 | if (dhmp) { | |
177 | fHMPIDchi2 = 0; | |
178 | fHMPIDqn = 0; | |
179 | fHMPIDcluIdx = -1; | |
180 | fHMPIDsignal = 0; | |
181 | fHMPIDtrkTheta = 0; | |
182 | fHMPIDtrkPhi = 0; | |
183 | fHMPIDtrkX = 0; | |
184 | fHMPIDtrkY = 0; | |
185 | fHMPIDmipX = 0; | |
186 | fHMPIDmipY = 0; | |
187 | for (Int_t i=0;i<AliPID::kSPECIES;++i) fHMPIDr[i] = 0; | |
188 | } | |
189 | } | |
190 | ||
191 | //_________________________________________________________________________________________________ | |
192 | void AliEsdTrackExt::Setup() | |
193 | { | |
194 | // Setup cache with stored variables. | |
195 | ||
196 | fCacheNCrossedRows = fNCrossedRows; | |
197 | ||
198 | const AliESDVertex* vertex = 0; | |
199 | vertex = fESDEvent->GetPrimaryVertexTracks(); | |
200 | if (!vertex || !vertex->GetStatus()) | |
201 | vertex = fESDEvent->GetPrimaryVertexSPD(); | |
202 | if (vertex) { | |
203 | fCacheChi2TPCConstrainedVsGlobal = fChi2TPCConstrainedVsGlobal; | |
204 | fCacheChi2TPCConstrainedVsGlobalVertex = vertex; | |
205 | } | |
206 | } |