]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/ITS/AliAnalysisTaskITSTrackingCheck.cxx
Added histo to study matching eff vs eta and phi
[u/mrichter/AliRoot.git] / PWG1 / ITS / AliAnalysisTaskITSTrackingCheck.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
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  **************************************************************************/
15
16 /////////////////////////////////////////////////////////////
17 //
18 // AliAnalysisTask to extract from ESD tracks the information
19 // on ITS tracking efficiency and resolutions.
20 //
21 // Author: A.Dainese, andrea.dainese@pd.infn.it
22 /////////////////////////////////////////////////////////////
23
24 #include <TStyle.h>
25 #include <TChain.h>
26 #include <TTree.h>
27 #include <TNtuple.h>
28 #include <TBranch.h>
29 #include <TClonesArray.h>
30 #include <TObjArray.h>
31 #include <TH1F.h>
32 #include <TH2F.h>  
33 #include <TCanvas.h>
34 #include <TParticle.h>
35
36 #include "AliAnalysisTask.h"
37 #include "AliAnalysisManager.h"
38
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"
51
52 #include "AliInputEventHandler.h"
53 #include "AliMCEventHandler.h"
54 #include "AliMCEvent.h"
55 #include "AliStack.h"
56 #include "AliLog.h"
57
58 #include "AliGenEventHeader.h" 
59 #include "AliAnalysisTaskITSTrackingCheck.h"
60
61
62 ClassImp(AliAnalysisTaskITSTrackingCheck)
63 AliAnalysisTaskITSTrackingCheck::AliAnalysisTaskITSTrackingCheck() : 
64 AliAnalysisTaskSE(), 
65 fReadMC(kFALSE),
66 fReadRPLabels(kFALSE),
67 fFillNtuples(kFALSE),
68 fUseITSSAforNtuples(kFALSE),
69 fUsePhysSel(kFALSE),
70 fESD(0), 
71 fMinMult(0),
72 fMaxMult(1000000),
73 fOutput(0), 
74 fHistNEvents(0),
75 fHistNEventsFrac(0),
76 fHistNtracks(0),
77 fHistNclsITSMI(0),
78 fHistNclsITSSA(0),
79 fHistNclsITSSAInAcc(0),
80 fHistClusterMapITSMI(0),
81 fHistClusterMapITSMIok(0),
82 fHistClusterMapITSMIbad(0),
83 fHistClusterMapITSMIskipped(0),
84 fHistClusterMapITSMIoutinz(0),
85 fHistClusterMapITSMInorefit(0),
86 fHistClusterMapITSMInocls(0),
87 fHistClusterMapITSMIokoutinzbad(0),
88 fHistClusterMapITSSA(0),
89 fHistClusterMapITSSAok(0),
90 fHistClusterMapITSSAbad(0),
91 fHistClusterMapITSSAskipped(0),
92 fHistClusterMapITSSAoutinz(0),
93 fHistClusterMapITSSAnorefit(0),
94 fHistClusterMapITSSAnocls(0),
95 fHistClusterMapITSSAokoutinzbad(0),
96 fHistClusterMapITSSAInAcc(0),
97 fHistClusterMapITSSAokInAcc(0),
98 fHistClusterMapITSSAbadInAcc(0),
99 fHistClusterMapITSSAskippedInAcc(0),
100 fHistClusterMapITSSAoutinzInAcc(0),
101 fHistClusterMapITSSAnorefitInAcc(0),
102 fHistClusterMapITSSAnoclsInAcc(0),
103 fHistClusterMapITSSAokoutinzbadInAcc(0),
104 fHistClusterMapModuleITSSAokInAcc(0),
105 fHistClusterMapModuleITSSAbadInAcc(0),
106 fHistClusterMapModuleITSSAnoclsInAcc(0),
107 fHistClusterMapModuleITSMIokInAcc(0),
108 fHistClusterMapModuleITSMIbadInAcc(0),
109 fHistClusterMapModuleITSMInoclsInAcc(0),
110 fHistZatSPDouter0ok(0),
111 fHistZatSPDouter1ok(0),
112 fHistZatSPDouter2ok(0),
113 fHistZatSPDouter3ok(0),
114 fHistZatSPDouter0notok(0),
115 fHistZatSPDouter1notok(0),
116 fHistZatSPDouter2notok(0),
117 fHistZatSPDouter3notok(0),
118 fHistxlocSDDok(0),
119 fHistzlocSDDok(0),
120 fHistxlocVSmodSDDok(0),
121 fHistxlocSDDall(0),
122 fHistzlocSDDall(0),
123 fHistPhiTPCInAcc(0),
124 fHistEtaTPCInAcc(0),
125 fHistPtTPC(0),
126 fHistPtTPCInAcc(0),
127 fHistPtTPCInAccMCtwoSPD(0),
128 fHistPtTPCInAccMConeSPD(0),
129 fHistdEdxVSPtTPCInAcc(0),
130 fHistdEdxVSPtITSTPCsel(0),
131 fHistPtVSphiTPCInAcc(0),
132 fHistPtTPCInAccNoTRDout(0),
133 fHistPtTPCInAccNoTOFout(0),
134 fHistPtTPCInAccWithPtTPCAtInnerWall(0),
135 fHistPtTPCInAccWithPtTPCAtVtx(0),
136 fHistDeltaPtTPC(0),
137 fHistPtTPCInAccP(0),
138 fHistPtTPCInAccS(0),
139 fHistPtTPCInAccPfromStrange(0),
140 fHistPtTPCInAccSfromStrange(0),
141 fHistPtTPCInAccSfromMat(0),
142 fHistPtITSMI2(0),
143 fHistPtITSMI3(0),
144 fHistPtITSMI4(0),
145 fHistPtITSMI5(0),
146 fHistPtITSMI6(0),
147 fHistPtITSMISPD(0),
148 fHistPtITSMIoneSPD(0),
149 fHistPtITSMI2InAcc(0),
150 fHistPtITSMI3InAcc(0),
151 fHistPtITSMI4InAcc(0),
152 fHistPtITSMI5InAcc(0),
153 fHistPtITSMI6InAcc(0),
154 fHistPtITSMISPDInAcc(0),
155 fHistPtITSMIoneSPDInAcc(0),
156 fHistPhiITSMI2InAcc(0),
157 fHistPhiITSMI3InAcc(0),
158 fHistPhiITSMI4InAcc(0),
159 fHistPhiITSMI5InAcc(0),
160 fHistPhiITSMI6InAcc(0),
161 fHistPhiITSMISPDInAcc(0),
162 fHistPhiITSMIoneSPDInAcc(0),
163 fHistEtaITSMI2InAcc(0),
164 fHistEtaITSMI3InAcc(0),
165 fHistEtaITSMI4InAcc(0),
166 fHistEtaITSMI5InAcc(0),
167 fHistEtaITSMI6InAcc(0),
168 fHistEtaITSMISPDInAcc(0),
169 fHistEtaITSMIoneSPDInAcc(0),
170 fHistPtITSMI2InAccFake(0),
171 fHistPtITSMI3InAccFake(0),
172 fHistPtITSMI4InAccFake(0),
173 fHistPtITSMI5InAccFake(0),
174 fHistPtITSMI6InAccFake(0),
175 fHistPtITSMISPDInAccFake(0),
176 fHistPtITSMIoneSPDInAccFake(0),
177 fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
178 fHistPtITSTPCsel(0),
179 fHistPtITSTPCselP(0),
180 fHistPtITSTPCselS(0),
181 fHistPtITSTPCselFake(0),
182 fHistPtITSTPCselPfromStrange(0),
183 fHistPtITSTPCselSfromStrange(0),
184 fHistPtITSTPCselSfromMat(0),
185 fHistPtITSMI2InAccP(0),
186 fHistPtITSMI3InAccP(0),
187 fHistPtITSMI4InAccP(0),
188 fHistPtITSMI5InAccP(0),
189 fHistPtITSMI6InAccP(0),
190 fHistPtITSMISPDInAccP(0),
191 fHistPtITSMIoneSPDInAccP(0),
192 fHistPtITSMI2InAccS(0),
193 fHistPtITSMI3InAccS(0),
194 fHistPtITSMI4InAccS(0),
195 fHistPtITSMI5InAccS(0),
196 fHistPtITSMI6InAccS(0),
197 fHistPtITSMISPDInAccS(0),
198 fHistPtITSMIoneSPDInAccS(0),
199 fHistPtITSMIokbadoutinz6(0),
200 fHistPtITSMIokbadoutinz4InAcc(0),
201 fHistPtITSMIokbadoutinz5InAcc(0),
202 fHistPtITSMIokbadoutinz6InAcc(0),
203 fHistPhiITSMIokbadoutinz6InAcc(0),
204 fHistRProdVtxInAccP(0),
205 fHistRProdVtxInAccS(0),
206 fHistd0rphiTPCInAccP150200(0),
207 fHistd0rphiTPCInAccP500700(0),
208 fHistd0rphiTPCInAccP10001500(0),
209 fHistd0rphiTPCInAccS150200(0),
210 fHistd0rphiTPCInAccS500700(0),
211 fHistd0rphiTPCInAccS10001500(0),
212 fHistd0rphiITSMISPDInAccP150200(0),
213 fHistd0rphiITSMISPDInAccP500700(0),
214 fHistd0rphiITSMISPDInAccP10001500(0),
215 fHistd0rphiITSMISPDInAccS150200(0),
216 fHistd0rphiITSMISPDInAccS500700(0),
217 fHistd0rphiITSMISPDInAccS10001500(0),
218 fHistd0rphiITSMIoneSPDInAccP150200(0),
219 fHistd0rphiITSMIoneSPDInAccP350450(0),
220 fHistd0rphiITSMIoneSPDInAccP500700(0),
221 fHistd0rphiITSMIoneSPDInAccP10001500(0),
222 fHistd0rphiITSMIoneSPDInAccP25004000(0),
223 fHistd0rphiITSMIoneSPDInAccP40008000(0),
224 fHistd0zITSMIoneSPDInAccP150200(0),
225 fHistd0zITSMIoneSPDInAccP500700(0),
226 fHistd0zITSMIoneSPDInAccP10001500(0),
227 fHistd0zVSetaTPCInAccP10001500(0),
228 fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
229 fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
230 fHistd0rphiITSMIoneSPDInAccS150200(0),
231 fHistd0rphiITSMIoneSPDInAccS350450(0),
232 fHistd0rphiITSMIoneSPDInAccS500700(0),
233 fHistd0rphiITSMIoneSPDInAccS500700from22(0),
234 fHistd0rphiITSMIoneSPDInAccS500700from211(0),
235 fHistd0rphiITSMIoneSPDInAccS500700from310(0),
236 fHistd0rphiITSMIoneSPDInAccS500700from321(0),
237 fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
238 fHistd0rphiITSMIoneSPDInAccS10001500(0),
239 fHistd0rphiITSMIoneSPDInAccS25004000(0),
240 fHistd0rphiITSMIoneSPDInAccS40008000(0),
241 fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
242 fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
243 fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
244 fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
245 fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
246 fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
247 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
248 fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
249 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
250 fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
251 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
252 fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
253 fHistd0zITSMIoneSPDInAccS150200(0),
254 fHistd0zITSMIoneSPDInAccS500700(0),
255 fHistd0zITSMIoneSPDInAccS10001500(0),
256 fHistPDGMoth(0),
257 fHistPDGMoth150200(0),
258 fHistPDGMoth500700(0),
259 fHistPDGMoth10001500(0),
260 fHistPDGTrk(0),
261 fHistITSRedChi2NonFakePt02(0),
262 fHistITSRedChi2FakePt02(0),
263 fHistITSRedChi2NonFakePt05(0),
264 fHistITSRedChi2FakePt05(0),
265 fHistITSRedChi2NonFakePt1(0),
266 fHistITSRedChi2FakePt1(0),
267 fNtupleESDTracks(0),
268 fNtupleITSAlignExtra(0),
269 fNtupleITSAlignSPDTracklets(0),
270 fESDtrackCutsTPC(0),
271 fESDtrackCutsITSTPC(0)
272 {
273   // Constructor
274 }
275
276 //________________________________________________________________________
277 AliAnalysisTaskITSTrackingCheck::AliAnalysisTaskITSTrackingCheck(const char *name) : 
278 AliAnalysisTaskSE(name), 
279 fReadMC(kFALSE),
280 fReadRPLabels(kFALSE),
281 fFillNtuples(kFALSE),
282 fUseITSSAforNtuples(kFALSE),
283 fUsePhysSel(kFALSE),
284 fESD(0), 
285 fMinMult(0),
286 fMaxMult(1000000),
287 fOutput(0), 
288 fHistNEvents(0),
289 fHistNEventsFrac(0),
290 fHistNtracks(0),
291 fHistNclsITSMI(0),
292 fHistNclsITSSA(0),
293 fHistNclsITSSAInAcc(0),
294 fHistClusterMapITSMI(0),
295 fHistClusterMapITSMIok(0),
296 fHistClusterMapITSMIbad(0),
297 fHistClusterMapITSMIskipped(0),
298 fHistClusterMapITSMIoutinz(0),
299 fHistClusterMapITSMInorefit(0),
300 fHistClusterMapITSMInocls(0),
301 fHistClusterMapITSMIokoutinzbad(0),
302 fHistClusterMapITSSA(0),
303 fHistClusterMapITSSAok(0),
304 fHistClusterMapITSSAbad(0),
305 fHistClusterMapITSSAskipped(0),
306 fHistClusterMapITSSAoutinz(0),
307 fHistClusterMapITSSAnorefit(0),
308 fHistClusterMapITSSAnocls(0),
309 fHistClusterMapITSSAokoutinzbad(0),
310 fHistClusterMapITSSAInAcc(0),
311 fHistClusterMapITSSAokInAcc(0),
312 fHistClusterMapITSSAbadInAcc(0),
313 fHistClusterMapITSSAskippedInAcc(0),
314 fHistClusterMapITSSAoutinzInAcc(0),
315 fHistClusterMapITSSAnorefitInAcc(0),
316 fHistClusterMapITSSAnoclsInAcc(0),
317 fHistClusterMapITSSAokoutinzbadInAcc(0),
318 fHistClusterMapModuleITSSAokInAcc(0),
319 fHistClusterMapModuleITSSAbadInAcc(0),
320 fHistClusterMapModuleITSSAnoclsInAcc(0),
321 fHistClusterMapModuleITSMIokInAcc(0),
322 fHistClusterMapModuleITSMIbadInAcc(0),
323 fHistClusterMapModuleITSMInoclsInAcc(0),
324 fHistZatSPDouter0ok(0),
325 fHistZatSPDouter1ok(0),
326 fHistZatSPDouter2ok(0),
327 fHistZatSPDouter3ok(0),
328 fHistZatSPDouter0notok(0),
329 fHistZatSPDouter1notok(0),
330 fHistZatSPDouter2notok(0),
331 fHistZatSPDouter3notok(0),
332 fHistxlocSDDok(0),
333 fHistzlocSDDok(0),
334 fHistxlocVSmodSDDok(0),
335 fHistxlocSDDall(0),
336 fHistzlocSDDall(0),
337 fHistPhiTPCInAcc(0),
338 fHistEtaTPCInAcc(0),
339 fHistPtTPC(0),
340 fHistPtTPCInAcc(0),
341 fHistPtTPCInAccMCtwoSPD(0),
342 fHistPtTPCInAccMConeSPD(0),
343 fHistdEdxVSPtTPCInAcc(0),
344 fHistdEdxVSPtITSTPCsel(0),
345 fHistPtVSphiTPCInAcc(0),
346 fHistPtTPCInAccNoTRDout(0),
347 fHistPtTPCInAccNoTOFout(0),
348 fHistPtTPCInAccWithPtTPCAtInnerWall(0),
349 fHistPtTPCInAccWithPtTPCAtVtx(0),
350 fHistDeltaPtTPC(0),
351 fHistPtTPCInAccP(0),
352 fHistPtTPCInAccS(0),
353 fHistPtTPCInAccPfromStrange(0),
354 fHistPtTPCInAccSfromStrange(0),
355 fHistPtTPCInAccSfromMat(0),
356 fHistPtITSMI2(0),
357 fHistPtITSMI3(0),
358 fHistPtITSMI4(0),
359 fHistPtITSMI5(0),
360 fHistPtITSMI6(0),
361 fHistPtITSMISPD(0),
362 fHistPtITSMIoneSPD(0),
363 fHistPtITSMI2InAcc(0),
364 fHistPtITSMI3InAcc(0),
365 fHistPtITSMI4InAcc(0),
366 fHistPtITSMI5InAcc(0),
367 fHistPtITSMI6InAcc(0),
368 fHistPtITSMISPDInAcc(0),
369 fHistPtITSMIoneSPDInAcc(0),
370 fHistPhiITSMI2InAcc(0),
371 fHistPhiITSMI3InAcc(0),
372 fHistPhiITSMI4InAcc(0),
373 fHistPhiITSMI5InAcc(0),
374 fHistPhiITSMI6InAcc(0),
375 fHistPhiITSMISPDInAcc(0),
376 fHistPhiITSMIoneSPDInAcc(0),
377 fHistEtaITSMI2InAcc(0),
378 fHistEtaITSMI3InAcc(0),
379 fHistEtaITSMI4InAcc(0),
380 fHistEtaITSMI5InAcc(0),
381 fHistEtaITSMI6InAcc(0),
382 fHistEtaITSMISPDInAcc(0),
383 fHistEtaITSMIoneSPDInAcc(0),
384 fHistPtITSMI2InAccFake(0),
385 fHistPtITSMI3InAccFake(0),
386 fHistPtITSMI4InAccFake(0),
387 fHistPtITSMI5InAccFake(0),
388 fHistPtITSMI6InAccFake(0),
389 fHistPtITSMISPDInAccFake(0),
390 fHistPtITSMIoneSPDInAccFake(0),
391 fHistPtITSMIoneSPDthreeSDDSSDInAcc(0),
392 fHistPtITSTPCsel(0),
393 fHistPtITSTPCselP(0),
394 fHistPtITSTPCselS(0),
395 fHistPtITSTPCselFake(0),
396 fHistPtITSTPCselPfromStrange(0),
397 fHistPtITSTPCselSfromStrange(0),
398 fHistPtITSTPCselSfromMat(0),
399 fHistPtITSMI2InAccP(0),
400 fHistPtITSMI3InAccP(0),
401 fHistPtITSMI4InAccP(0),
402 fHistPtITSMI5InAccP(0),
403 fHistPtITSMI6InAccP(0),
404 fHistPtITSMISPDInAccP(0),
405 fHistPtITSMIoneSPDInAccP(0),
406 fHistPtITSMI2InAccS(0),
407 fHistPtITSMI3InAccS(0),
408 fHistPtITSMI4InAccS(0),
409 fHistPtITSMI5InAccS(0),
410 fHistPtITSMI6InAccS(0),
411 fHistPtITSMISPDInAccS(0),
412 fHistPtITSMIoneSPDInAccS(0),
413 fHistPtITSMIokbadoutinz6(0),
414 fHistPtITSMIokbadoutinz4InAcc(0),
415 fHistPtITSMIokbadoutinz5InAcc(0),
416 fHistPtITSMIokbadoutinz6InAcc(0),
417 fHistPhiITSMIokbadoutinz6InAcc(0),
418 fHistRProdVtxInAccP(0),
419 fHistRProdVtxInAccS(0),
420 fHistd0rphiTPCInAccP150200(0),
421 fHistd0rphiTPCInAccP500700(0),
422 fHistd0rphiTPCInAccP10001500(0),
423 fHistd0rphiTPCInAccS150200(0),
424 fHistd0rphiTPCInAccS500700(0),
425 fHistd0rphiTPCInAccS10001500(0),
426 fHistd0rphiITSMISPDInAccP150200(0),
427 fHistd0rphiITSMISPDInAccP500700(0),
428 fHistd0rphiITSMISPDInAccP10001500(0),
429 fHistd0rphiITSMISPDInAccS150200(0),
430 fHistd0rphiITSMISPDInAccS500700(0),
431 fHistd0rphiITSMISPDInAccS10001500(0),
432 fHistd0rphiITSMIoneSPDInAccP150200(0),
433 fHistd0rphiITSMIoneSPDInAccP350450(0),
434 fHistd0rphiITSMIoneSPDInAccP500700(0),
435 fHistd0rphiITSMIoneSPDInAccP10001500(0),
436 fHistd0rphiITSMIoneSPDInAccP25004000(0),
437 fHistd0rphiITSMIoneSPDInAccP40008000(0),
438 fHistd0zITSMIoneSPDInAccP150200(0),
439 fHistd0zITSMIoneSPDInAccP500700(0),
440 fHistd0zITSMIoneSPDInAccP10001500(0),
441 fHistd0zVSetaTPCInAccP10001500(0),
442 fHistd0rphiVSphiITSMIoneSPDInAccP10001500(0),
443 fHistd0rphiVSetaITSMIoneSPDInAccP10001500(0),
444 fHistd0rphiITSMIoneSPDInAccS150200(0),
445 fHistd0rphiITSMIoneSPDInAccS350450(0),
446 fHistd0rphiITSMIoneSPDInAccS500700(0),
447 fHistd0rphiITSMIoneSPDInAccS500700from22(0),
448 fHistd0rphiITSMIoneSPDInAccS500700from211(0),
449 fHistd0rphiITSMIoneSPDInAccS500700from310(0),
450 fHistd0rphiITSMIoneSPDInAccS500700from321(0),
451 fHistd0rphiITSMIoneSPDInAccS500700from3122(0),
452 fHistd0rphiITSMIoneSPDInAccS10001500(0),
453 fHistd0rphiITSMIoneSPDInAccS25004000(0),
454 fHistd0rphiITSMIoneSPDInAccS40008000(0),
455 fHistd0rphiITSMIoneSPDInAccS150200fromStrange(0),
456 fHistd0rphiITSMIoneSPDInAccS150200fromMat(0),
457 fHistd0rphiITSMIoneSPDInAccS350450fromStrange(0),
458 fHistd0rphiITSMIoneSPDInAccS350450fromMat(0),
459 fHistd0rphiITSMIoneSPDInAccS500700fromStrange(0),
460 fHistd0rphiITSMIoneSPDInAccS500700fromMat(0),
461 fHistd0rphiITSMIoneSPDInAccS10001500fromStrange(0),
462 fHistd0rphiITSMIoneSPDInAccS10001500fromMat(0),
463 fHistd0rphiITSMIoneSPDInAccS25004000fromStrange(0),
464 fHistd0rphiITSMIoneSPDInAccS25004000fromMat(0),
465 fHistd0rphiITSMIoneSPDInAccS40008000fromStrange(0),
466 fHistd0rphiITSMIoneSPDInAccS40008000fromMat(0),
467 fHistd0zITSMIoneSPDInAccS150200(0),
468 fHistd0zITSMIoneSPDInAccS500700(0),
469 fHistd0zITSMIoneSPDInAccS10001500(0),
470 fHistPDGMoth(0),
471 fHistPDGMoth150200(0),
472 fHistPDGMoth500700(0),
473 fHistPDGMoth10001500(0),
474 fHistPDGTrk(0),
475 fHistITSRedChi2NonFakePt02(0),
476 fHistITSRedChi2FakePt02(0),
477 fHistITSRedChi2NonFakePt05(0),
478 fHistITSRedChi2FakePt05(0),
479 fHistITSRedChi2NonFakePt1(0),
480 fHistITSRedChi2FakePt1(0),
481 fNtupleESDTracks(0),
482 fNtupleITSAlignExtra(0),
483 fNtupleITSAlignSPDTracklets(0),
484 fESDtrackCutsTPC(0),
485 fESDtrackCutsITSTPC(0)
486 {
487   // Constructor
488
489   for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
490
491   // Define input and output slots here
492   // Output slot #0 writes into a TList container
493   DefineOutput(1, TList::Class());  //My private output
494 }
495 //________________________________________________________________________
496 AliAnalysisTaskITSTrackingCheck::~AliAnalysisTaskITSTrackingCheck()
497 {
498   // Destructor
499
500   // histograms are in the output list and deleted when the output
501   // list is deleted by the TSelector dtor
502
503   if (fOutput) {
504     delete fOutput;
505     fOutput = 0;
506   }
507 }
508 //________________________________________________________________________
509 void AliAnalysisTaskITSTrackingCheck::UserCreateOutputObjects()
510 {
511   // Create histograms
512   // Called once
513
514   gStyle->SetHistLineWidth(2);
515
516   Int_t nPtBins=34;
517   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};
518   //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};
519
520   for(Int_t i=0; i<11; i++) fCountsPerPtBin[i]=0;
521
522   // Several histograms are more conveniently managed in a TList
523   fOutput = new TList;
524   fOutput->SetOwner();
525
526   fHistPDGMoth = new TH1F("fHistPDGMoth","",4000,0,4000);
527   fOutput->Add(fHistPDGMoth);
528   fHistPDGMoth150200 = new TH1F("fHistPDGMoth150200","",4000,0,4000);
529   fOutput->Add(fHistPDGMoth150200);
530   fHistPDGMoth500700 = new TH1F("fHistPDGMoth500700","",4000,0,4000);
531   fOutput->Add(fHistPDGMoth500700);
532   fHistPDGMoth10001500 = new TH1F("fHistPDGMoth10001500","",4000,0,4000);
533   fOutput->Add(fHistPDGMoth10001500);
534   fHistPDGTrk = new TH1F("fHistPDGTrk","",4000,0,4000);
535   fOutput->Add(fHistPDGTrk);
536
537   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);
538   fHistNEvents->SetMinimum(0);
539   fOutput->Add(fHistNEvents);
540
541   fHistNEventsFrac = (TH1F*)fHistNEvents->Clone("fHistNEventsFrac");
542   fOutput->Add(fHistNEventsFrac);
543
544   fHistNtracks = new TH1F("fHistNtracks", "N ESD tracks; N tracks; Events",5000, -0.5, 4999.5);
545   fHistNtracks->Sumw2();
546   fHistNtracks->SetMinimum(0);
547   fOutput->Add(fHistNtracks);
548
549   fHistNclsITSMI = new TH1F("fHistNclsITSMI", "N ITS clusters per track (MI); N clusters; Counts",7, -0.5, 6.5);
550   fHistNclsITSMI->Sumw2();
551   fHistNclsITSMI->SetMinimum(0);
552   fOutput->Add(fHistNclsITSMI);
553
554   fHistNclsITSSAInAcc = new TH1F("fHistNclsITSSAInAcc", "N ITS clusters per track (SA); N clusters; Counts",7, -0.5, 6.5);
555   fHistNclsITSSAInAcc->Sumw2();
556   fHistNclsITSSAInAcc->SetMinimum(0);
557   fOutput->Add(fHistNclsITSSAInAcc);  
558
559   fHistNclsITSSA = new TH1F("fHistNclsITSSA", "N ITS clusters per track (SA); N clusters; Counts",7, -0.5, 6.5);
560   fHistNclsITSSA->Sumw2();
561   fHistNclsITSSA->SetMinimum(0);
562   fOutput->Add(fHistNclsITSSA);  
563
564   fHistClusterMapITSMI = new TH1F("fHistClusterMapITSMI", "N tracks with point on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
565   fHistClusterMapITSMI->Sumw2();
566   fHistClusterMapITSMI->SetMinimum(0);
567   fOutput->Add(fHistClusterMapITSMI);
568   
569   fHistClusterMapITSSA = new TH1F("fHistClusterMapITSSA", "N tracks with point on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
570   fHistClusterMapITSSA->Sumw2();
571   fHistClusterMapITSSA->SetMinimum(0);
572   fOutput->Add(fHistClusterMapITSSA);
573
574   fHistClusterMapITSSAInAcc = new TH1F("fHistClusterMapITSSAInAcc", "N tracks with point on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
575   fHistClusterMapITSSAInAcc->Sumw2();
576   fHistClusterMapITSSAInAcc->SetMinimum(0);
577   fOutput->Add(fHistClusterMapITSSAInAcc);
578
579   fHistClusterMapITSMIok = new TH1F("fHistClusterMapITSMIok", "N tracks with ok on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
580   fHistClusterMapITSMIok->Sumw2();
581   fHistClusterMapITSMIok->SetMinimum(0);
582   fOutput->Add(fHistClusterMapITSMIok);
583   
584   fHistClusterMapITSSAokInAcc = new TH1F("fHistClusterMapITSSAokInAcc", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
585   fHistClusterMapITSSAokInAcc->Sumw2();
586   fHistClusterMapITSSAokInAcc->SetMinimum(0);
587   fOutput->Add(fHistClusterMapITSSAokInAcc);
588
589   fHistClusterMapModuleITSSAokInAcc = new TH1F("fHistClusterMapModuleITSSAokInAcc", "N tracks with ok on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
590   fHistClusterMapModuleITSSAokInAcc->SetMinimum(0);
591   fOutput->Add(fHistClusterMapModuleITSSAokInAcc);
592
593   fHistClusterMapModuleITSMIokInAcc = new TH1F("fHistClusterMapModuleITSMIokInAcc", "N tracks with ok on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
594   fHistClusterMapModuleITSMIokInAcc->SetMinimum(0);
595   fOutput->Add(fHistClusterMapModuleITSMIokInAcc);
596
597   fHistClusterMapITSSAok = new TH1F("fHistClusterMapITSSAok", "N tracks with ok on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
598   fHistClusterMapITSSAok->Sumw2();
599   fHistClusterMapITSSAok->SetMinimum(0);
600   fOutput->Add(fHistClusterMapITSSAok);
601
602   fHistClusterMapITSMIbad = new TH1F("fHistClusterMapITSMIbad", "N tracks with bad on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
603   fHistClusterMapITSMIbad->Sumw2();
604   fHistClusterMapITSMIbad->SetMinimum(0);
605   fOutput->Add(fHistClusterMapITSMIbad);
606   
607   fHistClusterMapITSSAbadInAcc = new TH1F("fHistClusterMapITSSAbadInAcc", "N tracks with bad on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
608   fHistClusterMapITSSAbadInAcc->Sumw2();
609   fHistClusterMapITSSAbadInAcc->SetMinimum(0);
610   fOutput->Add(fHistClusterMapITSSAbadInAcc);
611
612   fHistClusterMapModuleITSSAbadInAcc = new TH1F("fHistClusterMapModuleITSSAbadInAcc", "N tracks with bad on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
613   fHistClusterMapModuleITSSAbadInAcc->SetMinimum(0);
614   fOutput->Add(fHistClusterMapModuleITSSAbadInAcc);
615
616   fHistClusterMapModuleITSMIbadInAcc = new TH1F("fHistClusterMapModuleITSMIbadInAcc", "N tracks with bad on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
617   fHistClusterMapModuleITSMIbadInAcc->SetMinimum(0);
618   fOutput->Add(fHistClusterMapModuleITSMIbadInAcc);
619
620   fHistClusterMapITSSAbad = new TH1F("fHistClusterMapITSSAbad", "N tracks with bad on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
621   fHistClusterMapITSSAbad->Sumw2();
622   fHistClusterMapITSSAbad->SetMinimum(0);
623   fOutput->Add(fHistClusterMapITSSAbad);
624
625   fHistClusterMapITSMIskipped = new TH1F("fHistClusterMapITSMIskipped", "N tracks with skip on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
626   fHistClusterMapITSMIskipped->Sumw2();
627   fHistClusterMapITSMIskipped->SetMinimum(0);
628   fOutput->Add(fHistClusterMapITSMIskipped);
629   
630   fHistClusterMapITSSAskippedInAcc = new TH1F("fHistClusterMapITSSAskippedInAcc", "N tracks with skip on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
631   fHistClusterMapITSSAskippedInAcc->Sumw2();
632   fHistClusterMapITSSAskippedInAcc->SetMinimum(0);
633   fOutput->Add(fHistClusterMapITSSAskippedInAcc);
634
635   fHistClusterMapITSSAskipped = new TH1F("fHistClusterMapITSSAskipped", "N tracks with skip on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
636   fHistClusterMapITSSAskipped->Sumw2();
637   fHistClusterMapITSSAskipped->SetMinimum(0);
638   fOutput->Add(fHistClusterMapITSSAskipped);
639
640   fHistClusterMapITSMIoutinz = new TH1F("fHistClusterMapITSMIoutinz", "N tracks out in z on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
641   fHistClusterMapITSMIoutinz->Sumw2();
642   fHistClusterMapITSMIoutinz->SetMinimum(0);
643   fOutput->Add(fHistClusterMapITSMIoutinz);
644   
645   fHistClusterMapITSSAoutinzInAcc = new TH1F("fHistClusterMapITSSAoutinzInAcc", "N tracks with out in z on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
646   fHistClusterMapITSSAoutinzInAcc->Sumw2();
647   fHistClusterMapITSSAoutinzInAcc->SetMinimum(0);
648   fOutput->Add(fHistClusterMapITSSAoutinzInAcc);
649
650   fHistClusterMapITSSAoutinz = new TH1F("fHistClusterMapITSSAoutinz", "N tracks with out in z on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
651   fHistClusterMapITSSAoutinz->Sumw2();
652   fHistClusterMapITSSAoutinz->SetMinimum(0);
653   fOutput->Add(fHistClusterMapITSSAoutinz);
654
655   fHistClusterMapITSSAokoutinzbad = new TH1F("fHistClusterMapITSSAokoutinzbad", "N tracks with cluster or bad zone or out in z (SA); Layer; N tracks",6, -0.5, 5.5);
656   fHistClusterMapITSSAokoutinzbad->Sumw2();
657   fHistClusterMapITSSAokoutinzbad->SetMinimum(0);
658   fOutput->Add(fHistClusterMapITSSAokoutinzbad);
659
660   fHistClusterMapITSMIokoutinzbad = new TH1F("fHistClusterMapITSMIokoutinzbad", "N tracks with cluster or bad zone or out in z (MI); Layer; N tracks",6, -0.5, 5.5);
661   fHistClusterMapITSMIokoutinzbad->Sumw2();
662   fHistClusterMapITSMIokoutinzbad->SetMinimum(0);
663   fOutput->Add(fHistClusterMapITSMIokoutinzbad);
664
665   fHistClusterMapITSSAokoutinzbadInAcc = new TH1F("fHistClusterMapITSSAokoutinzbadInAcc", "N tracks with cluster or bad zone or out in z (SA); Layer; N tracks",6, -0.5, 5.5);
666   fHistClusterMapITSSAokoutinzbadInAcc->Sumw2();
667   fHistClusterMapITSSAokoutinzbadInAcc->SetMinimum(0);
668   fOutput->Add(fHistClusterMapITSSAokoutinzbadInAcc);
669
670   fHistClusterMapITSMInorefit = new TH1F("fHistClusterMapITSMInorefit", "N tracks with norefit on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
671   fHistClusterMapITSMInorefit->Sumw2();
672   fHistClusterMapITSMInorefit->SetMinimum(0);
673   fOutput->Add(fHistClusterMapITSMInorefit);
674   
675   fHistClusterMapITSSAnorefitInAcc = new TH1F("fHistClusterMapITSSAnorefitInAcc", "N tracks with norefit on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
676   fHistClusterMapITSSAnorefitInAcc->Sumw2();
677   fHistClusterMapITSSAnorefitInAcc->SetMinimum(0);
678   fOutput->Add(fHistClusterMapITSSAnorefitInAcc);
679
680   fHistClusterMapITSSAnorefit = new TH1F("fHistClusterMapITSSAnorefit", "N tracks with norefit on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
681   fHistClusterMapITSSAnorefit->Sumw2();
682   fHistClusterMapITSSAnorefit->SetMinimum(0);
683   fOutput->Add(fHistClusterMapITSSAnorefit);
684
685   fHistClusterMapITSMInocls = new TH1F("fHistClusterMapITSMInocls", "N tracks with nocls on Layer (MI); Layer; N tracks",6, -0.5, 5.5);
686   fHistClusterMapITSMInocls->Sumw2();
687   fHistClusterMapITSMInocls->SetMinimum(0);
688   fOutput->Add(fHistClusterMapITSMInocls);
689   
690   fHistClusterMapITSSAnoclsInAcc = new TH1F("fHistClusterMapITSSAnoclsInAcc", "N tracks with nocls on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
691   fHistClusterMapITSSAnoclsInAcc->Sumw2();
692   fHistClusterMapITSSAnoclsInAcc->SetMinimum(0);
693   fOutput->Add(fHistClusterMapITSSAnoclsInAcc);
694   
695   fHistClusterMapModuleITSSAnoclsInAcc = new TH1F("fHistClusterMapModuleITSSAnoclsInAcc", "N tracks with nocls on Module (SA); Module; N tracks",2198, -0.5, 2197.5);
696   fHistClusterMapModuleITSSAnoclsInAcc->SetMinimum(0);
697   fOutput->Add(fHistClusterMapModuleITSSAnoclsInAcc);
698
699   fHistClusterMapModuleITSMInoclsInAcc = new TH1F("fHistClusterMapModuleITSMInoclsInAcc", "N tracks with nocls on Module (MI); Module; N tracks",2198, -0.5, 2197.5);
700   fHistClusterMapModuleITSMInoclsInAcc->SetMinimum(0);
701   fOutput->Add(fHistClusterMapModuleITSMInoclsInAcc);
702
703   fHistClusterMapITSSAnocls = new TH1F("fHistClusterMapITSSAnocls", "N tracks with nocls on Layer (SA); Layer; N tracks",6, -0.5, 5.5);
704   fHistClusterMapITSSAnocls->Sumw2();
705   fHistClusterMapITSSAnocls->SetMinimum(0);
706   fOutput->Add(fHistClusterMapITSSAnocls);
707   
708   
709   fHistZatSPDouter0ok = new TH1F("fHistZatSPDouter0ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
710   fHistZatSPDouter0ok->Sumw2();
711   fHistZatSPDouter0ok->SetMinimum(0);
712   fOutput->Add(fHistZatSPDouter0ok);
713   fHistZatSPDouter1ok = new TH1F("fHistZatSPDouter1ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
714   fHistZatSPDouter1ok->Sumw2();
715   fHistZatSPDouter1ok->SetMinimum(0);
716   fOutput->Add(fHistZatSPDouter1ok);
717   fHistZatSPDouter2ok = new TH1F("fHistZatSPDouter2ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
718   fHistZatSPDouter2ok->Sumw2();
719   fHistZatSPDouter2ok->SetMinimum(0);
720   fOutput->Add(fHistZatSPDouter2ok);
721   fHistZatSPDouter3ok = new TH1F("fHistZatSPDouter3ok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
722   fHistZatSPDouter3ok->Sumw2();
723   fHistZatSPDouter3ok->SetMinimum(0);
724   fOutput->Add(fHistZatSPDouter3ok);
725   fHistZatSPDouter0notok = new TH1F("fHistZatSPDouter0notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
726   fHistZatSPDouter0notok->Sumw2();
727   fHistZatSPDouter0notok->SetMinimum(0);
728   fOutput->Add(fHistZatSPDouter0notok);
729   fHistZatSPDouter1notok = new TH1F("fHistZatSPDouter1notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
730   fHistZatSPDouter1notok->Sumw2();
731   fHistZatSPDouter1notok->SetMinimum(0);
732   fOutput->Add(fHistZatSPDouter1notok);
733   fHistZatSPDouter2notok = new TH1F("fHistZatSPDouter2notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
734   fHistZatSPDouter2notok->Sumw2();
735   fHistZatSPDouter2notok->SetMinimum(0);
736   fOutput->Add(fHistZatSPDouter2notok);
737   fHistZatSPDouter3notok = new TH1F("fHistZatSPDouter3notok", "Track z at SPDouter radius; z [cm]; N tracks",3200,-16,16);
738   fHistZatSPDouter3notok->Sumw2();
739   fHistZatSPDouter3notok->SetMinimum(0);
740   fOutput->Add(fHistZatSPDouter3notok);
741   
742   fHistxlocSDDok = new TH1F("fHistxlocSDDok", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
743   fHistxlocSDDok->Sumw2();
744   fHistxlocSDDok->SetMinimum(0);
745   fOutput->Add(fHistxlocSDDok);
746
747   fHistxlocVSmodSDDok = new TH2F("fHistxlocVSmodSDDok", "SDD points; module; xloc [cm]",260,239.5,499.5,25, -3.75, 3.75);
748   fOutput->Add(fHistxlocVSmodSDDok);
749
750   fHistzlocSDDok = new TH1F("fHistzlocSDDok", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
751   fHistzlocSDDok->Sumw2();
752   fHistzlocSDDok->SetMinimum(0);
753   fOutput->Add(fHistzlocSDDok);
754   
755   fHistxlocSDDall = new TH1F("fHistxlocSDDall", "SDD points; xloc [cm]; N tracks",75, -3.75, 3.75);
756   fHistxlocSDDall->Sumw2();
757   fHistxlocSDDall->SetMinimum(0);
758   fOutput->Add(fHistxlocSDDall);
759
760   fHistzlocSDDall = new TH1F("fHistzlocSDDall", "SDD points; zloc [cm]; N tracks",77, -3.85, 3.85);
761   fHistzlocSDDall->Sumw2();
762   fHistzlocSDDall->SetMinimum(0);
763   fOutput->Add(fHistzlocSDDall);
764   
765
766   fHistPhiTPCInAcc = new TH1F("fHistPhiTPCInAcc","Azimuthal distribution of TPC tracks; #phi; N tracks",100, 0, 2.*3.1415);
767   fHistPhiTPCInAcc->Sumw2();
768   fHistPhiTPCInAcc->SetMinimum(0);
769   fOutput->Add(fHistPhiTPCInAcc);
770
771   fHistEtaTPCInAcc = new TH1F("fHistEtaTPCInAcc","Eta distribution of TPC tracks; #eta; N tracks",100, -1.5, +1.5);
772   fHistEtaTPCInAcc->Sumw2();
773   fHistEtaTPCInAcc->SetMinimum(0);
774   fOutput->Add(fHistEtaTPCInAcc);
775
776   fHistPhiITSMIokbadoutinz6InAcc = new TH1F("fHistPhiITSMIokbadoutinz6InAcc","Azimuthal distribution of ITSMI tracks with 6 layers OK; #phi; N tracks",100,0,2.*3.1415);
777   fHistPhiITSMIokbadoutinz6InAcc->Sumw2();
778   fHistPhiITSMIokbadoutinz6InAcc->SetMinimum(0);
779   fOutput->Add(fHistPhiITSMIokbadoutinz6InAcc);
780   
781   fHistPtTPC = new TH1F("fHistPtTPC","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
782   fHistPtTPC->Sumw2();
783   fHistPtTPC->SetMinimum(0);
784   fOutput->Add(fHistPtTPC);
785   
786   fHistPtITSMI6 = new TH1F("fHistPtITSMI6","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
787   fHistPtITSMI6->Sumw2();
788   fHistPtITSMI6->SetMinimum(0);
789   fOutput->Add(fHistPtITSMI6);
790   
791   fHistPtITSMI5 = new TH1F("fHistPtITSMI5","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
792   fHistPtITSMI5->Sumw2();
793   fHistPtITSMI5->SetMinimum(0);
794   fOutput->Add(fHistPtITSMI5);
795   
796   fHistPtITSMI4 = new TH1F("fHistPtITSMI4","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
797   fHistPtITSMI4->Sumw2();
798   fHistPtITSMI4->SetMinimum(0);
799   fOutput->Add(fHistPtITSMI4);
800   
801   fHistPtITSMI3 = new TH1F("fHistPtITSMI3","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
802   fHistPtITSMI3->Sumw2();
803   fHistPtITSMI3->SetMinimum(0);
804   fOutput->Add(fHistPtITSMI3);
805   
806   fHistPtITSMI2 = new TH1F("fHistPtITSMI2","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
807   fHistPtITSMI2->Sumw2();
808   fHistPtITSMI2->SetMinimum(0);
809   fOutput->Add(fHistPtITSMI2);
810   
811   fHistPtITSMISPD = new TH1F("fHistPtITSMISPD","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
812   fHistPtITSMISPD->Sumw2();
813   fHistPtITSMISPD->SetMinimum(0);
814   fOutput->Add(fHistPtITSMISPD);
815
816   fHistPtITSMIoneSPD = new TH1F("fHistPtITSMIoneSPD","pt distribution of ITSMIoneSPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
817   fHistPtITSMIoneSPD->Sumw2();
818   fHistPtITSMIoneSPD->SetMinimum(0);
819   fOutput->Add(fHistPtITSMIoneSPD);
820
821   fHistPtTPCInAcc = new TH1F("fHistPtTPCInAcc","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
822   fHistPtTPCInAcc->Sumw2();
823   fHistPtTPCInAcc->SetMinimum(0);
824   fOutput->Add(fHistPtTPCInAcc);
825   
826   fHistPtTPCInAccMCtwoSPD = new TH1F("fHistPtTPCInAccMCtwoSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
827   fHistPtTPCInAccMCtwoSPD->Sumw2();
828   fHistPtTPCInAccMCtwoSPD->SetMinimum(0);
829   fOutput->Add(fHistPtTPCInAccMCtwoSPD);
830   
831   fHistPtTPCInAccMConeSPD = new TH1F("fHistPtTPCInAccMConeSPD","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
832   fHistPtTPCInAccMConeSPD->Sumw2();
833   fHistPtTPCInAccMConeSPD->SetMinimum(0);
834   fOutput->Add(fHistPtTPCInAccMConeSPD);
835   
836   fHistdEdxVSPtTPCInAcc = new TH2F("fHistdEdxVSPtTPCInAcc","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; TPC dE/dx",100,0,1,50,0,500);
837   fOutput->Add(fHistdEdxVSPtTPCInAcc);
838   
839   fHistdEdxVSPtITSTPCsel = new TH2F("fHistdEdxVSPtITSTPCsel","dE/dx distribution of TPC tracks; p_{t} [GeV/c]; ITS dE/dx",100,0,1,50,0,500);
840   fOutput->Add(fHistdEdxVSPtITSTPCsel);
841   
842   fHistPtVSphiTPCInAcc = new TH2F("fHistPtVSphiTPCInAcc","pt distribution of TPC tracks; phi; p_{t} [GeV/c]",18,0,6.28,20,0,0.5);
843   fHistPtVSphiTPCInAcc->SetMinimum(0);
844   fOutput->Add(fHistPtVSphiTPCInAcc);
845   
846   fHistPtTPCInAccNoTRDout = new TH1F("fHistPtTPCInAccNoTRDout","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
847   fHistPtTPCInAccNoTRDout->Sumw2();
848   fHistPtTPCInAccNoTRDout->SetMinimum(0);
849   fOutput->Add(fHistPtTPCInAccNoTRDout);
850   
851   fHistPtTPCInAccNoTOFout = new TH1F("fHistPtTPCInAccNoTOFout","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
852   fHistPtTPCInAccNoTOFout->Sumw2();
853   fHistPtTPCInAccNoTOFout->SetMinimum(0);
854   fOutput->Add(fHistPtTPCInAccNoTOFout);
855   
856   fHistPtTPCInAccWithPtTPCAtVtx = new TH1F("fHistPtTPCInAccWithPtTPCAtVtx","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
857   fHistPtTPCInAccWithPtTPCAtVtx->Sumw2();
858   fHistPtTPCInAccWithPtTPCAtVtx->SetMinimum(0);
859   fOutput->Add(fHistPtTPCInAccWithPtTPCAtVtx);
860   
861   fHistPtTPCInAccWithPtTPCAtInnerWall = new TH1F("fHistPtTPCInAccWithPtTPCAtInnerWall","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
862   fHistPtTPCInAccWithPtTPCAtInnerWall->Sumw2();
863   fHistPtTPCInAccWithPtTPCAtInnerWall->SetMinimum(0);
864   fOutput->Add(fHistPtTPCInAccWithPtTPCAtInnerWall);
865   
866   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);
867   fHistDeltaPtTPC->SetMinimum(0);
868   fOutput->Add(fHistDeltaPtTPC);
869   
870   fHistPtITSMI6InAcc = new TH1F("fHistPtITSMI6InAcc","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
871   fHistPtITSMI6InAcc->Sumw2();
872   fHistPtITSMI6InAcc->SetMinimum(0);
873   fOutput->Add(fHistPtITSMI6InAcc);
874   
875   fHistPtITSMI5InAcc = new TH1F("fHistPtITSMI5InAcc","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
876   fHistPtITSMI5InAcc->Sumw2();
877   fHistPtITSMI5InAcc->SetMinimum(0);
878   fOutput->Add(fHistPtITSMI5InAcc);
879   
880   fHistPtITSMI4InAcc = new TH1F("fHistPtITSMI4InAcc","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
881   fHistPtITSMI4InAcc->Sumw2();
882   fHistPtITSMI4InAcc->SetMinimum(0);
883   fOutput->Add(fHistPtITSMI4InAcc);
884   
885   fHistPtITSMI3InAcc = new TH1F("fHistPtITSMI3InAcc","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
886   fHistPtITSMI3InAcc->Sumw2();
887   fHistPtITSMI3InAcc->SetMinimum(0);
888   fOutput->Add(fHistPtITSMI3InAcc);
889   
890   fHistPtITSMI2InAcc = new TH1F("fHistPtITSMI2InAcc","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
891   fHistPtITSMI2InAcc->Sumw2();
892   fHistPtITSMI2InAcc->SetMinimum(0);
893   fOutput->Add(fHistPtITSMI2InAcc);
894   
895   fHistPtITSMISPDInAcc = new TH1F("fHistPtITSMISPDInAcc","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
896   fHistPtITSMISPDInAcc->Sumw2();
897   fHistPtITSMISPDInAcc->SetMinimum(0);
898   fOutput->Add(fHistPtITSMISPDInAcc);
899   
900   fHistPtITSMIoneSPDInAcc = new TH1F("fHistPtITSMIoneSPDInAcc","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
901   fHistPtITSMIoneSPDInAcc->Sumw2();
902   fHistPtITSMIoneSPDInAcc->SetMinimum(0);
903   fOutput->Add(fHistPtITSMIoneSPDInAcc);
904
905   fHistPhiITSMI6InAcc = new TH1F("fHistPhiITSMI6InAcc","phi distribution of ITSMI6 tracks; #phi; N tracks",100,0,2*3.1415);
906   fHistPhiITSMI6InAcc->Sumw2();
907   fHistPhiITSMI6InAcc->SetMinimum(0);
908   fOutput->Add(fHistPhiITSMI6InAcc);
909   
910   fHistPhiITSMI5InAcc = new TH1F("fHistPhiITSMI5InAcc","phi distribution of ITSMI5 tracks; #phi; N tracks",100,0,2*3.1415);
911   fHistPhiITSMI5InAcc->Sumw2();
912   fHistPhiITSMI5InAcc->SetMinimum(0);
913   fOutput->Add(fHistPhiITSMI5InAcc);
914   
915   fHistPhiITSMI4InAcc = new TH1F("fHistPhiITSMI4InAcc","phi distribution of ITSMI4 tracks; #phi; N tracks",100,0,2*3.1415);
916   fHistPhiITSMI4InAcc->Sumw2();
917   fHistPhiITSMI4InAcc->SetMinimum(0);
918   fOutput->Add(fHistPhiITSMI4InAcc);
919   
920   fHistPhiITSMI3InAcc = new TH1F("fHistPhiITSMI3InAcc","phi distribution of ITSMI3 tracks; #phi; N tracks",100,0,2*3.1415);
921   fHistPhiITSMI3InAcc->Sumw2();
922   fHistPhiITSMI3InAcc->SetMinimum(0);
923   fOutput->Add(fHistPhiITSMI3InAcc);
924   
925   fHistPhiITSMI2InAcc = new TH1F("fHistPhiITSMI2InAcc","phi distribution of ITSMI2 tracks; #phi; N tracks",100,0,2*3.1415);
926   fHistPhiITSMI2InAcc->Sumw2();
927   fHistPhiITSMI2InAcc->SetMinimum(0);
928   fOutput->Add(fHistPhiITSMI2InAcc);
929   
930   fHistPhiITSMISPDInAcc = new TH1F("fHistPhiITSMISPDInAcc","phi distribution of ITSMISPD tracks; #phi; N tracks",100,0,2*3.1415);
931   fHistPhiITSMISPDInAcc->Sumw2();
932   fHistPhiITSMISPDInAcc->SetMinimum(0);
933   fOutput->Add(fHistPhiITSMISPDInAcc);
934   
935   fHistPhiITSMIoneSPDInAcc = new TH1F("fHistPhiITSMIoneSPDInAcc","phi distribution of ITSMISPD tracks; #phi; N tracks",100,0,2*3.1415);
936   fHistPhiITSMIoneSPDInAcc->Sumw2();
937   fHistPhiITSMIoneSPDInAcc->SetMinimum(0);
938   fOutput->Add(fHistPhiITSMIoneSPDInAcc);
939
940   fHistEtaITSMI6InAcc = new TH1F("fHistEtaITSMI6InAcc","eta distribution of ITSMI6 tracks; #eta; N tracks",100,-1.5,+1.5);
941   fHistEtaITSMI6InAcc->Sumw2();
942   fHistEtaITSMI6InAcc->SetMinimum(0);
943   fOutput->Add(fHistEtaITSMI6InAcc);
944   
945   fHistEtaITSMI5InAcc = new TH1F("fHistEtaITSMI5InAcc","eta distribution of ITSMI5 tracks; #eta; N tracks",100,-1.5,+1.5);
946   fHistEtaITSMI5InAcc->Sumw2();
947   fHistEtaITSMI5InAcc->SetMinimum(0);
948   fOutput->Add(fHistEtaITSMI5InAcc);
949   
950   fHistEtaITSMI4InAcc = new TH1F("fHistEtaITSMI4InAcc","eta distribution of ITSMI4 tracks; #eta; N tracks",100,-1.5,+1.5);
951   fHistEtaITSMI4InAcc->Sumw2();
952   fHistEtaITSMI4InAcc->SetMinimum(0);
953   fOutput->Add(fHistEtaITSMI4InAcc);
954   
955   fHistEtaITSMI3InAcc = new TH1F("fHistEtaITSMI3InAcc","eta distribution of ITSMI3 tracks; #eta; N tracks",100,-1.5,+1.5);
956   fHistEtaITSMI3InAcc->Sumw2();
957   fHistEtaITSMI3InAcc->SetMinimum(0);
958   fOutput->Add(fHistEtaITSMI3InAcc);
959   
960   fHistEtaITSMI2InAcc = new TH1F("fHistEtaITSMI2InAcc","eta distribution of ITSMI2 tracks; #eta; N tracks",100,-1.5,+1.5);
961   fHistEtaITSMI2InAcc->Sumw2();
962   fHistEtaITSMI2InAcc->SetMinimum(0);
963   fOutput->Add(fHistEtaITSMI2InAcc);
964   
965   fHistEtaITSMISPDInAcc = new TH1F("fHistEtaITSMISPDInAcc","eta distribution of ITSMISPD tracks; #eta; N tracks",100,-1.5,+1.5);
966   fHistEtaITSMISPDInAcc->Sumw2();
967   fHistEtaITSMISPDInAcc->SetMinimum(0);
968   fOutput->Add(fHistEtaITSMISPDInAcc);
969   
970   fHistEtaITSMIoneSPDInAcc = new TH1F("fHistEtaITSMIoneSPDInAcc","eta distribution of ITSMISPD tracks; #eta; N tracks",100,-1.5,+1.5);
971   fHistEtaITSMIoneSPDInAcc->Sumw2();
972   fHistEtaITSMIoneSPDInAcc->SetMinimum(0);
973   fOutput->Add(fHistEtaITSMIoneSPDInAcc);
974
975
976   fHistPtITSMI6InAccFake = new TH1F("fHistPtITSMI6InAccFake","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
977   fHistPtITSMI6InAccFake->Sumw2();
978   fHistPtITSMI6InAccFake->SetMinimum(0);
979   fOutput->Add(fHistPtITSMI6InAccFake);
980   
981   fHistPtITSMI5InAccFake = new TH1F("fHistPtITSMI5InAccFake","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
982   fHistPtITSMI5InAccFake->Sumw2();
983   fHistPtITSMI5InAccFake->SetMinimum(0);
984   fOutput->Add(fHistPtITSMI5InAccFake);
985   
986   fHistPtITSMI4InAccFake = new TH1F("fHistPtITSMI4InAccFake","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
987   fHistPtITSMI4InAccFake->Sumw2();
988   fHistPtITSMI4InAccFake->SetMinimum(0);
989   fOutput->Add(fHistPtITSMI4InAccFake);
990   
991   fHistPtITSMI3InAccFake = new TH1F("fHistPtITSMI3InAccFake","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
992   fHistPtITSMI3InAccFake->Sumw2();
993   fHistPtITSMI3InAccFake->SetMinimum(0);
994   fOutput->Add(fHistPtITSMI3InAccFake);
995   
996   fHistPtITSMI2InAccFake = new TH1F("fHistPtITSMI2InAccFake","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
997   fHistPtITSMI2InAccFake->Sumw2();
998   fHistPtITSMI2InAccFake->SetMinimum(0);
999   fOutput->Add(fHistPtITSMI2InAccFake);
1000   
1001   fHistPtITSMISPDInAccFake = new TH1F("fHistPtITSMISPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1002   fHistPtITSMISPDInAccFake->Sumw2();
1003   fHistPtITSMISPDInAccFake->SetMinimum(0);
1004   fOutput->Add(fHistPtITSMISPDInAccFake);
1005   
1006   fHistPtITSMIoneSPDInAccFake = new TH1F("fHistPtITSMIoneSPDInAccFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1007   fHistPtITSMIoneSPDInAccFake->Sumw2();
1008   fHistPtITSMIoneSPDInAccFake->SetMinimum(0);
1009   fOutput->Add(fHistPtITSMIoneSPDInAccFake);
1010
1011   fHistPtITSMIoneSPDthreeSDDSSDInAcc = new TH1F("fHistPtITSMIoneSPDthreeSDDSSDInAcc","pt distribution of ITSMI tracks (>0 in SPD, >2 in SDD+SSD); p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1012   fHistPtITSMIoneSPDthreeSDDSSDInAcc->Sumw2();
1013   fHistPtITSMIoneSPDthreeSDDSSDInAcc->SetMinimum(0);
1014   fOutput->Add(fHistPtITSMIoneSPDthreeSDDSSDInAcc);
1015
1016   fHistPtITSTPCsel = new TH1F("fHistPtITSTPCsel","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1017   fHistPtITSTPCsel->Sumw2();
1018   fHistPtITSTPCsel->SetMinimum(0);
1019   fOutput->Add(fHistPtITSTPCsel);
1020
1021   fHistPtITSTPCselP = new TH1F("fHistPtITSTPCselP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1022   fHistPtITSTPCselP->Sumw2();
1023   fHistPtITSTPCselP->SetMinimum(0);
1024   fOutput->Add(fHistPtITSTPCselP);
1025
1026   fHistPtITSTPCselS = new TH1F("fHistPtITSTPCselS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1027   fHistPtITSTPCselS->Sumw2();
1028   fHistPtITSTPCselS->SetMinimum(0);
1029   fOutput->Add(fHistPtITSTPCselS);
1030
1031   fHistPtITSTPCselFake = new TH1F("fHistPtITSTPCselFake","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1032   fHistPtITSTPCselFake->Sumw2();
1033   fHistPtITSTPCselFake->SetMinimum(0);
1034   fOutput->Add(fHistPtITSTPCselFake);
1035
1036   fHistPtITSTPCselSfromStrange = new TH1F("fHistPtITSTPCselSfromStrange","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1037   fHistPtITSTPCselSfromStrange->Sumw2();
1038   fHistPtITSTPCselSfromStrange->SetMinimum(0);
1039   fOutput->Add(fHistPtITSTPCselSfromStrange);
1040
1041   fHistPtITSTPCselPfromStrange = new TH1F("fHistPtITSTPCselPfromStrange","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1042   fHistPtITSTPCselPfromStrange->Sumw2();
1043   fHistPtITSTPCselPfromStrange->SetMinimum(0);
1044   fOutput->Add(fHistPtITSTPCselPfromStrange);
1045
1046   fHistPtITSTPCselSfromMat = new TH1F("fHistPtITSTPCselSfromMat","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1047   fHistPtITSTPCselSfromMat->Sumw2();
1048   fHistPtITSTPCselSfromMat->SetMinimum(0);
1049   fOutput->Add(fHistPtITSTPCselSfromMat);
1050
1051   fHistPtTPCInAccP = new TH1F("fHistPtTPCInAccP","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1052   fHistPtTPCInAccP->Sumw2();
1053   fHistPtTPCInAccP->SetMinimum(0);
1054   fOutput->Add(fHistPtTPCInAccP);
1055
1056   fHistPtTPCInAccPfromStrange = new TH1F("fHistPtTPCInAccPfromStrange","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1057   fHistPtTPCInAccPfromStrange->Sumw2();
1058   fHistPtTPCInAccPfromStrange->SetMinimum(0);
1059   fOutput->Add(fHistPtTPCInAccPfromStrange);
1060   
1061   fHistPtITSMI6InAccP = new TH1F("fHistPtITSMI6InAccP","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1062   fHistPtITSMI6InAccP->Sumw2();
1063   fHistPtITSMI6InAccP->SetMinimum(0);
1064   fOutput->Add(fHistPtITSMI6InAccP);
1065   
1066   fHistPtITSMI5InAccP = new TH1F("fHistPtITSMI5InAccP","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1067   fHistPtITSMI5InAccP->Sumw2();
1068   fHistPtITSMI5InAccP->SetMinimum(0);
1069   fOutput->Add(fHistPtITSMI5InAccP);
1070   
1071   fHistPtITSMI4InAccP = new TH1F("fHistPtITSMI4InAccP","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1072   fHistPtITSMI4InAccP->Sumw2();
1073   fHistPtITSMI4InAccP->SetMinimum(0);
1074   fOutput->Add(fHistPtITSMI4InAccP);
1075   
1076   fHistPtITSMI3InAccP = new TH1F("fHistPtITSMI3InAccP","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1077   fHistPtITSMI3InAccP->Sumw2();
1078   fHistPtITSMI3InAccP->SetMinimum(0);
1079   fOutput->Add(fHistPtITSMI3InAccP);
1080   
1081   fHistPtITSMI2InAccP = new TH1F("fHistPtITSMI2InAccP","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1082   fHistPtITSMI2InAccP->Sumw2();
1083   fHistPtITSMI2InAccP->SetMinimum(0);
1084   fOutput->Add(fHistPtITSMI2InAccP);
1085   
1086   fHistPtITSMISPDInAccP = new TH1F("fHistPtITSMISPDInAccP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1087   fHistPtITSMISPDInAccP->Sumw2();
1088   fHistPtITSMISPDInAccP->SetMinimum(0);
1089   fOutput->Add(fHistPtITSMISPDInAccP);
1090   
1091   fHistPtITSMIoneSPDInAccP = new TH1F("fHistPtITSMIoneSPDInAccP","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1092   fHistPtITSMIoneSPDInAccP->Sumw2();
1093   fHistPtITSMIoneSPDInAccP->SetMinimum(0);
1094   fOutput->Add(fHistPtITSMIoneSPDInAccP);
1095
1096   fHistPtTPCInAccS = new TH1F("fHistPtTPCInAccS","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1097   fHistPtTPCInAccS->Sumw2();
1098   fHistPtTPCInAccS->SetMinimum(0);
1099   fOutput->Add(fHistPtTPCInAccS);
1100   
1101   fHistPtTPCInAccSfromStrange = new TH1F("fHistPtTPCInAccSfromStrange","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1102   fHistPtTPCInAccSfromStrange->Sumw2();
1103   fHistPtTPCInAccSfromStrange->SetMinimum(0);
1104   fOutput->Add(fHistPtTPCInAccSfromStrange);
1105   
1106   fHistPtTPCInAccSfromMat = new TH1F("fHistPtTPCInAccSfromMat","pt distribution of TPC tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1107   fHistPtTPCInAccSfromMat->Sumw2();
1108   fHistPtTPCInAccSfromMat->SetMinimum(0);
1109   fOutput->Add(fHistPtTPCInAccSfromMat);
1110   
1111   fHistPtITSMI6InAccS = new TH1F("fHistPtITSMI6InAccS","pt distribution of ITSMI6 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1112   fHistPtITSMI6InAccS->Sumw2();
1113   fHistPtITSMI6InAccS->SetMinimum(0);
1114   fOutput->Add(fHistPtITSMI6InAccS);
1115   
1116   fHistPtITSMI5InAccS = new TH1F("fHistPtITSMI5InAccS","pt distribution of ITSMI5 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1117   fHistPtITSMI5InAccS->Sumw2();
1118   fHistPtITSMI5InAccS->SetMinimum(0);
1119   fOutput->Add(fHistPtITSMI5InAccS);
1120   
1121   fHistPtITSMI4InAccS = new TH1F("fHistPtITSMI4InAccS","pt distribution of ITSMI4 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1122   fHistPtITSMI4InAccS->Sumw2();
1123   fHistPtITSMI4InAccS->SetMinimum(0);
1124   fOutput->Add(fHistPtITSMI4InAccS);
1125   
1126   fHistPtITSMI3InAccS = new TH1F("fHistPtITSMI3InAccS","pt distribution of ITSMI3 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1127   fHistPtITSMI3InAccS->Sumw2();
1128   fHistPtITSMI3InAccS->SetMinimum(0);
1129   fOutput->Add(fHistPtITSMI3InAccS);
1130   
1131   fHistPtITSMI2InAccS = new TH1F("fHistPtITSMI2InAccS","pt distribution of ITSMI2 tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1132   fHistPtITSMI2InAccS->Sumw2();
1133   fHistPtITSMI2InAccS->SetMinimum(0);
1134   fOutput->Add(fHistPtITSMI2InAccS);
1135   
1136   fHistPtITSMISPDInAccS = new TH1F("fHistPtITSMISPDInAccS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1137   fHistPtITSMISPDInAccS->Sumw2();
1138   fHistPtITSMISPDInAccS->SetMinimum(0);
1139   fOutput->Add(fHistPtITSMISPDInAccS);
1140   
1141   fHistPtITSMIoneSPDInAccS = new TH1F("fHistPtITSMIoneSPDInAccS","pt distribution of ITSMISPD tracks; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1142   fHistPtITSMIoneSPDInAccS->Sumw2();
1143   fHistPtITSMIoneSPDInAccS->SetMinimum(0);
1144   fOutput->Add(fHistPtITSMIoneSPDInAccS);
1145   
1146   fHistPtITSMIokbadoutinz6 = new TH1F("fHistPtITSMIokbadoutinz6","pt distribution of ITSMI tracks with 6 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1147   fHistPtITSMIokbadoutinz6->Sumw2();
1148   fHistPtITSMIokbadoutinz6->SetMinimum(0);
1149   fOutput->Add(fHistPtITSMIokbadoutinz6);
1150
1151   fHistPtITSMIokbadoutinz4InAcc = new TH1F("fHistPtITSMIokbadoutinz4InAcc","pt distribution of ITSMI tracks with 4 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1152   fHistPtITSMIokbadoutinz4InAcc->Sumw2();
1153   fHistPtITSMIokbadoutinz4InAcc->SetMinimum(0);
1154   fOutput->Add(fHistPtITSMIokbadoutinz4InAcc);
1155
1156   fHistPtITSMIokbadoutinz5InAcc = new TH1F("fHistPtITSMIokbadoutinz5InAcc","pt distribution of ITSMI tracks with 5 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1157   fHistPtITSMIokbadoutinz5InAcc->Sumw2();
1158   fHistPtITSMIokbadoutinz5InAcc->SetMinimum(0);
1159   fOutput->Add(fHistPtITSMIokbadoutinz5InAcc);
1160
1161   fHistPtITSMIokbadoutinz6InAcc = new TH1F("fHistPtITSMIokbadoutinz6InAcc","pt distribution of ITSMI tracks with 6 layers OK; p_{t} [GeV/c]; N tracks",nPtBins,xPtBins);
1162   fHistPtITSMIokbadoutinz6InAcc->Sumw2();
1163   fHistPtITSMIokbadoutinz6InAcc->SetMinimum(0);
1164   fOutput->Add(fHistPtITSMIokbadoutinz6InAcc);
1165
1166   fHistRProdVtxInAccP = new TH1F("fHistRProdVtxInAccP","Radius of production vertex for primaries; r [cm]; N tracks",100,0,10);
1167   fHistRProdVtxInAccP->Sumw2();
1168   fHistRProdVtxInAccP->SetMinimum(0);
1169   fOutput->Add(fHistRProdVtxInAccP);
1170
1171   fHistRProdVtxInAccS = new TH1F("fHistRProdVtxInAccS","Radius of production vertex for secondaries; r [cm]; N tracks",100,0,10);
1172   fHistRProdVtxInAccS->Sumw2();
1173   fHistRProdVtxInAccS->SetMinimum(0);
1174   fOutput->Add(fHistRProdVtxInAccS);
1175   
1176   fHistd0rphiTPCInAccP150200 = new TH1F("fHistd0rphiTPCInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1177   fHistd0rphiTPCInAccP150200->Sumw2();
1178   fHistd0rphiTPCInAccP150200->SetMinimum(0);
1179   fOutput->Add(fHistd0rphiTPCInAccP150200);
1180
1181   fHistd0rphiTPCInAccP500700 = new TH1F("fHistd0rphiTPCInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1182   fHistd0rphiTPCInAccP500700->Sumw2();
1183   fHistd0rphiTPCInAccP500700->SetMinimum(0);
1184   fOutput->Add(fHistd0rphiTPCInAccP500700);
1185
1186   fHistd0rphiTPCInAccP10001500 = new TH1F("fHistd0rphiTPCInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1187   fHistd0rphiTPCInAccP10001500->Sumw2();
1188   fHistd0rphiTPCInAccP10001500->SetMinimum(0);
1189   fOutput->Add(fHistd0rphiTPCInAccP10001500);
1190
1191   fHistd0rphiTPCInAccS150200 = new TH1F("fHistd0rphiTPCInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1192   fHistd0rphiTPCInAccS150200->Sumw2();
1193   fHistd0rphiTPCInAccS150200->SetMinimum(0);
1194   fOutput->Add(fHistd0rphiTPCInAccS150200);
1195
1196   fHistd0rphiTPCInAccS500700 = new TH1F("fHistd0rphiTPCInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1197   fHistd0rphiTPCInAccS500700->Sumw2();
1198   fHistd0rphiTPCInAccS500700->SetMinimum(0);
1199   fOutput->Add(fHistd0rphiTPCInAccS500700);
1200
1201   fHistd0rphiTPCInAccS10001500 = new TH1F("fHistd0rphiTPCInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-5,5);
1202   fHistd0rphiTPCInAccS10001500->Sumw2();
1203   fHistd0rphiTPCInAccS10001500->SetMinimum(0);
1204   fOutput->Add(fHistd0rphiTPCInAccS10001500);
1205
1206   fHistd0rphiITSMISPDInAccP150200 = new TH1F("fHistd0rphiITSMISPDInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1207   fHistd0rphiITSMISPDInAccP150200->Sumw2();
1208   fHistd0rphiITSMISPDInAccP150200->SetMinimum(0);
1209   fOutput->Add(fHistd0rphiITSMISPDInAccP150200);
1210
1211   fHistd0rphiITSMISPDInAccP500700 = new TH1F("fHistd0rphiITSMISPDInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1212   fHistd0rphiITSMISPDInAccP500700->Sumw2();
1213   fHistd0rphiITSMISPDInAccP500700->SetMinimum(0);
1214   fOutput->Add(fHistd0rphiITSMISPDInAccP500700);
1215
1216   fHistd0rphiITSMISPDInAccP10001500 = new TH1F("fHistd0rphiITSMISPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1217   fHistd0rphiITSMISPDInAccP10001500->Sumw2();
1218   fHistd0rphiITSMISPDInAccP10001500->SetMinimum(0);
1219   fOutput->Add(fHistd0rphiITSMISPDInAccP10001500);
1220
1221   fHistd0rphiITSMISPDInAccS150200 = new TH1F("fHistd0rphiITSMISPDInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1222   fHistd0rphiITSMISPDInAccS150200->Sumw2();
1223   fHistd0rphiITSMISPDInAccS150200->SetMinimum(0);
1224   fOutput->Add(fHistd0rphiITSMISPDInAccS150200);
1225
1226   fHistd0rphiITSMISPDInAccS500700 = new TH1F("fHistd0rphiITSMISPDInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1227   fHistd0rphiITSMISPDInAccS500700->Sumw2();
1228   fHistd0rphiITSMISPDInAccS500700->SetMinimum(0);
1229   fOutput->Add(fHistd0rphiITSMISPDInAccS500700);
1230
1231   fHistd0rphiITSMISPDInAccS10001500 = new TH1F("fHistd0rphiITSMISPDInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1232   fHistd0rphiITSMISPDInAccS10001500->Sumw2();
1233   fHistd0rphiITSMISPDInAccS10001500->SetMinimum(0);
1234   fOutput->Add(fHistd0rphiITSMISPDInAccS10001500);
1235
1236   fHistd0rphiITSMIoneSPDInAccP150200 = new TH1F("fHistd0rphiITSMIoneSPDInAccP150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1237   fHistd0rphiITSMIoneSPDInAccP150200->Sumw2();
1238   fHistd0rphiITSMIoneSPDInAccP150200->SetMinimum(0);
1239   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP150200);
1240
1241   fHistd0rphiITSMIoneSPDInAccP350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccP350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1242   fHistd0rphiITSMIoneSPDInAccP350450->Sumw2();
1243   fHistd0rphiITSMIoneSPDInAccP350450->SetMinimum(0);
1244   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP350450);
1245
1246   fHistd0rphiITSMIoneSPDInAccP500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccP500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1247   fHistd0rphiITSMIoneSPDInAccP500700->Sumw2();
1248   fHistd0rphiITSMIoneSPDInAccP500700->SetMinimum(0);
1249   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP500700);
1250
1251   fHistd0rphiITSMIoneSPDInAccP10001500 = new TH1F("fHistd0rphiITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1252   fHistd0rphiITSMIoneSPDInAccP10001500->Sumw2();
1253   fHistd0rphiITSMIoneSPDInAccP10001500->SetMinimum(0);
1254   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP10001500);
1255
1256   fHistd0rphiITSMIoneSPDInAccP25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1257   fHistd0rphiITSMIoneSPDInAccP25004000->Sumw2();
1258   fHistd0rphiITSMIoneSPDInAccP25004000->SetMinimum(0);
1259   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP25004000);
1260
1261   fHistd0rphiITSMIoneSPDInAccP40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccP40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1262   fHistd0rphiITSMIoneSPDInAccP40008000->Sumw2();
1263   fHistd0rphiITSMIoneSPDInAccP40008000->SetMinimum(0);
1264   fOutput->Add(fHistd0rphiITSMIoneSPDInAccP40008000);
1265
1266   fHistd0zITSMIoneSPDInAccP150200 = new TH1F("fHistd0zITSMIoneSPDInAccP150200","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1267   fHistd0zITSMIoneSPDInAccP150200->Sumw2();
1268   fHistd0zITSMIoneSPDInAccP150200->SetMinimum(0);
1269   fOutput->Add(fHistd0zITSMIoneSPDInAccP150200);
1270
1271   fHistd0zITSMIoneSPDInAccP500700 = new TH1F("fHistd0zITSMIoneSPDInAccP500700","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1272   fHistd0zITSMIoneSPDInAccP500700->Sumw2();
1273   fHistd0zITSMIoneSPDInAccP500700->SetMinimum(0);
1274   fOutput->Add(fHistd0zITSMIoneSPDInAccP500700);
1275
1276   fHistd0zITSMIoneSPDInAccP10001500 = new TH1F("fHistd0zITSMIoneSPDInAccP10001500","Longitudinal imp. par. to VertexTracks for primaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1277   fHistd0zITSMIoneSPDInAccP10001500->Sumw2();
1278   fHistd0zITSMIoneSPDInAccP10001500->SetMinimum(0);
1279   fOutput->Add(fHistd0zITSMIoneSPDInAccP10001500);
1280
1281   fHistd0zVSetaTPCInAccP10001500 = new TH2F("fHistd0zVSetaTPCInAccP10001500","Long. imp. par. to VertexSPD for TPC tracks; d_{0} z [cm]; eta",100,-4,4,10,-1,1);
1282   fOutput->Add(fHistd0zVSetaTPCInAccP10001500);
1283
1284   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);
1285   fOutput->Add(fHistd0rphiVSphiITSMIoneSPDInAccP10001500);
1286
1287   fHistd0rphiVSetaITSMIoneSPDInAccP10001500 = new TH2F("fHistd0rphiVSetaITSMIoneSPDInAccP10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; eta",30,-0.3,0.3,10,-1,1);
1288   fOutput->Add(fHistd0rphiVSetaITSMIoneSPDInAccP10001500);
1289
1290   fHistd0rphiITSMIoneSPDInAccS150200 = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1291   fHistd0rphiITSMIoneSPDInAccS150200->Sumw2();
1292   fHistd0rphiITSMIoneSPDInAccS150200->SetMinimum(0);
1293   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200);
1294
1295   fHistd0rphiITSMIoneSPDInAccS350450 = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1296   fHistd0rphiITSMIoneSPDInAccS350450->Sumw2();
1297   fHistd0rphiITSMIoneSPDInAccS350450->SetMinimum(0);
1298   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450);
1299
1300   fHistd0rphiITSMIoneSPDInAccS500700 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1301   fHistd0rphiITSMIoneSPDInAccS500700->Sumw2();
1302   fHistd0rphiITSMIoneSPDInAccS500700->SetMinimum(0);
1303   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700);
1304
1305   fHistd0rphiITSMIoneSPDInAccS500700from22 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from22","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1306   fHistd0rphiITSMIoneSPDInAccS500700from22->Sumw2();
1307   fHistd0rphiITSMIoneSPDInAccS500700from22->SetMinimum(0);
1308   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from22);
1309
1310   fHistd0rphiITSMIoneSPDInAccS500700from211 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from211","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1311   fHistd0rphiITSMIoneSPDInAccS500700from211->Sumw2();
1312   fHistd0rphiITSMIoneSPDInAccS500700from211->SetMinimum(0);
1313   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from211);
1314
1315   fHistd0rphiITSMIoneSPDInAccS500700from310 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from310","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1316   fHistd0rphiITSMIoneSPDInAccS500700from310->Sumw2();
1317   fHistd0rphiITSMIoneSPDInAccS500700from310->SetMinimum(0);
1318   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from310);
1319
1320   fHistd0rphiITSMIoneSPDInAccS500700from321 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from321","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1321   fHistd0rphiITSMIoneSPDInAccS500700from321->Sumw2();
1322   fHistd0rphiITSMIoneSPDInAccS500700from321->SetMinimum(0);
1323   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from321);
1324
1325   fHistd0rphiITSMIoneSPDInAccS500700from3122 = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700from3122","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1326   fHistd0rphiITSMIoneSPDInAccS500700from3122->Sumw2();
1327   fHistd0rphiITSMIoneSPDInAccS500700from3122->SetMinimum(0);
1328   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700from3122);
1329
1330   fHistd0rphiITSMIoneSPDInAccS10001500 = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1331   fHistd0rphiITSMIoneSPDInAccS10001500->Sumw2();
1332   fHistd0rphiITSMIoneSPDInAccS10001500->SetMinimum(0);
1333   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500);
1334
1335   fHistd0rphiITSMIoneSPDInAccS25004000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1336   fHistd0rphiITSMIoneSPDInAccS25004000->Sumw2();
1337   fHistd0rphiITSMIoneSPDInAccS25004000->SetMinimum(0);
1338   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000);
1339
1340   fHistd0rphiITSMIoneSPDInAccS40008000 = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1341   fHistd0rphiITSMIoneSPDInAccS40008000->Sumw2();
1342   fHistd0rphiITSMIoneSPDInAccS40008000->SetMinimum(0);
1343   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000);
1344
1345   fHistd0rphiITSMIoneSPDInAccS150200fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1346   fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Sumw2();
1347   fHistd0rphiITSMIoneSPDInAccS150200fromStrange->SetMinimum(0);
1348   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromStrange);
1349
1350   fHistd0rphiITSMIoneSPDInAccS150200fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS150200fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1351   fHistd0rphiITSMIoneSPDInAccS150200fromMat->Sumw2();
1352   fHistd0rphiITSMIoneSPDInAccS150200fromMat->SetMinimum(0);
1353   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS150200fromMat);
1354
1355   fHistd0rphiITSMIoneSPDInAccS350450fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1356   fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Sumw2();
1357   fHistd0rphiITSMIoneSPDInAccS350450fromStrange->SetMinimum(0);
1358   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromStrange);
1359
1360   fHistd0rphiITSMIoneSPDInAccS350450fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS350450fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1361   fHistd0rphiITSMIoneSPDInAccS350450fromMat->Sumw2();
1362   fHistd0rphiITSMIoneSPDInAccS350450fromMat->SetMinimum(0);
1363   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS350450fromMat);
1364
1365   fHistd0rphiITSMIoneSPDInAccS500700fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1366   fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Sumw2();
1367   fHistd0rphiITSMIoneSPDInAccS500700fromStrange->SetMinimum(0);
1368   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromStrange);
1369
1370   fHistd0rphiITSMIoneSPDInAccS500700fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS500700fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1371   fHistd0rphiITSMIoneSPDInAccS500700fromMat->Sumw2();
1372   fHistd0rphiITSMIoneSPDInAccS500700fromMat->SetMinimum(0);
1373   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS500700fromMat);
1374
1375   fHistd0rphiITSMIoneSPDInAccS10001500fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1376   fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Sumw2();
1377   fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->SetMinimum(0);
1378   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromStrange);
1379
1380   fHistd0rphiITSMIoneSPDInAccS10001500fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS10001500fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1381   fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Sumw2();
1382   fHistd0rphiITSMIoneSPDInAccS10001500fromMat->SetMinimum(0);
1383   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS10001500fromMat);
1384
1385   fHistd0rphiITSMIoneSPDInAccS25004000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1386   fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Sumw2();
1387   fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->SetMinimum(0);
1388   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromStrange);
1389
1390   fHistd0rphiITSMIoneSPDInAccS25004000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS25004000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1391   fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Sumw2();
1392   fHistd0rphiITSMIoneSPDInAccS25004000fromMat->SetMinimum(0);
1393   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS25004000fromMat);
1394
1395   fHistd0rphiITSMIoneSPDInAccS40008000fromStrange = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromStrange","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1396   fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Sumw2();
1397   fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->SetMinimum(0);
1398   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromStrange);
1399
1400   fHistd0rphiITSMIoneSPDInAccS40008000fromMat = new TH1F("fHistd0rphiITSMIoneSPDInAccS40008000fromMat","Transverse imp. par. to VertexTracks for primaries; d_{0} rphi [cm]; N tracks",300,-1.5,1.5);
1401   fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Sumw2();
1402   fHistd0rphiITSMIoneSPDInAccS40008000fromMat->SetMinimum(0);
1403   fOutput->Add(fHistd0rphiITSMIoneSPDInAccS40008000fromMat);
1404
1405   
1406   fHistd0zITSMIoneSPDInAccS150200 = new TH1F("fHistd0zITSMIoneSPDInAccS150200","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1407   fHistd0zITSMIoneSPDInAccS150200->Sumw2();
1408   fHistd0zITSMIoneSPDInAccS150200->SetMinimum(0);
1409   fOutput->Add(fHistd0zITSMIoneSPDInAccS150200);
1410
1411   fHistd0zITSMIoneSPDInAccS500700 = new TH1F("fHistd0zITSMIoneSPDInAccS500700","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1412   fHistd0zITSMIoneSPDInAccS500700->Sumw2();
1413   fHistd0zITSMIoneSPDInAccS500700->SetMinimum(0);
1414   fOutput->Add(fHistd0zITSMIoneSPDInAccS500700);
1415
1416   fHistd0zITSMIoneSPDInAccS10001500 = new TH1F("fHistd0zITSMIoneSPDInAccS10001500","Longitudinal imp. par. to VertexTracks for secondaries; d_{0} z [cm]; N tracks",300,-1.5,1.5);
1417   fHistd0zITSMIoneSPDInAccS10001500->Sumw2();
1418   fHistd0zITSMIoneSPDInAccS10001500->SetMinimum(0);
1419   fOutput->Add(fHistd0zITSMIoneSPDInAccS10001500);
1420
1421   fHistITSRedChi2NonFakePt02 = new TH1F("fHistITSRedChi2NonFakePt02","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1422   fOutput->Add(fHistITSRedChi2NonFakePt02);
1423   fHistITSRedChi2FakePt02 = new TH1F("fHistITSRedChi2FakePt02","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1424   fOutput->Add(fHistITSRedChi2FakePt02);
1425   fHistITSRedChi2NonFakePt05 = new TH1F("fHistITSRedChi2NonFakePt05","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1426   fOutput->Add(fHistITSRedChi2NonFakePt05);
1427   fHistITSRedChi2FakePt05 = new TH1F("fHistITSRedChi2FakePt05","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1428   fOutput->Add(fHistITSRedChi2FakePt05);
1429   fHistITSRedChi2NonFakePt1 = new TH1F("fHistITSRedChi2NonFakePt1","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1430   fOutput->Add(fHistITSRedChi2NonFakePt1);
1431   fHistITSRedChi2FakePt1 = new TH1F("fHistITSRedChi2FakePt1","ITS chi2/cluster; ITS #chi^{2}/nclusters; tracks",500,0,100);
1432   fOutput->Add(fHistITSRedChi2FakePt1);
1433
1434
1435   // ntuples
1436   //
1437   fNtupleESDTracks = new TNtuple("fNtupleESDTracks","tracks","pt:eta:phi:d0:z0:sigmad0:sigmaz0:ptMC:pdgMC:pdgMCMoth:d0MC:d0MCv:z0MCv:sigmad0MCv:sigmaz0MCv:ITSflag:isPrimary:isTPCSel");  
1438   fOutput->Add(fNtupleESDTracks);
1439
1440   fNtupleITSAlignExtra = new TNtuple("fNtupleITSAlignExtra","ITS alignment checks: extra clusters","layer:x:y:z:dxy:dz:xloc:zloc:npoints:pt");  
1441   fOutput->Add(fNtupleITSAlignExtra);
1442
1443   fNtupleITSAlignSPDTracklets = new TNtuple("fNtupleITSAlignSPDTracklets","ITS alignment checks: SPD tracklets wrt SPD vertex","phi:theta:z:dxy:dz:pt");  
1444   fOutput->Add(fNtupleITSAlignSPDTracklets);
1445
1446   return;
1447 }
1448
1449 //________________________________________________________________________
1450 void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *) 
1451 {
1452   // Main loop
1453   // Called for each event
1454
1455   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
1456
1457   if (!fESD) {
1458     Printf("ERROR: fESD not available");
1459     return;
1460   }
1461
1462   // only events in the requested multiplicity range
1463   if(!IsSelectedCentrality()) return;
1464
1465   fHistNEvents->Fill(-1);
1466
1467
1468   Bool_t isSelected = kTRUE;
1469   if(fUsePhysSel) {
1470     isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1471   }
1472   if(!isSelected) return;
1473
1474   
1475   //if(fESD->GetEventType()!=7) return;
1476
1477   // ***********  MC info ***************
1478   TArrayF mcVertex(3);
1479   mcVertex[0]=9999.; mcVertex[1]=9999.; mcVertex[2]=9999.;
1480   Float_t dNchdy=-999.;
1481
1482   TParticle *part=0;
1483   AliESDVertex *vertexMC=0;
1484   AliStack *stack=0;
1485   if (fReadMC) {
1486     AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1487     if (!eventHandler) {
1488       Printf("ERROR: Could not retrieve MC event handler");
1489       return;
1490     }
1491     
1492     AliMCEvent* mcEvent = eventHandler->MCEvent();
1493     if (!mcEvent) {
1494       Printf("ERROR: Could not retrieve MC event");
1495       return;
1496     }
1497     
1498     stack = mcEvent->Stack();
1499     if (!stack) {
1500       AliDebug(AliLog::kError, "Stack not available");
1501       return;
1502     }
1503     
1504     AliHeader* header = mcEvent->Header();
1505     if (!header) {
1506       AliDebug(AliLog::kError, "Header not available");
1507       return;
1508     }
1509     AliGenEventHeader* genHeader = header->GenEventHeader();
1510     genHeader->PrimaryVertex(mcVertex);
1511     //printf("MC vertex: %f %f %f\n",mcVertex[0],mcVertex[1],mcVertex[2]);
1512
1513     Int_t ngenpart = (Int_t)stack->GetNtrack();
1514     //printf("# generated particles = %d\n",ngenpart);
1515     dNchdy=0;
1516     for(Int_t ip=0; ip<ngenpart; ip++) {
1517       part = (TParticle*)stack->Particle(ip);
1518       // keep only electrons, muons, pions, kaons and protons
1519       Int_t apdg = TMath::Abs(part->GetPdgCode());
1520       if(apdg!=11 && apdg!=13 && apdg!=211 && apdg!=321 && apdg!=2212) continue;      
1521       // reject secondaries
1522       //if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))<.01) printf("%f\n",TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1])));
1523       if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))>0.0010) continue;
1524       // reject incoming protons
1525       Double_t energy  = part->Energy();
1526       if(energy>900.) continue;
1527       Double_t pz = part->Pz();
1528       Double_t y = 0.5*TMath::Log((energy+pz+1.e-13)/(energy-pz+1.e-13));
1529       if(TMath::Abs(y)<1.0) dNchdy += 0.5; // count 1/2 of particles in |y|<1
1530     }
1531     //printf("# primary particles = %7.1f\n",dNchdy);
1532   } 
1533   // ***********  MC info ***************
1534   Double_t mcVtxPos[3]={mcVertex[0],mcVertex[1],mcVertex[2]},mcVtxSigma[3]={0,0,0};
1535   vertexMC = new AliESDVertex(mcVtxPos,mcVtxSigma);
1536
1537
1538
1539   //------- event selection --------
1540   Int_t   mincontrSPDvtx=1;
1541   Double_t maxzSPDvtx=20.;
1542   Double_t maxrSPDvtx=0.5;
1543   Bool_t useTRKvtx=kTRUE;
1544   Bool_t useSPDvtxifNotTRK=kTRUE;
1545   Int_t   mincontrTRKvtx=1;
1546   //Double_t maxzTRKvtx=20.;
1547   //Double_t maxrTRKvtx=1.;
1548   //------- TPC track selection --------
1549   Int_t    minclsTPC=90;
1550   Double_t maxchi2perTPCcl=4.;
1551   Double_t minEtaInAcc=-0.8; // -0.8
1552   Double_t maxEtaInAcc=0.8; // 0.8
1553   Double_t maxdcaxy=2.4;//2.4;
1554   Double_t maxdcaz=3.2;//3.2;
1555   AliESDtrackCuts* esdtrackCutsTPC = new AliESDtrackCuts("esdtrackCutsTPC");
1556   esdtrackCutsTPC->SetMaxDCAToVertexXY(maxdcaxy);
1557   esdtrackCutsTPC->SetMaxDCAToVertexZ(maxdcaz);
1558   esdtrackCutsTPC->SetDCAToVertex2D(kTRUE);
1559   esdtrackCutsTPC->SetRequireSigmaToVertex(kFALSE);
1560   esdtrackCutsTPC->SetRequireTPCRefit(kFALSE);// cannot do it because status not copied in AliESDtrack::FillTPCOnlyTrack
1561   esdtrackCutsTPC->SetAcceptKinkDaughters(kFALSE);
1562   esdtrackCutsTPC->SetMinNClustersTPC(minclsTPC);
1563   esdtrackCutsTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1564   esdtrackCutsTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1565   SetESDtrackCutsTPC(esdtrackCutsTPC);
1566   //------- ITS+TPC track selection --------
1567   Double_t maxdcaxyITSTPC=0.2;
1568   Double_t maxdcazITSTPC=1.e6;
1569   AliESDtrackCuts* esdtrackCutsITSTPC = new AliESDtrackCuts("esdtrackCutsITSTPC");
1570   esdtrackCutsITSTPC->SetMaxDCAToVertexXY(maxdcaxyITSTPC);
1571   esdtrackCutsITSTPC->SetMaxDCAToVertexZ(maxdcazITSTPC);
1572   esdtrackCutsITSTPC->SetDCAToVertex2D(kFALSE);
1573   esdtrackCutsITSTPC->SetRequireSigmaToVertex(kFALSE);
1574   esdtrackCutsITSTPC->SetRequireITSRefit(kTRUE);
1575   esdtrackCutsITSTPC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1576                                                AliESDtrackCuts::kAny);
1577   esdtrackCutsITSTPC->SetAcceptKinkDaughters(kFALSE);
1578   esdtrackCutsITSTPC->SetMinNClustersTPC(minclsTPC);
1579   esdtrackCutsITSTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1580   esdtrackCutsITSTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1581   SetESDtrackCutsITSTPC(esdtrackCutsITSTPC);
1582   //---------------------------------------
1583   
1584
1585   //
1586   
1587   /*  
1588   // **********  Trigger *****************
1589   ULong64_t triggerMask;
1590   ULong64_t spdFO = (1 << 14);
1591   ULong64_t v0left = (1 << 11);
1592   ULong64_t v0right = (1 << 12);
1593   
1594   triggerMask=fESD->GetTriggerMask();
1595   // MB1: SPDFO || V0L || V0R
1596   Bool_t eventTriggered = (triggerMask & spdFO || ((triggerMask & v0left) || (triggerMask & v0right))); 
1597   //MB2: GFO && V0R
1598   //triggerMask & spdFO && ((triggerMask&v0left) || (triggerMask&v0right))
1599   // ************ Trigger ******************
1600   if(!eventTriggered) return;
1601   */
1602
1603
1604   fHistNEvents->Fill(0);
1605
1606   // SPD vertex
1607   const AliESDVertex *spdv=fESD->GetPrimaryVertexSPD();
1608   // Select good SPD vertices
1609   TString spdvtitle=spdv->GetTitle();
1610   //if(!spdvtitle.Contains("3D")) return;
1611   if(spdv->GetNContributors()<mincontrSPDvtx ||
1612      TMath::Abs(spdv->GetZv())>maxzSPDvtx ||  
1613      spdv->GetXv()*spdv->GetXv()+spdv->GetYv()*spdv->GetYv()>maxrSPDvtx) {
1614     delete esdtrackCutsTPC; esdtrackCutsTPC=0;
1615     delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
1616     return;
1617   }
1618   spdv->Print();
1619
1620   //
1621   // Tracks vertex
1622   const AliESDVertex *vertexESD = fESD->GetPrimaryVertexTracks();
1623   vertexESD->Print();
1624
1625   if(spdvtitle.Contains("3D")) {
1626     fHistNEvents->Fill(1);
1627     fHistNEvents->Fill(3);
1628   } else {
1629     fHistNEvents->Fill(2);
1630     fHistNEvents->Fill(3);
1631   }
1632   if(vertexESD) {
1633     if(vertexESD->GetStatus()) fHistNEvents->Fill(4);
1634   }
1635
1636   Int_t ntracks = fESD->GetNumberOfTracks();
1637   //printf("Tracks # = %d\n",fESD->GetNumberOfTracks());
1638
1639   fHistNtracks->Fill(ntracks);
1640   // Post the data already here
1641   PostData(1, fOutput);
1642
1643   Int_t idet,status; Float_t xloc,zloc;
1644   Double_t rSPDouter=7.6,rSDDouter=23.9,rSSDouter=43.1;  
1645   Double_t zSPDouter=14.1,zSDDouter=29.7,zSSDouter=48.9;  
1646
1647   // loop on tracks
1648   for(Int_t itr=0; itr<ntracks; itr++) {
1649     AliESDtrack *track = fESD->GetTrack(itr);
1650     //if(track->Charge()>0) continue;
1651     // remove kink daughters
1652     if(track->GetKinkIndex(0)>0) continue;
1653
1654     // remove tracks not reco in ITS or TPC
1655     if (!(track->GetStatus() & AliESDtrack::kITSin) &&
1656         !(track->GetStatus() & AliESDtrack::kTPCin)) continue;
1657
1658     Bool_t isPrimary=kTRUE,isFromMat=kFALSE,isFromStrange=kFALSE;
1659     Double_t rProdVtx=0,zProdVtx=0;
1660     Int_t pdgTrk=0,pdgMoth=0;
1661     Int_t nClsMCSPD=0;
1662   
1663     Int_t trkLabel = TMath::Abs(track->GetLabel());
1664     Bool_t isFake=(track->GetLabel()>=0 ? kFALSE : kTRUE);
1665     // check if it is primary
1666     if(fReadMC && stack) {
1667       isPrimary = stack->IsPhysicalPrimary(trkLabel);
1668       part = (TParticle*)stack->Particle(trkLabel);
1669       rProdVtx = TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]));
1670       zProdVtx = TMath::Abs(part->Vz()-mcVertex[2]);
1671       //if(rProdVtx<2.8) isPrimary=kTRUE; // this could be tried
1672       pdgTrk = TMath::Abs(part->GetPdgCode());
1673       if(part->GetFirstMother()>=0) {
1674         TParticle* mm=stack->Particle(part->GetFirstMother());
1675         if(mm) pdgMoth = TMath::Abs(mm->GetPdgCode());
1676       }
1677       if(pdgMoth==310 || pdgMoth==321 || pdgMoth==3122 || pdgMoth==3312) isFromStrange=kTRUE;
1678       if(pdgMoth==211 || pdgMoth==22 || pdgMoth==2112 || pdgMoth==2212) isFromMat=kTRUE;
1679       nClsMCSPD = NumberOfITSClustersMC(trkLabel,240);
1680     }
1681
1682     Bool_t itsrefit=kFALSE,tpcrefit=kFALSE,itsfindable=kFALSE,itsfindableAcc=kFALSE;
1683     if ((track->GetStatus() & AliESDtrack::kITSrefit)) itsrefit=kTRUE;
1684     if ((track->GetStatus() & AliESDtrack::kTPCrefit)) tpcrefit=kTRUE;
1685     //if ((track->GetStatus() & AliESDtrack::kTPCin)) tpcrefit=kTRUE;
1686
1687     // remove tracks with kTPCin and not kTPCrefit 
1688     if ((track->GetStatus() & AliESDtrack::kTPCin) && !tpcrefit) continue;
1689
1690     AliESDtrack *trackTPC = 0;
1691     if(tpcrefit) trackTPC = AliESDtrackCuts::GetTPCOnlyTrack(fESD,itr);
1692     if(trackTPC) trackTPC->RelateToVertex(spdv,fESD->GetMagneticField(),100.); // relate it to the SPD vertex
1693    
1694
1695     Int_t nclsITS = track->GetNcls(0);
1696     Int_t nclsSDDSSD = 0;
1697     Int_t nclsokbadoutinzITS = 0;
1698     Bool_t outInZ=kFALSE;
1699     Bool_t skipTrack=kFALSE;
1700
1701     for(Int_t layer=0; layer<6; layer++) {
1702       if(layer>=2 && track->HasPointOnITSLayer(layer)) nclsSDDSSD++;
1703       if(layer==0 && !track->HasPointOnITSLayer(1)) continue;
1704       if(layer==1 && !track->HasPointOnITSLayer(0)) continue;
1705       track->GetITSModuleIndexInfo(layer,idet,status,xloc,zloc);
1706       if(status<0) continue;
1707       if(layer>=2) idet+=240; // add n SPD modules
1708       if(layer>=4) idet+=260; // add n SDD modules
1709       if(status==4) outInZ=kTRUE;
1710       
1711       if(layer==1 && tpcrefit && itsrefit) {
1712         Double_t xyz[3];
1713         track->GetXYZAt(rSPDouter,fESD->GetMagneticField(),xyz);
1714         if(status==1) {
1715           if(idet%4==0) fHistZatSPDouter0ok->Fill(xyz[2]);
1716           if(idet%4==1) fHistZatSPDouter1ok->Fill(xyz[2]);
1717           if(idet%4==2) fHistZatSPDouter2ok->Fill(xyz[2]);
1718           if(idet%4==3) fHistZatSPDouter3ok->Fill(xyz[2]);
1719         }
1720         if(status==2 || status==5) {
1721           if(idet%4==0) fHistZatSPDouter0notok->Fill(xyz[2]);
1722           if(idet%4==1) fHistZatSPDouter1notok->Fill(xyz[2]);
1723           if(idet%4==2) fHistZatSPDouter2notok->Fill(xyz[2]);
1724           if(idet%4==3) fHistZatSPDouter3notok->Fill(xyz[2]);
1725         }
1726       }
1727       // kill SDD clusters in MC
1728       if(fReadMC && (layer==2 || layer==3)) {
1729         Double_t qITS[4]; track->GetITSdEdxSamples(qITS);
1730         Double_t conv=3.34/5.43; 
1731         if(layer==2 && status==1 && qITS[0]*conv < 30.) status=5;
1732         if(layer==3 && status==1 && qITS[1]*conv < 30.) status=5;
1733       }
1734       if(tpcrefit) {
1735         if(trackTPC) if(!fESDtrackCutsTPC->AcceptTrack(trackTPC)) continue;
1736         if(status==1) fHistClusterMapITSMIok->Fill(layer);
1737         if(status==2) fHistClusterMapITSMIbad->Fill(layer);
1738         if(status==3) fHistClusterMapITSMIskipped->Fill(layer);
1739         if(status==4) fHistClusterMapITSMIoutinz->Fill(layer);
1740         if(status==5) fHistClusterMapITSMInocls->Fill(layer);
1741         if(status==6) fHistClusterMapITSMInorefit->Fill(layer);
1742         if(status==1 && !outInZ) fHistClusterMapModuleITSMIokInAcc->Fill(idet);
1743         if((status==2 || status==7) && !outInZ) fHistClusterMapModuleITSMIbadInAcc->Fill(idet);
1744         if(status==5 && !outInZ) fHistClusterMapModuleITSMInoclsInAcc->Fill(idet);
1745         if(status==1 || status==2 || status==4) {
1746           fHistClusterMapITSMIokoutinzbad->Fill(layer);
1747           nclsokbadoutinzITS++;
1748         }
1749         /*if(idet>=80 && idet<120) {
1750           Double_t xyz[3];
1751           track->GetXYZAt(6.8,fESD->GetMagneticField(),xyz);
1752           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);
1753           }*/
1754         if((layer==2 || layer==3) && status!=2 && status!=4) {
1755           //Float_t xlocCls;
1756           //Int_t nClsInMod = NumberOfITSClusters(idet,xlocCls);
1757           fHistxlocSDDall->Fill(xloc);
1758           fHistzlocSDDall->Fill(zloc);
1759           if(status==1  /*nClsInMod>0*/) {
1760             fHistxlocSDDok->Fill(xloc);
1761             fHistxlocVSmodSDDok->Fill(idet,xloc);
1762             fHistzlocSDDok->Fill(zloc);
1763           }     
1764         }
1765       } else {
1766         if(status==1) fHistClusterMapITSSAok->Fill(layer);
1767         if(status==2) fHistClusterMapITSSAbad->Fill(layer);
1768         if(status==3) fHistClusterMapITSSAskipped->Fill(layer);
1769         if(status==4) fHistClusterMapITSSAoutinz->Fill(layer);
1770         if(status==5) fHistClusterMapITSSAnocls->Fill(layer);
1771         if(status==6) fHistClusterMapITSSAnorefit->Fill(layer);
1772         if(status==1 || status==2 || status==4) fHistClusterMapITSSAokoutinzbad->Fill(layer);
1773         if(status==1 && !outInZ) {fHistClusterMapITSSAokInAcc->Fill(layer);fHistClusterMapModuleITSSAokInAcc->Fill(idet);}
1774         if((status==2 || status==7) && !outInZ) {fHistClusterMapITSSAbadInAcc->Fill(layer);fHistClusterMapModuleITSSAbadInAcc->Fill(idet);}
1775         if(status==3 && !outInZ) fHistClusterMapITSSAskippedInAcc->Fill(layer);
1776         if(status==4 && !outInZ) fHistClusterMapITSSAoutinzInAcc->Fill(layer);
1777         if(status==5 && !outInZ) {fHistClusterMapITSSAnoclsInAcc->Fill(layer);fHistClusterMapModuleITSSAnoclsInAcc->Fill(idet);}
1778         if(status==6 && !outInZ) fHistClusterMapITSSAnorefitInAcc->Fill(layer);
1779         if((status==1 || status==2 || status==4) && !outInZ) fHistClusterMapITSSAokoutinzbadInAcc->Fill(layer);
1780       }
1781       if(TESTBIT(track->GetITSClusterMap(),layer)) {
1782         if(tpcrefit) {
1783           fHistClusterMapITSMI->Fill(layer);
1784         } else {
1785           fHistClusterMapITSSA->Fill(layer);
1786           if(!outInZ) fHistClusterMapITSSAInAcc->Fill(layer);
1787         }
1788       }
1789       /*    
1790       // SKIP SDD MODULES LOW EFF
1791       if(
1792          idet==246 ||
1793          idet==247 ||
1794          idet==256 ||
1795          idet==261 ||
1796          idet==267 ||
1797          idet==333 ||
1798          idet==343 ||
1799          idet==346 ||
1800          idet==349 ||
1801          idet==376 ||
1802          idet==390 ||
1803          idet==392 ||
1804          idet==409 ||
1805          idet==411 ||
1806          idet==464 ||
1807          idet==468 ||
1808          idet==474 ||
1809          idet==469
1810          ) 
1811         skipTrack=kTRUE;
1812       */
1813          /*
1814       if(
1815          idet==245
1816          || idet==248
1817          || idet==253
1818          || idet==264
1819          || idet==276
1820          || idet==286
1821          || idet==287
1822          || idet==292
1823          || idet==295
1824          || idet==302
1825          || idet==305
1826          || idet==307
1827          || idet==315
1828          || idet==320
1829          || idet==330
1830          || idet==331
1831          || idet==341
1832          || idet==357
1833          || idet==368
1834          || idet==376
1835          || idet==377
1836          || idet==378
1837          || idet==379
1838          || idet==380
1839          || idet==381
1840          || idet==382
1841          || idet==383
1842          || idet==422
1843          || idet==444
1844          || idet==445
1845          || idet==450
1846          || idet==451
1847          || idet==452
1848          || idet==453
1849          || idet==455
1850          || idet==459
1851          || idet==469
1852          || idet==485
1853          || idet==493
1854          || idet==494
1855          || idet==495
1856          || idet==496
1857          || idet==497
1858          || idet==498
1859          || idet==499
1860          ) skipTrack=kTRUE;
1861       // SKIP SDD MODULES LOW EFF
1862       */
1863     }  
1864     if(skipTrack) {delete trackTPC; trackTPC=0; continue;}
1865
1866     // TPC track findable in ITS
1867     if(tpcrefit && trackTPC) { 
1868       if(fESDtrackCutsTPC->AcceptTrack(trackTPC)) {
1869         itsfindable=kTRUE;
1870         Double_t zAtSSDouter=100,zAtSDDouter=100,zAtSPDouter=100;
1871         track->GetZAt(rSSDouter,fESD->GetMagneticField(),zAtSSDouter);
1872         track->GetZAt(rSDDouter,fESD->GetMagneticField(),zAtSDDouter);
1873         track->GetZAt(rSPDouter,fESD->GetMagneticField(),zAtSPDouter);
1874         fHistPtTPC->Fill(track->Pt());  
1875         if(TMath::Abs(zAtSSDouter)<1.*zSSDouter &&
1876            TMath::Abs(zAtSDDouter)<1.*zSDDouter &&
1877            TMath::Abs(zAtSPDouter)<1.*zSPDouter) {
1878           itsfindableAcc=kTRUE;
1879           fHistdEdxVSPtTPCInAcc->Fill(track->Pt(),track->GetTPCsignal());
1880           fHistPtTPCInAcc->Fill(track->Pt());
1881           fHistPtVSphiTPCInAcc->Fill(track->Phi(),track->Pt());
1882           if(!(track->GetStatus()&AliESDtrack::kTRDout)) fHistPtTPCInAccNoTRDout->Fill(track->Pt()); 
1883           if(!(track->GetStatus()&AliESDtrack::kTOFout)) fHistPtTPCInAccNoTOFout->Fill(track->Pt()); 
1884           fHistPtTPCInAccWithPtTPCAtVtx->Fill(trackTPC->Pt());
1885           Double_t pTPCinnerwall[3];
1886           track->GetInnerPxPyPz(pTPCinnerwall);
1887           Double_t ptTPCinnerwall=TMath::Sqrt(pTPCinnerwall[0]*pTPCinnerwall[0]+pTPCinnerwall[1]*pTPCinnerwall[1]);
1888           fHistPtTPCInAccWithPtTPCAtInnerWall->Fill(ptTPCinnerwall);
1889           if(track->GetStatus()&AliESDtrack::kITSrefit && !(track->GetStatus()&AliESDtrack::kTOFout)) fHistDeltaPtTPC->Fill(trackTPC->P(),track->P()-trackTPC->P());
1890           if(track->Pt()>1) {
1891             fHistPhiTPCInAcc->Fill(track->Phi());  
1892             fHistEtaTPCInAcc->Fill(track->Eta());
1893           }  
1894           if(isPrimary) {
1895             fHistPtTPCInAccP->Fill(track->Pt());
1896             if(pdgTrk==321) fHistPtTPCInAccPfromStrange->Fill(track->Pt());
1897           } else {
1898             fHistPtTPCInAccS->Fill(track->Pt());
1899             if(isFromMat) fHistPtTPCInAccSfromMat->Fill(track->Pt());
1900             if(isFromStrange) fHistPtTPCInAccSfromStrange->Fill(track->Pt());
1901           }  
1902           if(nClsMCSPD==2) fHistPtTPCInAccMCtwoSPD->Fill(track->Pt());
1903           if(nClsMCSPD>=1) fHistPtTPCInAccMConeSPD->Fill(track->Pt());
1904           //if(isPrimary) {fHistRProdVtxInAccP->Fill(rProdVtx);} else {fHistRProdVtxInAccS->Fill(rProdVtx);}
1905         }
1906       }
1907     }
1908
1909
1910     if(useTRKvtx) {
1911       // we need the vertex to compute the impact parameters
1912       if(!vertexESD) {delete trackTPC; trackTPC=0; continue;}
1913       if(!(vertexESD->GetStatus()) || vertexESD->GetNContributors()<mincontrTRKvtx) {
1914         if(useSPDvtxifNotTRK) {
1915           vertexESD = fESD->GetPrimaryVertexSPD();
1916         } else {
1917           delete trackTPC; trackTPC=0; continue;
1918         }
1919       }
1920     }
1921
1922     // track prolonged in ITS with different conditions
1923     if(itsrefit) {
1924       if(itsfindable) {
1925         if(nclsITS==6) fHistPtITSMI6->Fill(track->Pt());
1926         if(nclsITS==5) fHistPtITSMI5->Fill(track->Pt());
1927         if(nclsITS==4) fHistPtITSMI4->Fill(track->Pt());
1928         if(nclsITS==3) fHistPtITSMI3->Fill(track->Pt());
1929         if(nclsITS==2) fHistPtITSMI2->Fill(track->Pt());
1930         if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))
1931           fHistPtITSMISPD->Fill(track->Pt());
1932         if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1))
1933           fHistPtITSMIoneSPD->Fill(track->Pt());
1934         if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6->Fill(track->Pt());
1935       }
1936       if(itsfindableAcc) {
1937         if(nclsITS==6) {
1938           fHistPtITSMI6InAcc->Fill(track->Pt());
1939           if(track->Pt()>1) {
1940             fHistPhiITSMI6InAcc->Fill(track->Phi());
1941             fHistEtaITSMI6InAcc->Fill(track->Eta());
1942           }
1943           if(isFake) fHistPtITSMI6InAccFake->Fill(track->Pt());
1944           if(isPrimary) {fHistPtITSMI6InAccP->Fill(track->Pt());} else {fHistPtITSMI6InAccS->Fill(track->Pt());}  
1945         }
1946         if(nclsITS==5) {
1947           fHistPtITSMI5InAcc->Fill(track->Pt());
1948           if(track->Pt()>1) {
1949             fHistPhiITSMI5InAcc->Fill(track->Phi());
1950             fHistEtaITSMI5InAcc->Fill(track->Eta());
1951           }
1952           if(isFake) fHistPtITSMI5InAccFake->Fill(track->Pt());
1953           if(isPrimary) {fHistPtITSMI5InAccP->Fill(track->Pt());} else {fHistPtITSMI5InAccS->Fill(track->Pt());}  
1954         }
1955         if(nclsITS==4) {
1956           fHistPtITSMI4InAcc->Fill(track->Pt());
1957           if(track->Pt()>1) {
1958             fHistPhiITSMI4InAcc->Fill(track->Phi());
1959             fHistEtaITSMI4InAcc->Fill(track->Eta());
1960           }
1961           if(isFake) fHistPtITSMI4InAccFake->Fill(track->Pt());
1962           if(isPrimary) {fHistPtITSMI4InAccP->Fill(track->Pt());} else {fHistPtITSMI4InAccS->Fill(track->Pt());}  
1963         }
1964         if(nclsITS==3) {
1965           fHistPtITSMI3InAcc->Fill(track->Pt());
1966           if(track->Pt()>1) {
1967             fHistPhiITSMI3InAcc->Fill(track->Phi());
1968             fHistEtaITSMI3InAcc->Fill(track->Eta());
1969           }
1970           if(isFake) fHistPtITSMI3InAccFake->Fill(track->Pt());
1971           if(isPrimary) {fHistPtITSMI3InAccP->Fill(track->Pt());} else {fHistPtITSMI3InAccS->Fill(track->Pt());}  
1972         }
1973         if(nclsITS==2) {
1974           fHistPtITSMI2InAcc->Fill(track->Pt());
1975           if(track->Pt()>1) {
1976             fHistPhiITSMI2InAcc->Fill(track->Phi());
1977             fHistEtaITSMI2InAcc->Fill(track->Eta());
1978           }
1979           if(isFake) fHistPtITSMI2InAccFake->Fill(track->Pt());
1980           if(isPrimary) {fHistPtITSMI2InAccP->Fill(track->Pt());} else {fHistPtITSMI2InAccS->Fill(track->Pt());}  
1981         }
1982         if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
1983           fHistPtITSMISPDInAcc->Fill(track->Pt());
1984           if(track->Pt()>1) {
1985             fHistPhiITSMISPDInAcc->Fill(track->Phi());
1986             fHistEtaITSMISPDInAcc->Fill(track->Eta());
1987           }
1988           if(isFake) fHistPtITSMISPDInAccFake->Fill(track->Pt());
1989           if(isPrimary) {fHistPtITSMISPDInAccP->Fill(track->Pt());} else {fHistPtITSMISPDInAccS->Fill(track->Pt());}  
1990         }
1991         if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) {
1992           fHistPtITSMIoneSPDInAcc->Fill(track->Pt());
1993           if(track->Pt()>1) {
1994             fHistPhiITSMIoneSPDInAcc->Fill(track->Phi());
1995             fHistEtaITSMIoneSPDInAcc->Fill(track->Eta());
1996           }
1997           Float_t chi2redITS = track->GetITSchi2()/track->GetNcls(0);
1998           if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2NonFakePt02->Fill(chi2redITS);
1999           if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2NonFakePt05->Fill(chi2redITS);
2000           if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2NonFakePt1->Fill(chi2redITS);
2001           if(isFake) {
2002             fHistPtITSMIoneSPDInAccFake->Fill(track->Pt());
2003             if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2FakePt02->Fill(chi2redITS);
2004             if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2FakePt05->Fill(chi2redITS);
2005             if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2FakePt1->Fill(chi2redITS);
2006           }
2007           if(nclsSDDSSD>=3) fHistPtITSMIoneSPDthreeSDDSSDInAcc->Fill(track->Pt());
2008
2009           if(isPrimary) {fHistPtITSMIoneSPDInAccP->Fill(track->Pt());} else {fHistPtITSMIoneSPDInAccS->Fill(track->Pt());}  
2010         }
2011         if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6InAcc->Fill(track->Pt());
2012         if(nclsokbadoutinzITS==5) fHistPtITSMIokbadoutinz5InAcc->Fill(track->Pt());
2013         if(nclsokbadoutinzITS==4) fHistPtITSMIokbadoutinz4InAcc->Fill(track->Pt());
2014         if(nclsokbadoutinzITS==6 && track->Pt()>1) fHistPhiITSMIokbadoutinz6InAcc->Fill(track->Phi());  
2015       }
2016     }
2017
2018     if(tpcrefit) {
2019       fHistNclsITSMI->Fill(nclsITS);
2020     } else {
2021       fHistNclsITSSA->Fill(nclsITS);
2022       if(!outInZ) fHistNclsITSSAInAcc->Fill(nclsITS);
2023     }
2024
2025     
2026     if((tpcrefit && fUseITSSAforNtuples) || // only ITS-SA for ntuples
2027        (!tpcrefit && !fUseITSSAforNtuples)) // only ITS-TPC for ntuples
2028       { delete trackTPC; trackTPC=0; continue; }
2029
2030     // impact parameter to VertexTracks
2031     Float_t d0z0[2],covd0z0[3];
2032     Double_t d0z0TPC[2],covd0z0TPC[3];
2033     if(useTRKvtx) {
2034       if(!track->RelateToVertex(vertexESD,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
2035     } else { 
2036       //if(!track->RelateToVertex(vertexMC,fESD->GetMagneticField(),kVeryBig)) continue;
2037       if(!track->RelateToVertex(spdv,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
2038     } 
2039     track->GetImpactParameters(d0z0,covd0z0);
2040     if(trackTPC) trackTPC->PropagateToDCA(spdv,fESD->GetMagneticField(),kVeryBig,d0z0TPC,covd0z0TPC);
2041     if(covd0z0[0]<0. || covd0z0[2]<0. || covd0z0TPC[0]<0. || covd0z0TPC[2]<0.) { delete trackTPC; trackTPC=0; continue; }
2042
2043
2044     // track that passes final ITS+TPC cuts
2045     if(itsfindableAcc && fESDtrackCutsITSTPC->AcceptTrack(track)) {
2046       fHistPtITSTPCsel->Fill(track->Pt());
2047       if(isFake) fHistPtITSTPCselFake->Fill(track->Pt());
2048       fHistdEdxVSPtITSTPCsel->Fill(track->Pt(),track->GetITSsignal());
2049       if(isPrimary) {
2050         fHistPtITSTPCselP->Fill(track->Pt());
2051         if(pdgTrk==321) fHistPtITSTPCselPfromStrange->Fill(track->Pt());
2052       } else {
2053         fHistPtITSTPCselS->Fill(track->Pt());
2054         if(isFromMat) fHistPtITSTPCselSfromMat->Fill(track->Pt());
2055         if(isFromStrange) fHistPtITSTPCselSfromStrange->Fill(track->Pt());
2056       }  
2057     }
2058     
2059
2060     // fill d0 histos
2061     if(((!fUseITSSAforNtuples&&itsfindableAcc) || fUseITSSAforNtuples) /*&& track->Charge()>0*/) {
2062       if(track->Pt()>0.150 && track->Pt()<0.200) {
2063         if(isPrimary) {
2064           fHistd0rphiTPCInAccP150200->Fill(d0z0TPC[0]);
2065           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2066             fHistd0rphiITSMISPDInAccP150200->Fill(d0z0[0]);
2067           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2068             //if(((track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) || (!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))) && itsrefit) {
2069             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP150200->Fill(d0z0[0]);
2070             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP150200->Fill(d0z0[1]);
2071           }
2072         } else {
2073           fHistd0rphiTPCInAccS150200->Fill(d0z0TPC[0]);
2074           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2075             fHistd0rphiITSMISPDInAccS150200->Fill(d0z0[0]);
2076           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2077             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2078               fHistd0rphiITSMIoneSPDInAccS150200->Fill(d0z0[0]);
2079               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Fill(d0z0[0]);
2080               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS150200fromMat->Fill(d0z0[0]);
2081             }
2082             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS150200->Fill(d0z0[1]);
2083             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth150200->Fill(pdgMoth);
2084           }
2085         }
2086       }
2087       if(track->Pt()>0.350 && track->Pt()<0.450) {
2088         if(isPrimary) {
2089           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2090             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP350450->Fill(d0z0[0]);
2091           }
2092         } else {
2093           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2094             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2095               fHistd0rphiITSMIoneSPDInAccS350450->Fill(d0z0[0]);
2096               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Fill(d0z0[0]);
2097               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS350450fromMat->Fill(d0z0[0]);
2098             }
2099           }
2100         }
2101       }
2102       if(track->Pt()>0.500 && track->Pt()<0.700) {
2103         if(isPrimary) {
2104           fHistd0rphiTPCInAccP500700->Fill(d0z0TPC[0]);
2105           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2106             fHistd0rphiITSMISPDInAccP500700->Fill(d0z0[0]);
2107           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2108             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP500700->Fill(d0z0[0]);
2109             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP500700->Fill(d0z0[1]);
2110           }
2111         } else {
2112           fHistd0rphiTPCInAccS500700->Fill(d0z0TPC[0]);
2113           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2114             fHistd0rphiITSMISPDInAccS500700->Fill(d0z0[0]);
2115           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2116             fHistPDGTrk->Fill(pdgTrk);
2117             fHistPDGMoth->Fill(pdgMoth);
2118             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth500700->Fill(pdgMoth);
2119             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2120               fHistd0rphiITSMIoneSPDInAccS500700->Fill(d0z0[0]);
2121               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Fill(d0z0[0]);
2122               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS500700fromMat->Fill(d0z0[0]);
2123             }
2124             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS500700->Fill(d0z0[1]);
2125             if(pdgMoth==310) fHistd0rphiITSMIoneSPDInAccS500700from310->Fill(d0z0[0]);
2126             if(pdgMoth==321) fHistd0rphiITSMIoneSPDInAccS500700from321->Fill(d0z0[0]);
2127             if(pdgMoth==3122) fHistd0rphiITSMIoneSPDInAccS500700from3122->Fill(d0z0[0]);
2128             if(pdgMoth==211) fHistd0rphiITSMIoneSPDInAccS500700from211->Fill(d0z0[0]);
2129             if(pdgMoth==22) fHistd0rphiITSMIoneSPDInAccS500700from22->Fill(d0z0[0]);
2130             if(pdgMoth==211 && TMath::Abs(d0z0[0])>0.5) fHistRProdVtxInAccS->Fill(rProdVtx);
2131           }
2132         }
2133       }
2134       if(track->Pt()>1.000 && track->Pt()<1.500) {
2135         if(isPrimary) {
2136           fHistd0rphiTPCInAccP10001500->Fill(d0z0TPC[0]);
2137           fHistd0zVSetaTPCInAccP10001500->Fill(d0z0TPC[1],trackTPC->Eta());
2138
2139           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2140             fHistd0rphiITSMISPDInAccP10001500->Fill(d0z0[0]);
2141           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2142             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP10001500->Fill(d0z0[0]);
2143             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP10001500->Fill(d0z0[1]);
2144             fHistd0rphiVSphiITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Phi());
2145             fHistd0rphiVSetaITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Eta());
2146           }
2147         } else {
2148           fHistd0rphiTPCInAccS10001500->Fill(d0z0TPC[0]);
2149           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2150             fHistd0rphiITSMISPDInAccS10001500->Fill(d0z0[0]);
2151           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2152             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2153               fHistd0rphiITSMIoneSPDInAccS10001500->Fill(d0z0[0]);
2154               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Fill(d0z0[0]);
2155               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Fill(d0z0[0]);
2156             }
2157             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS10001500->Fill(d0z0[1]);
2158             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth10001500->Fill(pdgMoth);
2159           }
2160         }
2161       }
2162       if(track->Pt()>2.500 && track->Pt()<4.000) {
2163         if(isPrimary) {
2164           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2165             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP25004000->Fill(d0z0[0]);
2166           }
2167         } else {
2168           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2169             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2170               fHistd0rphiITSMIoneSPDInAccS25004000->Fill(d0z0[0]);
2171               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Fill(d0z0[0]);
2172               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Fill(d0z0[0]);
2173             }
2174           }
2175         }
2176       }
2177       if(track->Pt()>4.000 && track->Pt()<8.000) {
2178         if(isPrimary) {
2179           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2180             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP40008000->Fill(d0z0[0]);
2181           }
2182         } else {
2183           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2184             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2185               fHistd0rphiITSMIoneSPDInAccS40008000->Fill(d0z0[0]);
2186               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Fill(d0z0[0]);
2187               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Fill(d0z0[0]);
2188             }
2189           }
2190         }
2191       }
2192
2193     }
2194
2195     if(trackTPC) { delete trackTPC; trackTPC=0; }
2196
2197     // encode ITS cluster map, including MC info
2198     Int_t iITSflag=MakeITSflag(track);
2199
2200     // if MC info is available: get particle properties
2201     Float_t ptMC=-999.,pdgMC=-999.,d0MC=-999.;
2202     Double_t d0z0MCv[2]={-999.,-999.},covd0z0MCv[3]={1.,1.,1.};
2203     if(fReadMC) {
2204       part = (TParticle*)stack->Particle(trkLabel);
2205       ptMC=part->Pt();
2206       pdgMC=part->GetPdgCode();
2207       d0MC=ParticleImpParMC(part,vertexMC,0.1*fESD->GetMagneticField());
2208       track->PropagateToDCA(vertexMC,fESD->GetMagneticField(),100.,d0z0MCv,covd0z0MCv);
2209       if(covd0z0MCv[0]<0. || covd0z0MCv[2]<0.) continue;
2210     }
2211
2212     Double_t sigmad0MCv=TMath::Sqrt(covd0z0MCv[0]);
2213     if(!itsrefit) sigmad0MCv *= -1.;
2214     Float_t isPrimaryFl = (isPrimary ? 1. : 0.);
2215     Float_t isTPCSelFl  = (itsfindableAcc ? 1. : 0.);
2216
2217     // fill ntuple with track properties
2218     if(fFillNtuples && SelectPt(track->Pt())) {
2219       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};
2220       fNtupleESDTracks->Fill(fillArray);
2221     }
2222
2223     //---------------------------------------------    
2224     // AliTrackPoints: alignment checks
2225     // 
2226     if(!fFillNtuples) continue;
2227
2228     const AliTrackPointArray *array = track->GetTrackPointArray();
2229     if(!array) continue;
2230     AliTrackPoint point;
2231     Int_t pointOnLayer[6]={0,0,0,0,0,0};
2232     Int_t indexAssociated[6]={-1,-1,-1,-1,-1,-1},indexExtra=-1;
2233     Bool_t extra=kFALSE;
2234     Int_t layerId,layerExtra=-1;
2235     for(Int_t ipt=0; ipt<array->GetNPoints(); ipt++) {
2236       array->GetPoint(point,ipt);
2237       Float_t r = TMath::Sqrt(point.GetX()*point.GetX()+point.GetY()*point.GetY());
2238
2239       if(r>3 && r<6) {
2240         layerId = 0;
2241       } else if(r>6 && r<8) {
2242         layerId = 1;
2243       } else if(r>8 && r<18) {
2244         layerId = 2;
2245       } else if(r>18 && r<30) {
2246         layerId = 3;
2247       } else if(r>30 && r<40) {
2248         layerId = 4;
2249       } else if(r>40 && r<50) {
2250         layerId = 5;
2251       } else {
2252         layerId=100;
2253       }
2254
2255       // only ITS points
2256       if(layerId>5) continue;
2257
2258       if(!point.IsExtra()) {
2259         pointOnLayer[layerId]++;
2260         indexAssociated[layerId]=ipt;
2261       } else {
2262         // this is an extra cluster
2263         extra=kTRUE;
2264         layerExtra=layerId;
2265         indexExtra=ipt;
2266       }
2267     } // end loop on AliTrackPoints
2268
2269     TString vtitle = spdv->GetTitle();
2270     if(!vtitle.Contains("3D")) continue; 
2271
2272     // SPD tracklet
2273     if(indexAssociated[0]>=0 && indexAssociated[1]>=0) {
2274       AliTrackPoint pointSPD1,pointSPD2;
2275       array->GetPoint(pointSPD1,indexAssociated[0]);
2276       array->GetPoint(pointSPD2,indexAssociated[1]);
2277       Float_t phi=TMath::ATan2(pointSPD2.GetY()-pointSPD1.GetY(),pointSPD2.GetX()-pointSPD1.GetX());
2278       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())));
2279       Float_t theta=0.5*TMath::Pi()-lambda;
2280       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);
2281       AliESDtrack tracklet(&particle);
2282       Float_t dz[2];
2283       // distance to primary SPD (only if 3D and high multiplicity)
2284       if(spdv->GetNContributors()>10) { 
2285         tracklet.GetDZ(spdv->GetXv(),spdv->GetYv(),spdv->GetZv(),0,dz);
2286         //tracklet.GetDZ(-0.07,0.25,spdv->GetZv(),0,dz);
2287         fNtupleITSAlignSPDTracklets->Fill(phi,theta,0.5*(pointSPD1.GetZ()+pointSPD2.GetZ()),dz[0],dz[1],track->Pt());
2288       }
2289     }
2290
2291     // distance to extra
2292     if(extra && spdv->GetNContributors()>4 && indexAssociated[layerExtra]>-1) {
2293       AliTrackPoint pointExtra,pointAssociated;
2294       array->GetPoint(pointAssociated,indexAssociated[layerExtra]);
2295       array->GetPoint(pointExtra,indexExtra);
2296       Float_t phiExtra = TMath::ATan2(pointExtra.GetY()-spdv->GetYv(),pointExtra.GetX()-spdv->GetXv());
2297       Float_t phiAssociated = TMath::ATan2(pointAssociated.GetY()-spdv->GetYv(),pointAssociated.GetX()-spdv->GetXv());
2298       Float_t rExtra = TMath::Sqrt((pointExtra.GetX()-spdv->GetXv())*(pointExtra.GetX()-spdv->GetXv())+(pointExtra.GetY()-spdv->GetYv())*(pointExtra.GetY()-spdv->GetYv()));
2299       Float_t rAssociated = TMath::Sqrt((pointAssociated.GetX()-spdv->GetXv())*(pointAssociated.GetX()-spdv->GetXv())+(pointAssociated.GetY()-spdv->GetYv())*(pointAssociated.GetY()-spdv->GetYv()));
2300       Float_t dzExtra[2];
2301       dzExtra[0] = (phiExtra-phiAssociated)*0.5*(rExtra+rAssociated);
2302       dzExtra[1] = pointExtra.GetZ()-pointAssociated.GetZ()-(rExtra-rAssociated)*(pointAssociated.GetZ()-spdv->GetZv())/rAssociated;
2303       Float_t xlocExtra=-100.,zlocExtra=-100.;
2304       fNtupleITSAlignExtra->Fill(layerExtra,pointExtra.GetX(),pointExtra.GetY(),pointExtra.GetZ(),dzExtra[0],dzExtra[1],xlocExtra,zlocExtra,nclsITS,track->Pt());  
2305     }
2306     
2307     if(trackTPC) { delete trackTPC; trackTPC=0; }
2308   } // end loop on tracks
2309   
2310   if(vertexMC) { delete vertexMC; vertexMC=0; }
2311
2312   delete esdtrackCutsTPC;    esdtrackCutsTPC=0;
2313   delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
2314
2315   return;
2316 }      
2317
2318 //________________________________________________________________________
2319 void AliAnalysisTaskITSTrackingCheck::Terminate(Option_t *) 
2320 {
2321   // Draw result to the screen
2322   // Called once at the end of the query
2323   fOutput = dynamic_cast<TList*> (GetOutputData(1));
2324   if (!fOutput) {     
2325     Printf("ERROR: fOutput not available");
2326     return;
2327   }
2328   fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
2329   fHistNEventsFrac = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEventsFrac"));
2330   if(fHistNEvents && fHistNEventsFrac) {
2331     for(Int_t ibin=2; ibin<=fHistNEvents->GetNbinsX(); ibin++) {
2332       if(fHistNEvents->GetBinContent(2)) fHistNEventsFrac->SetBinContent(ibin,fHistNEvents->GetBinContent(ibin)/fHistNEvents->GetBinContent(2)); 
2333     }
2334   }
2335
2336   return;
2337 }
2338 //---------------------------------------------------------------------------
2339 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label,Int_t nModules) const
2340 {
2341   //
2342   // Return number of ITS clusters produced by MC particle with given label
2343   //
2344   
2345   AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2346   if(!esdHRP) return -1;
2347   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2348   if(!cTree) return -1;
2349   TClonesArray *clusters=0;
2350   cTree->SetBranchAddress("ITSRecPoints",&clusters);
2351   if(!clusters) return -1;
2352
2353   AliITSRecPoint *c=0;
2354   Int_t i,n,icl,lay,ilab;
2355   Int_t ncls[6]={0,0,0,0,0,0};
2356   Int_t nclstot=0;
2357
2358   for(i=0; i<nModules; i++) {
2359     cTree->GetEvent(i);
2360     n=clusters->GetEntriesFast();
2361     for (icl=0; icl<n; icl++) {
2362       c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2363       lay=c->GetLayer();
2364       //printf("mod %d lay %d xloc %f zloc %f\n",i,lay,c->GetDetLocalX(),c->GetDetLocalZ());
2365       for(ilab=0;ilab<3;ilab++) {
2366         if(c->GetLabel(ilab)==label) ncls[lay]++;
2367       }
2368     }
2369   }
2370   for(i=0;i<6;i++) { 
2371     //printf("%d\n",ncls[i]); 
2372     if(ncls[i]) nclstot++; 
2373   }
2374
2375   return nclstot;
2376 }
2377 //---------------------------------------------------------------------------
2378 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClusters(Int_t idet,Float_t &xloc) const
2379 {
2380   //
2381   // Return number of ITS clusters produced by MC particle with given label
2382   //
2383   
2384   AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2385   if(!esdHRP) return -1;
2386   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2387   if(!cTree) return -1;
2388   TClonesArray *clusters=0;   // new TClonesArray("AliITSRecPoint",10000);
2389   cTree->SetBranchAddress("ITSRecPoints",&clusters);
2390   if(!clusters) return -1;
2391
2392   AliITSRecPoint *c=0;
2393   Int_t n,icl;
2394
2395   cTree->GetEvent(idet);
2396   n=clusters->GetEntriesFast();
2397
2398   if(n==1) {
2399     for (icl=0; icl<n; icl++) {
2400       c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2401       xloc = c->GetDetLocalX();
2402     }
2403   }
2404   return n;
2405 }
2406 //---------------------------------------------------------------------------
2407 Double_t AliAnalysisTaskITSTrackingCheck::ParticleImpParMC(TParticle *part,
2408                                                            AliESDVertex *vert,
2409                                                            Double_t bzT) const
2410 {
2411   //
2412   // Return the MC value of the impact parameter
2413   //
2414  
2415   Double_t vx=part->Vx()-vert->GetX();
2416   Double_t vy=part->Vy()-vert->GetY();
2417       
2418   Double_t pt=part->Pt();     
2419   Double_t px=part->Px();     
2420   Double_t py=part->Py();     
2421   Double_t charge = (part->GetPdgCode()>0. ? 1. : -1.);
2422   if(TMath::Abs(part->GetPdgCode())<100) charge*=-1.;
2423
2424   if(px<0.000001) px=0.000001;     
2425   Double_t rAnd=((10./2.99792458)*pt/bzT)*100.;
2426   Double_t center[3],d0;
2427   center[0]=vx-(1./charge)*rAnd*(py/pt);
2428   center[1]=vy+(1./charge)*rAnd*(px/pt);
2429   center[2]=TMath::Sqrt(center[0]*center[0]+center[1]*center[1]);
2430   d0 = -center[2]+rAnd;
2431
2432   return d0;
2433 }
2434 //---------------------------------------------------------------------------
2435 Bool_t AliAnalysisTaskITSTrackingCheck::SelectPt(Double_t pt)
2436 {
2437   //
2438   // Keep only tracks in given pt bins
2439   // 
2440   Double_t ptlower[11]={0.15,0.29,0.49,0.75,0.9,1.9,3.5,6.5, 9.,19.,27.};
2441   Double_t ptupper[11]={0.16,0.31,0.51,0.85,1.1,2.1,4.5,7.5,11.,21.,33.};
2442
2443   for(Int_t i=0; i<11; i++) {
2444     if(pt>ptlower[i] && pt<ptupper[i]) {
2445       fCountsPerPtBin[i]++;
2446       return kTRUE;
2447     }
2448   }
2449   return kFALSE;
2450   //return kTRUE;
2451 }
2452 //---------------------------------------------------------------------------
2453 Int_t AliAnalysisTaskITSTrackingCheck::MakeITSflag(AliESDtrack *track) const {
2454   //
2455   // ITSflag takes the value 0 if the track has no cluster assigned in the SPDs, 
2456   // 1 (2) if one cluster is assigned in SPD1(2), 3 if two clusters are present. 
2457   // Then the same adding 10,20 or 30 for SDD and 100,200 or 300 for SSD
2458   //
2459   Int_t iITSflag=0;
2460   if(track->HasPointOnITSLayer(0)) iITSflag+=1;
2461   if(track->HasPointOnITSLayer(1)) iITSflag+=2;
2462   if(track->HasPointOnITSLayer(2)) iITSflag+=10;
2463   if(track->HasPointOnITSLayer(3)) iITSflag+=20;
2464   if(track->HasPointOnITSLayer(4)) iITSflag+=100;
2465   if(track->HasPointOnITSLayer(5)) iITSflag+=200;
2466   
2467   if(iITSflag==333 && track->GetNcls(0)<6)
2468     printf(" ERROR %d   %d\n",track->GetNcls(0),track->GetLabel());
2469   
2470   // number of associated ITS clusters
2471   iITSflag += 1000*track->GetNcls(0);
2472   
2473   // number of associated TPC clusters
2474   iITSflag += 100000*track->GetNcls(1);
2475   
2476   // if MC info and is available
2477   // write the number of ITS clusters produced by this track
2478   Int_t nITSclsMC=0;
2479   if(fReadMC && fReadRPLabels) {
2480     nITSclsMC = NumberOfITSClustersMC(TMath::Abs(track->GetLabel()));
2481     if(nITSclsMC>=0) iITSflag += 10000*nITSclsMC;    
2482     // flag fake tracks
2483     if(track->GetLabel()<0) iITSflag *= -1;
2484   }
2485
2486   return iITSflag;
2487 }
2488 //---------------------------------------------------------------------------
2489 Bool_t AliAnalysisTaskITSTrackingCheck::IsSelectedCentrality() const
2490 {
2491   //
2492   // check if events is in the required multiplicity range
2493   //
2494
2495   const AliMultiplicity *alimult = fESD->GetMultiplicity();
2496   Int_t ntrklets=1;
2497   if(alimult) {
2498     ntrklets = alimult->GetNumberOfTracklets();
2499   }
2500
2501   if(ntrklets<fMinMult || ntrklets>fMaxMult) return kFALSE;
2502
2503   return kTRUE;
2504 }
2505
2506
2507