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