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