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