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