Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ST_online_efficiency/ST_Monitoring_Eff.C
Go to the documentation of this file.
1 // File: ST_Monitoring_Efficiency.C
2 // Last Modified: 08/27/2015
3 // Creator: Mahmoud Kamel mkame006@fiu.edu
4 // Purpose: Displaying histograms for efficiency studies
5 {
6  // Define the directory that contains the histograms
7  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("st_efficiency");
8  //TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("st_tracking");
9  if(dir) dir->cd();
10  // Grab 1D histograms
11  TH1D *h_N_trck_prd_All = (TH1D*)dir->FindObjectAny("h_N_trck_prd_All");
12  TH1D *h_N_recd_hit_All = (TH1D*)dir->FindObjectAny("h_N_recd_hit_All");
13  TH1D *h_ST_Eff_All = (TH1D*)dir->FindObjectAny("h_ST_Eff_All");
14  TH1D *h_N_trck_prd_ss = (TH1D*)dir->FindObjectAny("h_N_trck_prd_ss");
15  TH1D *h_N_recd_hit_ss = (TH1D*)dir->FindObjectAny("h_N_recd_hit_ss");
16  TH1D *h_ST_Eff_ss = (TH1D*)dir->FindObjectAny("h_ST_Eff_ss");
17  TH1D *h_N_trck_prd_bs = (TH1D*)dir->FindObjectAny("h_N_trck_prd_bs");
18  TH1D *h_N_recd_hit_bs = (TH1D*)dir->FindObjectAny("h_N_recd_hit_bs");
19  TH1D *h_ST_Eff_bs = (TH1D*)dir->FindObjectAny("h_ST_Eff_bs");
20  TH1D *h_N_trck_prd_ns = (TH1D*)dir->FindObjectAny("h_N_trck_prd_ns");
21  TH1D *h_N_recd_hit_ns = (TH1D*)dir->FindObjectAny("h_N_recd_hit_ns");
22  TH1D *h_ST_Eff_ns = (TH1D*)dir->FindObjectAny("h_ST_Eff_ns");
23 
24  // get Binomial errors in an efficiency plot
25  // Whole ST efficiency
26  h_N_recd_hit_All->Sumw2();
27  h_N_trck_prd_All->Sumw2();
28  h_ST_Eff_All->Sumw2();
29  h_ST_Eff_All->Divide(h_N_recd_hit_All,h_N_trck_prd_All,1,1,"B");
30 
31  // SS ST efficiency
32  h_N_recd_hit_ss->Sumw2();
33  h_N_trck_prd_ss->Sumw2();
34  h_ST_Eff_ss->Sumw2();
35  h_ST_Eff_ss->Divide(h_N_recd_hit_ss,h_N_trck_prd_ss,1,1,"B");
36 
37  // BS ST efficiency
38  h_N_recd_hit_bs->Sumw2();
39  h_N_trck_prd_bs->Sumw2();
40  h_ST_Eff_bs->Sumw2();
41  h_ST_Eff_bs->Divide(h_N_recd_hit_bs,h_N_trck_prd_bs,1,1,"B");
42  // NS ST efficiency
43  h_N_recd_hit_ns->Sumw2();
44  h_N_trck_prd_ns->Sumw2();
45  h_ST_Eff_ns->Sumw2();
46  h_ST_Eff_ns->Divide(h_N_recd_hit_ns,h_N_trck_prd_ns,1,1,"B");
47 
48 
49 //Create the canvas
50  if(gPad == NULL)
51  {
52  TCanvas *c1 = new TCanvas("c1","Start Counter 1D Histograms", 200, 10, 600, 480);
53  c1->cd(0);
54  c1->Draw();
55  c1->Update();
56  }
57  if(!gPad) return;
58  TCanvas *c1 = gPad->GetCanvas();
59  c1->Divide(2,2);
60  // ST All Efficiency histogram
61  c1->cd(1);
62  gStyle->SetOptStat(0);
63  gStyle->SetErrorX(0);
64  gPad->SetTicks();
65  gPad->SetGrid();
66  if (h_ST_Eff_All) {
67  h_ST_Eff_All->Draw("E1");
68  h_ST_Eff_All->SetMarkerStyle(21);
69  h_ST_Eff_All->SetMarkerSize(1.5);
70  h_ST_Eff_All->SetMarkerColor(4.0);
71  h_ST_Eff_All->SetAxisRange(0.5, 1.1,"Y");
72  h_ST_Eff_All->GetYaxis()->SetTitleOffset(1.26);
73  h_ST_Eff_All->GetYaxis()->SetTitle("Efficiency");
74  Double_t TWA_All=0;
75  Double_t sumE_All=0;
76  Double_t Final_All=0;
77  for (int i = 0; i < 30; i++)
78  {
79  Double_t error_All = h_ST_Eff_All->GetBinError(i+2);
80  sumE_All = sumE_All + error_All;
81  Double_t BC_All = h_ST_Eff_All->GetBinContent(i+2);
82  Double_t WA_All = BC_All*error_All;
83  TWA_All = TWA_All + WA_All ;
84  Double_t Final_All = TWA_All/sumE_All;
85  }
86  TLine *lineAll = new TLine(1,Final_All,30,Final_All);
87  lineAll->SetLineWidth(3);
88  lineAll->SetLineColor(2);
89  //Write the eff value on the histogram
90  char tFinal_All[20];
91  char terror_All[20];
92  sprintf(tFinal_All,"All Efficiency = %0.2f #pm %0.2f",Final_All*100,sumE_All*100/30);
93  //sprintf(terror_All,"All Efficiency error (%) = %g",error_All*100);
94  lineAll->Draw();
95  TPaveLabel *pAll = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_All,"brNDC");
96  pAll->Draw();
97  }
98  //SS Efficiency histogram
99  c1->cd(2);
100  gPad->SetTicks();
101  gPad->SetGrid();
102  if (h_ST_Eff_ss) {
103  h_ST_Eff_ss->Draw("E1");
104  h_ST_Eff_ss->SetMarkerStyle(21);
105  h_ST_Eff_ss->SetMarkerSize(1.5);
106  h_ST_Eff_ss->SetMarkerColor(4.0);
107  h_ST_Eff_ss->SetAxisRange(0.5, 1.1,"Y");
108  h_ST_Eff_ss->GetYaxis()->SetTitleOffset(1.26);
109  h_ST_Eff_ss->GetYaxis()->SetTitle("Efficiency");
110  Double_t TWA_ss=0;
111  Double_t sumE_ss=0;
112  Double_t Final_ss=0;
113  for (int i = 0; i < 30; i++)
114  {
115  Double_t error_ss = h_ST_Eff_ss->GetBinError(i+2);
116  sumE_ss = sumE_ss+error_ss;
117  Double_t BC_ss = h_ST_Eff_ss->GetBinContent(i+2);
118  Double_t WA_ss = BC_ss*error_ss;
119  TWA_ss = TWA_ss + WA_ss ;
120  Double_t Final_ss = TWA_ss/sumE_ss;
121  }
122  TLine *liness = new TLine(1,Final_ss,30,Final_ss);
123  liness->SetLineWidth(3);
124  liness->SetLineColor(2);
125  //Write the eff value on the histogram
126  char tFinal_ss[20];
127  char terror_ss[20];
128  sprintf(tFinal_ss,"SS Hit Efficiency = %0.2f #pm %0.2f",Final_ss*100,sumE_ss*100/30);
129  // sprintf(terror_ss,"SS Hit Efficiency error (%) = %g",error_ss*100);
130  liness->Draw();
131  TPaveLabel *pss = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_ss,"brNDC");
132  pss->Draw();
133  }
134 //BS Efficiency histogram
135  c1->cd(3);
136  gPad->SetTicks();
137  gPad->SetGrid();
138  if (h_ST_Eff_bs) {
139  h_ST_Eff_bs->Draw("E1");
140  h_ST_Eff_bs->SetMarkerStyle(21);
141  h_ST_Eff_bs->SetMarkerSize(1.5);
142  h_ST_Eff_bs->SetMarkerColor(4.0);
143  h_ST_Eff_bs->SetAxisRange(0.5, 1.1,"Y");
144  h_ST_Eff_bs->GetYaxis()->SetTitleOffset(1.26);
145  h_ST_Eff_bs->GetYaxis()->SetTitle("Efficiency");
146  Double_t TWA_bs=0;
147  Double_t sumE_bs=0;
148  Double_t Final_bs=0;
149  for (int i = 0; i < 30; i++)
150  {
151  Double_t error_bs = h_ST_Eff_bs->GetBinError(i+2);
152  sumE_bs = sumE_bs+error_bs;
153  Double_t BC_bs = h_ST_Eff_bs->GetBinContent(i+2);
154  Double_t WA_bs = BC_bs*error_bs;
155  TWA_bs = TWA_bs + WA_bs ;
156  Double_t Final_bs = TWA_bs/sumE_bs;
157  }
158  TLine *linebs = new TLine(1,Final_bs,30,Final_bs);
159  linebs->SetLineWidth(3);
160  linebs->SetLineColor(2);
161  //Write the eff value on the histogram
162  char tFinal_bs[20];
163  char terror_bs[20];
164  sprintf(tFinal_bs,"BS Hit Efficiency = %0.2f #pm %0.2f ",Final_bs*100,sumE_bs*100/30);
165  linebs->Draw();
166  TPaveLabel *pbs = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_bs,"brNDC");
167  pbs->Draw();
168  }
169 //NS Efficiency histogram
170  c1->cd(4);
171  gPad->SetTicks();
172  gPad->SetGrid();
173  if (h_ST_Eff_ns) {
174  h_ST_Eff_ns->Draw("E1");
175  h_ST_Eff_ns->SetMarkerStyle(21);
176  h_ST_Eff_ns->SetMarkerSize(1.5);
177  h_ST_Eff_ns->SetMarkerColor(4.0);
178  h_ST_Eff_ns->SetAxisRange(0.5, 1.1,"Y");
179  h_ST_Eff_ns->GetYaxis()->SetTitleOffset(1.26);
180  h_ST_Eff_ns->GetYaxis()->SetTitle("Efficiency");
181  Double_t TWA_ns=0;
182  Double_t sumE_ns=0;
183  Double_t Final_ns=0;
184  for (int i = 0; i < 30; i++)
185  {
186  Double_t error_ns = h_ST_Eff_ns->GetBinError(i+2);
187  sumE_ns = sumE_ns+error_ns;
188  Double_t BC_ns = h_ST_Eff_ns->GetBinContent(i+2);
189  Double_t WA_ns = BC_ns*error_ns;
190  TWA_ns = TWA_ns + WA_ns ;
191  Double_t Final_ns = TWA_ns/sumE_ns;
192  }
193  TLine *linens = new TLine(1,Final_ns,30,Final_ns);
194  linens->SetLineWidth(3);
195  linens->SetLineColor(2);
196  //Write the eff value on the histogram
197  char tFinal_ns[20];
198  char terror_ns[20];
199  sprintf(tFinal_ns,"NS Hit Efficiency = %0.2f #pm %0.2f",Final_ns*100,sumE_ns*100/30);
200  linens->Draw();
201  TPaveLabel *pns = new TPaveLabel(0.2,0.2,0.7,0.4,tFinal_ns,"brNDC");
202  pns->Draw();
203  }
204 }
static TH1D * h_ST_Eff_ss
static TH1D * h_ST_Eff_All
static TH1D * h_N_trck_prd_ss
static TH1D * h_N_recd_hit_ns
sprintf(text,"Post KinFit Cut")
static TH1D * h_ST_Eff_bs
static TH1D * h_N_recd_hit_ss
static TH1D * h_N_trck_prd_All
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
static TH1D * h_N_recd_hit_bs
static TH1D * h_N_trck_prd_ns
TDirectory * dir
Definition: bcal_hist_eff.C:31
static TH1D * h_ST_Eff_ns
static TH1D * h_N_recd_hit_All
static TH1D * h_N_trck_prd_bs