]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysis.cxx
Attempt to monitor what file is read and merged by what job
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / ChargedHadrons / dNdPt / AlidNdPtAnalysis.cxx
CommitLineData
0aaa8b91 1/**************************************************************************\r
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
3 * *\r
4 * Author: The ALICE Off-line Project. *\r
5 * Contributors are mentioned in the code where appropriate. *\r
6 * *\r
7 * Permission to use, copy, modify and distribute this software and its *\r
8 * documentation strictly for non-commercial purposes is hereby granted *\r
9 * without fee, provided that the above copyright notice appears in all *\r
10 * copies and that both the copyright notice and this permission notice *\r
11 * appear in the supporting documentation. The authors make no claims *\r
12 * about the suitability of this software for any purpose. It is *\r
13 * provided "as is" without express or implied warranty. *\r
14 **************************************************************************/\r
00b81913 15//------------------------------------------------------------------------------\r
16// AlidNdPtAnalysis class. \r
17// \r
18// a. functionality:\r
19// - fills analysis control histograms\r
20// - fills generic correction matrices \r
21// - generates correction matrices \r
22//\r
23// b. data members:\r
24// - generic correction matrices\r
25// - control histograms\r
26//\r
27// Author: J.Otwinowski 04/11/2008 \r
df1c0513 28// last change: 2013-06-13 by M.Knichel\r
29//\r
30// meaning of different multiplicities:\r
31// multRec : number of reconstructed tracks, after AcceptanceCuts and TrackCuts\r
32// multRecMult : number of reconstructed tracks, after MultAcceptanceCuts and MultTrackCuts\r
33// multMB : number of contributers to vertex\r
34// multTrueMC : MC true mult, after MultAcceptanceCuts\r
35// mutlAll : number of ESD tracks\r
36// mutlAcc : number of ESD tracks after AcceptanceCuts\r
00b81913 37//------------------------------------------------------------------------------\r
0aaa8b91 38\r
0aaa8b91 39#include "TH1.h"\r
40#include "TH2.h"\r
0aaa8b91 41#include "TCanvas.h"\r
c931948b 42#include "THnSparse.h"\r
0aaa8b91 43\r
44#include "AliHeader.h" \r
17f2bf95 45#include "AliInputEventHandler.h" \r
46#include "AliAnalysisManager.h" \r
0aaa8b91 47#include "AliGenEventHeader.h" \r
48#include "AliStack.h" \r
49#include "AliESDEvent.h" \r
50#include "AliMCEvent.h" \r
51#include "AliESDtrackCuts.h" \r
52#include "AliLog.h" \r
7f7dd416 53#include "AliMultiplicity.h"\r
54#include "AliTracker.h"\r
0aaa8b91 55\r
56#include "AlidNdPtEventCuts.h"\r
57#include "AlidNdPtAcceptanceCuts.h"\r
d269b0e6 58#include "AliPhysicsSelection.h"\r
17e8c701 59#include "AliTriggerAnalysis.h"\r
0aaa8b91 60\r
bad4ba69 61#include "AliPWG0Helper.h"\r
62#include "AlidNdPtHelper.h"\r
0aaa8b91 63#include "AlidNdPtAnalysis.h"\r
64\r
65using namespace std;\r
66\r
67ClassImp(AlidNdPtAnalysis)\r
68\r
69//_____________________________________________________________________________\r
70 AlidNdPtAnalysis::AlidNdPtAnalysis(): AlidNdPt(),\r
71 fAnalysisFolder(0),\r
72 fHistogramsOn(kFALSE),\r
73\r
74 // event multiplicity correlation matrix \r
75 fEventMultCorrelationMatrix(0),\r
76\r
77 // rec. track pt vs true track pt correlation matrix \r
78 fTrackPtCorrelationMatrix(0),\r
79\r
80 // event level correction\r
81 fGenEventMatrix(0),\r
82 fGenSDEventMatrix(0),\r
83 fGenDDEventMatrix(0),\r
84 fGenNDEventMatrix(0),\r
85 fGenNSDEventMatrix(0),\r
86\r
87 fTriggerEventMatrix(0),\r
88 fTriggerSDEventMatrix(0),\r
89 fTriggerDDEventMatrix(0),\r
90 fTriggerNDEventMatrix(0),\r
91 fTriggerNSDEventMatrix(0),\r
92\r
93 fRecEventMatrix(0),\r
94 fRecSDEventMatrix(0),\r
95 fRecDDEventMatrix(0),\r
96 fRecNDEventMatrix(0),\r
97 fRecNSDEventMatrix(0),\r
98\r
99 //\r
100 // track-event level correction \r
101 //\r
102 fGenTrackEventMatrix(0),\r
103 fGenTrackSDEventMatrix(0),\r
104 fGenTrackDDEventMatrix(0),\r
105 fGenTrackNDEventMatrix(0),\r
106 fGenTrackNSDEventMatrix(0),\r
107\r
108 fTriggerTrackEventMatrix(0),\r
109 fTriggerTrackSDEventMatrix(0),\r
110 fTriggerTrackDDEventMatrix(0),\r
111 fTriggerTrackNDEventMatrix(0),\r
112 fTriggerTrackNSDEventMatrix(0),\r
113\r
114 fRecTrackEventMatrix(0),\r
115 fRecTrackSDEventMatrix(0),\r
116 fRecTrackDDEventMatrix(0),\r
117 fRecTrackNDEventMatrix(0),\r
118 fRecTrackNSDEventMatrix(0),\r
119\r
120 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)\r
985bdfd5 121 fGenTrackMatrix(0),\r
0aaa8b91 122 fGenPrimTrackMatrix(0),\r
123 fRecPrimTrackMatrix(0),\r
124\r
125 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)\r
126 fRecTrackMatrix(0),\r
127 fRecSecTrackMatrix(0),\r
128\r
129 // multiple rec. track contamination corrections (fRecMultTrackMatrix / fRecTrackMatrix)\r
130 fRecMultTrackMatrix(0),\r
131\r
132 // event control histograms\r
133 fMCEventHist1(0),\r
134 fRecEventHist1(0),\r
135 fRecEventHist2(0),\r
136 fRecMCEventHist1(0),\r
137 fRecMCEventHist2(0),\r
138 fRecMCEventHist3(0),\r
139\r
140 // rec. pt and eta resolution w.r.t MC\r
141 fRecMCTrackHist1(0),\r
142\r
143 //multple reconstructed tracks\r
985bdfd5 144 fMCMultRecTrackHist1(0), \r
145\r
146 // rec. track control histograms\r
f4f8cae4 147 fRecTrackHist2(0),\r
148\r
149 // Generic histograms to be corrected\r
150 fRecEventHist(0),\r
55468faf 151 fRecTrackHist(0),\r
24c88fc4 152 fEventCount(0),\r
df1c0513 153 fMCPrimTrackHist(0),\r
f4f8cae4 154\r
55468faf 155 // Candle event histogram\r
68f10917 156 fRecCandleEventMatrix(0),\r
157 \r
158 fMultNbins(0),\r
159 fPtNbins(0),\r
160 fPtCorrNbins(0),\r
161 fEtaNbins(0),\r
162 fZvNbins(0),\r
163 fBinsMult(0),\r
164 fBinsPt(0),\r
165 fBinsPtCorr(0),\r
166 fBinsEta(0),\r
167 fBinsZv(0),\r
168\r
169 fIsInit(kFALSE) \r
170 \r
0aaa8b91 171{\r
172 // default constructor\r
173 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
174 fMCTrackHist1[i]=0; \r
175 fMCPrimTrackHist1[i]=0; \r
7f7dd416 176 fMCPrimTrackHist2[i]=0; \r
0aaa8b91 177 fMCSecTrackHist1[i]=0; \r
178 fRecTrackHist1[i]=0; \r
179 fRecTrackMultHist1[i]=0; \r
180 }\r
68f10917 181 //Init();\r
0aaa8b91 182}\r
183\r
184//_____________________________________________________________________________\r
185AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,title),\r
186 fAnalysisFolder(0),\r
187 fHistogramsOn(kFALSE),\r
188\r
189 // event multiplicity correlation matrix \r
190 fEventMultCorrelationMatrix(0),\r
191\r
192 // rec. track pt vs true track pt correlation matrix \r
193 fTrackPtCorrelationMatrix(0),\r
194\r
195 // event level correction\r
196 fGenEventMatrix(0),\r
197 fGenSDEventMatrix(0),\r
198 fGenDDEventMatrix(0),\r
199 fGenNDEventMatrix(0),\r
200 fGenNSDEventMatrix(0),\r
201\r
202 fTriggerEventMatrix(0),\r
203 fTriggerSDEventMatrix(0),\r
204 fTriggerDDEventMatrix(0),\r
205 fTriggerNDEventMatrix(0),\r
206 fTriggerNSDEventMatrix(0),\r
207\r
208 fRecEventMatrix(0),\r
209 fRecSDEventMatrix(0),\r
210 fRecDDEventMatrix(0),\r
211 fRecNDEventMatrix(0),\r
212 fRecNSDEventMatrix(0),\r
213\r
214 //\r
215 // track-event level correction \r
216 //\r
217 fGenTrackEventMatrix(0),\r
218 fGenTrackSDEventMatrix(0),\r
219 fGenTrackDDEventMatrix(0),\r
220 fGenTrackNDEventMatrix(0),\r
221 fGenTrackNSDEventMatrix(0),\r
222\r
223 fTriggerTrackEventMatrix(0),\r
224 fTriggerTrackSDEventMatrix(0),\r
225 fTriggerTrackDDEventMatrix(0),\r
226 fTriggerTrackNDEventMatrix(0),\r
227 fTriggerTrackNSDEventMatrix(0),\r
228\r
229 fRecTrackEventMatrix(0),\r
230 fRecTrackSDEventMatrix(0),\r
231 fRecTrackDDEventMatrix(0),\r
232 fRecTrackNDEventMatrix(0),\r
233 fRecTrackNSDEventMatrix(0),\r
234\r
235 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)\r
985bdfd5 236 fGenTrackMatrix(0),\r
0aaa8b91 237 fGenPrimTrackMatrix(0),\r
238 fRecPrimTrackMatrix(0),\r
239\r
240 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)\r
241 fRecTrackMatrix(0),\r
242 fRecSecTrackMatrix(0),\r
243\r
244 // multiple rec. track contamination corrections (fRecMultTrackMatrix / fRecTrackMatrix)\r
245 fRecMultTrackMatrix(0),\r
246\r
247 // event control histograms\r
248 fMCEventHist1(0),\r
249 fRecEventHist1(0),\r
250 fRecEventHist2(0),\r
251 fRecMCEventHist1(0),\r
252 fRecMCEventHist2(0),\r
253 fRecMCEventHist3(0),\r
254 \r
255 // rec. pt and eta resolution w.r.t MC\r
256 fRecMCTrackHist1(0),\r
257\r
258 //multple reconstructed tracks\r
985bdfd5 259 fMCMultRecTrackHist1(0), \r
260\r
261 // rec. track control histograms\r
f4f8cae4 262 fRecTrackHist2(0),\r
263\r
264 // Generic histograms to be corrected\r
265 fRecEventHist(0),\r
55468faf 266 fRecTrackHist(0),\r
24c88fc4 267 fEventCount(0),\r
df1c0513 268 fMCPrimTrackHist(0),\r
55468faf 269\r
270 // Candle event histogram\r
68f10917 271 fRecCandleEventMatrix(0),\r
272 \r
273 fMultNbins(0),\r
274 fPtNbins(0),\r
275 fPtCorrNbins(0),\r
276 fEtaNbins(0),\r
277 fZvNbins(0),\r
278 fBinsMult(0),\r
279 fBinsPt(0),\r
280 fBinsPtCorr(0),\r
281 fBinsEta(0),\r
282 fBinsZv(0),\r
283\r
284 fIsInit(kFALSE) \r
285 \r
0aaa8b91 286{\r
00b81913 287 //\r
0aaa8b91 288 // constructor\r
00b81913 289 //\r
0aaa8b91 290 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
291 fMCTrackHist1[i]=0; \r
292 fMCPrimTrackHist1[i]=0; \r
7f7dd416 293 fMCPrimTrackHist2[i]=0; \r
0aaa8b91 294 fMCSecTrackHist1[i]=0; \r
295 fRecTrackHist1[i]=0; \r
296 fRecTrackMultHist1[i]=0; \r
297 }\r
298\r
68f10917 299 //Init();\r
0aaa8b91 300}\r
301\r
302//_____________________________________________________________________________\r
303AlidNdPtAnalysis::~AlidNdPtAnalysis() {\r
00b81913 304 //\r
305 // destructor\r
0aaa8b91 306 //\r
307 if(fEventMultCorrelationMatrix) delete fEventMultCorrelationMatrix; fEventMultCorrelationMatrix=0;\r
308 //\r
309 if(fTrackPtCorrelationMatrix) delete fTrackPtCorrelationMatrix; fTrackPtCorrelationMatrix=0;\r
310 //\r
311 if(fGenEventMatrix) delete fGenEventMatrix; fGenEventMatrix=0;\r
312 if(fGenSDEventMatrix) delete fGenSDEventMatrix; fGenSDEventMatrix=0;\r
313 if(fGenDDEventMatrix) delete fGenDDEventMatrix; fGenDDEventMatrix=0;\r
314 if(fGenNDEventMatrix) delete fGenNDEventMatrix; fGenNDEventMatrix=0;\r
315 if(fGenNSDEventMatrix) delete fGenNSDEventMatrix; fGenNSDEventMatrix=0;\r
316\r
317 if(fTriggerEventMatrix) delete fTriggerEventMatrix; fTriggerEventMatrix=0;\r
318 if(fTriggerSDEventMatrix) delete fTriggerSDEventMatrix; fTriggerSDEventMatrix=0;\r
319 if(fTriggerDDEventMatrix) delete fTriggerDDEventMatrix; fTriggerDDEventMatrix=0;\r
320 if(fTriggerNDEventMatrix) delete fTriggerNDEventMatrix; fTriggerNDEventMatrix=0;\r
321 if(fTriggerNSDEventMatrix) delete fTriggerNSDEventMatrix; fTriggerNSDEventMatrix=0;\r
322\r
323 if(fRecEventMatrix) delete fRecEventMatrix; fRecEventMatrix=0;\r
324 if(fRecSDEventMatrix) delete fRecSDEventMatrix; fRecSDEventMatrix=0;\r
325 if(fRecDDEventMatrix) delete fRecDDEventMatrix; fRecDDEventMatrix=0;\r
326 if(fRecNDEventMatrix) delete fRecNDEventMatrix; fRecNDEventMatrix=0;\r
327 if(fRecNSDEventMatrix) delete fRecNSDEventMatrix; fRecNSDEventMatrix=0;\r
328\r
55468faf 329 if(fRecCandleEventMatrix) delete fRecCandleEventMatrix; fRecCandleEventMatrix=0;\r
0aaa8b91 330 //\r
331 if(fGenTrackEventMatrix) delete fGenTrackEventMatrix; fGenTrackEventMatrix=0;\r
332 if(fGenTrackSDEventMatrix) delete fGenTrackSDEventMatrix; fGenTrackSDEventMatrix=0;\r
333 if(fGenTrackDDEventMatrix) delete fGenTrackDDEventMatrix; fGenTrackDDEventMatrix=0;\r
334 if(fGenTrackNDEventMatrix) delete fGenTrackNDEventMatrix; fGenTrackNDEventMatrix=0;\r
335 if(fGenTrackNSDEventMatrix) delete fGenTrackNSDEventMatrix; fGenTrackNSDEventMatrix=0;\r
336\r
515964cb 337 if(fTriggerTrackEventMatrix) delete fTriggerTrackEventMatrix; fTriggerTrackEventMatrix=0;\r
0aaa8b91 338 if(fTriggerTrackSDEventMatrix) delete fTriggerTrackSDEventMatrix; fTriggerTrackSDEventMatrix=0;\r
339 if(fTriggerTrackDDEventMatrix) delete fTriggerTrackDDEventMatrix; fTriggerTrackDDEventMatrix=0;\r
340 if(fTriggerTrackNDEventMatrix) delete fTriggerTrackNDEventMatrix; fTriggerTrackNDEventMatrix=0;\r
341 if(fTriggerTrackNSDEventMatrix) delete fTriggerTrackNSDEventMatrix; fTriggerTrackNSDEventMatrix=0;\r
342\r
343 if(fRecTrackEventMatrix) delete fRecTrackEventMatrix; fRecTrackEventMatrix=0;\r
344 if(fRecTrackSDEventMatrix) delete fRecTrackSDEventMatrix; fRecTrackSDEventMatrix=0;\r
345 if(fRecTrackDDEventMatrix) delete fRecTrackDDEventMatrix; fRecTrackDDEventMatrix=0;\r
346 if(fRecTrackNDEventMatrix) delete fRecTrackNDEventMatrix; fRecTrackNDEventMatrix=0;\r
347 if(fRecTrackNSDEventMatrix) delete fRecTrackNSDEventMatrix; fRecTrackNSDEventMatrix=0;\r
348\r
349 //\r
985bdfd5 350 if(fGenTrackMatrix) delete fGenTrackMatrix; fGenTrackMatrix=0;\r
0aaa8b91 351 if(fGenPrimTrackMatrix) delete fGenPrimTrackMatrix; fGenPrimTrackMatrix=0;\r
352 if(fRecPrimTrackMatrix) delete fRecPrimTrackMatrix; fRecPrimTrackMatrix=0;\r
353 //\r
354 if(fRecTrackMatrix) delete fRecTrackMatrix; fRecTrackMatrix=0;\r
355 if(fRecSecTrackMatrix) delete fRecSecTrackMatrix; fRecSecTrackMatrix=0;\r
356 // \r
357 if(fRecMultTrackMatrix) delete fRecMultTrackMatrix; fRecMultTrackMatrix=0;\r
358 //\r
359 // Control histograms\r
360 //\r
361 if(fMCEventHist1) delete fMCEventHist1; fMCEventHist1=0;\r
362 if(fRecEventHist1) delete fRecEventHist1; fRecEventHist1=0;\r
363 if(fRecEventHist2) delete fRecEventHist2; fRecEventHist2=0;\r
364 if(fRecMCEventHist1) delete fRecMCEventHist1; fRecMCEventHist1=0;\r
365 if(fRecMCEventHist2) delete fRecMCEventHist2; fRecMCEventHist2=0;\r
366 if(fRecMCEventHist3) delete fRecMCEventHist3; fRecMCEventHist3=0;\r
367 //\r
368 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
369 if(fMCTrackHist1[i]) delete fMCTrackHist1[i]; fMCTrackHist1[i]=0;\r
370 if(fMCPrimTrackHist1[i]) delete fMCPrimTrackHist1[i]; fMCPrimTrackHist1[i]=0;\r
7f7dd416 371 if(fMCPrimTrackHist2[i]) delete fMCPrimTrackHist2[i]; fMCPrimTrackHist2[i]=0;\r
0aaa8b91 372 if(fMCSecTrackHist1[i]) delete fMCSecTrackHist1[i]; fMCSecTrackHist1[i]=0;\r
373 if(fRecTrackHist1[i]) delete fRecTrackHist1[i]; fRecTrackHist1[i]=0;\r
374 if(fRecTrackMultHist1[i]) delete fRecTrackMultHist1[i]; fRecTrackMultHist1[i]=0;\r
375 }\r
376 if(fRecMCTrackHist1) delete fRecMCTrackHist1; fRecMCTrackHist1=0;\r
377 if(fMCMultRecTrackHist1) delete fMCMultRecTrackHist1; fMCMultRecTrackHist1=0; \r
985bdfd5 378 if(fRecTrackHist2) delete fRecTrackHist2; fRecTrackHist2=0; \r
f4f8cae4 379\r
380 //\r
381 if(fRecEventHist) delete fRecEventHist; fRecEventHist=0; \r
382 if(fRecTrackHist) delete fRecTrackHist; fRecTrackHist=0; \r
24c88fc4 383 if(fEventCount) delete fEventCount; fEventCount=0;\r
df1c0513 384 if(fMCPrimTrackHist) delete fMCPrimTrackHist; fMCPrimTrackHist=0;\r
f4f8cae4 385\r
0aaa8b91 386 //\r
387 if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0;\r
fc98fbb5 388 \r
389 if (fBinsMult) delete[] fBinsMult; fBinsMult=0;\r
390 if (fBinsPt) delete[] fBinsPt; fBinsPt=0;\r
391 if (fBinsPtCorr) delete[] fBinsPtCorr; fBinsPtCorr=0;\r
392 if (fBinsEta) delete[] fBinsEta; fBinsEta=0;\r
393 if (fBinsZv) delete[] fBinsMult; fBinsZv=0;\r
0aaa8b91 394}\r
395\r
396//_____________________________________________________________________________\r
fc98fbb5 397void AlidNdPtAnalysis::Init()\r
398{\r
399 //define default binning\r
df1c0513 400 Double_t binsMultDefault[15] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5, 9.5, 10.5, 20.5, 50.5, 150.5};\r
fc98fbb5 401 Double_t binsPtDefault[69] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
402 Double_t binsPtCorrDefault[37] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,50.0}; \r
403 Double_t binsEtaDefault[31] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
404 Double_t binsZvDefault[13] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
405\r
406 // if no binning is set, use the default\r
df1c0513 407 if (!fBinsMult) { SetBinsMult(14,binsMultDefault); }\r
fc98fbb5 408 if (!fBinsPt) { SetBinsPt(68,binsPtDefault); }\r
409 if (!fBinsPtCorr) { SetBinsPtCorr(36,binsPtCorrDefault); }\r
410 if (!fBinsEta) { SetBinsEta(30,binsEtaDefault); }\r
411 if (!fBinsZv) { SetBinsZv(12,binsZvDefault); } \r
68f10917 412 \r
17e8c701 413 //Int_t binsTrackMatrix[3]={zvNbins,ptNbins,etaNbins};\r
df1c0513 414 Int_t binsTrackEventCorrMatrix[4]={fZvNbins,fPtCorrNbins,fEtaNbins,fMultNbins};\r
f4f8cae4 415\r
416 //\r
417 // Generic histograms to be corrected\r
418 //\r
fc98fbb5 419 Int_t binsEventHist[2]={fZvNbins,fMultNbins};\r
420 //Double_t minEventHist[2]={-fBinsZv[0],fBinsMult[0]}; \r
421 //Double_t maxEventHist[2]={fBinsZv[fZvNbins],fBinsMult[fMultNbins]}; \r
f4f8cae4 422\r
fc98fbb5 423 fRecEventHist = new THnSparseF("fRecEventHist","Zv:multMB",2,binsEventHist); //,minEventHist,maxEventHist);\r
424 fRecEventHist->SetBinEdges(0,fBinsZv);\r
425 fRecEventHist->SetBinEdges(1,fBinsMult);\r
f4f8cae4 426 fRecEventHist->GetAxis(0)->SetTitle("Zv (cm)");\r
427 fRecEventHist->GetAxis(1)->SetTitle("multiplicity MB");\r
428 fRecEventHist->Sumw2();\r
429\r
430 //\r
fc98fbb5 431 Int_t binsTrackHist[4]={fZvNbins,fPtNbins,fEtaNbins,fMultNbins};\r
432 // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
433 // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
434\r
df1c0513 435 fRecTrackHist = new THnSparseF("fRecTrackHist","Zv:pT:eta:multRecMult",4,binsTrackHist); //,minTrackHist,maxTrackHist);\r
fc98fbb5 436 fRecTrackHist->SetBinEdges(0,fBinsZv);\r
437 fRecTrackHist->SetBinEdges(1,fBinsPt);\r
438 fRecTrackHist->SetBinEdges(2,fBinsEta);\r
439 fRecTrackHist->SetBinEdges(3,fBinsMult);\r
f4f8cae4 440 fRecTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
441 fRecTrackHist->GetAxis(1)->SetTitle("p_{T} (GeV/c)");\r
442 fRecTrackHist->GetAxis(2)->SetTitle("#eta");\r
df1c0513 443 fRecTrackHist->GetAxis(3)->SetTitle("multiplicity (multCuts)");\r
f4f8cae4 444 fRecTrackHist->Sumw2();\r
445\r
df1c0513 446 Int_t binsMCPrimTrackHist[4]={fZvNbins,fPtNbins,fEtaNbins,fMultNbins};\r
447 // Double_t minTrackHist[4]={-25.,0.,-1.5,-0.5}; \r
448 // Double_t maxTrackHist[4]={25.,50.,1.5,149.5}; \r
449\r
450 fMCPrimTrackHist = new THnSparseF("fMCPrimTrackHist","Zv:mcpT:mceta:multTrueMC",4,binsMCPrimTrackHist); \r
451 fMCPrimTrackHist->SetBinEdges(0,fBinsZv);\r
452 fMCPrimTrackHist->SetBinEdges(1,fBinsPt);\r
453 fMCPrimTrackHist->SetBinEdges(2,fBinsEta);\r
454 fMCPrimTrackHist->SetBinEdges(3,fBinsMult);\r
455 fMCPrimTrackHist->GetAxis(0)->SetTitle("Zv (cm)");\r
456 fMCPrimTrackHist->GetAxis(1)->SetTitle("MC p_{T} (GeV/c)");\r
457 fMCPrimTrackHist->GetAxis(2)->SetTitle("#eta (MC)");\r
458 fMCPrimTrackHist->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
459 fMCPrimTrackHist->Sumw2(); \r
460\r
0aaa8b91 461 //\r
462 // rec. vs MC correlation matrices\r
463 //\r
fc98fbb5 464 Int_t binsMultTrueEventMatrix[3]={fMultNbins,fMultNbins,fMultNbins};\r
465// Double_t minMultTrueEventMatrix[3]={-0.5,-0.5,-0.5}; \r
466// Double_t maxMultTrueEventMatrix[3]={149.5,149.5,149.5}; \r
df1c0513 467 fEventMultCorrelationMatrix = new THnSparseF("fEventMultCorrelationMatrix","multRecMult:multTrueMC:multMB",3,binsMultTrueEventMatrix); //,minMultTrueEventMatrix,maxMultTrueEventMatrix);\r
fc98fbb5 468 fEventMultCorrelationMatrix->SetBinEdges(0,fBinsMult);\r
469 fEventMultCorrelationMatrix->SetBinEdges(1,fBinsMult);\r
470 fEventMultCorrelationMatrix->SetBinEdges(2,fBinsMult);\r
df1c0513 471 fEventMultCorrelationMatrix->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
472 fEventMultCorrelationMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
fff1caf5 473 fEventMultCorrelationMatrix->GetAxis(2)->SetTitle("MB multiplicity");\r
0aaa8b91 474 fEventMultCorrelationMatrix->Sumw2();\r
475 \r
fc98fbb5 476 Int_t binsTrackPtCorrelationMatrix[3]={fPtCorrNbins,fPtCorrNbins,fEtaNbins};\r
0aaa8b91 477 fTrackPtCorrelationMatrix = new THnSparseF("fTrackPtCorrelationMatrix","Pt:mcPt:mcEta",3,binsTrackPtCorrelationMatrix);\r
fc98fbb5 478 fTrackPtCorrelationMatrix->SetBinEdges(0,fBinsPtCorr);\r
479 fTrackPtCorrelationMatrix->SetBinEdges(1,fBinsPtCorr);\r
480 fTrackPtCorrelationMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 481 fTrackPtCorrelationMatrix->GetAxis(0)->SetTitle("Pt (GeV/c)");\r
482 fTrackPtCorrelationMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
483 fTrackPtCorrelationMatrix->GetAxis(2)->SetTitle("mcEta");\r
484 fTrackPtCorrelationMatrix->Sumw2();\r
485\r
486 //\r
487 // Efficiency and contamination correction matrices\r
488 //\r
fc98fbb5 489 Int_t binsEventMatrix[2]={fZvNbins,fMultNbins};\r
490// Double_t minEventMatrix[2]={-25.,-0.5}; \r
491// Double_t maxEventMatrix[2]={25.,149.5}; \r
0aaa8b91 492\r
df1c0513 493 fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 494 fGenEventMatrix->SetBinEdges(0,fBinsZv);\r
495 fGenEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 496 fGenEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 497 fGenEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 498 fGenEventMatrix->Sumw2();\r
499 \r
df1c0513 500 fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 501 fGenSDEventMatrix->SetBinEdges(0,fBinsZv);\r
502 fGenSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 503 fGenSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 504 fGenSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 505 fGenSDEventMatrix->Sumw2();\r
506 \r
df1c0513 507 fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 508 fGenDDEventMatrix->SetBinEdges(0,fBinsZv);\r
509 fGenDDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 510 fGenDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 511 fGenDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 512 fGenDDEventMatrix->Sumw2();\r
513 \r
df1c0513 514 fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 515 fGenNDEventMatrix->SetBinEdges(0,fBinsZv);\r
516 fGenNDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 517 fGenNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 518 fGenNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 519 fGenNDEventMatrix->Sumw2();\r
520\r
df1c0513 521 fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 522 fGenNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
523 fGenNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 524 fGenNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 525 fGenNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 526 fGenNSDEventMatrix->Sumw2();\r
527\r
528 //\r
df1c0513 529 fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 530 fTriggerEventMatrix->SetBinEdges(0,fBinsZv);\r
531 fTriggerEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 532 fTriggerEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 533 fTriggerEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 534 fTriggerEventMatrix->Sumw2();\r
535\r
df1c0513 536 fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 537 fTriggerSDEventMatrix->SetBinEdges(0,fBinsZv);\r
538 fTriggerSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 539 fTriggerSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 540 fTriggerSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 541 fTriggerSDEventMatrix->Sumw2();\r
542 \r
df1c0513 543 fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 544 fTriggerDDEventMatrix->SetBinEdges(0,fBinsZv);\r
545 fTriggerDDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 546 fTriggerDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 547 fTriggerDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 548 fTriggerDDEventMatrix->Sumw2();\r
549 \r
df1c0513 550 fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 551 fTriggerNDEventMatrix->SetBinEdges(0,fBinsZv);\r
552 fTriggerNDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 553 fTriggerNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 554 fTriggerNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 555 fTriggerNDEventMatrix->Sumw2();\r
556 \r
df1c0513 557 fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 558 fTriggerNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
559 fTriggerNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 560 fTriggerNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 561 fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 562 fTriggerNSDEventMatrix->Sumw2();\r
563 \r
564 //\r
df1c0513 565 fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 566 fRecEventMatrix->SetBinEdges(0,fBinsZv);\r
567 fRecEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 568 fRecEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 569 fRecEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 570 fRecEventMatrix->Sumw2();\r
571\r
df1c0513 572 fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 573 fRecSDEventMatrix->SetBinEdges(0,fBinsZv);\r
574 fRecSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 575 fRecSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 576 fRecSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 577 fRecSDEventMatrix->Sumw2();\r
578 \r
df1c0513 579 fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 580 fRecDDEventMatrix->SetBinEdges(0,fBinsZv);\r
581 fRecDDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 582 fRecDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 583 fRecDDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 584 fRecDDEventMatrix->Sumw2();\r
585 \r
df1c0513 586 fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 587 fRecNDEventMatrix->SetBinEdges(0,fBinsZv);\r
588 fRecNDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 589 fRecNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 590 fRecNDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 591 fRecNDEventMatrix->Sumw2();\r
592 \r
df1c0513 593 fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 594 fRecNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
595 fRecNSDEventMatrix->SetBinEdges(1,fBinsMult);\r
0aaa8b91 596 fRecNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 597 fRecNSDEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 598 fRecNSDEventMatrix->Sumw2();\r
599\r
df1c0513 600 fRecCandleEventMatrix = new THnSparseF("fRecCandleEventMatrix","mcZv:multTrueMC",2,binsEventMatrix); //,minEventMatrix,maxEventMatrix);\r
fc98fbb5 601 fRecCandleEventMatrix->SetBinEdges(0,fBinsZv);\r
602 fRecCandleEventMatrix->SetBinEdges(1,fBinsMult);\r
55468faf 603 fRecCandleEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
df1c0513 604 fRecCandleEventMatrix->GetAxis(1)->SetTitle("true multiplicity (MC)");\r
55468faf 605 fRecCandleEventMatrix->Sumw2();\r
606\r
0aaa8b91 607 // \r
608 // track to event corrections\r
609 //\r
610\r
df1c0513 611 fGenTrackEventMatrix = new THnSparseF("fGenTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 612 fGenTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
613 fGenTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
614 fGenTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 615 fGenTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 616 fGenTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
617 fGenTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
618 fGenTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 619 fGenTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 620 fGenTrackEventMatrix->Sumw2();\r
621\r
df1c0513 622 fGenTrackSDEventMatrix = new THnSparseF("fGenTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 623 fGenTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
624 fGenTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
625 fGenTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 626 fGenTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 627 fGenTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
628 fGenTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
629 fGenTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 630 fGenTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 631 fGenTrackSDEventMatrix->Sumw2();\r
632\r
df1c0513 633 fGenTrackDDEventMatrix = new THnSparseF("fGenTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 634 fGenTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
635 fGenTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
636 fGenTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 637 fGenTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 638 fGenTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
639 fGenTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
640 fGenTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 641 fGenTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 642 fGenTrackDDEventMatrix->Sumw2();\r
643\r
df1c0513 644 fGenTrackNDEventMatrix = new THnSparseF("fGenTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 645 fGenTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
646 fGenTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
647 fGenTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 648 fGenTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 649 fGenTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
650 fGenTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
651 fGenTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 652 fGenTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 653 fGenTrackNDEventMatrix->Sumw2();\r
654\r
df1c0513 655 fGenTrackNSDEventMatrix = new THnSparseF("fGenTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 656 fGenTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
657 fGenTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
658 fGenTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 659 fGenTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 660 fGenTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
661 fGenTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
662 fGenTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 663 fGenTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 664 fGenTrackNSDEventMatrix->Sumw2();\r
665\r
666\r
667 //\r
df1c0513 668 fTriggerTrackEventMatrix = new THnSparseF("fTriggerTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 669 fTriggerTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
670 fTriggerTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
671 fTriggerTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 672 fTriggerTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 673 fTriggerTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
674 fTriggerTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
675 fTriggerTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 676 fTriggerTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 677 fTriggerTrackEventMatrix->Sumw2();\r
678\r
df1c0513 679 fTriggerTrackSDEventMatrix = new THnSparseF("fTriggerTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 680 fTriggerTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
681 fTriggerTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
682 fTriggerTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 683 fTriggerTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 684 fTriggerTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
685 fTriggerTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
686 fTriggerTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 687 fTriggerTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 688 fTriggerTrackSDEventMatrix->Sumw2();\r
689\r
df1c0513 690 fTriggerTrackDDEventMatrix = new THnSparseF("fTriggerTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 691 fTriggerTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
692 fTriggerTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
693 fTriggerTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 694 fTriggerTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 695 fTriggerTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
696 fTriggerTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
697 fTriggerTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 698 fTriggerTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 699 fTriggerTrackDDEventMatrix->Sumw2();\r
700\r
df1c0513 701 fTriggerTrackNDEventMatrix = new THnSparseF("fTriggerTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 702 fTriggerTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
703 fTriggerTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
704 fTriggerTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 705 fTriggerTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 706 fTriggerTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
707 fTriggerTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
708 fTriggerTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 709 fTriggerTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 710 fTriggerTrackNDEventMatrix->Sumw2();\r
711\r
df1c0513 712 fTriggerTrackNSDEventMatrix = new THnSparseF("fTriggerTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 713 fTriggerTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
714 fTriggerTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
715 fTriggerTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 716 fTriggerTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 717 fTriggerTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
718 fTriggerTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
719 fTriggerTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 720 fTriggerTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 721 fTriggerTrackNSDEventMatrix->Sumw2();\r
722\r
723 //\r
df1c0513 724 fRecTrackEventMatrix = new THnSparseF("fRecTrackEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 725 fRecTrackEventMatrix->SetBinEdges(0,fBinsZv);\r
726 fRecTrackEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
727 fRecTrackEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 728 fRecTrackEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 729 fRecTrackEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
730 fRecTrackEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
731 fRecTrackEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 732 fRecTrackEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 733 fRecTrackEventMatrix->Sumw2();\r
734\r
df1c0513 735 fRecTrackSDEventMatrix = new THnSparseF("fRecTrackSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 736 fRecTrackSDEventMatrix->SetBinEdges(0,fBinsZv);\r
737 fRecTrackSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
738 fRecTrackSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 739 fRecTrackSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 740 fRecTrackSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
741 fRecTrackSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
742 fRecTrackSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 743 fRecTrackSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 744 fRecTrackSDEventMatrix->Sumw2();\r
745\r
df1c0513 746 fRecTrackDDEventMatrix = new THnSparseF("fRecTrackDDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 747 fRecTrackDDEventMatrix->SetBinEdges(0,fBinsZv);\r
748 fRecTrackDDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
749 fRecTrackDDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 750 fRecTrackDDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 751 fRecTrackDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
752 fRecTrackDDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
753 fRecTrackDDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 754 fRecTrackDDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 755 fRecTrackDDEventMatrix->Sumw2();\r
756\r
df1c0513 757 fRecTrackNDEventMatrix = new THnSparseF("fRecTrackNDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 758 fRecTrackNDEventMatrix->SetBinEdges(0,fBinsZv);\r
759 fRecTrackNDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
760 fRecTrackNDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 761 fRecTrackNDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 762 fRecTrackNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
763 fRecTrackNDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
764 fRecTrackNDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 765 fRecTrackNDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 766 fRecTrackNDEventMatrix->Sumw2();\r
767\r
df1c0513 768 fRecTrackNSDEventMatrix = new THnSparseF("fRecTrackNSDEventMatrix","mcZv:mcPt:mcEta:multTrueMC",4,binsTrackEventCorrMatrix);\r
fc98fbb5 769 fRecTrackNSDEventMatrix->SetBinEdges(0,fBinsZv);\r
770 fRecTrackNSDEventMatrix->SetBinEdges(1,fBinsPtCorr);\r
771 fRecTrackNSDEventMatrix->SetBinEdges(2,fBinsEta);\r
df1c0513 772 fRecTrackNSDEventMatrix->SetBinEdges(3,fBinsMult);\r
0aaa8b91 773 fRecTrackNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
774 fRecTrackNSDEventMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
775 fRecTrackNSDEventMatrix->GetAxis(2)->SetTitle("mcEta");\r
df1c0513 776 fRecTrackNSDEventMatrix->GetAxis(3)->SetTitle("true multiplicity (MC)");\r
0aaa8b91 777 fRecTrackNSDEventMatrix->Sumw2();\r
778\r
779 //\r
780 // tracks correction matrices\r
781 //\r
17e8c701 782 //fGenTrackMatrix = new THnSparseF("fGenTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
783 fGenTrackMatrix = new THnSparseF("fGenTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 784 fGenTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 785 //fGenTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 786 fGenTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
787 fGenTrackMatrix->SetBinEdges(2,fBinsEta);\r
985bdfd5 788 fGenTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
789 fGenTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
790 fGenTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
791 fGenTrackMatrix->Sumw2();\r
792\r
17e8c701 793 //fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
794 fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 795 fGenPrimTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 796 //fGenPrimTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 797 fGenPrimTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
798 fGenPrimTrackMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 799 fGenPrimTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
800 fGenPrimTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
801 fGenPrimTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
802 fGenPrimTrackMatrix->Sumw2();\r
803\r
17e8c701 804 //fRecPrimTrackMatrix = new THnSparseF("fRecPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
805 fRecPrimTrackMatrix = new THnSparseF("fRecPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 806 fRecPrimTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 807 //fRecPrimTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 808 fRecPrimTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
809 fRecPrimTrackMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 810 fRecPrimTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
811 fRecPrimTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
812 fRecPrimTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
813 fRecPrimTrackMatrix->Sumw2();\r
814\r
815 //\r
17e8c701 816 //fRecTrackMatrix = new THnSparseF("fRecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
817 fRecTrackMatrix = new THnSparseF("fRecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 818 fRecTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 819 //fRecTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 820 fRecTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
821 fRecTrackMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 822 fRecTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
823 fRecTrackMatrix->GetAxis(1)->SetTitle("Pt (GeV/c)");\r
824 fRecTrackMatrix->GetAxis(2)->SetTitle("Eta");\r
825 fRecTrackMatrix->Sumw2();\r
826\r
17e8c701 827 //fRecSecTrackMatrix = new THnSparseF("fRecSecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
828 fRecSecTrackMatrix = new THnSparseF("fRecSecTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 829 fRecSecTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 830 //fRecSecTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 831 fRecSecTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
832 fRecSecTrackMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 833 fRecSecTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
834 fRecSecTrackMatrix->GetAxis(1)->SetTitle("Pt (GeV/c)");\r
835 fRecSecTrackMatrix->GetAxis(2)->SetTitle("Eta");\r
836 fRecSecTrackMatrix->Sumw2();\r
837\r
838 //\r
17e8c701 839 //fRecMultTrackMatrix = new THnSparseF("fRecMultTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
840 fRecMultTrackMatrix = new THnSparseF("fRecMultTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackEventCorrMatrix);\r
fc98fbb5 841 fRecMultTrackMatrix->SetBinEdges(0,fBinsZv);\r
17e8c701 842 //fRecMultTrackMatrix->SetBinEdges(1,binsPt);\r
fc98fbb5 843 fRecMultTrackMatrix->SetBinEdges(1,fBinsPtCorr);\r
844 fRecMultTrackMatrix->SetBinEdges(2,fBinsEta);\r
0aaa8b91 845 fRecMultTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
846 fRecMultTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
847 fRecMultTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
848 fRecMultTrackMatrix->Sumw2();\r
849\r
850 //\r
851 // Control analysis histograms\r
852 //\r
853\r
854 Int_t binsMCEventHist1[3]={100,100,140};\r
855 Double_t minMCEventHist1[3]={-0.1,-0.1,-35.}; \r
856 Double_t maxMCEventHist1[3]={0.1,0.1,35.}; \r
857 fMCEventHist1 = new THnSparseF("fMCEventHist1","mcXv:mcYv:mcZv",3,binsMCEventHist1,minMCEventHist1,maxMCEventHist1);\r
858 fMCEventHist1->GetAxis(0)->SetTitle("mcXv (cm)");\r
859 fMCEventHist1->GetAxis(1)->SetTitle("mcYv (cm)");\r
860 fMCEventHist1->GetAxis(2)->SetTitle("mcZv (cm)");\r
861 fMCEventHist1->Sumw2();\r
862\r
863 //\r
864 Int_t binsRecEventHist1[3]={100,100,140};\r
865 Double_t minRecEventHist1[3]={-3.,-3.,-35.}; \r
866 Double_t maxRecEventHist1[3]={3.,3.,35.}; \r
867 \r
868 fRecEventHist1 = new THnSparseF("fRecEventHist1","Xv:Yv:Zv",3,binsRecEventHist1,minRecEventHist1,maxRecEventHist1);\r
869 fRecEventHist1->GetAxis(0)->SetTitle("Xv (cm)");\r
870 fRecEventHist1->GetAxis(1)->SetTitle("Yv (cm)");\r
871 fRecEventHist1->GetAxis(2)->SetTitle("Zv (cm)");\r
872 fRecEventHist1->Sumw2();\r
873\r
874 //\r
fc98fbb5 875 Int_t binsRecEventHist2[3]={fZvNbins,fMultNbins,fMultNbins};\r
876// Double_t minRecEventHist2[3]={-25.,-0.5,-0.5}; \r
877// Double_t maxRecEventHist2[3]={25.,149.5,149.5}; \r
0aaa8b91 878 \r
df1c0513 879 fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:multRecMult",3,binsRecEventHist2); //,minRecEventHist2,maxRecEventHist2);\r
fc98fbb5 880 fRecEventHist2->SetBinEdges(0,fBinsZv);\r
881 fRecEventHist2->SetBinEdges(1,fBinsMult);\r
882 fRecEventHist2->SetBinEdges(2,fBinsMult);\r
0aaa8b91 883 fRecEventHist2->GetAxis(0)->SetTitle("Zv (cm)");\r
bad4ba69 884 fRecEventHist2->GetAxis(1)->SetTitle("multiplicity MB");\r
df1c0513 885 fRecEventHist2->GetAxis(2)->SetTitle("multiplicity (multCuts)");\r
0aaa8b91 886 fRecEventHist2->Sumw2();\r
887\r
888 //\r
00b81913 889 Double_t kFact = 0.1;\r
0aaa8b91 890 Int_t binsRecMCEventHist1[3]={100,100,100};\r
891 Double_t minRecMCEventHist1[3]={-10.0*kFact,-10.0*kFact,-10.0*kFact}; \r
892 Double_t maxRecMCEventHist1[3]={10.0*kFact,10.0*kFact,10.0*kFact}; \r
893 \r
bad4ba69 894 fRecMCEventHist1 = new THnSparseF("fRecMCEventHist1","Xv-mcXv:Yv-mcYv:Zv-mcZv",3,binsRecMCEventHist1,minRecMCEventHist1,maxRecMCEventHist1);\r
895 fRecMCEventHist1->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
896 fRecMCEventHist1->GetAxis(1)->SetTitle("Yv-mcYv (cm)");\r
897 fRecMCEventHist1->GetAxis(2)->SetTitle("Zv-mcZv (cm)");\r
0aaa8b91 898 fRecMCEventHist1->Sumw2();\r
899\r
900 //\r
fc98fbb5 901 Int_t binsRecMCEventHist2[3]={100,100,fMultNbins};\r
0aaa8b91 902 Double_t minRecMCEventHist2[3]={-10.0*kFact,-10.0*kFact,0.0}; \r
903 Double_t maxRecMCEventHist2[3]={10.0*kFact,10.0*kFact,149.50}; \r
904\r
df1c0513 905 fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:multMB",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
fc98fbb5 906 fRecMCEventHist2->SetBinEdges(2,fBinsMult); \r
bad4ba69 907 fRecMCEventHist2->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
908 fRecMCEventHist2->GetAxis(1)->SetTitle("Zv-mcZv (cm)");\r
df1c0513 909 fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity MB");\r
0aaa8b91 910 fRecMCEventHist2->Sumw2();\r
911\r
fc98fbb5 912 Int_t binsRecMCEventHist3[2]={fMultNbins,5};\r
0aaa8b91 913 Double_t minRecMCEventHist3[2]={-0.5,0.0}; \r
914 Double_t maxRecMCEventHist3[2]={149.50,5.0}; \r
df1c0513 915 fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","multRecMult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
fc98fbb5 916 fRecMCEventHist3->SetBinEdges(0,fBinsMult); \r
df1c0513 917 fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity (multCuts)");\r
0aaa8b91 918 fRecMCEventHist3->GetAxis(1)->SetTitle("EventType");\r
919 fRecMCEventHist3->Sumw2();\r
920\r
921 //\r
922 char name[256];\r
923 char title[256];\r
924 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) \r
925 {\r
926 // THnSparse track histograms\r
927 \r
fc98fbb5 928 Int_t binsMCTrackHist1[3]= {fPtCorrNbins, fEtaNbins, 90};\r
0aaa8b91 929 Double_t minMCTrackHist1[3]={0.,-1.,0.}; \r
930 Double_t maxMCTrackHist1[3]={10.,1.,2.*TMath::Pi()}; \r
62e3b4b6 931 snprintf(name,256,"fMCTrackHist1_%d",i);\r
932 snprintf(title,256,"mcPt:mcEta:mcPhi");\r
0aaa8b91 933 \r
934 fMCTrackHist1[i] = new THnSparseF(name,title,3,binsMCTrackHist1,minMCTrackHist1,maxMCTrackHist1);\r
fc98fbb5 935 fMCTrackHist1[i]->SetBinEdges(0,fBinsPtCorr);\r
936 fMCTrackHist1[i]->SetBinEdges(1,fBinsEta);\r
0aaa8b91 937 fMCTrackHist1[i]->GetAxis(0)->SetTitle("mcPt (GeV/c)");\r
938 fMCTrackHist1[i]->GetAxis(1)->SetTitle("mcEta");\r
939 fMCTrackHist1[i]->GetAxis(2)->SetTitle("mcPhi (rad)");\r
940 fMCTrackHist1[i]->Sumw2();\r
941\r
fc98fbb5 942 Int_t binsMCPrimTrackHist1[5]= {fPtCorrNbins,fEtaNbins,6,20,4000};\r
7f7dd416 943 Double_t minMCPrimTrackHist1[5]={0.,-1.,0.,0.,0.}; \r
944 Double_t maxMCPrimTrackHist1[5]={10.,1.,6.,20.,4000.}; \r
62e3b4b6 945 snprintf(name,256,"fMCPrimTrackHist1_%d",i);\r
946 snprintf(title,256,"mcPt:mcEta:pid:mech:mother");\r
0aaa8b91 947 \r
7f7dd416 948 fMCPrimTrackHist1[i] = new THnSparseF(name,title,5,binsMCPrimTrackHist1,minMCPrimTrackHist1,maxMCPrimTrackHist1);\r
fc98fbb5 949 fMCPrimTrackHist1[i]->SetBinEdges(0,fBinsPtCorr);\r
950 fMCPrimTrackHist1[i]->SetBinEdges(1,fBinsEta);\r
0aaa8b91 951 fMCPrimTrackHist1[i]->GetAxis(0)->SetTitle("mcPt (GeV/c)");\r
952 fMCPrimTrackHist1[i]->GetAxis(1)->SetTitle("mcEta");\r
953 fMCPrimTrackHist1[i]->GetAxis(2)->SetTitle("pid");\r
954 fMCPrimTrackHist1[i]->GetAxis(3)->SetTitle("mech");\r
955 fMCPrimTrackHist1[i]->GetAxis(4)->SetTitle("mother");\r
956 fMCPrimTrackHist1[i]->Sumw2();\r
957\r
73ca0831 958 Int_t binsMCPrimTrackHist2[3]= {4000,20,4000};\r
959 Double_t minMCPrimTrackHist2[3]={0.,0.,0.}; \r
960 Double_t maxMCPrimTrackHist2[3]={4000.,20.,4000.}; \r
62e3b4b6 961 snprintf(name,256,"fMCPrimTrackHist2_%d",i);\r
962 snprintf(title,256,"pdg:mech:mother");\r
7f7dd416 963 \r
73ca0831 964 fMCPrimTrackHist2[i] = new THnSparseF(name,title,3,binsMCPrimTrackHist2,minMCPrimTrackHist2,maxMCPrimTrackHist2);\r
7f7dd416 965 fMCPrimTrackHist2[i]->GetAxis(0)->SetTitle("pdg");\r
966 fMCPrimTrackHist2[i]->GetAxis(1)->SetTitle("mech");\r
967 fMCPrimTrackHist2[i]->GetAxis(2)->SetTitle("mother");\r
968 fMCPrimTrackHist2[i]->Sumw2();\r
969\r
fc98fbb5 970 Int_t binsMCSecTrackHist1[5]= {fPtCorrNbins,fEtaNbins,6,20,4000};\r
0aaa8b91 971 Double_t minMCSecTrackHist1[5]={0.,-1.,0.,0.,0.}; \r
fc98fbb5 972 Double_t maxMCSecTrackHist1[5]={10.,1.,6.,20.,4000.}; \r
62e3b4b6 973 snprintf(name,256,"fMCSecTrackHist1_%d",i);\r
974 snprintf(title,256,"mcPt:mcEta:pid:mech:mother");\r
0aaa8b91 975 \r
976 fMCSecTrackHist1[i] = new THnSparseF(name,title,5,binsMCSecTrackHist1,minMCSecTrackHist1,maxMCSecTrackHist1);\r
fc98fbb5 977 fMCSecTrackHist1[i]->SetBinEdges(0,fBinsPtCorr);\r
978 fMCSecTrackHist1[i]->SetBinEdges(1,fBinsEta);\r
0aaa8b91 979 fMCSecTrackHist1[i]->GetAxis(0)->SetTitle("mcPt (GeV/c)");\r
980 fMCSecTrackHist1[i]->GetAxis(1)->SetTitle("mcEta");\r
981 fMCSecTrackHist1[i]->GetAxis(2)->SetTitle("pid");\r
982 fMCSecTrackHist1[i]->GetAxis(3)->SetTitle("mech");\r
983 fMCSecTrackHist1[i]->GetAxis(4)->SetTitle("mother");\r
984 fMCSecTrackHist1[i]->Sumw2();\r
985\r
986 //\r
987\r
988 // \r
989 \r
fc98fbb5 990 Int_t binsRecTrackHist1[3]={fPtNbins,fEtaNbins,90};\r
0aaa8b91 991 Double_t minRecTrackHist1[3]={0.,-1.,0.}; \r
992 Double_t maxRecTrackHist1[3]={10.,1.,2.*TMath::Pi()};\r
62e3b4b6 993 snprintf(name,256,"fRecTrackHist1_%d",i);\r
994 snprintf(title,256,"Pt:Eta:Phi");\r
0aaa8b91 995 fRecTrackHist1[i] = new THnSparseF(name,title,3,binsRecTrackHist1,minRecTrackHist1,maxRecTrackHist1);\r
fc98fbb5 996 fRecTrackHist1[i]->SetBinEdges(0,fBinsPt);\r
997 fRecTrackHist1[i]->SetBinEdges(1,fBinsEta);\r
985bdfd5 998 fRecTrackHist1[i]->GetAxis(0)->SetTitle("p_{T} (GeV/c)");\r
999 fRecTrackHist1[i]->GetAxis(1)->SetTitle("#eta");\r
1000 fRecTrackHist1[i]->GetAxis(2)->SetTitle("#phi (rad)");\r
0aaa8b91 1001 fRecTrackHist1[i]->Sumw2();\r
1002\r
1003 // \r
fc98fbb5 1004 Int_t binsRecTrackMultHist1[2]={fPtNbins,fMultNbins};\r
62e3b4b6 1005 snprintf(name,256,"fRecTrackMultHist_%d",i);\r
1006 snprintf(title,256,"Pt:Mult");\r
fc98fbb5 1007 fRecTrackMultHist1[i] = new THnSparseF(name,title,2,binsRecTrackMultHist1); //,minRecTrackMultHist1,maxRecTrackMultHist1);\r
1008 fRecTrackMultHist1[i]->SetBinEdges(0,fBinsPt);\r
1009 fRecTrackMultHist1[i]->SetBinEdges(1,fBinsMult);\r
0aaa8b91 1010 fRecTrackMultHist1[i]->GetAxis(0)->SetTitle("Pt (GeV/c)");\r
1011 fRecTrackMultHist1[i]->GetAxis(1)->SetTitle("multiplicity");\r
1012 fRecTrackMultHist1[i]->Sumw2();\r
1013 }\r
1014\r
fc98fbb5 1015 Int_t binsRecMCTrackHist1[4] = {fPtCorrNbins,fEtaNbins,100,100};\r
0aaa8b91 1016 Double_t minRecMCTrackHist1[4]={0.,-1.,-0.5,-0.5}; \r
1017 Double_t maxRecMCTrackHist1[4]={20.,1.,0.5,0.5}; \r
62e3b4b6 1018 snprintf(name,256,"fRecMCTrackHist1");\r
1019 snprintf(title,256,"mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)");\r
1020\r
0aaa8b91 1021 fRecMCTrackHist1 = new THnSparseF(name,title,4,binsRecMCTrackHist1,minRecMCTrackHist1,maxRecMCTrackHist1);\r
fc98fbb5 1022 fRecMCTrackHist1->SetBinEdges(0,fBinsPtCorr);\r
1023 fRecMCTrackHist1->SetBinEdges(1,fBinsEta);\r
0aaa8b91 1024 fRecMCTrackHist1->GetAxis(0)->SetTitle("mcPt (GeV/c)");\r
1025 fRecMCTrackHist1->GetAxis(1)->SetTitle("mcEta");\r
1026 fRecMCTrackHist1->GetAxis(2)->SetTitle("(Pt-mcPt)/mcPt");\r
1027 fRecMCTrackHist1->GetAxis(3)->SetTitle("Eta-mcEta");\r
1028\r
fc98fbb5 1029 Int_t binsMCMultRecTrackHist1[3] = {fPtCorrNbins,fEtaNbins,6};\r
0aaa8b91 1030 Double_t minMCMultRecTrackHist1[3]={0.,-1.,0.}; \r
1031 Double_t maxMCMultRecTrackHist1[3]={20.,1.,6.}; \r
62e3b4b6 1032 snprintf(name,256,"fMCMultRecTrackHist1");\r
1033 snprintf(title,256,"mcPt:mcEta:pid");\r
0aaa8b91 1034 fMCMultRecTrackHist1 = new THnSparseF(name,title,3,binsMCMultRecTrackHist1,minMCMultRecTrackHist1,maxMCMultRecTrackHist1);\r
fc98fbb5 1035 fMCMultRecTrackHist1->SetBinEdges(0,fBinsPtCorr);\r
1036 fMCMultRecTrackHist1->SetBinEdges(1,fBinsEta);\r
0aaa8b91 1037 fMCMultRecTrackHist1->GetAxis(0)->SetTitle("mcPt (GeV/c)");\r
1038 fMCMultRecTrackHist1->GetAxis(1)->SetTitle("mcEta");\r
1039 fMCMultRecTrackHist1->GetAxis(2)->SetTitle("pid");\r
1040\r
985bdfd5 1041 //nClust:chi2PerClust:pt:eta:phi\r
fc98fbb5 1042 Int_t binsRecTrackHist2[5]={160,100,fPtNbins,fEtaNbins,90};\r
985bdfd5 1043 Double_t minRecTrackHist2[5]={0., 0., 0, -1.5, 0.};\r
1044 Double_t maxRecRecTrackHist2[5]={160.,10., 16, 1.5, 2.*TMath::Pi()};\r
1045\r
1046 fRecTrackHist2 = new THnSparseF("fRecTrackHist2","nClust:chi2PerClust:pt:eta:phi",5,binsRecTrackHist2,minRecTrackHist2,maxRecRecTrackHist2);\r
fc98fbb5 1047 fRecTrackHist2->SetBinEdges(2,fBinsPt);\r
1048 fRecTrackHist2->SetBinEdges(3,fBinsEta);\r
985bdfd5 1049 fRecTrackHist2->GetAxis(0)->SetTitle("nClust");\r
1050 fRecTrackHist2->GetAxis(1)->SetTitle("chi2PerClust");\r
1051 fRecTrackHist2->GetAxis(2)->SetTitle("p_{T} (GeV/c)");\r
1052 fRecTrackHist2->GetAxis(3)->SetTitle("#eta");\r
1053 fRecTrackHist2->GetAxis(4)->SetTitle("#phi (rad)");\r
1054 fRecTrackHist2->Sumw2();\r
24c88fc4 1055 \r
1056 Int_t binsEventCount[3]={2,2,2};\r
1057 Double_t minEventCount[3]={0,0,0}; \r
1058 Double_t maxEventCount[3]={2,2,2}; \r
1059 fEventCount = new THnSparseF("fEventCount","trig vs trig+vertex",3,binsEventCount,minEventCount,maxEventCount);\r
1060 fEventCount->GetAxis(0)->SetTitle("trig");\r
1061 fEventCount->GetAxis(1)->SetTitle("trig+vert");\r
1062 fEventCount->GetAxis(2)->SetTitle("selected");\r
1063 fEventCount->Sumw2();\r
985bdfd5 1064\r
0aaa8b91 1065 // init folder\r
1066 fAnalysisFolder = CreateFolder("folderdNdPt","Analysis dNdPt Folder");\r
68f10917 1067 \r
1068 // set init flag\r
1069 fIsInit = kTRUE;\r
0aaa8b91 1070}\r
1071\r
1072//_____________________________________________________________________________\r
1073void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent)\r
1074{\r
68f10917 1075 // init if not done already\r
1076 if (!fIsInit) { Init(); }\r
1077 \r
0aaa8b91 1078 //\r
1079 // Process real and/or simulated events\r
1080 //\r
1081 if(!esdEvent) {\r
1082 AliDebug(AliLog::kError, "esdEvent not available");\r
1083 return;\r
1084 }\r
0aaa8b91 1085\r
bad4ba69 1086 // get selection cuts\r
0aaa8b91 1087 AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
1088 AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
1089 AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
df1c0513 1090 AlidNdPtAcceptanceCuts *multAccCuts = GetMultAcceptanceCuts(); \r
0aaa8b91 1091\r
1092 if(!evtCuts || !accCuts || !esdTrackCuts) {\r
1093 AliDebug(AliLog::kError, "cuts not available");\r
1094 return;\r
1095 }\r
bad4ba69 1096\r
1097 // trigger selection\r
1098 Bool_t isEventTriggered = kTRUE;\r
17f2bf95 1099 AliPhysicsSelection *physicsSelection = NULL;\r
1100 AliTriggerAnalysis* triggerAnalysis = NULL;\r
1101\r
1102 // \r
1103 AliInputEventHandler* inputHandler = (AliInputEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();\r
1104 if (!inputHandler)\r
1105 {\r
1106 Printf("ERROR: Could not receive input handler");\r
1107 return;\r
1108 }\r
17e8c701 1109\r
17f2bf95 1110 if(evtCuts->IsTriggerRequired()) \r
1111 {\r
1112 // always MB\r
b2c68775 1113 //isEventTriggered = inputHandler->IsEventSelected() & AliVEvent::kMB;\r
1114 isEventTriggered = inputHandler->IsEventSelected() & GetTriggerMask();\r
17f2bf95 1115\r
1116 physicsSelection = static_cast<AliPhysicsSelection*> (inputHandler->GetEventSelection());\r
1117 if(!physicsSelection) return;\r
1118 //SetPhysicsTriggerSelection(physicsSelection);\r
1119\r
24c88fc4 1120 if (isEventTriggered && (GetTrigger() == AliTriggerAnalysis::kV0AND)) {\r
17f2bf95 1121 // set trigger (V0AND)\r
1122 triggerAnalysis = physicsSelection->GetTriggerAnalysis();\r
1123 if(!triggerAnalysis) return;\r
1124 isEventTriggered = triggerAnalysis->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
1125 }\r
1126\r
1127 // calculate LHC background\r
1128 if(!IsUseMCInfo()) \r
1129 { \r
1130 //\r
1131 // 0-multiplicity bin for LHC background correction\r
1132 //\r
fc98fbb5 1133 /* bin0 done in the train\r
17f2bf95 1134 if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
1135 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
1136 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
1137 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1138 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt ) \r
1139 {\r
fc98fbb5 1140 physicsSelection->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroTrackSPDvtx);\r
17f2bf95 1141 } else {\r
fc98fbb5 1142 physicsSelection->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroSPDvtx);\r
17f2bf95 1143 }\r
fc98fbb5 1144 */\r
17f2bf95 1145 }\r
1146 }\r
1147\r
1148\r
0aaa8b91 1149 // use MC information\r
1150 AliHeader* header = 0;\r
1151 AliGenEventHeader* genHeader = 0;\r
1152 AliStack* stack = 0;\r
1153 TArrayF vtxMC(3);\r
bad4ba69 1154 AliPWG0Helper::MCProcessType evtType = AliPWG0Helper::kInvalidProcess;\r
0aaa8b91 1155\r
1156 Int_t multMCTrueTracks = 0;\r
1157 if(IsUseMCInfo())\r
1158 {\r
1159 //\r
1160 if(!mcEvent) {\r
1161 AliDebug(AliLog::kError, "mcEvent not available");\r
1162 return;\r
1163 }\r
1164 // get MC event header\r
1165 header = mcEvent->Header();\r
1166 if (!header) {\r
1167 AliDebug(AliLog::kError, "Header not available");\r
1168 return;\r
1169 }\r
1170 // MC particle stack\r
1171 stack = mcEvent->Stack();\r
1172 if (!stack) {\r
1173 AliDebug(AliLog::kError, "Stack not available");\r
1174 return;\r
1175 }\r
1176 // get event type (ND=0x1, DD=0x2, SD=0x4)\r
bad4ba69 1177 evtType = AliPWG0Helper::GetEventProcessType(header);\r
0aaa8b91 1178 AliDebug(AliLog::kDebug+1, Form("Found process type %d", evtType));\r
1179\r
1180 // get MC vertex\r
1181 genHeader = header->GenEventHeader();\r
1182 if (!genHeader) {\r
1183 AliDebug(AliLog::kError, "Could not retrieve genHeader from Header");\r
1184 return;\r
1185 }\r
1186 genHeader->PrimaryVertex(vtxMC);\r
1187\r
1188 Double_t vMCEventHist1[3]={vtxMC[0],vtxMC[1],vtxMC[2]};\r
1189 fMCEventHist1->Fill(vMCEventHist1);\r
1190\r
1191 // multipliticy of all MC primary tracks\r
1192 // in Zv, pt and eta ranges)\r
df1c0513 1193 multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,multAccCuts);\r
0aaa8b91 1194\r
1195 } // end bUseMC\r
1196\r
55468faf 1197\r
0aaa8b91 1198 // get reconstructed vertex \r
1199 const AliESDVertex* vtxESD = 0; \r
1200 Bool_t isRecVertex = kFALSE;\r
1201 if(evtCuts->IsRecVertexRequired()) \r
1202 {\r
bad4ba69 1203 Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
1204 Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
1205 vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
b4cdc39d 1206 if(!vtxESD) return;\r
791aaf54 1207 isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE);\r
0aaa8b91 1208 }\r
847e74b2 1209\r
0aaa8b91 1210 if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
1211 vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
b4cdc39d 1212 if(!vtxESD) return;\r
0aaa8b91 1213 isRecVertex = kTRUE;\r
1214 }\r
db7f25fe 1215 if(!vtxESD) return;\r
847e74b2 1216\r
0aaa8b91 1217 Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
985bdfd5 1218 //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
847e74b2 1219 //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
24c88fc4 1220 \r
1221 Bool_t isTrigAndVertex = isEventTriggered && isEventOK;\r
1222 \r
1223 Double_t vEventCount[3] = { (isEventTriggered && kTRUE) , isTrigAndVertex, isTrigAndVertex && (TMath::Abs(vtxESD->GetZv()) < 10.)};\r
1224 fEventCount->Fill(vEventCount); \r
0aaa8b91 1225\r
847e74b2 1226 // vertex contributors\r
0aaa8b91 1227 Int_t multMBTracks = 0; \r
847e74b2 1228 if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
1229 { \r
db7f25fe 1230 if(vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1231 multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
0aaa8b91 1232 } \r
ecab7b3d 1233 else if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
1234 GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate ) \r
847e74b2 1235 {\r
7f7dd416 1236 const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
db7f25fe 1237 if(mult && vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1238 multMBTracks = mult->GetNumberOfTracklets();\r
0aaa8b91 1239 } \r
ecab7b3d 1240 else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
1241 GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid || \r
1242 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
1243 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
1244 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1245 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt || \r
1246 GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx || \r
1247 GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx\r
695facdf 1248 )\r
791aaf54 1249 {\r
db7f25fe 1250 if(vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1251 multMBTracks = vtxESD->GetNContributors();\r
1252 }\r
0aaa8b91 1253 else {\r
d0d90851 1254 AliDebug(AliLog::kError, Form("Found analysis type %d", GetAnalysisMode()));\r
0aaa8b91 1255 return; \r
1256 }\r
791aaf54 1257\r
55468faf 1258 Bool_t isEventSelected = kTRUE;\r
1259 if(evtCuts->IsEventSelectedRequired()) \r
1260 { \r
1261 // select events with at least \r
1262 // one prompt track in acceptance\r
1263 // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
1264\r
1265 isEventSelected = AlidNdPtHelper::SelectEvent(esdEvent,esdTrackCuts);\r
1266 //printf("isEventSelected %d \n", isEventSelected);\r
1267 }\r
1268\r
0aaa8b91 1269 TObjArray *allChargedTracks=0;\r
03a431d9 1270 //Int_t multAll=0, multAcc=0, multRec=0;\r
1271 Int_t multAll=0, multRec=0;\r
0aaa8b91 1272 Int_t *labelsAll=0, *labelsAcc=0, *labelsRec=0;\r
1273\r
7f7dd416 1274\r
0aaa8b91 1275 // check event cuts\r
df1c0513 1276 Int_t multRecMult=0;\r
55468faf 1277 if(isEventOK && isEventTriggered && isEventSelected)\r
0aaa8b91 1278 {\r
1279 // get all charged tracks\r
bad4ba69 1280 allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
0aaa8b91 1281 if(!allChargedTracks) return;\r
1282\r
1283 Int_t entries = allChargedTracks->GetEntries();\r
847e74b2 1284 //printf("entries %d \n",entries);\r
fff1caf5 1285 \r
1286\r
1287 // calculate mult of reconstructed tracks\r
fff1caf5 1288 for(Int_t i=0; i<entries;++i) \r
1289 {\r
1290 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1291 if(!track) continue;\r
1292 if(track->Charge()==0) continue;\r
1293\r
1294\r
1295 // only postive charged \r
1296 if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
1297 continue;\r
1298 \r
1299 // only negative charged \r
1300 if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
1301 continue;\r
1302\r
df1c0513 1303 if(GetMultTrackCuts()->AcceptTrack(track)) \r
fff1caf5 1304 {\r
df1c0513 1305 if(GetMultAcceptanceCuts()->AcceptTrack(track)) multRecMult++;\r
fff1caf5 1306 } \r
1307 }\r
1308\r
847e74b2 1309\r
0aaa8b91 1310 labelsAll = new Int_t[entries];\r
1311 labelsAcc = new Int_t[entries];\r
1312 labelsRec = new Int_t[entries];\r
1313 for(Int_t i=0; i<entries;++i) \r
1314 {\r
1315 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1316 if(!track) continue;\r
1317 if(track->Charge()==0) continue;\r
847e74b2 1318\r
847e74b2 1319 // only postive charged \r
1320 if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
1321 continue;\r
1322 \r
1323 // only negative charged \r
1324 if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
1325 continue;\r
1326\r
df1c0513 1327 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecMult); \r
24c88fc4 1328 labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
1329 multAll++;\r
1330 \r
1331 //if(accCuts->AcceptTrack(track)) { \r
1332 //FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
1333 //labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
1334 //multAcc++;\r
1335 //}\r
695facdf 1336\r
f55ea19e 1337 // esd track selection \r
695facdf 1338 // ITS stand alone\r
1339 if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx) \r
1340 {\r
1341 if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
1342 if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
1343 if(track->GetNcls(0)<4) continue;\r
1344 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
1345 } \r
1346 else if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx) \r
1347 {\r
1348 //\r
1349 // ITS and TPC stand alone tracks\r
1350 //\r
1351 if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
1352 if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
1353 if(track->GetNcls(0)<4) continue;\r
1354 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
1355\r
1356 // Check matching with TPC only track\r
1357 Bool_t hasMatch = kFALSE;\r
1358 for(Int_t j=0; j<entries;++j) \r
1359 {\r
1360 if(i==j) continue;\r
1361 AliESDtrack *track2 = (AliESDtrack*)allChargedTracks->At(j);\r
1362 if(!track2) continue;\r
1363 if(track2->Charge()==0) continue;\r
1364 if (!track2->GetTPCInnerParam()) continue;\r
1365\r
1366 // check loose cuts for TPC tracks\r
1367 if(!esdTrackCuts->AcceptTrack(track2)) continue; \r
1368\r
1369 AliExternalTrackParam *innerTPC = new AliExternalTrackParam(*(track2->GetTPCInnerParam()));\r
1370 if(!innerTPC) continue;\r
1371 Double_t x2[3]; track2->GetXYZ(x2);\r
1372 Double_t b2[3]; AliTracker::GetBxByBz(x2,b2);\r
1373 Double_t dz[2],cov[3];\r
1374 Bool_t isPropOK = innerTPC->PropagateToDCABxByBz(vtxESD,b2,kVeryBig,dz,cov);\r
1375 if(!isPropOK && innerTPC) {delete innerTPC; continue;}\r
1376\r
1377 // check matching\r
1378 if (TMath::Abs(track->GetY() - innerTPC->GetY()) > 3) { delete innerTPC; continue; }\r
1379 if (TMath::Abs(track->GetSnp() - innerTPC->GetSnp()) > 0.2) { delete innerTPC; continue; }\r
1380 if (TMath::Abs(track->GetTgl() - innerTPC->GetTgl()) > 0.2) { delete innerTPC; continue; }\r
1381\r
1382 hasMatch = kTRUE;\r
1383 if(innerTPC) delete innerTPC;\r
1384 }\r
1385\r
1386 if(!hasMatch) continue;\r
1387 }\r
1388 else {\r
ecab7b3d 1389 // check track cuts\r
24c88fc4 1390 \r
695facdf 1391 if(!esdTrackCuts->AcceptTrack(track)) \r
1392 continue;\r
1393 }\r
1394\r
7f7dd416 1395 //\r
1396 Bool_t isOK = kFALSE;\r
1397 Double_t x[3]; track->GetXYZ(x);\r
1398 Double_t b[3]; AliTracker::GetBxByBz(x,b);\r
1399\r
1400 //\r
1401 // if TPC-ITS hybrid tracking (kTPCITSHybrid)\r
1402 // replace track parameters with TPC-ony track parameters\r
1403 //\r
695facdf 1404 if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid || \r
1405 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1406 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
7f7dd416 1407 {\r
791aaf54 1408 // Relate TPC-only tracks to Track or SPD vertex\r
1409 isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig);\r
7f7dd416 1410 if(!isOK) continue;\r
1411\r
1412 // replace esd track parameters with TPCinner\r
1413 AliExternalTrackParam *tpcTrack = new AliExternalTrackParam(*(track->GetTPCInnerParam()));\r
96b0dca8 1414 if (tpcTrack) {\r
1415 track->Set(tpcTrack->GetX(),tpcTrack->GetAlpha(),tpcTrack->GetParameter(),tpcTrack->GetCovariance());\r
1416 }\r
7f7dd416 1417 if(tpcTrack) delete tpcTrack; \r
1418 } \r
1419\r
a8ac5525 1420\r
7f7dd416 1421 // update track parameters using vertex point \r
ecab7b3d 1422 if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate || \r
1423 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate ) \r
1424 {\r
a8ac5525 1425 // update track parameters\r
847e74b2 1426 AliExternalTrackParam cParam;\r
791aaf54 1427 isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig, &cParam);\r
7f7dd416 1428 if(!isOK) continue;\r
847e74b2 1429 track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
1430\r
1431 if(accCuts->AcceptTrack(track)) {\r
df1c0513 1432 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
847e74b2 1433 labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
1434 multRec++;\r
1435 } \r
a8ac5525 1436 }\r
1437 else {\r
695facdf 1438 if(accCuts->AcceptTrack(track)) \r
1439 {\r
df1c0513 1440 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecMult); \r
847e74b2 1441 labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
1442 multRec++;\r
1443 }\r
791aaf54 1444 }\r
7f7dd416 1445 }\r
7f7dd416 1446\r
a8ac5525 1447\r
0aaa8b91 1448 // fill track multiplicity histograms\r
230b8ed7 1449 // terribly slow\r
1450 // FillHistograms(allChargedTracks,labelsAll,multAll,labelsAcc,multAcc,labelsRec,multRec);\r
0aaa8b91 1451\r
1452 Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
1453 fRecEventHist1->Fill(vRecEventHist1);\r
1454\r
df1c0513 1455 Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRecMult};\r
0aaa8b91 1456 fRecEventHist2->Fill(vRecEventHist2);\r
f4f8cae4 1457\r
1458 // \r
1459 Double_t vRecEventHist[2] = {vtxESD->GetZv(),multMBTracks};\r
1460 fRecEventHist->Fill(vRecEventHist);\r
0aaa8b91 1461 } \r
1462\r
0aaa8b91 1463 if(IsUseMCInfo()) \r
1464 {\r
96b0dca8 1465 if(mcEvent) {\r
55468faf 1466\r
1467 if(evtCuts->IsEventSelectedRequired()) \r
1468 { \r
1469 // select events with at least \r
1470 // one MC primary track in acceptance\r
1471 // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
1472\r
1473 Bool_t isMCEventSelected = AlidNdPtHelper::SelectMCEvent(mcEvent);\r
1474 //printf("isMCEventSelected %d \n", isMCEventSelected);\r
96b0dca8 1475 if(!isMCEventSelected) { \r
1476\r
1477 if(allChargedTracks) delete allChargedTracks; allChargedTracks = 0;\r
1478 if(labelsAll) delete [] labelsAll; labelsAll = 0;\r
1479 if(labelsAcc) delete [] labelsAcc; labelsAcc = 0;\r
1480 if(labelsRec) delete [] labelsRec; labelsRec = 0;\r
1481\r
1482 return; \r
1483 }\r
55468faf 1484 }\r
1485\r
df1c0513 1486 Double_t vMultTrueEventMatrix[3] = { multRecMult, multMCTrueTracks, multMBTracks};\r
695facdf 1487 if(isEventOK && isEventTriggered) { \r
1488 if(TMath::Abs(vtxMC[2]) < 10.0) // both Rec. and corresponding MC events must be accepted\r
1489 fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
1490 }\r
0aaa8b91 1491\r
1492 // \r
1493 // event level corrections (zv,N_MB)\r
1494 //\r
1495\r
1496 // all inelastic\r
df1c0513 1497 Double_t vEventMatrix[2] = {vtxMC[2],multMCTrueTracks};\r
0aaa8b91 1498 fGenEventMatrix->Fill(vEventMatrix); \r
1499 if(isEventTriggered) fTriggerEventMatrix->Fill(vEventMatrix);\r
1500 if(isEventOK && isEventTriggered) fRecEventMatrix->Fill(vEventMatrix);\r
1501\r
1502 // single diffractive\r
bad4ba69 1503 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1504 fGenSDEventMatrix->Fill(vEventMatrix); \r
1505 if(isEventTriggered) fTriggerSDEventMatrix->Fill(vEventMatrix);\r
1506 if(isEventOK && isEventTriggered) fRecSDEventMatrix->Fill(vEventMatrix);\r
1507 }\r
1508\r
1509 // double diffractive\r
bad4ba69 1510 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1511 fGenDDEventMatrix->Fill(vEventMatrix); \r
1512 if(isEventTriggered) fTriggerDDEventMatrix->Fill(vEventMatrix);\r
1513 if(isEventOK && isEventTriggered) fRecDDEventMatrix->Fill(vEventMatrix);\r
1514 }\r
1515\r
1516 // non diffractive\r
bad4ba69 1517 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1518 fGenNDEventMatrix->Fill(vEventMatrix); \r
1519 if(isEventTriggered) fTriggerNDEventMatrix->Fill(vEventMatrix);\r
1520 if(isEventOK && isEventTriggered) fRecNDEventMatrix->Fill(vEventMatrix);\r
1521 }\r
1522\r
1523 // non single diffractive\r
bad4ba69 1524 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1525 fGenNSDEventMatrix->Fill(vEventMatrix); \r
1526 if(isEventTriggered) fTriggerNSDEventMatrix->Fill(vEventMatrix);\r
1527 if(isEventOK && isEventTriggered) fRecNSDEventMatrix->Fill(vEventMatrix);\r
1528 }\r
1529\r
1530 //\r
1531 // track-event level corrections (zv,pt,eta)\r
1532 //\r
9208324e 1533 for (Int_t iMc = 0; iMc < stack->GetNtrack(); ++iMc) \r
0aaa8b91 1534 {\r
1535 TParticle* particle = stack->Particle(iMc);\r
1536 if (!particle)\r
1537 continue;\r
1538\r
1539 // only charged particles\r
09abaebb 1540 if(!particle->GetPDG()) continue;\r
0aaa8b91 1541 Double_t charge = particle->GetPDG()->Charge()/3.;\r
00b81913 1542 if ( TMath::Abs(charge) < 0.001 )\r
0aaa8b91 1543 continue;\r
1544\r
1545 // only postive charged \r
847e74b2 1546 if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
0aaa8b91 1547 continue;\r
1548 \r
1549 // only negative charged \r
847e74b2 1550 if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
0aaa8b91 1551 continue;\r
1552 \r
1553 // physical primary\r
1554 Bool_t prim = stack->IsPhysicalPrimary(iMc);\r
1555 if(!prim) continue;\r
1556\r
1557 // checked accepted\r
1558 if(accCuts->AcceptTrack(particle)) \r
1559 {\r
df1c0513 1560 Double_t vTrackEventMatrix[4] = {vtxMC[2], particle->Pt(), particle->Eta(),multMCTrueTracks}; \r
0aaa8b91 1561 fGenTrackEventMatrix->Fill(vTrackEventMatrix);\r
1562\r
bad4ba69 1563 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1564 fGenTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1565 }\r
bad4ba69 1566 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1567 fGenTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1568 }\r
bad4ba69 1569 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1570 fGenTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1571 }\r
bad4ba69 1572 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1573 fGenTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1574 }\r
1575\r
1576 //\r
1577 if(!isEventTriggered) continue; \r
1578\r
1579 fTriggerTrackEventMatrix->Fill(vTrackEventMatrix);\r
bad4ba69 1580 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1581 fTriggerTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1582 }\r
bad4ba69 1583 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1584 fTriggerTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1585 }\r
bad4ba69 1586 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1587 fTriggerTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1588 }\r
bad4ba69 1589 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1590 fTriggerTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1591 }\r
1592\r
1593 //\r
1594 if(!isEventOK) continue; \r
1595\r
1596 fRecTrackEventMatrix->Fill(vTrackEventMatrix);\r
bad4ba69 1597 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1598 fRecTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1599 }\r
bad4ba69 1600 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1601 fRecTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1602 }\r
bad4ba69 1603 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1604 fRecTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1605 }\r
bad4ba69 1606 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1607 fRecTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1608 }\r
1609 }\r
1610 }\r
1611\r
1612 // \r
791aaf54 1613 // track-level corrections (zv,pt,eta)\r
0aaa8b91 1614 //\r
1615 if(isEventOK && isEventTriggered)\r
1616 {\r
1617\r
1618 // fill MC and rec event control histograms\r
1619 if(fHistogramsOn) {\r
bad4ba69 1620 Double_t vRecMCEventHist1[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetYv()-vtxMC[1],vtxESD->GetZv()-vtxMC[2]};\r
0aaa8b91 1621 fRecMCEventHist1->Fill(vRecMCEventHist1);\r
1622\r
bad4ba69 1623 Double_t vRecMCEventHist2[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetZv()-vtxMC[2],multMBTracks};\r
0aaa8b91 1624 fRecMCEventHist2->Fill(vRecMCEventHist2);\r
1625\r
df1c0513 1626 Double_t vRecMCEventHist3[2] = {multRecMult,evtType};\r
0aaa8b91 1627 fRecMCEventHist3->Fill(vRecMCEventHist3);\r
1628 }\r
1629\r
1630 //\r
1631 // MC histograms for track efficiency studies\r
1632 //\r
55468faf 1633 Int_t countRecCandle = 0;\r
9208324e 1634 for (Int_t iMc = 0; iMc < stack->GetNtrack(); ++iMc) \r
0aaa8b91 1635 {\r
1636 TParticle* particle = stack->Particle(iMc);\r
1637 if (!particle)\r
1638 continue;\r
1639\r
985bdfd5 1640 Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; \r
1641\r
1642 // all genertated primaries including neutral\r
24c88fc4 1643 //if( iMc < stack->GetNprimary() ) {\r
1644 //fGenTrackMatrix->Fill(vTrackMatrix);\r
1645 //}\r
985bdfd5 1646\r
0aaa8b91 1647 // only charged particles\r
09abaebb 1648 if(!particle->GetPDG()) continue;\r
0aaa8b91 1649 Double_t charge = particle->GetPDG()->Charge()/3.;\r
7f7dd416 1650 if (TMath::Abs(charge) < 0.001)\r
0aaa8b91 1651 continue;\r
1652\r
1653 // only postive charged \r
847e74b2 1654 if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
0aaa8b91 1655 continue;\r
1656 \r
1657 // only negative charged \r
847e74b2 1658 if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
0aaa8b91 1659 continue;\r
1660 \r
1661 // physical primary\r
1662 Bool_t prim = stack->IsPhysicalPrimary(iMc);\r
1663\r
1664 // check accepted\r
1665 if(accCuts->AcceptTrack(particle)) \r
1666 {\r
df1c0513 1667 if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) { \r
7f7dd416 1668 fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
df1c0513 1669 Double_t vMCPrimTrackHist[4] = {vtxMC[2],particle->Pt(),particle->Eta(),multMCTrueTracks}; \r
1670 fMCPrimTrackHist->Fill(vMCPrimTrackHist);\r
1671 } \r
0aaa8b91 1672\r
1673 // fill control histograms\r
1674 if(fHistogramsOn) \r
1675 FillHistograms(stack,iMc,AlidNdPtHelper::kAccTracks); \r
1676\r
1677 // check multiple found tracks\r
00b81913 1678 Int_t multCount = 0;\r
0aaa8b91 1679 for(Int_t iRec=0; iRec<multRec; ++iRec)\r
1680 {\r
1681 if(iMc == labelsRec[iRec]) \r
1682 {\r
00b81913 1683 multCount++;\r
1684 if(multCount>1)\r
0aaa8b91 1685 { \r
1686 fRecMultTrackMatrix->Fill(vTrackMatrix);\r
1687\r
1688 // fill control histogram\r
1689 if(fHistogramsOn) {\r
1690 Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1691 Double_t vMCMultRecTrackHist1[3] = {particle->Pt(), particle->Eta(), pid};\r
1692 fMCMultRecTrackHist1->Fill(vMCMultRecTrackHist1);\r
1693 }\r
1694 }\r
1695 }\r
1696 }\r
1697\r
1698 // check reconstructed\r
1699 for(Int_t iRec=0; iRec<multRec; ++iRec)\r
1700 {\r
1701 if(iMc == labelsRec[iRec]) \r
1702 {\r
1703 fRecTrackMatrix->Fill(vTrackMatrix);\r
55468faf 1704 \r
d0d90851 1705 if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) {\r
7f7dd416 1706 fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
d0d90851 1707 //AliESDtrack *track = esdEvent->GetTrack(iRec);\r
1708 //if(track && track->GetKinkIndex(0) < 0) \r
1709 // printf("prim kink \n");\r
55468faf 1710 countRecCandle++;\r
d0d90851 1711 }\r
7f7dd416 1712\r
0aaa8b91 1713 if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
1714\r
1715 // fill control histograms\r
1716 if(fHistogramsOn) \r
1717 FillHistograms(stack,iMc,AlidNdPtHelper::kRecTracks); \r
1718 \r
1719 break;\r
1720 }\r
1721 }\r
1722 }\r
1723 }\r
55468faf 1724\r
1725 if(countRecCandle>0) fRecCandleEventMatrix->Fill(vEventMatrix);\r
96b0dca8 1726 }\r
1727 }\r
1728 }// end bUseMC\r
0aaa8b91 1729\r
1730 if(allChargedTracks) delete allChargedTracks; allChargedTracks = 0;\r
1731 if(labelsAll) delete [] labelsAll; labelsAll = 0;\r
1732 if(labelsAcc) delete [] labelsAcc; labelsAcc = 0;\r
1733 if(labelsRec) delete [] labelsRec; labelsRec = 0;\r
1734\r
1735 if(!evtCuts->IsRecVertexRequired() && vtxESD != NULL) delete vtxESD;\r
17e8c701 1736 //if(trigAna) delete trigAna;\r
0aaa8b91 1737\r
1738}\r
1739\r
1740//_____________________________________________________________________________\r
1741void AlidNdPtAnalysis::FillHistograms(TObjArray *const allChargedTracks,Int_t *const labelsAll,Int_t multAll,Int_t *const labelsAcc,Int_t multAcc,Int_t *const labelsRec,Int_t multRec) {\r
1742 // multiplicity histograms\r
1743 \r
1744 if(!allChargedTracks) return;\r
1745 if(!labelsAll) return;\r
1746 if(!labelsAcc) return;\r
1747 if(!labelsRec) return;\r
1748\r
1749 Int_t entries = allChargedTracks->GetEntries();\r
1750 for(Int_t i=0; i<entries; ++i)\r
1751 {\r
1752 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1753 if(!track) continue;\r
1754 if(track->Charge() == 0) continue;\r
1755\r
1756 Int_t label = TMath::Abs(track->GetLabel());\r
1757 for(Int_t iAll=0; iAll<multAll; ++iAll) {\r
1758 if(label == labelsAll[iAll]) {\r
1759 Double_t v1[2] = {track->Pt(), multAll}; \r
1760 fRecTrackMultHist1[AlidNdPtHelper::kAllTracks]->Fill(v1);\r
1761 }\r
1762 }\r
1763 for(Int_t iAcc=0; iAcc<multAcc; ++iAcc) {\r
1764 if(label == labelsAcc[iAcc]) {\r
1765 Double_t v2[2] = {track->Pt(), multAcc}; \r
1766 fRecTrackMultHist1[AlidNdPtHelper::kAccTracks]->Fill(v2);\r
1767 }\r
1768 }\r
1769 for(Int_t iRec=0; iRec<multRec; ++iRec) {\r
1770 if(label == labelsRec[iRec]) {\r
1771 Double_t v3[2] = {track->Pt(), multRec}; \r
1772 fRecTrackMultHist1[AlidNdPtHelper::kRecTracks]->Fill(v3);\r
1773 }\r
1774 }\r
1775 }\r
1776}\r
1777\r
1778//_____________________________________________________________________________\r
df1c0513 1779void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multRecMult)\r
0aaa8b91 1780{\r
1781 //\r
1782 // Fill ESD track and MC histograms \r
1783 //\r
1784 if(!esdTrack) return;\r
1785\r
1786 Float_t q = esdTrack->Charge();\r
00b81913 1787 if(TMath::Abs(q) < 0.001) return;\r
0aaa8b91 1788\r
1789 Float_t pt = esdTrack->Pt();\r
1790 //Float_t qpt = esdTrack->Pt() * q;\r
1791 Float_t eta = esdTrack->Eta();\r
1792 Float_t phi = esdTrack->Phi();\r
1793\r
1794 Float_t dca[2], bCov[3];\r
1795 esdTrack->GetImpactParameters(dca,bCov);\r
1796\r
985bdfd5 1797 Int_t nClust = esdTrack->GetTPCclusters(0);\r
1798 Float_t chi2PerCluster = 0.;\r
1799 if(nClust>0.) chi2PerCluster = esdTrack->GetTPCchi2()/Float_t(nClust);\r
1800\r
0aaa8b91 1801\r
1802 // fill histograms\r
f4f8cae4 1803 Double_t values1[3] = {pt,eta,phi}; \r
1804 fRecTrackHist1[trackObj]->Fill(values1);\r
1805\r
df1c0513 1806 Double_t values[4] = {zv, pt,eta, multRecMult}; \r
f4f8cae4 1807 if(trackObj == AlidNdPtHelper::kRecTracks) {\r
1808 fRecTrackHist->Fill(values);\r
1809 }\r
985bdfd5 1810\r
7f7dd416 1811 /*\r
f4f8cae4 1812 Double_t values2[5] = {nClust,chi2PerCluster,pt,eta,phi}; \r
985bdfd5 1813 if(trackObj == AlidNdPtHelper::kRecTracks) \r
1814 {\r
1815 if(fHistogramsOn)\r
f4f8cae4 1816 fRecTrackHist2->Fill(values2);\r
985bdfd5 1817 }\r
7f7dd416 1818 */\r
0aaa8b91 1819 \r
1820 //\r
1821 // Fill rec vs MC information\r
1822 //\r
1823 if(!stack) return;\r
1824\r
1825 Int_t label = TMath::Abs(esdTrack->GetLabel()); \r
fc98fbb5 1826 //if(label == 0) return;\r
0aaa8b91 1827\r
dcf806e0 1828 if(label > stack->GetNtrack()) return;\r
0aaa8b91 1829 TParticle* particle = stack->Particle(label);\r
1830 if(!particle) return;\r
1831\r
1832 //Bool_t prim = stack->IsPhysicalPrimary(label);\r
1833 //Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1834\r
00b81913 1835 Int_t motherPdg = -1;\r
0aaa8b91 1836 TParticle* mother = 0;\r
1837\r
1838 //TParticle* prim_mother = AlidNdPtHelper::FindPrimaryMother(stack,label);\r
1839 Int_t motherLabel = particle->GetMother(0); \r
1840 if(motherLabel>0) mother = stack->Particle(motherLabel);\r
00b81913 1841 if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
0aaa8b91 1842 //Int_t mech = particle->GetUniqueID(); // production mechanism\r
1843\r
09abaebb 1844 if(!particle->GetPDG()) return;\r
0aaa8b91 1845 Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
00b81913 1846 if(TMath::Abs(gq)<0.001) return;\r
0aaa8b91 1847 Float_t gpt = particle->Pt();\r
1848 Float_t geta = particle->Eta();\r
1849 //Float_t qgpt = particle->Pt() * gq;\r
1850 //Float_t gphi = particle->Phi();\r
1851\r
1852 Double_t dpt=0;\r
847e74b2 1853 //printf("pt %f, gpt %f \n",pt,gpt);\r
0aaa8b91 1854 if(gpt) dpt = (pt-gpt)/gpt;\r
1855 Double_t deta = (eta-geta);\r
1856 \r
1857 // fill histograms\r
1858 if(trackObj == AlidNdPtHelper::kRecTracks) \r
1859 {\r
1860 Double_t vTrackPtCorrelationMatrix[3]={pt,gpt,geta};\r
1861 fTrackPtCorrelationMatrix->Fill(vTrackPtCorrelationMatrix);\r
1862\r
1863 Double_t vRecMCTrackHist1[4]={gpt,geta,dpt,deta};\r
1864 fRecMCTrackHist1->Fill(vRecMCTrackHist1);\r
0aaa8b91 1865 }\r
1866}\r
1867\r
1868//_____________________________________________________________________________\r
1869void AlidNdPtAnalysis::FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj)\r
1870{\r
1871 // Fill MC histograms\r
1872 if(!stack) return;\r
1873\r
dcf806e0 1874 if(label > stack->GetNtrack()) return;\r
0aaa8b91 1875 TParticle* particle = stack->Particle(label);\r
1876 if(!particle) return;\r
1877\r
00b81913 1878 Int_t motherPdg = -1;\r
0aaa8b91 1879 TParticle* mother = 0;\r
1880\r
1881 //TParticle* prim_mother = AlidNdPtHelper::FindPrimaryMother(stack,label);\r
1882 Int_t motherLabel = particle->GetMother(0); \r
1883 if(motherLabel>0) mother = stack->Particle(motherLabel);\r
00b81913 1884 if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
0aaa8b91 1885 Int_t mech = particle->GetUniqueID(); // production mechanism\r
1886\r
09abaebb 1887 if(!particle->GetPDG()) return;\r
0aaa8b91 1888 Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
00b81913 1889 if(TMath::Abs(gq) < 0.001) return;\r
7f7dd416 1890\r
0aaa8b91 1891 Float_t gpt = particle->Pt();\r
1892 //Float_t qgpt = particle->Pt() * gq;\r
1893 Float_t geta = particle->Eta();\r
1894 Float_t gphi = particle->Phi();\r
1895 //Float_t gpz = particle->Pz();\r
1896\r
1897 Bool_t prim = stack->IsPhysicalPrimary(label);\r
1898 //Float_t vx = particle->Vx(); Float_t vy = particle->Vy(); Float_t vz = particle->Vz();\r
1899\r
1900 Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1901\r
1902 //if(prim&&pid==5) printf("pdgcode %d, production mech %d \n",particle->GetPdgCode(),mech);\r
00b81913 1903 //if(!prim) printf("motherPdg %d, particle %d, production mech %d\n",motherPdg, particle->GetPdgCode(),mech);\r
0aaa8b91 1904 \r
1905 //\r
1906 // fill histogram\r
1907 //\r
1908 Double_t vMCTrackHist1[3] = {gpt,geta,gphi};\r
1909 fMCTrackHist1[trackObj]->Fill(vMCTrackHist1);\r
1910\r
00b81913 1911 Double_t vMCPrimTrackHist1[5] = {gpt,geta,pid,mech,motherPdg};\r
7f7dd416 1912 Double_t vMCPrimTrackHist2[5] = {TMath::Abs(particle->GetPdgCode()),mech,motherPdg};\r
1913 //if(prim && AliPWG0Helper::IsPrimaryCharged(particle, label)) fMCPrimTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1914 if(prim) { \r
1915 fMCPrimTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1916 if(pid == 5) fMCPrimTrackHist2[trackObj]->Fill(vMCPrimTrackHist2);\r
0aaa8b91 1917 }\r
7f7dd416 1918 else { \r
1919 fMCSecTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1920 }\r
1921\r
0aaa8b91 1922}\r
1923\r
1924//_____________________________________________________________________________\r
00b81913 1925Long64_t AlidNdPtAnalysis::Merge(TCollection* const list) \r
0aaa8b91 1926{\r
68f10917 1927 // init if not done already\r
1928 if (!fIsInit) { Init(); }\r
1929 \r
0aaa8b91 1930 // Merge list of objects (needed by PROOF)\r
1931\r
1932 if (!list)\r
1933 return 0;\r
1934\r
1935 if (list->IsEmpty())\r
1936 return 1;\r
1937\r
1938 TIterator* iter = list->MakeIterator();\r
1939 TObject* obj = 0;\r
1940\r
791aaf54 1941 //\r
17f2bf95 1942 //TList *collPhysSelection = new TList;\r
791aaf54 1943\r
0aaa8b91 1944 // collection of generated histograms\r
1945\r
1946 Int_t count=0;\r
1947 while((obj = iter->Next()) != 0) {\r
1948 AlidNdPtAnalysis* entry = dynamic_cast<AlidNdPtAnalysis*>(obj);\r
1949 if (entry == 0) continue; \r
1950\r
791aaf54 1951 // physics selection\r
1952 //printf("entry->GetPhysicsTriggerSelection() %p \n", entry->GetPhysicsTriggerSelection());\r
17f2bf95 1953 //collPhysSelection->Add(entry->GetPhysicsTriggerSelection());\r
791aaf54 1954 \r
f4f8cae4 1955 //\r
1956 fRecEventHist->Add(entry->fRecEventHist);\r
1957 fRecTrackHist->Add(entry->fRecTrackHist);\r
1958\r
0aaa8b91 1959 //\r
1960 fEventMultCorrelationMatrix->Add(entry->fEventMultCorrelationMatrix);\r
1961 fTrackPtCorrelationMatrix->Add(entry->fTrackPtCorrelationMatrix);\r
1962\r
1963 //\r
1964 fGenEventMatrix->Add(entry->fGenEventMatrix);\r
1965 fGenSDEventMatrix->Add(entry->fGenSDEventMatrix);\r
1966 fGenDDEventMatrix->Add(entry->fGenDDEventMatrix);\r
1967 fGenNDEventMatrix->Add(entry->fGenNDEventMatrix);\r
1968 fGenNSDEventMatrix->Add(entry->fGenNSDEventMatrix);\r
1969\r
1970 fTriggerEventMatrix->Add(entry->fTriggerEventMatrix);\r
1971 fTriggerSDEventMatrix->Add(entry->fTriggerSDEventMatrix);\r
1972 fTriggerDDEventMatrix->Add(entry->fTriggerDDEventMatrix);\r
1973 fTriggerNDEventMatrix->Add(entry->fTriggerNDEventMatrix);\r
1974 fTriggerNSDEventMatrix->Add(entry->fTriggerNSDEventMatrix);\r
1975\r
1976 fRecEventMatrix->Add(entry->fRecEventMatrix);\r
1977 fRecSDEventMatrix->Add(entry->fRecSDEventMatrix);\r
1978 fRecDDEventMatrix->Add(entry->fRecDDEventMatrix);\r
1979 fRecNDEventMatrix->Add(entry->fRecNDEventMatrix);\r
1980 fRecNSDEventMatrix->Add(entry->fRecNSDEventMatrix);\r
1981\r
55468faf 1982 fRecCandleEventMatrix->Add(entry->fRecCandleEventMatrix);\r
0aaa8b91 1983 //\r
1984 fGenTrackEventMatrix->Add(entry->fGenTrackEventMatrix);\r
1985 fGenTrackSDEventMatrix->Add(entry->fGenTrackSDEventMatrix);\r
1986 fGenTrackDDEventMatrix->Add(entry->fGenTrackDDEventMatrix);\r
1987 fGenTrackNDEventMatrix->Add(entry->fGenTrackNDEventMatrix);\r
1988 fGenTrackNSDEventMatrix->Add(entry->fGenTrackNSDEventMatrix);\r
1989\r
1990 fTriggerTrackEventMatrix->Add(entry->fTriggerTrackEventMatrix);\r
1991 fTriggerTrackSDEventMatrix->Add(entry->fTriggerTrackSDEventMatrix);\r
1992 fTriggerTrackDDEventMatrix->Add(entry->fTriggerTrackDDEventMatrix);\r
1993 fTriggerTrackNDEventMatrix->Add(entry->fTriggerTrackNDEventMatrix);\r
1994 fTriggerTrackNSDEventMatrix->Add(entry->fTriggerTrackNSDEventMatrix);\r
1995\r
1996 fRecTrackEventMatrix->Add(entry->fRecTrackEventMatrix);\r
1997 fRecTrackSDEventMatrix->Add(entry->fRecTrackSDEventMatrix);\r
1998 fRecTrackDDEventMatrix->Add(entry->fRecTrackDDEventMatrix);\r
1999 fRecTrackNDEventMatrix->Add(entry->fRecTrackNDEventMatrix);\r
2000 fRecTrackNSDEventMatrix->Add(entry->fRecTrackNSDEventMatrix);\r
2001\r
2002 //\r
985bdfd5 2003 fGenTrackMatrix->Add(entry->fGenTrackMatrix);\r
0aaa8b91 2004 fGenPrimTrackMatrix->Add(entry->fGenPrimTrackMatrix);\r
2005 fRecPrimTrackMatrix->Add(entry->fRecPrimTrackMatrix);\r
2006 //\r
2007 fRecTrackMatrix->Add(entry->fRecTrackMatrix);\r
2008 fRecSecTrackMatrix->Add(entry->fRecSecTrackMatrix);\r
2009 //\r
2010 fRecMultTrackMatrix->Add(entry->fRecMultTrackMatrix);\r
2011\r
2012 //\r
2013 // control analysis histograms\r
2014 //\r
2015 fMCEventHist1->Add(entry->fMCEventHist1);\r
2016 fRecEventHist1->Add(entry->fRecEventHist1);\r
2017 fRecEventHist2->Add(entry->fRecEventHist2);\r
2018 fRecMCEventHist1->Add(entry->fRecMCEventHist1);\r
2019 fRecMCEventHist2->Add(entry->fRecMCEventHist2);\r
2020 fRecMCEventHist3->Add(entry->fRecMCEventHist3);\r
2021\r
2022 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) {\r
2023 fMCTrackHist1[i]->Add(entry->fMCTrackHist1[i]);\r
2024\r
2025 fMCPrimTrackHist1[i]->Add(entry->fMCPrimTrackHist1[i]);\r
7f7dd416 2026 fMCPrimTrackHist2[i]->Add(entry->fMCPrimTrackHist2[i]);\r
0aaa8b91 2027 fMCSecTrackHist1[i]->Add(entry->fMCSecTrackHist1[i]);\r
2028\r
2029 fRecTrackHist1[i]->Add(entry->fRecTrackHist1[i]);\r
2030 fRecTrackMultHist1[i]->Add(entry->fRecTrackMultHist1[i]);\r
2031 }\r
2032 fRecMCTrackHist1->Add(entry->fRecMCTrackHist1);\r
2033 fMCMultRecTrackHist1->Add(entry->fMCMultRecTrackHist1);\r
985bdfd5 2034 fRecTrackHist2->Add(entry->fRecTrackHist2);\r
24c88fc4 2035 fEventCount->Add(entry->fEventCount);\r
df1c0513 2036 fMCPrimTrackHist->Add(entry->fMCPrimTrackHist);\r
0aaa8b91 2037\r
2038 count++;\r
2039 }\r
2040\r
17f2bf95 2041 //AliPhysicsSelection *trigSelection = GetPhysicsTriggerSelection();\r
2042 //trigSelection->Merge(collPhysSelection);\r
2043 //if(collPhysSelection) delete collPhysSelection;\r
791aaf54 2044\r
0aaa8b91 2045return count;\r
2046}\r
791aaf54 2047\r
2048//____________________________________________________________________\r
2049Bool_t AlidNdPtAnalysis::IsBinZeroTrackSPDvtx(const AliESDEvent* esdEvent) {\r
2050//\r
2051// check 0-bin\r
2052// for LHC background calculation\r
2053// return kTRUE if vertex not reconstructed or\r
2054// track multiplicity == 0\r
2055//\r
2056if(!esdEvent) return kFALSE;\r
2057\r
2058 // check vertex\r
2059 const AliESDVertex *vertex = esdEvent->GetPrimaryVertexTracks();\r
2060 if(!vertex) return kTRUE;\r
2061\r
2062 if(vertex->GetNContributors() < 1) {\r
2063 // SPD vertex\r
2064 vertex = esdEvent->GetPrimaryVertexSPD();\r
695facdf 2065 if(!vertex) return kTRUE;\r
791aaf54 2066 }\r
695facdf 2067 if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
791aaf54 2068 if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCITSHybridTrackSPDvtx) ) \r
2069 return kTRUE;\r
695facdf 2070 \r
791aaf54 2071return kFALSE;\r
2072}\r
2073\r
2074//____________________________________________________________________\r
2075Bool_t AlidNdPtAnalysis::IsBinZeroSPDvtx(const AliESDEvent* esdEvent) {\r
2076//\r
2077// check 0-bin\r
2078// for LHC background calculation\r
2079// return kTRUE if vertex not reconstructed or\r
2080// tracklet multiplicity == 0\r
2081//\r
2082if(!esdEvent) return kFALSE;\r
2083\r
2084 // check vertex\r
2085 const AliESDVertex* vertex = esdEvent->GetPrimaryVertexSPD();\r
2086 if(!vertex) return kTRUE;\r
2087 if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
2088 if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCSPDvtx) ) return kTRUE;\r
695facdf 2089 \r
791aaf54 2090return kFALSE;\r
2091}\r
2092\r
0aaa8b91 2093//_____________________________________________________________________________\r
2094void AlidNdPtAnalysis::Analyse() \r
2095{\r
68f10917 2096 // init if not done already\r
2097 if (!fIsInit) { Init(); }\r
2098 \r
0aaa8b91 2099 // Analyse histograms\r
2100 //\r
2101 TH1::AddDirectory(kFALSE);\r
2102 TH1 *h=0, *h1=0, *h2=0, *h2c = 0; \r
0aaa8b91 2103 THnSparse *hs=0; \r
2104 TH2 *h2D=0; \r
0aaa8b91 2105\r
2106 char name[256];\r
2107 TObjArray *aFolderObj = new TObjArray;\r
b4cdc39d 2108 if(!aFolderObj) return;\r
791aaf54 2109 \r
2110 //\r
2111 // LHC backgraund in all and 0-bins\r
2112 //\r
17f2bf95 2113 //AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
2114 //trigSel->SaveHistograms("physics_selection");\r
791aaf54 2115\r
bad4ba69 2116 //\r
2117 // Reconstructed event vertex\r
2118 //\r
2119 h = fRecEventHist1->Projection(0);\r
2120 h->SetName("Xv");\r
2121 aFolderObj->Add(h);\r
2122\r
2123 h = fRecEventHist1->Projection(1);\r
2124 h->SetName("Yv");\r
2125 aFolderObj->Add(h);\r
2126\r
2127 h = fRecEventHist1->Projection(2);\r
2128 h->SetName("Zv");\r
2129 aFolderObj->Add(h);\r
2130\r
2131 //\r
2132 // multiplicity\r
2133 //\r
2134 h = fRecEventHist2->Projection(1);\r
2135 h->SetName("multMB");\r
2136 aFolderObj->Add(h);\r
2137\r
2138 h = fRecEventHist2->Projection(2);\r
2139 h->SetName("multiplicity");\r
2140 aFolderObj->Add(h);\r
2141\r
2142 h2D = fRecEventHist2->Projection(0,1); \r
2143 h2D->SetName("Zv_vs_multiplicity_MB");\r
2144 aFolderObj->Add(h2D);\r
2145\r
2146 //\r
2147 // reconstructed pt histograms\r
2148 //\r
2149 h = fRecTrackHist1[0]->Projection(0);\r
985bdfd5 2150 h->Scale(1.,"width");\r
bad4ba69 2151 h->SetName("pt_all_ch");\r
2152 aFolderObj->Add(h);\r
2153\r
2154 h = fRecTrackHist1[1]->Projection(0);\r
985bdfd5 2155 h->Scale(1.,"width");\r
bad4ba69 2156 h->SetName("pt_acc");\r
2157 aFolderObj->Add(h);\r
2158\r
2159 h = fRecTrackHist1[2]->Projection(0);\r
985bdfd5 2160 h->Scale(1.,"width");\r
bad4ba69 2161 h->SetName("pt_rec");\r
2162 aFolderObj->Add(h);\r
2163\r
2164 //\r
2165 // reconstructed eta histograms\r
2166 //\r
2167 h = fRecTrackHist1[0]->Projection(1);\r
2168 h->SetName("eta_all_ch");\r
2169 aFolderObj->Add(h);\r
2170\r
2171 h = fRecTrackHist1[1]->Projection(1);\r
2172 h->SetName("eta_acc");\r
2173 aFolderObj->Add(h);\r
2174\r
2175 h = fRecTrackHist1[2]->Projection(1);\r
2176 h->SetName("eta_rec");\r
2177 aFolderObj->Add(h);\r
2178\r
2179 //\r
2180 // reconstructed phi histograms\r
2181 //\r
2182 h = fRecTrackHist1[0]->Projection(2);\r
2183 h->SetName("phi_all_ch");\r
2184 aFolderObj->Add(h);\r
2185\r
2186 h = fRecTrackHist1[1]->Projection(2);\r
2187 h->SetName("phi_acc");\r
2188 aFolderObj->Add(h);\r
2189\r
2190 h = fRecTrackHist1[2]->Projection(2);\r
2191 h->SetName("phi_rec");\r
2192 aFolderObj->Add(h);\r
2193\r
2194 //\r
2195 // reconstructed eta:pt histograms\r
2196 //\r
2197 h2D = fRecTrackHist1[0]->Projection(1,0);\r
2198 h2D->SetName("pt_eta_all_ch");\r
2199 aFolderObj->Add(h2D);\r
2200\r
2201 h2D = fRecTrackHist1[1]->Projection(1,0);\r
2202 h2D->SetName("pt_eta_acc");\r
2203 aFolderObj->Add(h2D);\r
2204\r
2205 h2D = fRecTrackHist1[2]->Projection(1,0);\r
2206 h2D->SetName("pt_eta_rec");\r
2207 aFolderObj->Add(h2D);\r
2208\r
2209 //\r
2210 // reconstructed phi:pt histograms\r
2211 //\r
2212 h2D = fRecTrackHist1[0]->Projection(2,0);\r
2213 h2D->SetName("pt_phi_all_ch");\r
2214 aFolderObj->Add(h2D);\r
2215\r
2216 h2D = fRecTrackHist1[1]->Projection(2,0);\r
2217 h2D->SetName("pt_phi_acc");\r
2218 aFolderObj->Add(h2D);\r
2219\r
2220 h2D = fRecTrackHist1[2]->Projection(2,0);\r
2221 h2D->SetName("pt_phi_rec");\r
2222 aFolderObj->Add(h2D);\r
2223\r
2224 //\r
2225 // reconstructed phi:eta histograms\r
2226 //\r
2227 h2D = fRecTrackHist1[0]->Projection(2,1);\r
2228 h2D->SetName("eta_phi_all_ch");\r
2229 aFolderObj->Add(h2D);\r
2230\r
2231 h2D = fRecTrackHist1[1]->Projection(2,1);\r
2232 h2D->SetName("eta_phi_acc");\r
2233 aFolderObj->Add(h2D);\r
2234\r
2235 h2D = fRecTrackHist1[2]->Projection(2,1);\r
2236 h2D->SetName("eta_phi_rec");\r
2237 aFolderObj->Add(h2D);\r
2238\r
985bdfd5 2239 //\r
2240 // reconstructed nClust, chi2 vs pt, eta, phi\r
2241 //\r
2242 if(fHistogramsOn) {\r
2243\r
2244 h2D = fRecTrackHist2->Projection(0,1);\r
2245 h2D->SetName("nClust_chi2_rec");\r
2246 aFolderObj->Add(h2D);\r
2247\r
2248 h2D = fRecTrackHist2->Projection(0,2);\r
2249 h2D->SetName("nClust_pt_rec");\r
2250 aFolderObj->Add(h2D);\r
2251\r
2252 h2D = fRecTrackHist2->Projection(0,3);\r
2253 h2D->SetName("nClust_eta_rec");\r
2254 aFolderObj->Add(h2D);\r
2255\r
2256 h2D = fRecTrackHist2->Projection(0,4);\r
2257 h2D->SetName("nClust_phi_rec");\r
2258 aFolderObj->Add(h2D);\r
2259\r
2260 h2D = fRecTrackHist2->Projection(1,2);\r
2261 h2D->SetName("chi2_pt_rec");\r
2262 aFolderObj->Add(h2D);\r
2263\r
2264 h2D = fRecTrackHist2->Projection(1,3);\r
2265 h2D->SetName("chi2_eta_rec");\r
2266 aFolderObj->Add(h2D);\r
2267\r
2268 h2D = fRecTrackHist2->Projection(1,4);\r
2269 h2D->SetName("chi2_phi_rec");\r
2270 aFolderObj->Add(h2D);\r
2271\r
2272 }\r
2273\r
0aaa8b91 2274 //\r
2275 // calculate corrections for empty events\r
2276 // with multMB==0 \r
2277 //\r
2278\r
2279 //\r
2280 // normalised zv to generate zv for triggered events\r
2281 //\r
2282 h = fRecEventHist2->Projection(0);\r
2283 if( h->Integral() ) h->Scale(1./h->Integral());\r
2284 h->SetName("zv_distribution_norm");\r
2285 aFolderObj->Add(h);\r
bad4ba69 2286 \r
2287 //\r
2288 // MC available\r
2289 //\r
2290 if(IsUseMCInfo()) {\r
2291\r
2292 //\r
2293 // Event vertex resolution\r
2294 //\r
2295 h2D = fRecMCEventHist2->Projection(0,2);\r
2296 h2D->SetName("DeltaXv_vs_mult");\r
2297 aFolderObj->Add(h2D);\r
2298\r
2299 h2D = fRecMCEventHist2->Projection(1,2);\r
2300 h2D->SetName("DeltaZv_vs_mult");\r
2301 aFolderObj->Add(h2D);\r
0aaa8b91 2302\r
2303 //\r
2304 // normalised zv to get trigger/trigger+vertex event differences\r
2305 // F(zv) = E_trig(zv,0)/Int(E_trig(zv,0) / Sum(E_trigvtx(zv,n))/Sum(Int(E_trigvtx(zv,n))dzv)\r
2306 //\r
2307 fTriggerEventMatrix->GetAxis(1)->SetRangeUser(0.,0.);\r
2308 h = fTriggerEventMatrix->Projection(0);\r
bad4ba69 2309 h2D = fTriggerEventMatrix->Projection(0,1);\r
2310 if(h2D->Integral()) h->Scale(1./h2D->Integral());\r
0aaa8b91 2311\r
2312 h1 = fRecEventMatrix->Projection(0);\r
bad4ba69 2313 h2D = fRecEventMatrix->Projection(0,1);\r
2314 if(h2D->Integral()) h1->Scale(1./h2D->Integral());\r
0aaa8b91 2315\r
2316 h->Divide(h1);\r
2317 h->SetName("zv_empty_events_norm");\r
2318 aFolderObj->Add(h);\r
2319 \r
2320 fTriggerEventMatrix->GetAxis(1)->SetRange(1,fTriggerEventMatrix->GetAxis(1)->GetNbins());\r
2321\r
2322 //\r
2323 // rec. vs true multiplicity correlation matrix\r
2324 //\r
2325 hs = (THnSparse*)fEventMultCorrelationMatrix->Clone("event_mult_correlation_matrix");\r
2326 aFolderObj->Add(hs);\r
2327 \r
2328 //\r
2329 // rec. vs true track pt correlation matrix\r
2330 //\r
2331 hs = (THnSparse*)fTrackPtCorrelationMatrix->Clone("track_pt_correlation_matrix");\r
2332 aFolderObj->Add(hs);\r
2333\r
2334 //\r
2335 // trigger efficiency for INEL\r
2336 //\r
bad4ba69 2337 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fGenEventMatrix->Projection(0),"zv_trig_INEL_eff_matrix");\r
2338 aFolderObj->Add(h);\r
0aaa8b91 2339\r
2340 //\r
2341 // trigger efficiency for NSD\r
2342 //\r
bad4ba69 2343 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerNSDEventMatrix->Projection(0),fGenNSDEventMatrix->Projection(0),"zv_trig_NSD_eff_matrix");\r
2344 aFolderObj->Add(h);\r
0aaa8b91 2345\r
2346 //\r
2347 // trigger bias correction (MB to ND)\r
2348 //\r
2349 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoND_corr_matrix");\r
2350 aFolderObj->Add(hs);\r
2351\r
bad4ba69 2352 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoND_corr_matrix");\r
2353 aFolderObj->Add(h);\r
0aaa8b91 2354\r
0aaa8b91 2355\r
bad4ba69 2356 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoND_corr_matrix");\r
0aaa8b91 2357\r
bad4ba69 2358 aFolderObj->Add(h);\r
0aaa8b91 2359\r
2360 //\r
2361 // trigger bias correction (MB to NSD)\r
2362 //\r
2363 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoNSD_corr_matrix");\r
2364 aFolderObj->Add(hs);\r
2365\r
2366 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoNSD_corr_matrix_2D");\r
2367 aFolderObj->Add(h2D);\r
2368\r
bad4ba69 2369 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoNSD_corr_matrix");\r
2370 aFolderObj->Add(h);\r
0aaa8b91 2371\r
0aaa8b91 2372\r
bad4ba69 2373 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoNSD_corr_matrix");\r
2374 aFolderObj->Add(h);\r
0aaa8b91 2375\r
0aaa8b91 2376\r
2377 //\r
2378 // trigger bias correction (MB to INEL)\r
2379 //\r
2380 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoInel_corr_matrix");\r
2381 aFolderObj->Add(hs);\r
2382\r
0aaa8b91 2383 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoInel_corr_matrix_2D");\r
2384 aFolderObj->Add(h2D);\r
2385\r
515964cb 2386 h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoInel_corr_matrix");\r
2387 aFolderObj->Add(h);\r
0aaa8b91 2388\r
bad4ba69 2389 h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoInel_corr_matrix");\r
2390 aFolderObj->Add(h);\r
0aaa8b91 2391\r
0aaa8b91 2392\r
2393 //\r
2394 // event vertex reconstruction correction (MB)\r
2395 //\r
2396 hs = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix,fRecEventMatrix,"zv_mult_event_corr_matrix");\r
2397 aFolderObj->Add(hs);\r
2398\r
2399 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0,1),fRecEventMatrix->Projection(0,1),"zv_mult_event_corr_matrix_2D");\r
2400 aFolderObj->Add(h2D);\r
2401\r
0aaa8b91 2402\r
bad4ba69 2403 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(1),fRecEventMatrix->Projection(1),"mult_event_corr_matrix");\r
2404 aFolderObj->Add(h);\r
0aaa8b91 2405\r
0aaa8b91 2406\r
bad4ba69 2407 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fRecEventMatrix->Projection(0),"zv_event_corr_matrix");\r
2408 aFolderObj->Add(h);\r
0aaa8b91 2409\r
2410 //\r
2411 // track-event trigger bias correction (MB to ND)\r
2412 //\r
2413\r
2414 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoND_corr_matrix");\r
2415 aFolderObj->Add(hs);\r
2416\r
2417 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoND_corr_matrix");\r
2418 aFolderObj->Add(h2D);\r
2419\r
2420 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoND_corr_matrix");\r
2421 aFolderObj->Add(h2D);\r
2422\r
2423 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoND_corr_matrix");\r
2424 aFolderObj->Add(h2D);\r
2425\r
2426 //\r
2427 // track-event trigger bias correction (MB to NSD)\r
2428 //\r
2429 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoNSD_corr_matrix");\r
2430 aFolderObj->Add(hs);\r
2431\r
2432 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoNSD_corr_matrix");\r
2433 aFolderObj->Add(h2D);\r
2434\r
2435 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoNSD_corr_matrix");\r
2436 aFolderObj->Add(h2D);\r
2437\r
2438 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoNSD_corr_matrix");\r
2439 aFolderObj->Add(h2D);\r
2440\r
2441\r
2442 //\r
2443 // track-event trigger bias correction (MB to INEL)\r
2444 //\r
2445 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoInel_corr_matrix");\r
2446 aFolderObj->Add(hs);\r
2447\r
2448 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoInel_corr_matrix");\r
2449 aFolderObj->Add(h2D);\r
2450\r
2451 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoInel_corr_matrix");\r
2452 aFolderObj->Add(h2D);\r
2453\r
2454 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoInel_corr_matrix");\r
2455 aFolderObj->Add(h2D);\r
2456\r
2457 // efficiency\r
0aaa8b91 2458\r
bad4ba69 2459 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1),fGenTrackEventMatrix->Projection(1),"pt_track_trig_MBtoInel_eff_matrix");\r
2460 aFolderObj->Add(h);\r
0aaa8b91 2461\r
0aaa8b91 2462\r
2463 //\r
2464 // track-event vertex reconstruction correction (MB)\r
2465 //\r
2466 hs = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix,fRecTrackEventMatrix,"zv_pt_eta_track_event_corr_matrix");\r
2467 aFolderObj->Add(hs);\r
2468\r
2469 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1,2),fRecTrackEventMatrix->Projection(1,2),"eta_pt_track_event_corr_matrix");\r
2470 aFolderObj->Add(h2D);\r
2471\r
2472 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1,0),fRecTrackEventMatrix->Projection(1,0),"pt_zv_track_event_corr_matrix");\r
2473 aFolderObj->Add(h2D);\r
2474\r
2475 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(2,0),fRecTrackEventMatrix->Projection(2,0),"zv_eta_track_event_corr_matrix");\r
2476 aFolderObj->Add(h2D);\r
2477 \r
2478 // efficiency\r
0aaa8b91 2479\r
bad4ba69 2480 h = AlidNdPtHelper::GenerateCorrMatrix(fRecTrackEventMatrix->Projection(1),fTriggerTrackEventMatrix->Projection(1),"pt_track_event_eff_matrix");\r
2481 aFolderObj->Add(h);\r
0aaa8b91 2482\r
0aaa8b91 2483\r
2484 //\r
2485 // track rec. efficiency correction\r
2486 //\r
2487 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix,fRecPrimTrackMatrix,"zv_pt_eta_track_corr_matrix");\r
2488 aFolderObj->Add(hs);\r
2489\r
2490 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1,2),fRecPrimTrackMatrix->Projection(1,2),"eta_pt_track_corr_matrix");\r
2491 aFolderObj->Add(h2D);\r
2492\r
2493 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1,0),fRecPrimTrackMatrix->Projection(1,0),"pt_zv_track_corr_matrix");\r
2494 aFolderObj->Add(h2D);\r
2495\r
2496 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2,0),fRecPrimTrackMatrix->Projection(2,0),"zv_eta_track_corr_matrix");\r
2497 aFolderObj->Add(h2D);\r
2498\r
0aaa8b91 2499 \r
bad4ba69 2500 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(0),fRecPrimTrackMatrix->Projection(0),"zv_track_corr_matrix");\r
2501 aFolderObj->Add(h);\r
0aaa8b91 2502\r
bad4ba69 2503 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1),fRecPrimTrackMatrix->Projection(1),"pt_track_corr_matrix");\r
2504 aFolderObj->Add(h);\r
0aaa8b91 2505\r
2506 // efficiency\r
847e74b2 2507\r
bad4ba69 2508 h = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
2509 aFolderObj->Add(h);\r
0aaa8b91 2510\r
bad4ba69 2511 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2),fRecPrimTrackMatrix->Projection(2),"eta_track_corr_matrix");\r
2512 aFolderObj->Add(h);\r
0aaa8b91 2513\r
0aaa8b91 2514 //\r
2515 // secondary track contamination correction\r
2516 //\r
2517 //hs = AlidNdPtHelper::GenerateContCorrMatrix(fRecSecTrackMatrix,fRecTrackMatrix,"zv_pt_eta_track_cont_matrix");\r
2518 hs = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix,fRecTrackMatrix,"zv_pt_eta_track_cont_matrix");\r
2519 aFolderObj->Add(hs);\r
2520\r
2521 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1,2),fRecTrackMatrix->Projection(1,2),"eta_pt_track_cont_matrix");\r
2522 aFolderObj->Add(h2D);\r
2523\r
2524 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1,0),fRecTrackMatrix->Projection(1,0),"pt_zv_track_cont_matrix");\r
2525 aFolderObj->Add(h2D);\r
2526\r
2527 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_track_cont_matrix");\r
2528 aFolderObj->Add(h2D);\r
2529\r
bad4ba69 2530 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
2531 aFolderObj->Add(h);\r
0aaa8b91 2532\r
847e74b2 2533\r
bad4ba69 2534 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
2535 aFolderObj->Add(h);\r
0aaa8b91 2536\r
bad4ba69 2537 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_track_cont_matrix");\r
2538 aFolderObj->Add(h);\r
0aaa8b91 2539\r
0aaa8b91 2540 //\r
2541 // multiple track reconstruction correction\r
2542 //\r
2543 //hs = AlidNdPtHelper::GenerateContCorrMatrix(fRecMultTrackMatrix,fRecTrackMatrix,"zv_pt_eta_mult_track_cont_matrix");\r
2544 hs = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix,fRecTrackMatrix,"zv_pt_eta_mult_track_cont_matrix");\r
2545 aFolderObj->Add(hs);\r
2546\r
2547 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1,2),fRecTrackMatrix->Projection(1,2),"eta_pt_mult_track_cont_matrix");\r
2548 aFolderObj->Add(h2D);\r
2549\r
2550 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1,0),fRecTrackMatrix->Projection(1,0),"pt_zv_mult_track_cont_matrix");\r
2551 aFolderObj->Add(h2D);\r
2552\r
2553 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_mult_track_cont_matrix");\r
2554 aFolderObj->Add(h2D);\r
2555\r
bad4ba69 2556 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_mult_track_cont_matrix");\r
2557 aFolderObj->Add(h);\r
0aaa8b91 2558\r
bad4ba69 2559 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_mult_track_cont_matrix");\r
2560 aFolderObj->Add(h);\r
0aaa8b91 2561\r
bad4ba69 2562 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_mult_track_cont_matrix");\r
2563 aFolderObj->Add(h);\r
0aaa8b91 2564\r
0aaa8b91 2565 //\r
2566 // Control histograms\r
2567 //\r
2568 \r
2569 if(fHistogramsOn) {\r
2570\r
2571 // Efficiency electrons, muons, pions, kaons, protons, all\r
2572 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,1); \r
2573 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,1); \r
2574 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2575 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2576 h2c = (TH1D *)h2->Clone();\r
2577 h2c->Divide(h1);\r
2578 h2c->SetName("eff_pt_electrons");\r
2579 aFolderObj->Add(h2c);\r
2580\r
2581 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(2,2); \r
2582 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(2,2); \r
2583 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2584 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2585 h2c = (TH1D *)h2->Clone();\r
2586 h2c->Divide(h1);\r
2587 h2c->SetName("eff_pt_muons");\r
2588 aFolderObj->Add(h2c);\r
2589\r
2590 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(3,3); \r
2591 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(3,3); \r
2592 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2593 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2594 h2c = (TH1D *)h2->Clone();\r
2595 h2c->Divide(h1);\r
2596 h2c->SetName("eff_pt_pions");\r
2597 aFolderObj->Add(h2c);\r
2598\r
2599 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(4,4); \r
2600 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(4,4); \r
2601 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2602 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2603 h2c = (TH1D *)h2->Clone();\r
2604 h2c->Divide(h1);\r
2605 h2c->SetName("eff_pt_kaons");\r
2606 aFolderObj->Add(h2c);\r
2607\r
2608 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(5,5); \r
2609 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(5,5); \r
2610 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2611 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2612 h2c = (TH1D *)h2->Clone();\r
2613 h2c->Divide(h1);\r
2614 h2c->SetName("eff_pt_protons");\r
2615 aFolderObj->Add(h2c);\r
2616\r
7f7dd416 2617 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,5); \r
2618 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,5); \r
2619 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2620 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2621 h2c = (TH1D *)h2->Clone();\r
2622 h2c->Divide(h1);\r
2623 h2c->SetName("eff_pt_selected");\r
2624 aFolderObj->Add(h2c);\r
2625\r
0aaa8b91 2626 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,6); \r
2627 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,6); \r
2628 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2629 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2630 h2c = (TH1D *)h2->Clone();\r
2631 h2c->Divide(h1);\r
2632 h2c->SetName("eff_pt_all");\r
2633 aFolderObj->Add(h2c);\r
2634\r
bad4ba69 2635 fMCPrimTrackHist1[1]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[1]->GetAxis(1)->GetNbins()); \r
2636 fMCPrimTrackHist1[2]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[2]->GetAxis(1)->GetNbins());\r
2637\r
0aaa8b91 2638 // pt spetra\r
2639 // - rec, primaries, secondaries\r
2640 // - primaries (pid) \r
2641 // - secondaries (pid)\r
2642 // - secondaries (mech)\r
2643 // - secondaries (mother)\r
2644 //\r
0aaa8b91 2645\r
00b81913 2646 TH1D *mcPtAccall = fMCTrackHist1[1]->Projection(0);\r
2647 mcPtAccall->SetName("mc_pt_acc_all");\r
2648 aFolderObj->Add(mcPtAccall);\r
0aaa8b91 2649\r
00b81913 2650 TH1D *mcPtAccprim = fMCPrimTrackHist1[1]->Projection(0);\r
2651 mcPtAccprim->SetName("mc_pt_acc_prim");\r
2652 aFolderObj->Add(mcPtAccprim);\r
0aaa8b91 2653\r
00b81913 2654 TH1D *mcPtRecall = fMCTrackHist1[2]->Projection(0);\r
2655 mcPtRecall->SetName("mc_pt_rec_all");\r
2656 aFolderObj->Add(mcPtRecall);\r
0aaa8b91 2657\r
00b81913 2658 TH1D *mcPtRecprim = fMCPrimTrackHist1[2]->Projection(0);\r
2659 mcPtRecprim->SetName("mc_pt_rec_prim");\r
2660 aFolderObj->Add(mcPtRecprim);\r
0aaa8b91 2661\r
00b81913 2662 TH1D *mcPtRecsec = fMCSecTrackHist1[2]->Projection(0);\r
2663 mcPtRecsec->SetName("mc_pt_rec_sec");\r
2664 aFolderObj->Add(mcPtRecsec);\r
0aaa8b91 2665\r
2666 for(Int_t i = 0; i<6; i++) \r
2667 { \r
62e3b4b6 2668 snprintf(name,256,"mc_pt_rec_prim_pid_%d",i); \r
0aaa8b91 2669 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2670 h = fMCPrimTrackHist1[2]->Projection(0);\r
2671 h->SetName(name);\r
2672 aFolderObj->Add(h);\r
2673\r
62e3b4b6 2674 snprintf(name,256,"mc_pt_rec_sec_pid_%d",i); \r
0aaa8b91 2675 fMCSecTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2676 h = fMCSecTrackHist1[2]->Projection(0);\r
2677 h->SetName(name);\r
2678 aFolderObj->Add(h);\r
2679\r
2680 // production mechanisms for given pid\r
2681 fMCSecTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2682\r
2683 for(Int_t j=0; j<20; j++) {\r
2684 if(j == 4) {\r
2685 // decay\r
2686 \r
62e3b4b6 2687 snprintf(name,256,"mc_pt_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2688 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2689 h = fMCSecTrackHist1[2]->Projection(0);\r
2690 h->SetName(name);\r
2691 aFolderObj->Add(h);\r
2692\r
62e3b4b6 2693 snprintf(name,256,"mc_eta_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2694 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2695 h = fMCSecTrackHist1[2]->Projection(1);\r
2696 h->SetName(name);\r
2697 aFolderObj->Add(h);\r
2698\r
62e3b4b6 2699 snprintf(name,256,"mc_mother_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2700 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2701 h = fMCSecTrackHist1[2]->Projection(4);\r
2702 h->SetName(name);\r
2703 aFolderObj->Add(h);\r
2704\r
2705 } else if (j == 5) {\r
2706 // conversion\r
2707\r
62e3b4b6 2708 snprintf(name,256,"mc_pt_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2709 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2710 h = fMCSecTrackHist1[2]->Projection(0);\r
2711 h->SetName(name);\r
2712 aFolderObj->Add(h);\r
2713\r
62e3b4b6 2714 snprintf(name,256,"mc_eta_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2715 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2716 h = fMCSecTrackHist1[2]->Projection(1);\r
2717 h->SetName(name);\r
2718 aFolderObj->Add(h);\r
2719\r
62e3b4b6 2720 snprintf(name,256,"mc_mother_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2721 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2722 h = fMCSecTrackHist1[2]->Projection(4);\r
2723 h->SetName(name);\r
2724 aFolderObj->Add(h);\r
2725\r
2726 } else if (j == 13) {\r
2727 // mat\r
2728 \r
62e3b4b6 2729 snprintf(name,256,"mc_pt_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2730 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2731 h = fMCSecTrackHist1[2]->Projection(0);\r
2732 h->SetName(name);\r
2733 aFolderObj->Add(h);\r
2734\r
62e3b4b6 2735 snprintf(name,256,"mc_eta_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2736 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2737 h = fMCSecTrackHist1[2]->Projection(1);\r
2738 h->SetName(name);\r
2739 aFolderObj->Add(h);\r
2740\r
62e3b4b6 2741 snprintf(name,256,"mc_eta_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2742 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2743 h = fMCSecTrackHist1[2]->Projection(4,1);\r
2744 h->SetName(name);\r
2745 aFolderObj->Add(h);\r
2746\r
62e3b4b6 2747 snprintf(name,256,"mc_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2748 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2749 h = fMCSecTrackHist1[2]->Projection(4);\r
2750 h->SetName(name);\r
2751 aFolderObj->Add(h);\r
2752\r
62e3b4b6 2753 snprintf(name,256,"mc_pt_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2754 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2755 h = fMCSecTrackHist1[2]->Projection(4,0);\r
2756 h->SetName(name);\r
2757 aFolderObj->Add(h);\r
2758\r
2759 } else {\r
2760 continue;\r
2761 }\r
2762 }\r
2763\r
2764 }\r
2765 } // end fHistogramOn\r
2766\r
2767 //\r
2768 // resolution histograms\r
2769 // only for reconstructed tracks\r
2770 //\r
2771\r
2772 TH2F *h2F=0;\r
2773 TCanvas * c = new TCanvas("resol","resol");\r
2774 c->cd();\r
2775\r
2776 //\r
847e74b2 2777 fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.8,0.79); \r
0aaa8b91 2778\r
2779 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
2780 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2781 h->SetXTitle("p_{tmc} (GeV/c)");\r
2782 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} resolution");\r
2783 h->Draw();\r
2784 h->SetName("pt_resolution_vs_mcpt");\r
2785 aFolderObj->Add(h);\r
2786\r
2787 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
2788 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2789 h->SetXTitle("p_{tmc} (GeV/c)");\r
2790 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} mean");\r
2791 h->Draw();\r
2792 h->SetName("dpt_mean_vs_mcpt");\r
2793 aFolderObj->Add(h);\r
2794\r
2795 //\r
2796 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,0);\r
2797 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2798 h->SetXTitle("p_{tmc} (GeV/c)");\r
2799 h->SetYTitle("(#eta-#eta_{mc}) resolution");\r
2800 h->Draw();\r
2801 h->SetName("eta_resolution_vs_mcpt");\r
2802 aFolderObj->Add(h);\r
2803\r
2804 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,0);\r
2805 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2806 h->SetXTitle("p_{tmc} (GeV/c)");\r
2807 h->SetYTitle("(#eta-mc#eta) mean");\r
2808 h->Draw();\r
2809 h->SetName("deta_mean_vs_mcpt");\r
2810 aFolderObj->Add(h);\r
2811 \r
2812 // \r
2813 fRecMCTrackHist1->GetAxis(1)->SetRange(1,fRecMCTrackHist1->GetAxis(1)->GetNbins()); \r
0aaa8b91 2814\r
2815 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,1);\r
2816 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2817 h->SetXTitle("#eta_{mc}");\r
2818 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} resolution");\r
2819 h->Draw();\r
2820 h->SetName("pt_resolution_vs_mceta");\r
2821 aFolderObj->Add(h);\r
2822\r
2823 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,1);\r
2824 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2825 h->SetXTitle("#eta_{mc}");\r
2826 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} mean");\r
2827 h->Draw();\r
2828 h->SetName("dpt_mean_vs_mceta");\r
2829 aFolderObj->Add(h);\r
2830\r
2831 //\r
2832 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,1);\r
2833 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2834 h->SetXTitle("#eta_{mc}");\r
2835 h->SetYTitle("(#eta-#eta_{mc}) resolution");\r
2836 h->Draw();\r
2837 h->SetName("eta_resolution_vs_mceta");\r
2838 aFolderObj->Add(h);\r
2839\r
2840 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,1);\r
2841 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2842 h->SetXTitle("#eta_{mc}");\r
2843 h->SetYTitle("(#eta-mc#eta) mean");\r
2844 h->Draw();\r
2845 h->SetName("deta_mean_vs_mceta");\r
2846 aFolderObj->Add(h);\r
2847\r
2848 fRecMCTrackHist1->GetAxis(0)->SetRange(1,fRecMCTrackHist1->GetAxis(0)->GetNbins()); \r
2849\r
bad4ba69 2850 } // end use MC info\r
2851\r
0aaa8b91 2852 // export objects to analysis folder\r
2853 fAnalysisFolder = ExportToFolder(aFolderObj);\r
2854\r
2855 // delete only TObjArray\r
2856 if(aFolderObj) delete aFolderObj;\r
2857}\r
2858\r
2859//_____________________________________________________________________________\r
c931948b 2860TFolder* AlidNdPtAnalysis::ExportToFolder(TObjArray * const array) \r
0aaa8b91 2861{\r
2862 // recreate folder avery time and export objects to new one\r
2863 //\r
2864 AlidNdPtAnalysis * comp=this;\r
2865 TFolder *folder = comp->GetAnalysisFolder();\r
2866\r
2867 TString name, title;\r
2868 TFolder *newFolder = 0;\r
2869 Int_t i = 0;\r
2870 Int_t size = array->GetSize();\r
2871\r
2872 if(folder) { \r
2873 // get name and title from old folder\r
2874 name = folder->GetName(); \r
2875 title = folder->GetTitle(); \r
2876\r
2877 // delete old one\r
2878 delete folder;\r
2879\r
2880 // create new one\r
2881 newFolder = CreateFolder(name.Data(),title.Data());\r
2882 newFolder->SetOwner();\r
2883\r
2884 // add objects to folder\r
2885 while(i < size) {\r
2886 newFolder->Add(array->At(i));\r
2887 i++;\r
2888 }\r
2889 }\r
2890\r
2891return newFolder;\r
2892}\r
2893\r
2894//_____________________________________________________________________________\r
2895TFolder* AlidNdPtAnalysis::CreateFolder(TString name,TString title) { \r
2896// create folder for analysed histograms\r
2897//\r
2898TFolder *folder = 0;\r
2899 folder = new TFolder(name.Data(),title.Data());\r
2900\r
2901 return folder;\r
2902}\r