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