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