]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdPt/AlidNdPtAnalysis.cxx
indented function MakeAnalysisFillHistograms
[u/mrichter/AliRoot.git] / PWG0 / 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
1058 isEventTriggered = inputHandler->IsEventSelected() & AliVEvent::kMB;\r
1059\r
1060 physicsSelection = static_cast<AliPhysicsSelection*> (inputHandler->GetEventSelection());\r
1061 if(!physicsSelection) return;\r
1062 //SetPhysicsTriggerSelection(physicsSelection);\r
1063\r
24c88fc4 1064 if (isEventTriggered && (GetTrigger() == AliTriggerAnalysis::kV0AND)) {\r
17f2bf95 1065 // set trigger (V0AND)\r
1066 triggerAnalysis = physicsSelection->GetTriggerAnalysis();\r
1067 if(!triggerAnalysis) return;\r
1068 isEventTriggered = triggerAnalysis->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
1069 }\r
1070\r
1071 // calculate LHC background\r
1072 if(!IsUseMCInfo()) \r
1073 { \r
1074 //\r
1075 // 0-multiplicity bin for LHC background correction\r
1076 //\r
fc98fbb5 1077 /* bin0 done in the train\r
17f2bf95 1078 if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
1079 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
1080 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
1081 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1082 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt ) \r
1083 {\r
fc98fbb5 1084 physicsSelection->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroTrackSPDvtx);\r
17f2bf95 1085 } else {\r
fc98fbb5 1086 physicsSelection->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroSPDvtx);\r
17f2bf95 1087 }\r
fc98fbb5 1088 */\r
17f2bf95 1089 }\r
1090 }\r
1091\r
1092\r
0aaa8b91 1093 // use MC information\r
1094 AliHeader* header = 0;\r
1095 AliGenEventHeader* genHeader = 0;\r
1096 AliStack* stack = 0;\r
1097 TArrayF vtxMC(3);\r
bad4ba69 1098 AliPWG0Helper::MCProcessType evtType = AliPWG0Helper::kInvalidProcess;\r
0aaa8b91 1099\r
1100 Int_t multMCTrueTracks = 0;\r
1101 if(IsUseMCInfo())\r
1102 {\r
1103 //\r
1104 if(!mcEvent) {\r
1105 AliDebug(AliLog::kError, "mcEvent not available");\r
1106 return;\r
1107 }\r
1108 // get MC event header\r
1109 header = mcEvent->Header();\r
1110 if (!header) {\r
1111 AliDebug(AliLog::kError, "Header not available");\r
1112 return;\r
1113 }\r
1114 // MC particle stack\r
1115 stack = mcEvent->Stack();\r
1116 if (!stack) {\r
1117 AliDebug(AliLog::kError, "Stack not available");\r
1118 return;\r
1119 }\r
1120 // get event type (ND=0x1, DD=0x2, SD=0x4)\r
bad4ba69 1121 evtType = AliPWG0Helper::GetEventProcessType(header);\r
0aaa8b91 1122 AliDebug(AliLog::kDebug+1, Form("Found process type %d", evtType));\r
1123\r
1124 // get MC vertex\r
1125 genHeader = header->GenEventHeader();\r
1126 if (!genHeader) {\r
1127 AliDebug(AliLog::kError, "Could not retrieve genHeader from Header");\r
1128 return;\r
1129 }\r
1130 genHeader->PrimaryVertex(vtxMC);\r
1131\r
1132 Double_t vMCEventHist1[3]={vtxMC[0],vtxMC[1],vtxMC[2]};\r
1133 fMCEventHist1->Fill(vMCEventHist1);\r
1134\r
1135 // multipliticy of all MC primary tracks\r
1136 // in Zv, pt and eta ranges)\r
1137 multMCTrueTracks = AlidNdPtHelper::GetMCTrueTrackMult(mcEvent,evtCuts,accCuts);\r
1138\r
1139 } // end bUseMC\r
1140\r
55468faf 1141\r
0aaa8b91 1142 // get reconstructed vertex \r
1143 const AliESDVertex* vtxESD = 0; \r
1144 Bool_t isRecVertex = kFALSE;\r
1145 if(evtCuts->IsRecVertexRequired()) \r
1146 {\r
bad4ba69 1147 Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
1148 Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
1149 vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
b4cdc39d 1150 if(!vtxESD) return;\r
791aaf54 1151 isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE);\r
0aaa8b91 1152 }\r
847e74b2 1153\r
0aaa8b91 1154 if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
1155 vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
b4cdc39d 1156 if(!vtxESD) return;\r
0aaa8b91 1157 isRecVertex = kTRUE;\r
1158 }\r
db7f25fe 1159 if(!vtxESD) return;\r
847e74b2 1160\r
0aaa8b91 1161 Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
985bdfd5 1162 //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
847e74b2 1163 //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
24c88fc4 1164 \r
1165 Bool_t isTrigAndVertex = isEventTriggered && isEventOK;\r
1166 \r
1167 Double_t vEventCount[3] = { (isEventTriggered && kTRUE) , isTrigAndVertex, isTrigAndVertex && (TMath::Abs(vtxESD->GetZv()) < 10.)};\r
1168 fEventCount->Fill(vEventCount); \r
0aaa8b91 1169\r
847e74b2 1170 // vertex contributors\r
0aaa8b91 1171 Int_t multMBTracks = 0; \r
847e74b2 1172 if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
1173 { \r
db7f25fe 1174 if(vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1175 multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
0aaa8b91 1176 } \r
ecab7b3d 1177 else if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
1178 GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate ) \r
847e74b2 1179 {\r
7f7dd416 1180 const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
db7f25fe 1181 if(mult && vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1182 multMBTracks = mult->GetNumberOfTracklets();\r
0aaa8b91 1183 } \r
ecab7b3d 1184 else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
1185 GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybrid || \r
1186 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
1187 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
1188 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1189 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt || \r
1190 GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx || \r
1191 GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx\r
695facdf 1192 )\r
791aaf54 1193 {\r
db7f25fe 1194 if(vtxESD && vtxESD->GetStatus() && isRecVertex)\r
791aaf54 1195 multMBTracks = vtxESD->GetNContributors();\r
1196 }\r
0aaa8b91 1197 else {\r
d0d90851 1198 AliDebug(AliLog::kError, Form("Found analysis type %d", GetAnalysisMode()));\r
0aaa8b91 1199 return; \r
1200 }\r
791aaf54 1201\r
55468faf 1202 Bool_t isEventSelected = kTRUE;\r
1203 if(evtCuts->IsEventSelectedRequired()) \r
1204 { \r
1205 // select events with at least \r
1206 // one prompt track in acceptance\r
1207 // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
1208\r
1209 isEventSelected = AlidNdPtHelper::SelectEvent(esdEvent,esdTrackCuts);\r
1210 //printf("isEventSelected %d \n", isEventSelected);\r
1211 }\r
1212\r
0aaa8b91 1213 TObjArray *allChargedTracks=0;\r
1214 Int_t multAll=0, multAcc=0, multRec=0;\r
1215 Int_t *labelsAll=0, *labelsAcc=0, *labelsRec=0;\r
1216\r
7f7dd416 1217\r
0aaa8b91 1218 // check event cuts\r
55468faf 1219 if(isEventOK && isEventTriggered && isEventSelected)\r
0aaa8b91 1220 {\r
1221 // get all charged tracks\r
bad4ba69 1222 allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
0aaa8b91 1223 if(!allChargedTracks) return;\r
1224\r
1225 Int_t entries = allChargedTracks->GetEntries();\r
847e74b2 1226 //printf("entries %d \n",entries);\r
fff1caf5 1227 \r
1228\r
1229 // calculate mult of reconstructed tracks\r
1230 Int_t multRecTemp=0;\r
1231 for(Int_t i=0; i<entries;++i) \r
1232 {\r
1233 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1234 if(!track) continue;\r
1235 if(track->Charge()==0) continue;\r
1236\r
1237\r
1238 // only postive charged \r
1239 if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
1240 continue;\r
1241 \r
1242 // only negative charged \r
1243 if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
1244 continue;\r
1245\r
1246 if(esdTrackCuts->AcceptTrack(track)) \r
1247 {\r
1248 if(accCuts->AcceptTrack(track)) multRecTemp++;\r
1249 } \r
1250 }\r
1251\r
847e74b2 1252\r
0aaa8b91 1253 labelsAll = new Int_t[entries];\r
1254 labelsAcc = new Int_t[entries];\r
1255 labelsRec = new Int_t[entries];\r
1256 for(Int_t i=0; i<entries;++i) \r
1257 {\r
1258 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1259 if(!track) continue;\r
1260 if(track->Charge()==0) continue;\r
847e74b2 1261\r
847e74b2 1262 // only postive charged \r
1263 if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
1264 continue;\r
1265 \r
1266 // only negative charged \r
1267 if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
1268 continue;\r
1269\r
24c88fc4 1270 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kAllTracks, multRecTemp); \r
1271 labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
1272 multAll++;\r
1273 \r
1274 //if(accCuts->AcceptTrack(track)) { \r
1275 //FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
1276 //labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
1277 //multAcc++;\r
1278 //}\r
695facdf 1279\r
f55ea19e 1280 // esd track selection \r
695facdf 1281 // ITS stand alone\r
1282 if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTrackSPDvtx) \r
1283 {\r
1284 if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
1285 if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
1286 if(track->GetNcls(0)<4) continue;\r
1287 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
1288 } \r
1289 else if(GetAnalysisMode() == AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx) \r
1290 {\r
1291 //\r
1292 // ITS and TPC stand alone tracks\r
1293 //\r
1294 if(!(track->GetStatus() & AliESDtrack::kITSpureSA)) continue;\r
1295 if(!(track->GetStatus() & AliESDtrack::kITSrefit)) continue;\r
1296 if(track->GetNcls(0)<4) continue;\r
1297 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) continue;\r
1298\r
1299 // Check matching with TPC only track\r
1300 Bool_t hasMatch = kFALSE;\r
1301 for(Int_t j=0; j<entries;++j) \r
1302 {\r
1303 if(i==j) continue;\r
1304 AliESDtrack *track2 = (AliESDtrack*)allChargedTracks->At(j);\r
1305 if(!track2) continue;\r
1306 if(track2->Charge()==0) continue;\r
1307 if (!track2->GetTPCInnerParam()) continue;\r
1308\r
1309 // check loose cuts for TPC tracks\r
1310 if(!esdTrackCuts->AcceptTrack(track2)) continue; \r
1311\r
1312 AliExternalTrackParam *innerTPC = new AliExternalTrackParam(*(track2->GetTPCInnerParam()));\r
1313 if(!innerTPC) continue;\r
1314 Double_t x2[3]; track2->GetXYZ(x2);\r
1315 Double_t b2[3]; AliTracker::GetBxByBz(x2,b2);\r
1316 Double_t dz[2],cov[3];\r
1317 Bool_t isPropOK = innerTPC->PropagateToDCABxByBz(vtxESD,b2,kVeryBig,dz,cov);\r
1318 if(!isPropOK && innerTPC) {delete innerTPC; continue;}\r
1319\r
1320 // check matching\r
1321 if (TMath::Abs(track->GetY() - innerTPC->GetY()) > 3) { delete innerTPC; continue; }\r
1322 if (TMath::Abs(track->GetSnp() - innerTPC->GetSnp()) > 0.2) { delete innerTPC; continue; }\r
1323 if (TMath::Abs(track->GetTgl() - innerTPC->GetTgl()) > 0.2) { delete innerTPC; continue; }\r
1324\r
1325 hasMatch = kTRUE;\r
1326 if(innerTPC) delete innerTPC;\r
1327 }\r
1328\r
1329 if(!hasMatch) continue;\r
1330 }\r
1331 else {\r
ecab7b3d 1332 // check track cuts\r
24c88fc4 1333 \r
695facdf 1334 if(!esdTrackCuts->AcceptTrack(track)) \r
1335 continue;\r
1336 }\r
1337\r
7f7dd416 1338 //\r
1339 Bool_t isOK = kFALSE;\r
1340 Double_t x[3]; track->GetXYZ(x);\r
1341 Double_t b[3]; AliTracker::GetBxByBz(x,b);\r
1342\r
1343 //\r
1344 // if TPC-ITS hybrid tracking (kTPCITSHybrid)\r
1345 // replace track parameters with TPC-ony track parameters\r
1346 //\r
695facdf 1347 if( GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybrid || \r
1348 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
1349 GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
7f7dd416 1350 {\r
791aaf54 1351 // Relate TPC-only tracks to Track or SPD vertex\r
1352 isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig);\r
7f7dd416 1353 if(!isOK) continue;\r
1354\r
1355 // replace esd track parameters with TPCinner\r
1356 AliExternalTrackParam *tpcTrack = new AliExternalTrackParam(*(track->GetTPCInnerParam()));\r
1357 if (!tpcTrack) return;\r
1358 track->Set(tpcTrack->GetX(),tpcTrack->GetAlpha(),tpcTrack->GetParameter(),tpcTrack->GetCovariance());\r
1359\r
1360 if(tpcTrack) delete tpcTrack; \r
1361 } \r
1362\r
a8ac5525 1363\r
7f7dd416 1364 // update track parameters using vertex point \r
ecab7b3d 1365 if( GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate || \r
1366 GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate ) \r
1367 {\r
a8ac5525 1368 // update track parameters\r
847e74b2 1369 AliExternalTrackParam cParam;\r
791aaf54 1370 isOK = track->RelateToVertexTPCBxByBz(vtxESD, b, kVeryBig, &cParam);\r
7f7dd416 1371 if(!isOK) continue;\r
847e74b2 1372 track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
1373\r
1374 if(accCuts->AcceptTrack(track)) {\r
fff1caf5 1375 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
847e74b2 1376 labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
1377 multRec++;\r
1378 } \r
a8ac5525 1379 }\r
1380 else {\r
695facdf 1381 if(accCuts->AcceptTrack(track)) \r
1382 {\r
fff1caf5 1383 FillHistograms(track,stack,vtxESD->GetZv(),AlidNdPtHelper::kRecTracks,multRecTemp); \r
847e74b2 1384 labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
1385 multRec++;\r
1386 }\r
791aaf54 1387 }\r
7f7dd416 1388 }\r
7f7dd416 1389\r
a8ac5525 1390\r
0aaa8b91 1391 // fill track multiplicity histograms\r
1392 FillHistograms(allChargedTracks,labelsAll,multAll,labelsAcc,multAcc,labelsRec,multRec);\r
1393\r
1394 Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
1395 fRecEventHist1->Fill(vRecEventHist1);\r
1396\r
bad4ba69 1397 Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRec};\r
0aaa8b91 1398 fRecEventHist2->Fill(vRecEventHist2);\r
f4f8cae4 1399\r
1400 // \r
1401 Double_t vRecEventHist[2] = {vtxESD->GetZv(),multMBTracks};\r
1402 fRecEventHist->Fill(vRecEventHist);\r
0aaa8b91 1403 } \r
1404\r
0aaa8b91 1405 if(IsUseMCInfo()) \r
1406 {\r
55468faf 1407 if(!mcEvent) return; \r
1408\r
1409 if(evtCuts->IsEventSelectedRequired()) \r
1410 { \r
1411 // select events with at least \r
1412 // one MC primary track in acceptance\r
1413 // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
1414\r
1415 Bool_t isMCEventSelected = AlidNdPtHelper::SelectMCEvent(mcEvent);\r
1416 //printf("isMCEventSelected %d \n", isMCEventSelected);\r
1417 if(!isMCEventSelected) return; \r
1418 }\r
1419\r
fff1caf5 1420 Double_t vMultTrueEventMatrix[3] = { multRec, multMCTrueTracks, multMBTracks};\r
695facdf 1421 if(isEventOK && isEventTriggered) { \r
1422 if(TMath::Abs(vtxMC[2]) < 10.0) // both Rec. and corresponding MC events must be accepted\r
1423 fEventMultCorrelationMatrix->Fill(vMultTrueEventMatrix);\r
1424 }\r
0aaa8b91 1425\r
1426 // \r
1427 // event level corrections (zv,N_MB)\r
1428 //\r
1429\r
1430 // all inelastic\r
1431 Double_t vEventMatrix[2] = {vtxMC[2],multMBTracks};\r
1432 fGenEventMatrix->Fill(vEventMatrix); \r
1433 if(isEventTriggered) fTriggerEventMatrix->Fill(vEventMatrix);\r
1434 if(isEventOK && isEventTriggered) fRecEventMatrix->Fill(vEventMatrix);\r
1435\r
1436 // single diffractive\r
bad4ba69 1437 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1438 fGenSDEventMatrix->Fill(vEventMatrix); \r
1439 if(isEventTriggered) fTriggerSDEventMatrix->Fill(vEventMatrix);\r
1440 if(isEventOK && isEventTriggered) fRecSDEventMatrix->Fill(vEventMatrix);\r
1441 }\r
1442\r
1443 // double diffractive\r
bad4ba69 1444 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1445 fGenDDEventMatrix->Fill(vEventMatrix); \r
1446 if(isEventTriggered) fTriggerDDEventMatrix->Fill(vEventMatrix);\r
1447 if(isEventOK && isEventTriggered) fRecDDEventMatrix->Fill(vEventMatrix);\r
1448 }\r
1449\r
1450 // non diffractive\r
bad4ba69 1451 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1452 fGenNDEventMatrix->Fill(vEventMatrix); \r
1453 if(isEventTriggered) fTriggerNDEventMatrix->Fill(vEventMatrix);\r
1454 if(isEventOK && isEventTriggered) fRecNDEventMatrix->Fill(vEventMatrix);\r
1455 }\r
1456\r
1457 // non single diffractive\r
bad4ba69 1458 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1459 fGenNSDEventMatrix->Fill(vEventMatrix); \r
1460 if(isEventTriggered) fTriggerNSDEventMatrix->Fill(vEventMatrix);\r
1461 if(isEventOK && isEventTriggered) fRecNSDEventMatrix->Fill(vEventMatrix);\r
1462 }\r
1463\r
1464 //\r
1465 // track-event level corrections (zv,pt,eta)\r
1466 //\r
9208324e 1467 for (Int_t iMc = 0; iMc < stack->GetNtrack(); ++iMc) \r
0aaa8b91 1468 {\r
1469 TParticle* particle = stack->Particle(iMc);\r
1470 if (!particle)\r
1471 continue;\r
1472\r
1473 // only charged particles\r
09abaebb 1474 if(!particle->GetPDG()) continue;\r
0aaa8b91 1475 Double_t charge = particle->GetPDG()->Charge()/3.;\r
00b81913 1476 if ( TMath::Abs(charge) < 0.001 )\r
0aaa8b91 1477 continue;\r
1478\r
1479 // only postive charged \r
847e74b2 1480 if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
0aaa8b91 1481 continue;\r
1482 \r
1483 // only negative charged \r
847e74b2 1484 if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
0aaa8b91 1485 continue;\r
1486 \r
1487 // physical primary\r
1488 Bool_t prim = stack->IsPhysicalPrimary(iMc);\r
1489 if(!prim) continue;\r
1490\r
1491 // checked accepted\r
1492 if(accCuts->AcceptTrack(particle)) \r
1493 {\r
1494 Double_t vTrackEventMatrix[3] = {vtxMC[2], particle->Pt(), particle->Eta()}; \r
1495 fGenTrackEventMatrix->Fill(vTrackEventMatrix);\r
1496\r
bad4ba69 1497 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1498 fGenTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1499 }\r
bad4ba69 1500 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1501 fGenTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1502 }\r
bad4ba69 1503 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1504 fGenTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1505 }\r
bad4ba69 1506 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1507 fGenTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1508 }\r
1509\r
1510 //\r
1511 if(!isEventTriggered) continue; \r
1512\r
1513 fTriggerTrackEventMatrix->Fill(vTrackEventMatrix);\r
bad4ba69 1514 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1515 fTriggerTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1516 }\r
bad4ba69 1517 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1518 fTriggerTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1519 }\r
bad4ba69 1520 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1521 fTriggerTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1522 }\r
bad4ba69 1523 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1524 fTriggerTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1525 }\r
1526\r
1527 //\r
1528 if(!isEventOK) continue; \r
1529\r
1530 fRecTrackEventMatrix->Fill(vTrackEventMatrix);\r
bad4ba69 1531 if(evtType == AliPWG0Helper::kSD) {\r
0aaa8b91 1532 fRecTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
1533 }\r
bad4ba69 1534 if(evtType == AliPWG0Helper::kDD) {\r
0aaa8b91 1535 fRecTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
1536 }\r
bad4ba69 1537 if(evtType == AliPWG0Helper::kND) {\r
0aaa8b91 1538 fRecTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
1539 }\r
bad4ba69 1540 if(evtType != AliPWG0Helper::kSD) {\r
0aaa8b91 1541 fRecTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
1542 }\r
1543 }\r
1544 }\r
1545\r
1546 // \r
791aaf54 1547 // track-level corrections (zv,pt,eta)\r
0aaa8b91 1548 //\r
1549 if(isEventOK && isEventTriggered)\r
1550 {\r
1551\r
1552 // fill MC and rec event control histograms\r
1553 if(fHistogramsOn) {\r
bad4ba69 1554 Double_t vRecMCEventHist1[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetYv()-vtxMC[1],vtxESD->GetZv()-vtxMC[2]};\r
0aaa8b91 1555 fRecMCEventHist1->Fill(vRecMCEventHist1);\r
1556\r
bad4ba69 1557 Double_t vRecMCEventHist2[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetZv()-vtxMC[2],multMBTracks};\r
0aaa8b91 1558 fRecMCEventHist2->Fill(vRecMCEventHist2);\r
1559\r
1560 Double_t vRecMCEventHist3[2] = {multRec,evtType};\r
1561 fRecMCEventHist3->Fill(vRecMCEventHist3);\r
1562 }\r
1563\r
1564 //\r
1565 // MC histograms for track efficiency studies\r
1566 //\r
55468faf 1567 Int_t countRecCandle = 0;\r
9208324e 1568 for (Int_t iMc = 0; iMc < stack->GetNtrack(); ++iMc) \r
0aaa8b91 1569 {\r
1570 TParticle* particle = stack->Particle(iMc);\r
1571 if (!particle)\r
1572 continue;\r
1573\r
985bdfd5 1574 Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; \r
1575\r
1576 // all genertated primaries including neutral\r
24c88fc4 1577 //if( iMc < stack->GetNprimary() ) {\r
1578 //fGenTrackMatrix->Fill(vTrackMatrix);\r
1579 //}\r
985bdfd5 1580\r
0aaa8b91 1581 // only charged particles\r
09abaebb 1582 if(!particle->GetPDG()) continue;\r
0aaa8b91 1583 Double_t charge = particle->GetPDG()->Charge()/3.;\r
7f7dd416 1584 if (TMath::Abs(charge) < 0.001)\r
0aaa8b91 1585 continue;\r
1586\r
1587 // only postive charged \r
847e74b2 1588 if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
0aaa8b91 1589 continue;\r
1590 \r
1591 // only negative charged \r
847e74b2 1592 if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
0aaa8b91 1593 continue;\r
1594 \r
1595 // physical primary\r
1596 Bool_t prim = stack->IsPhysicalPrimary(iMc);\r
1597\r
1598 // check accepted\r
1599 if(accCuts->AcceptTrack(particle)) \r
1600 {\r
985bdfd5 1601\r
7f7dd416 1602 if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) \r
1603 fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
0aaa8b91 1604\r
1605 // fill control histograms\r
1606 if(fHistogramsOn) \r
1607 FillHistograms(stack,iMc,AlidNdPtHelper::kAccTracks); \r
1608\r
1609 // check multiple found tracks\r
00b81913 1610 Int_t multCount = 0;\r
0aaa8b91 1611 for(Int_t iRec=0; iRec<multRec; ++iRec)\r
1612 {\r
1613 if(iMc == labelsRec[iRec]) \r
1614 {\r
00b81913 1615 multCount++;\r
1616 if(multCount>1)\r
0aaa8b91 1617 { \r
1618 fRecMultTrackMatrix->Fill(vTrackMatrix);\r
1619\r
1620 // fill control histogram\r
1621 if(fHistogramsOn) {\r
1622 Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1623 Double_t vMCMultRecTrackHist1[3] = {particle->Pt(), particle->Eta(), pid};\r
1624 fMCMultRecTrackHist1->Fill(vMCMultRecTrackHist1);\r
1625 }\r
1626 }\r
1627 }\r
1628 }\r
1629\r
1630 // check reconstructed\r
1631 for(Int_t iRec=0; iRec<multRec; ++iRec)\r
1632 {\r
1633 if(iMc == labelsRec[iRec]) \r
1634 {\r
1635 fRecTrackMatrix->Fill(vTrackMatrix);\r
55468faf 1636 \r
d0d90851 1637 if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) {\r
7f7dd416 1638 fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
d0d90851 1639 //AliESDtrack *track = esdEvent->GetTrack(iRec);\r
1640 //if(track && track->GetKinkIndex(0) < 0) \r
1641 // printf("prim kink \n");\r
55468faf 1642 countRecCandle++;\r
d0d90851 1643 }\r
7f7dd416 1644\r
0aaa8b91 1645 if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
1646\r
1647 // fill control histograms\r
1648 if(fHistogramsOn) \r
1649 FillHistograms(stack,iMc,AlidNdPtHelper::kRecTracks); \r
1650 \r
1651 break;\r
1652 }\r
1653 }\r
1654 }\r
1655 }\r
55468faf 1656\r
1657 if(countRecCandle>0) fRecCandleEventMatrix->Fill(vEventMatrix);\r
0aaa8b91 1658 }\r
55468faf 1659\r
1660\r
0aaa8b91 1661 } // end bUseMC\r
1662\r
1663 if(allChargedTracks) delete allChargedTracks; allChargedTracks = 0;\r
1664 if(labelsAll) delete [] labelsAll; labelsAll = 0;\r
1665 if(labelsAcc) delete [] labelsAcc; labelsAcc = 0;\r
1666 if(labelsRec) delete [] labelsRec; labelsRec = 0;\r
1667\r
1668 if(!evtCuts->IsRecVertexRequired() && vtxESD != NULL) delete vtxESD;\r
17e8c701 1669 //if(trigAna) delete trigAna;\r
0aaa8b91 1670\r
1671}\r
1672\r
1673//_____________________________________________________________________________\r
1674void 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
1675 // multiplicity histograms\r
1676 \r
1677 if(!allChargedTracks) return;\r
1678 if(!labelsAll) return;\r
1679 if(!labelsAcc) return;\r
1680 if(!labelsRec) return;\r
1681\r
1682 Int_t entries = allChargedTracks->GetEntries();\r
1683 for(Int_t i=0; i<entries; ++i)\r
1684 {\r
1685 AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
1686 if(!track) continue;\r
1687 if(track->Charge() == 0) continue;\r
1688\r
1689 Int_t label = TMath::Abs(track->GetLabel());\r
1690 for(Int_t iAll=0; iAll<multAll; ++iAll) {\r
1691 if(label == labelsAll[iAll]) {\r
1692 Double_t v1[2] = {track->Pt(), multAll}; \r
1693 fRecTrackMultHist1[AlidNdPtHelper::kAllTracks]->Fill(v1);\r
1694 }\r
1695 }\r
1696 for(Int_t iAcc=0; iAcc<multAcc; ++iAcc) {\r
1697 if(label == labelsAcc[iAcc]) {\r
1698 Double_t v2[2] = {track->Pt(), multAcc}; \r
1699 fRecTrackMultHist1[AlidNdPtHelper::kAccTracks]->Fill(v2);\r
1700 }\r
1701 }\r
1702 for(Int_t iRec=0; iRec<multRec; ++iRec) {\r
1703 if(label == labelsRec[iRec]) {\r
1704 Double_t v3[2] = {track->Pt(), multRec}; \r
1705 fRecTrackMultHist1[AlidNdPtHelper::kRecTracks]->Fill(v3);\r
1706 }\r
1707 }\r
1708 }\r
1709}\r
1710\r
1711//_____________________________________________________________________________\r
fff1caf5 1712void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj, Int_t multMB)\r
0aaa8b91 1713{\r
1714 //\r
1715 // Fill ESD track and MC histograms \r
1716 //\r
1717 if(!esdTrack) return;\r
1718\r
1719 Float_t q = esdTrack->Charge();\r
00b81913 1720 if(TMath::Abs(q) < 0.001) return;\r
0aaa8b91 1721\r
1722 Float_t pt = esdTrack->Pt();\r
1723 //Float_t qpt = esdTrack->Pt() * q;\r
1724 Float_t eta = esdTrack->Eta();\r
1725 Float_t phi = esdTrack->Phi();\r
1726\r
1727 Float_t dca[2], bCov[3];\r
1728 esdTrack->GetImpactParameters(dca,bCov);\r
1729\r
985bdfd5 1730 Int_t nClust = esdTrack->GetTPCclusters(0);\r
1731 Float_t chi2PerCluster = 0.;\r
1732 if(nClust>0.) chi2PerCluster = esdTrack->GetTPCchi2()/Float_t(nClust);\r
1733\r
0aaa8b91 1734\r
1735 // fill histograms\r
f4f8cae4 1736 Double_t values1[3] = {pt,eta,phi}; \r
1737 fRecTrackHist1[trackObj]->Fill(values1);\r
1738\r
fff1caf5 1739 Double_t values[4] = {zv, pt,eta, multMB}; \r
f4f8cae4 1740 if(trackObj == AlidNdPtHelper::kRecTracks) {\r
1741 fRecTrackHist->Fill(values);\r
1742 }\r
985bdfd5 1743\r
7f7dd416 1744 /*\r
f4f8cae4 1745 Double_t values2[5] = {nClust,chi2PerCluster,pt,eta,phi}; \r
985bdfd5 1746 if(trackObj == AlidNdPtHelper::kRecTracks) \r
1747 {\r
1748 if(fHistogramsOn)\r
f4f8cae4 1749 fRecTrackHist2->Fill(values2);\r
985bdfd5 1750 }\r
7f7dd416 1751 */\r
0aaa8b91 1752 \r
1753 //\r
1754 // Fill rec vs MC information\r
1755 //\r
1756 if(!stack) return;\r
1757\r
1758 Int_t label = TMath::Abs(esdTrack->GetLabel()); \r
fc98fbb5 1759 //if(label == 0) return;\r
0aaa8b91 1760\r
dcf806e0 1761 if(label > stack->GetNtrack()) return;\r
0aaa8b91 1762 TParticle* particle = stack->Particle(label);\r
1763 if(!particle) return;\r
1764\r
1765 //Bool_t prim = stack->IsPhysicalPrimary(label);\r
1766 //Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1767\r
00b81913 1768 Int_t motherPdg = -1;\r
0aaa8b91 1769 TParticle* mother = 0;\r
1770\r
1771 //TParticle* prim_mother = AlidNdPtHelper::FindPrimaryMother(stack,label);\r
1772 Int_t motherLabel = particle->GetMother(0); \r
1773 if(motherLabel>0) mother = stack->Particle(motherLabel);\r
00b81913 1774 if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
0aaa8b91 1775 //Int_t mech = particle->GetUniqueID(); // production mechanism\r
1776\r
09abaebb 1777 if(!particle->GetPDG()) return;\r
0aaa8b91 1778 Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
00b81913 1779 if(TMath::Abs(gq)<0.001) return;\r
0aaa8b91 1780 Float_t gpt = particle->Pt();\r
1781 Float_t geta = particle->Eta();\r
1782 //Float_t qgpt = particle->Pt() * gq;\r
1783 //Float_t gphi = particle->Phi();\r
1784\r
1785 Double_t dpt=0;\r
847e74b2 1786 //printf("pt %f, gpt %f \n",pt,gpt);\r
0aaa8b91 1787 if(gpt) dpt = (pt-gpt)/gpt;\r
1788 Double_t deta = (eta-geta);\r
1789 \r
1790 // fill histograms\r
1791 if(trackObj == AlidNdPtHelper::kRecTracks) \r
1792 {\r
1793 Double_t vTrackPtCorrelationMatrix[3]={pt,gpt,geta};\r
1794 fTrackPtCorrelationMatrix->Fill(vTrackPtCorrelationMatrix);\r
1795\r
1796 Double_t vRecMCTrackHist1[4]={gpt,geta,dpt,deta};\r
1797 fRecMCTrackHist1->Fill(vRecMCTrackHist1);\r
0aaa8b91 1798 }\r
1799}\r
1800\r
1801//_____________________________________________________________________________\r
1802void AlidNdPtAnalysis::FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj)\r
1803{\r
1804 // Fill MC histograms\r
1805 if(!stack) return;\r
1806\r
dcf806e0 1807 if(label > stack->GetNtrack()) return;\r
0aaa8b91 1808 TParticle* particle = stack->Particle(label);\r
1809 if(!particle) return;\r
1810\r
00b81913 1811 Int_t motherPdg = -1;\r
0aaa8b91 1812 TParticle* mother = 0;\r
1813\r
1814 //TParticle* prim_mother = AlidNdPtHelper::FindPrimaryMother(stack,label);\r
1815 Int_t motherLabel = particle->GetMother(0); \r
1816 if(motherLabel>0) mother = stack->Particle(motherLabel);\r
00b81913 1817 if(mother) motherPdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
0aaa8b91 1818 Int_t mech = particle->GetUniqueID(); // production mechanism\r
1819\r
09abaebb 1820 if(!particle->GetPDG()) return;\r
0aaa8b91 1821 Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
00b81913 1822 if(TMath::Abs(gq) < 0.001) return;\r
7f7dd416 1823\r
0aaa8b91 1824 Float_t gpt = particle->Pt();\r
1825 //Float_t qgpt = particle->Pt() * gq;\r
1826 Float_t geta = particle->Eta();\r
1827 Float_t gphi = particle->Phi();\r
1828 //Float_t gpz = particle->Pz();\r
1829\r
1830 Bool_t prim = stack->IsPhysicalPrimary(label);\r
1831 //Float_t vx = particle->Vx(); Float_t vy = particle->Vy(); Float_t vz = particle->Vz();\r
1832\r
1833 Int_t pid = AlidNdPtHelper::ConvertPdgToPid(particle);\r
1834\r
1835 //if(prim&&pid==5) printf("pdgcode %d, production mech %d \n",particle->GetPdgCode(),mech);\r
00b81913 1836 //if(!prim) printf("motherPdg %d, particle %d, production mech %d\n",motherPdg, particle->GetPdgCode(),mech);\r
0aaa8b91 1837 \r
1838 //\r
1839 // fill histogram\r
1840 //\r
1841 Double_t vMCTrackHist1[3] = {gpt,geta,gphi};\r
1842 fMCTrackHist1[trackObj]->Fill(vMCTrackHist1);\r
1843\r
00b81913 1844 Double_t vMCPrimTrackHist1[5] = {gpt,geta,pid,mech,motherPdg};\r
7f7dd416 1845 Double_t vMCPrimTrackHist2[5] = {TMath::Abs(particle->GetPdgCode()),mech,motherPdg};\r
1846 //if(prim && AliPWG0Helper::IsPrimaryCharged(particle, label)) fMCPrimTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1847 if(prim) { \r
1848 fMCPrimTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1849 if(pid == 5) fMCPrimTrackHist2[trackObj]->Fill(vMCPrimTrackHist2);\r
0aaa8b91 1850 }\r
7f7dd416 1851 else { \r
1852 fMCSecTrackHist1[trackObj]->Fill(vMCPrimTrackHist1);\r
1853 }\r
1854\r
0aaa8b91 1855}\r
1856\r
1857//_____________________________________________________________________________\r
00b81913 1858Long64_t AlidNdPtAnalysis::Merge(TCollection* const list) \r
0aaa8b91 1859{\r
68f10917 1860 // init if not done already\r
1861 if (!fIsInit) { Init(); }\r
1862 \r
0aaa8b91 1863 // Merge list of objects (needed by PROOF)\r
1864\r
1865 if (!list)\r
1866 return 0;\r
1867\r
1868 if (list->IsEmpty())\r
1869 return 1;\r
1870\r
1871 TIterator* iter = list->MakeIterator();\r
1872 TObject* obj = 0;\r
1873\r
791aaf54 1874 //\r
17f2bf95 1875 //TList *collPhysSelection = new TList;\r
791aaf54 1876\r
0aaa8b91 1877 // collection of generated histograms\r
1878\r
1879 Int_t count=0;\r
1880 while((obj = iter->Next()) != 0) {\r
1881 AlidNdPtAnalysis* entry = dynamic_cast<AlidNdPtAnalysis*>(obj);\r
1882 if (entry == 0) continue; \r
1883\r
791aaf54 1884 // physics selection\r
1885 //printf("entry->GetPhysicsTriggerSelection() %p \n", entry->GetPhysicsTriggerSelection());\r
17f2bf95 1886 //collPhysSelection->Add(entry->GetPhysicsTriggerSelection());\r
791aaf54 1887 \r
f4f8cae4 1888 //\r
1889 fRecEventHist->Add(entry->fRecEventHist);\r
1890 fRecTrackHist->Add(entry->fRecTrackHist);\r
1891\r
0aaa8b91 1892 //\r
1893 fEventMultCorrelationMatrix->Add(entry->fEventMultCorrelationMatrix);\r
1894 fTrackPtCorrelationMatrix->Add(entry->fTrackPtCorrelationMatrix);\r
1895\r
1896 //\r
1897 fGenEventMatrix->Add(entry->fGenEventMatrix);\r
1898 fGenSDEventMatrix->Add(entry->fGenSDEventMatrix);\r
1899 fGenDDEventMatrix->Add(entry->fGenDDEventMatrix);\r
1900 fGenNDEventMatrix->Add(entry->fGenNDEventMatrix);\r
1901 fGenNSDEventMatrix->Add(entry->fGenNSDEventMatrix);\r
1902\r
1903 fTriggerEventMatrix->Add(entry->fTriggerEventMatrix);\r
1904 fTriggerSDEventMatrix->Add(entry->fTriggerSDEventMatrix);\r
1905 fTriggerDDEventMatrix->Add(entry->fTriggerDDEventMatrix);\r
1906 fTriggerNDEventMatrix->Add(entry->fTriggerNDEventMatrix);\r
1907 fTriggerNSDEventMatrix->Add(entry->fTriggerNSDEventMatrix);\r
1908\r
1909 fRecEventMatrix->Add(entry->fRecEventMatrix);\r
1910 fRecSDEventMatrix->Add(entry->fRecSDEventMatrix);\r
1911 fRecDDEventMatrix->Add(entry->fRecDDEventMatrix);\r
1912 fRecNDEventMatrix->Add(entry->fRecNDEventMatrix);\r
1913 fRecNSDEventMatrix->Add(entry->fRecNSDEventMatrix);\r
1914\r
55468faf 1915 fRecCandleEventMatrix->Add(entry->fRecCandleEventMatrix);\r
0aaa8b91 1916 //\r
1917 fGenTrackEventMatrix->Add(entry->fGenTrackEventMatrix);\r
1918 fGenTrackSDEventMatrix->Add(entry->fGenTrackSDEventMatrix);\r
1919 fGenTrackDDEventMatrix->Add(entry->fGenTrackDDEventMatrix);\r
1920 fGenTrackNDEventMatrix->Add(entry->fGenTrackNDEventMatrix);\r
1921 fGenTrackNSDEventMatrix->Add(entry->fGenTrackNSDEventMatrix);\r
1922\r
1923 fTriggerTrackEventMatrix->Add(entry->fTriggerTrackEventMatrix);\r
1924 fTriggerTrackSDEventMatrix->Add(entry->fTriggerTrackSDEventMatrix);\r
1925 fTriggerTrackDDEventMatrix->Add(entry->fTriggerTrackDDEventMatrix);\r
1926 fTriggerTrackNDEventMatrix->Add(entry->fTriggerTrackNDEventMatrix);\r
1927 fTriggerTrackNSDEventMatrix->Add(entry->fTriggerTrackNSDEventMatrix);\r
1928\r
1929 fRecTrackEventMatrix->Add(entry->fRecTrackEventMatrix);\r
1930 fRecTrackSDEventMatrix->Add(entry->fRecTrackSDEventMatrix);\r
1931 fRecTrackDDEventMatrix->Add(entry->fRecTrackDDEventMatrix);\r
1932 fRecTrackNDEventMatrix->Add(entry->fRecTrackNDEventMatrix);\r
1933 fRecTrackNSDEventMatrix->Add(entry->fRecTrackNSDEventMatrix);\r
1934\r
1935 //\r
985bdfd5 1936 fGenTrackMatrix->Add(entry->fGenTrackMatrix);\r
0aaa8b91 1937 fGenPrimTrackMatrix->Add(entry->fGenPrimTrackMatrix);\r
1938 fRecPrimTrackMatrix->Add(entry->fRecPrimTrackMatrix);\r
1939 //\r
1940 fRecTrackMatrix->Add(entry->fRecTrackMatrix);\r
1941 fRecSecTrackMatrix->Add(entry->fRecSecTrackMatrix);\r
1942 //\r
1943 fRecMultTrackMatrix->Add(entry->fRecMultTrackMatrix);\r
1944\r
1945 //\r
1946 // control analysis histograms\r
1947 //\r
1948 fMCEventHist1->Add(entry->fMCEventHist1);\r
1949 fRecEventHist1->Add(entry->fRecEventHist1);\r
1950 fRecEventHist2->Add(entry->fRecEventHist2);\r
1951 fRecMCEventHist1->Add(entry->fRecMCEventHist1);\r
1952 fRecMCEventHist2->Add(entry->fRecMCEventHist2);\r
1953 fRecMCEventHist3->Add(entry->fRecMCEventHist3);\r
1954\r
1955 for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) {\r
1956 fMCTrackHist1[i]->Add(entry->fMCTrackHist1[i]);\r
1957\r
1958 fMCPrimTrackHist1[i]->Add(entry->fMCPrimTrackHist1[i]);\r
7f7dd416 1959 fMCPrimTrackHist2[i]->Add(entry->fMCPrimTrackHist2[i]);\r
0aaa8b91 1960 fMCSecTrackHist1[i]->Add(entry->fMCSecTrackHist1[i]);\r
1961\r
1962 fRecTrackHist1[i]->Add(entry->fRecTrackHist1[i]);\r
1963 fRecTrackMultHist1[i]->Add(entry->fRecTrackMultHist1[i]);\r
1964 }\r
1965 fRecMCTrackHist1->Add(entry->fRecMCTrackHist1);\r
1966 fMCMultRecTrackHist1->Add(entry->fMCMultRecTrackHist1);\r
985bdfd5 1967 fRecTrackHist2->Add(entry->fRecTrackHist2);\r
24c88fc4 1968 fEventCount->Add(entry->fEventCount);\r
0aaa8b91 1969\r
1970 count++;\r
1971 }\r
1972\r
17f2bf95 1973 //AliPhysicsSelection *trigSelection = GetPhysicsTriggerSelection();\r
1974 //trigSelection->Merge(collPhysSelection);\r
1975 //if(collPhysSelection) delete collPhysSelection;\r
791aaf54 1976\r
0aaa8b91 1977return count;\r
1978}\r
791aaf54 1979\r
1980//____________________________________________________________________\r
1981Bool_t AlidNdPtAnalysis::IsBinZeroTrackSPDvtx(const AliESDEvent* esdEvent) {\r
1982//\r
1983// check 0-bin\r
1984// for LHC background calculation\r
1985// return kTRUE if vertex not reconstructed or\r
1986// track multiplicity == 0\r
1987//\r
1988if(!esdEvent) return kFALSE;\r
1989\r
1990 // check vertex\r
1991 const AliESDVertex *vertex = esdEvent->GetPrimaryVertexTracks();\r
1992 if(!vertex) return kTRUE;\r
1993\r
1994 if(vertex->GetNContributors() < 1) {\r
1995 // SPD vertex\r
1996 vertex = esdEvent->GetPrimaryVertexSPD();\r
695facdf 1997 if(!vertex) return kTRUE;\r
791aaf54 1998 }\r
695facdf 1999 if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
791aaf54 2000 if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCITSHybridTrackSPDvtx) ) \r
2001 return kTRUE;\r
695facdf 2002 \r
791aaf54 2003return kFALSE;\r
2004}\r
2005\r
2006//____________________________________________________________________\r
2007Bool_t AlidNdPtAnalysis::IsBinZeroSPDvtx(const AliESDEvent* esdEvent) {\r
2008//\r
2009// check 0-bin\r
2010// for LHC background calculation\r
2011// return kTRUE if vertex not reconstructed or\r
2012// tracklet multiplicity == 0\r
2013//\r
2014if(!esdEvent) return kFALSE;\r
2015\r
2016 // check vertex\r
2017 const AliESDVertex* vertex = esdEvent->GetPrimaryVertexSPD();\r
2018 if(!vertex) return kTRUE;\r
2019 if(TMath::Abs(vertex->GetZv()) > 15.0) return kTRUE; \r
2020 if( !AlidNdPtHelper::TestRecVertex(vertex, esdEvent->GetPrimaryVertexSPD(), AlidNdPtHelper::kTPCSPDvtx) ) return kTRUE;\r
695facdf 2021 \r
791aaf54 2022return kFALSE;\r
2023}\r
2024\r
0aaa8b91 2025//_____________________________________________________________________________\r
2026void AlidNdPtAnalysis::Analyse() \r
2027{\r
68f10917 2028 // init if not done already\r
2029 if (!fIsInit) { Init(); }\r
2030 \r
0aaa8b91 2031 // Analyse histograms\r
2032 //\r
2033 TH1::AddDirectory(kFALSE);\r
2034 TH1 *h=0, *h1=0, *h2=0, *h2c = 0; \r
0aaa8b91 2035 THnSparse *hs=0; \r
2036 TH2 *h2D=0; \r
0aaa8b91 2037\r
2038 char name[256];\r
2039 TObjArray *aFolderObj = new TObjArray;\r
b4cdc39d 2040 if(!aFolderObj) return;\r
791aaf54 2041 \r
2042 //\r
2043 // LHC backgraund in all and 0-bins\r
2044 //\r
17f2bf95 2045 //AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
2046 //trigSel->SaveHistograms("physics_selection");\r
791aaf54 2047\r
bad4ba69 2048 //\r
2049 // Reconstructed event vertex\r
2050 //\r
2051 h = fRecEventHist1->Projection(0);\r
2052 h->SetName("Xv");\r
2053 aFolderObj->Add(h);\r
2054\r
2055 h = fRecEventHist1->Projection(1);\r
2056 h->SetName("Yv");\r
2057 aFolderObj->Add(h);\r
2058\r
2059 h = fRecEventHist1->Projection(2);\r
2060 h->SetName("Zv");\r
2061 aFolderObj->Add(h);\r
2062\r
2063 //\r
2064 // multiplicity\r
2065 //\r
2066 h = fRecEventHist2->Projection(1);\r
2067 h->SetName("multMB");\r
2068 aFolderObj->Add(h);\r
2069\r
2070 h = fRecEventHist2->Projection(2);\r
2071 h->SetName("multiplicity");\r
2072 aFolderObj->Add(h);\r
2073\r
2074 h2D = fRecEventHist2->Projection(0,1); \r
2075 h2D->SetName("Zv_vs_multiplicity_MB");\r
2076 aFolderObj->Add(h2D);\r
2077\r
2078 //\r
2079 // reconstructed pt histograms\r
2080 //\r
2081 h = fRecTrackHist1[0]->Projection(0);\r
985bdfd5 2082 h->Scale(1.,"width");\r
bad4ba69 2083 h->SetName("pt_all_ch");\r
2084 aFolderObj->Add(h);\r
2085\r
2086 h = fRecTrackHist1[1]->Projection(0);\r
985bdfd5 2087 h->Scale(1.,"width");\r
bad4ba69 2088 h->SetName("pt_acc");\r
2089 aFolderObj->Add(h);\r
2090\r
2091 h = fRecTrackHist1[2]->Projection(0);\r
985bdfd5 2092 h->Scale(1.,"width");\r
bad4ba69 2093 h->SetName("pt_rec");\r
2094 aFolderObj->Add(h);\r
2095\r
2096 //\r
2097 // reconstructed eta histograms\r
2098 //\r
2099 h = fRecTrackHist1[0]->Projection(1);\r
2100 h->SetName("eta_all_ch");\r
2101 aFolderObj->Add(h);\r
2102\r
2103 h = fRecTrackHist1[1]->Projection(1);\r
2104 h->SetName("eta_acc");\r
2105 aFolderObj->Add(h);\r
2106\r
2107 h = fRecTrackHist1[2]->Projection(1);\r
2108 h->SetName("eta_rec");\r
2109 aFolderObj->Add(h);\r
2110\r
2111 //\r
2112 // reconstructed phi histograms\r
2113 //\r
2114 h = fRecTrackHist1[0]->Projection(2);\r
2115 h->SetName("phi_all_ch");\r
2116 aFolderObj->Add(h);\r
2117\r
2118 h = fRecTrackHist1[1]->Projection(2);\r
2119 h->SetName("phi_acc");\r
2120 aFolderObj->Add(h);\r
2121\r
2122 h = fRecTrackHist1[2]->Projection(2);\r
2123 h->SetName("phi_rec");\r
2124 aFolderObj->Add(h);\r
2125\r
2126 //\r
2127 // reconstructed eta:pt histograms\r
2128 //\r
2129 h2D = fRecTrackHist1[0]->Projection(1,0);\r
2130 h2D->SetName("pt_eta_all_ch");\r
2131 aFolderObj->Add(h2D);\r
2132\r
2133 h2D = fRecTrackHist1[1]->Projection(1,0);\r
2134 h2D->SetName("pt_eta_acc");\r
2135 aFolderObj->Add(h2D);\r
2136\r
2137 h2D = fRecTrackHist1[2]->Projection(1,0);\r
2138 h2D->SetName("pt_eta_rec");\r
2139 aFolderObj->Add(h2D);\r
2140\r
2141 //\r
2142 // reconstructed phi:pt histograms\r
2143 //\r
2144 h2D = fRecTrackHist1[0]->Projection(2,0);\r
2145 h2D->SetName("pt_phi_all_ch");\r
2146 aFolderObj->Add(h2D);\r
2147\r
2148 h2D = fRecTrackHist1[1]->Projection(2,0);\r
2149 h2D->SetName("pt_phi_acc");\r
2150 aFolderObj->Add(h2D);\r
2151\r
2152 h2D = fRecTrackHist1[2]->Projection(2,0);\r
2153 h2D->SetName("pt_phi_rec");\r
2154 aFolderObj->Add(h2D);\r
2155\r
2156 //\r
2157 // reconstructed phi:eta histograms\r
2158 //\r
2159 h2D = fRecTrackHist1[0]->Projection(2,1);\r
2160 h2D->SetName("eta_phi_all_ch");\r
2161 aFolderObj->Add(h2D);\r
2162\r
2163 h2D = fRecTrackHist1[1]->Projection(2,1);\r
2164 h2D->SetName("eta_phi_acc");\r
2165 aFolderObj->Add(h2D);\r
2166\r
2167 h2D = fRecTrackHist1[2]->Projection(2,1);\r
2168 h2D->SetName("eta_phi_rec");\r
2169 aFolderObj->Add(h2D);\r
2170\r
985bdfd5 2171 //\r
2172 // reconstructed nClust, chi2 vs pt, eta, phi\r
2173 //\r
2174 if(fHistogramsOn) {\r
2175\r
2176 h2D = fRecTrackHist2->Projection(0,1);\r
2177 h2D->SetName("nClust_chi2_rec");\r
2178 aFolderObj->Add(h2D);\r
2179\r
2180 h2D = fRecTrackHist2->Projection(0,2);\r
2181 h2D->SetName("nClust_pt_rec");\r
2182 aFolderObj->Add(h2D);\r
2183\r
2184 h2D = fRecTrackHist2->Projection(0,3);\r
2185 h2D->SetName("nClust_eta_rec");\r
2186 aFolderObj->Add(h2D);\r
2187\r
2188 h2D = fRecTrackHist2->Projection(0,4);\r
2189 h2D->SetName("nClust_phi_rec");\r
2190 aFolderObj->Add(h2D);\r
2191\r
2192 h2D = fRecTrackHist2->Projection(1,2);\r
2193 h2D->SetName("chi2_pt_rec");\r
2194 aFolderObj->Add(h2D);\r
2195\r
2196 h2D = fRecTrackHist2->Projection(1,3);\r
2197 h2D->SetName("chi2_eta_rec");\r
2198 aFolderObj->Add(h2D);\r
2199\r
2200 h2D = fRecTrackHist2->Projection(1,4);\r
2201 h2D->SetName("chi2_phi_rec");\r
2202 aFolderObj->Add(h2D);\r
2203\r
2204 }\r
2205\r
0aaa8b91 2206 //\r
2207 // calculate corrections for empty events\r
2208 // with multMB==0 \r
2209 //\r
2210\r
2211 //\r
2212 // normalised zv to generate zv for triggered events\r
2213 //\r
2214 h = fRecEventHist2->Projection(0);\r
2215 if( h->Integral() ) h->Scale(1./h->Integral());\r
2216 h->SetName("zv_distribution_norm");\r
2217 aFolderObj->Add(h);\r
bad4ba69 2218 \r
2219 //\r
2220 // MC available\r
2221 //\r
2222 if(IsUseMCInfo()) {\r
2223\r
2224 //\r
2225 // Event vertex resolution\r
2226 //\r
2227 h2D = fRecMCEventHist2->Projection(0,2);\r
2228 h2D->SetName("DeltaXv_vs_mult");\r
2229 aFolderObj->Add(h2D);\r
2230\r
2231 h2D = fRecMCEventHist2->Projection(1,2);\r
2232 h2D->SetName("DeltaZv_vs_mult");\r
2233 aFolderObj->Add(h2D);\r
0aaa8b91 2234\r
2235 //\r
2236 // normalised zv to get trigger/trigger+vertex event differences\r
2237 // F(zv) = E_trig(zv,0)/Int(E_trig(zv,0) / Sum(E_trigvtx(zv,n))/Sum(Int(E_trigvtx(zv,n))dzv)\r
2238 //\r
2239 fTriggerEventMatrix->GetAxis(1)->SetRangeUser(0.,0.);\r
2240 h = fTriggerEventMatrix->Projection(0);\r
bad4ba69 2241 h2D = fTriggerEventMatrix->Projection(0,1);\r
2242 if(h2D->Integral()) h->Scale(1./h2D->Integral());\r
0aaa8b91 2243\r
2244 h1 = fRecEventMatrix->Projection(0);\r
bad4ba69 2245 h2D = fRecEventMatrix->Projection(0,1);\r
2246 if(h2D->Integral()) h1->Scale(1./h2D->Integral());\r
0aaa8b91 2247\r
2248 h->Divide(h1);\r
2249 h->SetName("zv_empty_events_norm");\r
2250 aFolderObj->Add(h);\r
2251 \r
2252 fTriggerEventMatrix->GetAxis(1)->SetRange(1,fTriggerEventMatrix->GetAxis(1)->GetNbins());\r
2253\r
2254 //\r
2255 // rec. vs true multiplicity correlation matrix\r
2256 //\r
2257 hs = (THnSparse*)fEventMultCorrelationMatrix->Clone("event_mult_correlation_matrix");\r
2258 aFolderObj->Add(hs);\r
2259 \r
2260 //\r
2261 // rec. vs true track pt correlation matrix\r
2262 //\r
2263 hs = (THnSparse*)fTrackPtCorrelationMatrix->Clone("track_pt_correlation_matrix");\r
2264 aFolderObj->Add(hs);\r
2265\r
2266 //\r
2267 // trigger efficiency for INEL\r
2268 //\r
bad4ba69 2269 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fGenEventMatrix->Projection(0),"zv_trig_INEL_eff_matrix");\r
2270 aFolderObj->Add(h);\r
0aaa8b91 2271\r
2272 //\r
2273 // trigger efficiency for NSD\r
2274 //\r
bad4ba69 2275 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerNSDEventMatrix->Projection(0),fGenNSDEventMatrix->Projection(0),"zv_trig_NSD_eff_matrix");\r
2276 aFolderObj->Add(h);\r
0aaa8b91 2277\r
2278 //\r
2279 // trigger bias correction (MB to ND)\r
2280 //\r
2281 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoND_corr_matrix");\r
2282 aFolderObj->Add(hs);\r
2283\r
bad4ba69 2284 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoND_corr_matrix");\r
2285 aFolderObj->Add(h);\r
0aaa8b91 2286\r
0aaa8b91 2287\r
bad4ba69 2288 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoND_corr_matrix");\r
0aaa8b91 2289\r
bad4ba69 2290 aFolderObj->Add(h);\r
0aaa8b91 2291\r
2292 //\r
2293 // trigger bias correction (MB to NSD)\r
2294 //\r
2295 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoNSD_corr_matrix");\r
2296 aFolderObj->Add(hs);\r
2297\r
2298 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoNSD_corr_matrix_2D");\r
2299 aFolderObj->Add(h2D);\r
2300\r
bad4ba69 2301 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoNSD_corr_matrix");\r
2302 aFolderObj->Add(h);\r
0aaa8b91 2303\r
0aaa8b91 2304\r
bad4ba69 2305 h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoNSD_corr_matrix");\r
2306 aFolderObj->Add(h);\r
0aaa8b91 2307\r
0aaa8b91 2308\r
2309 //\r
2310 // trigger bias correction (MB to INEL)\r
2311 //\r
2312 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoInel_corr_matrix");\r
2313 aFolderObj->Add(hs);\r
2314\r
0aaa8b91 2315 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoInel_corr_matrix_2D");\r
2316 aFolderObj->Add(h2D);\r
2317\r
515964cb 2318 h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoInel_corr_matrix");\r
2319 aFolderObj->Add(h);\r
0aaa8b91 2320\r
bad4ba69 2321 h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoInel_corr_matrix");\r
2322 aFolderObj->Add(h);\r
0aaa8b91 2323\r
0aaa8b91 2324\r
2325 //\r
2326 // event vertex reconstruction correction (MB)\r
2327 //\r
2328 hs = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix,fRecEventMatrix,"zv_mult_event_corr_matrix");\r
2329 aFolderObj->Add(hs);\r
2330\r
2331 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0,1),fRecEventMatrix->Projection(0,1),"zv_mult_event_corr_matrix_2D");\r
2332 aFolderObj->Add(h2D);\r
2333\r
0aaa8b91 2334\r
bad4ba69 2335 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(1),fRecEventMatrix->Projection(1),"mult_event_corr_matrix");\r
2336 aFolderObj->Add(h);\r
0aaa8b91 2337\r
0aaa8b91 2338\r
bad4ba69 2339 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fRecEventMatrix->Projection(0),"zv_event_corr_matrix");\r
2340 aFolderObj->Add(h);\r
0aaa8b91 2341\r
2342 //\r
2343 // track-event trigger bias correction (MB to ND)\r
2344 //\r
2345\r
2346 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoND_corr_matrix");\r
2347 aFolderObj->Add(hs);\r
2348\r
2349 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoND_corr_matrix");\r
2350 aFolderObj->Add(h2D);\r
2351\r
2352 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoND_corr_matrix");\r
2353 aFolderObj->Add(h2D);\r
2354\r
2355 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNDEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoND_corr_matrix");\r
2356 aFolderObj->Add(h2D);\r
2357\r
2358 //\r
2359 // track-event trigger bias correction (MB to NSD)\r
2360 //\r
2361 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoNSD_corr_matrix");\r
2362 aFolderObj->Add(hs);\r
2363\r
2364 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoNSD_corr_matrix");\r
2365 aFolderObj->Add(h2D);\r
2366\r
2367 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoNSD_corr_matrix");\r
2368 aFolderObj->Add(h2D);\r
2369\r
2370 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackNSDEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoNSD_corr_matrix");\r
2371 aFolderObj->Add(h2D);\r
2372\r
2373\r
2374 //\r
2375 // track-event trigger bias correction (MB to INEL)\r
2376 //\r
2377 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix,fTriggerTrackEventMatrix,"zv_pt_eta_track_trig_MBtoInel_corr_matrix");\r
2378 aFolderObj->Add(hs);\r
2379\r
2380 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(1,2),fTriggerTrackEventMatrix->Projection(1,2),"eta_pt_track_trig_MBtoInel_corr_matrix");\r
2381 aFolderObj->Add(h2D);\r
2382\r
2383 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(1,0),fTriggerTrackEventMatrix->Projection(1,0),"pt_zv_track_trig_MBtoInel_corr_matrix");\r
2384 aFolderObj->Add(h2D);\r
2385\r
2386 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenTrackEventMatrix->Projection(2,0),fTriggerTrackEventMatrix->Projection(2,0),"zv_eta_track_trig_MBtoInel_corr_matrix");\r
2387 aFolderObj->Add(h2D);\r
2388\r
2389 // efficiency\r
0aaa8b91 2390\r
bad4ba69 2391 h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1),fGenTrackEventMatrix->Projection(1),"pt_track_trig_MBtoInel_eff_matrix");\r
2392 aFolderObj->Add(h);\r
0aaa8b91 2393\r
0aaa8b91 2394\r
2395 //\r
2396 // track-event vertex reconstruction correction (MB)\r
2397 //\r
2398 hs = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix,fRecTrackEventMatrix,"zv_pt_eta_track_event_corr_matrix");\r
2399 aFolderObj->Add(hs);\r
2400\r
2401 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1,2),fRecTrackEventMatrix->Projection(1,2),"eta_pt_track_event_corr_matrix");\r
2402 aFolderObj->Add(h2D);\r
2403\r
2404 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1,0),fRecTrackEventMatrix->Projection(1,0),"pt_zv_track_event_corr_matrix");\r
2405 aFolderObj->Add(h2D);\r
2406\r
2407 h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(2,0),fRecTrackEventMatrix->Projection(2,0),"zv_eta_track_event_corr_matrix");\r
2408 aFolderObj->Add(h2D);\r
2409 \r
2410 // efficiency\r
0aaa8b91 2411\r
bad4ba69 2412 h = AlidNdPtHelper::GenerateCorrMatrix(fRecTrackEventMatrix->Projection(1),fTriggerTrackEventMatrix->Projection(1),"pt_track_event_eff_matrix");\r
2413 aFolderObj->Add(h);\r
0aaa8b91 2414\r
0aaa8b91 2415\r
2416 //\r
2417 // track rec. efficiency correction\r
2418 //\r
2419 hs = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix,fRecPrimTrackMatrix,"zv_pt_eta_track_corr_matrix");\r
2420 aFolderObj->Add(hs);\r
2421\r
2422 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1,2),fRecPrimTrackMatrix->Projection(1,2),"eta_pt_track_corr_matrix");\r
2423 aFolderObj->Add(h2D);\r
2424\r
2425 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1,0),fRecPrimTrackMatrix->Projection(1,0),"pt_zv_track_corr_matrix");\r
2426 aFolderObj->Add(h2D);\r
2427\r
2428 h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2,0),fRecPrimTrackMatrix->Projection(2,0),"zv_eta_track_corr_matrix");\r
2429 aFolderObj->Add(h2D);\r
2430\r
0aaa8b91 2431 \r
bad4ba69 2432 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(0),fRecPrimTrackMatrix->Projection(0),"zv_track_corr_matrix");\r
2433 aFolderObj->Add(h);\r
0aaa8b91 2434\r
bad4ba69 2435 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1),fRecPrimTrackMatrix->Projection(1),"pt_track_corr_matrix");\r
2436 aFolderObj->Add(h);\r
0aaa8b91 2437\r
2438 // efficiency\r
847e74b2 2439\r
bad4ba69 2440 h = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
2441 aFolderObj->Add(h);\r
0aaa8b91 2442\r
bad4ba69 2443 h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2),fRecPrimTrackMatrix->Projection(2),"eta_track_corr_matrix");\r
2444 aFolderObj->Add(h);\r
0aaa8b91 2445\r
0aaa8b91 2446 //\r
2447 // secondary track contamination correction\r
2448 //\r
2449 //hs = AlidNdPtHelper::GenerateContCorrMatrix(fRecSecTrackMatrix,fRecTrackMatrix,"zv_pt_eta_track_cont_matrix");\r
2450 hs = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix,fRecTrackMatrix,"zv_pt_eta_track_cont_matrix");\r
2451 aFolderObj->Add(hs);\r
2452\r
2453 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1,2),fRecTrackMatrix->Projection(1,2),"eta_pt_track_cont_matrix");\r
2454 aFolderObj->Add(h2D);\r
2455\r
2456 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1,0),fRecTrackMatrix->Projection(1,0),"pt_zv_track_cont_matrix");\r
2457 aFolderObj->Add(h2D);\r
2458\r
2459 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_track_cont_matrix");\r
2460 aFolderObj->Add(h2D);\r
2461\r
bad4ba69 2462 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
2463 aFolderObj->Add(h);\r
0aaa8b91 2464\r
847e74b2 2465\r
bad4ba69 2466 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
2467 aFolderObj->Add(h);\r
0aaa8b91 2468\r
bad4ba69 2469 h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_track_cont_matrix");\r
2470 aFolderObj->Add(h);\r
0aaa8b91 2471\r
0aaa8b91 2472 //\r
2473 // multiple track reconstruction correction\r
2474 //\r
2475 //hs = AlidNdPtHelper::GenerateContCorrMatrix(fRecMultTrackMatrix,fRecTrackMatrix,"zv_pt_eta_mult_track_cont_matrix");\r
2476 hs = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix,fRecTrackMatrix,"zv_pt_eta_mult_track_cont_matrix");\r
2477 aFolderObj->Add(hs);\r
2478\r
2479 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1,2),fRecTrackMatrix->Projection(1,2),"eta_pt_mult_track_cont_matrix");\r
2480 aFolderObj->Add(h2D);\r
2481\r
2482 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1,0),fRecTrackMatrix->Projection(1,0),"pt_zv_mult_track_cont_matrix");\r
2483 aFolderObj->Add(h2D);\r
2484\r
2485 h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_mult_track_cont_matrix");\r
2486 aFolderObj->Add(h2D);\r
2487\r
bad4ba69 2488 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_mult_track_cont_matrix");\r
2489 aFolderObj->Add(h);\r
0aaa8b91 2490\r
bad4ba69 2491 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_mult_track_cont_matrix");\r
2492 aFolderObj->Add(h);\r
0aaa8b91 2493\r
bad4ba69 2494 h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_mult_track_cont_matrix");\r
2495 aFolderObj->Add(h);\r
0aaa8b91 2496\r
0aaa8b91 2497 //\r
2498 // Control histograms\r
2499 //\r
2500 \r
2501 if(fHistogramsOn) {\r
2502\r
2503 // Efficiency electrons, muons, pions, kaons, protons, all\r
2504 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,1); \r
2505 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,1); \r
2506 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2507 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2508 h2c = (TH1D *)h2->Clone();\r
2509 h2c->Divide(h1);\r
2510 h2c->SetName("eff_pt_electrons");\r
2511 aFolderObj->Add(h2c);\r
2512\r
2513 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(2,2); \r
2514 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(2,2); \r
2515 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2516 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2517 h2c = (TH1D *)h2->Clone();\r
2518 h2c->Divide(h1);\r
2519 h2c->SetName("eff_pt_muons");\r
2520 aFolderObj->Add(h2c);\r
2521\r
2522 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(3,3); \r
2523 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(3,3); \r
2524 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2525 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2526 h2c = (TH1D *)h2->Clone();\r
2527 h2c->Divide(h1);\r
2528 h2c->SetName("eff_pt_pions");\r
2529 aFolderObj->Add(h2c);\r
2530\r
2531 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(4,4); \r
2532 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(4,4); \r
2533 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2534 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2535 h2c = (TH1D *)h2->Clone();\r
2536 h2c->Divide(h1);\r
2537 h2c->SetName("eff_pt_kaons");\r
2538 aFolderObj->Add(h2c);\r
2539\r
2540 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(5,5); \r
2541 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(5,5); \r
2542 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2543 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2544 h2c = (TH1D *)h2->Clone();\r
2545 h2c->Divide(h1);\r
2546 h2c->SetName("eff_pt_protons");\r
2547 aFolderObj->Add(h2c);\r
2548\r
7f7dd416 2549 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,5); \r
2550 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,5); \r
2551 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2552 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2553 h2c = (TH1D *)h2->Clone();\r
2554 h2c->Divide(h1);\r
2555 h2c->SetName("eff_pt_selected");\r
2556 aFolderObj->Add(h2c);\r
2557\r
0aaa8b91 2558 fMCPrimTrackHist1[1]->GetAxis(2)->SetRange(1,6); \r
2559 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(1,6); \r
2560 h1 = fMCPrimTrackHist1[1]->Projection(0);\r
2561 h2 = fMCPrimTrackHist1[2]->Projection(0);\r
2562 h2c = (TH1D *)h2->Clone();\r
2563 h2c->Divide(h1);\r
2564 h2c->SetName("eff_pt_all");\r
2565 aFolderObj->Add(h2c);\r
2566\r
bad4ba69 2567 fMCPrimTrackHist1[1]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[1]->GetAxis(1)->GetNbins()); \r
2568 fMCPrimTrackHist1[2]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[2]->GetAxis(1)->GetNbins());\r
2569\r
0aaa8b91 2570 // pt spetra\r
2571 // - rec, primaries, secondaries\r
2572 // - primaries (pid) \r
2573 // - secondaries (pid)\r
2574 // - secondaries (mech)\r
2575 // - secondaries (mother)\r
2576 //\r
0aaa8b91 2577\r
00b81913 2578 TH1D *mcPtAccall = fMCTrackHist1[1]->Projection(0);\r
2579 mcPtAccall->SetName("mc_pt_acc_all");\r
2580 aFolderObj->Add(mcPtAccall);\r
0aaa8b91 2581\r
00b81913 2582 TH1D *mcPtAccprim = fMCPrimTrackHist1[1]->Projection(0);\r
2583 mcPtAccprim->SetName("mc_pt_acc_prim");\r
2584 aFolderObj->Add(mcPtAccprim);\r
0aaa8b91 2585\r
00b81913 2586 TH1D *mcPtRecall = fMCTrackHist1[2]->Projection(0);\r
2587 mcPtRecall->SetName("mc_pt_rec_all");\r
2588 aFolderObj->Add(mcPtRecall);\r
0aaa8b91 2589\r
00b81913 2590 TH1D *mcPtRecprim = fMCPrimTrackHist1[2]->Projection(0);\r
2591 mcPtRecprim->SetName("mc_pt_rec_prim");\r
2592 aFolderObj->Add(mcPtRecprim);\r
0aaa8b91 2593\r
00b81913 2594 TH1D *mcPtRecsec = fMCSecTrackHist1[2]->Projection(0);\r
2595 mcPtRecsec->SetName("mc_pt_rec_sec");\r
2596 aFolderObj->Add(mcPtRecsec);\r
0aaa8b91 2597\r
2598 for(Int_t i = 0; i<6; i++) \r
2599 { \r
62e3b4b6 2600 snprintf(name,256,"mc_pt_rec_prim_pid_%d",i); \r
0aaa8b91 2601 fMCPrimTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2602 h = fMCPrimTrackHist1[2]->Projection(0);\r
2603 h->SetName(name);\r
2604 aFolderObj->Add(h);\r
2605\r
62e3b4b6 2606 snprintf(name,256,"mc_pt_rec_sec_pid_%d",i); \r
0aaa8b91 2607 fMCSecTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2608 h = fMCSecTrackHist1[2]->Projection(0);\r
2609 h->SetName(name);\r
2610 aFolderObj->Add(h);\r
2611\r
2612 // production mechanisms for given pid\r
2613 fMCSecTrackHist1[2]->GetAxis(2)->SetRange(i+1,i+1);\r
2614\r
2615 for(Int_t j=0; j<20; j++) {\r
2616 if(j == 4) {\r
2617 // decay\r
2618 \r
62e3b4b6 2619 snprintf(name,256,"mc_pt_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2620 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2621 h = fMCSecTrackHist1[2]->Projection(0);\r
2622 h->SetName(name);\r
2623 aFolderObj->Add(h);\r
2624\r
62e3b4b6 2625 snprintf(name,256,"mc_eta_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2626 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2627 h = fMCSecTrackHist1[2]->Projection(1);\r
2628 h->SetName(name);\r
2629 aFolderObj->Add(h);\r
2630\r
62e3b4b6 2631 snprintf(name,256,"mc_mother_rec_sec_pid_%d_decay",i); \r
0aaa8b91 2632 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2633 h = fMCSecTrackHist1[2]->Projection(4);\r
2634 h->SetName(name);\r
2635 aFolderObj->Add(h);\r
2636\r
2637 } else if (j == 5) {\r
2638 // conversion\r
2639\r
62e3b4b6 2640 snprintf(name,256,"mc_pt_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2641 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2642 h = fMCSecTrackHist1[2]->Projection(0);\r
2643 h->SetName(name);\r
2644 aFolderObj->Add(h);\r
2645\r
62e3b4b6 2646 snprintf(name,256,"mc_eta_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2647 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2648 h = fMCSecTrackHist1[2]->Projection(1);\r
2649 h->SetName(name);\r
2650 aFolderObj->Add(h);\r
2651\r
62e3b4b6 2652 snprintf(name,256,"mc_mother_rec_sec_pid_%d_conv",i); \r
0aaa8b91 2653 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2654 h = fMCSecTrackHist1[2]->Projection(4);\r
2655 h->SetName(name);\r
2656 aFolderObj->Add(h);\r
2657\r
2658 } else if (j == 13) {\r
2659 // mat\r
2660 \r
62e3b4b6 2661 snprintf(name,256,"mc_pt_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2662 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2663 h = fMCSecTrackHist1[2]->Projection(0);\r
2664 h->SetName(name);\r
2665 aFolderObj->Add(h);\r
2666\r
62e3b4b6 2667 snprintf(name,256,"mc_eta_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2668 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2669 h = fMCSecTrackHist1[2]->Projection(1);\r
2670 h->SetName(name);\r
2671 aFolderObj->Add(h);\r
2672\r
62e3b4b6 2673 snprintf(name,256,"mc_eta_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2674 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2675 h = fMCSecTrackHist1[2]->Projection(4,1);\r
2676 h->SetName(name);\r
2677 aFolderObj->Add(h);\r
2678\r
62e3b4b6 2679 snprintf(name,256,"mc_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2680 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2681 h = fMCSecTrackHist1[2]->Projection(4);\r
2682 h->SetName(name);\r
2683 aFolderObj->Add(h);\r
2684\r
62e3b4b6 2685 snprintf(name,256,"mc_pt_mother_rec_sec_pid_%d_mat",i); \r
0aaa8b91 2686 fMCSecTrackHist1[2]->GetAxis(3)->SetRange(j+1,j+1);\r
2687 h = fMCSecTrackHist1[2]->Projection(4,0);\r
2688 h->SetName(name);\r
2689 aFolderObj->Add(h);\r
2690\r
2691 } else {\r
2692 continue;\r
2693 }\r
2694 }\r
2695\r
2696 }\r
2697 } // end fHistogramOn\r
2698\r
2699 //\r
2700 // resolution histograms\r
2701 // only for reconstructed tracks\r
2702 //\r
2703\r
2704 TH2F *h2F=0;\r
2705 TCanvas * c = new TCanvas("resol","resol");\r
2706 c->cd();\r
2707\r
2708 //\r
847e74b2 2709 fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.8,0.79); \r
0aaa8b91 2710\r
2711 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
2712 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2713 h->SetXTitle("p_{tmc} (GeV/c)");\r
2714 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} resolution");\r
2715 h->Draw();\r
2716 h->SetName("pt_resolution_vs_mcpt");\r
2717 aFolderObj->Add(h);\r
2718\r
2719 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
2720 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2721 h->SetXTitle("p_{tmc} (GeV/c)");\r
2722 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} mean");\r
2723 h->Draw();\r
2724 h->SetName("dpt_mean_vs_mcpt");\r
2725 aFolderObj->Add(h);\r
2726\r
2727 //\r
2728 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,0);\r
2729 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2730 h->SetXTitle("p_{tmc} (GeV/c)");\r
2731 h->SetYTitle("(#eta-#eta_{mc}) resolution");\r
2732 h->Draw();\r
2733 h->SetName("eta_resolution_vs_mcpt");\r
2734 aFolderObj->Add(h);\r
2735\r
2736 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,0);\r
2737 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2738 h->SetXTitle("p_{tmc} (GeV/c)");\r
2739 h->SetYTitle("(#eta-mc#eta) mean");\r
2740 h->Draw();\r
2741 h->SetName("deta_mean_vs_mcpt");\r
2742 aFolderObj->Add(h);\r
2743 \r
2744 // \r
2745 fRecMCTrackHist1->GetAxis(1)->SetRange(1,fRecMCTrackHist1->GetAxis(1)->GetNbins()); \r
0aaa8b91 2746\r
2747 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,1);\r
2748 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2749 h->SetXTitle("#eta_{mc}");\r
2750 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} resolution");\r
2751 h->Draw();\r
2752 h->SetName("pt_resolution_vs_mceta");\r
2753 aFolderObj->Add(h);\r
2754\r
2755 h2F = (TH2F*)fRecMCTrackHist1->Projection(2,1);\r
2756 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2757 h->SetXTitle("#eta_{mc}");\r
2758 h->SetYTitle("(p_{t}-p_{tmc})/p_{tmc} mean");\r
2759 h->Draw();\r
2760 h->SetName("dpt_mean_vs_mceta");\r
2761 aFolderObj->Add(h);\r
2762\r
2763 //\r
2764 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,1);\r
2765 h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
2766 h->SetXTitle("#eta_{mc}");\r
2767 h->SetYTitle("(#eta-#eta_{mc}) resolution");\r
2768 h->Draw();\r
2769 h->SetName("eta_resolution_vs_mceta");\r
2770 aFolderObj->Add(h);\r
2771\r
2772 h2F = (TH2F*)fRecMCTrackHist1->Projection(3,1);\r
2773 h = AlidNdPtHelper::MakeResol(h2F,1,1,kTRUE,10);\r
2774 h->SetXTitle("#eta_{mc}");\r
2775 h->SetYTitle("(#eta-mc#eta) mean");\r
2776 h->Draw();\r
2777 h->SetName("deta_mean_vs_mceta");\r
2778 aFolderObj->Add(h);\r
2779\r
2780 fRecMCTrackHist1->GetAxis(0)->SetRange(1,fRecMCTrackHist1->GetAxis(0)->GetNbins()); \r
2781\r
bad4ba69 2782 } // end use MC info\r
2783\r
0aaa8b91 2784 // export objects to analysis folder\r
2785 fAnalysisFolder = ExportToFolder(aFolderObj);\r
2786\r
2787 // delete only TObjArray\r
2788 if(aFolderObj) delete aFolderObj;\r
2789}\r
2790\r
2791//_____________________________________________________________________________\r
c931948b 2792TFolder* AlidNdPtAnalysis::ExportToFolder(TObjArray * const array) \r
0aaa8b91 2793{\r
2794 // recreate folder avery time and export objects to new one\r
2795 //\r
2796 AlidNdPtAnalysis * comp=this;\r
2797 TFolder *folder = comp->GetAnalysisFolder();\r
2798\r
2799 TString name, title;\r
2800 TFolder *newFolder = 0;\r
2801 Int_t i = 0;\r
2802 Int_t size = array->GetSize();\r
2803\r
2804 if(folder) { \r
2805 // get name and title from old folder\r
2806 name = folder->GetName(); \r
2807 title = folder->GetTitle(); \r
2808\r
2809 // delete old one\r
2810 delete folder;\r
2811\r
2812 // create new one\r
2813 newFolder = CreateFolder(name.Data(),title.Data());\r
2814 newFolder->SetOwner();\r
2815\r
2816 // add objects to folder\r
2817 while(i < size) {\r
2818 newFolder->Add(array->At(i));\r
2819 i++;\r
2820 }\r
2821 }\r
2822\r
2823return newFolder;\r
2824}\r
2825\r
2826//_____________________________________________________________________________\r
2827TFolder* AlidNdPtAnalysis::CreateFolder(TString name,TString title) { \r
2828// create folder for analysed histograms\r
2829//\r
2830TFolder *folder = 0;\r
2831 folder = new TFolder(name.Data(),title.Data());\r
2832\r
2833 return folder;\r
2834}\r