]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdEta/drawPlots.C
effc++ warnings corrected
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / drawPlots.C
CommitLineData
1afae8ff 1/* $Id$ */
2
0ab29cfa 3#if !defined(__CINT__) || defined(__MAKECINT__)
4
5#include "AliPWG0Helper.h"
6#include "dNdEtaAnalysis.h"
7#include "AlidNdEtaCorrection.h"
8
9#include <TCanvas.h>
10#include <TFile.h>
11#include <TH1.h>
12#include <TH2F.h>
13#include <TH3F.h>
14#include <TLine.h>
15#include <TSystem.h>
16
17#endif
18
25db2d85 19Int_t gMax = 5;
20
0ab29cfa 21extern TSystem* gSystem;
22
dd367a14 23void loadlibs()
24{
25 gSystem->Load("libANALYSIS");
26 gSystem->Load("libPWG0base");
27}
28
0ab29cfa 29void SetRanges(TAxis* axis)
92d2d8ad 30{
0ab29cfa 31 if (strcmp(axis->GetTitle(), "#eta") == 0)
32 axis->SetRangeUser(-1.7999, 1.7999);
33 if (strcmp(axis->GetTitle(), "p_{T} [GeV/c]") == 0)
34 axis->SetRangeUser(0, 9.9999);
35 if (strcmp(axis->GetTitle(), "vtx z [cm]") == 0)
36 axis->SetRangeUser(-15, 14.9999);
37 if (strcmp(axis->GetTitle(), "Ntracks") == 0)
38 axis->SetRangeUser(0, 99.9999);
25db2d85 39}
40
0ab29cfa 41void SetRanges(TH1* hist)
25db2d85 42{
0ab29cfa 43 SetRanges(hist->GetXaxis());
44 SetRanges(hist->GetYaxis());
45 SetRanges(hist->GetZaxis());
46}
25db2d85 47
0ab29cfa 48
49void Prepare3DPlot(TH3* hist)
50{
51 hist->GetXaxis()->SetTitleOffset(1.5);
52 hist->GetYaxis()->SetTitleOffset(1.5);
53 hist->GetZaxis()->SetTitleOffset(1.5);
54
55 hist->SetStats(kFALSE);
56}
57
58void Prepare2DPlot(TH2* hist)
59{
60 hist->SetStats(kFALSE);
61 hist->GetYaxis()->SetTitleOffset(1.4);
62
63 hist->SetMinimum(0);
64 hist->SetMaximum(gMax);
65
66 SetRanges(hist);
67}
68
69void Prepare1DPlot(TH1* hist)
70{
71 hist->SetLineWidth(2);
72 hist->SetStats(kFALSE);
73
72e597d7 74 hist->GetXaxis()->SetLabelOffset(0.02);
75 hist->GetXaxis()->SetTitleOffset(1.3);
76 hist->GetYaxis()->SetTitleOffset(1.3);
77
0ab29cfa 78 SetRanges(hist);
79}
80
81void InitPad()
82{
83 gPad->Range(0, 0, 1, 1);
84 gPad->SetLeftMargin(0.15);
85 //gPad->SetRightMargin(0.05);
86 //gPad->SetTopMargin(0.13);
72e597d7 87 gPad->SetBottomMargin(0.12);
0ab29cfa 88
72e597d7 89 gPad->SetGridx();
90 gPad->SetGridy();
0ab29cfa 91}
92
93void InitPadCOLZ()
94{
95 gPad->Range(0, 0, 1, 1);
96 gPad->SetRightMargin(0.15);
97 gPad->SetLeftMargin(0.12);
98
99 gPad->SetGridx();
100 gPad->SetGridy();
d09fb536 101}
102
dd367a14 103// --- end of helpers --- begin functions ---
104
3dfa46a4 105void DrawOverview(const char* fileName = "correction_map.root", const char* dirName = "dndeta_correction")
dd367a14 106{
107 loadlibs();
108 if (!TFile::Open(fileName))
109 return;
110
111 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(dirName, dirName);
112 if (!dNdEtaCorrection->LoadHistograms())
113 return;
114
115 dNdEtaCorrection->Finish();
116
117 dNdEtaCorrection->DrawOverview();
118}
119
8ca1a6d9 120void ComparedNdEta(const char* ESDfolder = "dndeta", const char* MCfolder = "dndeta", const char* esdFile = "analysis_esd.root", const char* mcFile = "analysis_mc.root")
121{
122 gSystem->Load("libPWG0base");
123
124 TFile::Open(esdFile);
125 dNdEtaAnalysis* fdNdEtaAnalysisESD = new dNdEtaAnalysis(ESDfolder, ESDfolder);
126 fdNdEtaAnalysisESD->LoadHistograms();
127
128 TFile::Open(mcFile);
129 dNdEtaAnalysis* fdNdEtaAnalysisMC = new dNdEtaAnalysis(MCfolder, MCfolder);
130 fdNdEtaAnalysisMC->LoadHistograms();
0448e811 131 //fdNdEtaAnalysisMC->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
8ca1a6d9 132
133 for (Int_t i=0; i<dNdEtaAnalysis::kVertexBinning; ++i)
0448e811 134 fdNdEtaAnalysisESD->GetdNdEtaPtCutOffCorrectedHistogram(i)->Divide(fdNdEtaAnalysisMC->GetdNdEtaPtCutOffCorrectedHistogram(i));
8ca1a6d9 135
136 fdNdEtaAnalysisESD->DrawHistograms();
137}
138
139void CompareVertexDist(Int_t plot = 0, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
140{
141 gSystem->Load("libPWG0base");
142
143 const char* ESDfolder = 0;
144
145 if (plot == 0) // all
146 ESDfolder = "dndeta";
147 else if (plot == 1) // mb
148 ESDfolder = "dndeta_mb";
149 else if (plot == 2) // mb vtx
150 ESDfolder = "dndeta_mbvtx";
151
152 TFile::Open("analysis_esd.root");
153 dNdEtaAnalysis* fdNdEtaAnalysisESD = new dNdEtaAnalysis(ESDfolder, ESDfolder);
154 fdNdEtaAnalysisESD->LoadHistograms();
155
156 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
157 dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder);
158
159 TH2F* hist = 0;
160
161 if (plot == 0) // all
162 hist = dNdEtaCorrection->GetTriggerBiasCorrection()->GetGeneratedHistogram();
163 else if (plot == 1) // mb
164 hist = dNdEtaCorrection->GetTriggerBiasCorrection()->GetMeasuredHistogram();
165 else if (plot == 2) // mb vtx
166 hist = dNdEtaCorrection->GetVertexRecoCorrection()->GetMeasuredHistogram();
167
168 TH1* proj = hist->ProjectionX();
169
170 TH1* vertex = fdNdEtaAnalysisESD->GetVtxHistogram();
171 for (Int_t i=1; i<=vertex->GetNbinsX(); ++i)
172 {
173 Float_t value = proj->GetBinContent(proj->FindBin(vertex->GetBinCenter(i)));
174 if (value != 0)
175 {
176 printf("vtx = %f, esd = %f, corr = %f, ratio = %f\n", vertex->GetBinCenter(i), vertex->GetBinContent(i), value, vertex->GetBinContent(i) / value);
177 vertex->SetBinContent(i, vertex->GetBinContent(i) / value);
178 }
179 }
180
181 new TCanvas;
182 vertex->DrawCopy();
183}
184
185void CompareTrack2ParticleWithAnalysisData(const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
186{
187 gSystem->Load("libPWG0base");
188
189 TFile::Open("analysis_esd.root");
190 dNdEtaAnalysis* fdNdEtaAnalysisESD = new dNdEtaAnalysis("dndeta_mbvtx", "dndeta_mbvtx");
191 fdNdEtaAnalysisESD->LoadHistograms();
192
193 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
194 dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder);
195
196 //TH1* histESD = fdNdEtaAnalysisESD->GetUncorrectedHistogram();
197 //TH1* histCorr = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
198
199 TH1* histESD = fdNdEtaAnalysisESD->GetHistogram();
200 TH1* histCorr = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
201
202 TH1F* diff = new TH1F("diff", "diff", 100, 0.98, 1.02);
203
204 new TCanvas;
205 histESD->Draw();
206
207 new TCanvas;
208 histCorr->Draw();
209
210 for (Int_t x=1; x<=histESD->GetNbinsX(); ++x)
211 for (Int_t y=1; y<=histESD->GetNbinsY(); ++y)
212 for (Int_t z=1; z<=histESD->GetNbinsZ(); ++z)
213 {
214 Float_t value1 = histESD->GetBinContent(x, y, z);
215 Float_t value2 = histCorr->GetBinContent(histCorr->FindBin(histESD->GetXaxis()->GetBinCenter(x), histESD->GetYaxis()->GetBinCenter(y), histESD->GetZaxis()->GetBinCenter(z)));
216
217 if (value2 > 0 && value1 > 0)
218 {
219 printf("%f %f %f\n", value1, value2, value1 / value2);
220 diff->Fill(value1 / value2);
221 }
222 }
223
224 new TCanvas;
225 diff->Draw();
226}
227
dd367a14 228Double_t PrintIntegratedDeviation(TH1* histMC, TH1* histESD, const char* desc = "")
229{
230 Double_t avgMC = 0;
231 Double_t avgESD = 0;
232 for (Int_t bin = histMC->FindBin(-0.7999); bin <= histMC->FindBin(0.7999); bin++)
233 {
234 avgMC += histMC->GetBinContent(bin);
235 avgESD += histESD->GetBinContent(bin);
236 }
237 Int_t nBins = histMC->FindBin(0.7999) - histMC->FindBin(-0.7999) + 1;
238
239 avgMC /= nBins;
240 avgESD /= nBins;
241
242 // deviation when integrate in |eta| < 0.8 between mc and esd
243 Double_t diffFullRange = (avgMC - avgESD) / avgMC;
244
245 Printf("%s: Integrated deviation in |eta| < 0.8 is %.2f %%", desc, diffFullRange * 100);
246
247 return diffFullRange;
248}
249
3dfa46a4 250void dNdEta(Bool_t onlyESD = kFALSE, Bool_t save = kTRUE)
d09fb536 251{
252 TFile* file = TFile::Open("analysis_esd.root");
74fd10b3 253 TH1* histESD = (TH1*) file->Get("dndeta/dNdEta_corrected");
254 TH1* histESDNoPt = (TH1*) file->Get("dndeta/dNdEta");
255 TH1* histESDMB = (TH1*) file->Get("dndetaTr/dNdEta_corrected");
256 TH1* histESDMBNoPt = (TH1*) file->Get("dndetaTr/dNdEta");
257 TH1* histESDMBVtx = (TH1*) file->Get("dndetaTrVtx/dNdEta_corrected");
258 TH1* histESDMBVtxNoPt = (TH1*) file->Get("dndetaTrVtx/dNdEta");
9e952c39 259 TH1* histESDMBTracksNoPt = (TH1*) file->Get("dndetaTracks/dNdEta");
d09fb536 260
261 Prepare1DPlot(histESD);
d09fb536 262 Prepare1DPlot(histESDMB);
263 Prepare1DPlot(histESDMBVtx);
264
74fd10b3 265 Prepare1DPlot(histESDNoPt);
266 Prepare1DPlot(histESDMBNoPt);
267 Prepare1DPlot(histESDMBVtxNoPt);
9e952c39 268 Prepare1DPlot(histESDMBTracksNoPt);
74fd10b3 269
270 histESD->SetLineWidth(0);
271 histESDMB->SetLineWidth(0);
272 histESDMBVtx->SetLineWidth(0);
273
274 histESDNoPt->SetLineWidth(0);
275 histESDMBNoPt->SetLineWidth(0);
276 histESDMBVtxNoPt->SetLineWidth(0);
72e597d7 277
9e952c39 278 histESD->SetMarkerColor(1);
279 histESDMB->SetMarkerColor(2);
280 histESDMBVtx->SetMarkerColor(3);
72e597d7 281
3dfa46a4 282 histESD->SetLineColor(1);
283 histESDMB->SetLineColor(2);
284 histESDMBVtx->SetLineColor(3);
285
9e952c39 286 histESDNoPt->SetMarkerColor(1);
287 histESDMBNoPt->SetMarkerColor(2);
288 histESDMBVtxNoPt->SetMarkerColor(3);
289 histESDMBTracksNoPt->SetMarkerColor(4);
74fd10b3 290
72e597d7 291 histESD->SetMarkerStyle(20);
292 histESDMB->SetMarkerStyle(21);
293 histESDMBVtx->SetMarkerStyle(22);
d09fb536 294
74fd10b3 295 histESDNoPt->SetMarkerStyle(20);
296 histESDMBNoPt->SetMarkerStyle(21);
297 histESDMBVtxNoPt->SetMarkerStyle(22);
9e952c39 298 histESDMBTracksNoPt->SetMarkerStyle(23);
3dfa46a4 299
0f67a57c 300 TH2F* dummy = new TH2F("dummy", "", 100, -1.5, 1.5, 1000, 0, histESDMBVtx->GetMaximum() * 1.1);
72e597d7 301 Prepare1DPlot(dummy);
d09fb536 302 dummy->SetStats(kFALSE);
303 dummy->SetXTitle("#eta");
72e597d7 304 dummy->SetYTitle("dN_{ch}/d#eta");
305 dummy->GetYaxis()->SetTitleOffset(1);
d09fb536 306
3dfa46a4 307 Float_t etaLimit = 1.2999;
4c351225 308
309 histESDMBVtx->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
310 histESDMB->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
311 histESD->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
74fd10b3 312
4c351225 313 histESDNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
74fd10b3 314 histESDMBNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
315 histESDMBVtxNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
9e952c39 316 histESDMBTracksNoPt->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
317
0f67a57c 318 TCanvas* canvas = new TCanvas("dNdEta1", "dNdEta1", 500, 500);
d09fb536 319
0ab29cfa 320 dummy->DrawCopy();
d09fb536 321 histESDMBVtx->Draw("SAME");
322 histESDMB->Draw("SAME");
323 histESD->Draw("SAME");
324
3dfa46a4 325 if (save)
326 {
327 canvas->SaveAs("dNdEta1.gif");
328 canvas->SaveAs("dNdEta1.eps");
329 }
0ab29cfa 330
331 if (onlyESD)
332 return;
d09fb536 333
dd367a14 334 loadlibs();
74fd10b3 335
d09fb536 336 TFile* file2 = TFile::Open("analysis_mc.root");
74fd10b3 337 TH1* histMC = (TH1*) file2->Get("dndeta/dNdEta_corrected")->Clone("cloned");
338 TH1* histMCTr = (TH1*) file2->Get("dndetaTr/dNdEta_corrected")->Clone("cloned2");
339 TH1* histMCTrVtx = (TH1*) file2->Get("dndetaTrVtx/dNdEta_corrected")->Clone("cloned3");
d09fb536 340
0ab29cfa 341 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
d09fb536 342 fdNdEtaAnalysis->LoadHistograms();
3dfa46a4 343 dNdEtaAnalysis* fdNdEtaAnalysis2 = (dNdEtaAnalysis*) fdNdEtaAnalysis->Clone();
344
74fd10b3 345 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
3dfa46a4 346 TH1* histMCPtCut = (TH1*) fdNdEtaAnalysis->GetdNdEtaHistogram(0)->Clone("histMCPtCut");
347
74fd10b3 348 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
349 fdNdEtaAnalysis->LoadHistograms();
350 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
351 TH1* histMCTrPtCut = fdNdEtaAnalysis->GetdNdEtaHistogram(0);
352
353 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
354 fdNdEtaAnalysis->LoadHistograms();
7307d52c 355 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
74fd10b3 356 TH1* histMCTrVtxPtCut = fdNdEtaAnalysis->GetdNdEtaHistogram(0);
d09fb536 357
9e952c39 358 fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
359 fdNdEtaAnalysis->LoadHistograms();
7307d52c 360 fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
9e952c39 361 TH1* histMCTracksPtCut = fdNdEtaAnalysis->GetdNdEtaHistogram(0);
362
d09fb536 363 TCanvas* canvas2 = new TCanvas("dNdEta2", "dNdEta2", 500, 500);
364
365 Prepare1DPlot(histMC);
74fd10b3 366 Prepare1DPlot(histMCTr);
367 Prepare1DPlot(histMCTrVtx);
368
d09fb536 369 Prepare1DPlot(histMCPtCut);
74fd10b3 370 Prepare1DPlot(histMCTrPtCut);
371 Prepare1DPlot(histMCTrVtxPtCut);
9e952c39 372 if (histMCTracksPtCut)
373 Prepare1DPlot(histMCTracksPtCut);
d09fb536 374
9e952c39 375 histMC->SetLineColor(1);
376 histMCTr->SetLineColor(2);
377 histMCTrVtx->SetLineColor(3);
74fd10b3 378
9e952c39 379 histMCPtCut->SetLineColor(1);
380 histMCTrPtCut->SetLineColor(2);
381 histMCTrVtxPtCut->SetLineColor(3);
382 if (histMCTracksPtCut)
383 histMCTracksPtCut->SetLineColor(4);
d09fb536 384
0ab29cfa 385 TH2* dummy2 = (TH2F*) dummy->Clone("dummy2");
72e597d7 386 Prepare1DPlot(dummy2);
74fd10b3 387 dummy2->GetYaxis()->SetRangeUser(0, histESDMBVtx->GetMaximum() * 1.1);
d09fb536 388
0ab29cfa 389 dummy2->DrawCopy();
d09fb536 390 histMC->Draw("SAME");
74fd10b3 391 histMCTr->Draw("SAME");
392 histMCTrVtx->Draw("SAME");
d09fb536 393 histESD->Draw("SAME");
74fd10b3 394 histESDMB->Draw("SAME");
395 histESDMBVtx->Draw("SAME");
d09fb536 396 histESDNoPt->Draw("SAME");
74fd10b3 397 histESDMBNoPt->Draw("SAME");
398 histESDMBVtxNoPt->Draw("SAME");
9e952c39 399 histESDMBTracksNoPt->Draw("SAME");
d09fb536 400 histMCPtCut->Draw("SAME");
74fd10b3 401 histMCTrPtCut->Draw("SAME");
402 histMCTrVtxPtCut->Draw("SAME");
9e952c39 403 if (histMCTracksPtCut)
404 histMCTracksPtCut->Draw("SAME");
d09fb536 405
3dfa46a4 406 if (save)
407 {
408 canvas2->SaveAs("dNdEta2.gif");
409 canvas2->SaveAs("dNdEta2.eps");
410 }
0ab29cfa 411
8ca1a6d9 412 TH1* ratio = (TH1*) histMC->Clone("ratio");
413 TH1* ratioNoPt = (TH1*) histMCPtCut->Clone("ratioNoPt");
414
415 ratio->Divide(histESD);
416 ratioNoPt->Divide(histESDNoPt);
417
3dfa46a4 418 ratio->GetXaxis()->SetRangeUser(-etaLimit, etaLimit);
8ca1a6d9 419
420 ratio->SetLineColor(1);
421 ratioNoPt->SetLineColor(2);
422
dd367a14 423 Double_t average = 0; // average deviation from 1 in ratio (depends on the number of bins if statistical)
424 for (Int_t bin = ratio->FindBin(-0.7999); bin <= ratio->FindBin(0.7999); bin++)
425 average += TMath::Abs(ratio->GetBinContent(bin) - 1);
426 Int_t nBins = ratio->FindBin(0.7999) - ratio->FindBin(-0.7999) + 1;
427 average /= nBins;
428 Printf("Average deviation in |eta| < 0.8 is %.2f %%", average * 100);
429
430 PrintIntegratedDeviation(histMC, histESD, "all events");
431 PrintIntegratedDeviation(histMCTr, histESDMB, "triggered");
432 PrintIntegratedDeviation(histMCTrVtx, histESDMBVtx, "trigger, vertex");
433 PrintIntegratedDeviation(histMCPtCut, histESDNoPt, "all events (no pt corr)");
434 PrintIntegratedDeviation(histMCTrPtCut, histESDMBNoPt, "triggered (no pt corr)");
435 PrintIntegratedDeviation(histMCTrVtxPtCut, histESDMBVtxNoPt, "trigger, vertex (no pt corr)");
436
9e952c39 437 TCanvas* canvas3 = new TCanvas("dNdEta", "dNdEta", 700, 600);
8ca1a6d9 438 canvas3->Range(0, 0, 1, 1);
439 //canvas3->Divide(1, 2, 0, 0);
440
441 //canvas3->cd(1);
9e952c39 442 TPad* pad1 = new TPad("dNdEta_1", "", 0, 0.5, 0.98, 0.98);
8ca1a6d9 443 pad1->Draw();
444
9e952c39 445 TPad* pad2 = new TPad("dNdEta_2", "", 0, 0.02, 0.98, 0.5);
8ca1a6d9 446 pad2->Draw();
447
448 pad1->SetRightMargin(0.05);
449 pad2->SetRightMargin(0.05);
0ab29cfa 450
8ca1a6d9 451 // no border between them
452 pad1->SetBottomMargin(0);
453 pad2->SetTopMargin(0);
454
455 pad1->cd();
456
9e952c39 457 TLegend* legend = new TLegend(0.4, 0.05, 0.65, 0.3);
72e597d7 458 legend->SetFillColor(0);
459 legend->AddEntry(histESDMBVtx, "triggered, vertex");
460 legend->AddEntry(histESDMB, "triggered");
461 legend->AddEntry(histESD, "all events");
462 legend->AddEntry(histMC, "MC prediction");
0ab29cfa 463
9e952c39 464 dummy->GetXaxis()->SetLabelSize(0.06);
465 dummy->GetYaxis()->SetLabelSize(0.06);
466 dummy->GetXaxis()->SetTitleSize(0.06);
467 dummy->GetYaxis()->SetTitleSize(0.06);
468 dummy->GetYaxis()->SetTitleOffset(0.7);
72e597d7 469 dummy->DrawCopy();
0ab29cfa 470 histESDMBVtx->Draw("SAME");
471 histESDMB->Draw("SAME");
472 histESD->Draw("SAME");
0ab29cfa 473 histMC->Draw("SAME");
72e597d7 474
475 legend->Draw();
0ab29cfa 476
8ca1a6d9 477 pad2->cd();
478 pad2->SetBottomMargin(0.15);
72e597d7 479
9e952c39 480 Float_t min = TMath::Min(0.961, ratio->GetMinimum() * 0.95);
481 Float_t max = TMath::Max(1.049, ratio->GetMaximum() * 1.05);
482
8ca1a6d9 483 TH1F dummy3("dummy3", ";#eta;Ratio: MC / ESD", 1, -1.5, 1.5);
484 dummy3.SetStats(kFALSE);
485 dummy3.SetBinContent(1, 1);
9e952c39 486 dummy3.GetYaxis()->SetRangeUser(min, max);
8ca1a6d9 487 dummy3.SetLineWidth(2);
488 dummy3.GetXaxis()->SetLabelSize(0.06);
489 dummy3.GetYaxis()->SetLabelSize(0.06);
490 dummy3.GetXaxis()->SetTitleSize(0.06);
491 dummy3.GetYaxis()->SetTitleSize(0.06);
492 dummy3.GetYaxis()->SetTitleOffset(0.7);
493 dummy3.DrawCopy();
72e597d7 494
8ca1a6d9 495 ratio->Draw("SAME");
72e597d7 496
8ca1a6d9 497 //pad2->Draw();
72e597d7 498
8ca1a6d9 499 canvas3->Modified();
72e597d7 500
3dfa46a4 501 if (save)
502 {
503 canvas3->SaveAs("dNdEta.gif");
504 canvas3->SaveAs("dNdEta.eps");
505 }
8ca1a6d9 506
507 TCanvas* canvas4 = new TCanvas("ratio", "ratio", 700, 500);
72e597d7 508
509 ratio->Draw();
510 ratioNoPt->Draw("SAME");
511
4c351225 512 TLegend* legend = new TLegend(0.6, 0.7, 0.95, 0.9);
513 legend->SetFillColor(0);
514 legend->AddEntry(ratio, "mc/esd");
515 legend->AddEntry(ratioNoPt, "mc/esd, not pt cut off corrected");
516 legend->Draw();
d09fb536 517}
518
519void ptSpectrum()
520{
521 TFile* file = TFile::Open("analysis_esd.root");
0ab29cfa 522 TH1* histESD = (TH1*) file->Get("dndeta/dndeta_pt");
d09fb536 523
524 TFile* file2 = TFile::Open("analysis_mc.root");
0ab29cfa 525 TH1* histMC = (TH1*) file2->Get("dndeta/dndeta_pt");
d09fb536 526
527 TCanvas* canvas = new TCanvas("ptSpectrum", "ptSpectrum", 500, 500);
528 InitPad();
529 gPad->SetLogy();
530
531 Prepare1DPlot(histMC);
532 Prepare1DPlot(histESD);
533
534 histESD->SetTitle("");
25db2d85 535 histESD->GetXaxis()->SetTitle("p_{T} [GeV/c]");
536 histESD->GetYaxis()->SetTitle("#frac{dN}{d#eta dp_{T}} [c/GeV]");
d09fb536 537
538 histMC->SetLineColor(kBlue);
539 histESD->SetLineColor(kRed);
540
541 histESD->GetYaxis()->SetTitleOffset(1.5);
542 histESD->GetXaxis()->SetRangeUser(0, 4.9999);
543
544 histESD->SetMaximum(TMath::Max(histESD->GetMaximum(), histMC->GetMaximum()) * 2);
545
546 histESD->Draw();
547 histMC->Draw("SAME");
548
549 canvas->SaveAs("ptSpectrum.gif");
0ab29cfa 550 canvas->SaveAs("ptSpectrum.eps");
92d2d8ad 551}
552
553void ptCutoff()
554{
555 gSystem->Load("libPWG0base");
556
0448e811 557 TFile::Open("correction_map.root");
8b3563f4 558 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
0448e811 559 dNdEtaCorrection->LoadHistograms();
92d2d8ad 560
0448e811 561 dNdEtaCorrection->GetMeasuredFraction(AlidNdEtaCorrection::kINEL, 0.3, -100, kTRUE);
92d2d8ad 562
0448e811 563 TH1* hist = dynamic_cast<TH1*> (gROOT->FindObject("generated_pt")->Clone("ptcutoff"));
92d2d8ad 564
565 hist->GetXaxis()->SetRangeUser(0, 0.9999);
566 hist->SetMinimum(0);
92d2d8ad 567
568 hist->SetTitle("Generated Particles");
d09fb536 569 Prepare1DPlot(hist);
92d2d8ad 570
72e597d7 571 TCanvas* canvas = new TCanvas("ptCutoff", "ptCutoff", 700, 500);
572 hist->DrawCopy();
92d2d8ad 573
d09fb536 574 TLine* line = new TLine(0.3, 0 - hist->GetMaximum() * 0, 0.3, hist->GetMaximum() * 1.1);
92d2d8ad 575 line->SetLineWidth(3);
d09fb536 576 line->SetLineColor(kRed);
92d2d8ad 577 line->Draw();
578
579 canvas->SaveAs("ptCutoff.gif");
0ab29cfa 580 canvas->SaveAs("ptCutoff.eps");
72e597d7 581
0448e811 582 TH1F* factor = new TH1F("factor", ";#eta;correction factor", 20, -1, 1.000001);
583 factor->SetLineWidth(2);
584 for (Float_t eta = -0.95; eta<1; eta += 0.1)
585 factor->Fill(eta, 1.0 / dNdEtaCorrection->GetMeasuredFraction(AlidNdEtaCorrection::kINEL, 0.3, eta, kFALSE));
72e597d7 586
587 TCanvas* canvas = new TCanvas("ptCutoff_factor", "ptCutoff_factor", 700, 500);
588 InitPad();
589
590 Prepare1DPlot(factor);
591 factor->GetYaxis()->SetRangeUser(1, 2);
592 factor->GetYaxis()->SetTitleOffset(1);
593 factor->Draw();
594
595 canvas->SaveAs("ptCutoff_factor.eps");
92d2d8ad 596}
597
0bd1f8a0 598void TriggerBiasVtxRecon(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction")
92d2d8ad 599{
0448e811 600 gSystem->Load("libPWG0base");
601
602 TFile::Open(fileName);
603 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
604 dNdEtaCorrection->LoadHistograms();
0ab29cfa 605
0448e811 606 TH2* corrTrigger = dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->GetCorrectionHistogram();
607 TH2* corrVtx = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->GetCorrectionHistogram();
0ab29cfa 608
609 Prepare2DPlot(corrTrigger);
0448e811 610 corrTrigger->SetTitle("b) Trigger bias correction");
0ab29cfa 611
612 Prepare2DPlot(corrVtx);
0448e811 613 corrVtx->SetTitle("a) Vertex reconstruction correction");
0ab29cfa 614
5c495d37 615 corrTrigger->GetYaxis()->SetTitle("Multiplicity");
616 corrVtx->GetYaxis()->SetTitle("Multiplicity");
617
0ab29cfa 618 TCanvas* canvas = new TCanvas("TriggerBiasVtxRecon", "TriggerBiasVtxRecon", 1000, 500);
619 canvas->Divide(2, 1);
620
621 canvas->cd(1);
622 InitPadCOLZ();
0448e811 623 corrVtx->DrawCopy("COLZ");
0ab29cfa 624
625 canvas->cd(2);
626 InitPadCOLZ();
0448e811 627 corrTrigger->DrawCopy("COLZ");
0ab29cfa 628
629 canvas->SaveAs(Form("TriggerBiasVtxRecon_%d.gif", gMax));
630 canvas->SaveAs(Form("TriggerBiasVtxRecon_%d.eps", gMax));
631
632 canvas = new TCanvas("TriggerBiasVtxReconZoom", "TriggerBiasVtxReconZoom", 1000, 500);
633 canvas->Divide(2, 1);
634
635 corrTrigger->GetYaxis()->SetRangeUser(0, 5);
636 corrVtx->GetYaxis()->SetRangeUser(0, 5);
637
638 canvas->cd(1);
639 InitPadCOLZ();
0448e811 640 corrVtx->DrawCopy("COLZ");
0ab29cfa 641
642 canvas->cd(2);
643 InitPadCOLZ();
0448e811 644 corrTrigger->DrawCopy("COLZ");
0ab29cfa 645
646 canvas->SaveAs(Form("TriggerBiasVtxReconZoom_%d.gif", gMax));
647 canvas->SaveAs(Form("TriggerBiasVtxReconZoom_%d.eps", gMax));
648}
649
650void TriggerBias(const char* fileName = "correction_map.root")
651{
652 TFile* file = TFile::Open(fileName);
92d2d8ad 653
5c495d37 654 TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_dndeta_correction_trigger"));
92d2d8ad 655
656 Prepare2DPlot(corr);
657 corr->SetTitle("Trigger bias correction");
658
659 TCanvas* canvas = new TCanvas("TriggerBias", "TriggerBias", 500, 500);
660 InitPadCOLZ();
661 corr->DrawCopy("COLZ");
662
25db2d85 663 canvas->SaveAs(Form("TriggerBias_%d.gif", gMax));
0ab29cfa 664 canvas->SaveAs(Form("TriggerBias_%d.eps", gMax));
92d2d8ad 665
666 corr->GetYaxis()->SetRangeUser(0, 5);
667
668 canvas = new TCanvas("TriggerBiasZoom", "TriggerBiasZoom", 500, 500);
669 InitPadCOLZ();
670 corr->DrawCopy("COLZ");
671
25db2d85 672 canvas->SaveAs(Form("TriggerBiasZoom_%d.gif", gMax));
0ab29cfa 673 canvas->SaveAs(Form("TriggerBiasZoom_%d.eps", gMax));
92d2d8ad 674}
675
72e597d7 676void TriggerBias1D(const char* fileName = "correction_map.root", const char* folderName = "dndeta_correction")
677{
678 gSystem->Load("libPWG0base");
679
680 TFile* file = TFile::Open(fileName);
681 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(folderName, folderName);
0448e811 682 dNdEtaCorrection->LoadHistograms();
72e597d7 683
0448e811 684 TH1* hist = dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->Get1DCorrection("x");
685 TH1* hist2 = dNdEtaCorrection->GetTriggerBiasCorrectionINEL()->GetEventCorrection()->Get1DCorrection("y", -10, 10);
72e597d7 686
0448e811 687 TCanvas* canvas = new TCanvas("TriggerBias1D", "TriggerBias1D", 1000, 500);
8ca1a6d9 688 canvas->Divide(2, 1);
689
690 canvas->cd(1);
72e597d7 691 InitPad();
692
693 Prepare1DPlot(hist);
694 hist->SetTitle("");
695 hist->GetYaxis()->SetTitle("correction factor");
696 hist->GetYaxis()->SetRangeUser(1, 1.5);
697 hist->GetYaxis()->SetTitleOffset(1.6);
698 hist->Draw();
699
8ca1a6d9 700 canvas->cd(2);
701 InitPad();
702
703 Prepare1DPlot(hist2);
704 hist2->SetTitle("");
705 hist2->GetYaxis()->SetTitle("correction factor");
706 hist2->GetXaxis()->SetRangeUser(0, 5);
707 hist2->GetYaxis()->SetTitleOffset(1.6);
708 hist2->GetXaxis()->SetTitle("multiplicity");
709 hist2->Draw();
710
711 TPaveText* pave = new TPaveText(0.6, 0.8, 0.8, 0.85, "NDC");
712 pave->SetFillColor(0);
713 pave->AddText("|z| < 10 cm");
714 pave->Draw();
715
72e597d7 716 canvas->SaveAs("TriggerBias1D.eps");
717}
718
92d2d8ad 719void VtxRecon()
720{
721 TFile* file = TFile::Open("correction_map.root");
722
72e597d7 723 TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_dndeta_correction_vtxReco"));
92d2d8ad 724
725 Prepare2DPlot(corr);
726 corr->SetTitle("Vertex reconstruction correction");
727
728 TCanvas* canvas = new TCanvas("VtxRecon", "VtxRecon", 500, 500);
729 InitPadCOLZ();
25db2d85 730 corr->DrawCopy("COLZ");
731
0ab29cfa 732 canvas->SaveAs(Form("VtxRecon_%d.eps", gMax));
733 canvas->SaveAs(Form("VtxRecon_%d.eps", gMax));
25db2d85 734
735 corr->GetYaxis()->SetRangeUser(0, 5);
736
0ab29cfa 737 canvas = new TCanvas("VtxReconZoom", "VtxReconZoom", 500, 500);
25db2d85 738 InitPadCOLZ();
739 corr->DrawCopy("COLZ");
92d2d8ad 740
25db2d85 741 canvas->SaveAs(Form("VtxReconZoom_%d.gif", gMax));
0ab29cfa 742 canvas->SaveAs(Form("VtxReconZoom_%d.eps", gMax));
92d2d8ad 743}
744
72e597d7 745void VtxRecon1D(const char* fileName = "correction_map.root", const char* folderName = "dndeta_correction")
746{
747 gSystem->Load("libPWG0base");
748
749 TFile* file = TFile::Open(fileName);
750 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(folderName, folderName);
0448e811 751 dNdEtaCorrection->LoadHistograms();
72e597d7 752
0448e811 753 TH1* hist = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->Get1DCorrection("x");
754 TH1* hist2 = dNdEtaCorrection->GetVertexRecoCorrection()->GetEventCorrection()->Get1DCorrection("y", -10, 10);
8ca1a6d9 755
756 TCanvas* canvas = new TCanvas("VtxRecon1D", "VtxRecon1D", 1000, 500);
757 canvas->Divide(2, 1);
72e597d7 758
8ca1a6d9 759 canvas->cd(1);
72e597d7 760 InitPad();
761
762 Prepare1DPlot(hist);
763 hist->SetTitle("");
764 hist->GetYaxis()->SetTitle("correction factor");
765 hist->GetYaxis()->SetRangeUser(1, 1.8);
766 hist->GetYaxis()->SetTitleOffset(1.6);
8ca1a6d9 767 hist->DrawCopy();
768
769 canvas->cd(2);
770 InitPad();
771
772 Prepare1DPlot(hist2);
773 hist2->SetTitle("");
774 hist2->GetYaxis()->SetTitle("correction factor");
775 hist2->GetXaxis()->SetRangeUser(0, 20);
776 hist2->GetYaxis()->SetTitleOffset(1.6);
777 hist2->GetXaxis()->SetTitle("multiplicity");
778 hist2->Draw();
779
780 TPaveText* pave = new TPaveText(0.6, 0.8, 0.8, 0.85, "NDC");
781 pave->SetFillColor(0);
782 pave->AddText("|z| < 10 cm");
783 pave->Draw();
72e597d7 784
785 canvas->SaveAs("VtxRecon1D.eps");
8ca1a6d9 786
0448e811 787 Correction1DCreatePlots(fileName, folderName, 9.9, 2);
8ca1a6d9 788
0448e811 789 TH1* corrX = dynamic_cast<TH1*> (gROOT->FindObject("generated_x_div_measured_x"));
790 TH1* corrZ = dynamic_cast<TH1*> (gROOT->FindObject("generated_z_div_measured_z"));
791
792 Prepare1DPlot(corrX);
793 Prepare1DPlot(corrZ);
794
795 corrX->GetYaxis()->SetTitleOffset(1.5);
796 corrZ->GetYaxis()->SetTitleOffset(1.5);
797
798 corrX->SetTitle("a) z projection");
799 corrZ->SetTitle("b) p_{T} projection");
800
801 corrX->GetYaxis()->SetTitle("correction factor");
802 corrZ->GetYaxis()->SetTitle("correction factor");
803
804 corrZ->GetXaxis()->SetRangeUser(0.11, 9.9);
805
806 TString canvasName;
807 canvasName.Form("VtxRecon1D_Track");
808 TCanvas* canvas = new TCanvas(canvasName, canvasName, 800, 400);
809 canvas->Divide(2, 1);
810
811 canvas->cd(1);
812 InitPad();
813 corrX->DrawCopy();
814
815 canvas->cd(2);
816 InitPad();
817 gPad->SetLogx();
818 corrZ->Draw();
819
820 canvas->SaveAs("VtxRecon1D_Track.eps");
821 canvas->SaveAs("VtxRecon1D_Track.gif");
72e597d7 822}
823
0ab29cfa 824void Track2ParticleAsNumber(const char* fileName = "correction_map.root")
1afae8ff 825{
25db2d85 826 gSystem->Load("libPWG0base");
827
0ab29cfa 828 TFile::Open(fileName);
8b3563f4 829 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
0ab29cfa 830 dNdEtaCorrection->LoadHistograms(fileName, "dndeta_correction");
831
832 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
833 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
834
835 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
836 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
837
838 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
839 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
840 gene->GetXaxis()->SetRangeUser(-10, 10);
841 meas->GetXaxis()->SetRangeUser(-10, 10);
842
843 Float_t eff1 = gene->Integral() / meas->Integral();
844 Float_t error1 = TMath::Sqrt(gene->Integral()) / meas->Integral();
845
846 printf("Correction without pT cut: %f +- %f\n", eff1, error1);
847
848 gene->GetZaxis()->SetRangeUser(0.3, 10);
849 meas->GetZaxis()->SetRangeUser(0.3, 10);
850
851 Float_t eff2 = gene->Integral() / meas->Integral();
852 Float_t error2 = TMath::Sqrt(gene->Integral()) / meas->Integral();
853
854 printf("Correction with pT cut: %f +- %f\n", eff2, error2);
855
856 gene->GetZaxis()->SetRangeUser(0.3, 1);
857 meas->GetZaxis()->SetRangeUser(0.3, 1);
858
859 Float_t eff3 = gene->Integral() / meas->Integral();
860 Float_t error3 = TMath::Sqrt(gene->Integral()) / meas->Integral();
861
862 printf("Correction with 0.3 < pT < 0.5: %f +- %f\n", eff3, error3);
863}
864
0448e811 865void Correction1DCreatePlots(const char* fileName = "correction_map.root", const char* folderName = "dndeta_correction", Float_t upperPtLimit = 9.9, Int_t correctionType = 0)
0ab29cfa 866{
867 TFile::Open(fileName);
bdfe2916 868 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(folderName, folderName);
0448e811 869 dNdEtaCorrection->LoadHistograms();
0ab29cfa 870
0448e811 871 TH3F* gene = dNdEtaCorrection->GetCorrection(correctionType)->GetTrackCorrection()->GetGeneratedHistogram();
872 TH3F* meas = dNdEtaCorrection->GetCorrection(correctionType)->GetTrackCorrection()->GetMeasuredHistogram();
0ab29cfa 873
874 gene->GetZaxis()->SetRangeUser(0.3, upperPtLimit);
875 meas->GetZaxis()->SetRangeUser(0.3, upperPtLimit);
876 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
877 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
878 AliPWG0Helper::CreateDividedProjections(gene, meas, "x", kTRUE);
879 gene->GetYaxis()->SetRange(0, 0);
880 meas->GetYaxis()->SetRange(0, 0);
881
882 gene->GetXaxis()->SetRangeUser(-10, 10);
883 meas->GetXaxis()->SetRangeUser(-10, 10);
884 AliPWG0Helper::CreateDividedProjections(gene, meas, "y", kTRUE);
885 gene->GetZaxis()->SetRange(0, 0);
886 meas->GetZaxis()->SetRange(0, 0);
887
888 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
889 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
890 AliPWG0Helper::CreateDividedProjections(gene, meas, "z", kTRUE);
891}
25db2d85 892
0448e811 893void Correction1D(Int_t correctionType = 0, const char* fileName = "correction_map.root", const char* folder = "dndeta_correction", Float_t upperPtLimit = 9.9)
894{
895 gSystem->Load("libPWG0base");
896
897 Correction1DCreatePlots(fileName, folder, upperPtLimit, correctionType);
898
899 TH1* corrX = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_x_div_measured_x", folder, folder)));
900 TH1* corrY = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_y_div_measured_y", folder, folder)));
901 TH1* corrZ = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_z_div_measured_z", folder, folder)));
902
903 Prepare1DPlot(corrX);
904 Prepare1DPlot(corrY);
905 Prepare1DPlot(corrZ);
906
907 corrX->SetTitle("a) z projection");
908 corrY->SetTitle("b) #eta projection");
909 corrZ->SetTitle("c) p_{T} projection");
910
911 corrX->GetYaxis()->SetTitle("correction factor");
912 corrY->GetYaxis()->SetTitle("correction factor");
913 corrZ->GetYaxis()->SetTitle("correction factor");
914
915 corrZ->GetXaxis()->SetRangeUser(0, upperPtLimit);
916
917 TString canvasName;
918 canvasName.Form("Correction1D_%s", folder);
919 TCanvas* canvas = new TCanvas(canvasName, canvasName, 1200, 400);
920 canvas->Divide(3, 1);
921
922 canvas->cd(1);
923 InitPad();
924 corrX->DrawCopy();
925
926 canvas->cd(2);
927 InitPad();
928 corrY->Draw();
929
930 canvas->cd(3);
931 InitPad();
932 corrZ->Draw();
933
934 canvas->SaveAs(Form("Correction1D_%d_%s_%f.gif", correctionType, fileName, upperPtLimit));
935 canvas->SaveAs(Form("Correction1D_%d_%s_%f.eps", correctionType, fileName, upperPtLimit));
936}
937
72e597d7 938void Track2Particle1D(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction", Float_t upperPtLimit = 9.9)
0ab29cfa 939{
940 gSystem->Load("libPWG0base");
941
0448e811 942 Correction1DCreatePlots(fileName, folder, upperPtLimit, AlidNdEtaCorrection::kTrack2Particle);
0ab29cfa 943
0448e811 944 TH1* corrX = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_x_div_measured_x", folder, folder)));
945 TH1* corrY = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_y_div_measured_y", folder, folder)));
946 TH1* corrZ = dynamic_cast<TH1*> (gROOT->FindObject(Form("generated_z_div_measured_z", folder, folder)));
0ab29cfa 947
948 Prepare1DPlot(corrX);
949 Prepare1DPlot(corrY);
950 Prepare1DPlot(corrZ);
951
0448e811 952 corrX->SetTitle("a) z projection");
72e597d7 953 corrY->SetTitle("a) #eta projection");
954 corrZ->SetTitle("b) p_{T} projection");
955
956 corrY->GetYaxis()->SetTitle("correction factor");
957 corrZ->GetYaxis()->SetTitle("correction factor");
0ab29cfa 958
959 corrZ->GetXaxis()->SetRangeUser(0, upperPtLimit);
960
bdfe2916 961 TString canvasName;
72e597d7 962 canvasName.Form("Track2Particle1D_%s", folder);
bdfe2916 963 TCanvas* canvas = new TCanvas(canvasName, canvasName, 1200, 400);
0ab29cfa 964 canvas->Divide(3, 1);
965
966 canvas->cd(1);
967 InitPad();
bdfe2916 968 corrX->DrawCopy();
0ab29cfa 969
970 canvas->cd(2);
971 InitPad();
0448e811 972 corrY->Draw();
0ab29cfa 973
974 canvas->cd(3);
975 InitPad();
0448e811 976 corrZ->Draw();
0ab29cfa 977
72e597d7 978 canvas->SaveAs(Form("Track2Particle1D_%s_%f.gif", fileName, upperPtLimit));
979 canvas->SaveAs(Form("Track2Particle1D_%s_%f.eps", fileName, upperPtLimit));
980
5c495d37 981 //TPaveText* pave = new TPaveText(-0.4, 1.35, 0.4, 1.45);
982
72e597d7 983 canvasName.Form("Track2Particle1D_%s_etapt", folder);
984 TCanvas* canvas = new TCanvas(canvasName, canvasName, 1000, 500);
985 canvas->Divide(2, 1);
986
987 canvas->cd(1);
988 InitPad();
989 corrY->GetXaxis()->SetRangeUser(-0.99, 0.99);
990 corrY->GetYaxis()->SetRangeUser(1, 1.5);
991 corrY->GetYaxis()->SetTitleOffset(1.5);
992 corrY->DrawCopy();
5c495d37 993 TPaveText* pave = new TPaveText(0.3, 0.7, 0.7, 0.8, "NDC");
994 pave->AddText("|z| < 10 cm");
995 pave->AddText("0.3 GeV/c < p_{T} < 10 GeV/c");
996 pave->Draw();
72e597d7 997
998 canvas->cd(2);
999 InitPad();
5c495d37 1000 gPad->SetLogx();
1001 corrZ->GetYaxis()->SetRangeUser(1, 2.5);
1002 corrZ->GetXaxis()->SetRangeUser(0.101, upperPtLimit);
72e597d7 1003 corrZ->GetYaxis()->SetTitleOffset(1.5);
1004 corrZ->DrawCopy();
5c495d37 1005 pave = new TPaveText(0.5, 0.7, 0.8, 0.8, "NDC");
1006 pave->AddText("|z| < 10 cm");
1007 pave->AddText("|#eta| < 0.8");
1008 pave->Draw();
72e597d7 1009
1010 canvas->SaveAs(Form("Track2Particle1D_etapt_%s_%f.eps", fileName, upperPtLimit));
4c351225 1011 canvas->SaveAs(Form("Track2Particle1D_etapt_%s_%f.gif", fileName, upperPtLimit));
0ab29cfa 1012}
1013
1014void CompareTrack2Particle1D(Float_t upperPtLimit = 9.9)
1015{
1016 gSystem->Load("libPWG0base");
1017
8ca1a6d9 1018 // particle type
1019 for (Int_t particle=0; particle<4; ++particle)
1020 {
1021 TString dirName;
1022 dirName.Form("correction_%d", particle);
1023 Track2Particle1DCreatePlots("systematics-detail-only-positive.root", dirName, upperPtLimit);
0ab29cfa 1024
8ca1a6d9 1025 TString tmpx, tmpy, tmpz;
1026 tmpx.Form("gene_%s_nTrackToNPart_x_div_meas_%s_nTrackToNPart_x", dirName.Data(), dirName.Data());
1027 tmpy.Form("gene_%s_nTrackToNPart_y_div_meas_%s_nTrackToNPart_y", dirName.Data(), dirName.Data());
1028 tmpz.Form("gene_%s_nTrackToNPart_z_div_meas_%s_nTrackToNPart_z", dirName.Data(), dirName.Data());
0ab29cfa 1029
8ca1a6d9 1030 TH1* posX = dynamic_cast<TH1*> (gROOT->FindObject(tmpx)->Clone("pos_x"));
1031 TH1* posY = dynamic_cast<TH1*> (gROOT->FindObject(tmpy)->Clone("pos_y"));
1032 TH1* posZ = dynamic_cast<TH1*> (gROOT->FindObject(tmpz)->Clone("pos_z"));
0ab29cfa 1033
8ca1a6d9 1034 Track2Particle1DCreatePlots("systematics-detail-only-negative.root", dirName, upperPtLimit);
0ab29cfa 1035
8ca1a6d9 1036 TH1* negX = dynamic_cast<TH1*> (gROOT->FindObject(tmpx)->Clone("neg_x"));
1037 TH1* negY = dynamic_cast<TH1*> (gROOT->FindObject(tmpy)->Clone("neg_y"));
1038 TH1* negZ = dynamic_cast<TH1*> (gROOT->FindObject(tmpz)->Clone("neg_z"));
0ab29cfa 1039
8ca1a6d9 1040 posX->Divide(negX);
1041 posY->Divide(negY);
1042 posZ->Divide(negZ);
0ab29cfa 1043
8ca1a6d9 1044 Prepare1DPlot(posX);
1045 Prepare1DPlot(posY);
1046 Prepare1DPlot(posZ);
0ab29cfa 1047
8ca1a6d9 1048 Float_t min = 0.8;
1049 Float_t max = 1.2;
0ab29cfa 1050
8ca1a6d9 1051 posX->SetMinimum(min);
1052 posX->SetMaximum(max);
1053 posY->SetMinimum(min);
1054 posY->SetMaximum(max);
1055 posZ->SetMinimum(min);
1056 posZ->SetMaximum(max);
0ab29cfa 1057
8ca1a6d9 1058 posZ->GetXaxis()->SetRangeUser(0, upperPtLimit);
0ab29cfa 1059
8ca1a6d9 1060 posX->GetYaxis()->SetTitleOffset(1.7);
1061 posX->GetYaxis()->SetTitle("C_{+} / C_{-}");
1062 posY->GetYaxis()->SetTitleOffset(1.7);
1063 posY->GetYaxis()->SetTitle("C_{+} / C_{-}");
1064 posZ->GetYaxis()->SetTitleOffset(1.7);
1065 posZ->GetYaxis()->SetTitle("C_{+} / C_{-}");
0ab29cfa 1066
8ca1a6d9 1067 posZ->GetXaxis()->SetRangeUser(0, 1);
0ab29cfa 1068
8ca1a6d9 1069 TString canvasName;
1070 canvasName.Form("PosNegRatios_%s_%f", ((particle == 0) ? "Pi" : ((particle == 1) ? "K" : ((particle == 2) ? "p" : "other"))), upperPtLimit);
0ab29cfa 1071
8ca1a6d9 1072 TCanvas* canvas = new TCanvas(canvasName, canvasName, 1200, 400);
1073 canvas->Divide(3, 1);
0ab29cfa 1074
8ca1a6d9 1075 canvas->cd(1);
1076 InitPad();
1077 posX->DrawCopy();
0ab29cfa 1078
8ca1a6d9 1079 canvas->cd(2);
1080 InitPad();
1081 posY->DrawCopy();
1082
1083 canvas->cd(3);
1084 InitPad();
1085 posZ->DrawCopy();
0ab29cfa 1086
8ca1a6d9 1087 canvas->SaveAs(Form("%s.gif", canvas->GetName()));
1088 canvas->SaveAs(Form("%s.eps", canvas->GetName()));
1089 }
0ab29cfa 1090}
1091
1092void Track2Particle2DCreatePlots(const char* fileName = "correction_map.root")
1093{
1094 TFile::Open(fileName);
1095 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
0448e811 1096 dNdEtaCorrection->LoadHistograms();
0ab29cfa 1097
0448e811 1098 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetTrackCorrection()->GetGeneratedHistogram();
1099 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetTrackCorrection()->GetMeasuredHistogram();
1afae8ff 1100
25db2d85 1101 gene->GetZaxis()->SetRangeUser(0.3, 10);
1102 meas->GetZaxis()->SetRangeUser(0.3, 10);
1103 AliPWG0Helper::CreateDividedProjections(gene, meas, "yx");
0ab29cfa 1104 gene->GetZaxis()->SetRange(0, 0);
1105 meas->GetZaxis()->SetRange(0, 0);
25db2d85 1106
1107 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
1108 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
1109 AliPWG0Helper::CreateDividedProjections(gene, meas, "zx");
0ab29cfa 1110 gene->GetYaxis()->SetRange(0, 0);
1111 meas->GetYaxis()->SetRange(0, 0);
25db2d85 1112
1113 gene->GetXaxis()->SetRangeUser(-10, 10);
1114 meas->GetXaxis()->SetRangeUser(-10, 10);
1115 AliPWG0Helper::CreateDividedProjections(gene, meas, "zy");
0ab29cfa 1116 gene->GetXaxis()->SetRange(0, 0);
1117 meas->GetXaxis()->SetRange(0, 0);
1118}
1119
0bd1f8a0 1120void Track2Particle2D(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction")
0ab29cfa 1121{
1122 gSystem->Load("libPWG0base");
1123
1124 Track2Particle2DCreatePlots(fileName);
25db2d85 1125
0448e811 1126 TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject("generated_yx_div_measured_yx"));
1127 TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject("generated_zx_div_measured_zx"));
1128 TH2* corrZY = dynamic_cast<TH2*> (gROOT->FindObject("generated_zy_div_measured_zy"));
25db2d85 1129
1130 /* this reads them from the file
d09fb536 1131 TH2* corrYX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
1132 TH2* corrZX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
25db2d85 1133 TH2* corrZY = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));*/
1afae8ff 1134
1135 Prepare2DPlot(corrYX);
1136 Prepare2DPlot(corrZX);
1137 Prepare2DPlot(corrZY);
1138
0ab29cfa 1139 const char* title = "";
92d2d8ad 1140 corrYX->SetTitle(title);
1141 corrZX->SetTitle(title);
1142 corrZY->SetTitle(title);
1afae8ff 1143
d09fb536 1144 TCanvas* canvas = new TCanvas("Track2Particle2D", "Track2Particle2D", 1200, 400);
1afae8ff 1145 canvas->Divide(3, 1);
1146
1147 canvas->cd(1);
1148 InitPadCOLZ();
1149 corrYX->Draw("COLZ");
1150
1151 canvas->cd(2);
1152 InitPadCOLZ();
1153 corrZX->Draw("COLZ");
1154
1155 canvas->cd(3);
1156 InitPadCOLZ();
1157 corrZY->Draw("COLZ");
92d2d8ad 1158
25db2d85 1159 canvas->SaveAs(Form("Track2Particle2D_%d.gif", gMax));
0ab29cfa 1160 canvas->SaveAs(Form("Track2Particle2D_%d.eps", gMax));
1161}
1162
1163void CompareTrack2Particle2D()
1164{
1165 gSystem->Load("libPWG0base");
1166
1167 Track2Particle2DCreatePlots("correction_maponly-positive.root");
1168
1169 TH2* posYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx")->Clone("pos_yx"));
1170 TH2* posZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx")->Clone("pos_zx"));
1171 TH2* posZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy")->Clone("pos_zy"));
1172
1173 Track2Particle2DCreatePlots("correction_maponly-negative.root");
1174
1175 TH2* negYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx")->Clone("neg_yx"));
1176 TH2* negZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx")->Clone("neg_zx"));
1177 TH2* negZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy")->Clone("neg_zy"));
1178
1179 posYX->Divide(negYX);
1180 posZX->Divide(negZX);
1181 posZY->Divide(negZY);
1182
1183 Prepare2DPlot(posYX);
1184 Prepare2DPlot(posZX);
1185 Prepare2DPlot(posZY);
1186
1187 Float_t min = 0.8;
1188 Float_t max = 1.2;
1189
1190 posYX->SetMinimum(min);
1191 posYX->SetMaximum(max);
1192 posZX->SetMinimum(min);
1193 posZX->SetMaximum(max);
1194 posZY->SetMinimum(min);
1195 posZY->SetMaximum(max);
1196
1197 TCanvas* canvas = new TCanvas("CompareTrack2Particle2D", "CompareTrack2Particle2D", 1200, 400);
1198 canvas->Divide(3, 1);
1199
1200 canvas->cd(1);
1201 InitPadCOLZ();
1202 posYX->Draw("COLZ");
1203
1204 canvas->cd(2);
1205 InitPadCOLZ();
1206 posZX->Draw("COLZ");
1207
1208 canvas->cd(3);
1209 InitPadCOLZ();
1210 posZY->Draw("COLZ");
1211
1212 canvas->SaveAs("CompareTrack2Particle2D.gif");
1213 canvas->SaveAs("CompareTrack2Particle2D.eps");
1afae8ff 1214}
1215
1216void Track2Particle3D()
1217{
1218 // get left margin proper
1219
1220 TFile* file = TFile::Open("correction_map.root");
1221
d09fb536 1222 TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
1223
1224 corr->SetTitle("Correction Factor");
1225 SetRanges(corr->GetZaxis());
1226
1227 Prepare3DPlot(corr);
1228
1229 TCanvas* canvas = new TCanvas("Track2Particle3D", "Track2Particle3D", 500, 500);
1230 canvas->SetTheta(29.428);
1231 canvas->SetPhi(16.5726);
1232
1233 corr->Draw();
1234
1235 canvas->SaveAs("Track2Particle3D.gif");
0ab29cfa 1236 canvas->SaveAs("Track2Particle3D.eps");
d09fb536 1237}
1238
1239void Track2Particle3DAll()
1240{
d09fb536 1241 TFile* file = TFile::Open("correction_map.root");
1242
1afae8ff 1243 TH3* gene = dynamic_cast<TH3*> (file->Get("dndeta_correction/gene_nTrackToNPart"));
1244 TH3* meas = dynamic_cast<TH3*> (file->Get("dndeta_correction/meas_nTrackToNPart"));
1245 TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
1246
1247 gene->SetTitle("Generated Particles");
1248 meas->SetTitle("Measured Tracks");
1249 corr->SetTitle("Correction Factor");
1250
1251 Prepare3DPlot(gene);
1252 Prepare3DPlot(meas);
1253 Prepare3DPlot(corr);
1254
d09fb536 1255 TCanvas* canvas = new TCanvas("Track2Particle3DAll", "Track2Particle3DAll", 1200, 400);
1afae8ff 1256 canvas->Divide(3, 1);
1257
1258 canvas->cd(1);
1259 InitPad();
1260 gene->Draw();
1261
1262 canvas->cd(2);
1263 meas->Draw();
1264
1265 canvas->cd(3);
1266 corr->Draw();
d09fb536 1267
1268 canvas->SaveAs("Track2Particle3DAll.gif");
0ab29cfa 1269 canvas->SaveAs("Track2Particle3DAll.eps");
1afae8ff 1270}
1271
6b7fa615 1272void MultiplicityMC(Int_t xRangeMax = 50)
4c6b34a8 1273{
1274 TFile* file = TFile::Open("multiplicityMC.root");
1275
1276 if (!file)
1277 {
1278 printf("multiplicityMC.root could not be opened.\n");
1279 return;
1280 }
1281
1282 TH1F* fMultiplicityESD = dynamic_cast<TH1F*> (file->Get("fMultiplicityESD"));
1283 TH1F* fMultiplicityMC = dynamic_cast<TH1F*> (file->Get("fMultiplicityMC"));
1284 TH2F* fCorrelation = dynamic_cast<TH2F*> (file->Get("fCorrelation"));
1285
1286 TH1F* correction = new TH1F("MultiplicityMC_correction", "MultiplicityMC_correction;Ntracks;Npart", 76, -0.5, 75.5);
1287 TH1F* correctionWidth = new TH1F("MultiplicityMC_correctionwidth", "MultiplicityMC_correctionwidth;Ntracks;Npart", 76, -0.5, 75.5);
1288 //fMultiplicityMC->GetNbinsX(), fMultiplicityMC->GetXaxis()->GetXmin(), fMultiplicityMC->GetXaxis()->GetXmax());
1289 for (Int_t i=1; i<=correction->GetNbinsX(); ++i)
1290 {
1291 TH1D* proj = fCorrelation->ProjectionX("_px", i, i+1);
1292 proj->Fit("gaus", "0");
1293 correction->SetBinContent(i, proj->GetFunction("gaus")->GetParameter(1));
1294 correctionWidth->SetBinContent(i, proj->GetFunction("gaus")->GetParameter(2));
1295
1296 continue;
1297
1298 // draw for debugging
1299 new TCanvas;
1300 proj->DrawCopy();
1301 proj->GetFunction("gaus")->DrawCopy("SAME");
1302 }
1303
1304 TH1F* fMultiplicityESDCorrected = new TH1F("fMultiplicityESDCorrected", "fMultiplicityESDCorrected", 2010, -0.5, 200.5);
1305
1306 for (Int_t i=1; i<=correction->GetNbinsX(); ++i)
1307 {
1308 Float_t mean = correction->GetBinContent(i);
1309 Float_t width = correctionWidth->GetBinContent(i);
1310
1311 Int_t fillBegin = fMultiplicityESDCorrected->FindBin(mean - width * 3);
1312 Int_t fillEnd = fMultiplicityESDCorrected->FindBin(mean + width * 3);
1313 printf("bin %d mean %f width %f, filling from %d to %d\n", i, mean, width, fillBegin, fillEnd);
1314
1315 for (Int_t j=fillBegin; j <= fillEnd; ++j)
1316 {
1317 fMultiplicityESDCorrected->AddBinContent(j, TMath::Gaus(fMultiplicityESDCorrected->GetXaxis()->GetBinCenter(j), mean, width, kTRUE) * fMultiplicityESD->GetBinContent(i));
1318 }
1319 }
1320
1321 TH1F* fMultiplicityESDCorrectedRebinned = dynamic_cast<TH1F*> (fMultiplicityESDCorrected->Clone("fMultiplicityESDCorrectedRebinned"));
1322 fMultiplicityESDCorrectedRebinned->Rebin(10);
1323 fMultiplicityESDCorrectedRebinned->Scale(0.1);
1324
6b7fa615 1325 TH1F* ratio = dynamic_cast<TH1F*> (fMultiplicityESD->Clone("multiplicity_ratio"));
1326 ratio->SetTitle("ratio;Ntracks;Nreco/Ngene");
1327 ratio->Divide(fMultiplicityMC);
1328
4c6b34a8 1329 TH1F* ratio2 = dynamic_cast<TH1F*> (fMultiplicityESDCorrectedRebinned->Clone("multiplicity_ratio_corrected"));
1330 ratio2->Divide(fMultiplicityMC);
1331
1332 TCanvas* canvas = new TCanvas("MultiplicityMC", "MultiplicityMC", 1500, 1000);
1333 canvas->Divide(3, 2);
1334
6b7fa615 1335 fMultiplicityESD->GetXaxis()->SetRangeUser(0, xRangeMax);
1336 ratio->GetXaxis()->SetRangeUser(0, xRangeMax);
1337 fCorrelation->GetXaxis()->SetRangeUser(0, xRangeMax);
1338 fCorrelation->GetYaxis()->SetRangeUser(0, xRangeMax);
1339 correction->GetXaxis()->SetRangeUser(0, xRangeMax);
1340 fMultiplicityESDCorrected->GetXaxis()->SetRangeUser(0, xRangeMax);
1341 fMultiplicityESDCorrectedRebinned->GetXaxis()->SetRangeUser(0, xRangeMax);
1342
1343 canvas->cd(1); //InitPad();
4c6b34a8 1344 fMultiplicityESD->Draw();
1345 fMultiplicityMC->SetLineColor(2);
1346 fMultiplicityMC->Draw("SAME");
1347
6b7fa615 1348 TLegend* legend = new TLegend(0.6, 0.7, 0.85, 0.85);
1349 legend->AddEntry(fMultiplicityESD, "ESD");
1350 legend->AddEntry(fMultiplicityMC, "MC");
1351 legend->Draw();
4c6b34a8 1352
6b7fa615 1353 canvas->cd(2);
4c6b34a8 1354 fCorrelation->Draw("COLZ");
1355
6b7fa615 1356 canvas->cd(3);
4c6b34a8 1357 correction->Draw();
1358 //correction->Fit("pol1");
1359 correctionWidth->SetLineColor(2);
1360 correctionWidth->Draw("SAME");
1361
6b7fa615 1362 legend = new TLegend(0.2, 0.7, 0.45, 0.85);
1363 legend->AddEntry(correction, "#bar{x}");
1364 legend->AddEntry(correctionWidth, "#sigma");
1365 legend->Draw();
1366
1367 canvas->cd(4);
1368 ratio->Draw();
1369
1370 ratio2->SetLineColor(2);
1371 ratio2->Draw("SAME");
1372
1373 legend = new TLegend(0.6, 0.7, 0.85, 0.85);
1374 legend->AddEntry(ratio, "uncorrected");
1375 legend->AddEntry(ratio2, "corrected");
1376 legend->Draw();
1377
4c6b34a8 1378 canvas->cd(5);
6b7fa615 1379 fMultiplicityESDCorrected->SetLineColor(kBlue);
4c6b34a8 1380 fMultiplicityESDCorrected->Draw();
1381 fMultiplicityMC->Draw("SAME");
1382 fMultiplicityESD->Draw("SAME");
1383
6b7fa615 1384 legend = new TLegend(0.6, 0.7, 0.85, 0.85);
1385 legend->AddEntry(fMultiplicityESDCorrected, "ESD corrected");
1386 legend->AddEntry(fMultiplicityMC, "MC");
1387 legend->AddEntry(fMultiplicityESD, "ESD");
1388 legend->Draw();
1389
4c6b34a8 1390 canvas->cd(6);
6b7fa615 1391 fMultiplicityESDCorrectedRebinned->SetLineColor(kBlue);
4c6b34a8 1392 fMultiplicityESDCorrectedRebinned->Draw();
1393 fMultiplicityMC->Draw("SAME");
6b7fa615 1394
1395 legend = new TLegend(0.6, 0.7, 0.85, 0.85);
1396 legend->AddEntry(fMultiplicityESDCorrectedRebinned, "ESD corrected");
1397 legend->AddEntry(fMultiplicityMC, "MC");
1398 legend->Draw();
1399
1400 canvas->SaveAs("MultiplicityMC.gif");
4c6b34a8 1401}
1402
1403void MultiplicityESD()
1404{
1405 TFile* file = TFile::Open("multiplicityESD.root");
1406
1407 if (!file)
1408 {
1409 printf("multiplicityESD.root could not be opened.\n");
1410 return;
1411 }
1412
1413 TH1F* fMultiplicityESD = dynamic_cast<TH1F*> (file->Get("fMultiplicity"));
1414
1415 TCanvas* canvas = new TCanvas("MultiplicityESD", "MultiplicityESD", 500, 500);
1416
1417 fMultiplicityESD->Draw();
1418}
1419
0ab29cfa 1420void drawPlots(Int_t max)
1afae8ff 1421{
0ab29cfa 1422 gMax = max;
1afae8ff 1423
0ab29cfa 1424 ptCutoff();
1425 TriggerBias();
1426 VtxRecon();
1427 Track2Particle2D();
1428 Track2Particle3D();
1429 ptSpectrum();
1430 dNdEta();
1afae8ff 1431}
1432
0ab29cfa 1433void drawPlots()
d09fb536 1434{
0ab29cfa 1435 drawPlots(5);
1436 drawPlots(2);
1afae8ff 1437}
770a1f1d 1438
1439void CompareCorrection2Measured(const char* dataInput = "analysis_esd_raw.root", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
1440{
1441 loadlibs();
1442
1443 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
1444 TFile::Open(correctionMapFile);
1445 dNdEtaCorrection->LoadHistograms();
1446
1447 TFile* file = TFile::Open(dataInput);
1448
1449 if (!file)
1450 {
1451 cout << "Error. File not found" << endl;
1452 return;
1453 }
1454
1455 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
1456 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
1457
1458 gROOT->cd();
1459
1460 TH3* hist1 = (TH3*) dNdEtaCorrection->GetTrack2ParticleCorrection()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("mc");
1461 hist1->SetTitle("mc");
3dfa46a4 1462 Printf("mc contains %f entries", hist1->Integral());
1463 Printf("mc contains %f entries in |vtx-z| < 10, pt > 0.3", hist1->Integral(hist1->GetXaxis()->FindBin(-9.9), hist1->GetXaxis()->FindBin(9.9), 1, hist1->GetNbinsY(), hist1->GetZaxis()->FindBin(0.301), hist1->GetNbinsZ()));
770a1f1d 1464
1465 TH3* hist2 = (TH3*) fdNdEtaAnalysis->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("esd");
1466 hist2->SetTitle("esd");
3dfa46a4 1467 Printf("esd contains %f entries", hist2->Integral());
1468 Printf("esd contains %f entries in |vtx-z| < 10, pt > 0.3", hist2->Integral(hist2->GetXaxis()->FindBin(-9.9), hist2->GetXaxis()->FindBin(9.9), 1, hist2->GetNbinsY(), hist2->GetZaxis()->FindBin(0.301), hist2->GetNbinsZ()));
770a1f1d 1469
1470 AliPWG0Helper::CreateDividedProjections(hist1, hist2);
1471
1472 new TCanvas; gROOT->FindObject("mc_yx_div_esd_yx")->Draw("COLZ");
1473 new TCanvas; gROOT->FindObject("mc_zx_div_esd_zx")->Draw("COLZ");
1474 new TCanvas; gROOT->FindObject("mc_zy_div_esd_zy")->Draw("COLZ");
3dfa46a4 1475}
1476
1477void CompareMeasured2Measured(const char* dataInput = "analysis_esd_raw.root", const char* dataInput2 = "analysis_esd_raw.root")
1478{
1479 loadlibs();
1480
1481 TFile* file = TFile::Open(dataInput);
1482
1483 if (!file)
1484 {
1485 cout << "Error. File not found" << endl;
1486 return;
1487 }
1488
1489 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
1490 fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
1491
1492 TFile* file = TFile::Open(dataInput2);
1493
1494 if (!file)
1495 {
1496 cout << "Error. File not found" << endl;
1497 return;
1498 }
1499
1500 dNdEtaAnalysis* fdNdEtaAnalysis2 = new dNdEtaAnalysis("dndeta2", "dndeta2");
1501 fdNdEtaAnalysis2->LoadHistograms("fdNdEtaAnalysisESD");
1502
1503 gROOT->cd();
1504
1505 TH3* hist1 = (TH3*) fdNdEtaAnalysis->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("esd1");
1506 hist1->SetTitle("esd1");
1507 Printf("esd1 contains %f entries", hist1->GetEntries());
1508 Printf("esd1 contains %f entries in |vtx-z| < 10, pt > 0.3", hist1->Integral(hist1->GetXaxis()->FindBin(-9.9), hist1->GetXaxis()->FindBin(9.9), 1, hist1->GetNbinsY(), hist1->GetZaxis()->FindBin(0.301), hist1->GetNbinsZ()));
1509
1510 TH3* hist2 = (TH3*) fdNdEtaAnalysis2->GetData()->GetTrackCorrection()->GetMeasuredHistogram()->Clone("esd2");
1511 hist2->SetTitle("esd2");
1512 Printf("esd2 contains %f entries", hist2->GetEntries());
1513 Printf("esd2 contains %f entries in |vtx-z| < 10, pt > 0.3", hist2->Integral(hist2->GetXaxis()->FindBin(-9.9), hist2->GetXaxis()->FindBin(9.9), 1, hist2->GetNbinsY(), hist2->GetZaxis()->FindBin(0.301), hist2->GetNbinsZ()));
1514
1515 AliPWG0Helper::CreateDividedProjections(hist1, hist2);
1516
1517 new TCanvas; gROOT->FindObject("esd1_yx_div_esd2_yx")->Draw("COLZ");
1518 new TCanvas; gROOT->FindObject("esd1_zx_div_esd2_zx")->Draw("COLZ");
1519 new TCanvas; gROOT->FindObject("esd1_zy_div_esd2_zy")->Draw("COLZ");
1520
1521 TH2* event1 = (TH2*) fdNdEtaAnalysis->GetData()->GetEventCorrection()->GetMeasuredHistogram()->Clone("event1");
1522 TH2* event2 = (TH2*) fdNdEtaAnalysis2->GetData()->GetEventCorrection()->GetMeasuredHistogram()->Clone("event2");
1523
1524 Printf("event1 contains %f entries", event1->GetEntries());
1525 Printf("event2 contains %f entries", event2->GetEntries());
1526 Printf("event1 integral is %f", event1->Integral());
1527 Printf("event2 integral is %f", event2->Integral());
1528 Printf("event1 contains %f entries in |vtx-z| < 10", event1->Integral(event1->GetXaxis()->FindBin(-9.9), event1->GetXaxis()->FindBin(9.9), 1, event1->GetNbinsY()));
1529 Printf("event2 contains %f entries in |vtx-z| < 10", event2->Integral(event2->GetXaxis()->FindBin(-9.9), event2->GetXaxis()->FindBin(9.9), 1, event2->GetNbinsY()));
1530
1531 projx1 = event1->ProjectionX();
1532 projx2 = event2->ProjectionX();
1533
1534 new TCanvas; projx1->DrawCopy(); projx2->SetLineColor(2); projx2->DrawCopy("SAME");
1535
1536 projx1->Divide(projx2);
1537 new TCanvas; projx1->Draw();
1538
1539 event1->Divide(event2);
1540 new TCanvas; event1->Draw("COLZ");
770a1f1d 1541
1542}
3dfa46a4 1543