1 /**************************************************************************
2 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /////////////////////////////////////////////////////////////
18 // AliAnalysisTask to extract from ESD tracks the information
19 // on ITS tracking efficiency and resolutions.
21 // Author: A.Dainese, andrea.dainese@pd.infn.it
22 /////////////////////////////////////////////////////////////
29 #include <TClonesArray.h>
30 #include <TObjArray.h>
34 #include <TParticle.h>
36 #include "AliAnalysisTask.h"
37 #include "AliAnalysisManager.h"
39 #include "AliMultiplicity.h"
40 #include "AliVertexerTracks.h"
41 #include "AliESDtrack.h"
42 #include "AliExternalTrackParam.h"
43 #include "AliESDVertex.h"
44 #include "AliESDEvent.h"
45 #include "AliESDfriend.h"
46 #include "AliESDInputHandler.h"
47 #include "AliESDInputHandlerRP.h"
48 #include "AliESDtrackCuts.h"
49 #include "AliTrackPointArray.h"
50 #include "../ITS/AliITSRecPoint.h"
52 #include "AliInputEventHandler.h"
53 #include "AliMCEventHandler.h"
54 #include "AliMCEvent.h"
58 #include "AliGenEventHeader.h"
59 #include "AliAnalysisTaskITSTrackingCheck.h"
62 ClassImp(AliAnalysisTaskITSTrackingCheck)
63 AliAnalysisTaskITSTrackingCheck::AliAnalysisTaskITSTrackingCheck() :
66 fReadRPLabels(kFALSE),
68 fUseITSSAforNtuples(kFALSE),
77 fHistNclsITSSAInAcc(0),
78 fHistClusterMapITSMI(0),
79 fHistClusterMapITSMIok(0),
80 fHistClusterMapITSMIbad(0),
81 fHistClusterMapITSMIskipped(0),
82 fHistClusterMapITSMIoutinz(0),
83 fHistClusterMapITSMInorefit(0),
84 fHistClusterMapITSMInocls(0),
85 fHistClusterMapITSMIokoutinzbad(0),
86 fHistClusterMapITSSA(0),
87 fHistClusterMapITSSAok(0),
88 fHistClusterMapITSSAbad(0),
89 fHistClusterMapITSSAskipped(0),
90 fHistClusterMapITSSAoutinz(0),
91 fHistClusterMapITSSAnorefit(0),
92 fHistClusterMapITSSAnocls(0),
93 fHistClusterMapITSSAokoutinzbad(0),
94 fHistClusterMapITSSAInAcc(0),
95 fHistClusterMapITSSAokInAcc(0),
96 fHistClusterMapITSSAbadInAcc(0),
97 fHistClusterMapITSSAskippedInAcc(0),
98 fHistClusterMapITSSAoutinzInAcc(0),
99 fHistClusterMapITSSAnorefitInAcc(0),
100 fHistClusterMapITSSAnoclsInAcc(0),
101 fHistClusterMapITSSAokoutinzbadInAcc(0),
102 fHistClusterMapModuleITSSAokInAcc(0),
103 fHistClusterMapModuleITSSAbadInAcc(0),
104 fHistClusterMapModuleITSSAnoclsInAcc(0),
105 fHistClusterMapModuleITSMIokInAcc(0),
106 fHistClusterMapModuleITSMIbadInAcc(0),
107 fHistClusterMapModuleITSMInoclsInAcc(0),
108 fHistZatSPDouter0ok(0),
109 fHistZatSPDouter1ok(0),
110 fHistZatSPDouter2ok(0),
111 fHistZatSPDouter3ok(0),
112 fHistZatSPDouter0notok(0),
113 fHistZatSPDouter1notok(0),
114 fHistZatSPDouter2notok(0),
115 fHistZatSPDouter3notok(0),
118 fHistxlocVSmodSDDok(0),
124 fHistPtTPCInAccMCtwoSPD(0),
125 fHistPtTPCInAccMConeSPD(0),
126 fHistdEdxVSPtTPCInAcc(0),
127 fHistdEdxVSPtITSTPCsel(0),
128 fHistPtVSphiTPCInAcc(0),
129 fHistPtTPCInAccNoTRDout(0),
130 fHistPtTPCInAccNoTOFout(0),
131 fHistPtTPCInAccWithPtTPCAtInnerWall(0),
132 fHistPtTPCInAccWithPtTPCAtVtx(0),
136 fHistPtTPCInAccPfromStrange(0),
137 fHistPtTPCInAccSfromStrange(0),
138 fHistPtTPCInAccSfromMat(0),
145 fHistPtITSMIoneSPD(0),
146 fHistPtITSMI2InAcc(0),
147 fHistPtITSMI3InAcc(0),
148 fHistPtITSMI4InAcc(0),
149 fHistPtITSMI5InAcc(0),
150 fHistPtITSMI6InAcc(0),
151 fHistPtITSMISPDInAcc(0),
152 fHistPtITSMIoneSPDInAcc(0),
153 fHistPtITSMI2InAccFake(0),
154 fHistPtITSMI3InAccFake(0),
155 fHistPtITSMI4InAccFake(0),
156 fHistPtITSMI5InAccFake(0),
157 fHistPtITSMI6InAccFake(0),
158 fHistPtITSMISPDInAccFake(0),
159 fHistPtITSMIoneSPDInAccFake(0),
160 fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
162 fHistPtITSTPCselP(0),
163 fHistPtITSTPCselS(0),
164 fHistPtITSTPCselPfromStrange(0),
165 fHistPtITSTPCselSfromStrange(0),
166 fHistPtITSTPCselSfromMat(0),
167 fHistPtITSMI2InAccP(0),
168 fHistPtITSMI3InAccP(0),
169 fHistPtITSMI4InAccP(0),
170 fHistPtITSMI5InAccP(0),
171 fHistPtITSMI6InAccP(0),
172 fHistPtITSMISPDInAccP(0),
173 fHistPtITSMIoneSPDInAccP(0),
174 fHistPtITSMI2InAccS(0),
175 fHistPtITSMI3InAccS(0),
176 fHistPtITSMI4InAccS(0),
177 fHistPtITSMI5InAccS(0),
178 fHistPtITSMI6InAccS(0),
179 fHistPtITSMISPDInAccS(0),
180 fHistPtITSMIoneSPDInAccS(0),
181 fHistPtITSMIokbadoutinz6(0),
182 fHistPtITSMIokbadoutinz4InAcc(0),
183 fHistPtITSMIokbadoutinz5InAcc(0),
184 fHistPtITSMIokbadoutinz6InAcc(0),
185 fHistPhiITSMIokbadoutinz6InAcc(0),
186 fHistRProdVtxInAccP(0),
187 fHistRProdVtxInAccS(0),
188 fHistd0rphiTPCInAccP150200(0),
189 fHistd0rphiTPCInAccP500700(0),
190 fHistd0rphiTPCInAccP10001500(0),
191 fHistd0rphiTPCInAccS150200(0),
192 fHistd0rphiTPCInAccS500700(0),
193 fHistd0rphiTPCInAccS10001500(0),
194 fHistd0rphiITSMISPDInAccP150200(0),
195 fHistd0rphiITSMISPDInAccP500700(0),
196 fHistd0rphiITSMISPDInAccP10001500(0),
197 fHistd0rphiITSMISPDInAccS150200(0),
198 fHistd0rphiITSMISPDInAccS500700(0),
199 fHistd0rphiITSMISPDInAccS10001500(0),
200 fHistd0rphiITSMIoneSPDInAccP150200(0),
201 fHistd0rphiITSMIoneSPDInAccP350450(0),
202 fHistd0rphiITSMIoneSPDInAccP500700(0),
203 fHistd0rphiITSMIoneSPDInAccP10001500(0),
204 fHistd0rphiITSMIoneSPDInAccP25004000(0),
205 fHistd0rphiITSMIoneSPDInAccP40008000(0),
206 fHistd0zITSMIoneSPDInAccP150200(0),
207 fHistd0zITSMIoneSPDInAccP500700(0),
208 fHistd0zITSMIoneSPDInAccP10001500(0),
209 fHistd0zVSetaTPCInAccP10001500(0),
210 fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
211 fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
212 fHistd0rphiITSMIoneSPDInAccS150200(0),
213 fHistd0rphiITSMIoneSPDInAccS350450(0),
214 fHistd0rphiITSMIoneSPDInAccS500700(0),
215 fHistd0rphiITSMIoneSPDInAccS500700from22(0),
216 fHistd0rphiITSMIoneSPDInAccS500700from211(0),
217 fHistd0rphiITSMIoneSPDInAccS500700from310(0),
218 fHistd0rphiITSMIoneSPDInAccS500700from321(0),
219 fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
220 fHistd0rphiITSMIoneSPDInAccS10001500(0),
221 fHistd0rphiITSMIoneSPDInAccS25004000(0),
222 fHistd0rphiITSMIoneSPDInAccS40008000(0),
223 fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
224 fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
225 fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
226 fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
227 fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
228 fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
229 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
230 fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
231 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
232 fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
233 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
234 fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
235 fHistd0zITSMIoneSPDInAccS150200(0),
236 fHistd0zITSMIoneSPDInAccS500700(0),
237 fHistd0zITSMIoneSPDInAccS10001500(0),
239 fHistPDGMoth150200(0),
240 fHistPDGMoth500700(0),
241 fHistPDGMoth10001500(0),
244 fNtupleITSAlignExtra(0),
245 fNtupleITSAlignSPDTracklets(0),
247 fESDtrackCutsITSTPC(0)
252 //________________________________________________________________________
253 AliAnalysisTaskITSTrackingCheck::AliAnalysisTaskITSTrackingCheck(const char *name) :
254 AliAnalysisTaskSE(name),
256 fReadRPLabels(kFALSE),
257 fFillNtuples(kFALSE),
258 fUseITSSAforNtuples(kFALSE),
267 fHistNclsITSSAInAcc(0),
268 fHistClusterMapITSMI(0),
269 fHistClusterMapITSMIok(0),
270 fHistClusterMapITSMIbad(0),
271 fHistClusterMapITSMIskipped(0),
272 fHistClusterMapITSMIoutinz(0),
273 fHistClusterMapITSMInorefit(0),
274 fHistClusterMapITSMInocls(0),
275 fHistClusterMapITSMIokoutinzbad(0),
276 fHistClusterMapITSSA(0),
277 fHistClusterMapITSSAok(0),
278 fHistClusterMapITSSAbad(0),
279 fHistClusterMapITSSAskipped(0),
280 fHistClusterMapITSSAoutinz(0),
281 fHistClusterMapITSSAnorefit(0),
282 fHistClusterMapITSSAnocls(0),
283 fHistClusterMapITSSAokoutinzbad(0),
284 fHistClusterMapITSSAInAcc(0),
285 fHistClusterMapITSSAokInAcc(0),
286 fHistClusterMapITSSAbadInAcc(0),
287 fHistClusterMapITSSAskippedInAcc(0),
288 fHistClusterMapITSSAoutinzInAcc(0),
289 fHistClusterMapITSSAnorefitInAcc(0),
290 fHistClusterMapITSSAnoclsInAcc(0),
291 fHistClusterMapITSSAokoutinzbadInAcc(0),
292 fHistClusterMapModuleITSSAokInAcc(0),
293 fHistClusterMapModuleITSSAbadInAcc(0),
294 fHistClusterMapModuleITSSAnoclsInAcc(0),
295 fHistClusterMapModuleITSMIokInAcc(0),
296 fHistClusterMapModuleITSMIbadInAcc(0),
297 fHistClusterMapModuleITSMInoclsInAcc(0),
298 fHistZatSPDouter0ok(0),
299 fHistZatSPDouter1ok(0),
300 fHistZatSPDouter2ok(0),
301 fHistZatSPDouter3ok(0),
302 fHistZatSPDouter0notok(0),
303 fHistZatSPDouter1notok(0),
304 fHistZatSPDouter2notok(0),
305 fHistZatSPDouter3notok(0),
308 fHistxlocVSmodSDDok(0),
314 fHistPtTPCInAccMCtwoSPD(0),
315 fHistPtTPCInAccMConeSPD(0),
316 fHistdEdxVSPtTPCInAcc(0),
317 fHistdEdxVSPtITSTPCsel(0),
318 fHistPtVSphiTPCInAcc(0),
319 fHistPtTPCInAccNoTRDout(0),
320 fHistPtTPCInAccNoTOFout(0),
321 fHistPtTPCInAccWithPtTPCAtInnerWall(0),
322 fHistPtTPCInAccWithPtTPCAtVtx(0),
326 fHistPtTPCInAccPfromStrange(0),
327 fHistPtTPCInAccSfromStrange(0),
328 fHistPtTPCInAccSfromMat(0),
335 fHistPtITSMIoneSPD(0),
336 fHistPtITSMI2InAcc(0),
337 fHistPtITSMI3InAcc(0),
338 fHistPtITSMI4InAcc(0),
339 fHistPtITSMI5InAcc(0),
340 fHistPtITSMI6InAcc(0),
341 fHistPtITSMISPDInAcc(0),
342 fHistPtITSMIoneSPDInAcc(0),
343 fHistPtITSMI2InAccFake(0),
344 fHistPtITSMI3InAccFake(0),
345 fHistPtITSMI4InAccFake(0),
346 fHistPtITSMI5InAccFake(0),
347 fHistPtITSMI6InAccFake(0),
348 fHistPtITSMISPDInAccFake(0),
349 fHistPtITSMIoneSPDInAccFake(0),
350 fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
352 fHistPtITSTPCselP(0),
353 fHistPtITSTPCselS(0),
354 fHistPtITSTPCselPfromStrange(0),
355 fHistPtITSTPCselSfromStrange(0),
356 fHistPtITSTPCselSfromMat(0),
357 fHistPtITSMI2InAccP(0),
358 fHistPtITSMI3InAccP(0),
359 fHistPtITSMI4InAccP(0),
360 fHistPtITSMI5InAccP(0),
361 fHistPtITSMI6InAccP(0),
362 fHistPtITSMISPDInAccP(0),
363 fHistPtITSMIoneSPDInAccP(0),
364 fHistPtITSMI2InAccS(0),
365 fHistPtITSMI3InAccS(0),
366 fHistPtITSMI4InAccS(0),
367 fHistPtITSMI5InAccS(0),
368 fHistPtITSMI6InAccS(0),
369 fHistPtITSMISPDInAccS(0),
370 fHistPtITSMIoneSPDInAccS(0),
371 fHistPtITSMIokbadoutinz6(0),
372 fHistPtITSMIokbadoutinz4InAcc(0),
373 fHistPtITSMIokbadoutinz5InAcc(0),
374 fHistPtITSMIokbadoutinz6InAcc(0),
375 fHistPhiITSMIokbadoutinz6InAcc(0),
376 fHistRProdVtxInAccP(0),
377 fHistRProdVtxInAccS(0),
378 fHistd0rphiTPCInAccP150200(0),
379 fHistd0rphiTPCInAccP500700(0),
380 fHistd0rphiTPCInAccP10001500(0),
381 fHistd0rphiTPCInAccS150200(0),
382 fHistd0rphiTPCInAccS500700(0),
383 fHistd0rphiTPCInAccS10001500(0),
384 fHistd0rphiITSMISPDInAccP150200(0),
385 fHistd0rphiITSMISPDInAccP500700(0),
386 fHistd0rphiITSMISPDInAccP10001500(0),
387 fHistd0rphiITSMISPDInAccS150200(0),
388 fHistd0rphiITSMISPDInAccS500700(0),
389 fHistd0rphiITSMISPDInAccS10001500(0),
390 fHistd0rphiITSMIoneSPDInAccP150200(0),
391 fHistd0rphiITSMIoneSPDInAccP350450(0),
392 fHistd0rphiITSMIoneSPDInAccP500700(0),
393 fHistd0rphiITSMIoneSPDInAccP10001500(0),
394 fHistd0rphiITSMIoneSPDInAccP25004000(0),
395 fHistd0rphiITSMIoneSPDInAccP40008000(0),
396 fHistd0zITSMIoneSPDInAccP150200(0),
397 fHistd0zITSMIoneSPDInAccP500700(0),
398 fHistd0zITSMIoneSPDInAccP10001500(0),
399 fHistd0zVSetaTPCInAccP10001500(0),
400 fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
401 fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
402 fHistd0rphiITSMIoneSPDInAccS150200(0),
403 fHistd0rphiITSMIoneSPDInAccS350450(0),
404 fHistd0rphiITSMIoneSPDInAccS500700(0),
405 fHistd0rphiITSMIoneSPDInAccS500700from22(0),
406 fHistd0rphiITSMIoneSPDInAccS500700from211(0),
407 fHistd0rphiITSMIoneSPDInAccS500700from310(0),
408 fHistd0rphiITSMIoneSPDInAccS500700from321(0),
409 fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
410 fHistd0rphiITSMIoneSPDInAccS10001500(0),
411 fHistd0rphiITSMIoneSPDInAccS25004000(0),
412 fHistd0rphiITSMIoneSPDInAccS40008000(0),
413 fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
414 fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
415 fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
416 fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
417 fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
418 fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
419 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
420 fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
421 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
422 fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
423 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
424 fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
425 fHistd0zITSMIoneSPDInAccS150200(0),
426 fHistd0zITSMIoneSPDInAccS500700(0),
427 fHistd0zITSMIoneSPDInAccS10001500(0),
429 fHistPDGMoth150200(0),
430 fHistPDGMoth500700(0),
431 fHistPDGMoth10001500(0),
434 fNtupleITSAlignExtra(0),
435 fNtupleITSAlignSPDTracklets(0),
437 fESDtrackCutsITSTPC(0)
441 for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
443 // Define input and output slots here
444 // Output slot #0 writes into a TList container
445 DefineOutput(1, TList::Class()); //My private output
447 //________________________________________________________________________
448 AliAnalysisTaskITSTrackingCheck::~AliAnalysisTaskITSTrackingCheck()
452 // histograms are in the output list and deleted when the output
453 // list is deleted by the TSelector dtor
460 //________________________________________________________________________
461 void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
466 gStyle->SetHistLineWidth(2);
469 Float_t xPtBins[35]={0,0.025,0.05,0.075,0.08,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.280,0.325,0.35,0.375,0.4,0.45,0.55,0.7,0.75,0.9,1.2,1.7,2.5,3.5,4.5,5,6,8,13,15,23,28,35};
470 //Float_t xPtBins[35]={0,0.025,0.05,0.075,0.1,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.3,0.325,0.35,0.375,0.4,0.5,0.6,0.7,0.8,1.0,1.5,2.,2.5,3,4,5,6,8,10,15,20,25,30};
472 for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
474 // Several histograms are more conveniently managed in a TList
478 fHistPDGMoth = new TH1F("fHistPDGMoth","",4000,0,4000);
479 fOutput->Add(fHistPDGMoth);
480 fHistPDGMoth150200 = new TH1F("fHistPDGMoth150200","",4000,0,4000);
481 fOutput->Add(fHistPDGMoth150200);
482 fHistPDGMoth500700 = new TH1F("fHistPDGMoth500700","",4000,0,4000);
483 fOutput->Add(fHistPDGMoth500700);
484 fHistPDGMoth10001500 = new TH1F("fHistPDGMoth10001500","",4000,0,4000);
485 fOutput->Add(fHistPDGMoth10001500);
486 fHistPDGTrk = new TH1F("fHistPDGTrk","",4000,0,4000);
487 fOutput->Add(fHistPDGTrk);
489 fHistNEvents = new TH1F("fHistNEvents", "Events: -1 tot, 0 sel, 1 vSPD3D, 2 vSPDZ, 3 vSPD, 4 vTRK; Type; N Events",12, -1.5, 10.5);
490 fHistNEvents->SetMinimum(0);
491 fOutput->Add(fHistNEvents);
493 fHistNEventsFrac = (TH1F*)fHistNEvents->Clone("fHistNEventsFrac");
494 fOutput->Add(fHistNEventsFrac);
496 fHistNtracks = new TH1F("fHistNtracks", "N ESD tracks; N tracks; Events",5000, -0.5, 4999.5);
497 fHistNtracks->Sumw2();
498 fHistNtracks->SetMinimum(0);
499 fOutput->Add(fHistNtracks);
501 fHistNclsITSMI = new TH1F("fHistNclsITSMI", "N ITS clusters per track (MI); N clusters; Counts",7, -0.5, 6.5);
502 fHistNclsITSMI->Sumw2();
503 fHistNclsITSMI->SetMinimum(0);
504 fOutput->Add(fHistNclsITSMI);
506 fHistNclsITSSAInAcc = new TH1F("fHistNclsITSSAInAcc", "N ITS clusters per track (SA); N clusters; Counts",7, -0.5, 6.5);
507 fHistNclsITSSAInAcc->Sumw2();
508 fHistNclsITSSAInAcc->SetMinimum(0);
509 fOutput->Add(fHistNclsITSSAInAcc);
511 fHistNclsITSSA = new TH1F("fHistNclsITSSA", "N ITS clusters per track (SA); N clusters; Counts",7, -0.5, 6.5);
512 fHistNclsITSSA->Sumw2();
513 fHistNclsITSSA->SetMinimum(0);
514 fOutput->Add(fHistNclsITSSA);
516 fHistClusterMapITSMI = new TH1F("fHistClusterMapITSMI", "N tracks with point on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
517 fHistClusterMapITSMI->Sumw2();
518 fHistClusterMapITSMI->SetMinimum(0);
519 fOutput->Add(fHistClusterMapITSMI);
521 fHistClusterMapITSSA = new TH1F("fHistClusterMapITSSA", "N tracks with point on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
522 fHistClusterMapITSSA->Sumw2();
523 fHistClusterMapITSSA->SetMinimum(0);
524 fOutput->Add(fHistClusterMapITSSA);
526 fHistClusterMapITSSAInAcc = new TH1F("fHistClusterMapITSSAInAcc", "N tracks with point on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
527 fHistClusterMapITSSAInAcc->Sumw2();
528 fHistClusterMapITSSAInAcc->SetMinimum(0);
529 fOutput->Add(fHistClusterMapITSSAInAcc);
531 fHistClusterMapITSMIok = new TH1F("fHistClusterMapITSMIok", "N tracks with ok on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
532 fHistClusterMapITSMIok->Sumw2();
533 fHistClusterMapITSMIok->SetMinimum(0);
534 fOutput->Add(fHistClusterMapITSMIok);
536 fHistClusterMapITSSAokInAcc = new TH1F("fHistClusterMapITSSAokInAcc", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
537 fHistClusterMapITSSAokInAcc->Sumw2();
538 fHistClusterMapITSSAokInAcc->SetMinimum(0);
539 fOutput->Add(fHistClusterMapITSSAokInAcc);
541 fHistClusterMapModuleITSSAokInAcc = new TH1F("fHistClusterMapModuleITSSAokInAcc", "N tracks with ok on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
542 fHistClusterMapModuleITSSAokInAcc->SetMinimum(0);
543 fOutput->Add(fHistClusterMapModuleITSSAokInAcc);
545 fHistClusterMapModuleITSMIokInAcc = new TH1F("fHistClusterMapModuleITSMIokInAcc", "N tracks with ok on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
546 fHistClusterMapModuleITSMIokInAcc->SetMinimum(0);
547 fOutput->Add(fHistClusterMapModuleITSMIokInAcc);
549 fHistClusterMapITSSAok = new TH1F("fHistClusterMapITSSAok", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
550 fHistClusterMapITSSAok->Sumw2();
551 fHistClusterMapITSSAok->SetMinimum(0);
552 fOutput->Add(fHistClusterMapITSSAok);
554 fHistClusterMapITSMIbad = new TH1F("fHistClusterMapITSMIbad", "N tracks with bad on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
555 fHistClusterMapITSMIbad->Sumw2();
556 fHistClusterMapITSMIbad->SetMinimum(0);
557 fOutput->Add(fHistClusterMapITSMIbad);
559 fHistClusterMapITSSAbadInAcc = new TH1F("fHistClusterMapITSSAbadInAcc", "N tracks with bad on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
560 fHistClusterMapITSSAbadInAcc->Sumw2();
561 fHistClusterMapITSSAbadInAcc->SetMinimum(0);
562 fOutput->Add(fHistClusterMapITSSAbadInAcc);
564 fHistClusterMapModuleITSSAbadInAcc = new TH1F("fHistClusterMapModuleITSSAbadInAcc", "N tracks with bad on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
565 fHistClusterMapModuleITSSAbadInAcc->SetMinimum(0);
566 fOutput->Add(fHistClusterMapModuleITSSAbadInAcc);
568 fHistClusterMapModuleITSMIbadInAcc = new TH1F("fHistClusterMapModuleITSMIbadInAcc", "N tracks with bad on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
569 fHistClusterMapModuleITSMIbadInAcc->SetMinimum(0);
570 fOutput->Add(fHistClusterMapModuleITSMIbadInAcc);
572 fHistClusterMapITSSAbad = new TH1F("fHistClusterMapITSSAbad", "N tracks with bad on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
573 fHistClusterMapITSSAbad->Sumw2();
574 fHistClusterMapITSSAbad->SetMinimum(0);
575 fOutput->Add(fHistClusterMapITSSAbad);
577 fHistClusterMapITSMIskipped = new TH1F("fHistClusterMapITSMIskipped", "N tracks with skip on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
578 fHistClusterMapITSMIskipped->Sumw2();
579 fHistClusterMapITSMIskipped->SetMinimum(0);
580 fOutput->Add(fHistClusterMapITSMIskipped);
582 fHistClusterMapITSSAskippedInAcc = new TH1F("fHistClusterMapITSSAskippedInAcc", "N tracks with skip on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
583 fHistClusterMapITSSAskippedInAcc->Sumw2();
584 fHistClusterMapITSSAskippedInAcc->SetMinimum(0);
585 fOutput->Add(fHistClusterMapITSSAskippedInAcc);
587 fHistClusterMapITSSAskipped = new TH1F("fHistClusterMapITSSAskipped", "N tracks with skip on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
588 fHistClusterMapITSSAskipped->Sumw2();
589 fHistClusterMapITSSAskipped->SetMinimum(0);
590 fOutput->Add(fHistClusterMapITSSAskipped);
592 fHistClusterMapITSMIoutinz = new TH1F("fHistClusterMapITSMIoutinz", "N tracks out in z on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
593 fHistClusterMapITSMIoutinz->Sumw2();
594 fHistClusterMapITSMIoutinz->SetMinimum(0);
595 fOutput->Add(fHistClusterMapITSMIoutinz);
597 fHistClusterMapITSSAoutinzInAcc = new TH1F("fHistClusterMapITSSAoutinzInAcc", "N tracks with out in z on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
598 fHistClusterMapITSSAoutinzInAcc->Sumw2();
599 fHistClusterMapITSSAoutinzInAcc->SetMinimum(0);
600 fOutput->Add(fHistClusterMapITSSAoutinzInAcc);
602 fHistClusterMapITSSAoutinz = new TH1F("fHistClusterMapITSSAoutinz", "N tracks with out in z on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
603 fHistClusterMapITSSAoutinz->Sumw2();
604 fHistClusterMapITSSAoutinz->SetMinimum(0);
605 fOutput->Add(fHistClusterMapITSSAoutinz);
607 fHistClusterMapITSSAokoutinzbad = new TH1F("fHistClusterMapITSSAokoutinzbad", "N tracks with cluster or bad zone or out in z (SA); Layer; N tracks",6, -0.5, 5.5);
608 fHistClusterMapITSSAokoutinzbad->Sumw2();
609 fHistClusterMapITSSAokoutinzbad->SetMinimum(0);
610 fOutput->Add(fHistClusterMapITSSAokoutinzbad);
612 fHistClusterMapITSMIokoutinzbad = new TH1F("fHistClusterMapITSMIokoutinzbad", "N tracks with cluster or bad zone or out in z (MI); Layer; N tracks",6, -0.5, 5.5);
613 fHistClusterMapITSMIokoutinzbad->Sumw2();
614 fHistClusterMapITSMIokoutinzbad->SetMinimum(0);
615 fOutput->Add(fHistClusterMapITSMIokoutinzbad);
617 fHistClusterMapITSSAokoutinzbadInAcc = new TH1F("fHistClusterMapITSSAokoutinzbadInAcc", "N tracks with cluster or bad zone or out in z (SA); Layer; N tracks",6, -0.5, 5.5);
618 fHistClusterMapITSSAokoutinzbadInAcc->Sumw2();
619 fHistClusterMapITSSAokoutinzbadInAcc->SetMinimum(0);
620 fOutput->Add(fHistClusterMapITSSAokoutinzbadInAcc);
622 fHistClusterMapITSMInorefit = new TH1F("fHistClusterMapITSMInorefit", "N tracks with norefit on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
623 fHistClusterMapITSMInorefit->Sumw2();
624 fHistClusterMapITSMInorefit->SetMinimum(0);
625 fOutput->Add(fHistClusterMapITSMInorefit);
627 fHistClusterMapITSSAnorefitInAcc = new TH1F("fHistClusterMapITSSAnorefitInAcc", "N tracks with norefit on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
628 fHistClusterMapITSSAnorefitInAcc->Sumw2();
629 fHistClusterMapITSSAnorefitInAcc->SetMinimum(0);
630 fOutput->Add(fHistClusterMapITSSAnorefitInAcc);
632 fHistClusterMapITSSAnorefit = new TH1F("fHistClusterMapITSSAnorefit", "N tracks with norefit on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
633 fHistClusterMapITSSAnorefit->Sumw2();
634 fHistClusterMapITSSAnorefit->SetMinimum(0);
635 fOutput->Add(fHistClusterMapITSSAnorefit);
637 fHistClusterMapITSMInocls = new TH1F("fHistClusterMapITSMInocls", "N tracks with nocls on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
638 fHistClusterMapITSMInocls->Sumw2();
639 fHistClusterMapITSMInocls->SetMinimum(0);
640 fOutput->Add(fHistClusterMapITSMInocls);
642 fHistClusterMapITSSAnoclsInAcc = new TH1F("fHistClusterMapITSSAnoclsInAcc", "N tracks with nocls on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
643 fHistClusterMapITSSAnoclsInAcc->Sumw2();
644 fHistClusterMapITSSAnoclsInAcc->SetMinimum(0);
645 fOutput->Add(fHistClusterMapITSSAnoclsInAcc);
647 fHistClusterMapModuleITSSAnoclsInAcc = new TH1F("fHistClusterMapModuleITSSAnoclsInAcc", "N tracks with nocls on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
648 fHistClusterMapModuleITSSAnoclsInAcc->SetMinimum(0);
649 fOutput->Add(fHistClusterMapModuleITSSAnoclsInAcc);
651 fHistClusterMapModuleITSMInoclsInAcc = new TH1F("fHistClusterMapModuleITSMInoclsInAcc", "N tracks with nocls on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
652 fHistClusterMapModuleITSMInoclsInAcc->SetMinimum(0);
653 fOutput->Add(fHistClusterMapModuleITSMInoclsInAcc);
655 fHistClusterMapITSSAnocls = new TH1F("fHistClusterMapITSSAnocls", "N tracks with nocls on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
656 fHistClusterMapITSSAnocls->Sumw2();
657 fHistClusterMapITSSAnocls->SetMinimum(0);
658 fOutput->Add(fHistClusterMapITSSAnocls);
661 fHistZatSPDouter0ok = new TH1F("fHistZatSPDouter0ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
662 fHistZatSPDouter0ok->Sumw2();
663 fHistZatSPDouter0ok->SetMinimum(0);
664 fOutput->Add(fHistZatSPDouter0ok);
665 fHistZatSPDouter1ok = new TH1F("fHistZatSPDouter1ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
666 fHistZatSPDouter1ok->Sumw2();
667 fHistZatSPDouter1ok->SetMinimum(0);
668 fOutput->Add(fHistZatSPDouter1ok);
669 fHistZatSPDouter2ok = new TH1F("fHistZatSPDouter2ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
670 fHistZatSPDouter2ok->Sumw2();
671 fHistZatSPDouter2ok->SetMinimum(0);
672 fOutput->Add(fHistZatSPDouter2ok);
673 fHistZatSPDouter3ok = new TH1F("fHistZatSPDouter3ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
674 fHistZatSPDouter3ok->Sumw2();
675 fHistZatSPDouter3ok->SetMinimum(0);
676 fOutput->Add(fHistZatSPDouter3ok);
677 fHistZatSPDouter0notok = new TH1F("fHistZatSPDouter0notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
678 fHistZatSPDouter0notok->Sumw2();
679 fHistZatSPDouter0notok->SetMinimum(0);
680 fOutput->Add(fHistZatSPDouter0notok);
681 fHistZatSPDouter1notok = new TH1F("fHistZatSPDouter1notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
682 fHistZatSPDouter1notok->Sumw2();
683 fHistZatSPDouter1notok->SetMinimum(0);
684 fOutput->Add(fHistZatSPDouter1notok);
685 fHistZatSPDouter2notok = new TH1F("fHistZatSPDouter2notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
686 fHistZatSPDouter2notok->Sumw2();
687 fHistZatSPDouter2notok->SetMinimum(0);
688 fOutput->Add(fHistZatSPDouter2notok);
689 fHistZatSPDouter3notok = new TH1F("fHistZatSPDouter3notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
690 fHistZatSPDouter3notok->Sumw2();
691 fHistZatSPDouter3notok->SetMinimum(0);
692 fOutput->Add(fHistZatSPDouter3notok);
694 fHistxlocSDDok = new TH1F("fHistxlocSDDok", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
695 fHistxlocSDDok->Sumw2();
696 fHistxlocSDDok->SetMinimum(0);
697 fOutput->Add(fHistxlocSDDok);
699 fHistxlocVSmodSDDok = new TH2F("fHistxlocVSmodSDDok", "SDD points; module; xloc [cm]",260,239.5,499.5,25, -3.75, 3.75);
700 fOutput->Add(fHistxlocVSmodSDDok);
702 fHistzlocSDDok = new TH1F("fHistzlocSDDok", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
703 fHistzlocSDDok->Sumw2();
704 fHistzlocSDDok->SetMinimum(0);
705 fOutput->Add(fHistzlocSDDok);
707 fHistxlocSDDall = new TH1F("fHistxlocSDDall", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
708 fHistxlocSDDall->Sumw2();
709 fHistxlocSDDall->SetMinimum(0);
710 fOutput->Add(fHistxlocSDDall);
712 fHistzlocSDDall = new TH1F("fHistzlocSDDall", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
713 fHistzlocSDDall->Sumw2();
714 fHistzlocSDDall->SetMinimum(0);
715 fOutput->Add(fHistzlocSDDall);
718 fHistPhiTPCInAcc = new TH1F("fHistPhiTPCInAcc","Azimuthal distribution of TPC tracks; #phi; N tracks",100, 0, 2.*3.1415);
719 fHistPhiTPCInAcc->Sumw2();
720 fHistPhiTPCInAcc->SetMinimum(0);
721 fOutput->Add(fHistPhiTPCInAcc);
723 fHistPhiITSMIokbadoutinz6InAcc = new TH1F("fHistPhiITSMIokbadoutinz6InAcc","Azimuthal distribution of ITSMI tracks with 6 layers OK; #phi; N tracks",100,0,2.*3.1415);
724 fHistPhiITSMIokbadoutinz6InAcc->Sumw2();
725 fHistPhiITSMIokbadoutinz6InAcc->SetMinimum(0);
726 fOutput->Add(fHistPhiITSMIokbadoutinz6InAcc);
728 fHistPtTPC = new TH1F("fHistPtTPC","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
730 fHistPtTPC->SetMinimum(0);
731 fOutput->Add(fHistPtTPC);
733 fHistPtITSMI6 = new TH1F("fHistPtITSMI6","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
734 fHistPtITSMI6->Sumw2();
735 fHistPtITSMI6->SetMinimum(0);
736 fOutput->Add(fHistPtITSMI6);
738 fHistPtITSMI5 = new TH1F("fHistPtITSMI5","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
739 fHistPtITSMI5->Sumw2();
740 fHistPtITSMI5->SetMinimum(0);
741 fOutput->Add(fHistPtITSMI5);
743 fHistPtITSMI4 = new TH1F("fHistPtITSMI4","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
744 fHistPtITSMI4->Sumw2();
745 fHistPtITSMI4->SetMinimum(0);
746 fOutput->Add(fHistPtITSMI4);
748 fHistPtITSMI3 = new TH1F("fHistPtITSMI3","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
749 fHistPtITSMI3->Sumw2();
750 fHistPtITSMI3->SetMinimum(0);
751 fOutput->Add(fHistPtITSMI3);
753 fHistPtITSMI2 = new TH1F("fHistPtITSMI2","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
754 fHistPtITSMI2->Sumw2();
755 fHistPtITSMI2->SetMinimum(0);
756 fOutput->Add(fHistPtITSMI2);
758 fHistPtITSMISPD = new TH1F("fHistPtITSMISPD","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
759 fHistPtITSMISPD->Sumw2();
760 fHistPtITSMISPD->SetMinimum(0);
761 fOutput->Add(fHistPtITSMISPD);
763 fHistPtITSMIoneSPD = new TH1F("fHistPtITSMIoneSPD","pt distribution of ITSMIoneSPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
764 fHistPtITSMIoneSPD->Sumw2();
765 fHistPtITSMIoneSPD->SetMinimum(0);
766 fOutput->Add(fHistPtITSMIoneSPD);
768 fHistPtTPCInAcc = new TH1F("fHistPtTPCInAcc","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
769 fHistPtTPCInAcc->Sumw2();
770 fHistPtTPCInAcc->SetMinimum(0);
771 fOutput->Add(fHistPtTPCInAcc);
773 fHistPtTPCInAccMCtwoSPD = new TH1F("fHistPtTPCInAccMCtwoSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
774 fHistPtTPCInAccMCtwoSPD->Sumw2();
775 fHistPtTPCInAccMCtwoSPD->SetMinimum(0);
776 fOutput->Add(fHistPtTPCInAccMCtwoSPD);
778 fHistPtTPCInAccMConeSPD = new TH1F("fHistPtTPCInAccMConeSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
779 fHistPtTPCInAccMConeSPD->Sumw2();
780 fHistPtTPCInAccMConeSPD->SetMinimum(0);
781 fOutput->Add(fHistPtTPCInAccMConeSPD);
783 fHistdEdxVSPtTPCInAcc = new TH2F("fHistdEdxVSPtTPCInAcc","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; TPC dE/dx",100,0,1,50,0,500);
784 fOutput->Add(fHistdEdxVSPtTPCInAcc);
786 fHistdEdxVSPtITSTPCsel = new TH2F("fHistdEdxVSPtITSTPCsel","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; ITS dE/dx",100,0,1,50,0,500);
787 fOutput->Add(fHistdEdxVSPtITSTPCsel);
789 fHistPtVSphiTPCInAcc = new TH2F("fHistPtVSphiTPCInAcc","pt distribution of TPC tracks; phi; p_{t} [GeV/c]",18,0,6.28,20,0,0.5);
790 fHistPtVSphiTPCInAcc->SetMinimum(0);
791 fOutput->Add(fHistPtVSphiTPCInAcc);
793 fHistPtTPCInAccNoTRDout = new TH1F("fHistPtTPCInAccNoTRDout","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
794 fHistPtTPCInAccNoTRDout->Sumw2();
795 fHistPtTPCInAccNoTRDout->SetMinimum(0);
796 fOutput->Add(fHistPtTPCInAccNoTRDout);
798 fHistPtTPCInAccNoTOFout = new TH1F("fHistPtTPCInAccNoTOFout","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
799 fHistPtTPCInAccNoTOFout->Sumw2();
800 fHistPtTPCInAccNoTOFout->SetMinimum(0);
801 fOutput->Add(fHistPtTPCInAccNoTOFout);
803 fHistPtTPCInAccWithPtTPCAtVtx = new TH1F("fHistPtTPCInAccWithPtTPCAtVtx","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
804 fHistPtTPCInAccWithPtTPCAtVtx->Sumw2();
805 fHistPtTPCInAccWithPtTPCAtVtx->SetMinimum(0);
806 fOutput->Add(fHistPtTPCInAccWithPtTPCAtVtx);
808 fHistPtTPCInAccWithPtTPCAtInnerWall = new TH1F("fHistPtTPCInAccWithPtTPCAtInnerWall","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
809 fHistPtTPCInAccWithPtTPCAtInnerWall->Sumw2();
810 fHistPtTPCInAccWithPtTPCAtInnerWall->SetMinimum(0);
811 fOutput->Add(fHistPtTPCInAccWithPtTPCAtInnerWall);
813 fHistDeltaPtTPC = new TH2F("fHistDeltaPtTPC","pt distribution of TPC tracks; p_{t} [GeV/c]; p_{t} TPC at vtx - p_{t} at inner wall [GeV/c]",100,0,1,50,-0.2,0.2);
814 fHistDeltaPtTPC->SetMinimum(0);
815 fOutput->Add(fHistDeltaPtTPC);
817 fHistPtITSMI6InAcc = new TH1F("fHistPtITSMI6InAcc","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
818 fHistPtITSMI6InAcc->Sumw2();
819 fHistPtITSMI6InAcc->SetMinimum(0);
820 fOutput->Add(fHistPtITSMI6InAcc);
822 fHistPtITSMI5InAcc = new TH1F("fHistPtITSMI5InAcc","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
823 fHistPtITSMI5InAcc->Sumw2();
824 fHistPtITSMI5InAcc->SetMinimum(0);
825 fOutput->Add(fHistPtITSMI5InAcc);
827 fHistPtITSMI4InAcc = new TH1F("fHistPtITSMI4InAcc","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
828 fHistPtITSMI4InAcc->Sumw2();
829 fHistPtITSMI4InAcc->SetMinimum(0);
830 fOutput->Add(fHistPtITSMI4InAcc);
832 fHistPtITSMI3InAcc = new TH1F("fHistPtITSMI3InAcc","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
833 fHistPtITSMI3InAcc->Sumw2();
834 fHistPtITSMI3InAcc->SetMinimum(0);
835 fOutput->Add(fHistPtITSMI3InAcc);
837 fHistPtITSMI2InAcc = new TH1F("fHistPtITSMI2InAcc","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
838 fHistPtITSMI2InAcc->Sumw2();
839 fHistPtITSMI2InAcc->SetMinimum(0);
840 fOutput->Add(fHistPtITSMI2InAcc);
842 fHistPtITSMISPDInAcc = new TH1F("fHistPtITSMISPDInAcc","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
843 fHistPtITSMISPDInAcc->Sumw2();
844 fHistPtITSMISPDInAcc->SetMinimum(0);
845 fOutput->Add(fHistPtITSMISPDInAcc);
847 fHistPtITSMIoneSPDInAcc = new TH1F("fHistPtITSMIoneSPDInAcc","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
848 fHistPtITSMIoneSPDInAcc->Sumw2();
849 fHistPtITSMIoneSPDInAcc->SetMinimum(0);
850 fOutput->Add(fHistPtITSMIoneSPDInAcc);
852 fHistPtITSMI6InAccFake = new TH1F("fHistPtITSMI6InAccFake","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
853 fHistPtITSMI6InAccFake->Sumw2();
854 fHistPtITSMI6InAccFake->SetMinimum(0);
855 fOutput->Add(fHistPtITSMI6InAccFake);
857 fHistPtITSMI5InAccFake = new TH1F("fHistPtITSMI5InAccFake","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
858 fHistPtITSMI5InAccFake->Sumw2();
859 fHistPtITSMI5InAccFake->SetMinimum(0);
860 fOutput->Add(fHistPtITSMI5InAccFake);
862 fHistPtITSMI4InAccFake = new TH1F("fHistPtITSMI4InAccFake","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
863 fHistPtITSMI4InAccFake->Sumw2();
864 fHistPtITSMI4InAccFake->SetMinimum(0);
865 fOutput->Add(fHistPtITSMI4InAccFake);
867 fHistPtITSMI3InAccFake = new TH1F("fHistPtITSMI3InAccFake","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
868 fHistPtITSMI3InAccFake->Sumw2();
869 fHistPtITSMI3InAccFake->SetMinimum(0);
870 fOutput->Add(fHistPtITSMI3InAccFake);
872 fHistPtITSMI2InAccFake = new TH1F("fHistPtITSMI2InAccFake","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
873 fHistPtITSMI2InAccFake->Sumw2();
874 fHistPtITSMI2InAccFake->SetMinimum(0);
875 fOutput->Add(fHistPtITSMI2InAccFake);
877 fHistPtITSMISPDInAccFake = new TH1F("fHistPtITSMISPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
878 fHistPtITSMISPDInAccFake->Sumw2();
879 fHistPtITSMISPDInAccFake->SetMinimum(0);
880 fOutput->Add(fHistPtITSMISPDInAccFake);
882 fHistPtITSMIoneSPDInAccFake = new TH1F("fHistPtITSMIoneSPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
883 fHistPtITSMIoneSPDInAccFake->Sumw2();
884 fHistPtITSMIoneSPDInAccFake->SetMinimum(0);
885 fOutput->Add(fHistPtITSMIoneSPDInAccFake);
887 fHistPtITSMIoneSPDthreeSDDSSDInAcc = new TH1F("fHistPtITSMIoneSPDthreeSDDSSDInAcc","pt distribution of ITSMI tracks (>0 in SPD, >2 in SDD+SSD); p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
888 fHistPtITSMIoneSPDthreeSDDSSDInAcc->Sumw2();
889 fHistPtITSMIoneSPDthreeSDDSSDInAcc->SetMinimum(0);
890 fOutput->Add(fHistPtITSMIoneSPDthreeSDDSSDInAcc);
892 fHistPtITSTPCsel = new TH1F("fHistPtITSTPCsel","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
893 fHistPtITSTPCsel->Sumw2();
894 fHistPtITSTPCsel->SetMinimum(0);
895 fOutput->Add(fHistPtITSTPCsel);
897 fHistPtITSTPCselP = new TH1F("fHistPtITSTPCselP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
898 fHistPtITSTPCselP->Sumw2();
899 fHistPtITSTPCselP->SetMinimum(0);
900 fOutput->Add(fHistPtITSTPCselP);
902 fHistPtITSTPCselS = new TH1F("fHistPtITSTPCselS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
903 fHistPtITSTPCselS->Sumw2();
904 fHistPtITSTPCselS->SetMinimum(0);
905 fOutput->Add(fHistPtITSTPCselS);
907 fHistPtITSTPCselSfromStrange = new TH1F("fHistPtITSTPCselSfromStrange","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
908 fHistPtITSTPCselSfromStrange->Sumw2();
909 fHistPtITSTPCselSfromStrange->SetMinimum(0);
910 fOutput->Add(fHistPtITSTPCselSfromStrange);
912 fHistPtITSTPCselPfromStrange = new TH1F("fHistPtITSTPCselPfromStrange","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
913 fHistPtITSTPCselPfromStrange->Sumw2();
914 fHistPtITSTPCselPfromStrange->SetMinimum(0);
915 fOutput->Add(fHistPtITSTPCselPfromStrange);
917 fHistPtITSTPCselSfromMat = new TH1F("fHistPtITSTPCselSfromMat","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
918 fHistPtITSTPCselSfromMat->Sumw2();
919 fHistPtITSTPCselSfromMat->SetMinimum(0);
920 fOutput->Add(fHistPtITSTPCselSfromMat);
922 fHistPtTPCInAccP = new TH1F("fHistPtTPCInAccP","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
923 fHistPtTPCInAccP->Sumw2();
924 fHistPtTPCInAccP->SetMinimum(0);
925 fOutput->Add(fHistPtTPCInAccP);
927 fHistPtTPCInAccPfromStrange = new TH1F("fHistPtTPCInAccPfromStrange","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
928 fHistPtTPCInAccPfromStrange->Sumw2();
929 fHistPtTPCInAccPfromStrange->SetMinimum(0);
930 fOutput->Add(fHistPtTPCInAccPfromStrange);
932 fHistPtITSMI6InAccP = new TH1F("fHistPtITSMI6InAccP","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
933 fHistPtITSMI6InAccP->Sumw2();
934 fHistPtITSMI6InAccP->SetMinimum(0);
935 fOutput->Add(fHistPtITSMI6InAccP);
937 fHistPtITSMI5InAccP = new TH1F("fHistPtITSMI5InAccP","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
938 fHistPtITSMI5InAccP->Sumw2();
939 fHistPtITSMI5InAccP->SetMinimum(0);
940 fOutput->Add(fHistPtITSMI5InAccP);
942 fHistPtITSMI4InAccP = new TH1F("fHistPtITSMI4InAccP","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
943 fHistPtITSMI4InAccP->Sumw2();
944 fHistPtITSMI4InAccP->SetMinimum(0);
945 fOutput->Add(fHistPtITSMI4InAccP);
947 fHistPtITSMI3InAccP = new TH1F("fHistPtITSMI3InAccP","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
948 fHistPtITSMI3InAccP->Sumw2();
949 fHistPtITSMI3InAccP->SetMinimum(0);
950 fOutput->Add(fHistPtITSMI3InAccP);
952 fHistPtITSMI2InAccP = new TH1F("fHistPtITSMI2InAccP","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
953 fHistPtITSMI2InAccP->Sumw2();
954 fHistPtITSMI2InAccP->SetMinimum(0);
955 fOutput->Add(fHistPtITSMI2InAccP);
957 fHistPtITSMISPDInAccP = new TH1F("fHistPtITSMISPDInAccP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
958 fHistPtITSMISPDInAccP->Sumw2();
959 fHistPtITSMISPDInAccP->SetMinimum(0);
960 fOutput->Add(fHistPtITSMISPDInAccP);
962 fHistPtITSMIoneSPDInAccP = new TH1F("fHistPtITSMIoneSPDInAccP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
963 fHistPtITSMIoneSPDInAccP->Sumw2();
964 fHistPtITSMIoneSPDInAccP->SetMinimum(0);
965 fOutput->Add(fHistPtITSMIoneSPDInAccP);
967 fHistPtTPCInAccS = new TH1F("fHistPtTPCInAccS","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
968 fHistPtTPCInAccS->Sumw2();
969 fHistPtTPCInAccS->SetMinimum(0);
970 fOutput->Add(fHistPtTPCInAccS);
972 fHistPtTPCInAccSfromStrange = new TH1F("fHistPtTPCInAccSfromStrange","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
973 fHistPtTPCInAccSfromStrange->Sumw2();
974 fHistPtTPCInAccSfromStrange->SetMinimum(0);
975 fOutput->Add(fHistPtTPCInAccSfromStrange);
977 fHistPtTPCInAccSfromMat = new TH1F("fHistPtTPCInAccSfromMat","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
978 fHistPtTPCInAccSfromMat->Sumw2();
979 fHistPtTPCInAccSfromMat->SetMinimum(0);
980 fOutput->Add(fHistPtTPCInAccSfromMat);
982 fHistPtITSMI6InAccS = new TH1F("fHistPtITSMI6InAccS","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
983 fHistPtITSMI6InAccS->Sumw2();
984 fHistPtITSMI6InAccS->SetMinimum(0);
985 fOutput->Add(fHistPtITSMI6InAccS);
987 fHistPtITSMI5InAccS = new TH1F("fHistPtITSMI5InAccS","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
988 fHistPtITSMI5InAccS->Sumw2();
989 fHistPtITSMI5InAccS->SetMinimum(0);
990 fOutput->Add(fHistPtITSMI5InAccS);
992 fHistPtITSMI4InAccS = new TH1F("fHistPtITSMI4InAccS","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
993 fHistPtITSMI4InAccS->Sumw2();
994 fHistPtITSMI4InAccS->SetMinimum(0);
995 fOutput->Add(fHistPtITSMI4InAccS);
997 fHistPtITSMI3InAccS = new TH1F("fHistPtITSMI3InAccS","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
998 fHistPtITSMI3InAccS->Sumw2();
999 fHistPtITSMI3InAccS->SetMinimum(0);
1000 fOutput->Add(fHistPtITSMI3InAccS);
1002 fHistPtITSMI2InAccS = new TH1F("fHistPtITSMI2InAccS","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1003 fHistPtITSMI2InAccS->Sumw2();
1004 fHistPtITSMI2InAccS->SetMinimum(0);
1005 fOutput->Add(fHistPtITSMI2InAccS);
1007 fHistPtITSMISPDInAccS = new TH1F("fHistPtITSMISPDInAccS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1008 fHistPtITSMISPDInAccS->Sumw2();
1009 fHistPtITSMISPDInAccS->SetMinimum(0);
1010 fOutput->Add(fHistPtITSMISPDInAccS);
1012 fHistPtITSMIoneSPDInAccS = new TH1F("fHistPtITSMIoneSPDInAccS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1013 fHistPtITSMIoneSPDInAccS->Sumw2();
1014 fHistPtITSMIoneSPDInAccS->SetMinimum(0);
1015 fOutput->Add(fHistPtITSMIoneSPDInAccS);
1017 fHistPtITSMIokbadoutinz6 = new TH1F("fHistPtITSMIokbadoutinz6","pt distribution of ITSMI tracks with 6 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1018 fHistPtITSMIokbadoutinz6->Sumw2();
1019 fHistPtITSMIokbadoutinz6->SetMinimum(0);
1020 fOutput->Add(fHistPtITSMIokbadoutinz6);
1022 fHistPtITSMIokbadoutinz4InAcc = new TH1F("fHistPtITSMIokbadoutinz4InAcc","pt distribution of ITSMI tracks with 4 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1023 fHistPtITSMIokbadoutinz4InAcc->Sumw2();
1024 fHistPtITSMIokbadoutinz4InAcc->SetMinimum(0);
1025 fOutput->Add(fHistPtITSMIokbadoutinz4InAcc);
1027 fHistPtITSMIokbadoutinz5InAcc = new TH1F("fHistPtITSMIokbadoutinz5InAcc","pt distribution of ITSMI tracks with 5 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1028 fHistPtITSMIokbadoutinz5InAcc->Sumw2();
1029 fHistPtITSMIokbadoutinz5InAcc->SetMinimum(0);
1030 fOutput->Add(fHistPtITSMIokbadoutinz5InAcc);
1032 fHistPtITSMIokbadoutinz6InAcc = new TH1F("fHistPtITSMIokbadoutinz6InAcc","pt distribution of ITSMI tracks with 6 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1033 fHistPtITSMIokbadoutinz6InAcc->Sumw2();
1034 fHistPtITSMIokbadoutinz6InAcc->SetMinimum(0);
1035 fOutput->Add(fHistPtITSMIokbadoutinz6InAcc);
1037 fHistRProdVtxInAccP = new TH1F("fHistRProdVtxInAccP","Radius of production vertex for primaries; r [cm]; N tracks",100,0,10);
1038 fHistRProdVtxInAccP->Sumw2();
1039 fHistRProdVtxInAccP->SetMinimum(0);
1040 fOutput->Add(fHistRProdVtxInAccP);
1042 fHistRProdVtxInAccS = new TH1F("fHistRProdVtxInAccS","Radius of production vertex for secondaries; r [cm]; N tracks",100,0,10);
1043 fHistRProdVtxInAccS->Sumw2();
1044 fHistRProdVtxInAccS->SetMinimum(0);
1045 fOutput->Add(fHistRProdVtxInAccS);
1047 fHistd0rphiTPCInAccP150200 = new TH1F("fHistd0rphiTPCInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1048 fHistd0rphiTPCInAccP150200->Sumw2();
1049 fHistd0rphiTPCInAccP150200->SetMinimum(0);
1050 fOutput->Add(fHistd0rphiTPCInAccP150200);
1052 fHistd0rphiTPCInAccP500700 = new TH1F("fHistd0rphiTPCInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1053 fHistd0rphiTPCInAccP500700->Sumw2();
1054 fHistd0rphiTPCInAccP500700->SetMinimum(0);
1055 fOutput->Add(fHistd0rphiTPCInAccP500700);
1057 fHistd0rphiTPCInAccP10001500 = new TH1F("fHistd0rphiTPCInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1058 fHistd0rphiTPCInAccP10001500->Sumw2();
1059 fHistd0rphiTPCInAccP10001500->SetMinimum(0);
1060 fOutput->Add(fHistd0rphiTPCInAccP10001500);
1062 fHistd0rphiTPCInAccS150200 = new TH1F("fHistd0rphiTPCInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1063 fHistd0rphiTPCInAccS150200->Sumw2();
1064 fHistd0rphiTPCInAccS150200->SetMinimum(0);
1065 fOutput->Add(fHistd0rphiTPCInAccS150200);
1067 fHistd0rphiTPCInAccS500700 = new TH1F("fHistd0rphiTPCInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1068 fHistd0rphiTPCInAccS500700->Sumw2();
1069 fHistd0rphiTPCInAccS500700->SetMinimum(0);
1070 fOutput->Add(fHistd0rphiTPCInAccS500700);
1072 fHistd0rphiTPCInAccS10001500 = new TH1F("fHistd0rphiTPCInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1073 fHistd0rphiTPCInAccS10001500->Sumw2();
1074 fHistd0rphiTPCInAccS10001500->SetMinimum(0);
1075 fOutput->Add(fHistd0rphiTPCInAccS10001500);
1077 fHistd0rphiITSMISPDInAccP150200 = new TH1F("fHistd0rphiITSMISPDInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1078 fHistd0rphiITSMISPDInAccP150200->Sumw2();
1079 fHistd0rphiITSMISPDInAccP150200->SetMinimum(0);
1080 fOutput->Add(fHistd0rphiITSMISPDInAccP150200);
1082 fHistd0rphiITSMISPDInAccP500700 = new TH1F("fHistd0rphiITSMISPDInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1083 fHistd0rphiITSMISPDInAccP500700->Sumw2();
1084 fHistd0rphiITSMISPDInAccP500700->SetMinimum(0);
1085 fOutput->Add(fHistd0rphiITSMISPDInAccP500700);
1087 fHistd0rphiITSMISPDInAccP10001500 = new TH1F("fHistd0rphiITSMISPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1088 fHistd0rphiITSMISPDInAccP10001500->Sumw2();
1089 fHistd0rphiITSMISPDInAccP10001500->SetMinimum(0);
1090 fOutput->Add(fHistd0rphiITSMISPDInAccP10001500);
1092 fHistd0rphiITSMISPDInAccS150200 = new TH1F("fHistd0rphiITSMISPDInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1093 fHistd0rphiITSMISPDInAccS150200->Sumw2();
1094 fHistd0rphiITSMISPDInAccS150200->SetMinimum(0);
1095 fOutput->Add(fHistd0rphiITSMISPDInAccS150200);
1097 fHistd0rphiITSMISPDInAccS500700 = new TH1F("fHistd0rphiITSMISPDInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1098 fHistd0rphiITSMISPDInAccS500700->Sumw2();
1099 fHistd0rphiITSMISPDInAccS500700->SetMinimum(0);
1100 fOutput->Add(fHistd0rphiITSMISPDInAccS500700);
1102 fHistd0rphiITSMISPDInAccS10001500 = new TH1F("fHistd0rphiITSMISPDInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1103 fHistd0rphiITSMISPDInAccS10001500->Sumw2();
1104 fHistd0rphiITSMISPDInAccS10001500->SetMinimum(0);
1105 fOutput->Add(fHistd0rphiITSMISPDInAccS10001500);
1107 fHistd0rphiITSMIoneSPDInAccP150200 = new TH1F("fHistd0rphiITSMIoneSPDInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1108 fHistd0rphiITSMIoneSPDInAccP150200->Sumw2();
1109 fHistd0rphiITSMIoneSPDInAccP150200->SetMinimum(0);
1110 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP150200);
1112 fHistd0rphiITSMIoneSPDInAccP350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccP350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1113 fHistd0rphiITSMIoneSPDInAccP350450->Sumw2();
1114 fHistd0rphiITSMIoneSPDInAccP350450->SetMinimum(0);
1115 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP350450);
1117 fHistd0rphiITSMIoneSPDInAccP500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1118 fHistd0rphiITSMIoneSPDInAccP500700->Sumw2();
1119 fHistd0rphiITSMIoneSPDInAccP500700->SetMinimum(0);
1120 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP500700);
1122 fHistd0rphiITSMIoneSPDInAccP10001500 = new TH1F("fHistd0rphiITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1123 fHistd0rphiITSMIoneSPDInAccP10001500->Sumw2();
1124 fHistd0rphiITSMIoneSPDInAccP10001500->SetMinimum(0);
1125 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP10001500);
1127 fHistd0rphiITSMIoneSPDInAccP25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1128 fHistd0rphiITSMIoneSPDInAccP25004000->Sumw2();
1129 fHistd0rphiITSMIoneSPDInAccP25004000->SetMinimum(0);
1130 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP25004000);
1132 fHistd0rphiITSMIoneSPDInAccP40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1133 fHistd0rphiITSMIoneSPDInAccP40008000->Sumw2();
1134 fHistd0rphiITSMIoneSPDInAccP40008000->SetMinimum(0);
1135 fOutput->Add(fHistd0rphiITSMIoneSPDInAccP40008000);
1137 fHistd0zITSMIoneSPDInAccP150200 = new TH1F("fHistd0zITSMIoneSPDInAccP150200","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1138 fHistd0zITSMIoneSPDInAccP150200->Sumw2();
1139 fHistd0zITSMIoneSPDInAccP150200->SetMinimum(0);
1140 fOutput->Add(fHistd0zITSMIoneSPDInAccP150200);
1142 fHistd0zITSMIoneSPDInAccP500700 = new TH1F("fHistd0zITSMIoneSPDInAccP500700","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1143 fHistd0zITSMIoneSPDInAccP500700->Sumw2();
1144 fHistd0zITSMIoneSPDInAccP500700->SetMinimum(0);
1145 fOutput->Add(fHistd0zITSMIoneSPDInAccP500700);
1147 fHistd0zITSMIoneSPDInAccP10001500 = new TH1F("fHistd0zITSMIoneSPDInAccP10001500","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1148 fHistd0zITSMIoneSPDInAccP10001500->Sumw2();
1149 fHistd0zITSMIoneSPDInAccP10001500->SetMinimum(0);
1150 fOutput->Add(fHistd0zITSMIoneSPDInAccP10001500);
1152 fHistd0zVSetaTPCInAccP10001500 = new TH2F("fHistd0zVSetaTPCInAccP10001500","Long. imp. par. to VertexSPD for TPC tracks; d_{0} z [cm]; eta",100,-4,4,10,-1,1);
1153 fOutput->Add(fHistd0zVSetaTPCInAccP10001500);
1155 fHistd0rphiVSphiITSMIoneSPDInAccP10001500 = new TH2F("fHistd0rphiVSphiITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; phi",30,-0.3,0.3,40,0,2*3.1415);
1156 fOutput->Add(fHistd0rphiVSphiITSMIoneSPDInAccP10001500);
1158 fHistd0rphiVSetaITSMIoneSPDInAccP10001500 = new TH2F("fHistd0rphiVSetaITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; eta",30,-0.3,0.3,10,-1,1);
1159 fOutput->Add(fHistd0rphiVSetaITSMIoneSPDInAccP10001500);
1161 fHistd0rphiITSMIoneSPDInAccS150200 = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1162 fHistd0rphiITSMIoneSPDInAccS150200->Sumw2();
1163 fHistd0rphiITSMIoneSPDInAccS150200->SetMinimum(0);
1164 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200);
1166 fHistd0rphiITSMIoneSPDInAccS350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1167 fHistd0rphiITSMIoneSPDInAccS350450->Sumw2();
1168 fHistd0rphiITSMIoneSPDInAccS350450->SetMinimum(0);
1169 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450);
1171 fHistd0rphiITSMIoneSPDInAccS500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1172 fHistd0rphiITSMIoneSPDInAccS500700->Sumw2();
1173 fHistd0rphiITSMIoneSPDInAccS500700->SetMinimum(0);
1174 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700);
1176 fHistd0rphiITSMIoneSPDInAccS500700from22 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from22","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1177 fHistd0rphiITSMIoneSPDInAccS500700from22->Sumw2();
1178 fHistd0rphiITSMIoneSPDInAccS500700from22->SetMinimum(0);
1179 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from22);
1181 fHistd0rphiITSMIoneSPDInAccS500700from211 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from211","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1182 fHistd0rphiITSMIoneSPDInAccS500700from211->Sumw2();
1183 fHistd0rphiITSMIoneSPDInAccS500700from211->SetMinimum(0);
1184 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from211);
1186 fHistd0rphiITSMIoneSPDInAccS500700from310 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from310","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1187 fHistd0rphiITSMIoneSPDInAccS500700from310->Sumw2();
1188 fHistd0rphiITSMIoneSPDInAccS500700from310->SetMinimum(0);
1189 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from310);
1191 fHistd0rphiITSMIoneSPDInAccS500700from321 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from321","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1192 fHistd0rphiITSMIoneSPDInAccS500700from321->Sumw2();
1193 fHistd0rphiITSMIoneSPDInAccS500700from321->SetMinimum(0);
1194 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from321);
1196 fHistd0rphiITSMIoneSPDInAccS500700from3122 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from3122","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1197 fHistd0rphiITSMIoneSPDInAccS500700from3122->Sumw2();
1198 fHistd0rphiITSMIoneSPDInAccS500700from3122->SetMinimum(0);
1199 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from3122);
1201 fHistd0rphiITSMIoneSPDInAccS10001500 = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1202 fHistd0rphiITSMIoneSPDInAccS10001500->Sumw2();
1203 fHistd0rphiITSMIoneSPDInAccS10001500->SetMinimum(0);
1204 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500);
1206 fHistd0rphiITSMIoneSPDInAccS25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1207 fHistd0rphiITSMIoneSPDInAccS25004000->Sumw2();
1208 fHistd0rphiITSMIoneSPDInAccS25004000->SetMinimum(0);
1209 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000);
1211 fHistd0rphiITSMIoneSPDInAccS40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1212 fHistd0rphiITSMIoneSPDInAccS40008000->Sumw2();
1213 fHistd0rphiITSMIoneSPDInAccS40008000->SetMinimum(0);
1214 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000);
1216 fHistd0rphiITSMIoneSPDInAccS150200fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1217 fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Sumw2();
1218 fHistd0rphiITSMIoneSPDInAccS150200fromStrange->SetMinimum(0);
1219 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromStrange);
1221 fHistd0rphiITSMIoneSPDInAccS150200fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1222 fHistd0rphiITSMIoneSPDInAccS150200fromMat->Sumw2();
1223 fHistd0rphiITSMIoneSPDInAccS150200fromMat->SetMinimum(0);
1224 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromMat);
1226 fHistd0rphiITSMIoneSPDInAccS350450fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1227 fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Sumw2();
1228 fHistd0rphiITSMIoneSPDInAccS350450fromStrange->SetMinimum(0);
1229 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromStrange);
1231 fHistd0rphiITSMIoneSPDInAccS350450fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1232 fHistd0rphiITSMIoneSPDInAccS350450fromMat->Sumw2();
1233 fHistd0rphiITSMIoneSPDInAccS350450fromMat->SetMinimum(0);
1234 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromMat);
1236 fHistd0rphiITSMIoneSPDInAccS500700fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1237 fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Sumw2();
1238 fHistd0rphiITSMIoneSPDInAccS500700fromStrange->SetMinimum(0);
1239 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromStrange);
1241 fHistd0rphiITSMIoneSPDInAccS500700fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1242 fHistd0rphiITSMIoneSPDInAccS500700fromMat->Sumw2();
1243 fHistd0rphiITSMIoneSPDInAccS500700fromMat->SetMinimum(0);
1244 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromMat);
1246 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1247 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Sumw2();
1248 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->SetMinimum(0);
1249 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromStrange);
1251 fHistd0rphiITSMIoneSPDInAccS10001500fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1252 fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Sumw2();
1253 fHistd0rphiITSMIoneSPDInAccS10001500fromMat->SetMinimum(0);
1254 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromMat);
1256 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1257 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Sumw2();
1258 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->SetMinimum(0);
1259 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromStrange);
1261 fHistd0rphiITSMIoneSPDInAccS25004000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1262 fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Sumw2();
1263 fHistd0rphiITSMIoneSPDInAccS25004000fromMat->SetMinimum(0);
1264 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromMat);
1266 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1267 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Sumw2();
1268 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->SetMinimum(0);
1269 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromStrange);
1271 fHistd0rphiITSMIoneSPDInAccS40008000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1272 fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Sumw2();
1273 fHistd0rphiITSMIoneSPDInAccS40008000fromMat->SetMinimum(0);
1274 fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromMat);
1277 fHistd0zITSMIoneSPDInAccS150200 = new TH1F("fHistd0zITSMIoneSPDInAccS150200","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1278 fHistd0zITSMIoneSPDInAccS150200->Sumw2();
1279 fHistd0zITSMIoneSPDInAccS150200->SetMinimum(0);
1280 fOutput->Add(fHistd0zITSMIoneSPDInAccS150200);
1282 fHistd0zITSMIoneSPDInAccS500700 = new TH1F("fHistd0zITSMIoneSPDInAccS500700","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1283 fHistd0zITSMIoneSPDInAccS500700->Sumw2();
1284 fHistd0zITSMIoneSPDInAccS500700->SetMinimum(0);
1285 fOutput->Add(fHistd0zITSMIoneSPDInAccS500700);
1287 fHistd0zITSMIoneSPDInAccS10001500 = new TH1F("fHistd0zITSMIoneSPDInAccS10001500","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1288 fHistd0zITSMIoneSPDInAccS10001500->Sumw2();
1289 fHistd0zITSMIoneSPDInAccS10001500->SetMinimum(0);
1290 fOutput->Add(fHistd0zITSMIoneSPDInAccS10001500);
1295 fNtupleESDTracks = new TNtuple("fNtupleESDTracks","tracks","pt:eta:phi:d0:z0:sigmad0:sigmaz0:ptMC:pdgMC:pdgMCMoth:d0MC:d0MCv:z0MCv:sigmad0MCv:sigmaz0MCv:ITSflag:isPrimary:isTPCSel");
1296 fOutput->Add(fNtupleESDTracks);
1298 fNtupleITSAlignExtra = new TNtuple("fNtupleITSAlignExtra","ITS alignment checks: extra clusters","layer:x:y:z:dxy:dz:xloc:zloc:npoints:pt");
1299 fOutput->Add(fNtupleITSAlignExtra);
1301 fNtupleITSAlignSPDTracklets = new TNtuple("fNtupleITSAlignSPDTracklets","ITS alignment checks: SPD tracklets wrt SPD vertex","phi:theta:z:dxy:dz:pt");
1302 fOutput->Add(fNtupleITSAlignSPDTracklets);
1307 //________________________________________________________________________
1308 void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *)
1311 // Called for each event
1313 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
1316 Printf("ERROR: fESD not available");
1321 fHistNEvents->Fill(-1);
1324 Bool_t isSelected = kTRUE;
1326 isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1328 if(!isSelected) return;
1331 //if(fESD->GetEventType()!=7) return;
1333 // *********** MC info ***************
1334 TArrayF mcVertex(3);
1335 mcVertex[0]=9999.; mcVertex[1]=9999.; mcVertex[2]=9999.;
1336 Float_t dNchdy=-999.;
1339 AliESDVertex *vertexMC=0;
1342 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1343 if (!eventHandler) {
1344 Printf("ERROR: Could not retrieve MC event handler");
1348 AliMCEvent* mcEvent = eventHandler->MCEvent();
1350 Printf("ERROR: Could not retrieve MC event");
1354 stack = mcEvent->Stack();
1356 AliDebug(AliLog::kError, "Stack not available");
1360 AliHeader* header = mcEvent->Header();
1362 AliDebug(AliLog::kError, "Header not available");
1365 AliGenEventHeader* genHeader = header->GenEventHeader();
1366 genHeader->PrimaryVertex(mcVertex);
1369 Int_t ngenpart = (Int_t)stack->GetNtrack();
1370 //printf("# generated particles = %d\n",ngenpart);
1372 for(Int_t ip=0; ip<ngenpart; ip++) {
1373 part = (TParticle*)stack->Particle(ip);
1374 // keep only electrons, muons, pions, kaons and protons
1375 Int_t apdg = TMath::Abs(part->GetPdgCode());
1376 if(apdg!=11 && apdg!=13 && apdg!=211 && apdg!=321 && apdg!=2212) continue;
1377 // reject secondaries
1378 if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))>0.0010) continue;
1379 // reject incoming protons
1380 Double_t energy = part->Energy();
1381 if(energy>900.) continue;
1382 Double_t pz = part->Pz();
1383 Double_t y = 0.5*TMath::Log((energy+pz+1.e-13)/(energy-pz+1.e-13));
1384 if(TMath::Abs(y)<1.0) dNchdy += 0.5; // count 1/2 of particles in |y|<1
1386 //printf("# primary particles = %7.1f\n",dNchdy);
1388 // *********** MC info ***************
1389 Double_t mcVtxPos[3]={mcVertex[0],mcVertex[1],mcVertex[2]},mcVtxSigma[3]={0,0,0};
1390 vertexMC = new AliESDVertex(mcVtxPos,mcVtxSigma);
1394 //------- event selection --------
1395 Int_t mincontrSPDvtx=1;
1396 Double_t maxzSPDvtx=20.;
1397 Double_t maxrSPDvtx=1.;
1398 Bool_t useTRKvtx=kTRUE;
1399 Bool_t useSPDvtxifNotTRK=kTRUE;
1400 Int_t mincontrTRKvtx=1;
1401 //Double_t maxzTRKvtx=20.;
1402 //Double_t maxrTRKvtx=1.;
1403 //------- TPC track selection --------
1405 Double_t maxchi2perTPCcl=4.;
1406 Double_t minEtaInAcc=-0.8; // -0.8
1407 Double_t maxEtaInAcc=0.8; // 0.8
1408 Double_t maxdcaxy=2.4;//2.4;
1409 Double_t maxdcaz=3.2;//3.2;
1410 AliESDtrackCuts* esdtrackCutsTPC = new AliESDtrackCuts("esdtrackCutsTPC");
1411 esdtrackCutsTPC->SetMaxDCAToVertexXY(maxdcaxy);
1412 esdtrackCutsTPC->SetMaxDCAToVertexZ(maxdcaz);
1413 esdtrackCutsTPC->SetDCAToVertex2D(kTRUE);
1414 esdtrackCutsTPC->SetRequireSigmaToVertex(kFALSE);
1415 esdtrackCutsTPC->SetRequireTPCRefit(kFALSE);// cannot do it because status not copied in AliESDtrack::FillTPCOnlyTrack
1416 esdtrackCutsTPC->SetAcceptKinkDaughters(kFALSE);
1417 esdtrackCutsTPC->SetMinNClustersTPC(minclsTPC);
1418 esdtrackCutsTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1419 esdtrackCutsTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1420 SetESDtrackCutsTPC(esdtrackCutsTPC);
1421 //------- ITS+TPC track selection --------
1422 Double_t maxdcaxyITSTPC=0.2;
1423 Double_t maxdcazITSTPC=1.e6;
1424 AliESDtrackCuts* esdtrackCutsITSTPC = new AliESDtrackCuts("esdtrackCutsITSTPC");
1425 esdtrackCutsITSTPC->SetMaxDCAToVertexXY(maxdcaxyITSTPC);
1426 esdtrackCutsITSTPC->SetMaxDCAToVertexZ(maxdcazITSTPC);
1427 esdtrackCutsITSTPC->SetDCAToVertex2D(kFALSE);
1428 esdtrackCutsITSTPC->SetRequireSigmaToVertex(kFALSE);
1429 esdtrackCutsITSTPC->SetRequireITSRefit(kTRUE);
1430 esdtrackCutsITSTPC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1431 AliESDtrackCuts::kAny);
1432 esdtrackCutsITSTPC->SetAcceptKinkDaughters(kFALSE);
1433 esdtrackCutsITSTPC->SetMinNClustersTPC(minclsTPC);
1434 esdtrackCutsITSTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1435 esdtrackCutsITSTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1436 SetESDtrackCutsITSTPC(esdtrackCutsITSTPC);
1437 //---------------------------------------
1443 // ********** Trigger *****************
1444 ULong64_t triggerMask;
1445 ULong64_t spdFO = (1 << 14);
1446 ULong64_t v0left = (1 << 11);
1447 ULong64_t v0right = (1 << 12);
1449 triggerMask=fESD->GetTriggerMask();
1450 // MB1: SPDFO || V0L || V0R
1451 Bool_t eventTriggered = (triggerMask & spdFO || ((triggerMask & v0left) || (triggerMask & v0right)));
1453 //triggerMask & spdFO && ((triggerMask&v0left) || (triggerMask&v0right))
1454 // ************ Trigger ******************
1455 if(!eventTriggered) return;
1459 fHistNEvents->Fill(0);
1462 const AliESDVertex *spdv=fESD->GetPrimaryVertexSPD();
1463 // Select good SPD vertices
1464 TString spdvtitle=spdv->GetTitle();
1465 //if(!spdvtitle.Contains("3D")) return;
1466 if(spdv->GetNContributors()<mincontrSPDvtx ||
1467 TMath::Abs(spdv->GetZv())>maxzSPDvtx ||
1468 spdv->GetXv()*spdv->GetXv()+spdv->GetYv()*spdv->GetYv()>maxrSPDvtx) {
1469 delete esdtrackCutsTPC; esdtrackCutsTPC=0;
1470 delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
1477 const AliESDVertex *vertexESD = fESD->GetPrimaryVertexTracks();
1480 if(spdvtitle.Contains("3D")) {
1481 fHistNEvents->Fill(1);
1482 fHistNEvents->Fill(3);
1484 fHistNEvents->Fill(2);
1485 fHistNEvents->Fill(3);
1488 if(vertexESD->GetStatus()) fHistNEvents->Fill(4);
1491 Int_t ntracks = fESD->GetNumberOfTracks();
1492 //printf("Tracks # = %d\n",fESD->GetNumberOfTracks());
1494 fHistNtracks->Fill(ntracks);
1495 // Post the data already here
1496 PostData(1, fOutput);
1498 Int_t idet,status; Float_t xloc,zloc;
1499 Double_t rSPDouter=7.6,rSDDouter=23.9,rSSDouter=43.1;
1500 Double_t zSPDouter=14.1,zSDDouter=29.7,zSSDouter=48.9;
1503 for(Int_t itr=0; itr<ntracks; itr++) {
1504 AliESDtrack *track = fESD->GetTrack(itr);
1505 // remove kink daughters
1506 if(track->GetKinkIndex(0)>0) continue;
1508 // remove tracks not reco in ITS or TPC
1509 if (!(track->GetStatus() & AliESDtrack::kITSin) &&
1510 !(track->GetStatus() & AliESDtrack::kTPCin)) continue;
1512 Bool_t isPrimary=kTRUE,isFromMat=kFALSE,isFromStrange=kFALSE;
1513 Double_t rProdVtx=0,zProdVtx=0;
1514 Int_t pdgTrk=0,pdgMoth=0;
1517 Int_t trkLabel = TMath::Abs(track->GetLabel());
1518 Bool_t isFake=(track->GetLabel()>=0 ? kFALSE : kTRUE);
1519 // check if it is primary
1520 if(fReadMC && stack) {
1521 isPrimary = stack->IsPhysicalPrimary(trkLabel);
1522 part = (TParticle*)stack->Particle(trkLabel);
1523 rProdVtx = TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]));
1524 zProdVtx = TMath::Abs(part->Vz()-mcVertex[2]);
1525 //if(rProdVtx<2.8) isPrimary=kTRUE; // this could be tried
1526 pdgTrk = TMath::Abs(part->GetPdgCode());
1527 if(part->GetFirstMother()>=0) {
1528 TParticle* mm=stack->Particle(part->GetFirstMother());
1529 if(mm) pdgMoth = TMath::Abs(mm->GetPdgCode());
1531 if(pdgMoth==310 || pdgMoth==321 || pdgMoth==3122 || pdgMoth==3312) isFromStrange=kTRUE;
1532 if(pdgMoth==211 || pdgMoth==22 || pdgMoth==2112 || pdgMoth==2212) isFromMat=kTRUE;
1533 nClsMCSPD = NumberOfITSClustersMC(trkLabel,240);
1536 Bool_t itsrefit=kFALSE,tpcrefit=kFALSE,itsfindable=kFALSE,itsfindableAcc=kFALSE;
1537 if ((track->GetStatus() & AliESDtrack::kITSrefit)) itsrefit=kTRUE;
1538 if ((track->GetStatus() & AliESDtrack::kTPCrefit)) tpcrefit=kTRUE;
1539 //if ((track->GetStatus() & AliESDtrack::kTPCin)) tpcrefit=kTRUE;
1541 // remove tracks with kTPCin and not kTPCrefit
1542 if ((track->GetStatus() & AliESDtrack::kTPCin) && !tpcrefit) continue;
1544 AliESDtrack *trackTPC = 0;
1545 if(tpcrefit) trackTPC = AliESDtrackCuts::GetTPCOnlyTrack(fESD,itr);
1546 if(trackTPC) trackTPC->RelateToVertex(spdv,fESD->GetMagneticField(),100.); // relate it to the SPD vertex
1549 Int_t nclsITS = track->GetNcls(0);
1550 Int_t nclsSDDSSD = 0;
1551 Int_t nclsokbadoutinzITS = 0;
1552 Bool_t outInZ=kFALSE;
1553 Bool_t skipTrack=kFALSE;
1555 for(Int_t layer=0; layer<6; layer++) {
1556 if(layer>=2 && track->HasPointOnITSLayer(layer)) nclsSDDSSD++;
1557 if(layer==0 && !track->HasPointOnITSLayer(1)) continue;
1558 if(layer==1 && !track->HasPointOnITSLayer(0)) continue;
1559 track->GetITSModuleIndexInfo(layer,idet,status,xloc,zloc);
1560 if(status<0) continue;
1561 if(layer>=2) idet+=240; // add n SPD modules
1562 if(layer>=4) idet+=260; // add n SDD modules
1563 if(status==4) outInZ=kTRUE;
1565 if(layer==1 && tpcrefit && itsrefit) {
1567 track->GetXYZAt(rSPDouter,fESD->GetMagneticField(),xyz);
1569 if(idet%4==0) fHistZatSPDouter0ok->Fill(xyz[2]);
1570 if(idet%4==1) fHistZatSPDouter1ok->Fill(xyz[2]);
1571 if(idet%4==2) fHistZatSPDouter2ok->Fill(xyz[2]);
1572 if(idet%4==3) fHistZatSPDouter3ok->Fill(xyz[2]);
1574 if(status==2 || status==5) {
1575 if(idet%4==0) fHistZatSPDouter0notok->Fill(xyz[2]);
1576 if(idet%4==1) fHistZatSPDouter1notok->Fill(xyz[2]);
1577 if(idet%4==2) fHistZatSPDouter2notok->Fill(xyz[2]);
1578 if(idet%4==3) fHistZatSPDouter3notok->Fill(xyz[2]);
1581 // kill SDD clusters in MC
1582 if(fReadMC && (layer==2 || layer==3)) {
1583 Double_t qITS[4]; track->GetITSdEdxSamples(qITS);
1584 Double_t conv=3.34/5.43;
1585 if(layer==2 && status==1 && qITS[0]*conv < 30.) status=5;
1586 if(layer==3 && status==1 && qITS[1]*conv < 30.) status=5;
1589 if(trackTPC) if(!fESDtrackCutsTPC->AcceptTrack(trackTPC)) continue;
1590 if(status==1) fHistClusterMapITSMIok->Fill(layer);
1591 if(status==2) fHistClusterMapITSMIbad->Fill(layer);
1592 if(status==3) fHistClusterMapITSMIskipped->Fill(layer);
1593 if(status==4) fHistClusterMapITSMIoutinz->Fill(layer);
1594 if(status==5) fHistClusterMapITSMInocls->Fill(layer);
1595 if(status==6) fHistClusterMapITSMInorefit->Fill(layer);
1596 if(status==1 && !outInZ) fHistClusterMapModuleITSMIokInAcc->Fill(idet);
1597 if((status==2 || status==7) && !outInZ) fHistClusterMapModuleITSMIbadInAcc->Fill(idet);
1598 if(status==5 && !outInZ) fHistClusterMapModuleITSMInoclsInAcc->Fill(idet);
1599 if(status==1 || status==2 || status==4) {
1600 fHistClusterMapITSMIokoutinzbad->Fill(layer);
1601 nclsokbadoutinzITS++;
1603 /*if(idet>=80 && idet<120) {
1605 track->GetXYZAt(6.8,fESD->GetMagneticField(),xyz);
1606 printf("det %d status %d phi %f z %f zloc %f xloc %f\n",idet,status,TMath::ATan2(xyz[1],xyz[0]),xyz[2],zloc,xloc);
1608 if((layer==2 || layer==3) && status!=2 && status!=4) {
1610 //Int_t nClsInMod = NumberOfITSClusters(idet,xlocCls);
1611 fHistxlocSDDall->Fill(xloc);
1612 fHistzlocSDDall->Fill(zloc);
1613 if(status==1 /*nClsInMod>0*/) {
1614 fHistxlocSDDok->Fill(xloc);
1615 fHistxlocVSmodSDDok->Fill(idet,xloc);
1616 fHistzlocSDDok->Fill(zloc);
1620 if(status==1) fHistClusterMapITSSAok->Fill(layer);
1621 if(status==2) fHistClusterMapITSSAbad->Fill(layer);
1622 if(status==3) fHistClusterMapITSSAskipped->Fill(layer);
1623 if(status==4) fHistClusterMapITSSAoutinz->Fill(layer);
1624 if(status==5) fHistClusterMapITSSAnocls->Fill(layer);
1625 if(status==6) fHistClusterMapITSSAnorefit->Fill(layer);
1626 if(status==1 || status==2 || status==4) fHistClusterMapITSSAokoutinzbad->Fill(layer);
1627 if(status==1 && !outInZ) {fHistClusterMapITSSAokInAcc->Fill(layer);fHistClusterMapModuleITSSAokInAcc->Fill(idet);}
1628 if((status==2 || status==7) && !outInZ) {fHistClusterMapITSSAbadInAcc->Fill(layer);fHistClusterMapModuleITSSAbadInAcc->Fill(idet);}
1629 if(status==3 && !outInZ) fHistClusterMapITSSAskippedInAcc->Fill(layer);
1630 if(status==4 && !outInZ) fHistClusterMapITSSAoutinzInAcc->Fill(layer);
1631 if(status==5 && !outInZ) {fHistClusterMapITSSAnoclsInAcc->Fill(layer);fHistClusterMapModuleITSSAnoclsInAcc->Fill(idet);}
1632 if(status==6 && !outInZ) fHistClusterMapITSSAnorefitInAcc->Fill(layer);
1633 if((status==1 || status==2 || status==4) && !outInZ) fHistClusterMapITSSAokoutinzbadInAcc->Fill(layer);
1635 if(TESTBIT(track->GetITSClusterMap(),layer)) {
1637 fHistClusterMapITSMI->Fill(layer);
1639 fHistClusterMapITSSA->Fill(layer);
1640 if(!outInZ) fHistClusterMapITSSAInAcc->Fill(layer);
1644 // SKIP SDD MODULES LOW EFF
1715 // SKIP SDD MODULES LOW EFF
1718 if(skipTrack) {delete trackTPC; trackTPC=0; continue;}
1720 // TPC track findable in ITS
1721 if(tpcrefit && trackTPC) {
1722 if(fESDtrackCutsTPC->AcceptTrack(trackTPC)) {
1724 Double_t zAtSSDouter=100,zAtSDDouter=100,zAtSPDouter=100;
1725 track->GetZAt(rSSDouter,fESD->GetMagneticField(),zAtSSDouter);
1726 track->GetZAt(rSDDouter,fESD->GetMagneticField(),zAtSDDouter);
1727 track->GetZAt(rSPDouter,fESD->GetMagneticField(),zAtSPDouter);
1728 fHistPtTPC->Fill(track->Pt());
1729 if(TMath::Abs(zAtSSDouter)<1.*zSSDouter &&
1730 TMath::Abs(zAtSDDouter)<1.*zSDDouter &&
1731 TMath::Abs(zAtSPDouter)<1.*zSPDouter) {
1732 itsfindableAcc=kTRUE;
1733 fHistdEdxVSPtTPCInAcc->Fill(track->Pt(),track->GetTPCsignal());
1734 fHistPtTPCInAcc->Fill(track->Pt());
1735 fHistPtVSphiTPCInAcc->Fill(track->Phi(),track->Pt());
1736 if(!(track->GetStatus()&AliESDtrack::kTRDout)) fHistPtTPCInAccNoTRDout->Fill(track->Pt());
1737 if(!(track->GetStatus()&AliESDtrack::kTOFout)) fHistPtTPCInAccNoTOFout->Fill(track->Pt());
1738 fHistPtTPCInAccWithPtTPCAtVtx->Fill(trackTPC->Pt());
1739 Double_t pTPCinnerwall[3];
1740 track->GetInnerPxPyPz(pTPCinnerwall);
1741 Double_t ptTPCinnerwall=TMath::Sqrt(pTPCinnerwall[0]*pTPCinnerwall[0]+pTPCinnerwall[1]*pTPCinnerwall[1]);
1742 fHistPtTPCInAccWithPtTPCAtInnerWall->Fill(ptTPCinnerwall);
1743 if(track->GetStatus()&AliESDtrack::kITSrefit && !(track->GetStatus()&AliESDtrack::kTOFout)) fHistDeltaPtTPC->Fill(trackTPC->P(),track->P()-trackTPC->P());
1744 fHistPhiTPCInAcc->Fill(track->Phi());
1746 fHistPtTPCInAccP->Fill(track->Pt());
1747 if(pdgTrk==321) fHistPtTPCInAccPfromStrange->Fill(track->Pt());
1749 fHistPtTPCInAccS->Fill(track->Pt());
1750 if(isFromMat) fHistPtTPCInAccSfromMat->Fill(track->Pt());
1751 if(isFromStrange) fHistPtTPCInAccSfromStrange->Fill(track->Pt());
1753 if(nClsMCSPD==2) fHistPtTPCInAccMCtwoSPD->Fill(track->Pt());
1754 if(nClsMCSPD>=1) fHistPtTPCInAccMConeSPD->Fill(track->Pt());
1755 //if(isPrimary) {fHistRProdVtxInAccP->Fill(rProdVtx);} else {fHistRProdVtxInAccS->Fill(rProdVtx);}
1762 // we need the vertex to compute the impact parameters
1763 if(!vertexESD) {delete trackTPC; trackTPC=0; continue;}
1764 if(!(vertexESD->GetStatus()) || vertexESD->GetNContributors()<mincontrTRKvtx) {
1765 if(useSPDvtxifNotTRK) {
1766 vertexESD = fESD->GetPrimaryVertexSPD();
1768 delete trackTPC; trackTPC=0; continue;
1773 // track prolonged in ITS with different conditions
1776 if(nclsITS==6) fHistPtITSMI6->Fill(track->Pt());
1777 if(nclsITS==5) fHistPtITSMI5->Fill(track->Pt());
1778 if(nclsITS==4) fHistPtITSMI4->Fill(track->Pt());
1779 if(nclsITS==3) fHistPtITSMI3->Fill(track->Pt());
1780 if(nclsITS==2) fHistPtITSMI2->Fill(track->Pt());
1781 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))
1782 fHistPtITSMISPD->Fill(track->Pt());
1783 if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1))
1784 fHistPtITSMIoneSPD->Fill(track->Pt());
1785 if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6->Fill(track->Pt());
1787 if(itsfindableAcc) {
1789 fHistPtITSMI6InAcc->Fill(track->Pt());
1790 if(isFake) fHistPtITSMI6InAccFake->Fill(track->Pt());
1791 if(isPrimary) {fHistPtITSMI6InAccP->Fill(track->Pt());} else {fHistPtITSMI6InAccS->Fill(track->Pt());}
1794 fHistPtITSMI5InAcc->Fill(track->Pt());
1795 if(isFake) fHistPtITSMI5InAccFake->Fill(track->Pt());
1796 if(isPrimary) {fHistPtITSMI5InAccP->Fill(track->Pt());} else {fHistPtITSMI5InAccS->Fill(track->Pt());}
1799 fHistPtITSMI4InAcc->Fill(track->Pt());
1800 if(isFake) fHistPtITSMI4InAccFake->Fill(track->Pt());
1801 if(isPrimary) {fHistPtITSMI4InAccP->Fill(track->Pt());} else {fHistPtITSMI4InAccS->Fill(track->Pt());}
1804 fHistPtITSMI3InAcc->Fill(track->Pt());
1805 if(isFake) fHistPtITSMI3InAccFake->Fill(track->Pt());
1806 if(isPrimary) {fHistPtITSMI3InAccP->Fill(track->Pt());} else {fHistPtITSMI3InAccS->Fill(track->Pt());}
1809 fHistPtITSMI2InAcc->Fill(track->Pt());
1810 if(isFake) fHistPtITSMI2InAccFake->Fill(track->Pt());
1811 if(isPrimary) {fHistPtITSMI2InAccP->Fill(track->Pt());} else {fHistPtITSMI2InAccS->Fill(track->Pt());}
1813 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
1814 fHistPtITSMISPDInAcc->Fill(track->Pt());
1815 if(isFake) fHistPtITSMISPDInAccFake->Fill(track->Pt());
1816 if(isPrimary) {fHistPtITSMISPDInAccP->Fill(track->Pt());} else {fHistPtITSMISPDInAccS->Fill(track->Pt());}
1818 if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) {
1819 fHistPtITSMIoneSPDInAcc->Fill(track->Pt());
1820 if(isFake) fHistPtITSMIoneSPDInAccFake->Fill(track->Pt());
1821 if(nclsSDDSSD>=3) fHistPtITSMIoneSPDthreeSDDSSDInAcc->Fill(track->Pt());
1823 if(isPrimary) {fHistPtITSMIoneSPDInAccP->Fill(track->Pt());} else {fHistPtITSMIoneSPDInAccS->Fill(track->Pt());}
1825 if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6InAcc->Fill(track->Pt());
1826 if(nclsokbadoutinzITS==5) fHistPtITSMIokbadoutinz5InAcc->Fill(track->Pt());
1827 if(nclsokbadoutinzITS==4) fHistPtITSMIokbadoutinz4InAcc->Fill(track->Pt());
1828 if(nclsokbadoutinzITS==6) fHistPhiITSMIokbadoutinz6InAcc->Fill(track->Phi());
1833 fHistNclsITSMI->Fill(nclsITS);
1835 fHistNclsITSSA->Fill(nclsITS);
1836 if(!outInZ) fHistNclsITSSAInAcc->Fill(nclsITS);
1840 if((tpcrefit && fUseITSSAforNtuples) || // only ITS-SA for ntuples
1841 (!tpcrefit && !fUseITSSAforNtuples)) // only ITS-TPC for ntuples
1842 { delete trackTPC; trackTPC=0; continue; }
1844 // impact parameter to VertexTracks
1845 Float_t d0z0[2],covd0z0[3];
1846 Double_t d0z0TPC[2],covd0z0TPC[3];
1848 if(!track->RelateToVertex(vertexESD,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
1850 //if(!track->RelateToVertex(vertexMC,fESD->GetMagneticField(),kVeryBig)) continue;
1851 if(!track->RelateToVertex(spdv,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
1853 track->GetImpactParameters(d0z0,covd0z0);
1854 if(trackTPC) trackTPC->PropagateToDCA(spdv,fESD->GetMagneticField(),kVeryBig,d0z0TPC,covd0z0TPC);
1855 if(covd0z0[0]<0. || covd0z0[2]<0. || covd0z0TPC[0]<0. || covd0z0TPC[2]<0.) { delete trackTPC; trackTPC=0; continue; }
1858 // track that passes final ITS+TPC cuts
1859 if(itsfindableAcc && fESDtrackCutsITSTPC->AcceptTrack(track)) {
1860 fHistPtITSTPCsel->Fill(track->Pt());
1861 fHistdEdxVSPtITSTPCsel->Fill(track->Pt(),track->GetITSsignal());
1863 fHistPtITSTPCselP->Fill(track->Pt());
1864 if(pdgTrk==321) fHistPtITSTPCselPfromStrange->Fill(track->Pt());
1866 fHistPtITSTPCselS->Fill(track->Pt());
1867 if(isFromMat) fHistPtITSTPCselSfromMat->Fill(track->Pt());
1868 if(isFromStrange) fHistPtITSTPCselSfromStrange->Fill(track->Pt());
1874 if(((!fUseITSSAforNtuples&&itsfindableAcc) || fUseITSSAforNtuples) /*&& track->Charge()>0*/) {
1875 if(track->Pt()>0.150 && track->Pt()<0.200) {
1877 fHistd0rphiTPCInAccP150200->Fill(d0z0TPC[0]);
1878 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1879 fHistd0rphiITSMISPDInAccP150200->Fill(d0z0[0]);
1880 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1881 //if(((track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) || (!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))) && itsrefit) {
1882 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP150200->Fill(d0z0[0]);
1883 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP150200->Fill(d0z0[1]);
1886 fHistd0rphiTPCInAccS150200->Fill(d0z0TPC[0]);
1887 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1888 fHistd0rphiITSMISPDInAccS150200->Fill(d0z0[0]);
1889 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1890 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1891 fHistd0rphiITSMIoneSPDInAccS150200->Fill(d0z0[0]);
1892 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Fill(d0z0[0]);
1893 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS150200fromMat->Fill(d0z0[0]);
1895 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS150200->Fill(d0z0[1]);
1896 if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth150200->Fill(pdgMoth);
1900 if(track->Pt()>0.350 && track->Pt()<0.450) {
1902 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1903 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP350450->Fill(d0z0[0]);
1906 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1907 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1908 fHistd0rphiITSMIoneSPDInAccS350450->Fill(d0z0[0]);
1909 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Fill(d0z0[0]);
1910 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS350450fromMat->Fill(d0z0[0]);
1915 if(track->Pt()>0.500 && track->Pt()<0.700) {
1917 fHistd0rphiTPCInAccP500700->Fill(d0z0TPC[0]);
1918 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1919 fHistd0rphiITSMISPDInAccP500700->Fill(d0z0[0]);
1920 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1921 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP500700->Fill(d0z0[0]);
1922 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP500700->Fill(d0z0[1]);
1925 fHistd0rphiTPCInAccS500700->Fill(d0z0TPC[0]);
1926 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1927 fHistd0rphiITSMISPDInAccS500700->Fill(d0z0[0]);
1928 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1929 fHistPDGTrk->Fill(pdgTrk);
1930 fHistPDGMoth->Fill(pdgMoth);
1931 if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth500700->Fill(pdgMoth);
1932 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1933 fHistd0rphiITSMIoneSPDInAccS500700->Fill(d0z0[0]);
1934 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Fill(d0z0[0]);
1935 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS500700fromMat->Fill(d0z0[0]);
1937 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS500700->Fill(d0z0[1]);
1938 if(pdgMoth==310) fHistd0rphiITSMIoneSPDInAccS500700from310->Fill(d0z0[0]);
1939 if(pdgMoth==321) fHistd0rphiITSMIoneSPDInAccS500700from321->Fill(d0z0[0]);
1940 if(pdgMoth==3122) fHistd0rphiITSMIoneSPDInAccS500700from3122->Fill(d0z0[0]);
1941 if(pdgMoth==211) fHistd0rphiITSMIoneSPDInAccS500700from211->Fill(d0z0[0]);
1942 if(pdgMoth==22) fHistd0rphiITSMIoneSPDInAccS500700from22->Fill(d0z0[0]);
1943 if(pdgMoth==211 && TMath::Abs(d0z0[0])>0.5) fHistRProdVtxInAccS->Fill(rProdVtx);
1947 if(track->Pt()>1.000 && track->Pt()<1.500) {
1949 fHistd0rphiTPCInAccP10001500->Fill(d0z0TPC[0]);
1950 fHistd0zVSetaTPCInAccP10001500->Fill(d0z0TPC[1],trackTPC->Eta());
1952 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1953 fHistd0rphiITSMISPDInAccP10001500->Fill(d0z0[0]);
1954 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1955 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP10001500->Fill(d0z0[0]);
1956 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP10001500->Fill(d0z0[1]);
1957 fHistd0rphiVSphiITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Phi());
1958 fHistd0rphiVSetaITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Eta());
1961 fHistd0rphiTPCInAccS10001500->Fill(d0z0TPC[0]);
1962 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
1963 fHistd0rphiITSMISPDInAccS10001500->Fill(d0z0[0]);
1964 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1965 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1966 fHistd0rphiITSMIoneSPDInAccS10001500->Fill(d0z0[0]);
1967 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Fill(d0z0[0]);
1968 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Fill(d0z0[0]);
1970 if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS10001500->Fill(d0z0[1]);
1971 if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth10001500->Fill(pdgMoth);
1975 if(track->Pt()>2.500 && track->Pt()<4.000) {
1977 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1978 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP25004000->Fill(d0z0[0]);
1981 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1982 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1983 fHistd0rphiITSMIoneSPDInAccS25004000->Fill(d0z0[0]);
1984 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Fill(d0z0[0]);
1985 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Fill(d0z0[0]);
1990 if(track->Pt()>4.000 && track->Pt()<8.000) {
1992 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1993 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP40008000->Fill(d0z0[0]);
1996 if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
1997 if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
1998 fHistd0rphiITSMIoneSPDInAccS40008000->Fill(d0z0[0]);
1999 if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Fill(d0z0[0]);
2000 if(isFromMat) fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Fill(d0z0[0]);
2008 if(trackTPC) { delete trackTPC; trackTPC=0; }
2010 // encode ITS cluster map, including MC info
2011 Int_t iITSflag=MakeITSflag(track);
2013 // if MC info is available: get particle properties
2014 Float_t ptMC=-999.,pdgMC=-999.,d0MC=-999.;
2015 Double_t d0z0MCv[2]={-999.,-999.},covd0z0MCv[3]={1.,1.,1.};
2017 part = (TParticle*)stack->Particle(trkLabel);
2019 pdgMC=part->GetPdgCode();
2020 d0MC=ParticleImpParMC(part,vertexMC,0.1*fESD->GetMagneticField());
2021 track->PropagateToDCA(vertexMC,fESD->GetMagneticField(),100.,d0z0MCv,covd0z0MCv);
2022 if(covd0z0MCv[0]<0. || covd0z0MCv[2]<0.) continue;
2025 Double_t sigmad0MCv=TMath::Sqrt(covd0z0MCv[0]);
2026 if(!itsrefit) sigmad0MCv *= -1.;
2027 Float_t isPrimaryFl = (isPrimary ? 1. : 0.);
2028 Float_t isTPCSelFl = (itsfindableAcc ? 1. : 0.);
2030 // fill ntuple with track properties
2031 if(fFillNtuples && SelectPt(track->Pt())) {
2032 Float_t fillArray[22]={track->Pt(),track->Eta(),track->Phi(),d0z0[0],d0z0[1],TMath::Sqrt(covd0z0[0]),TMath::Sqrt(covd0z0[2]),ptMC,pdgMC,pdgMoth,d0MC,d0z0MCv[0],d0z0MCv[1],sigmad0MCv,TMath::Sqrt(covd0z0MCv[2]),(Float_t)iITSflag,isPrimaryFl,isTPCSelFl};
2033 fNtupleESDTracks->Fill(fillArray);
2036 //---------------------------------------------
2037 // AliTrackPoints: alignment checks
2039 if(!fFillNtuples) continue;
2041 const AliTrackPointArray *array = track->GetTrackPointArray();
2042 if(!array) continue;
2043 AliTrackPoint point;
2044 Int_t pointOnLayer[6]={0,0,0,0,0,0};
2045 Int_t indexAssociated[6]={-1,-1,-1,-1,-1,-1},indexExtra=-1;
2046 Bool_t extra=kFALSE;
2047 Int_t layerId,layerExtra=-1;
2048 for(Int_t ipt=0; ipt<array->GetNPoints(); ipt++) {
2049 array->GetPoint(point,ipt);
2050 Float_t r = TMath::Sqrt(point.GetX()*point.GetX()+point.GetY()*point.GetY());
2054 } else if(r>6 && r<8) {
2056 } else if(r>8 && r<18) {
2058 } else if(r>18 && r<30) {
2060 } else if(r>30 && r<40) {
2062 } else if(r>40 && r<50) {
2069 if(layerId>5) continue;
2071 if(!point.IsExtra()) {
2072 pointOnLayer[layerId]++;
2073 indexAssociated[layerId]=ipt;
2075 // this is an extra cluster
2080 } // end loop on AliTrackPoints
2082 TString vtitle = spdv->GetTitle();
2083 if(!vtitle.Contains("3D")) continue;
2086 if(indexAssociated[0]>=0 && indexAssociated[1]>=0) {
2087 AliTrackPoint pointSPD1,pointSPD2;
2088 array->GetPoint(pointSPD1,indexAssociated[0]);
2089 array->GetPoint(pointSPD2,indexAssociated[1]);
2090 Float_t phi=TMath::ATan2(pointSPD2.GetY()-pointSPD1.GetY(),pointSPD2.GetX()-pointSPD1.GetX());
2091 Float_t lambda=TMath::ATan((pointSPD2.GetZ()-pointSPD1.GetZ())/TMath::Sqrt((pointSPD2.GetX()-pointSPD1.GetX())*(pointSPD2.GetX()-pointSPD1.GetX())+(pointSPD2.GetY()-pointSPD1.GetY())*(pointSPD2.GetY()-pointSPD1.GetY())));
2092 Float_t theta=0.5*TMath::Pi()-lambda;
2093 TParticle particle(211,0,0,0,0,0,TMath::Cos(phi),TMath::Sin(phi),TMath::Tan(lambda),10.,pointSPD1.GetX(),pointSPD1.GetY(),pointSPD1.GetZ(),0);
2094 AliESDtrack tracklet(&particle);
2096 // distance to primary SPD (only if 3D and high multiplicity)
2097 if(spdv->GetNContributors()>10) {
2098 tracklet.GetDZ(spdv->GetXv(),spdv->GetYv(),spdv->GetZv(),0,dz);
2099 //tracklet.GetDZ(-0.07,0.25,spdv->GetZv(),0,dz);
2100 fNtupleITSAlignSPDTracklets->Fill(phi,theta,0.5*(pointSPD1.GetZ()+pointSPD2.GetZ()),dz[0],dz[1],track->Pt());
2104 // distance to extra
2105 if(extra && spdv->GetNContributors()>4 && indexAssociated[layerExtra]>-1) {
2106 AliTrackPoint pointExtra,pointAssociated;
2107 array->GetPoint(pointAssociated,indexAssociated[layerExtra]);
2108 array->GetPoint(pointExtra,indexExtra);
2109 Float_t phiExtra = TMath::ATan2(pointExtra.GetY()-spdv->GetYv(),pointExtra.GetX()-spdv->GetXv());
2110 Float_t phiAssociated = TMath::ATan2(pointAssociated.GetY()-spdv->GetYv(),pointAssociated.GetX()-spdv->GetXv());
2111 Float_t rExtra = TMath::Sqrt((pointExtra.GetX()-spdv->GetXv())*(pointExtra.GetX()-spdv->GetXv())+(pointExtra.GetY()-spdv->GetYv())*(pointExtra.GetY()-spdv->GetYv()));
2112 Float_t rAssociated = TMath::Sqrt((pointAssociated.GetX()-spdv->GetXv())*(pointAssociated.GetX()-spdv->GetXv())+(pointAssociated.GetY()-spdv->GetYv())*(pointAssociated.GetY()-spdv->GetYv()));
2114 dzExtra[0] = (phiExtra-phiAssociated)*0.5*(rExtra+rAssociated);
2115 dzExtra[1] = pointExtra.GetZ()-pointAssociated.GetZ()-(rExtra-rAssociated)*(pointAssociated.GetZ()-spdv->GetZv())/rAssociated;
2116 Float_t xlocExtra=-100.,zlocExtra=-100.;
2117 fNtupleITSAlignExtra->Fill(layerExtra,pointExtra.GetX(),pointExtra.GetY(),pointExtra.GetZ(),dzExtra[0],dzExtra[1],xlocExtra,zlocExtra,nclsITS,track->Pt());
2120 if(trackTPC) { delete trackTPC; trackTPC=0; }
2121 } // end loop on tracks
2123 if(vertexMC) { delete vertexMC; vertexMC=0; }
2125 delete esdtrackCutsTPC; esdtrackCutsTPC=0;
2126 delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
2131 //________________________________________________________________________
2132 void AliAnalysisTaskITSTrackingCheck::Terminate(Option_t *)
2134 // Draw result to the screen
2135 // Called once at the end of the query
2136 fOutput = dynamic_cast<TList*> (GetOutputData(1));
2138 Printf("ERROR: fOutput not available");
2141 fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
2142 fHistNEventsFrac = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEventsFrac"));
2143 if(fHistNEvents && fHistNEventsFrac) {
2144 for(Int_t ibin=2; ibin<=fHistNEvents->GetNbinsX(); ibin++) {
2145 if(fHistNEvents->GetBinContent(2)) fHistNEventsFrac->SetBinContent(ibin,fHistNEvents->GetBinContent(ibin)/fHistNEvents->GetBinContent(2));
2151 //---------------------------------------------------------------------------
2152 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label,Int_t nModules) const
2155 // Return number of ITS clusters produced by MC particle with given label
2158 AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2159 if(!esdHRP) return -1;
2160 TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2161 if(!cTree) return -1;
2162 TClonesArray *clusters=0;
2163 cTree->SetBranchAddress("ITSRecPoints",&clusters);
2164 if(!clusters) return -1;
2166 AliITSRecPoint *c=0;
2167 Int_t i,n,icl,lay,ilab;
2168 Int_t ncls[6]={0,0,0,0,0,0};
2171 for(i=0; i<nModules; i++) {
2173 n=clusters->GetEntriesFast();
2174 for (icl=0; icl<n; icl++) {
2175 c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2177 //printf("mod %d lay %d xloc %f zloc %f\n",i,lay,c->GetDetLocalX(),c->GetDetLocalZ());
2178 for(ilab=0;ilab<3;ilab++) {
2179 if(c->GetLabel(ilab)==label) ncls[lay]++;
2184 //printf("%d\n",ncls[i]);
2185 if(ncls[i]) nclstot++;
2190 //---------------------------------------------------------------------------
2191 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClusters(Int_t idet,Float_t &xloc) const
2194 // Return number of ITS clusters produced by MC particle with given label
2197 AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2198 if(!esdHRP) return -1;
2199 TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2200 if(!cTree) return -1;
2201 TClonesArray *clusters=0; // new TClonesArray("AliITSRecPoint",10000);
2202 cTree->SetBranchAddress("ITSRecPoints",&clusters);
2203 if(!clusters) return -1;
2205 AliITSRecPoint *c=0;
2208 cTree->GetEvent(idet);
2209 n=clusters->GetEntriesFast();
2212 for (icl=0; icl<n; icl++) {
2213 c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2214 xloc = c->GetDetLocalX();
2219 //---------------------------------------------------------------------------
2220 Double_t AliAnalysisTaskITSTrackingCheck::ParticleImpParMC(TParticle *part,
2225 // Return the MC value of the impact parameter
2228 Double_t vx=part->Vx()-vert->GetX();
2229 Double_t vy=part->Vy()-vert->GetY();
2231 Double_t pt=part->Pt();
2232 Double_t px=part->Px();
2233 Double_t py=part->Py();
2234 Double_t charge = (part->GetPdgCode()>0. ? 1. : -1.);
2235 if(TMath::Abs(part->GetPdgCode())<100) charge*=-1.;
2237 if(px<0.000001) px=0.000001;
2238 Double_t rAnd=((10./2.99792458)*pt/bzT)*100.;
2239 Double_t center[3],d0;
2240 center[0]=vx-(1./charge)*rAnd*(py/pt);
2241 center[1]=vy+(1./charge)*rAnd*(px/pt);
2242 center[2]=TMath::Sqrt(center[0]*center[0]+center[1]*center[1]);
2243 d0 = -center[2]+rAnd;
2247 //---------------------------------------------------------------------------
2248 Bool_t AliAnalysisTaskITSTrackingCheck::SelectPt(Double_t pt)
2251 // Keep only tracks in given pt bins
2253 Double_t ptlower[11]={0.15,0.29,0.49,0.75,0.9,1.9,3.5,6.5, 9.,19.,27.};
2254 Double_t ptupper[11]={0.16,0.31,0.51,0.85,1.1,2.1,4.5,7.5,11.,21.,33.};
2256 for(Int_t i=0; i<11; i++) {
2257 if(pt>ptlower[i] && pt<ptupper[i]) {
2258 fCountsPerPtBin[i]++;
2265 //---------------------------------------------------------------------------
2266 Int_t AliAnalysisTaskITSTrackingCheck::MakeITSflag(AliESDtrack *track) const {
2268 // ITSflag takes the value 0 if the track has no cluster assigned in the SPDs,
2269 // 1 (2) if one cluster is assigned in SPD1(2), 3 if two clusters are present.
2270 // Then the same adding 10,20 or 30 for SDD and 100,200 or 300 for SSD
2273 if(track->HasPointOnITSLayer(0)) iITSflag+=1;
2274 if(track->HasPointOnITSLayer(1)) iITSflag+=2;
2275 if(track->HasPointOnITSLayer(2)) iITSflag+=10;
2276 if(track->HasPointOnITSLayer(3)) iITSflag+=20;
2277 if(track->HasPointOnITSLayer(4)) iITSflag+=100;
2278 if(track->HasPointOnITSLayer(5)) iITSflag+=200;
2280 if(iITSflag==333 && track->GetNcls(0)<6)
2281 printf(" ERROR %d %d\n",track->GetNcls(0),track->GetLabel());
2283 // number of associated ITS clusters
2284 iITSflag += 1000*track->GetNcls(0);
2286 // number of associated TPC clusters
2287 iITSflag += 100000*track->GetNcls(1);
2289 // if MC info and is available
2290 // write the number of ITS clusters produced by this track
2292 if(fReadMC && fReadRPLabels) {
2293 nITSclsMC = NumberOfITSClustersMC(TMath::Abs(track->GetLabel()));
2294 if(nITSclsMC>=0) iITSflag += 10000*nITSclsMC;
2296 if(track->GetLabel()<0) iITSflag *= -1;