Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
plot_compare_hists.C
Go to the documentation of this file.
2 {
3 // read output of Read_bcal_hadronic_eff2 root files (in folder root) with efficiency histograms from data and MC and plot on same plot.
4 //
5 
6 #include <TRandom.h>
7 
8 gROOT->Reset();
9 //TTree *Bfield = (TTree *) gROOT->FindObject("Bfield");
10 gStyle->SetPalette(1,0);
11 gStyle->SetOptStat(kFALSE);
12 // gStyle->SetOptStat(11111111);
13 gStyle->SetPadRightMargin(0.15);
14 gStyle->SetPadLeftMargin(0.15);
15 gStyle->SetPadBottomMargin(0.15);
16 //
17 
18  char string[256];
19 
20  Int_t const nlayers=4;
21 
22  Int_t coinc_cut = 3;
23  // TString filerun = "011529";
24  // TString filerun = "011405";
25  // TString prefix = "MC08392Beam";
26  TString filerun = "030450";
27  TString prefix = "MC01Beam";
28  TString titname = "Run "+filerun+" "+prefix;
29 
30  TFile *datahist[nlayers];
31  TFile *MChist[nlayers];
32  TString filename;
33 
34 
35  TH1F *h1_eff_up[nlayers];
36  TH1F *h1_eff_down[nlayers];
37  TH1F *h1_eff_mom_up[nlayers];
38  TH1F *h1_eff_mom_down[nlayers];
39  TH1F *h1_eff_z_up[nlayers];
40  TH1F *h1_eff_z_down[nlayers];
41 
42  TH1F *h1_MC_eff_up[nlayers];
43  TH1F *h1_MC_eff_down[nlayers];
44  TH1F *h1_MC_eff_mom_up[nlayers];
45  TH1F *h1_MC_eff_mom_down[nlayers];
46  TH1F *h1_MC_eff_z_up[nlayers];
47  TH1F *h1_MC_eff_z_down[nlayers];
48 
49 
50  for (Int_t j=0; j<nlayers;j++) {
51  filename = "R"+filerun+"_layer"+TString::Itoa(j+1,10)+"_cut"+TString::Itoa(coinc_cut,10);
52 
53  // open input histogram files
54 
55  TString datahist_name = "root/"+filename+"_out.root";
56  datahist[j] = new TFile(datahist_name,"read");
57 
58  filename = "R"+prefix+"_"+filerun+"_layer"+TString::Itoa(j+1,10)+"_cut"+TString::Itoa(coinc_cut,10);
59  TString MChist_name = "root/"+filename+"_out.root";
60  MChist[j] = new TFile(MChist_name,"read");
61 
62  h1_eff_up[j] = (TH1F*)datahist[j]->Get("h1_eff_up");
63  h1_eff_down[j] = (TH1F*)datahist[j]->Get("h1_eff_down");
64  h1_eff_mom_up[j] = (TH1F*)datahist[j]->Get("h1_eff_mom_up");
65  h1_eff_mom_down[j] = (TH1F*)datahist[j]->Get("h1_eff_mom_down");
66  h1_eff_z_up[j] = (TH1F*)datahist[j]->Get("h1_eff_z_up");
67  h1_eff_z_down[j] = (TH1F*)datahist[j]->Get("h1_eff_z_down");
68 
69  h1_MC_eff_up[j] = (TH1F*)MChist[j]->Get("h1_eff_up");
70  h1_MC_eff_down[j] = (TH1F*)MChist[j]->Get("h1_eff_down");
71  h1_MC_eff_mom_up[j] = (TH1F*)MChist[j]->Get("h1_eff_mom_up");
72  h1_MC_eff_mom_down[j] = (TH1F*)MChist[j]->Get("h1_eff_mom_down");
73  h1_MC_eff_z_up[j] = (TH1F*)MChist[j]->Get("h1_eff_z_up");
74  h1_MC_eff_z_down[j] = (TH1F*)MChist[j]->Get("h1_eff_z_down");
75  }
76 
77 
78  TCanvas *c0 = new TCanvas("c0", "c0",200,10,1000,700);
79  gPad->Divide(2,2);
80 
81  TLegend *leg[nlayers];
82  for (Int_t j=0; j<nlayers;j++) {
83  c0->cd(j+1);
84  h1_eff_up[j]->SetTitle(titname);
85  // h1_eff_up[j]->GetXaxis()->SetRangeUser(xmin,xmax);
86  h1_eff_up[j]->GetYaxis()->SetRangeUser(0.5,1);
87  h1_eff_up[j]->GetXaxis()->SetTitleSize(0.05);
88  h1_eff_up[j]->GetYaxis()->SetTitleSize(0.05);
89  h1_eff_up[j]->GetYaxis()->SetTitle("Up Efficiency");
90  h1_eff_up[j]->GetXaxis()->SetTitle("Up Channel Number");
91  h1_eff_up[j]->SetMarkerColor(2);
92  h1_eff_up[j]->SetMarkerStyle(20);
93  h1_eff_up[j]->SetMarkerSize(0.3);
94  h1_eff_up[j]->Draw("");
95 
96  h1_MC_eff_up[j]->Draw("same");
97  h1_MC_eff_up[j]->SetMarkerColor(4);
98  h1_MC_eff_up[j]->SetMarkerStyle(21);
99  h1_MC_eff_up[j]->SetMarkerSize(0.3);
100 
101  leg[j] = new TLegend(0.5,0.5,0.8,0.7);
102  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
103  leg[j]->AddEntry(h1_eff_up[j],legend,"p");
104  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
105  leg[j]->AddEntry(h1_MC_eff_up[j],legend,"p");
106  leg[j]->Draw();
107  }
108 
109 
110  TCanvas *c1 = new TCanvas("c1", "c1",200,10,1000,700);
111  gPad->Divide(2,2);
112 
113  for (Int_t j=0; j<nlayers;j++) {
114  c1->cd(j+1);
115  h1_eff_down[j]->SetTitle(titname);
116  // h1_eff_down[j]->GetXaxis()->SetRangeUser(xmin,xmax);
117  h1_eff_down[j]->GetYaxis()->SetRangeUser(0.5,1);
118  h1_eff_down[j]->GetXaxis()->SetTitleSize(0.05);
119  h1_eff_down[j]->GetYaxis()->SetTitleSize(0.05);
120  h1_eff_down[j]->GetYaxis()->SetTitle("Down Efficiency");
121  h1_eff_down[j]->GetXaxis()->SetTitle("Down Channel Number");
122  h1_eff_down[j]->SetMarkerColor(2);
123  h1_eff_down[j]->SetMarkerStyle(20);
124  h1_eff_down[j]->SetMarkerSize(0.3);
125  h1_eff_down[j]->Draw("");
126 
127  h1_MC_eff_down[j]->Draw("same");
128  h1_MC_eff_down[j]->SetMarkerColor(4);
129  h1_MC_eff_down[j]->SetMarkerStyle(21);
130  h1_MC_eff_down[j]->SetMarkerSize(0.3);
131 
132  leg[j] = new TLegend(0.5,0.5,0.8,0.7);
133  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
134  leg[j]->AddEntry(h1_eff_down[j],legend,"p");
135  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
136  leg[j]->AddEntry(h1_MC_eff_down[j],legend,"p");
137  leg[j]->Draw();
138  }
139 
140  TCanvas *c2 = new TCanvas("c2", "c2",200,10,1000,700);
141  gPad->Divide(2,2);
142 
143  for (Int_t j=0; j<nlayers;j++) {
144  c2->cd(j+1);
145  h1_eff_z_up[j]->SetTitle(titname);
146  // h1_eff_z_up[j]->GetXaxis()->SetRangeUser(xmin,xmax);
147  h1_eff_z_up[j]->GetYaxis()->SetRangeUser(0.5,1);
148  if (j+1 == 4) h1_eff_z_up[j]->GetYaxis()->SetRangeUser(0,1);
149  h1_eff_z_up[j]->GetXaxis()->SetTitleSize(0.05);
150  h1_eff_z_up[j]->GetYaxis()->SetTitleSize(0.05);
151  h1_eff_z_up[j]->GetYaxis()->SetTitle("Up Efficiency");
152  h1_eff_z_up[j]->GetXaxis()->SetTitle("z (cm)");
153  h1_eff_z_up[j]->SetMarkerColor(2);
154  h1_eff_z_up[j]->SetMarkerStyle(20);
155  h1_eff_z_up[j]->SetMarkerSize(0.3);
156  h1_eff_z_up[j]->Draw("");
157 
158  h1_MC_eff_z_up[j]->Draw("same");
159  h1_MC_eff_z_up[j]->SetMarkerColor(4);
160  h1_MC_eff_z_up[j]->SetMarkerStyle(21);
161  h1_MC_eff_z_up[j]->SetMarkerSize(0.3);
162 
163  if (j+1 == 4) {
164  leg[j] = new TLegend(0.3,0.2,0.6,0.4);
165  }
166  else {
167  leg[j] = new TLegend(0.3,0.5,0.6,0.7);
168  }
169  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
170  leg[j]->AddEntry(h1_eff_z_up[j],legend,"p");
171  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
172  leg[j]->AddEntry(h1_MC_eff_z_up[j],legend,"p");
173  leg[j]->Draw();
174  }
175 
176 
177  TCanvas *c3 = new TCanvas("c3", "c3",200,10,1000,700);
178  gPad->Divide(2,2);
179 
180  for (Int_t j=0; j<nlayers;j++) {
181  c3->cd(j+1);
182  h1_eff_z_down[j]->SetTitle(titname);
183  // h1_eff_z_down[j]->GetXaxis()->SetRangeUser(xmin,xmax);
184  h1_eff_z_down[j]->GetYaxis()->SetRangeUser(0.5,1);
185  if (j+1 == 4) h1_eff_z_down[j]->GetYaxis()->SetRangeUser(0,1);
186  h1_eff_z_down[j]->GetXaxis()->SetTitleSize(0.05);
187  h1_eff_z_down[j]->GetYaxis()->SetTitleSize(0.05);
188  h1_eff_z_down[j]->GetYaxis()->SetTitle("Down Efficiency");
189  h1_eff_z_down[j]->GetXaxis()->SetTitle("z (cm)");
190  h1_eff_z_down[j]->SetMarkerColor(2);
191  h1_eff_z_down[j]->SetMarkerStyle(20);
192  h1_eff_z_down[j]->SetMarkerSize(0.3);
193  h1_eff_z_down[j]->Draw("");
194 
195  h1_MC_eff_z_down[j]->Draw("same");
196  h1_MC_eff_z_down[j]->SetMarkerColor(4);
197  h1_MC_eff_z_down[j]->SetMarkerStyle(21);
198  h1_MC_eff_z_down[j]->SetMarkerSize(0.3);
199 
200 
201  if (j+1 == 4) {
202  leg[j] = new TLegend(0.3,0.2,0.6,0.4);
203  }
204  else {
205  leg[j] = new TLegend(0.3,0.5,0.6,0.7);
206  }
207  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
208  leg[j]->AddEntry(h1_eff_z_down[j],legend,"p");
209  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
210  leg[j]->AddEntry(h1_MC_eff_z_down[j],legend,"p");
211  leg[j]->Draw();
212  }
213 
214  TCanvas *c4 = new TCanvas("c4", "c4",200,10,1000,700);
215  gPad->Divide(2,2);
216 
217  for (Int_t j=0; j<nlayers;j++) {
218  c4->cd(j+1);
219  h1_eff_mom_up[j]->SetTitle(titname);
220  // h1_eff_mom_up[j]->GetXaxis()->SetRangeUser(xmin,xmax);
221  h1_eff_mom_up[j]->GetYaxis()->SetRangeUser(0.5,1);
222  if (j+1 == 4) h1_eff_mom_up[j]->GetYaxis()->SetRangeUser(0,1);
223  h1_eff_mom_up[j]->GetXaxis()->SetTitleSize(0.05);
224  h1_eff_mom_up[j]->GetYaxis()->SetTitleSize(0.05);
225  h1_eff_mom_up[j]->GetYaxis()->SetTitle("Up Efficiency");
226  h1_eff_mom_up[j]->GetXaxis()->SetTitle("Momentum (GeV)");
227  h1_eff_mom_up[j]->SetMarkerColor(2);
228  h1_eff_mom_up[j]->SetMarkerStyle(20);
229  h1_eff_mom_up[j]->SetMarkerSize(0.3);
230  h1_eff_mom_up[j]->Draw("");
231 
232  h1_MC_eff_mom_up[j]->Draw("same");
233  h1_MC_eff_mom_up[j]->SetMarkerColor(4);
234  h1_MC_eff_mom_up[j]->SetMarkerStyle(21);
235  h1_MC_eff_mom_up[j]->SetMarkerSize(0.3);
236 
237 
238  if (j+1 == 4) {
239  leg[j] = new TLegend(0.3,0.2,0.6,0.4);
240  }
241  else {
242  leg[j] = new TLegend(0.3,0.5,0.6,0.7);
243  }
244  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
245  leg[j]->AddEntry(h1_eff_mom_up[j],legend,"p");
246  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
247  leg[j]->AddEntry(h1_MC_eff_mom_up[j],legend,"p");
248  leg[j]->Draw();
249  }
250 
251 
252  TCanvas *c5 = new TCanvas("c5", "c5",200,10,1000,700);
253  gPad->Divide(2,2);
254 
255  for (Int_t j=0; j<nlayers;j++) {
256  c5->cd(j+1);
257  h1_eff_mom_down[j]->SetTitle(titname);
258  // h1_eff_mom_down[j]->GetXaxis()->SetRangeUser(xmin,xmax);
259  h1_eff_mom_down[j]->GetYaxis()->SetRangeUser(0.5,1);
260  if (j+1 == 4) h1_eff_mom_down[j]->GetYaxis()->SetRangeUser(0,1);
261  h1_eff_mom_down[j]->GetXaxis()->SetTitleSize(0.05);
262  h1_eff_mom_down[j]->GetYaxis()->SetTitleSize(0.05);
263  h1_eff_mom_down[j]->GetYaxis()->SetTitle("Down Efficiency");
264  h1_eff_mom_down[j]->GetXaxis()->SetTitle("Momentum (GeV)");
265  h1_eff_mom_down[j]->SetMarkerColor(2);
266  h1_eff_mom_down[j]->SetMarkerStyle(20);
267  h1_eff_mom_down[j]->SetMarkerSize(0.3);
268  h1_eff_mom_down[j]->Draw("");
269 
270  h1_MC_eff_mom_down[j]->Draw("same");
271  h1_MC_eff_mom_down[j]->SetMarkerColor(4);
272  h1_MC_eff_mom_down[j]->SetMarkerStyle(21);
273  h1_MC_eff_mom_down[j]->SetMarkerSize(0.3);
274 
275 
276  if (j+1 == 4) {
277  leg[j] = new TLegend(0.3,0.2,0.6,0.4);
278  }
279  else {
280  leg[j] = new TLegend(0.3,0.5,0.6,0.7);
281  }
282  TString legend = "Layer "+TString::Itoa(j+1,10)+": Data";
283  leg[j]->AddEntry(h1_eff_mom_down[j],legend,"p");
284  legend = "Layer "+TString::Itoa(j+1,10)+": MC";
285  leg[j]->AddEntry(h1_MC_eff_z_down[j],legend,"p");
286  leg[j]->Draw();
287  }
288 
289  TCanvas *c6 = new TCanvas("c6", "c6",200,10,1000,500);
290  gPad->Divide(2,1);
291 
292  c6->cd(1);
293 
294  h1_eff_up[1]->SetTitle("");
295  // h1_eff_up[1]->GetXaxis()->SetRangeUser(xmin,xmax);
296  h1_eff_up[1]->GetYaxis()->SetRangeUser(0.8,1);
297  h1_eff_up[1]->GetXaxis()->SetTitleSize(0.05);
298  h1_eff_up[1]->GetYaxis()->SetTitleSize(0.05);
299  h1_eff_up[1]->GetYaxis()->SetTitleOffset(1.5);
300  h1_eff_up[1]->GetYaxis()->SetTitle("Layer Efficiency");
301  h1_eff_up[1]->GetXaxis()->SetTitle("Cell Number");
302  h1_eff_up[1]->SetMarkerColor(1);
303  h1_eff_up[1]->SetLineColor(1);
304  h1_eff_up[1]->SetMarkerStyle(24);
305  h1_eff_up[1]->SetMarkerSize(0.3);
306  h1_eff_up[1]->Draw("");
307 
308  h1_MC_eff_up[1]->Draw("same");
309  h1_MC_eff_up[1]->SetMarkerColor(2);
310  h1_MC_eff_up[1]->SetLineColor(2);
311  h1_MC_eff_up[1]->SetMarkerStyle(20);
312  h1_MC_eff_up[1]->SetMarkerSize(0.3);
313 
314 
315  // dummies to enlarge legend
316  TH1F *dummy1 = new TH1F("dummy1","dummy1",100,0,100);
317  dummy1->SetMarkerColor(1);
318  dummy1->SetMarkerStyle(24);
319  dummy1->SetMarkerSize(0.7);
320 
321  TH1F *dummy2 = new TH1F("dummy2","dummy2",100,0,100);
322  dummy2->SetMarkerColor(2);
323  dummy2->SetMarkerStyle(20);
324  dummy2->SetMarkerSize(0.7);
325 
326  TString legend;
327  legend = "Layer 2: Data";
328  TLegend *leg1 = new TLegend(0.3,0.2,0.6,0.4);
329  leg1->AddEntry(dummy1,legend,"p");
330  legend = "Layer 2: MC";
331  leg1->AddEntry(dummy2,legend,"p");
332  leg1->Draw();
333 
334  TLatex *t1 = new TLatex(0.25,0.7,"a)");
335  t1->SetNDC();
336  t1->Draw();
337 
338  c6->cd(2);
339 
340  h1_eff_z_up[1]->SetTitle("");
341  // h1_eff_z_up[1]->GetXaxis()->SetRangeUser(xmin,xmax);
342  h1_eff_z_up[1]->GetYaxis()->SetRangeUser(0.8,1);
343  h1_eff_z_up[1]->GetXaxis()->SetTitleSize(0.05);
344  h1_eff_z_up[1]->GetYaxis()->SetTitleSize(0.05);
345  h1_eff_z_up[1]->GetYaxis()->SetTitleOffset(1.5);
346  h1_eff_z_up[1]->GetYaxis()->SetTitle("Layer Efficiency");
347  h1_eff_z_up[1]->GetXaxis()->SetTitle("Position (cm)");
348  h1_eff_z_up[1]->SetMarkerColor(1);
349  h1_eff_z_up[1]->SetLineColor(1);
350  h1_eff_z_up[1]->SetMarkerStyle(24);
351  h1_eff_z_up[1]->SetMarkerSize(0.3);
352  h1_eff_z_up[1]->Draw("");
353 
354  h1_MC_eff_z_up[1]->Draw("same");
355  h1_MC_eff_z_up[1]->SetMarkerColor(2);
356  h1_MC_eff_z_up[1]->SetLineColor(2);
357  h1_MC_eff_z_up[1]->SetMarkerStyle(20);
358  h1_MC_eff_z_up[1]->SetMarkerSize(0.3);
359 
360  legend = "Layer 2: Data";
361  TLegend *leg2 = new TLegend(0.3,0.2,0.6,0.4);
362  leg2->AddEntry(dummy1,legend,"p");
363  legend = "Layer 2: MC";
364  leg2->AddEntry(dummy2,legend,"p");
365  leg2->Draw();
366 
367  t1->DrawLatex(0.25,0.7,"b)");
368 
369  c0->SaveAs("plot_compare_hists_"+prefix+".pdf(");
370  c1->SaveAs("plot_compare_hists_"+prefix+".pdf");
371  c2->SaveAs("plot_compare_hists_"+prefix+".pdf");
372  c3->SaveAs("plot_compare_hists_"+prefix+".pdf");
373  c4->SaveAs("plot_compare_hists_"+prefix+".pdf");
374  c5->SaveAs("plot_compare_hists_"+prefix+".pdf");
375  c6->SaveAs("plot_compare_hists_"+prefix+".pdf)");
376 
377  c6->SaveAs("NIM_hadronic_eff"+prefix+".C");
378  c6->SaveAs("NIM_hadronic_eff"+prefix+".pdf");
379 
380  // datahist[j]->Close();
381  // MChist[j]->Close();
382 
383 }
384 
Double_t c0[2][NMODULES]
Definition: tw_corr.C:67
TString filerun
TString filename
TH1F * h1_eff_z_up
void plot_compare_hists(void)
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
TLegend * leg
Definition: DIRC_digihit.C:58
Double_t c2[2][NMODULES]
Definition: tw_corr.C:69
TLatex * t1
Int_t coinc_cut
TH1F * h1_eff_z_down
TH1F * h1_eff_mom_up
TH1F * h1_eff_down
TH1F * h1_eff_up
TCanvas * c4
TCanvas * c3
TH1F * h1_eff_mom_down