Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ST_slices_eff.C
Go to the documentation of this file.
1 // File: ST_Monitoring_Efficiency.C
2 // Last Modified: 09/15/2015
3 // Creator: Mahmoud Kamel mkame006@fiu.edu
4 // Purpose: Displaying histograms for efficiency studies
5 #include "TH1.h"
6 #include "TF1.h"
7 #include "TROOT.h"
8 #include "TStyle.h"
9 #include "TMath.h"
10 #include "TFile.h"
11 #include "TCanvas.h"
12 #include "TAxis.h"
13 #include <TDirectory.h>
14 #include <TLine.h>
15 #include <TPaveLabel.h>
16 // Declare data files
17 TFile *df;
18 // Define some constants
19 const int Nof_ss_intervals = 8;
20 const int Nof_bs_intervals = 4;
21 const int Nof_ns_intervals = 8;
22 const int NChanel = 30;
23 // Declare canvas
24 //TCanvas *SS_can;
26 {
27  double error_ss[Nof_ss_intervals];
28  double sumE_ss[Nof_ss_intervals];
29  double BC_ss[Nof_ss_intervals];
30  double WA_ss[Nof_ss_intervals];
31  double TWA_ss[Nof_ss_intervals];
32  double Final_ss[Nof_ss_intervals];
33 
34  double error_bs[Nof_bs_intervals];
35  double sumE_bs[Nof_bs_intervals];
36  double BC_bs[Nof_bs_intervals];
37  double WA_bs[Nof_bs_intervals];
38  double TWA_bs[Nof_bs_intervals];
39  double Final_bs[Nof_bs_intervals];
40 
41  double error_ns[Nof_ns_intervals];
42  double sumE_ns[Nof_ns_intervals];
43  double BC_ns[Nof_ns_intervals];
44  double WA_ns[Nof_ns_intervals];
45  double TWA_ns[Nof_ns_intervals];
46  double Final_ns[Nof_ns_intervals];
47 
48  // df = new TFile("./OUTPUT_JOBS/all_runs.root");
49  //df = new TFile("hd_root_SIM600K.root");
50  // df = new TFile("./hists/hd_root_10runs.root");
51  // df = new TFile("Five_runs.root");
52  df = new TFile("hd_root.root");
53 
54  //df = new TFile("./hd_root_Sim1_1Mevent.root");
55  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("./st_efficiency");
56  if(dir) dir->cd();
57  //TDirectory *dir1 = (TDirectory*)gDirectory->FindObjectAny("st_eff_nebrg");
58  //if(dir) dir1->cd();
59  //*****************************************************************
60  //*********** SS slices efficiency ******************
61  //*****************************************************************
62  //Create the canvas
63  SS_can = new TCanvas("SS_can", "SS_can", 800, 800);
64  SS_can->Divide(3, 3);
65  for (unsigned int i = 1; i < Nof_ss_intervals+1; i++)
66  {
67  char* prd_z_ss = Form("h_N_trck_prd_z_ss_%i",i);
68  char* hit_z_ss = Form("h_N_recd_hit_z_ss_%i",i);
69  char* eff_z_ss = Form("h_N_trck_prd_z_ss_eff_%i",i);
70  char* ACC_z_ss = Form("h_N_recd_hit_z_ss_ACC_%i",i);
71 
72  TH1D *hp = (TH1D*) gDirectory->FindObjectAny(prd_z_ss);
73  TH1D *hh = (TH1D*) gDirectory->FindObjectAny(hit_z_ss);
74  TH1D *he = (TH1D*) gDirectory->FindObjectAny(eff_z_ss);
75  TH1D *hA = (TH1D*) gDirectory->FindObjectAny(ACC_z_ss);
76 
77 
78  hh->Sumw2();
79  hp->Sumw2();
80  he->Sumw2();
81  hA->Sumw2();
82  TH1D * hh_final = (TH1D*) hh->Clone();
83  hh_final->Add(hA,-1.0);
84  he->Divide(hh_final,hp,1.,1.,"B");
85 
86  SS_can->cd(i);
87  gStyle->SetOptStat(0);
88  gStyle->SetErrorX(0);
89  gPad->SetTicks();
90  gPad->SetGrid();
91 
92  he->Draw("E1");
93  he->SetMarkerStyle(21);
94  he->SetMarkerSize(1.1);
95  he->SetMarkerColor(4.0);
96  he->SetAxisRange(0.5, 1.0,"Y");
97  he->GetYaxis()->SetTitleOffset(1.26);
98 
99  for (int j = 0; j < 30; j++)
100  {
101  error_ss[i-1]= he->GetBinError(j+2);
102  sumE_ss[i-1] = sumE_ss[i-1] + error_ss[i-1];
103  BC_ss[i-1] = he->GetBinContent(j+2);
104  WA_ss[i-1] = BC_ss[i-1]*error_ss[i-1];
105  TWA_ss[i-1] = TWA_ss[i-1]+ WA_ss[i-1];
106  Final_ss[i-1]= TWA_ss[i-1]/sumE_ss[i-1];
107  }
108  TLine *line = new TLine(1,Final_ss[i-1],30,Final_ss[i-1]);
109  line->SetLineWidth(3);
110  line->SetLineColor(2);
111  //Write the eff value on the histogram
112  char tFinal_ss[20][Nof_ss_intervals];
113  char terror_ss[20][Nof_ss_intervals];
114  sprintf(tFinal_ss[i-1],"Straight Section Efficiency = %0.2f #pm %0.2f",Final_ss[i-1]*100,sumE_ss[i-1]*100/30);
115  line->Draw();
116  TPaveLabel *p[Nof_ss_intervals];
117  p[i-1] = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_ss[i-1],"brNDC");
118  p[i-1]->Draw();
119 
120  memset(error_ss, 0, sizeof(error_ss));
121  memset(sumE_ss, 0, sizeof(sumE_ss));
122  memset(BC_ss, 0, sizeof(BC_ss));
123  memset(WA_ss, 0, sizeof(WA_ss));
124  memset(TWA_ss, 0, sizeof(TWA_ss));
125  memset(Final_ss, 0, sizeof(Final_ss));
126 
127  }
128  //*****************************************************************
129  //*********** BS slices efficiency ******************
130  //*****************************************************************
131  //Create the canvas
132  BS_can = new TCanvas("BS_can", "BS_can", 800, 800);
133  BS_can->Divide(2, 2);
134  for (unsigned int i = 1; i < Nof_bs_intervals+1; i++)
135  {
136  char* prd_z_bs = Form("h_N_trck_prd_z_bs_%i",i);
137  char* hit_z_bs = Form("h_N_recd_hit_z_bs_%i",i);
138  char* eff_z_bs = Form("h_N_trck_prd_z_bs_eff_%i",i);
139  char* ACC_z_bs = Form("h_N_recd_hit_z_bs_ACC_%i",i);
140 
141  TH1D *hp_bs = (TH1D*) gDirectory->FindObjectAny(prd_z_bs);
142  TH1D *hh_bs = (TH1D*) gDirectory->FindObjectAny(hit_z_bs);
143  TH1D *he_bs = (TH1D*) gDirectory->FindObjectAny(eff_z_bs);
144  TH1D *hA_bs = (TH1D*) gDirectory->FindObjectAny(ACC_z_bs);
145 
146  hh_bs->Sumw2();
147  hp_bs->Sumw2();
148  he_bs->Sumw2();
149  hA_bs->Sumw2();
150  TH1D * hh_bs_final = (TH1D*) hh_bs->Clone();
151  hh_bs_final->Add(hA_bs,-1.0);
152 
153  he_bs->Divide(hh_bs_final,hp_bs,1.,1.,"B");
154 
155  BS_can->cd(i);
156  gStyle->SetOptStat(0);
157  gStyle->SetErrorX(0);
158  gPad->SetTicks();
159  gPad->SetGrid();
160 
161  he_bs->Draw("E1");
162  he_bs->SetMarkerStyle(21);
163  he_bs->SetMarkerSize(1.1);
164  he_bs->SetMarkerColor(4.0);
165  he_bs->SetAxisRange(0.9, 1.0,"Y");
166  he_bs->GetYaxis()->SetTitleOffset(1.26);
167 
168  for (int j = 0; j < 30; j++)
169  {
170  error_bs[i-1]= he_bs->GetBinError(j+2);
171  sumE_bs[i-1] = sumE_bs[i-1] + error_bs[i-1];
172  BC_bs[i-1] = he_bs->GetBinContent(j+2);
173  WA_bs[i-1] = BC_bs[i-1]*error_bs[i-1];
174  TWA_bs[i-1] = TWA_bs[i-1]+ WA_bs[i-1];
175  Final_bs[i-1]= TWA_bs[i-1]/sumE_bs[i-1];
176  }
177  TLine *line = new TLine(1,Final_bs[i-1],30,Final_bs[i-1]);
178  line->SetLineWidth(3);
179  line->SetLineColor(2);
180  //Write the eff value on the histogram
181  char tFinal_bs[20][Nof_bs_intervals];
182  char terror_bs[20][Nof_bs_intervals];
183  sprintf(tFinal_bs[i-1],"Bend Section Efficiency = %0.2f #pm %0.2f",Final_bs[i-1]*100,sumE_bs[i-1]*100/30);
184  line->Draw();
185  TPaveLabel *p[Nof_bs_intervals];
186  p[i-1] = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_bs[i-1],"brNDC");
187  p[i-1]->Draw();
188 
189  memset(error_bs, 0, sizeof(error_bs));
190  memset(sumE_bs, 0, sizeof(sumE_bs));
191  memset(BC_bs, 0, sizeof(BC_bs));
192  memset(WA_bs, 0, sizeof(WA_bs));
193  memset(TWA_bs, 0, sizeof(TWA_bs));
194  memset(Final_bs, 0, sizeof(Final_bs));
195  }
196  //*****************************************************************
197  //*********** NS slices efficiency ******************
198  //*****************************************************************
199  //Create the canvas
200  NS_can = new TCanvas("NS_can", "NS_can", 800, 800);
201  NS_can->Divide(3, 3);
202  for (unsigned int i = 1; i < Nof_ns_intervals+1; i++)
203  {
204  char* prd_z_ns = Form("h_N_trck_prd_z_ns_%i",i);
205  char* hit_z_ns = Form("h_N_recd_hit_z_ns_%i",i);
206  char* eff_z_ns = Form("h_N_trck_prd_z_ns_eff_%i",i);
207  char* ACC_z_ns = Form("h_N_recd_hit_z_ns_ACC_%i",i);
208 
209  TH1D *hp_ns = (TH1D*) gDirectory->FindObjectAny(prd_z_ns);
210  TH1D *hh_ns = (TH1D*) gDirectory->FindObjectAny(hit_z_ns);
211  TH1D *he_ns = (TH1D*) gDirectory->FindObjectAny(eff_z_ns);
212  TH1D *hA_ns = (TH1D*) gDirectory->FindObjectAny(ACC_z_ns);
213 
214  hh_ns->Sumw2();
215  hp_ns->Sumw2();
216  he_ns->Sumw2();
217  hA_ns->Sumw2();
218  TH1D * hh_ns_final = (TH1D*) hh_ns->Clone();
219  hh_ns_final->Add(hA_ns,-1.0);
220 
221 
222  he_ns->Divide(hh_ns_final,hp_ns,1.,1.,"B");
223 
224  NS_can->cd(i);
225  gStyle->SetOptStat(0);
226  gStyle->SetErrorX(0);
227  gPad->SetTicks();
228  gPad->SetGrid();
229 
230  he_ns->Draw("E1");
231  he_ns->SetMarkerStyle(21);
232  he_ns->SetMarkerSize(1.1);
233  he_ns->SetMarkerColor(4.0);
234  he_ns->SetAxisRange(0.9, 1.0,"Y");
235  he_ns->GetYaxis()->SetTitleOffset(1.26);
236 
237  for (int j = 0; j < 30; j++)
238  {
239  error_ns[i-1]= he_ns->GetBinError(j+2);
240  sumE_ns[i-1] = sumE_ns[i-1] + error_ns[i-1];
241  BC_ns[i-1] = he_ns->GetBinContent(j+2);
242  WA_ns[i-1] = BC_ns[i-1]*error_ns[i-1];
243  TWA_ns[i-1] = TWA_ns[i-1]+ WA_ns[i-1];
244  Final_ns[i-1]= TWA_ns[i-1]/sumE_ns[i-1];
245  }
246  TLine *line = new TLine(1,Final_ns[i-1],30,Final_ns[i-1]);
247  line->SetLineWidth(3);
248  line->SetLineColor(2);
249  //Write the eff value on the histogram
250  char tFinal_ns[20][Nof_ns_intervals];
251  char terror_ns[20][Nof_ns_intervals];
252  sprintf(tFinal_ns[i-1],"Nose Section Efficiency = %0.2f #pm %0.2f",Final_ns[i-1]*100,sumE_ns[i-1]*100/30);
253  line->Draw();
254  TPaveLabel *p[Nof_ns_intervals];
255  p[i-1] = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_ns[i-1],"brNDC");
256  p[i-1]->Draw();
257 
258  memset(error_ns, 0, sizeof(error_ns));
259  memset(sumE_ns, 0, sizeof(sumE_ns));
260  memset(BC_ns, 0, sizeof(BC_ns));
261  memset(WA_ns, 0, sizeof(WA_ns));
262  memset(TWA_ns, 0, sizeof(TWA_ns));
263  memset(Final_ns, 0, sizeof(Final_ns));
264 
265  }
266 }
267 
TFile * df
Definition: ST_slices_eff.C:17
const uint32_t Nof_ss_intervals
sprintf(text,"Post KinFit Cut")
void ST_slices_eff()
Definition: ST_slices_eff.C:25
const int NChanel
Definition: ST_slices_eff.C:22
const uint32_t Nof_ns_intervals
TDirectory * dir
Definition: bcal_hist_eff.C:31
const uint32_t Nof_bs_intervals