]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/ITS/AliAnalysisTaskITSTrackingCheck.cxx
Enabling creation and reading of the CDB snapshot also in simulation
[u/mrichter/AliRoot.git] / PWGPP / 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 && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
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   PostData(1, fOutput);
1663   return;
1664 }
1665
1666 //________________________________________________________________________
1667 void AliAnalysisTaskITSTrackingCheck::UserExec(Option_t *) 
1668 {
1669   // Main loop
1670   // Called for each event
1671
1672   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
1673
1674   if (!fESD) {
1675     Printf("ERROR: fESD not available");
1676     return;
1677   }
1678
1679   //if(fESD->GetEventNumberInFile()<7) return;
1680
1681   // only events in the requested multiplicity range
1682   if(!IsSelectedCentrality()) return;
1683
1684   fHistNEvents->Fill(-1);
1685
1686
1687   Bool_t isSelected = kTRUE;
1688   if(fUsePhysSel) {
1689     isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1690   }
1691   if(!isSelected) return;
1692
1693   
1694   //if(fESD->GetEventType()!=7) return;
1695
1696   // ***********  MC info ***************
1697   TArrayF mcVertex(3);
1698   mcVertex[0]=9999.; mcVertex[1]=9999.; mcVertex[2]=9999.;
1699   Float_t dNchdy=-999.;
1700
1701   TParticle *part=0;
1702   AliESDVertex *vertexMC=0;
1703   AliStack *stack=0;
1704   if (fReadMC) {
1705     AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1706     if (!eventHandler) {
1707       Printf("ERROR: Could not retrieve MC event handler");
1708       return;
1709     }
1710     
1711     AliMCEvent* mcEvent = eventHandler->MCEvent();
1712     if (!mcEvent) {
1713       Printf("ERROR: Could not retrieve MC event");
1714       return;
1715     }
1716     
1717     stack = mcEvent->Stack();
1718     if (!stack) {
1719       AliDebug(AliLog::kError, "Stack not available");
1720       return;
1721     }
1722     
1723     AliHeader* header = mcEvent->Header();
1724     if (!header) {
1725       AliDebug(AliLog::kError, "Header not available");
1726       return;
1727     }
1728     AliGenEventHeader* genHeader = header->GenEventHeader();
1729     genHeader->PrimaryVertex(mcVertex);
1730     //printf("MC vertex: %f %f %f\n",mcVertex[0],mcVertex[1],mcVertex[2]);
1731
1732     Int_t ngenpart = (Int_t)stack->GetNtrack();
1733     //printf("# generated particles = %d\n",ngenpart);
1734     dNchdy=0;
1735     for(Int_t ip=0; ip<ngenpart; ip++) {
1736       part = (TParticle*)stack->Particle(ip);
1737       // keep only electrons, muons, pions, kaons and protons
1738       Int_t apdg = TMath::Abs(part->GetPdgCode());
1739       if(apdg!=11 && apdg!=13 && apdg!=211 && apdg!=321 && apdg!=2212) continue;      
1740       // reject secondaries
1741       //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])));
1742       if(TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]))>0.0010) continue;
1743       // reject incoming protons
1744       Double_t energy  = part->Energy();
1745       if(energy>900.) continue;
1746       Double_t pz = part->Pz();
1747       Double_t y = 0.5*TMath::Log((energy+pz+1.e-13)/(energy-pz+1.e-13));
1748       if(TMath::Abs(y)<1.0) dNchdy += 0.5; // count 1/2 of particles in |y|<1
1749     }
1750     //printf("# primary particles = %7.1f\n",dNchdy);
1751   } 
1752   // ***********  MC info ***************
1753   Double_t mcVtxPos[3]={mcVertex[0],mcVertex[1],mcVertex[2]},mcVtxSigma[3]={0,0,0};
1754   vertexMC = new AliESDVertex(mcVtxPos,mcVtxSigma);
1755
1756
1757
1758   //------- event selection --------
1759   Int_t   mincontrSPDvtx=1;
1760   Double_t maxzSPDvtx=5.;
1761   Double_t maxrSPDvtx=0.5;
1762   Bool_t useTRKvtx=kTRUE;
1763   Bool_t useSPDvtxifNotTRK=kTRUE;
1764   Int_t   mincontrTRKvtx=1;
1765   //Double_t maxzTRKvtx=20.;
1766   //Double_t maxrTRKvtx=1.;
1767   //------- TPC track selection --------
1768   Int_t    minclsTPC=70;
1769   Double_t maxchi2perTPCcl=4.;
1770   Double_t minEtaInAcc=-0.8; // -0.8
1771   Double_t maxEtaInAcc=0.8; // 0.8
1772   Double_t maxdcaxy=2.4;//2.4;
1773   Double_t maxdcaz=3.2;//3.2;
1774   AliESDtrackCuts* esdtrackCutsTPC = new AliESDtrackCuts("esdtrackCutsTPC");
1775   esdtrackCutsTPC->SetMaxDCAToVertexXY(maxdcaxy);
1776   esdtrackCutsTPC->SetMaxDCAToVertexZ(maxdcaz);
1777   esdtrackCutsTPC->SetDCAToVertex2D(kTRUE);
1778   esdtrackCutsTPC->SetRequireSigmaToVertex(kFALSE);
1779   esdtrackCutsTPC->SetRequireTPCRefit(kFALSE);// cannot do it because status not copied in AliESDtrack::FillTPCOnlyTrack
1780   esdtrackCutsTPC->SetAcceptKinkDaughters(kFALSE);
1781   esdtrackCutsTPC->SetMinNClustersTPC(minclsTPC);
1782   esdtrackCutsTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1783   esdtrackCutsTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1784   SetESDtrackCutsTPC(esdtrackCutsTPC);
1785   //------- ITS+TPC track selection --------
1786   Double_t maxdcaxyITSTPC=0.2;
1787   Double_t maxdcazITSTPC=1.e6;
1788   AliESDtrackCuts* esdtrackCutsITSTPC = new AliESDtrackCuts("esdtrackCutsITSTPC");
1789   esdtrackCutsITSTPC->SetMaxDCAToVertexXY(maxdcaxyITSTPC);
1790   esdtrackCutsITSTPC->SetMaxDCAToVertexZ(maxdcazITSTPC);
1791   esdtrackCutsITSTPC->SetDCAToVertex2D(kFALSE);
1792   esdtrackCutsITSTPC->SetRequireSigmaToVertex(kFALSE);
1793   esdtrackCutsITSTPC->SetRequireITSRefit(kTRUE);
1794   esdtrackCutsITSTPC->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
1795                                                AliESDtrackCuts::kAny);
1796   esdtrackCutsITSTPC->SetAcceptKinkDaughters(kFALSE);
1797   esdtrackCutsITSTPC->SetMinNClustersTPC(minclsTPC);
1798   esdtrackCutsITSTPC->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
1799   esdtrackCutsITSTPC->SetEtaRange(minEtaInAcc,maxEtaInAcc);
1800   SetESDtrackCutsITSTPC(esdtrackCutsITSTPC);
1801   //---------------------------------------
1802   
1803
1804   //
1805   
1806   /*  
1807   // **********  Trigger *****************
1808   ULong64_t triggerMask;
1809   ULong64_t spdFO = (1 << 14);
1810   ULong64_t v0left = (1 << 11);
1811   ULong64_t v0right = (1 << 12);
1812   
1813   triggerMask=fESD->GetTriggerMask();
1814   // MB1: SPDFO || V0L || V0R
1815   Bool_t eventTriggered = (triggerMask & spdFO || ((triggerMask & v0left) || (triggerMask & v0right))); 
1816   //MB2: GFO && V0R
1817   //triggerMask & spdFO && ((triggerMask&v0left) || (triggerMask&v0right))
1818   // ************ Trigger ******************
1819   if(!eventTriggered) return;
1820   */
1821
1822
1823   fHistNEvents->Fill(0);
1824
1825   // SPD vertex
1826   const AliESDVertex *spdv=fESD->GetPrimaryVertexSPD();
1827   // Select good SPD vertices
1828   TString spdvtitle=spdv->GetTitle();
1829   //if(!spdvtitle.Contains("3D")) return;
1830   if(spdv->GetNContributors()<mincontrSPDvtx ||
1831      TMath::Abs(spdv->GetZv())>maxzSPDvtx ||  
1832      spdv->GetXv()*spdv->GetXv()+spdv->GetYv()*spdv->GetYv()>maxrSPDvtx) {
1833     delete esdtrackCutsTPC; esdtrackCutsTPC=0;
1834     delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
1835     return;
1836   }
1837   //spdv->Print();
1838
1839   if(fRejPileupSPD) if(fESD->IsPileupFromSPD()) return;
1840
1841   //
1842   // Tracks vertex
1843   const AliESDVertex *vertexESD = fESD->GetPrimaryVertexTracks();
1844   //vertexESD->Print();
1845
1846   if(spdvtitle.Contains("3D")) {
1847     fHistNEvents->Fill(1);
1848     fHistNEvents->Fill(3);
1849   } else {
1850     fHistNEvents->Fill(2);
1851     fHistNEvents->Fill(3);
1852   }
1853   if(vertexESD) {
1854     if(vertexESD->GetStatus()) fHistNEvents->Fill(4);
1855   }
1856
1857   Int_t ntracks = fESD->GetNumberOfTracks();
1858   //printf("Tracks # = %d\n",fESD->GetNumberOfTracks());
1859
1860   fHistNtracks->Fill(ntracks);
1861   // Post the data already here
1862   PostData(1, fOutput);
1863
1864   FillNClustersModuleMap();
1865
1866   Int_t idet,status; Float_t xloc,zloc;
1867   Double_t rSPDouter=7.6,rSDDouter=23.9,rSSDouter=43.1;  
1868   Double_t zSPDouter=14.1,zSDDouter=29.7,zSSDouter=48.9;  
1869
1870   // loop on tracks
1871   for(Int_t itr=0; itr<ntracks; itr++) {
1872     AliESDtrack *track = fESD->GetTrack(itr);
1873     //if(track->Charge()>0) continue;
1874     // remove kink daughters
1875     if(track->GetKinkIndex(0)>0) continue;
1876
1877     // remove tracks not reco in ITS or TPC
1878     if (!(track->GetStatus() & AliESDtrack::kITSin) &&
1879         !(track->GetStatus() & AliESDtrack::kTPCin)) continue;
1880
1881     Bool_t isPrimary=kTRUE,isFromMat=kFALSE,isFromStrange=kFALSE;
1882     Double_t rProdVtx=0,zProdVtx=0;
1883     Int_t pdgTrk=0,pdgMoth=0;
1884     Int_t nClsMCSPD=0;
1885   
1886     Int_t trkLabel = TMath::Abs(track->GetLabel());
1887     Bool_t isFake=(track->GetLabel()>=0 ? kFALSE : kTRUE);
1888     Bool_t hasShared=kFALSE,hasSharedSPD=kFALSE;
1889     for(Int_t i=0;i<6;i++) {
1890       if(track->HasSharedPointOnITSLayer(i)) {
1891         hasShared=kTRUE;
1892         if(i<2) hasSharedSPD=kTRUE;
1893       }
1894     }
1895
1896     // check if it is primary
1897     if(fReadMC && stack) {
1898       isPrimary = stack->IsPhysicalPrimary(trkLabel);
1899       part = (TParticle*)stack->Particle(trkLabel);
1900       rProdVtx = TMath::Sqrt((part->Vx()-mcVertex[0])*(part->Vx()-mcVertex[0])+(part->Vy()-mcVertex[1])*(part->Vy()-mcVertex[1]));
1901       zProdVtx = TMath::Abs(part->Vz()-mcVertex[2]);
1902       //if(rProdVtx<2.8) isPrimary=kTRUE; // this could be tried
1903       pdgTrk = TMath::Abs(part->GetPdgCode());
1904       if(part->GetFirstMother()>=0) {
1905         TParticle* mm=stack->Particle(part->GetFirstMother());
1906         if(mm) pdgMoth = TMath::Abs(mm->GetPdgCode());
1907       }
1908       if(pdgMoth==310 || pdgMoth==321 || pdgMoth==3122 || pdgMoth==3312) isFromStrange=kTRUE;
1909       if(pdgMoth==211 || pdgMoth==22 || pdgMoth==2112 || pdgMoth==2212) isFromMat=kTRUE;
1910       nClsMCSPD = NumberOfITSClustersMC(trkLabel,240);
1911     }
1912
1913     Bool_t itsrefit=kFALSE,tpcrefit=kFALSE,itsfindable=kFALSE,itsfindableAcc=kFALSE;
1914     if ((track->GetStatus() & AliESDtrack::kITSrefit)) itsrefit=kTRUE;
1915     if ((track->GetStatus() & AliESDtrack::kTPCrefit)) tpcrefit=kTRUE;
1916     //if ((track->GetStatus() & AliESDtrack::kTPCin)) tpcrefit=kTRUE;
1917
1918
1919
1920     // remove tracks with kTPCin and not kTPCrefit 
1921     if ((track->GetStatus() & AliESDtrack::kTPCin) && !tpcrefit) continue;
1922
1923     AliESDtrack *trackTPC = 0;
1924     if(tpcrefit) trackTPC = AliESDtrackCuts::GetTPCOnlyTrack(fESD,itr);
1925     if(trackTPC) trackTPC->RelateToVertex(spdv,fESD->GetMagneticField(),100.); // relate it to the SPD vertex
1926    
1927
1928     Int_t nclsITS = track->GetNcls(0);
1929     Int_t nclsSDDSSD = 0;
1930     Int_t nclsokbadoutinzITS = 0;
1931     Bool_t outInZ=kFALSE;
1932     Bool_t skipTrack=kFALSE;
1933     Bool_t fillA=kFALSE;
1934     Bool_t fillB=kFALSE;
1935
1936     for(Int_t layer=0; layer<6; layer++) {
1937       if(layer>=2 && track->HasPointOnITSLayer(layer)) nclsSDDSSD++;
1938       if(layer==0 && !track->HasPointOnITSLayer(1)) continue;
1939       if(layer==1 && !track->HasPointOnITSLayer(0)) continue;
1940       track->GetITSModuleIndexInfo(layer,idet,status,xloc,zloc);
1941       if(status<0) continue;
1942       if(layer>=2) idet+=240; // add n SPD modules
1943       if(layer>=4) idet+=260; // add n SDD modules
1944       if(status==4) outInZ=kTRUE;
1945       
1946       if(layer==1 && tpcrefit && itsrefit) {
1947         Double_t xyz[3];
1948         track->GetXYZAt(rSPDouter,fESD->GetMagneticField(),xyz);
1949         if(status==1) {
1950           if(idet%4==0) fHistZatSPDouter0ok->Fill(xyz[2]);
1951           if(idet%4==1) fHistZatSPDouter1ok->Fill(xyz[2]);
1952           if(idet%4==2) fHistZatSPDouter2ok->Fill(xyz[2]);
1953           if(idet%4==3) fHistZatSPDouter3ok->Fill(xyz[2]);
1954         }
1955         if(status==2 || status==5) {
1956           if(idet%4==0) fHistZatSPDouter0notok->Fill(xyz[2]);
1957           if(idet%4==1) fHistZatSPDouter1notok->Fill(xyz[2]);
1958           if(idet%4==2) fHistZatSPDouter2notok->Fill(xyz[2]);
1959           if(idet%4==3) fHistZatSPDouter3notok->Fill(xyz[2]);
1960         }
1961       }
1962       // kill SDD clusters in MC
1963       if(fReadMC && (layer==2 || layer==3)) {
1964         Double_t qITS[4]; track->GetITSdEdxSamples(qITS);
1965         Double_t conv=3.34/5.43; 
1966         if(layer==2 && status==1 && qITS[0]*conv < 30.) status=5;
1967         if(layer==3 && status==1 && qITS[1]*conv < 30.) status=5;
1968       }
1969       if(tpcrefit) {
1970         if(trackTPC) if(!fESDtrackCutsTPC->AcceptTrack(trackTPC)) continue;
1971         if(track->Pt()>0.7 && track->Pt()<2.0) {
1972           if(status==1) {
1973             fHistClusterMapITSMIok->Fill(layer);
1974             if(fillA) fHistClusterMapITSMIokA->Fill(layer);
1975             if(fillB) fHistClusterMapITSMIokB->Fill(layer);
1976           }
1977           if(status==2) fHistClusterMapITSMIbad->Fill(layer);
1978           if(status==3) fHistClusterMapITSMIskipped->Fill(layer);
1979           if(status==4) fHistClusterMapITSMIoutinz->Fill(layer);
1980           if(status==5) fHistClusterMapITSMInocls->Fill(layer);
1981           if(status==6) fHistClusterMapITSMInorefit->Fill(layer);
1982           if(status==1 && !outInZ) fHistClusterMapModuleITSMIokInAcc->Fill(idet);
1983           if((status==2 || status==7) && !outInZ) fHistClusterMapModuleITSMIbadInAcc->Fill(idet);
1984           if(status==5 && !outInZ) fHistClusterMapModuleITSMInoclsInAcc->Fill(idet);
1985
1986           if((idet>=0 && idet<=11) || (idet>=36 && idet<=47)) fillA=kTRUE;
1987           if((idet>=28 && idet<=35) || (idet>=62 && idet<=71)) fillB=kTRUE;
1988
1989         }
1990         if(status==1 || status==2 || status==4) {
1991           fHistClusterMapITSMIokoutinzbad->Fill(layer);
1992           nclsokbadoutinzITS++;
1993         }
1994         /*if(idet>=80 && idet<120) {
1995           Double_t xyz[3];
1996           track->GetXYZAt(6.8,fESD->GetMagneticField(),xyz);
1997           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);
1998           }*/
1999         if((layer==2 || layer==3) && status!=2 && status!=4) {
2000           //Float_t xlocCls;
2001           //Int_t nClsInMod = NumberOfITSClusters(idet,xlocCls);
2002           fHistxlocSDDall->Fill(xloc);
2003           fHistzlocSDDall->Fill(zloc);
2004           if(status==1  /*nClsInMod>0*/) {
2005             fHistxlocSDDok->Fill(xloc);
2006             fHistxlocVSmodSDDok->Fill(idet,xloc);
2007             fHistzlocSDDok->Fill(zloc);
2008             if(fillA) fHistxlocSDDA->Fill(xloc);
2009             if(fillA) fHistzlocSDDA->Fill(zloc);
2010             if(fillB) fHistxlocSDDB->Fill(xloc);
2011             if(fillB) fHistzlocSDDB->Fill(zloc);
2012
2013           }     
2014         }
2015       } else {
2016        if(track->Phi()>1.5 && track->Phi()<1.7) { // ADDED
2017         if(status==1) fHistClusterMapITSSAok->Fill(layer);
2018         if(status==2) fHistClusterMapITSSAbad->Fill(layer);
2019         if(status==3) fHistClusterMapITSSAskipped->Fill(layer);
2020         if(status==4) fHistClusterMapITSSAoutinz->Fill(layer);
2021         if(status==5) fHistClusterMapITSSAnocls->Fill(layer);
2022         if(status==6) fHistClusterMapITSSAnorefit->Fill(layer);
2023         if(status==1 || status==2 || status==4) fHistClusterMapITSSAokoutinzbad->Fill(layer);
2024         if(status==1 && !outInZ) {fHistClusterMapITSSAokInAcc->Fill(layer);fHistClusterMapModuleITSSAokInAcc->Fill(idet);}
2025         if((status==2 || status==7) && !outInZ) {fHistClusterMapITSSAbadInAcc->Fill(layer);fHistClusterMapModuleITSSAbadInAcc->Fill(idet);}
2026         if(status==3 && !outInZ) fHistClusterMapITSSAskippedInAcc->Fill(layer);
2027         if(status==4 && !outInZ) fHistClusterMapITSSAoutinzInAcc->Fill(layer);
2028         if(status==5 && !outInZ) {fHistClusterMapITSSAnoclsInAcc->Fill(layer);fHistClusterMapModuleITSSAnoclsInAcc->Fill(idet);}
2029         if(status==6 && !outInZ) fHistClusterMapITSSAnorefitInAcc->Fill(layer);
2030         if((status==1 || status==2 || status==4) && !outInZ) fHistClusterMapITSSAokoutinzbadInAcc->Fill(layer);
2031        } // ADDED
2032       }
2033       if(TESTBIT(track->GetITSClusterMap(),layer)) {
2034         if(tpcrefit) {
2035           fHistClusterMapITSMI->Fill(layer);
2036         } else {
2037           fHistClusterMapITSSA->Fill(layer);
2038           if(!outInZ) fHistClusterMapITSSAInAcc->Fill(layer);
2039         }
2040       }
2041       /*    
2042       // SKIP SDD MODULES LOW EFF
2043       if(
2044          idet==246 ||
2045          idet==247 ||
2046          idet==256 ||
2047          idet==261 ||
2048          idet==267 ||
2049          idet==333 ||
2050          idet==343 ||
2051          idet==346 ||
2052          idet==349 ||
2053          idet==376 ||
2054          idet==390 ||
2055          idet==392 ||
2056          idet==409 ||
2057          idet==411 ||
2058          idet==464 ||
2059          idet==468 ||
2060          idet==474 ||
2061          idet==469
2062          ) 
2063         skipTrack=kTRUE;
2064       */
2065          /*
2066       if(
2067          idet==245
2068          || idet==248
2069          || idet==253
2070          || idet==264
2071          || idet==276
2072          || idet==286
2073          || idet==287
2074          || idet==292
2075          || idet==295
2076          || idet==302
2077          || idet==305
2078          || idet==307
2079          || idet==315
2080          || idet==320
2081          || idet==330
2082          || idet==331
2083          || idet==341
2084          || idet==357
2085          || idet==368
2086          || idet==376
2087          || idet==377
2088          || idet==378
2089          || idet==379
2090          || idet==380
2091          || idet==381
2092          || idet==382
2093          || idet==383
2094          || idet==422
2095          || idet==444
2096          || idet==445
2097          || idet==450
2098          || idet==451
2099          || idet==452
2100          || idet==453
2101          || idet==455
2102          || idet==459
2103          || idet==469
2104          || idet==485
2105          || idet==493
2106          || idet==494
2107          || idet==495
2108          || idet==496
2109          || idet==497
2110          || idet==498
2111          || idet==499
2112          ) skipTrack=kTRUE;
2113       // SKIP SDD MODULES LOW EFF
2114       */
2115     }  
2116     if(skipTrack) {delete trackTPC; trackTPC=0; continue;}
2117
2118     // TPC track findable in ITS
2119     if(tpcrefit && trackTPC) { 
2120       if(fESDtrackCutsTPC->AcceptTrack(trackTPC)) {
2121         itsfindable=kTRUE;
2122         Double_t zAtSSDouter=100,zAtSDDouter=100,zAtSPDouter=100;
2123         track->GetZAt(rSSDouter,fESD->GetMagneticField(),zAtSSDouter);
2124         track->GetZAt(rSDDouter,fESD->GetMagneticField(),zAtSDDouter);
2125         track->GetZAt(rSPDouter,fESD->GetMagneticField(),zAtSPDouter);
2126         fHistPtTPC->Fill(track->Pt());  
2127         if(TMath::Abs(zAtSSDouter)<1.*zSSDouter &&
2128            TMath::Abs(zAtSDDouter)<1.*zSDDouter &&
2129            TMath::Abs(zAtSPDouter)<1.*zSPDouter) {
2130           itsfindableAcc=kTRUE; 
2131           fHistdEdxVSPtTPCInAcc->Fill(track->Pt(),track->GetTPCsignal());
2132           fHistPtTPCInAcc->Fill(track->Pt());
2133           fHistTPCclsVSPtTPCInAcc->Fill(trackTPC->Pt(),trackTPC->GetNcls(1));
2134           fHistPtVSphiTPCInAcc->Fill(track->Phi(),track->Pt());
2135           if(!(track->GetStatus()&AliESDtrack::kTRDout)) fHistPtTPCInAccNoTRDout->Fill(track->Pt()); 
2136           if(!(track->GetStatus()&AliESDtrack::kTOFout)) fHistPtTPCInAccNoTOFout->Fill(track->Pt()); 
2137           fHistPtTPCInAccWithPtTPCAtVtx->Fill(trackTPC->Pt());
2138           Double_t pTPCinnerwall[3];
2139           track->GetInnerPxPyPz(pTPCinnerwall);
2140           Double_t ptTPCinnerwall=TMath::Sqrt(pTPCinnerwall[0]*pTPCinnerwall[0]+pTPCinnerwall[1]*pTPCinnerwall[1]);
2141           fHistPtTPCInAccWithPtTPCAtInnerWall->Fill(ptTPCinnerwall);
2142           if(track->GetStatus()&AliESDtrack::kITSrefit && !(track->GetStatus()&AliESDtrack::kTOFout)) fHistDeltaPtTPC->Fill(trackTPC->P(),track->P()-trackTPC->P());
2143           if(track->Pt()>1) {
2144             fHistPhiTPCInAcc->Fill(track->Phi());  
2145             fHistEtaTPCInAcc->Fill(track->Eta());
2146           }  
2147           if(isPrimary) {
2148             fHistPtTPCInAccP->Fill(track->Pt());
2149             if(pdgTrk==321) fHistPtTPCInAccPfromStrange->Fill(track->Pt());
2150           } else {
2151             fHistPtTPCInAccS->Fill(track->Pt());
2152             if(isFromMat) fHistPtTPCInAccSfromMat->Fill(track->Pt());
2153             if(isFromStrange) fHistPtTPCInAccSfromStrange->Fill(track->Pt());
2154           }  
2155           if(nClsMCSPD==2) fHistPtTPCInAccMCtwoSPD->Fill(track->Pt());
2156           if(nClsMCSPD>=1) fHistPtTPCInAccMConeSPD->Fill(track->Pt());
2157
2158           if(fillA) {
2159             fHistEtaTPCInAccA->Fill(trackTPC->Eta());
2160             fHistNclsTPCInAccA->Fill(track->GetTPCNclsIter1());
2161             fHistChi2PerClsTPCInAccA->Fill(track->GetTPCchi2Iter1()/track->GetTPCNclsIter1());
2162           }
2163           if(fillB) {
2164             fHistEtaTPCInAccB->Fill(trackTPC->Eta());
2165             fHistNclsTPCInAccB->Fill(track->GetTPCNclsIter1());
2166             fHistChi2PerClsTPCInAccB->Fill(track->GetTPCchi2Iter1()/track->GetTPCNclsIter1());
2167           }
2168           //if(isPrimary) {fHistRProdVtxInAccP->Fill(rProdVtx);} else {fHistRProdVtxInAccS->Fill(rProdVtx);}
2169         }
2170       }
2171     }
2172
2173
2174     if(useTRKvtx) {
2175       // we need the vertex to compute the impact parameters
2176       if(!vertexESD) {delete trackTPC; trackTPC=0; continue;}
2177       if(!(vertexESD->GetStatus()) || vertexESD->GetNContributors()<mincontrTRKvtx) {
2178         if(useSPDvtxifNotTRK) {
2179           vertexESD = fESD->GetPrimaryVertexSPD();
2180         } else {
2181           delete trackTPC; trackTPC=0; continue;
2182         }
2183       }
2184     }
2185
2186     //if(hasSharedSPD) continue;
2187     //if(track->GetITSFakeFlag()) continue;
2188
2189     // track prolonged in ITS with different conditions
2190     if(itsrefit) {
2191       if(itsfindable) {
2192         if(nclsITS==6) fHistPtITSMI6->Fill(track->Pt());
2193         if(nclsITS==5) fHistPtITSMI5->Fill(track->Pt());
2194         if(nclsITS==4) fHistPtITSMI4->Fill(track->Pt());
2195         if(nclsITS==3) fHistPtITSMI3->Fill(track->Pt());
2196         if(nclsITS==2) fHistPtITSMI2->Fill(track->Pt());
2197         if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
2198           fHistPtITSMISPD->Fill(track->Pt());
2199           fHistTPCclsVSPtITSMISPDInAcc->Fill(track->Pt(),track->GetNcls(1));
2200         }
2201         if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1))
2202           fHistPtITSMIoneSPD->Fill(track->Pt());
2203         if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6->Fill(track->Pt());
2204       }
2205       if(itsfindableAcc) {
2206         if(nclsITS==6) {
2207           fHistPtITSMI6InAcc->Fill(track->Pt());
2208           if(track->Pt()>1) {
2209             fHistPhiITSMI6InAcc->Fill(track->Phi());
2210             fHistEtaITSMI6InAcc->Fill(track->Eta());
2211           }
2212           if(isFake) fHistPtITSMI6InAccFake->Fill(track->Pt());
2213           if(isPrimary) {fHistPtITSMI6InAccP->Fill(track->Pt());} else {fHistPtITSMI6InAccS->Fill(track->Pt());}  
2214         }
2215         if(nclsITS==5) {
2216           fHistPtITSMI5InAcc->Fill(track->Pt());
2217           if(track->Pt()>1) {
2218             fHistPhiITSMI5InAcc->Fill(track->Phi());
2219             fHistEtaITSMI5InAcc->Fill(track->Eta());
2220           }
2221           if(isFake) fHistPtITSMI5InAccFake->Fill(track->Pt());
2222           if(isPrimary) {fHistPtITSMI5InAccP->Fill(track->Pt());} else {fHistPtITSMI5InAccS->Fill(track->Pt());}  
2223         }
2224         if(nclsITS==4) {
2225           fHistPtITSMI4InAcc->Fill(track->Pt());
2226           if(track->Pt()>1) {
2227             fHistPhiITSMI4InAcc->Fill(track->Phi());
2228             fHistEtaITSMI4InAcc->Fill(track->Eta());
2229           }
2230           if(isFake) fHistPtITSMI4InAccFake->Fill(track->Pt());
2231           if(isPrimary) {fHistPtITSMI4InAccP->Fill(track->Pt());} else {fHistPtITSMI4InAccS->Fill(track->Pt());}  
2232         }
2233         if(nclsITS==3) {
2234           fHistPtITSMI3InAcc->Fill(track->Pt());
2235           if(track->Pt()>1) {
2236             fHistPhiITSMI3InAcc->Fill(track->Phi());
2237             fHistEtaITSMI3InAcc->Fill(track->Eta());
2238           }
2239           if(isFake) fHistPtITSMI3InAccFake->Fill(track->Pt());
2240           if(isPrimary) {fHistPtITSMI3InAccP->Fill(track->Pt());} else {fHistPtITSMI3InAccS->Fill(track->Pt());}  
2241         }
2242         if(nclsITS==2) {
2243           fHistPtITSMI2InAcc->Fill(track->Pt());
2244           if(track->Pt()>1) {
2245             fHistPhiITSMI2InAcc->Fill(track->Phi());
2246             fHistEtaITSMI2InAcc->Fill(track->Eta());
2247           }
2248           if(isFake) fHistPtITSMI2InAccFake->Fill(track->Pt());
2249           if(isPrimary) {fHistPtITSMI2InAccP->Fill(track->Pt());} else {fHistPtITSMI2InAccS->Fill(track->Pt());}  
2250         }
2251         if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
2252           fHistPtITSMISPDInAcc->Fill(track->Pt());
2253           if(track->Pt()>1) {
2254             fHistPhiITSMISPDInAcc->Fill(track->Phi());
2255             fHistEtaITSMISPDInAcc->Fill(track->Eta());
2256           }
2257           if(isFake) fHistPtITSMISPDInAccFake->Fill(track->Pt());
2258           if(isPrimary) {fHistPtITSMISPDInAccP->Fill(track->Pt());} else {fHistPtITSMISPDInAccS->Fill(track->Pt());}  
2259         }
2260         if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) {
2261           fHistPtITSMIoneSPDInAcc->Fill(track->Pt());
2262           if(track->Pt()>1) {
2263             fHistPhiITSMIoneSPDInAcc->Fill(track->Phi());
2264             fHistEtaITSMIoneSPDInAcc->Fill(track->Eta());
2265           }
2266           if(track->HasSharedPointOnITSLayer(0) || 
2267              track->HasSharedPointOnITSLayer(1) || 
2268              track->HasSharedPointOnITSLayer(2) || 
2269              track->HasSharedPointOnITSLayer(3) || 
2270              track->HasSharedPointOnITSLayer(4) || 
2271              track->HasSharedPointOnITSLayer(5)) {
2272             fHistPtITSMIoneSPDInAccShared->Fill(track->Pt());
2273             if(isFake) fHistPtITSMIoneSPDInAccSharedFake->Fill(track->Pt());
2274           }
2275           if(track->HasSharedPointOnITSLayer(0) || track->HasSharedPointOnITSLayer(1)) {
2276             fHistPtITSMIoneSPDInAccSharedSPD->Fill(track->Pt());
2277             if(isFake) fHistPtITSMIoneSPDInAccSharedSPDFake->Fill(track->Pt());
2278           }
2279           if(track->HasSharedPointOnITSLayer(0)) fHistPtITSMISPD1InAccShared->Fill(track->Pt());
2280           if(track->HasSharedPointOnITSLayer(1)) fHistPtITSMISPD2InAccShared->Fill(track->Pt());
2281
2282           Float_t chi2redITS = track->GetITSchi2()/track->GetNcls(0);
2283           if(fillA) fHistChi2PerClsITSInAccA->Fill(chi2redITS);
2284           if(fillB) fHistChi2PerClsITSInAccB->Fill(chi2redITS);
2285
2286           if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2NonFakePt02->Fill(chi2redITS);
2287           if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2NonFakePt05->Fill(chi2redITS);
2288           if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2NonFakePt1->Fill(chi2redITS);
2289           if(isFake) {
2290             fHistPtITSMIoneSPDInAccFake->Fill(track->Pt());
2291             if(track->Pt()>0.18 && track->Pt()<0.25)  fHistITSRedChi2FakePt02->Fill(chi2redITS);
2292             if(track->Pt()>0.4 && track->Pt()<0.6)  fHistITSRedChi2FakePt05->Fill(chi2redITS);
2293             if(track->Pt()>0.9 && track->Pt()<1.5)  fHistITSRedChi2FakePt1->Fill(chi2redITS);
2294           }
2295           if(nclsSDDSSD>=3) fHistPtITSMIoneSPDthreeSDDSSDInAcc->Fill(track->Pt());
2296
2297           if(isPrimary) {fHistPtITSMIoneSPDInAccP->Fill(track->Pt());} else {fHistPtITSMIoneSPDInAccS->Fill(track->Pt());}  
2298         }
2299         if(nclsokbadoutinzITS==6) fHistPtITSMIokbadoutinz6InAcc->Fill(track->Pt());
2300         if(nclsokbadoutinzITS==5) fHistPtITSMIokbadoutinz5InAcc->Fill(track->Pt());
2301         if(nclsokbadoutinzITS==4) fHistPtITSMIokbadoutinz4InAcc->Fill(track->Pt());
2302         if(nclsokbadoutinzITS==6 && track->Pt()>1) fHistPhiITSMIokbadoutinz6InAcc->Fill(track->Phi());  
2303       }
2304     }
2305
2306     if(tpcrefit) {
2307       fHistNclsITSMI->Fill(nclsITS);
2308     } else {
2309       fHistNclsITSSA->Fill(nclsITS);
2310       if(!outInZ) fHistNclsITSSAInAcc->Fill(nclsITS);
2311     }
2312
2313     
2314     if((tpcrefit && fUseITSSAforNtuples) || // only ITS-SA for ntuples
2315        (!tpcrefit && !fUseITSSAforNtuples)) // only ITS-TPC for ntuples
2316       { delete trackTPC; trackTPC=0; continue; }
2317
2318     // impact parameter to VertexTracks
2319     Float_t d0z0[2]={0,0},covd0z0[3]={0,0,0};
2320     Double_t d0z0TPC[2]={0,0},covd0z0TPC[3]={0,0,0};
2321     if(useTRKvtx) {
2322       if(!track->RelateToVertex(vertexESD,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
2323     } else { 
2324       //if(!track->RelateToVertex(vertexMC,fESD->GetMagneticField(),kVeryBig)) continue;
2325       if(!track->RelateToVertex(spdv,fESD->GetMagneticField(),kVeryBig)) { delete trackTPC; trackTPC=0; continue; }
2326     } 
2327     track->GetImpactParameters(d0z0,covd0z0);
2328     if(trackTPC) trackTPC->PropagateToDCA(spdv,fESD->GetMagneticField(),kVeryBig,d0z0TPC,covd0z0TPC);
2329     if(covd0z0[0]<0. || covd0z0[2]<0. || covd0z0TPC[0]<0. || covd0z0TPC[2]<0.) { delete trackTPC; trackTPC=0; continue; }
2330
2331
2332     // track that passes final ITS+TPC cuts
2333     if(itsfindableAcc && fESDtrackCutsITSTPC->AcceptTrack(track)) {
2334       fHistPtITSTPCsel->Fill(track->Pt());
2335       if(isFake) fHistPtITSTPCselFake->Fill(track->Pt());
2336       fHistdEdxVSPtITSTPCsel->Fill(track->Pt(),track->GetITSsignal());
2337       if(isPrimary) {
2338         fHistPtITSTPCselP->Fill(track->Pt());
2339         if(pdgTrk==321) fHistPtITSTPCselPfromStrange->Fill(track->Pt());
2340       } else {
2341         fHistPtITSTPCselS->Fill(track->Pt());
2342         if(isFromMat) fHistPtITSTPCselSfromMat->Fill(track->Pt());
2343         if(isFromStrange) fHistPtITSTPCselSfromStrange->Fill(track->Pt());
2344       }  
2345     }
2346     
2347
2348     // fill d0 histos
2349     if(((!fUseITSSAforNtuples&&itsfindableAcc) || fUseITSSAforNtuples) /*&& track->Charge()>0*/) {
2350       if(fillA && itsfindableAcc) {
2351         fHistd0rphiTPCInAccA->Fill(d0z0TPC[0]);
2352         fHistd0zTPCInAccA->Fill(d0z0TPC[1]);
2353         if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit) {
2354           fHistd0rphiITSMIoneSPDInAccA->Fill(d0z0[0]);
2355           fHistd0zITSMIoneSPDInAccA->Fill(d0z0[1]);
2356         }
2357       }
2358       if(fillB && itsfindableAcc) {
2359         fHistd0rphiTPCInAccB->Fill(d0z0TPC[0]);
2360         fHistd0zTPCInAccB->Fill(d0z0TPC[1]);
2361         if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit) {
2362           fHistd0rphiITSMIoneSPDInAccB->Fill(d0z0[0]);
2363           fHistd0zITSMIoneSPDInAccB->Fill(d0z0[1]);
2364         }
2365       }
2366       if(track->Pt()>0.150 && track->Pt()<0.200) {
2367         if(isPrimary) {
2368           fHistd0rphiTPCInAccP150200->Fill(d0z0TPC[0]);
2369           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2370             fHistd0rphiITSMISPDInAccP150200->Fill(d0z0[0]);
2371           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2372             //if(((track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) || (!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1))) && itsrefit) {
2373             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP150200->Fill(d0z0[0]);
2374             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP150200->Fill(d0z0[1]);
2375           }
2376         } else {
2377           fHistd0rphiTPCInAccS150200->Fill(d0z0TPC[0]);
2378           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2379             fHistd0rphiITSMISPDInAccS150200->Fill(d0z0[0]);
2380           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2381             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2382               fHistd0rphiITSMIoneSPDInAccS150200->Fill(d0z0[0]);
2383               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS150200fromStrange->Fill(d0z0[0]);
2384               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS150200fromMat->Fill(d0z0[0]);
2385             }
2386             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS150200->Fill(d0z0[1]);
2387             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth150200->Fill(pdgMoth);
2388           }
2389         }
2390       }
2391       if(track->Pt()>0.350 && track->Pt()<0.450) {
2392         if(isPrimary) {
2393           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2394             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP350450->Fill(d0z0[0]);
2395           }
2396         } else {
2397           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2398             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2399               fHistd0rphiITSMIoneSPDInAccS350450->Fill(d0z0[0]);
2400               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS350450fromStrange->Fill(d0z0[0]);
2401               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS350450fromMat->Fill(d0z0[0]);
2402             }
2403           }
2404         }
2405       }
2406       if(track->Pt()>0.500 && track->Pt()<0.700) {
2407         if(isPrimary) {
2408           fHistd0rphiTPCInAccP500700->Fill(d0z0TPC[0]);
2409           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2410             fHistd0rphiITSMISPDInAccP500700->Fill(d0z0[0]);
2411           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2412             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP500700->Fill(d0z0[0]);
2413             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP500700->Fill(d0z0[1]);
2414           }
2415         } else {
2416           fHistd0rphiTPCInAccS500700->Fill(d0z0TPC[0]);
2417           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2418             fHistd0rphiITSMISPDInAccS500700->Fill(d0z0[0]);
2419           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2420             fHistPDGTrk->Fill(pdgTrk);
2421             fHistPDGMoth->Fill(pdgMoth);
2422             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth500700->Fill(pdgMoth);
2423             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2424               fHistd0rphiITSMIoneSPDInAccS500700->Fill(d0z0[0]);
2425               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS500700fromStrange->Fill(d0z0[0]);
2426               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS500700fromMat->Fill(d0z0[0]);
2427             }
2428             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS500700->Fill(d0z0[1]);
2429             if(pdgMoth==310) fHistd0rphiITSMIoneSPDInAccS500700from310->Fill(d0z0[0]);
2430             if(pdgMoth==321) fHistd0rphiITSMIoneSPDInAccS500700from321->Fill(d0z0[0]);
2431             if(pdgMoth==3122) fHistd0rphiITSMIoneSPDInAccS500700from3122->Fill(d0z0[0]);
2432             if(pdgMoth==211) fHistd0rphiITSMIoneSPDInAccS500700from211->Fill(d0z0[0]);
2433             if(pdgMoth==22) fHistd0rphiITSMIoneSPDInAccS500700from22->Fill(d0z0[0]);
2434             if(pdgMoth==211 && TMath::Abs(d0z0[0])>0.5) fHistRProdVtxInAccS->Fill(rProdVtx);
2435           }
2436         }
2437       }
2438       if(track->Pt()>1.000 && track->Pt()<1.500) {
2439         if(isPrimary) {
2440           fHistd0rphiTPCInAccP10001500->Fill(d0z0TPC[0]);
2441           fHistd0zVSetaTPCInAccP10001500->Fill(d0z0TPC[1],trackTPC->Eta());
2442
2443           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2444             fHistd0rphiITSMISPDInAccP10001500->Fill(d0z0[0]);
2445           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2446             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP10001500->Fill(d0z0[0]);
2447             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccP10001500->Fill(d0z0[1]);
2448             fHistd0rphiVSphiITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Phi());
2449             fHistd0rphiVSetaITSMIoneSPDInAccP10001500->Fill(d0z0[0],track->Eta());
2450           }
2451         } else {
2452           fHistd0rphiTPCInAccS10001500->Fill(d0z0TPC[0]);
2453           if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1) && itsrefit)
2454             fHistd0rphiITSMISPDInAccS10001500->Fill(d0z0[0]);
2455           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2456             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2457               fHistd0rphiITSMIoneSPDInAccS10001500->Fill(d0z0[0]);
2458               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS10001500fromStrange->Fill(d0z0[0]);
2459               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS10001500fromMat->Fill(d0z0[0]);
2460             }
2461             if(TMath::Abs(d0z0[0])<maxdcaxyITSTPC) fHistd0zITSMIoneSPDInAccS10001500->Fill(d0z0[1]);
2462             if(TMath::Abs(d0z0[0])<0.1) fHistPDGMoth10001500->Fill(pdgMoth);
2463           }
2464         }
2465       }
2466       if(track->Pt()>2.500 && track->Pt()<4.000) {
2467         if(isPrimary) {
2468           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2469             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP25004000->Fill(d0z0[0]);
2470           }
2471         } else {
2472           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2473             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2474               fHistd0rphiITSMIoneSPDInAccS25004000->Fill(d0z0[0]);
2475               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS25004000fromStrange->Fill(d0z0[0]);
2476               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS25004000fromMat->Fill(d0z0[0]);
2477             }
2478           }
2479         }
2480       }
2481       if(track->Pt()>4.000 && track->Pt()<8.000) {
2482         if(isPrimary) {
2483           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2484             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) fHistd0rphiITSMIoneSPDInAccP40008000->Fill(d0z0[0]);
2485           }
2486         } else {
2487           if((track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) && itsrefit) {
2488             if(TMath::Abs(d0z0[1])<maxdcazITSTPC) {
2489               fHistd0rphiITSMIoneSPDInAccS40008000->Fill(d0z0[0]);
2490               if(isFromStrange) fHistd0rphiITSMIoneSPDInAccS40008000fromStrange->Fill(d0z0[0]);
2491               if(isFromMat) fHistd0rphiITSMIoneSPDInAccS40008000fromMat->Fill(d0z0[0]);
2492             }
2493           }
2494         }
2495       }
2496
2497     }
2498
2499     if(trackTPC) { delete trackTPC; trackTPC=0; }
2500
2501     // encode ITS cluster map, including MC info
2502     Int_t iITSflag=MakeITSflag(track);
2503
2504     // if MC info is available: get particle properties
2505     Float_t ptMC=-999.,pdgMC=-999.,d0MC=-999.;
2506     Double_t d0z0MCv[2]={-999.,-999.},covd0z0MCv[3]={1.,1.,1.};
2507     if(fReadMC) {
2508       part = (TParticle*)stack->Particle(trkLabel);
2509       ptMC=part->Pt();
2510       pdgMC=part->GetPdgCode();
2511       d0MC=ParticleImpParMC(part,vertexMC,0.1*fESD->GetMagneticField());
2512       track->PropagateToDCA(vertexMC,fESD->GetMagneticField(),100.,d0z0MCv,covd0z0MCv);
2513       if(covd0z0MCv[0]<0. || covd0z0MCv[2]<0.) continue;
2514     }
2515
2516     Double_t sigmad0MCv=TMath::Sqrt(covd0z0MCv[0]);
2517     if(!itsrefit) sigmad0MCv *= -1.;
2518     Float_t isPrimaryFl = (isPrimary ? 1. : 0.);
2519     Float_t isTPCSelFl  = (itsfindableAcc ? 1. : 0.);
2520
2521     // fill ntuple with track properties
2522     if(fFillNtuples && SelectPt(track->Pt())) {
2523       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};
2524       fNtupleESDTracks->Fill(fillArray);
2525     }
2526
2527     //---------------------------------------------    
2528     // AliTrackPoints: alignment checks
2529     // 
2530     if(!fFillNtuples) continue;
2531
2532     const AliTrackPointArray *array = track->GetTrackPointArray();
2533     if(!array) continue;
2534     AliTrackPoint point;
2535     Int_t pointOnLayer[6]={0,0,0,0,0,0};
2536     Int_t indexAssociated[6]={-1,-1,-1,-1,-1,-1},indexExtra=-1;
2537     Bool_t extra=kFALSE;
2538     Int_t layerId,layerExtra=-1;
2539     for(Int_t ipt=0; ipt<array->GetNPoints(); ipt++) {
2540       array->GetPoint(point,ipt);
2541       Float_t r = TMath::Sqrt(point.GetX()*point.GetX()+point.GetY()*point.GetY());
2542
2543       if(r>3 && r<6) {
2544         layerId = 0;
2545       } else if(r>6 && r<8) {
2546         layerId = 1;
2547       } else if(r>8 && r<18) {
2548         layerId = 2;
2549       } else if(r>18 && r<30) {
2550         layerId = 3;
2551       } else if(r>30 && r<40) {
2552         layerId = 4;
2553       } else if(r>40 && r<50) {
2554         layerId = 5;
2555       } else {
2556         layerId=100;
2557       }
2558
2559       // only ITS points
2560       if(layerId>5) continue;
2561
2562       if(!point.IsExtra()) {
2563         pointOnLayer[layerId]++;
2564         indexAssociated[layerId]=ipt;
2565       } else {
2566         // this is an extra cluster
2567         extra=kTRUE;
2568         layerExtra=layerId;
2569         indexExtra=ipt;
2570       }
2571     } // end loop on AliTrackPoints
2572
2573     TString vtitle = spdv->GetTitle();
2574     if(!vtitle.Contains("3D")) continue; 
2575
2576     // SPD tracklet
2577     if(indexAssociated[0]>=0 && indexAssociated[1]>=0) {
2578       AliTrackPoint pointSPD1,pointSPD2;
2579       array->GetPoint(pointSPD1,indexAssociated[0]);
2580       array->GetPoint(pointSPD2,indexAssociated[1]);
2581       Float_t phi=TMath::ATan2(pointSPD2.GetY()-pointSPD1.GetY(),pointSPD2.GetX()-pointSPD1.GetX());
2582       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())));
2583       Float_t theta=0.5*TMath::Pi()-lambda;
2584       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);
2585       AliESDtrack tracklet(&particle);
2586       Float_t dz[2];
2587       // distance to primary SPD (only if 3D and high multiplicity)
2588       if(spdv->GetNContributors()>10) { 
2589         tracklet.GetDZ(spdv->GetXv(),spdv->GetYv(),spdv->GetZv(),0,dz);
2590         //tracklet.GetDZ(-0.07,0.25,spdv->GetZv(),0,dz);
2591         fNtupleITSAlignSPDTracklets->Fill(phi,theta,0.5*(pointSPD1.GetZ()+pointSPD2.GetZ()),dz[0],dz[1],track->Pt());
2592       }
2593     }
2594
2595     // distance to extra
2596     if(extra && spdv->GetNContributors()>4 && indexAssociated[layerExtra]>-1) {
2597       AliTrackPoint pointExtra,pointAssociated;
2598       array->GetPoint(pointAssociated,indexAssociated[layerExtra]);
2599       array->GetPoint(pointExtra,indexExtra);
2600       Float_t phiExtra = TMath::ATan2(pointExtra.GetY()-spdv->GetYv(),pointExtra.GetX()-spdv->GetXv());
2601       Float_t phiAssociated = TMath::ATan2(pointAssociated.GetY()-spdv->GetYv(),pointAssociated.GetX()-spdv->GetXv());
2602       Float_t rExtra = TMath::Sqrt((pointExtra.GetX()-spdv->GetXv())*(pointExtra.GetX()-spdv->GetXv())+(pointExtra.GetY()-spdv->GetYv())*(pointExtra.GetY()-spdv->GetYv()));
2603       Float_t rAssociated = TMath::Sqrt((pointAssociated.GetX()-spdv->GetXv())*(pointAssociated.GetX()-spdv->GetXv())+(pointAssociated.GetY()-spdv->GetYv())*(pointAssociated.GetY()-spdv->GetYv()));
2604       Float_t dzExtra[2];
2605       dzExtra[0] = (phiExtra-phiAssociated)*0.5*(rExtra+rAssociated);
2606       dzExtra[1] = pointExtra.GetZ()-pointAssociated.GetZ()-(rExtra-rAssociated)*(pointAssociated.GetZ()-spdv->GetZv())/rAssociated;
2607       Float_t xlocExtra=-100.,zlocExtra=-100.;
2608       fNtupleITSAlignExtra->Fill(layerExtra,pointExtra.GetX(),pointExtra.GetY(),pointExtra.GetZ(),dzExtra[0],dzExtra[1],xlocExtra,zlocExtra,nclsITS,track->Pt());  
2609     }
2610     
2611     if(trackTPC) { delete trackTPC; trackTPC=0; }
2612   } // end loop on tracks
2613   
2614   if(vertexMC) { delete vertexMC; vertexMC=0; }
2615
2616   delete esdtrackCutsTPC;    esdtrackCutsTPC=0;
2617   delete esdtrackCutsITSTPC; esdtrackCutsITSTPC=0;
2618
2619   PostData(1, fOutput);
2620
2621   return;
2622 }      
2623
2624 //________________________________________________________________________
2625 void AliAnalysisTaskITSTrackingCheck::Terminate(Option_t *) 
2626 {
2627   // Draw result to the screen
2628   // Called once at the end of the query
2629   fOutput = dynamic_cast<TList*> (GetOutputData(1));
2630   if (!fOutput) {     
2631     Printf("ERROR: fOutput not available");
2632     return;
2633   }
2634   fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
2635   fHistNEventsFrac = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEventsFrac"));
2636   if(fHistNEvents && fHistNEventsFrac) {
2637     for(Int_t ibin=2; ibin<=fHistNEvents->GetNbinsX(); ibin++) {
2638       if(fHistNEvents->GetBinContent(2)) fHistNEventsFrac->SetBinContent(ibin,fHistNEvents->GetBinContent(ibin)/fHistNEvents->GetBinContent(2)); 
2639     }
2640   }
2641
2642   return;
2643 }
2644 //---------------------------------------------------------------------------
2645 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClustersMC(Int_t label,Int_t nModules) const
2646 {
2647   //
2648   // Return number of ITS clusters produced by MC particle with given label
2649   //
2650   
2651   AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2652   if(!esdHRP) return -1;
2653   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2654   if(!cTree) return -1;
2655   TClonesArray *clusters=0;
2656   cTree->SetBranchAddress("ITSRecPoints",&clusters);
2657   if(!clusters) return -1;
2658
2659   AliITSRecPoint *c=0;
2660   Int_t i,n,icl,lay,ilab;
2661   Int_t ncls[6]={0,0,0,0,0,0};
2662   Int_t nclstot=0;
2663
2664   for(i=0; i<nModules; i++) {
2665     cTree->GetEvent(i);
2666     n=clusters->GetEntriesFast();
2667     for (icl=0; icl<n; icl++) {
2668       c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2669       lay=c->GetLayer();
2670       //printf("mod %d lay %d xloc %f zloc %f\n",i,lay,c->GetDetLocalX(),c->GetDetLocalZ());
2671       for(ilab=0;ilab<3;ilab++) {
2672         if(c->GetLabel(ilab)==label) ncls[lay]++;
2673       }
2674     }
2675   }
2676   for(i=0;i<6;i++) { 
2677     //printf("%d\n",ncls[i]); 
2678     if(ncls[i]) nclstot++; 
2679   }
2680
2681   return nclstot;
2682 }
2683 //---------------------------------------------------------------------------
2684 Int_t AliAnalysisTaskITSTrackingCheck::NumberOfITSClusters(Int_t idet,Float_t &xloc) const
2685 {
2686   //
2687   // Return number of ITS clusters produced by MC particle with given label
2688   //
2689   
2690   AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2691   if(!esdHRP) return -1;
2692   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2693   if(!cTree) return -1;
2694   TClonesArray *clusters=0;   // new TClonesArray("AliITSRecPoint",10000);
2695   cTree->SetBranchAddress("ITSRecPoints",&clusters);
2696   if(!clusters) return -1;
2697
2698   AliITSRecPoint *c=0;
2699   Int_t n,icl;
2700
2701   cTree->GetEvent(idet);
2702   n=clusters->GetEntriesFast();
2703
2704   if(n==1) {
2705     for (icl=0; icl<n; icl++) {
2706       c=(AliITSRecPoint*)clusters->UncheckedAt(icl);
2707       xloc = c->GetDetLocalX();
2708     }
2709   }
2710   return n;
2711 }
2712 //---------------------------------------------------------------------------
2713 void AliAnalysisTaskITSTrackingCheck::FillNClustersModuleMap()
2714 {
2715   //
2716   // Number of clusters per module
2717   //
2718   
2719   AliESDInputHandlerRP *esdHRP = dynamic_cast<AliESDInputHandlerRP*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
2720   if(!esdHRP) return;
2721   TTree *cTree = (TTree*)esdHRP->GetTreeR("ITS");
2722   if(!cTree) return;
2723   TClonesArray *clusters=0;   // new TClonesArray("AliITSRecPoint",10000);
2724   cTree->SetBranchAddress("ITSRecPoints",&clusters);
2725
2726   for(Int_t idet=0;idet<2198;idet++) {
2727     cTree->GetEvent(idet);
2728     if(!clusters) continue;
2729     fHistNClustersMapModule->SetBinContent(idet,clusters->GetEntriesFast());
2730   }
2731
2732   return;
2733 }
2734 //---------------------------------------------------------------------------
2735 Double_t AliAnalysisTaskITSTrackingCheck::ParticleImpParMC(TParticle *part,
2736                                                            AliESDVertex *vert,
2737                                                            Double_t bzT) const
2738 {
2739   //
2740   // Return the MC value of the impact parameter
2741   //
2742  
2743   Double_t vx=part->Vx()-vert->GetX();
2744   Double_t vy=part->Vy()-vert->GetY();
2745       
2746   Double_t pt=part->Pt();     
2747   Double_t px=part->Px();     
2748   Double_t py=part->Py();     
2749   Double_t charge = (part->GetPdgCode()>0. ? 1. : -1.);
2750   if(TMath::Abs(part->GetPdgCode())<100) charge*=-1.;
2751
2752   if(px<0.000001) px=0.000001;     
2753   Double_t rAnd=((10./2.99792458)*pt/bzT)*100.;
2754   Double_t center[3],d0;
2755   center[0]=vx-(1./charge)*rAnd*(py/pt);
2756   center[1]=vy+(1./charge)*rAnd*(px/pt);
2757   center[2]=TMath::Sqrt(center[0]*center[0]+center[1]*center[1]);
2758   d0 = -center[2]+rAnd;
2759
2760   return d0;
2761 }
2762 //---------------------------------------------------------------------------
2763 Bool_t AliAnalysisTaskITSTrackingCheck::SelectPt(Double_t pt)
2764 {
2765   //
2766   // Keep only tracks in given pt bins
2767   // 
2768   Double_t ptlower[11]={0.15,0.29,0.49,0.75,0.9,1.9,3.5,6.5, 9.,19.,27.};
2769   Double_t ptupper[11]={0.16,0.31,0.51,0.85,1.1,2.1,4.5,7.5,11.,21.,33.};
2770
2771   for(Int_t i=0; i<11; i++) {
2772     if(pt>ptlower[i] && pt<ptupper[i]) {
2773       fCountsPerPtBin[i]++;
2774       return kTRUE;
2775     }
2776   }
2777   return kFALSE;
2778   //return kTRUE;
2779 }
2780 //---------------------------------------------------------------------------
2781 Int_t AliAnalysisTaskITSTrackingCheck::MakeITSflag(AliESDtrack *track) const {
2782   //
2783   // ITSflag takes the value 0 if the track has no cluster assigned in the SPDs, 
2784   // 1 (2) if one cluster is assigned in SPD1(2), 3 if two clusters are present. 
2785   // Then the same adding 10,20 or 30 for SDD and 100,200 or 300 for SSD
2786   //
2787   Int_t iITSflag=0;
2788   if(track->HasPointOnITSLayer(0)) iITSflag+=1;
2789   if(track->HasPointOnITSLayer(1)) iITSflag+=2;
2790   if(track->HasPointOnITSLayer(2)) iITSflag+=10;
2791   if(track->HasPointOnITSLayer(3)) iITSflag+=20;
2792   if(track->HasPointOnITSLayer(4)) iITSflag+=100;
2793   if(track->HasPointOnITSLayer(5)) iITSflag+=200;
2794   
2795   if(iITSflag==333 && track->GetNcls(0)<6)
2796     printf(" ERROR %d   %d\n",track->GetNcls(0),track->GetLabel());
2797   
2798   // number of associated ITS clusters
2799   iITSflag += 1000*track->GetNcls(0);
2800   
2801   // number of associated TPC clusters
2802   iITSflag += 100000*track->GetNcls(1);
2803   
2804   // if MC info and is available
2805   // write the number of ITS clusters produced by this track
2806   Int_t nITSclsMC=0;
2807   if(fReadMC && fReadRPLabels) {
2808     nITSclsMC = NumberOfITSClustersMC(TMath::Abs(track->GetLabel()));
2809     if(nITSclsMC>=0) iITSflag += 10000*nITSclsMC;    
2810     // flag fake tracks
2811     if(track->GetLabel()<0) iITSflag *= -1;
2812   }
2813
2814   return iITSflag;
2815 }
2816 //---------------------------------------------------------------------------
2817 Bool_t AliAnalysisTaskITSTrackingCheck::IsSelectedCentrality() const
2818 {
2819   //
2820   // check if events is in the required multiplicity range
2821   //
2822
2823   const AliMultiplicity *alimult = fESD->GetMultiplicity();
2824   Int_t ntrklets=1;
2825   Int_t nclsSPDouter=0;
2826   if(alimult) {
2827     ntrklets = alimult->GetNumberOfTracklets();
2828     nclsSPDouter = alimult->GetNumberOfITSClusters(1);
2829   }
2830
2831   if(nclsSPDouter<fMinMult || nclsSPDouter>fMaxMult) return kFALSE;
2832
2833
2834   return kTRUE;
2835 }
2836
2837
2838