13 #include <TObjArray.h>
14 #include <TGraphErrors.h>
16 #include <AliAnalysisTaskSE.h>
17 #include <AliMCEventHandler.h>
18 #include <AliAnalysisManager.h>
19 #include <AliESDEvent.h>
20 #include <AliESDfriend.h>
21 #include <AliMCEvent.h>
23 #include <AliExternalTrackParam.h>
24 #include <AliESDtrack.h>
25 #include <AliESDfriendTrack.h>
26 #include <AliESDInputHandler.h>
27 #include "AliRelAlignerKalman.h"
42 fFillDebugTree(kFALSE),
50 fRejectOutliers(kTRUE),
52 fRejectOutliersSigma2Median(kFALSE),
53 fOutRejSigma2Median(5.),
54 fOutRejSigmaOnMerge(10.),
55 fUseITSoutGlobalTrack(kFALSE),
56 fUseITSoutITSSAtrack(kTRUE)
75 fFillDebugTree(kFALSE),
83 fRejectOutliers(kTRUE),
85 fRejectOutliersSigma2Median(kFALSE),
86 fOutRejSigma2Median(5.),
87 fOutRejSigmaOnMerge(10.),
88 fUseITSoutGlobalTrack(kFALSE),
89 fUseITSoutITSSAtrack(kTRUE)
96 DefineOutput(1, TList::Class());
97 DefineOutput(2, AliRelAlignerKalmanArray::Class());
98 DefineOutput(3, AliRelAlignerKalmanArray::Class());
142 fList->SetName(
"QA");
143 fList->SetOwner(kTRUE);
145 TH2F* pZYAResidualsHistBpos =
new TH2F(
"fZYAResidualsHistBpos",
"z-r\\phi residuals side A (z>0), Bpos", 100, -4., 4., 100, -1.5, 1.5 );
146 pZYAResidualsHistBpos->SetXTitle(
"\\deltaz [cm]");
147 pZYAResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
148 TH2F* pZYCResidualsHistBpos =
new TH2F(
"fZYCResidualsHistBpos",
"z-r\\phi residuals side C (z<0), Bpos", 100, -4., 4., 100, -1.5, 1.5 );
149 pZYCResidualsHistBpos->SetXTitle(
"\\deltaz [cm]");
150 pZYCResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
151 TH2F* pLPAResidualsHistBpos =
new TH2F(
"fLPAResidualsHistBpos",
"sin(\\phi) tan(\\lambda) residuals side A (z>0), Bpos", 100, -.05, 0.05, 100, -0.05, 0.05 );
152 pLPAResidualsHistBpos->SetXTitle(
"\\deltasin(\\phi)");
153 pLPAResidualsHistBpos->SetYTitle(
"\\deltatan(\\lambda)");
154 TH2F* pLPCResidualsHistBpos =
new TH2F(
"fLPCResidualsHistBpos",
"sin(\\phi) tan(\\lambda) residuals side C (z<0), Bpos", 100, -.05, 0.05, 100, -0.05, 0.05 );
155 pLPCResidualsHistBpos->SetXTitle(
"\\deltasin(\\phi)");
156 pLPCResidualsHistBpos->SetYTitle(
"\\deltatan(\\lambda)");
157 TH2F* pPhiYAResidualsHistBpos =
new TH2F(
"fPhiYAResidualsHistBpos",
"\\phi-\\deltar\\phi side A (z>0), Bpos",36,0.0,6.3,100,-1.5,1.5);
158 pPhiYAResidualsHistBpos->SetXTitle(
"\\phi [rad]");
159 pPhiYAResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
160 TH2F* pPhiYCResidualsHistBpos =
new TH2F(
"fPhiYCResidualsHistBpos",
"\\phi-\\deltar\\phi side C (z<0), Bpos",36,0.0,6.3,100,-1.5,1.5);
161 pPhiYCResidualsHistBpos->SetXTitle(
"\\phi [rad]");
162 pPhiYCResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
163 TH2F* pPhiZAResidualsHistBpos =
new TH2F(
"fPhiZAResidualsHistBpos",
"\\phi-\\deltaz side A (z>0), Bpos",36,0.0,6.3,100,-3.0,3.0);
164 pPhiZAResidualsHistBpos->SetXTitle(
"\\phi [rad]");
165 pPhiZAResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
166 TH2F* pPhiZCResidualsHistBpos =
new TH2F(
"fPhiZCResidualsHistBpos",
"\\phi-\\deltaz side C (z<0), Bpos",36,0.0,6.3,100,-3.0,3.0);
167 pPhiZCResidualsHistBpos->SetXTitle(
"\\phi [rad]");
168 pPhiZCResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
169 TH2F* pPtYAResidualsHistBpos =
new TH2F(
"fPtYAResidualsHistBpos",
"Pt-\\deltar\\phi side A (z>0), Bpos",20,.3,8.,80,-1.5,1.5);
170 pPtYAResidualsHistBpos->SetXTitle(
"Pt [rad]");
171 pPtYAResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
172 TH2F* pPtYCResidualsHistBpos =
new TH2F(
"fPtYCResidualsHistBpos",
"Pt-\\deltar\\phi side C (z<0), Bpos",20,.3,8.,80,-1.5,1.5);
173 pPtYCResidualsHistBpos->SetXTitle(
"Pt [rad]");
174 pPtYCResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
175 TH2F* pPtZAResidualsHistBpos =
new TH2F(
"fPtZAResidualsHistBpos",
"Pt-\\deltaz side A (z>0), Bpos",20,.3,8.,80,-3.0,3.0);
176 pPtZAResidualsHistBpos->SetXTitle(
"Pt");
177 pPtZAResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
178 TH2F* pPtZCResidualsHistBpos =
new TH2F(
"fPtZCResidualsHistBpos",
"Pt-\\deltaz side C (z<0), Bpos",20,.3,8.,80,-3.0,3.0);
179 pPtZCResidualsHistBpos->SetXTitle(
"Pt");
180 pPtZCResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
181 TH2F* pLowPtYAResidualsHistBpos =
new TH2F(
"fLowPtYAResidualsHistBpos",
"Pt-\\deltar\\phi side A (z>0), Bpos",100,0.0,1.5,80,-1.5,1.5);
182 pLowPtYAResidualsHistBpos->SetXTitle(
"Pt [rad]");
183 pLowPtYAResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
184 TH2F* pLowPtYCResidualsHistBpos =
new TH2F(
"fLowPtYCResidualsHistBpos",
"Pt-\\deltar\\phi side C (z<0), Bpos",100,0.0,1.5,80,-1.5,1.5);
185 pLowPtYCResidualsHistBpos->SetXTitle(
"Pt [rad]");
186 pLowPtYCResidualsHistBpos->SetYTitle(
"\\deltar\\phi [cm]");
187 TH2F* pLowPtZAResidualsHistBpos =
new TH2F(
"fLowPtZAResidualsHistBpos",
"Pt-\\deltaz side A (z>0), Bpos",100,0.0,1.5,80,-3.0,3.0);
188 pLowPtZAResidualsHistBpos->SetXTitle(
"Pt");
189 pLowPtZAResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
190 TH2F* pLowPtZCResidualsHistBpos =
new TH2F(
"fLowPtZCResidualsHistBpos",
"Pt-\\deltaz side C (z<0), Bpos",100,0.0,1.5,80,-3.0,3.0);
191 pLowPtZCResidualsHistBpos->SetXTitle(
"Pt");
192 pLowPtZCResidualsHistBpos->SetYTitle(
"\\deltaz [cm]");
194 listBpos->SetName(
"B+");
195 listBpos->SetOwner(kTRUE);
196 fList->Add(listBpos);
197 listBpos->Add(pZYAResidualsHistBpos);
198 listBpos->Add(pZYCResidualsHistBpos);
199 listBpos->Add(pLPAResidualsHistBpos);
200 listBpos->Add(pLPCResidualsHistBpos);
201 listBpos->Add(pPhiYAResidualsHistBpos);
202 listBpos->Add(pPhiYCResidualsHistBpos);
203 listBpos->Add(pPhiZAResidualsHistBpos);
204 listBpos->Add(pPhiZCResidualsHistBpos);
205 listBpos->Add(pPtYAResidualsHistBpos);
206 listBpos->Add(pPtYCResidualsHistBpos);
207 listBpos->Add(pPtZAResidualsHistBpos);
208 listBpos->Add(pPtZCResidualsHistBpos);
209 listBpos->Add(pLowPtYAResidualsHistBpos);
210 listBpos->Add(pLowPtYCResidualsHistBpos);
211 listBpos->Add(pLowPtZAResidualsHistBpos);
212 listBpos->Add(pLowPtZCResidualsHistBpos);
214 TH2F* pZYAResidualsHistBneg =
new TH2F(
"fZYAResidualsHistBneg",
"z-r\\phi residuals side A (z>0), Bneg", 100, -4., 4., 100, -1.5, 1.5 );
215 pZYAResidualsHistBneg->SetXTitle(
"\\deltaz [cm]");
216 pZYAResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
217 TH2F* pZYCResidualsHistBneg =
new TH2F(
"fZYCResidualsHistBneg",
"z-r\\phi residuals side C (z<0), Bneg", 100, -4., 4., 100, -1.5, 1.5 );
218 pZYCResidualsHistBneg->SetXTitle(
"\\deltaz [cm]");
219 pZYCResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
220 TH2F* pLPAResidualsHistBneg =
new TH2F(
"fLPAResidualsHistBneg",
"sin(\\phi) tan(\\lambda) residuals side A (z>0), Bneg", 100, -.05, 0.05, 100, -0.05, 0.05 );
221 pLPAResidualsHistBneg->SetXTitle(
"\\deltasin(\\phi)");
222 pLPAResidualsHistBneg->SetYTitle(
"\\deltatan(\\lambda)");
223 TH2F* pLPCResidualsHistBneg =
new TH2F(
"fLPCResidualsHistBneg",
"sin(\\phi) tan(\\lambda) residuals side C (z<0), Bneg", 100, -.05, 0.05, 100, -0.05, 0.05 );
224 pLPCResidualsHistBneg->SetXTitle(
"\\deltasin(\\phi)");
225 pLPCResidualsHistBneg->SetYTitle(
"\\deltatan(\\lambda)");
226 TH2F* pPhiYAResidualsHistBneg =
new TH2F(
"fPhiYAResidualsHistBneg",
"\\phi-\\deltar\\phi side A (z>0), Bneg",36,0.0,6.3,100,-1.5,1.5);
227 pPhiYAResidualsHistBneg->SetXTitle(
"\\phi [rad]");
228 pPhiYAResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
229 TH2F* pPhiYCResidualsHistBneg =
new TH2F(
"fPhiYCResidualsHistBneg",
"\\phi-\\deltar\\phi side C (z<0), Bneg",36,0.0,6.3,100,-1.5,1.5);
230 pPhiYCResidualsHistBneg->SetXTitle(
"\\phi [rad]");
231 pPhiYCResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
232 TH2F* pPhiZAResidualsHistBneg =
new TH2F(
"fPhiZAResidualsHistBneg",
"\\phi-\\deltaz side A (z>0), Bneg",36,0.0,6.3,100,-3.0,3.0);
233 pPhiZAResidualsHistBneg->SetXTitle(
"\\phi [rad]");
234 pPhiZAResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
235 TH2F* pPhiZCResidualsHistBneg =
new TH2F(
"fPhiZCResidualsHistBneg",
"\\Pt-\\deltaz side C (z<0), Bneg",36,0.0,6.3,100,-3.0,3.0);
236 pPhiZCResidualsHistBneg->SetXTitle(
"\\phi [rad]");
237 pPhiZCResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
238 TH2F* pPtYAResidualsHistBneg =
new TH2F(
"fPtYAResidualsHistBneg",
"Pt-\\deltar\\phi side A (z>0), Bneg",20,.3,8.,80,-1.5,1.5);
239 pPtYAResidualsHistBneg->SetXTitle(
"Pt [rad]");
240 pPtYAResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
241 TH2F* pPtYCResidualsHistBneg =
new TH2F(
"fPtYCResidualsHistBneg",
"Pt-\\deltar\\phi side C (z<0), Bneg",20,.3,8.,80,-1.5,1.5);
242 pPtYCResidualsHistBneg->SetXTitle(
"Pt [rad]");
243 pPtYCResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
244 TH2F* pPtZAResidualsHistBneg =
new TH2F(
"fPtZAResidualsHistBneg",
"Pt-\\deltaz side A (z>0), Bneg",20,.3,8.,80,-3.0,3.0);
245 pPtZAResidualsHistBneg->SetXTitle(
"Pt");
246 pPtZAResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
247 TH2F* pPtZCResidualsHistBneg =
new TH2F(
"fPtZCResidualsHistBneg",
"Pt-\\deltaz side C (z<0), Bneg",20,.3,8.,80,-3.0,3.0);
248 pPtZCResidualsHistBneg->SetXTitle(
"Pt");
249 pPtZCResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
250 TH2F* pLowPtYAResidualsHistBneg =
new TH2F(
"fLowPtYAResidualsHistBneg",
"Pt-\\deltar\\phi side A (z>0), Bneg",100,0.0,1.5,80,-1.5,1.5);
251 pLowPtYAResidualsHistBneg->SetXTitle(
"Pt [rad]");
252 pLowPtYAResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
253 TH2F* pLowPtYCResidualsHistBneg =
new TH2F(
"fLowPtYCResidualsHistBneg",
"Pt-\\deltar\\phi side C (z<0), Bneg",100,0.0,1.5,80,-1.5,1.5);
254 pLowPtYCResidualsHistBneg->SetXTitle(
"Pt [rad]");
255 pLowPtYCResidualsHistBneg->SetYTitle(
"\\deltar\\phi [cm]");
256 TH2F* pLowPtZAResidualsHistBneg =
new TH2F(
"fLowPtZAResidualsHistBneg",
"Pt-\\deltaz side A (z>0), Bneg",100,0.0,1.5,80,-3.0,3.0);
257 pLowPtZAResidualsHistBneg->SetXTitle(
"Pt");
258 pLowPtZAResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
259 TH2F* pLowPtZCResidualsHistBneg =
new TH2F(
"fLowPtZCResidualsHistBneg",
"Pt-\\deltaz side C (z<0), Bneg",100,0.0,1.5,80,-3.0,3.0);
260 pLowPtZCResidualsHistBneg->SetXTitle(
"Pt");
261 pLowPtZCResidualsHistBneg->SetYTitle(
"\\deltaz [cm]");
263 listBneg->SetName(
"B-");
264 listBneg->SetOwner(kTRUE);
265 fList->Add(listBneg);
266 listBneg->Add(pZYAResidualsHistBneg);
267 listBneg->Add(pZYCResidualsHistBneg);
268 listBneg->Add(pLPAResidualsHistBneg);
269 listBneg->Add(pLPCResidualsHistBneg);
270 listBneg->Add(pPhiYAResidualsHistBneg);
271 listBneg->Add(pPhiYCResidualsHistBneg);
272 listBneg->Add(pPhiZAResidualsHistBneg);
273 listBneg->Add(pPhiZCResidualsHistBneg);
274 listBneg->Add(pPtYAResidualsHistBneg);
275 listBneg->Add(pPtYCResidualsHistBneg);
276 listBneg->Add(pPtZAResidualsHistBneg);
277 listBneg->Add(pPtZCResidualsHistBneg);
278 listBneg->Add(pLowPtYAResidualsHistBneg);
279 listBneg->Add(pLowPtYCResidualsHistBneg);
280 listBneg->Add(pLowPtZAResidualsHistBneg);
281 listBneg->Add(pLowPtZCResidualsHistBneg);
283 TH2F* pZYAResidualsHistBnil =
new TH2F(
"fZYAResidualsHistBnil",
"z-r\\phi residuals side A (z>0), Bnil", 100, -3., 3., 100, -1.5, 1.5 );
284 pZYAResidualsHistBnil->SetXTitle(
"\\deltaz [cm]");
285 pZYAResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
286 TH2F* pZYCResidualsHistBnil =
new TH2F(
"fZYCResidualsHistBnil",
"z-r\\phi residuals side C (z<0), Bnil", 100, -3., 3., 100, -1.5, 1.5 );
287 pZYCResidualsHistBnil->SetXTitle(
"\\deltaz [cm]");
288 pZYCResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
289 TH2F* pLPAResidualsHistBnil =
new TH2F(
"fLPAResidualsHistBnil",
"sin(\\phi) tan(\\lambda) residuals side A (z>0), Bnil", 100, -.05, 0.05, 100, -0.05, 0.05 );
290 pLPAResidualsHistBnil->SetXTitle(
"\\deltasin(\\phi)");
291 pLPAResidualsHistBnil->SetYTitle(
"\\deltatan(\\lambda)");
292 TH2F* pLPCResidualsHistBnil =
new TH2F(
"fLPCResidualsHistBnil",
"sin(\\phi) tan(\\lambda) residuals side C (z<0), Bnil", 100, -.05, 0.05, 100, -0.05, 0.05 );
293 pLPCResidualsHistBnil->SetXTitle(
"\\deltasin(\\phi)");
294 pLPCResidualsHistBnil->SetYTitle(
"\\deltatan(\\lambda)");
295 TH2F* pPhiYAResidualsHistBnil =
new TH2F(
"fPhiYAResidualsHistBnil",
"\\phi-\\deltar\\phi side A (z>0), Bnil",36,0.0,6.3,100,-1.5,1.5);
296 pPhiYAResidualsHistBnil->SetXTitle(
"\\phi [rad]");
297 pPhiYAResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
298 TH2F* pPhiYCResidualsHistBnil =
new TH2F(
"fPhiYCResidualsHistBnil",
"\\phi-\\deltar\\phi side C (z<0), Bnil",36,0.0,6.3,100,-1.5,1.5);
299 pPhiYCResidualsHistBnil->SetXTitle(
"\\phi [rad]");
300 pPhiYCResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
301 TH2F* pPhiZAResidualsHistBnil =
new TH2F(
"fPhiZAResidualsHistBnil",
"\\phi-\\deltaz side A (z>0), Bnil",36,0.0,6.3,100,-3.0,3.0);
302 pPhiZAResidualsHistBnil->SetXTitle(
"\\phi [rad]");
303 pPhiZAResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
304 TH2F* pPhiZCResidualsHistBnil =
new TH2F(
"fPhiZCResidualsHistBnil",
"\\Pt-\\deltaz side C (z<0), Bnil",36,0.0,6.3,100,-3.0,3.0);
305 pPhiZCResidualsHistBnil->SetXTitle(
"\\phi [rad]");
306 pPhiZCResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
307 TH2F* pPtYAResidualsHistBnil =
new TH2F(
"fPtYAResidualsHistBnil",
"Pt-\\deltar\\phi side A (z>0), Bnil",20,.3,8.,80,-1.5,1.5);
308 pPtYAResidualsHistBnil->SetXTitle(
"Pt [rad]");
309 pPtYAResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
310 TH2F* pPtYCResidualsHistBnil =
new TH2F(
"fPtYCResidualsHistBnil",
"Pt-\\deltar\\phi side C (z<0), Bnil",20,.3,8.,80,-1.5,1.5);
311 pPtYCResidualsHistBnil->SetXTitle(
"Pt [rad]");
312 pPtYCResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
313 TH2F* pPtZAResidualsHistBnil =
new TH2F(
"fPtZAResidualsHistBnil",
"Pt-\\deltaz side A (z>0), Bnil",20,.3,8.,80,-3.0,3.0);
314 pPtZAResidualsHistBnil->SetXTitle(
"Pt");
315 pPtZAResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
316 TH2F* pPtZCResidualsHistBnil =
new TH2F(
"fPtZCResidualsHistBnil",
"Pt-\\deltaz side C (z<0), Bnil",20,.3,8.,80,-3.0,3.0);
317 pPtZCResidualsHistBnil->SetXTitle(
"Pt");
318 pPtZCResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
319 TH2F* pLowPtYAResidualsHistBnil =
new TH2F(
"fLowPtYAResidualsHistBnil",
"Pt-\\deltar\\phi side A (z>0), Bnil",100,0.0,1.5,80,-1.5,1.5);
320 pLowPtYAResidualsHistBnil->SetXTitle(
"Pt [rad]");
321 pLowPtYAResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
322 TH2F* pLowPtYCResidualsHistBnil =
new TH2F(
"fLowPtYCResidualsHistBnil",
"Pt-\\deltar\\phi side C (z<0), Bnil",100,0.0,1.5,80,-1.5,1.5);
323 pLowPtYCResidualsHistBnil->SetXTitle(
"Pt [rad]");
324 pLowPtYCResidualsHistBnil->SetYTitle(
"\\deltar\\phi [cm]");
325 TH2F* pLowPtZAResidualsHistBnil =
new TH2F(
"fLowPtZAResidualsHistBnil",
"Pt-\\deltaz side A (z>0), Bnil",100,0.0,1.5,80,-3.0,3.0);
326 pLowPtZAResidualsHistBnil->SetXTitle(
"Pt");
327 pLowPtZAResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
328 TH2F* pLowPtZCResidualsHistBnil =
new TH2F(
"fLowPtZCResidualsHistBnil",
"Pt-\\deltaz side C (z<0), Bnil",100,0.0,1.5,80,-3.0,3.0);
329 pLowPtZCResidualsHistBnil->SetXTitle(
"Pt");
330 pLowPtZCResidualsHistBnil->SetYTitle(
"\\deltaz [cm]");
332 listBnil->SetName(
"B0");
333 listBnil->SetOwner(kTRUE);
334 fList->Add(listBnil);
335 listBnil->Add(pZYAResidualsHistBnil);
336 listBnil->Add(pZYCResidualsHistBnil);
337 listBnil->Add(pLPAResidualsHistBnil);
338 listBnil->Add(pLPCResidualsHistBnil);
339 listBnil->Add(pPhiYAResidualsHistBnil);
340 listBnil->Add(pPhiYCResidualsHistBnil);
341 listBnil->Add(pPhiZAResidualsHistBnil);
342 listBnil->Add(pPhiZCResidualsHistBnil);
343 listBnil->Add(pPtYAResidualsHistBnil);
344 listBnil->Add(pPtYCResidualsHistBnil);
345 listBnil->Add(pPtZAResidualsHistBnil);
346 listBnil->Add(pPtZCResidualsHistBnil);
347 listBnil->Add(pLowPtYAResidualsHistBnil);
348 listBnil->Add(pLowPtYCResidualsHistBnil);
349 listBnil->Add(pLowPtZAResidualsHistBnil);
350 listBnil->Add(pLowPtZCResidualsHistBnil);
352 TH1F* pNmatchingEff=
new TH1F(
"pNmatchingEff",
"matching efficiency",50,0.,1.);
353 fList->Add(pNmatchingEff);
355 TH1I* pChecks =
new TH1I(
"some counters",
"some counters",10,0,10);
356 pChecks->GetXaxis()->SetBinLabel(1+
kNoESD,
"no ESD");
357 pChecks->GetXaxis()->SetBinLabel(1+
kNoESDfriend,
"no ESDfriend");
358 pChecks->GetXaxis()->SetBinLabel(1+
kNoFriendTrack,
"no friendtrack");
359 pChecks->GetXaxis()->SetBinLabel(1+
kNoITSoutParams,
"no ITS out params");
360 pChecks->GetXaxis()->SetBinLabel(1+
kESDfriend,
"ESD friend");
362 pChecks->GetXaxis()->SetBinLabel(1+
kFriendTrack,
"friendtrack");
363 pChecks->GetXaxis()->SetBinLabel(1+
kITSoutParams,
"ITS out params");
366 fAligner =
new AliRelAlignerKalman();
392 AliESDfriend* eventFriend =
dynamic_cast<AliESDfriend*
>(ESDfriend());
402 AliError(
"no ESD friend");
413 if (eventFriend->TestSkipBit())
427 Int_t ntracks =
event->GetNumberOfTracks();
428 if (ntracks==0)
return;
434 alignerGlobal->AddESDevent(event);
445 AliInfo(Form(
"matched tracklet pairs: %i\n",n));
447 TH1F* nMatchingEff=
static_cast<TH1F*
>(
fList->At(3));
448 Float_t ratio = (float)n/(
float)ntracks;
449 nMatchingEff->Fill(ratio);
451 AliRelAlignerKalman* alignerSA = NULL;
454 for (
Int_t i=0;i<n;i++)
456 AliExternalTrackParam* paramsITS=
static_cast<AliExternalTrackParam*
>(arrayParamITS[i]);
457 AliExternalTrackParam* paramsTPC=
static_cast<AliExternalTrackParam*
>(arrayParamTPC[i]);
459 if (!(paramsITS&¶msTPC))
continue;
465 if (
fAligner->AddTrackParams(paramsITS, paramsTPC))
467 fAligner->SetRunNumber(event->GetRunNumber());
468 fAligner->SetMagField(event->GetMagneticField());
469 fAligner->SetTimeStamp(event->GetTimeStamp());
473 if (alignerSA) alignerSA->AddTrackParams(paramsITS, paramsTPC);
475 arrayParamITS.Delete();
476 arrayParamTPC.Delete();
495 Int_t ntracks = pESD->GetNumberOfTracks();
496 Double_t magfield = pESD->GetMagneticField();
499 for (
Int_t i=0;i<ntracks;i++)
505 for (
Int_t i=0; i<ntracks; i++)
508 AliESDtrack* track1 = pESD->GetTrack(i);
509 if (!track1)
continue;
513 if (!( ( track1->IsOn(AliESDtrack::kITSrefit)) &&
514 (!track1->IsOn(AliESDtrack::kTPCin)) ))
continue;
516 const AliESDfriendTrack* constfriendtrack1 = track1->GetFriendTrack();
517 if (!constfriendtrack1) {AliInfo(Form(
"no friendTrack1\n"));pChecks->Fill(
kNoFriendTrack);
continue;}
519 AliESDfriendTrack friendtrack1(*constfriendtrack1);
521 if (!friendtrack1.GetITSOut()) {pChecks->Fill(
kNoITSoutParams);
continue;}
523 AliExternalTrackParam params1(*(friendtrack1.GetITSOut()));
527 for (
Int_t j=0; j<ntracks; j++)
529 if (matchedArr[j]>0 && matchedArr[j]!=i)
continue;
531 AliESDtrack* track2 = pESD->GetTrack(j);
532 if (!track2)
continue;
533 if (track1==track2)
continue;
534 if (!(track2->IsOn(AliESDtrack::kTPCin)))
continue;
535 if (!(track2->IsOn(AliESDtrack::kITSout)))
continue;
540 if (track2->GetTgl() > 1.)
continue;
542 if (!track2->GetInnerParam())
continue;
543 if (!track2->GetOuterParam())
continue;
544 if (track2->GetOuterParam()->GetZ()*track2->GetInnerParam()->GetZ()<0)
continue;
545 if (track2->GetInnerParam()->GetX()>90)
continue;
546 if (TMath::Abs(track2->GetInnerParam()->GetZ())<5.)
continue;
548 AliExternalTrackParam params2(*(track2->GetInnerParam()));
551 if (!params2.Rotate(params1.GetAlpha()))
continue;
552 if (!params2.PropagateTo(params1.GetX(), magfield))
continue;
555 if ((params2.Pt()<
fMinPt)&&(TMath::Abs(magfield)>1.))
continue;
566 const Double32_t* p1 = params1.GetParameter();
567 const Double32_t* p2 = params2.GetParameter();
570 Double_t dy = TMath::Abs(p2[0]-p1[0]);
571 Double_t dz = TMath::Abs(p2[1]-p1[1]);
572 Double_t dphi = TMath::Abs(p2[2]-p1[2]);
573 Double_t dlam = TMath::Abs(p2[3]-p1[3]);
574 if (dy > 2.0)
continue;
575 if (dz > 10.0)
continue;
576 if (dphi > 0.1 )
continue;
577 if (dlam > 0.1 )
continue;
580 Double_t d = TMath::Sqrt(dy*dy+dz*dz+dphi*dphi+dlam*dlam);
581 if ( d >= bestd)
continue;
584 if (newi) iMatched++; newi=kFALSE;
585 params1.SetUniqueID(i);
586 params2.SetUniqueID(j);
587 if (arrITS[iMatched] && arrTPC[iMatched])
589 *(arrITS[iMatched]) = params1;
590 *(arrTPC[iMatched]) = params2;
594 arrITS[iMatched] =
new AliExternalTrackParam(params1);
595 arrTPC[iMatched] =
new AliExternalTrackParam(params2);
599 delete [] matchedArr;
605 AliExternalTrackParam* paramsTPC)
608 Float_t resy = paramsTPC->GetY() - paramsITS->GetY();
609 Float_t resz = paramsTPC->GetZ() - paramsITS->GetZ();
610 Float_t ressnp = paramsTPC->GetSnp() - paramsITS->GetSnp();
611 Float_t restgl = paramsTPC->GetTgl() - paramsITS->GetTgl();
614 Double_t field = fInputEvent->GetMagneticField();
615 if (field >= 1.) pList =
static_cast<TList*
>(
fList->At(0));
616 if (field <= -1.) pList =
static_cast<TList*
>(
fList->At(1));
617 if (field < 1. && field > -1.) pList =
static_cast<TList*
>(
fList->At(2));
620 TH2F* pZYAResidualsHist =
static_cast<TH2F*
>(pList->At(0));
621 TH2F* pZYCResidualsHist =
static_cast<TH2F*
>(pList->At(1));
622 TH2F* pLPAResidualsHist =
static_cast<TH2F*
>(pList->At(2));
623 TH2F* pLPCResidualsHist =
static_cast<TH2F*
>(pList->At(3));
624 TH2F* pPhiYAResidualsHist =
static_cast<TH2F*
>(pList->At(4));
625 TH2F* pPhiYCResidualsHist =
static_cast<TH2F*
>(pList->At(5));
626 TH2F* pPhiZAResidualsHist =
static_cast<TH2F*
>(pList->At(6));
627 TH2F* pPhiZCResidualsHist =
static_cast<TH2F*
>(pList->At(7));
628 TH2F* pPtYAResidualsHist =
static_cast<TH2F*
>(pList->At(8));
629 TH2F* pPtYCResidualsHist =
static_cast<TH2F*
>(pList->At(9));
630 TH2F* pPtZAResidualsHist =
static_cast<TH2F*
>(pList->At(10));
631 TH2F* pPtZCResidualsHist =
static_cast<TH2F*
>(pList->At(11));
632 TH2F* pLowPtYAResidualsHist =
static_cast<TH2F*
>(pList->At(12));
633 TH2F* pLowPtYCResidualsHist =
static_cast<TH2F*
>(pList->At(13));
634 TH2F* pLowPtZAResidualsHist =
static_cast<TH2F*
>(pList->At(14));
635 TH2F* pLowPtZCResidualsHist =
static_cast<TH2F*
>(pList->At(15));
637 if (paramsITS->GetZ() > 0.0)
639 pZYAResidualsHist->Fill(resz,resy);
640 pLPAResidualsHist->Fill(restgl,ressnp);
641 pPhiYAResidualsHist->Fill(paramsTPC->Phi(),resy);
642 pPhiZAResidualsHist->Fill(paramsTPC->Phi(),resz);
643 pPtYAResidualsHist->Fill(paramsTPC->Pt(),resy);
644 pPtZAResidualsHist->Fill(paramsTPC->Pt(),resz);
645 pLowPtYAResidualsHist->Fill(paramsTPC->Pt(),resy);
646 pLowPtZAResidualsHist->Fill(paramsTPC->Pt(),resz);
650 pZYCResidualsHist->Fill(resz,resy);
651 pLPCResidualsHist->Fill(restgl,ressnp);
652 pPhiYCResidualsHist->Fill(paramsTPC->Phi(),resy);
653 pPhiZCResidualsHist->Fill(paramsTPC->Phi(),resz);
654 pPtYCResidualsHist->Fill(paramsTPC->Pt(),resy);
655 pPtZCResidualsHist->Fill(paramsTPC->Pt(),resz);
656 pLowPtYCResidualsHist->Fill(paramsTPC->Pt(),resy);
657 pLowPtZCResidualsHist->Fill(paramsTPC->Pt(),resz);
Bool_t fFillDebugTree
list with QA histograms
void DoQA(AliExternalTrackParam *paramsITS, AliExternalTrackParam *paramsTPC)
AliRelAlignerKalman * GetAligner(UInt_t timestamp)
AliRelAlignerKalmanArray * fArrayITSglobal
ClassImp(AliAnalysisTaskITSTPCalignment) AliAnalysisTaskITSTPCalignment
Bool_t fUseITSoutITSSAtrack
virtual Bool_t UserNotify()
Double_t fOutRejSigma2Median
void SetupArray(Int_t t0, Int_t tend, Int_t slotwidth)
Double_t fOutRejSigmaOnMerge
virtual void Print(Option_t *option="") const
Int_t FindMatchingTracks(TObjArray &arrITS, TObjArray &arrTPC, AliESDEvent *pESD)
AliAnalysisTaskITSTPCalignment()
virtual void UserExec(Option_t *option)
void AnalyzeESDevent(AliESDEvent *event)
AliRelAlignerKalman * fAligner
tree
Bool_t fRejectOutliersSigma2Median
void SetOutRejSigmaOnMerge(Double_t s)
AliRelAlignerKalman * GetAlignerTemplate()
Bool_t fUseITSoutGlobalTrack
virtual void UserCreateOutputObjects()
TTree * fDebugTree
array of aligners ITS standalone
void Terminate(Option_t *)
AliRelAlignerKalmanArray * fArrayITSsa
array of aligners with ITS global