Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CDC_Efficiency.C
Go to the documentation of this file.
1 
2 {
3 
4  //gDirectory->cd();
5  //TDirectory *gDirectory = TFile::Open("hd_root.root");
6  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("CDC_Efficiency");
7  if(!dir) return;
8  dir->cd();
9 
10  gDirectory->cd("CDC_View");
11  TCanvas *cEfficiency = new TCanvas("cEfficiency", "cEfficiency", 900, 800);
12  // Draw axes
13  TH2D *axes = (TH2D *)gDirectory->Get("axes");
14  if(!axes) axes = new TH2D("axes", "CDC Efficiency", 100, -65.0, 65.0, 100, -65.0, 65.0);
15 
16  Float_t minScale = 0.5; Float_t maxScale = 1.0;
17  axes->SetStats(0);
18  axes->Fill(100,100); // without this, the color ramp is not drawn
19  axes->GetZaxis()->SetRangeUser(minScale, maxScale);
20  axes->Draw("colz");
21 
22  for(unsigned int iring=1; iring<=28; iring++){
23  char hname[256];
24  sprintf(hname, "cdc_measured_ring[%d]", iring);
25  TH1 *h = (TH1*)(gDirectory->Get(hname));
26  char hname2[256];
27  sprintf(hname2, "cdc_expected_ring[%d]", iring);
28  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
29 
30  if(h && h2){
31  h->Divide(h2);
32  //sprintf(hname, "cdc_measured_ring[%d]", iring);
33  //TH1 *hh = (TH1*)h->Clone(hname);
34  //hh->Scale(1.0/Nevents);
35  h->SetMinimum(minScale);
36  h->SetMaximum(maxScale);
37  h->SetStats(0);
38  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
39  }
40  }
41  cEfficiency->SaveAs("cEfficiency.png");
42 
43  TCanvas *cEfficiencyDOCA0 = new TCanvas("cEfficiencyDOCA0", "cEfficiencyDOCA0", 900, 800);
44  // Draw axes
45  TH2D *axesDOCA0 = (TH2D *)gDirectory->Get("axesDOCA0");
46  if(!axesDOCA0) axesDOCA0 = new TH2D("axesDOCA0", "CDC Efficiency for DOCA #in [0.0, 0.1 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
47 
48  minScale = 0.5; maxScale = 1.0;
49  axesDOCA0->SetStats(0);
50  axesDOCA0->Fill(100,100); // without this, the color ramp is not drawn
51  axesDOCA0->GetZaxis()->SetRangeUser(minScale, maxScale);
52  axesDOCA0->Draw("colz");
53 
54  for(unsigned int iring=1; iring<=28; iring++){
55  char hname[256];
56  sprintf(hname, "cdc_measured_ring[%d]DOCA0", iring);
57  TH1 *h = (TH1*)(gDirectory->Get(hname));
58  char hname2[256];
59  sprintf(hname2, "cdc_expected_ring[%d]DOCA0", iring);
60  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
61 
62  if(h && h2){
63  h->Divide(h2);
64  //sprintf(hname, "cdc_measured_ring[%d]", iring);
65  //TH1 *hh = (TH1*)h->Clone(hname);
66  //hh->Scale(1.0/Nevents);
67  h->SetMinimum(minScale);
68  h->SetMaximum(maxScale);
69  h->SetStats(0);
70  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
71  }
72  }
73  cEfficiencyDOCA0->SaveAs("cEfficiencyDOCA0.png");
74 
75  TCanvas *cEfficiencyDOCA1 = new TCanvas("cEfficiencyDOCA1", "cEfficiencyDOCA1", 900, 800);
76  // Draw axes
77  TH2D *axesDOCA1 = (TH2D *)gDirectory->Get("axesDOCA1");
78  if(!axesDOCA1) axesDOCA1 = new TH2D("axesDOCA1", "CDC Efficiency for DOCA #in [0.1, 0.2 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
79 
80  minScale = 0.5; maxScale = 1.0;
81  axesDOCA1->SetStats(0);
82  axesDOCA1->Fill(100,100); // without this, the color ramp is not drawn
83  axesDOCA1->GetZaxis()->SetRangeUser(minScale, maxScale);
84  axesDOCA1->Draw("colz");
85 
86  for(unsigned int iring=1; iring<=28; iring++){
87  char hname[256];
88  sprintf(hname, "cdc_measured_ring[%d]DOCA1", iring);
89  TH1 *h = (TH1*)(gDirectory->Get(hname));
90  char hname2[256];
91  sprintf(hname2, "cdc_expected_ring[%d]DOCA1", iring);
92  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
93 
94  if(h && h2){
95  h->Divide(h2);
96  //sprintf(hname, "cdc_measured_ring[%d]", iring);
97  //TH1 *hh = (TH1*)h->Clone(hname);
98  //hh->Scale(1.0/Nevents);
99  h->SetMinimum(minScale);
100  h->SetMaximum(maxScale);
101  h->SetStats(0);
102  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
103  }
104  }
105  cEfficiencyDOCA1->SaveAs("cEfficiencyDOCA1.png");
106 
107  TCanvas *cEfficiencyDOCA2 = new TCanvas("cEfficiencyDOCA2", "cEfficiencyDOCA2", 900, 800);
108  // Draw axes
109  TH2D *axesDOCA2 = (TH2D *)gDirectory->Get("axesDOCA2");
110  if(!axesDOCA2) axesDOCA2 = new TH2D("axesDOCA2", "CDC Efficiency for DOCA #in [0.2, 0.3 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
111 
112  minScale = 0.5; maxScale = 1.0;
113  axesDOCA2->SetStats(0);
114  axesDOCA2->Fill(100,100); // without this, the color ramp is not drawn
115  axesDOCA2->GetZaxis()->SetRangeUser(minScale, maxScale);
116  axesDOCA2->Draw("colz");
117 
118  for(unsigned int iring=1; iring<=28; iring++){
119  char hname[256];
120  sprintf(hname, "cdc_measured_ring[%d]DOCA2", iring);
121  TH1 *h = (TH1*)(gDirectory->Get(hname));
122  char hname2[256];
123  sprintf(hname2, "cdc_expected_ring[%d]DOCA2", iring);
124  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
125 
126  if(h && h2){
127  h->Divide(h2);
128  //sprintf(hname, "cdc_measured_ring[%d]", iring);
129  //TH1 *hh = (TH1*)h->Clone(hname);
130  //hh->Scale(1.0/Nevents);
131  h->SetMinimum(minScale);
132  h->SetMaximum(maxScale);
133  h->SetStats(0);
134  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
135  }
136  }
137  cEfficiencyDOCA2->SaveAs("cEfficiencyDOCA2.png");
138 
139  TCanvas *cEfficiencyDOCA3 = new TCanvas("cEfficiencyDOCA3", "cEfficiencyDOCA3", 900, 800);
140  // Draw axes
141  TH2D *axesDOCA3 = (TH2D *)gDirectory->Get("axesDOCA3");
142  if(!axesDOCA3) axesDOCA3 = new TH2D("axesDOCA3", "CDC Efficiency for DOCA #in [0.3, 0.4 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
143 
144  minScale = 0.5; maxScale = 1.0;
145  axesDOCA3->SetStats(0);
146  axesDOCA3->Fill(100,100); // without this, the color ramp is not drawn
147  axesDOCA3->GetZaxis()->SetRangeUser(minScale, maxScale);
148  axesDOCA3->Draw("colz");
149 
150  for(unsigned int iring=1; iring<=28; iring++){
151  char hname[256];
152  sprintf(hname, "cdc_measured_ring[%d]DOCA3", iring);
153  TH1 *h = (TH1*)(gDirectory->Get(hname));
154  char hname2[256];
155  sprintf(hname2, "cdc_expected_ring[%d]DOCA3", iring);
156  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
157 
158  if(h && h2){
159  h->Divide(h2);
160  //sprintf(hname, "cdc_measured_ring[%d]", iring);
161  //TH1 *hh = (TH1*)h->Clone(hname);
162  //hh->Scale(1.0/Nevents);
163  h->SetMinimum(minScale);
164  h->SetMaximum(maxScale);
165  h->SetStats(0);
166  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
167  }
168  }
169  cEfficiencyDOCA3->SaveAs("cEfficiencyDOCA3.png");
170 
171  TCanvas *cEfficiencyDOCA4 = new TCanvas("cEfficiencyDOCA4", "cEfficiencyDOCA4", 900, 800);
172  // Draw axes
173  TH2D *axesDOCA4 = (TH2D *)gDirectory->Get("axesDOCA4");
174  if(!axesDOCA4) axesDOCA4 = new TH2D("axesDOCA4", "CDC Efficiency for DOCA #in [0.4, 0.5 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
175 
176  minScale = 0.5; maxScale = 1.0;
177  axesDOCA4->SetStats(0);
178  axesDOCA4->Fill(100,100); // without this, the color ramp is not drawn
179  axesDOCA4->GetZaxis()->SetRangeUser(minScale, maxScale);
180  axesDOCA4->Draw("colz");
181 
182  for(unsigned int iring=1; iring<=28; iring++){
183  char hname[256];
184  sprintf(hname, "cdc_measured_ring[%d]DOCA4", iring);
185  TH1 *h = (TH1*)(gDirectory->Get(hname));
186  char hname2[256];
187  sprintf(hname2, "cdc_expected_ring[%d]DOCA4", iring);
188  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
189 
190  if(h && h2){
191  h->Divide(h2);
192  //sprintf(hname, "cdc_measured_ring[%d]", iring);
193  //TH1 *hh = (TH1*)h->Clone(hname);
194  //hh->Scale(1.0/Nevents);
195  h->SetMinimum(minScale);
196  h->SetMaximum(maxScale);
197  h->SetStats(0);
198  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
199  }
200  }
201  cEfficiencyDOCA4->SaveAs("cEfficiencyDOCA4.png");
202 
203  TCanvas *cEfficiencyDOCA5 = new TCanvas("cEfficiencyDOCA5", "cEfficiencyDOCA5", 900, 800);
204  // Draw axes
205  TH2D *axesDOCA5 = (TH2D *)gDirectory->Get("axesDOCA5");
206  if(!axesDOCA5) axesDOCA5 = new TH2D("axesDOCA5", "CDC Efficiency for DOCA #in [0.5, 0.6 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
207 
208  minScale = 0.5; maxScale = 1.0;
209  axesDOCA5->SetStats(0);
210  axesDOCA5->Fill(100,100); // without this, the color ramp is not drawn
211  axesDOCA5->GetZaxis()->SetRangeUser(minScale, maxScale);
212  axesDOCA5->Draw("colz");
213 
214  for(unsigned int iring=1; iring<=28; iring++){
215  char hname[256];
216  sprintf(hname, "cdc_measured_ring[%d]DOCA5", iring);
217  TH1 *h = (TH1*)(gDirectory->Get(hname));
218  char hname2[256];
219  sprintf(hname2, "cdc_expected_ring[%d]DOCA5", iring);
220  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
221 
222  if(h && h2){
223  h->Divide(h2);
224  //sprintf(hname, "cdc_measured_ring[%d]", iring);
225  //TH1 *hh = (TH1*)h->Clone(hname);
226  //hh->Scale(1.0/Nevents);
227  h->SetMinimum(minScale);
228  h->SetMaximum(maxScale);
229  h->SetStats(0);
230  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
231  }
232  }
233  cEfficiencyDOCA5->SaveAs("cEfficiencyDOCA5.png");
234 
235  TCanvas *cEfficiencyDOCA6 = new TCanvas("cEfficiencyDOCA6", "cEfficiencyDOCA6", 900, 800);
236  // Draw axes
237  TH2D *axesDOCA6 = (TH2D *)gDirectory->Get("axesDOCA6");
238  if(!axesDOCA6) axesDOCA6 = new TH2D("axesDOCA6", "CDC Efficiency for DOCA #in [0.6, 0.7 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
239 
240  minScale = 0.5; maxScale = 1.0;
241  axesDOCA6->SetStats(0);
242  axesDOCA6->Fill(100,100); // without this, the color ramp is not drawn
243  axesDOCA6->GetZaxis()->SetRangeUser(minScale, maxScale);
244  axesDOCA6->Draw("colz");
245 
246  for(unsigned int iring=1; iring<=28; iring++){
247  char hname[256];
248  sprintf(hname, "cdc_measured_ring[%d]DOCA6", iring);
249  TH1 *h = (TH1*)(gDirectory->Get(hname));
250  char hname2[256];
251  sprintf(hname2, "cdc_expected_ring[%d]DOCA6", iring);
252  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
253 
254  if(h && h2){
255  h->Divide(h2);
256  //sprintf(hname, "cdc_measured_ring[%d]", iring);
257  //TH1 *hh = (TH1*)h->Clone(hname);
258  //hh->Scale(1.0/Nevents);
259  h->SetMinimum(minScale);
260  h->SetMaximum(maxScale);
261  h->SetStats(0);
262  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
263  }
264  }
265  cEfficiencyDOCA6->SaveAs("cEfficiencyDOCA6.png");
266 
267  TCanvas *cEfficiencyDOCA7 = new TCanvas("cEfficiencyDOCA7", "cEfficiencyDOCA7", 900, 800);
268  // Draw axes
269  TH2D *axesDOCA7 = (TH2D *)gDirectory->Get("axesDOCA7");
270  if(!axesDOCA7) axesDOCA7 = new TH2D("axesDOCA7", "CDC Efficiency for DOCA #in [0.7, 0.78 cm]", 100, -65.0, 65.0, 100, -65.0, 65.0);
271 
272  minScale = 0.5; maxScale = 1.0;
273  axesDOCA7->SetStats(0);
274  axesDOCA7->Fill(100,100); // without this, the color ramp is not drawn
275  axesDOCA7->GetZaxis()->SetRangeUser(minScale, maxScale);
276  axesDOCA7->Draw("colz");
277 
278  for(unsigned int iring=1; iring<=28; iring++){
279  char hname[256];
280  sprintf(hname, "cdc_measured_ring[%d]DOCA7", iring);
281  TH1 *h = (TH1*)(gDirectory->Get(hname));
282  char hname2[256];
283  sprintf(hname2, "cdc_expected_ring[%d]DOCA7", iring);
284  TH1 *h2 = (TH1*)(gDirectory->Get(hname2));
285 
286  if(h && h2){
287  h->Divide(h2);
288  //sprintf(hname, "cdc_measured_ring[%d]", iring);
289  //TH1 *hh = (TH1*)h->Clone(hname);
290  //hh->Scale(1.0/Nevents);
291  h->SetMinimum(minScale);
292  h->SetMaximum(maxScale);
293  h->SetStats(0);
294  h->Draw("same col pol"); // draw remaining histos without overwriting color palette
295  }
296  }
297  cEfficiencyDOCA7->SaveAs("cEfficiencyDOCA7.png");
298 
299  dir->cd();
300  // Draw the other efficiency plots
301  TCanvas *cPathLength = new TCanvas("cPathLength", "cPathLength", 800, 600);
302  cPathLength->SetGridx();
303  cPathLength->SetGridy();
304  TH1I *MeasPathLength = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs Path Length"));
305  TH1I *ExpPathLength = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs Path Length"));
306  if(MeasPathLength && ExpPathLength){
307  //EffPathLength->Draw();
308  TGraphAsymmErrors *EffPathLength = new TGraphAsymmErrors(MeasPathLength, ExpPathLength, "ac");
309  EffPathLength->Draw("ap");
310  EffPathLength->SetMinimum(0.0);
311  EffPathLength->SetMaximum(1.0);
312  EffPathLength->SetTitle("CDC Per Straw Efficiency Vs. dX");
313  EffPathLength->GetXaxis()->SetTitle("Path Length Through Straw [cm]");
314  EffPathLength->GetYaxis()->SetTitle("Efficiency");
315  cPathLength->SaveAs("cPathLength.png");
316  }
317 
318  TCanvas *cDOCA = new TCanvas("cDOCA", "cDOCA", 800, 600);
319  cDOCA->SetGridx();
320  cDOCA->SetGridy();
321  TH1I *MeasDOCA = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs DOCA"));
322  TH1I *ExpDOCA = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs DOCA"));
323  if(MeasDOCA && ExpDOCA){
324  //EffDOCA->Draw();
325  TGraphAsymmErrors *EffDOCA = new TGraphAsymmErrors(MeasDOCA, ExpDOCA, "ac");
326  EffDOCA->Draw("ap");
327  EffDOCA->SetMinimum(0.0);
328  EffDOCA->SetMaximum(1.0);
329  EffDOCA->SetTitle("CDC Per Straw Efficiency Vs. DOCA");
330  EffDOCA->GetXaxis()->SetTitle("Closest distance between track and wire [cm]");
331  EffDOCA->GetYaxis()->SetTitle("Efficiency");
332  cDOCA->SaveAs("cDOCA.png");
333  }
334 
335  TCanvas *cTrackingFOM = new TCanvas("cTrackingFOM", "cTrackingFOM", 800, 600);
336  cTrackingFOM->SetGridx();
337  cTrackingFOM->SetGridy();
338  TH1I *MeasTrackingFOM = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs Tracking FOM"));
339  TH1I *ExpTrackingFOM = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs Tracking FOM"));
340  if(MeasTrackingFOM && ExpTrackingFOM){
341  //EffTrackingFOM->Draw();
342  TGraphAsymmErrors *EffTrackingFOM = new TGraphAsymmErrors(MeasTrackingFOM, ExpTrackingFOM, "ac");
343  EffTrackingFOM->Draw("ap");
344  EffTrackingFOM->SetMinimum(0.0);
345  EffTrackingFOM->SetMaximum(1.0);
346  EffTrackingFOM->SetTitle("CDC Per Straw Efficiency Vs. Tracking FOM");
347  EffTrackingFOM->GetXaxis()->SetTitle("Tracking FOM");
348  EffTrackingFOM->GetYaxis()->SetTitle("Efficiency");
349  cTrackingFOM->SaveAs("cTrackingFOM.png");
350  }
351 
352  TCanvas *ctheta = new TCanvas("ctheta", "ctheta", 800, 600);
353  ctheta->SetGridx();
354  ctheta->SetGridy();
355  TH1I *Meastheta = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs theta"));
356  TH1I *Exptheta = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs theta"));
357  if(Meastheta && Exptheta){
358  //Efftheta->Draw();
359  TGraphAsymmErrors *Efftheta = new TGraphAsymmErrors(Meastheta, Exptheta, "ac");
360  Efftheta->Draw("ap");
361  Efftheta->SetMinimum(0.0);
362  Efftheta->SetMaximum(1.0);
363  Efftheta->SetTitle("CDC Per Straw Efficiency Vs. #theta");
364  Efftheta->GetXaxis()->SetTitle("Track #theta [deg.]");
365  Efftheta->GetYaxis()->SetTitle("Efficiency");
366  ctheta->SaveAs("ctheta.png");
367  }
368 
369  TCanvas *cp = new TCanvas("cp", "cp", 800, 600);
370  cp->SetGridx();
371  cp->SetGridy();
372  TH1I *Measp = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs p"));
373  TH1I *Expp = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs p"));
374  if(Measp && Expp){
375  //Effp->Draw();
376  TGraphAsymmErrors *Effp = new TGraphAsymmErrors(Measp, Expp, "ac");
377  Effp->Draw("ap");
378  Effp->SetMinimum(0.0);
379  Effp->SetMaximum(1.0);
380  Effp->SetTitle("CDC Per Straw Efficiency Vs. p");
381  Effp->GetXaxis()->SetTitle("Track Momentum [GeV/c]");
382  Effp->GetYaxis()->SetTitle("Efficiency");
383  cp->SaveAs("cp.png");
384  }
385 
386  TCanvas *cdelta = new TCanvas("cdelta", "cdelta", 800, 600);
387  cdelta->SetGridx();
388  cdelta->SetGridy();
389  TH1I *Measdelta = (TH1I*)(gDirectory->Get("Offline/Measured Hits Vs delta"));
390  TH1I *Expdelta = (TH1I*)(gDirectory->Get("Offline/Expected Hits Vs delta"));
391  if(Measdelta && Expdelta){
392  //Effp->Draw();
393  TGraphAsymmErrors *Effdelta = new TGraphAsymmErrors(Measdelta, Expdelta, "ac");
394  Effdelta->Draw("ap");
395  Effdelta->SetMinimum(0.0);
396  Effdelta->SetMaximum(1.0);
397  Effdelta->SetTitle("CDC Per Straw Efficiency Vs. delta");
398  Effdelta->GetXaxis()->SetTitle("delta [cm]");
399  Effdelta->GetYaxis()->SetTitle("Efficiency");
400  cdelta->SaveAs("cdelta.png");
401  }
402 
403 
404 }
TCanvas * cEfficiencyDOCA7
TCanvas * cEfficiency
TH1I * ExpPathLength
TCanvas * cdelta
TH2D * axes
Float_t maxScale
sprintf(text,"Post KinFit Cut")
TH1I * Measdelta
TCanvas * cTrackingFOM
TCanvas * cEfficiencyDOCA6
TH2D * axesDOCA7
TCanvas * cEfficiencyDOCA5
TH1I * Expdelta
TH1I * Expp
TH2D * axesDOCA0
TCanvas * cEfficiencyDOCA3
TH1I * Exptheta
TCanvas * cEfficiencyDOCA1
TH2D * axesDOCA2
TH1I * Meastheta
TH1I * Measp
TH1I * MeasPathLength
TH1I * MeasDOCA
TCanvas * ctheta
TCanvas * cEfficiencyDOCA2
TH2D * axesDOCA3
TCanvas * cEfficiencyDOCA0
TH1I * MeasTrackingFOM
TH1I * ExpDOCA
TCanvas * cDOCA
TDirectory * dir
Definition: bcal_hist_eff.C:31
TCanvas * cp
TH2D * axesDOCA4
TH2D * axesDOCA5
TH1I * ExpTrackingFOM
TCanvas * cEfficiencyDOCA4
TCanvas * cPathLength
Float_t minScale
TH2D * axesDOCA6
TH2D * axesDOCA1