c938d27aa2c7ebe57319180d22dc4374b0f0a9f1
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / drawPlots.C
1 /* $Id$ */
2
3 Int_t gMax = 5;
4
5 void drawPlots()
6 {
7   drawPlots(5);
8   drawPlots(2);
9 }
10
11 void drawPlots(Int_t max)
12 {
13   gMax = max;
14
15   ptCutoff();
16   TriggerBias();
17   VtxRecon();
18   Track2Particle2D();
19   Track2Particle3D();
20   ptSpectrum();
21   dNdEta();
22 }
23
24 void dNdEta()
25 {
26   TFile* file = TFile::Open("analysis_esd.root");
27   TH1* histESD = file->Get("dndeta/dndeta_dNdEta_corrected_2");
28   TH1* histESDNoPt = file->Get("dndeta/dndeta_dNdEta_2");
29   TH1* histESDMB = file->Get("dndeta_mb/dndeta_mb_dNdEta_corrected_2");
30   TH1* histESDMBVtx = file->Get("dndeta_mbvtx/dndeta_mbvtx_dNdEta_corrected_2");
31
32   TCanvas* canvas = new TCanvas("dNdEta1", "dNdEta1", 500, 500);
33
34   Prepare1DPlot(histESD);
35   Prepare1DPlot(histESDNoPt);
36   Prepare1DPlot(histESDMB);
37   Prepare1DPlot(histESDMBVtx);
38
39   histESD->SetLineColor(kRed);
40   histESDMB->SetLineColor(kBlue);
41   histESDMBVtx->SetLineColor(103);
42
43   TH2F* dummy = new TH2F("dummy", "", 100, -1.5, 1.5, 100, 0, histESDMBVtx->GetMaximum() * 1.1);
44   dummy->SetStats(kFALSE);
45   dummy->SetXTitle("#eta");
46   dummy->SetYTitle("dN/d#eta");
47
48   histESDMBVtx->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
49   histESDMB->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
50   histESD->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
51   histESDNoPt->GetXaxis()->SetRangeUser(-0.7999, 0.7999);
52
53   dummy->Draw();
54   histESDMBVtx->Draw("SAME");
55   histESDMB->Draw("SAME");
56   histESD->Draw("SAME");
57
58   canvas->SaveAs("dNdEta1.gif");
59
60   TFile* file2 = TFile::Open("analysis_mc.root");
61   TH1* histMC = file2->Get("dndeta/dndeta_dNdEta_corrected_2")->Clone("cloned");
62
63   gSystem->Load("libPWG0base");
64   fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
65   fdNdEtaAnalysis->LoadHistograms();
66   fdNdEtaAnalysis->Finish(0, 0.3);
67   TH1* histMCPtCut = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
68
69   TCanvas* canvas2 = new TCanvas("dNdEta2", "dNdEta2", 500, 500);
70
71   Prepare1DPlot(histMC);
72   Prepare1DPlot(histMCPtCut);
73
74   histMC->SetLineColor(kBlue);
75   histMCPtCut->SetLineColor(104);
76   histESDNoPt->SetLineColor(102);
77
78   TH2* dummy2 = dummy->Clone("dummy2");
79   dummy2->GetYaxis()->SetRangeUser(0, histESD->GetMaximum() * 1.1);
80
81   dummy2->Draw();
82   histMC->Draw("SAME");
83 //  histMC->Draw();
84   histESD->Draw("SAME");
85   histESDNoPt->Draw("SAME");
86   histMCPtCut->Draw("SAME");
87
88   canvas2->SaveAs("dNdEta2.gif");
89 }
90
91 void ptSpectrum()
92 {
93   TFile* file = TFile::Open("analysis_esd.root");
94   TH1* histESD = file->Get("dndeta/dndeta_pt");
95
96   TFile* file2 = TFile::Open("analysis_mc.root");
97   TH1* histMC = file2->Get("dndeta/dndeta_pt");
98
99   TCanvas* canvas = new TCanvas("ptSpectrum", "ptSpectrum", 500, 500);
100   InitPad();
101   gPad->SetLogy();
102
103   Prepare1DPlot(histMC);
104   Prepare1DPlot(histESD);
105
106   histESD->SetTitle("");
107   histESD->GetXaxis()->SetTitle("p_{T} [GeV/c]");
108   histESD->GetYaxis()->SetTitle("#frac{dN}{d#eta dp_{T}} [c/GeV]");
109
110   histMC->SetLineColor(kBlue);
111   histESD->SetLineColor(kRed);
112
113   histESD->GetYaxis()->SetTitleOffset(1.5);
114   histESD->GetXaxis()->SetRangeUser(0, 4.9999);
115
116   histESD->SetMaximum(TMath::Max(histESD->GetMaximum(), histMC->GetMaximum()) * 2);
117
118   histESD->Draw();
119   histMC->Draw("SAME");
120
121   canvas->SaveAs("ptSpectrum.gif");
122 }
123
124 void ptCutoff()
125 {
126   gSystem->Load("libPWG0base");
127
128   AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection();
129   dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
130
131   dNdEtaCorrection->GetMeasuredFraction(0.3, -1, kTRUE);
132
133   TH1* hist = dynamic_cast<TH1*> (gROOT->FindObject("gene_nTrackToNPart_pt"));
134
135   hist->GetXaxis()->SetRangeUser(0, 0.9999);
136   hist->SetMinimum(0);
137
138   hist->SetTitle("Generated Particles");
139   Prepare1DPlot(hist);
140
141   TCanvas* canvas = new TCanvas("ptCutoff", "ptCutoff", 500, 500);
142   hist->Draw();
143
144   TLine* line = new TLine(0.3, 0 - hist->GetMaximum() * 0, 0.3, hist->GetMaximum() * 1.1);
145   line->SetLineWidth(3);
146   line->SetLineColor(kRed);
147   line->Draw();
148
149   canvas->SaveAs("ptCutoff.gif");
150 }
151
152 void TriggerBias()
153 {
154   TFile* file = TFile::Open("correction_map.root");
155
156   TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_trigger"));
157
158   Prepare2DPlot(corr);
159   corr->SetTitle("Trigger bias correction");
160
161   TCanvas* canvas = new TCanvas("TriggerBias", "TriggerBias", 500, 500);
162   InitPadCOLZ();
163   corr->DrawCopy("COLZ");
164
165   canvas->SaveAs(Form("TriggerBias_%d.gif", gMax));
166
167   corr->GetYaxis()->SetRangeUser(0, 5);
168
169   canvas = new TCanvas("TriggerBiasZoom", "TriggerBiasZoom", 500, 500);
170   InitPadCOLZ();
171   corr->DrawCopy("COLZ");
172
173   canvas->SaveAs(Form("TriggerBiasZoom_%d.gif", gMax));
174 }
175
176 void VtxRecon()
177 {
178   TFile* file = TFile::Open("correction_map.root");
179
180   TH2* corr = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_vtxReco"));
181
182   Prepare2DPlot(corr);
183   corr->SetTitle("Vertex reconstruction correction");
184
185   TCanvas* canvas = new TCanvas("VtxRecon", "VtxRecon", 500, 500);
186   InitPadCOLZ();
187   corr->DrawCopy("COLZ");
188
189   canvas->SaveAs(Form("VtxRecon_%d.gif", gMax));
190
191
192   corr->GetYaxis()->SetRangeUser(0, 5);
193
194   TCanvas* canvas = new TCanvas("VtxReconZoom", "VtxReconZoom", 500, 500);
195   InitPadCOLZ();
196   corr->DrawCopy("COLZ");
197
198   canvas->SaveAs(Form("VtxReconZoom_%d.gif", gMax));
199 }
200
201 void Track2Particle2D()
202 {
203   gSystem->Load("libPWG0base");
204
205   TFile* file = TFile::Open("correction_map.root");
206   AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection();
207   dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
208
209   TH3* gene = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetGeneratedHistogram();
210   TH3* meas = dNdEtaCorrection->GetTrack2ParticleCorrection()->GetMeasuredHistogram();
211
212   gene->GetZaxis()->SetRangeUser(0.3, 10);
213   meas->GetZaxis()->SetRangeUser(0.3, 10);
214   AliPWG0Helper::CreateDividedProjections(gene, meas, "yx");
215   gene->GetZaxis()->UnZoom();
216   meas->GetZaxis()->UnZoom();
217
218   gene->GetYaxis()->SetRangeUser(-0.8, 0.8);
219   meas->GetYaxis()->SetRangeUser(-0.8, 0.8);
220   AliPWG0Helper::CreateDividedProjections(gene, meas, "zx");
221   gene->GetYaxis()->UnZoom();
222   meas->GetYaxis()->UnZoom();
223
224   gene->GetXaxis()->SetRangeUser(-10, 10);
225   meas->GetXaxis()->SetRangeUser(-10, 10);
226   AliPWG0Helper::CreateDividedProjections(gene, meas, "zy");
227   gene->GetXaxis()->UnZoom();
228   meas->GetXaxis()->UnZoom();
229
230   TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
231   TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
232   TH2* corrZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));
233
234   /* this reads them from the file
235   TH2* corrYX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
236   TH2* corrZX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
237   TH2* corrZY = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));*/
238
239   Prepare2DPlot(corrYX);
240   Prepare2DPlot(corrZX);
241   Prepare2DPlot(corrZY);
242
243   const char* title = "Track2Particle Correction";
244   corrYX->SetTitle(title);
245   corrZX->SetTitle(title);
246   corrZY->SetTitle(title);
247
248   TCanvas* canvas = new TCanvas("Track2Particle2D", "Track2Particle2D", 1200, 400);
249   canvas->Divide(3, 1);
250
251   canvas->cd(1);
252   InitPadCOLZ();
253   corrYX->Draw("COLZ");
254
255   canvas->cd(2);
256   InitPadCOLZ();
257   corrZX->Draw("COLZ");
258
259   canvas->cd(3);
260   InitPadCOLZ();
261   corrZY->Draw("COLZ");
262
263   canvas->SaveAs(Form("Track2Particle2D_%d.gif", gMax));
264 }
265
266 void Track2Particle3D()
267 {
268   // get left margin proper
269
270   TFile* file = TFile::Open("correction_map.root");
271
272   TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
273
274   corr->SetTitle("Correction Factor");
275   SetRanges(corr->GetZaxis());
276
277   Prepare3DPlot(corr);
278
279   TCanvas* canvas = new TCanvas("Track2Particle3D", "Track2Particle3D", 500, 500);
280   canvas->SetTheta(29.428);
281   canvas->SetPhi(16.5726);
282
283   corr->Draw();
284
285   canvas->SaveAs("Track2Particle3D.gif");
286 }
287
288 void Track2Particle3DAll()
289 {
290   TFile* file = TFile::Open("correction_map.root");
291
292   TH3* gene = dynamic_cast<TH3*> (file->Get("dndeta_correction/gene_nTrackToNPart"));
293   TH3* meas = dynamic_cast<TH3*> (file->Get("dndeta_correction/meas_nTrackToNPart"));
294   TH3* corr = dynamic_cast<TH3*> (file->Get("dndeta_correction/corr_nTrackToNPart"));
295
296   gene->SetTitle("Generated Particles");
297   meas->SetTitle("Measured Tracks");
298   corr->SetTitle("Correction Factor");
299
300   Prepare3DPlot(gene);
301   Prepare3DPlot(meas);
302   Prepare3DPlot(corr);
303
304   TCanvas* canvas = new TCanvas("Track2Particle3DAll", "Track2Particle3DAll", 1200, 400);
305   canvas->Divide(3, 1);
306
307   canvas->cd(1);
308   InitPad();
309   gene->Draw();
310
311   canvas->cd(2);
312   meas->Draw();
313
314   canvas->cd(3);
315   corr->Draw();
316
317   canvas->SaveAs("Track2Particle3DAll.gif");
318 }
319
320 void SetRanges(TH1* hist)
321 {
322   SetRanges(hist->GetXaxis());
323   SetRanges(hist->GetYaxis());
324   SetRanges(hist->GetZaxis());
325 }
326
327 void SetRanges(TAxis* axis)
328 {
329   if (strcmp(axis->GetTitle(), "#eta") == 0)
330     axis->SetRangeUser(-1.7999, 1.7999);
331   if (strcmp(axis->GetTitle(), "p_{T} [GeV/c]") == 0)
332     axis->SetRangeUser(0, 9.9999);
333   if (strcmp(axis->GetTitle(), "vtx z [cm]") == 0)
334     axis->SetRangeUser(-15, 14.9999);
335   if (strcmp(axis->GetTitle(), "Ntracks") == 0)
336     axis->SetRangeUser(0, 99.9999);
337 }
338
339 void Prepare3DPlot(TH3* hist)
340 {
341   hist->GetXaxis()->SetTitleOffset(1.5);
342   hist->GetYaxis()->SetTitleOffset(1.5);
343   hist->GetZaxis()->SetTitleOffset(1.5);
344
345   hist->SetStats(kFALSE);
346 }
347
348 void Prepare2DPlot(TH2* hist)
349 {
350   hist->SetStats(kFALSE);
351   hist->GetYaxis()->SetTitleOffset(1.4);
352
353   hist->SetMinimum(0);
354   hist->SetMaximum(gMax);
355
356   SetRanges(hist);
357 }
358
359 void Prepare1DPlot(TH1* hist)
360 {
361   hist->SetLineWidth(2);
362   hist->SetStats(kFALSE);
363 }
364
365 void InitPad()
366 {
367   gPad->Range(0, 0, 1, 1);
368   gPad->SetLeftMargin(0.15);
369   //gPad->SetRightMargin(0.05);
370   //gPad->SetTopMargin(0.13);
371   //gPad->SetBottomMargin(0.1);
372
373   //gPad->SetGridx();
374   //gPad->SetGridy();
375 }
376
377 void InitPadCOLZ()
378 {
379   gPad->Range(0, 0, 1, 1);
380   gPad->SetRightMargin(0.15);
381   gPad->SetLeftMargin(0.12);
382
383   gPad->SetGridx();
384   gPad->SetGridy();
385 }