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