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