3 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include "AliPWG0Helper.h"
6 #include "dNdEtaAnalysis.h"
7 #include "AlidNdEtaCorrection.h"
21 extern TSystem* gSystem;
23 void SetRanges(TAxis* axis)
25 if (strcmp(axis->GetTitle(), "#eta") == 0)
26 axis->SetRangeUser(-1.7999, 1.7999);
27 if (strcmp(axis->GetTitle(), "p_{T} [GeV/c]") == 0)
28 axis->SetRangeUser(0, 9.9999);
29 if (strcmp(axis->GetTitle(), "vtx z [cm]") == 0)
30 axis->SetRangeUser(-15, 14.9999);
31 if (strcmp(axis->GetTitle(), "Ntracks") == 0)
32 axis->SetRangeUser(0, 99.9999);
35 void SetRanges(TH1* hist)
37 SetRanges(hist->GetXaxis());
38 SetRanges(hist->GetYaxis());
39 SetRanges(hist->GetZaxis());
43 void Prepare3DPlot(TH3* hist)
45 hist->GetXaxis()->SetTitleOffset(1.5);
46 hist->GetYaxis()->SetTitleOffset(1.5);
47 hist->GetZaxis()->SetTitleOffset(1.5);
49 hist->SetStats(kFALSE);
52 void Prepare2DPlot(TH2* hist)
54 hist->SetStats(kFALSE);
55 hist->GetYaxis()->SetTitleOffset(1.4);
58 hist->SetMaximum(gMax);
63 void Prepare1DPlot(TH1* hist)
65 hist->SetLineWidth(2);
66 hist->SetStats(kFALSE);
73 gPad->Range(0, 0, 1, 1);
74 gPad->SetLeftMargin(0.15);
75 //gPad->SetRightMargin(0.05);
76 //gPad->SetTopMargin(0.13);
77 //gPad->SetBottomMargin(0.1);
85 gPad->Range(0, 0, 1, 1);
86 gPad->SetRightMargin(0.15);
87 gPad->SetLeftMargin(0.12);
93 void dNdEta(Bool_t onlyESD = kFALSE)
95 TFile* file = TFile::Open("analysis_esd.root");
96 TH1* histESD = (TH1*) file->Get("dndeta/dndeta_dNdEta_corrected_2");
97 TH1* histESDNoPt = (TH1*) file->Get("dndeta/dndeta_dNdEta_2");
98 TH1* histESDMB = (TH1*) file->Get("dndeta_mb/dndeta_mb_dNdEta_corrected_2");
99 TH1* histESDMBVtx = (TH1*) file->Get("dndeta_mbvtx/dndeta_mbvtx_dNdEta_corrected_2");
101 TCanvas* canvas = new TCanvas("dNdEta1", "dNdEta1", 500, 500);
103 Prepare1DPlot(histESD);
104 Prepare1DPlot(histESDNoPt);
105 Prepare1DPlot(histESDMB);
106 Prepare1DPlot(histESDMBVtx);
108 histESD->SetLineColor(kRed);
109 histESDMB->SetLineColor(kBlue);
110 histESDMBVtx->SetLineColor(103);
112 TH2F* dummy = new TH2F("dummy", "", 100, -1.5, 1.5, 100, 0, histESDMBVtx->GetMaximum() * 1.1);
113 dummy->SetStats(kFALSE);
114 dummy->SetXTitle("#eta");
115 dummy->SetYTitle("dN/d#eta");
117 histESDMBVtx->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
118 histESDMB->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
119 histESD->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
120 histESDNoPt->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
123 histESDMBVtx->Draw("SAME");
124 histESDMB->Draw("SAME");
125 histESD->Draw("SAME");
127 canvas->SaveAs("dNdEta1.gif");
128 canvas->SaveAs("dNdEta1.eps");
133 TFile* file2 = TFile::Open("analysis_mc.root");
134 TH1* histMC = (TH1*) file2->Get("dndeta/dndeta_dNdEta_corrected_2")->Clone("cloned");
136 gSystem->Load("libPWG0base");
137 dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
138 fdNdEtaAnalysis->LoadHistograms();
139 fdNdEtaAnalysis->Finish(0, 0.3);
140 TH1* histMCPtCut = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
142 TCanvas* canvas2 = new TCanvas("dNdEta2", "dNdEta2", 500, 500);
144 Prepare1DPlot(histMC);
145 Prepare1DPlot(histMCPtCut);
147 histMC->SetLineColor(kBlue);
148 histMCPtCut->SetLineColor(104);
149 histESDNoPt->SetLineColor(102);
151 TH2* dummy2 = (TH2F*) dummy->Clone("dummy2");
152 dummy2->GetYaxis()->SetRangeUser(0, histESD->GetMaximum() * 1.1);
155 histMC->Draw("SAME");
157 histESD->Draw("SAME");
158 histESDNoPt->Draw("SAME");
159 histMCPtCut->Draw("SAME");
161 canvas2->SaveAs("dNdEta2.gif");
162 canvas2->SaveAs("dNdEta2.eps");
164 TCanvas* canvas3 = new TCanvas("dNdEta", "dNdEta", 1000, 500);
165 canvas3->Divide(2, 1);
167 dummy->SetTitle("a)");
168 dummy2->SetTitle("b)");
172 histESDMBVtx->Draw("SAME");
173 histESDMB->Draw("SAME");
174 histESD->Draw("SAME");
178 histMC->Draw("SAME");
179 histESD->Draw("SAME");
180 histESDNoPt->Draw("SAME");
181 histMCPtCut->Draw("SAME");
183 canvas3->SaveAs("dNdEta.gif");
184 canvas3->SaveAs("dNdEta.eps");
189 TFile* file = TFile::Open("analysis_esd.root");
190 TH1* histESD = (TH1*) file->Get("dndeta/dndeta_pt");
192 TFile* file2 = TFile::Open("analysis_mc.root");
193 TH1* histMC = (TH1*) file2->Get("dndeta/dndeta_pt");
195 TCanvas* canvas = new TCanvas("ptSpectrum", "ptSpectrum", 500, 500);
199 Prepare1DPlot(histMC);
200 Prepare1DPlot(histESD);
202 histESD->SetTitle("");
203 histESD->GetXaxis()->SetTitle("p_{T} [GeV/c]");
204 histESD->GetYaxis()->SetTitle("#frac{dN}{d#eta dp_{T}} [c/GeV]");
206 histMC->SetLineColor(kBlue);
207 histESD->SetLineColor(kRed);
209 histESD->GetYaxis()->SetTitleOffset(1.5);
210 histESD->GetXaxis()->SetRangeUser(0, 4.9999);
212 histESD->SetMaximum(TMath::Max(histESD->GetMaximum(), histMC->GetMaximum()) * 2);
215 histMC->Draw("SAME");
217 canvas->SaveAs("ptSpectrum.gif");
218 canvas->SaveAs("ptSpectrum.eps");
223 gSystem->Load("libPWG0base");
225 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
226 dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
228 dNdEtaCorrection->GetMeasuredFraction(0.3, -1, kTRUE);
230 TH1* hist = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_pt"));
232 hist->GetXaxis()->SetRangeUser(0, 0.9999);
235 hist->SetTitle("Generated Particles");
238 TCanvas* canvas = new TCanvas("ptCutoff", "ptCutoff", 500, 500);
241 TLine* line = new TLine(0.3, 0 - hist->GetMaximum() * 0, 0.3, hist->GetMaximum() * 1.1);
242 line->SetLineWidth(3);
243 line->SetLineColor(kRed);
246 canvas->SaveAs("ptCutoff.gif");
247 canvas->SaveAs("ptCutoff.eps");
250 void TriggerBiasVtxRecon(const char* fileName = "correction_map.root")
252 TFile* file = TFile::Open(fileName);
254 TH2* corrTrigger = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_trigger"));
255 TH2* corrVtx = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_vtxReco"));
257 Prepare2DPlot(corrTrigger);
258 corrTrigger->SetTitle("a) Trigger bias correction");
260 Prepare2DPlot(corrVtx);
261 corrVtx->SetTitle("b) Vertex reconstruction correction");
263 TCanvas* canvas = new TCanvas("TriggerBiasVtxRecon", "TriggerBiasVtxRecon", 1000, 500);
264 canvas->Divide(2, 1);
268 corrTrigger->DrawCopy("COLZ");
272 corrVtx->DrawCopy("COLZ");
274 canvas->SaveAs(Form("TriggerBiasVtxRecon_%d.gif", gMax));
275 canvas->SaveAs(Form("TriggerBiasVtxRecon_%d.eps", gMax));
277 canvas = new TCanvas("TriggerBiasVtxReconZoom", "TriggerBiasVtxReconZoom", 1000, 500);
278 canvas->Divide(2, 1);
280 corrTrigger->GetYaxis()->SetRangeUser(0, 5);
281 corrVtx->GetYaxis()->SetRangeUser(0, 5);
285 corrTrigger->DrawCopy("COLZ");
289 corrVtx->DrawCopy("COLZ");
291 canvas->SaveAs(Form("TriggerBiasVtxReconZoom_%d.gif", gMax));
292 canvas->SaveAs(Form("TriggerBiasVtxReconZoom_%d.eps", gMax));
295 void TriggerBias(const char* fileName = "correction_map.root")
297 TFile* file = TFile::Open(fileName);
299 TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_trigger"));
302 corr->SetTitle("Trigger bias correction");
304 TCanvas* canvas = new TCanvas("TriggerBias", "TriggerBias", 500, 500);
306 corr->DrawCopy("COLZ");
308 canvas->SaveAs(Form("TriggerBias_%d.gif", gMax));
309 canvas->SaveAs(Form("TriggerBias_%d.eps", gMax));
311 corr->GetYaxis()->SetRangeUser(0, 5);
313 canvas = new TCanvas("TriggerBiasZoom", "TriggerBiasZoom", 500, 500);
315 corr->DrawCopy("COLZ");
317 canvas->SaveAs(Form("TriggerBiasZoom_%d.gif", gMax));
318 canvas->SaveAs(Form("TriggerBiasZoom_%d.eps", gMax));
323 TFile* file = TFile::Open("correction_map.root");
325 TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_vtxReco"));
328 corr->SetTitle("Vertex reconstruction correction");
330 TCanvas* canvas = new TCanvas("VtxRecon", "VtxRecon", 500, 500);
332 corr->DrawCopy("COLZ");
334 canvas->SaveAs(Form("VtxRecon_%d.eps", gMax));
335 canvas->SaveAs(Form("VtxRecon_%d.eps", gMax));
337 corr->GetYaxis()->SetRangeUser(0, 5);
339 canvas = new TCanvas("VtxReconZoom", "VtxReconZoom", 500, 500);
341 corr->DrawCopy("COLZ");
343 canvas->SaveAs(Form("VtxReconZoom_%d.gif", gMax));
344 canvas->SaveAs(Form("VtxReconZoom_%d.eps", gMax));
347 void Track2ParticleAsNumber(const char* fileName = "correction_map.root")
349 gSystem->Load("libPWG0base");
351 TFile::Open(fileName);
352 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
353 dNdEtaCorrection->LoadHistograms(fileName, "dndeta_correction");
355 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
356 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
358 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
359 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
361 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
362 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
363 gene->GetXaxis()->SetRangeUser(-10, 10);
364 meas->GetXaxis()->SetRangeUser(-10, 10);
366 Float_t eff1 = gene->Integral() / meas->Integral();
367 Float_t error1 = TMath::Sqrt(gene->Integral()) / meas->Integral();
369 printf("Correction without pT cut: %f +- %f\n", eff1, error1);
371 gene->GetZaxis()->SetRangeUser(0.3, 10);
372 meas->GetZaxis()->SetRangeUser(0.3, 10);
374 Float_t eff2 = gene->Integral() / meas->Integral();
375 Float_t error2 = TMath::Sqrt(gene->Integral()) / meas->Integral();
377 printf("Correction with pT cut: %f +- %f\n", eff2, error2);
379 gene->GetZaxis()->SetRangeUser(0.3, 1);
380 meas->GetZaxis()->SetRangeUser(0.3, 1);
382 Float_t eff3 = gene->Integral() / meas->Integral();
383 Float_t error3 = TMath::Sqrt(gene->Integral()) / meas->Integral();
385 printf("Correction with 0.3 < pT < 0.5: %f +- %f\n", eff3, error3);
388 void Track2Particle1DCreatePlots(const char* fileName = "correction_map.root", Float_t upperPtLimit = 10)
390 TFile::Open(fileName);
391 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
392 dNdEtaCorrection->LoadHistograms(fileName, "dndeta_correction");
394 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
395 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
397 gene->GetZaxis()->SetRangeUser(0.3, upperPtLimit);
398 meas->GetZaxis()->SetRangeUser(0.3, upperPtLimit);
399 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
400 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
401 AliPWG0Helper::CreateDividedProjections(gene, meas, "x", kTRUE);
402 gene->GetYaxis()->SetRange(0, 0);
403 meas->GetYaxis()->SetRange(0, 0);
405 gene->GetXaxis()->SetRangeUser(-10, 10);
406 meas->GetXaxis()->SetRangeUser(-10, 10);
407 AliPWG0Helper::CreateDividedProjections(gene, meas, "y", kTRUE);
408 gene->GetZaxis()->SetRange(0, 0);
409 meas->GetZaxis()->SetRange(0, 0);
411 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
412 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
413 AliPWG0Helper::CreateDividedProjections(gene, meas, "z", kTRUE);
416 void Track2Particle1D(const char* fileName = "correction_map.root", Float_t upperPtLimit = 9.9)
418 gSystem->Load("libPWG0base");
420 Track2Particle1DCreatePlots(fileName, upperPtLimit);
422 TH1* corrX = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_x_div_meas_nTrackToNPart_x"));
423 TH1* corrY = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_y_div_meas_nTrackToNPart_y"));
424 TH1* corrZ = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_z_div_meas_nTrackToNPart_z"));
426 Prepare1DPlot(corrX);
427 Prepare1DPlot(corrY);
428 Prepare1DPlot(corrZ);
430 const char* title = "Track2Particle Correction";
431 corrX->SetTitle(title);
432 corrY->SetTitle(title);
433 corrZ->SetTitle(title);
435 corrZ->GetXaxis()->SetRangeUser(0, upperPtLimit);
437 TCanvas* canvas = new TCanvas("Track2Particle2D", "Track2Particle2D", 1200, 400);
438 canvas->Divide(3, 1);
452 canvas->SaveAs(Form("Track2Particle1D_%s_%d_%f.gif", fileName, gMax, upperPtLimit));
453 canvas->SaveAs(Form("Track2Particle1D_%s_%d_%f.eps", fileName, gMax, upperPtLimit));
456 void CompareTrack2Particle1D(Float_t upperPtLimit = 9.9)
458 gSystem->Load("libPWG0base");
460 Track2Particle1DCreatePlots("correction_maponly-positive.root", upperPtLimit);
462 TH1* posX = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_x_div_meas_nTrackToNPart_x")->Clone("pos_x"));
463 TH1* posY = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_y_div_meas_nTrackToNPart_y")->Clone("pos_y"));
464 TH1* posZ = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_z_div_meas_nTrackToNPart_z")->Clone("pos_z"));
466 Track2Particle1DCreatePlots("correction_maponly-negative.root", upperPtLimit);
468 TH1* negX = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_x_div_meas_nTrackToNPart_x")->Clone("neg_x"));
469 TH1* negY = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_y_div_meas_nTrackToNPart_y")->Clone("neg_y"));
470 TH1* negZ = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_z_div_meas_nTrackToNPart_z")->Clone("neg_z"));
472 //printf("%f %f %f %f\n", posX->GetBinContent(20), posX->GetBinError(20), negX->GetBinContent(20), negX->GetBinError(20));
478 //printf("%f %f\n", posX->GetBinContent(20), posX->GetBinError(20));
487 posX->SetMinimum(min);
488 posX->SetMaximum(max);
489 posY->SetMinimum(min);
490 posY->SetMaximum(max);
491 posZ->SetMinimum(min);
492 posZ->SetMaximum(max);
494 posZ->GetXaxis()->SetRangeUser(0, upperPtLimit);
496 posX->GetYaxis()->SetTitleOffset(1.7);
497 posX->GetYaxis()->SetTitle("C_{+} / C_{-}");
498 posY->GetYaxis()->SetTitleOffset(1.7);
499 posY->GetYaxis()->SetTitle("C_{+} / C_{-}");
500 posZ->GetYaxis()->SetTitleOffset(1.7);
501 posZ->GetYaxis()->SetTitle("C_{+} / C_{-}");
503 TCanvas* canvas = new TCanvas("CompareTrack2Particle1D", "CompareTrack2Particle1D", 1200, 400);
504 canvas->Divide(3, 1);
518 canvas->SaveAs(Form("CompareTrack2Particle1D_%f.gif", upperPtLimit));
519 canvas->SaveAs(Form("CompareTrack2Particle1D_%f.eps", upperPtLimit));
522 void Track2Particle2DCreatePlots(const char* fileName = "correction_map.root")
524 TFile::Open(fileName);
525 AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
526 dNdEtaCorrection->LoadHistograms(fileName, "dndeta_correction");
528 TH3F* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
529 TH3F* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
531 gene->GetZaxis()->SetRangeUser(0.3, 10);
532 meas->GetZaxis()->SetRangeUser(0.3, 10);
533 AliPWG0Helper::CreateDividedProjections(gene, meas, "yx");
534 gene->GetZaxis()->SetRange(0, 0);
535 meas->GetZaxis()->SetRange(0, 0);
537 gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
538 meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
539 AliPWG0Helper::CreateDividedProjections(gene, meas, "zx");
540 gene->GetYaxis()->SetRange(0, 0);
541 meas->GetYaxis()->SetRange(0, 0);
543 gene->GetXaxis()->SetRangeUser(-10, 10);
544 meas->GetXaxis()->SetRangeUser(-10, 10);
545 AliPWG0Helper::CreateDividedProjections(gene, meas, "zy");
546 gene->GetXaxis()->SetRange(0, 0);
547 meas->GetXaxis()->SetRange(0, 0);
550 void Track2Particle2D(const char* fileName = "correction_map.root")
552 gSystem->Load("libPWG0base");
554 Track2Particle2DCreatePlots(fileName);
556 TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
557 TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
558 TH2* corrZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));
560 /* this reads them from the file
561 TH2* corrYX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
562 TH2* corrZX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
563 TH2* corrZY = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));*/
565 Prepare2DPlot(corrYX);
566 Prepare2DPlot(corrZX);
567 Prepare2DPlot(corrZY);
569 const char* title = "";
570 corrYX->SetTitle(title);
571 corrZX->SetTitle(title);
572 corrZY->SetTitle(title);
574 TCanvas* canvas = new TCanvas("Track2Particle2D", "Track2Particle2D", 1200, 400);
575 canvas->Divide(3, 1);
579 corrYX->Draw("COLZ");
583 corrZX->Draw("COLZ");
587 corrZY->Draw("COLZ");
589 canvas->SaveAs(Form("Track2Particle2D_%d.gif", gMax));
590 canvas->SaveAs(Form("Track2Particle2D_%d.eps", gMax));
593 void CompareTrack2Particle2D()
595 gSystem->Load("libPWG0base");
597 Track2Particle2DCreatePlots("correction_maponly-positive.root");
599 TH2* posYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx")->Clone("pos_yx"));
600 TH2* posZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx")->Clone("pos_zx"));
601 TH2* posZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy")->Clone("pos_zy"));
603 Track2Particle2DCreatePlots("correction_maponly-negative.root");
605 TH2* negYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx")->Clone("neg_yx"));
606 TH2* negZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx")->Clone("neg_zx"));
607 TH2* negZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy")->Clone("neg_zy"));
609 posYX->Divide(negYX);
610 posZX->Divide(negZX);
611 posZY->Divide(negZY);
613 Prepare2DPlot(posYX);
614 Prepare2DPlot(posZX);
615 Prepare2DPlot(posZY);
620 posYX->SetMinimum(min);
621 posYX->SetMaximum(max);
622 posZX->SetMinimum(min);
623 posZX->SetMaximum(max);
624 posZY->SetMinimum(min);
625 posZY->SetMaximum(max);
627 TCanvas* canvas = new TCanvas("CompareTrack2Particle2D", "CompareTrack2Particle2D", 1200, 400);
628 canvas->Divide(3, 1);
642 canvas->SaveAs("CompareTrack2Particle2D.gif");
643 canvas->SaveAs("CompareTrack2Particle2D.eps");
646 void Track2Particle3D()
648 // get left margin proper
650 TFile* file = TFile::Open("correction_map.root");
652 TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
654 corr->SetTitle("Correction Factor");
655 SetRanges(corr->GetZaxis());
659 TCanvas* canvas = new TCanvas("Track2Particle3D", "Track2Particle3D", 500, 500);
660 canvas->SetTheta(29.428);
661 canvas->SetPhi(16.5726);
665 canvas->SaveAs("Track2Particle3D.gif");
666 canvas->SaveAs("Track2Particle3D.eps");
669 void Track2Particle3DAll()
671 TFile* file = TFile::Open("correction_map.root");
673 TH3* gene = dynamic_cast<TH3*> (file->Get("dndeta_correction/gene_nTrackToNPart"));
674 TH3* meas = dynamic_cast<TH3*> (file->Get("dndeta_correction/meas_nTrackToNPart"));
675 TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
677 gene->SetTitle("Generated Particles");
678 meas->SetTitle("Measured Tracks");
679 corr->SetTitle("Correction Factor");
685 TCanvas* canvas = new TCanvas("Track2Particle3DAll", "Track2Particle3DAll", 1200, 400);
686 canvas->Divide(3, 1);
698 canvas->SaveAs("Track2Particle3DAll.gif");
699 canvas->SaveAs("Track2Particle3DAll.eps");
702 void drawPlots(Int_t max)