Belle II Software  release-08-00-10
DQMHistAnalysisTRGGDL.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 // Own header.
10 #include <dqm/analysis/modules/DQMHistAnalysisTRGGDL.h>
11 
12 #include <TH1F.h>
13 #include <TH2F.h>
14 #include <TCanvas.h>
15 #include <TPaveText.h>
16 #include <TLine.h>
17 #include <TClass.h>
18 #include <TStyle.h>
19 #include <TROOT.h>
20 
21 #include <fstream>
22 #include <iostream>
23 #include <vector>
24 #include <algorithm>
25 
26 using namespace std;
27 using namespace Belle2;
28 
29 //-----------------------------------------------------------------
30 // Register module
31 //-----------------------------------------------------------------
32 
33 REG_MODULE(DQMHistAnalysisTRGGDL);
34 
35 DQMHistAnalysisTRGGDLModule::DQMHistAnalysisTRGGDLModule()
37 {
38  // set module description (e.g. insert text)
39  setDescription("Modify and analyze the data quality histograms of TRGGDL");
41  addParam("debug", m_debug, "debug mode", false);
42  addParam("alert", m_enableAlert, "Enable color alert", true);
43 }
44 
46 {
47 #ifdef _BELLE2_EPICS
48  if (getUseEpics()) {
49  if (ca_current_context()) ca_context_destroy();
50  }
51 #endif
52 }
53 
55 {
56  gROOT->cd();
57 
58  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
59  char charhist_eff[1000];
60  sprintf(charhist_eff, "hGDL_ana_eff_%s", skim_smap[iskim].c_str());
61  m_h_eff[iskim] = new TH1D(charhist_eff, charhist_eff, n_eff, 0, n_eff);
62  sprintf(charhist_eff, "hGDL_ana_eff_fast_%s", skim_smap[iskim].c_str());
63  m_h_eff_fast[iskim] = new TH1D(charhist_eff, charhist_eff, n_eff, 0, n_eff);
64  for (int i = 0; i < n_eff; i++) {
65  m_h_eff[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
66  m_h_eff_fast[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
67  }
68  char charhist_c_eff[1000];
69  sprintf(charhist_c_eff, "TRGGDL/hGDL_ana_eff_%s", skim_smap[iskim].c_str());
70  m_c_eff[iskim] = new TCanvas(charhist_c_eff);
71  sprintf(charhist_c_eff, "TRGGDL/hGDL_ana_eff_fast_%s", skim_smap[iskim].c_str());
72  m_c_eff_fast[iskim] = new TCanvas(charhist_c_eff);
73  }
74 
75  m_h_eff_shifter = new TH1D("hGDL_ana_eff_shifter", "hGDL_ana_eff_shifter", n_eff_shifter, 0, n_eff_shifter);
76  m_h_eff_shifter->GetYaxis()->SetTitle("efficiency");
77  m_h_eff_shifter_fast = new TH1D("hGDL_ana_eff_shifter_fast", "hGDL_ana_eff_shifter_fast", n_eff_shifter, 0, n_eff_shifter);
78  m_h_eff_shifter_fast->GetYaxis()->SetTitle("efficiency");
79  for (int i = 0; i < n_eff_shifter; i++) {
80  m_h_eff_shifter->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
81  m_h_eff_shifter_fast->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
82  m_line_limit_low_shifter[i] = new TLine(i, m_limit_low_shifter[i], i + 1, m_limit_low_shifter[i]);
84  }
85  m_c_eff_shifter = new TCanvas("TRGGDL/hGDL_ana_eff_shifter");
86  m_c_eff_shifter_fast = new TCanvas("TRGGDL/hGDL_ana_eff_shifter_fast");
87 
88  m_h_pure_eff = new TH1D("hGDL_ana_pure_eff", "hGDL_ana_pure_eff", n_pure_eff, 0, n_pure_eff);
89  for (int i = 0; i < n_pure_eff; i++) {
90  m_h_pure_eff->GetXaxis()->SetBinLabel(i + 1, c_pure_eff[i]);
91  }
92  m_c_pure_eff = new TCanvas("TRGGDL/hGDL_ana_pure_eff");
93 
94 
95  m_rtype = findHist("DQMInfo/rtype");
96  m_runtype = m_rtype ? m_rtype->GetTitle() : "";
97 
98 #ifdef _BELLE2_EPICS
99  if (getUseEpics()) {
100  if (!ca_current_context()) SEVCHK(ca_context_create(ca_disable_preemptive_callback), "ca_context_create");
101  for (int i = 0; i < n_eff_shifter; i++) {
102  std::string aa = "TRGAna:eff_shift_" + std::to_string(i);
103  SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid[i]), "ca_create_channel failure");
104  // Read LO and HI limits from EPICS, seems this needs additional channels?
105  // SEVCHK(ca_get(DBR_DOUBLE,mychid[i],(void*)&data),"ca_get failure"); // data is only valid after ca_pend_io!!
106  }
107  for (int i = 0; i < nskim_gdldqm; i++) {
108  std::string aa = "TRGAna:entry_" + std::to_string(i);
109  SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid_entry[i]), "ca_create_channel failure");
110  }
111  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
112  }
113 #endif
114 
115  B2DEBUG(20, "DQMHistAnalysisTRGGDL: initialized.");
116 }
117 
118 
120 {
121 
122  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
123 
124  //get histo
125  char c_psn[1000];
126  sprintf(c_psn, "TRGGDL/hGDL_psn_extra_fast_%s", skim_smap[iskim].c_str());
127  m_h_psn_extra_fast[iskim] = (TH1D*)findHist(c_psn);
129  if (m_h_psn_extra_fast[iskim] == nullptr) {
130  B2WARNING("Histogram/canvas named TRGGDL/hGDL_psn_extra_fast is not found.");
131  continue;
132  }
133 
134  //fill efficiency values
135  if (m_h_psn_extra_fast[iskim]->GetBinContent(0 + 1) == 0)continue;
136  if (m_h_psn_extra_fast[iskim]->GetBinContent(5 + 1) == 0)continue;
137  m_h_eff_fast[iskim]->SetBinContent(1, m_h_psn_extra_fast[iskim]->GetBinContent(1 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
138  5 + 1)); //fff with c4|hie
139  m_h_eff_fast[iskim]->SetBinContent(2, m_h_psn_extra_fast[iskim]->GetBinContent(2 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
140  5 + 1)); //ffo with c4|hie
141  m_h_eff_fast[iskim]->SetBinContent(3, m_h_psn_extra_fast[iskim]->GetBinContent(3 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
142  5 + 1)); //ffb with c4|hie
143  m_h_eff_fast[iskim]->SetBinContent(4, m_h_psn_extra_fast[iskim]->GetBinContent(19 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
144  5 + 1)); //ffy with c4|hie
145  m_h_eff_fast[iskim]->SetBinContent(5, m_h_psn_extra_fast[iskim]->GetBinContent(20 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
146  5 + 1)); //fyo with c4|hie
147  m_h_eff_fast[iskim]->SetBinContent(6, m_h_psn_extra_fast[iskim]->GetBinContent(21 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
148  5 + 1)); //fyb with c4|hie
149  m_h_eff_fast[iskim]->SetBinError(1, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(1 + 1)) /
150  m_h_psn_extra_fast[iskim]->GetBinContent(
151  5 + 1)); //fff with c4|hie
152  m_h_eff_fast[iskim]->SetBinError(2, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(2 + 1)) /
153  m_h_psn_extra_fast[iskim]->GetBinContent(
154  5 + 1)); //ffo with c4|hie
155  m_h_eff_fast[iskim]->SetBinError(3, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(3 + 1)) /
156  m_h_psn_extra_fast[iskim]->GetBinContent(
157  5 + 1)); //ffb with c4|hie
158  m_h_eff_fast[iskim]->SetBinError(4, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(19 + 1)) /
159  m_h_psn_extra_fast[iskim]->GetBinContent(
160  5 + 1)); //ffy with c4|hie
161  m_h_eff_fast[iskim]->SetBinError(5, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(20 + 1)) /
162  m_h_psn_extra_fast[iskim]->GetBinContent(
163  5 + 1)); //fyo with c4|hie
164  m_h_eff_fast[iskim]->SetBinError(6, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(21 + 1)) /
165  m_h_psn_extra_fast[iskim]->GetBinContent(
166  5 + 1)); //fyb with c4|hie
167 
168  if (m_h_psn_extra_fast[iskim]->GetBinContent(6 + 1) == 0)continue;
169  m_h_eff_fast[iskim]->SetBinContent(7, m_h_psn_extra_fast[iskim]->GetBinContent(27 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
170  6 + 1)); //hie with fff|ffo|ffb
171  m_h_eff_fast[iskim]->SetBinContent(8, m_h_psn_extra_fast[iskim]->GetBinContent(26 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
172  6 + 1)); //c4 with fff|ffo|ffb
173  m_h_eff_fast[iskim]->SetBinContent(9, m_h_psn_extra_fast[iskim]->GetBinContent(28 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
174  6 + 1)); //lml0 with fff|ffo|ffb
175  m_h_eff_fast[iskim]->SetBinContent(10, m_h_psn_extra_fast[iskim]->GetBinContent(29 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
176  6 + 1)); //lml1 with fff|ffo|ffb
177  m_h_eff_fast[iskim]->SetBinContent(11, m_h_psn_extra_fast[iskim]->GetBinContent(30 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
178  6 + 1)); //lml2 with fff|ffo|ffb
179  m_h_eff_fast[iskim]->SetBinContent(12, m_h_psn_extra_fast[iskim]->GetBinContent(31 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
180  6 + 1)); //lml3 with fff|ffo|ffb
181  m_h_eff_fast[iskim]->SetBinContent(13, m_h_psn_extra_fast[iskim]->GetBinContent(32 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
182  6 + 1)); //lml4 with fff|ffo|ffb
183  m_h_eff_fast[iskim]->SetBinContent(14, m_h_psn_extra_fast[iskim]->GetBinContent(33 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
184  6 + 1)); //lml5 with fff|ffo|ffb
185  m_h_eff_fast[iskim]->SetBinContent(15, m_h_psn_extra_fast[iskim]->GetBinContent(34 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
186  6 + 1)); //lml6 with fff|ffo|ffb
187  m_h_eff_fast[iskim]->SetBinContent(16, m_h_psn_extra_fast[iskim]->GetBinContent(35 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
188  6 + 1)); //lml7 with fff|ffo|ffb
189  m_h_eff_fast[iskim]->SetBinContent(17, m_h_psn_extra_fast[iskim]->GetBinContent(36 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
190  6 + 1)); //lml8 with fff|ffo|ffb
191  m_h_eff_fast[iskim]->SetBinContent(18, m_h_psn_extra_fast[iskim]->GetBinContent(37 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
192  6 + 1)); //lml9 with fff|ffo|ffb
193  m_h_eff_fast[iskim]->SetBinContent(19, m_h_psn_extra_fast[iskim]->GetBinContent(38 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
194  6 + 1)); //lml10 with fff|ffo|ffb
195  m_h_eff_fast[iskim]->SetBinContent(20, m_h_psn_extra_fast[iskim]->GetBinContent(39 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
196  6 + 1)); //lml12 with fff|ffo|ffb
197  m_h_eff_fast[iskim]->SetBinContent(21, m_h_psn_extra_fast[iskim]->GetBinContent(40 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
198  6 + 1)); //lml13 with fff|ffo|ffb
199  m_h_eff_fast[iskim]->SetBinContent(22, m_h_psn_extra_fast[iskim]->GetBinContent(9 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
200  0 + 1)); //bha3d with all
201  m_h_eff_fast[iskim]->SetBinContent(23, m_h_psn_extra_fast[iskim]->GetBinContent(42 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
202  6 + 1)); //mu_b2b with fff|ffo|ffb
203  m_h_eff_fast[iskim]->SetBinError(7, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(27 + 1)) /
204  m_h_psn_extra_fast[iskim]->GetBinContent(
205  6 + 1)); //hie with fff|ffo|ffb
206  m_h_eff_fast[iskim]->SetBinError(8, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(26 + 1)) /
207  m_h_psn_extra_fast[iskim]->GetBinContent(
208  6 + 1)); //c4 with fff|ffo|ffb
209  m_h_eff_fast[iskim]->SetBinError(9, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(28 + 1)) /
210  m_h_psn_extra_fast[iskim]->GetBinContent(
211  6 + 1)); //lml0 with fff|ffo|ffb
212  m_h_eff_fast[iskim]->SetBinError(10, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(29 + 1)) /
213  m_h_psn_extra_fast[iskim]->GetBinContent(
214  6 + 1)); //lml1 with fff|ffo|ffb
215  m_h_eff_fast[iskim]->SetBinError(11, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(30 + 1)) /
216  m_h_psn_extra_fast[iskim]->GetBinContent(
217  6 + 1)); //lml2 with fff|ffo|ffb
218  m_h_eff_fast[iskim]->SetBinError(12, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(31 + 1)) /
219  m_h_psn_extra_fast[iskim]->GetBinContent(
220  6 + 1)); //lml3 with fff|ffo|ffb
221  m_h_eff_fast[iskim]->SetBinError(13, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(32 + 1)) /
222  m_h_psn_extra_fast[iskim]->GetBinContent(
223  6 + 1)); //lml4 with fff|ffo|ffb
224  m_h_eff_fast[iskim]->SetBinError(14, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(33 + 1)) /
225  m_h_psn_extra_fast[iskim]->GetBinContent(
226  6 + 1)); //lml5 with fff|ffo|ffb
227  m_h_eff_fast[iskim]->SetBinError(15, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(34 + 1)) /
228  m_h_psn_extra_fast[iskim]->GetBinContent(
229  6 + 1)); //lml6 with fff|ffo|ffb
230  m_h_eff_fast[iskim]->SetBinError(16, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(35 + 1)) /
231  m_h_psn_extra_fast[iskim]->GetBinContent(
232  6 + 1)); //lml7 with fff|ffo|ffb
233  m_h_eff_fast[iskim]->SetBinError(17, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(36 + 1)) /
234  m_h_psn_extra_fast[iskim]->GetBinContent(
235  6 + 1)); //lml8 with fff|ffo|ffb
236  m_h_eff_fast[iskim]->SetBinError(18, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(37 + 1)) /
237  m_h_psn_extra_fast[iskim]->GetBinContent(
238  6 + 1)); //lml9 with fff|ffo|ffb
239  m_h_eff_fast[iskim]->SetBinError(19, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(38 + 1)) /
240  m_h_psn_extra_fast[iskim]->GetBinContent(
241  6 + 1)); //lml10 with fff|ffo|ffb
242  m_h_eff_fast[iskim]->SetBinError(20, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(39 + 1)) /
243  m_h_psn_extra_fast[iskim]->GetBinContent(
244  6 + 1)); //lml12 with fff|ffo|ffb
245  m_h_eff_fast[iskim]->SetBinError(21, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(40 + 1)) /
246  m_h_psn_extra_fast[iskim]->GetBinContent(
247  6 + 1)); //lml13 with fff|ffo|ffb
248  m_h_eff_fast[iskim]->SetBinError(22, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(9 + 1)) /
249  m_h_psn_extra_fast[iskim]->GetBinContent(
250  0 + 1)); //bha3d with all
251  m_h_eff_fast[iskim]->SetBinError(23, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(42 + 1)) /
252  m_h_psn_extra_fast[iskim]->GetBinContent(
253  6 + 1)); //mu_b2b with fff|ffo|ffb
254 
255  if (m_h_psn_extra_fast[iskim]->GetBinContent(14 + 1) == 0)continue;
256  m_h_eff_fast[iskim]->SetBinContent(24, m_h_psn_extra_fast[iskim]->GetBinContent(48 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
257  14 + 1)); //mu_b2b with lml|eclmumu
258  m_h_eff_fast[iskim]->SetBinContent(25, m_h_psn_extra_fast[iskim]->GetBinContent(49 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
259  14 + 1)); //mu_eb2b with lml|eclmumu
260  m_h_eff_fast[iskim]->SetBinContent(26, m_h_psn_extra_fast[iskim]->GetBinContent(50 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
261  14 + 1)); //cdcklm1 with fff|ffo|ffb
262  m_h_eff_fast[iskim]->SetBinContent(27, m_h_psn_extra_fast[iskim]->GetBinContent(51 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
263  14 + 1)); //cdcklm2 with fff|ffo|ffb
264  m_h_eff_fast[iskim]->SetBinContent(28, m_h_psn_extra_fast[iskim]->GetBinContent(15 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
265  14 + 1)); //fff with lml|eclmumu
266  m_h_eff_fast[iskim]->SetBinContent(29, m_h_psn_extra_fast[iskim]->GetBinContent(16 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
267  14 + 1)); //ffo with lml|eclmumu
268  m_h_eff_fast[iskim]->SetBinContent(30, m_h_psn_extra_fast[iskim]->GetBinContent(17 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
269  14 + 1)); //ffb with lml|eclmumu
270  m_h_eff_fast[iskim]->SetBinContent(31, m_h_psn_extra_fast[iskim]->GetBinContent(11 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
271  14 + 1)); //ff with lml|eclmumu
272  m_h_eff_fast[iskim]->SetBinContent(32, m_h_psn_extra_fast[iskim]->GetBinContent(13 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
273  14 + 1)); //f with lml|eclmumu
274  m_h_eff_fast[iskim]->SetBinContent(33, m_h_psn_extra_fast[iskim]->GetBinContent(23 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
275  14 + 1)); //ffy with lml|eclmumu
276  m_h_eff_fast[iskim]->SetBinContent(34, m_h_psn_extra_fast[iskim]->GetBinContent(24 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
277  14 + 1)); //fyo with lml|eclmumu
278  m_h_eff_fast[iskim]->SetBinContent(35, m_h_psn_extra_fast[iskim]->GetBinContent(25 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
279  14 + 1)); //fyb with lml|eclmumu
280  m_h_eff_fast[iskim]->SetBinError(24, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(48 + 1)) /
281  m_h_psn_extra_fast[iskim]->GetBinContent(
282  14 + 1)); //mu_b2b with lml|eclmumu
283  m_h_eff_fast[iskim]->SetBinError(25, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(49 + 1)) /
284  m_h_psn_extra_fast[iskim]->GetBinContent(
285  14 + 1)); //mu_eb2b with lml|eclmumu
286  m_h_eff_fast[iskim]->SetBinError(26, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(50 + 1)) /
287  m_h_psn_extra_fast[iskim]->GetBinContent(
288  14 + 1)); //cdcklm1 with lml|eclmumu
289  m_h_eff_fast[iskim]->SetBinError(27, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(51 + 1)) /
290  m_h_psn_extra_fast[iskim]->GetBinContent(
291  14 + 1)); //cdcklm2 with lml|eclmumu
292  m_h_eff_fast[iskim]->SetBinError(28, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(15 + 1)) /
293  m_h_psn_extra_fast[iskim]->GetBinContent(
294  14 + 1)); //fff with lml|eclmumu
295  m_h_eff_fast[iskim]->SetBinError(29, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(16 + 1)) /
296  m_h_psn_extra_fast[iskim]->GetBinContent(
297  14 + 1)); //ffo with lml|eclmumu
298  m_h_eff_fast[iskim]->SetBinError(30, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(17 + 1)) /
299  m_h_psn_extra_fast[iskim]->GetBinContent(
300  14 + 1)); //ffb with lml|eclmumu
301  m_h_eff_fast[iskim]->SetBinError(31, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(11 + 1)) /
302  m_h_psn_extra_fast[iskim]->GetBinContent(
303  14 + 1)); //ff with lml|eclmumu
304  m_h_eff_fast[iskim]->SetBinError(32, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(13 + 1)) /
305  m_h_psn_extra_fast[iskim]->GetBinContent(
306  14 + 1)); //f with lml|eclmumu
307  m_h_eff_fast[iskim]->SetBinError(33, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(23 + 1)) /
308  m_h_psn_extra_fast[iskim]->GetBinContent(
309  14 + 1)); //ffy with lml|eclmumu
310  m_h_eff_fast[iskim]->SetBinError(34, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(24 + 1)) /
311  m_h_psn_extra_fast[iskim]->GetBinContent(
312  14 + 1)); //fyo with lml|eclmumu
313  m_h_eff_fast[iskim]->SetBinError(35, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(25 + 1)) /
314  m_h_psn_extra_fast[iskim]->GetBinContent(
315  14 + 1)); //fyb with lml|eclmumu
316 
317  m_h_eff_fast[iskim]->SetBinContent(36, m_h_psn_extra_fast[iskim]->GetBinContent(55 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
318  6 + 1)); //cdcecl2 with fff|ffo|ffb
319  m_h_eff_fast[iskim]->SetBinContent(37, m_h_psn_extra_fast[iskim]->GetBinContent(68 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
320  14 + 1)); //ecleklm with lml|eclmumu
321  m_h_eff_fast[iskim]->SetBinContent(38, m_h_psn_extra_fast[iskim]->GetBinContent(74 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
322  5 + 1)); //syo with c4|hie
323  m_h_eff_fast[iskim]->SetBinContent(39, m_h_psn_extra_fast[iskim]->GetBinContent(75 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
324  5 + 1)); //yioiecl1 with c4|hie
325  m_h_eff_fast[iskim]->SetBinContent(40, m_h_psn_extra_fast[iskim]->GetBinContent(76 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
326  5 + 1)); //stt with c4|hie
327 
328  m_h_eff_fast[iskim]->SetBinError(36, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(55 + 1)) /
329  m_h_psn_extra_fast[iskim]->GetBinContent(
330  6 + 1)); //cdcecl2 with fff|ffo|ffb
331  m_h_eff_fast[iskim]->SetBinError(37, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(68 + 1)) /
332  m_h_psn_extra_fast[iskim]->GetBinContent(
333  14 + 1)); //ecleklm with lml|eclmumu
334  m_h_eff_fast[iskim]->SetBinError(38, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(74 + 1)) /
335  m_h_psn_extra_fast[iskim]->GetBinContent(
336  5 + 1)); //syo with c4|hie
337  m_h_eff_fast[iskim]->SetBinError(39, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(75 + 1)) /
338  m_h_psn_extra_fast[iskim]->GetBinContent(
339  5 + 1)); //yioiecl1 with c4|hie
340  m_h_eff_fast[iskim]->SetBinError(40, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(76 + 1)) /
341  m_h_psn_extra_fast[iskim]->GetBinContent(
342  5 + 1)); //stt with c4|hie
343  }
344 
345  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
346 
347  //get histo
348  char c_psn[1000];
349  sprintf(c_psn, "TRGGDL/hGDL_psn_extra_%s", skim_smap[iskim].c_str());
350  m_h_psn_extra[iskim] = (TH1D*)findHist(c_psn);
352  if (m_h_psn_extra[iskim] == nullptr) {
353  B2WARNING("Histogram/canvas named TRGGDL/hGDL_psn_extra is not found.");
354  continue;
355  }
356 
357  //fill efficiency values
358  if (m_h_psn_extra[iskim]->GetBinContent(0 + 1) == 0)continue;
359  if (m_h_psn_extra[iskim]->GetBinContent(5 + 1) == 0)continue;
360  m_h_eff[iskim]->SetBinContent(1, m_h_psn_extra[iskim]->GetBinContent(1 + 1) / m_h_psn_extra[iskim]->GetBinContent(
361  5 + 1)); //fff with c4|hie
362  m_h_eff[iskim]->SetBinContent(2, m_h_psn_extra[iskim]->GetBinContent(2 + 1) / m_h_psn_extra[iskim]->GetBinContent(
363  5 + 1)); //ffo with c4|hie
364  m_h_eff[iskim]->SetBinContent(3, m_h_psn_extra[iskim]->GetBinContent(3 + 1) / m_h_psn_extra[iskim]->GetBinContent(
365  5 + 1)); //ffb with c4|hie
366  m_h_eff[iskim]->SetBinContent(4, m_h_psn_extra[iskim]->GetBinContent(19 + 1) / m_h_psn_extra[iskim]->GetBinContent(
367  5 + 1)); //ffy with c4|hie
368  m_h_eff[iskim]->SetBinContent(5, m_h_psn_extra[iskim]->GetBinContent(20 + 1) / m_h_psn_extra[iskim]->GetBinContent(
369  5 + 1)); //fyo with c4|hie
370  m_h_eff[iskim]->SetBinContent(6, m_h_psn_extra[iskim]->GetBinContent(21 + 1) / m_h_psn_extra[iskim]->GetBinContent(
371  5 + 1)); //fyb with c4|hie
372  m_h_eff[iskim]->SetBinError(1, sqrt(m_h_psn_extra[iskim]->GetBinContent(1 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
373  5 + 1)); //fff with c4|hie
374  m_h_eff[iskim]->SetBinError(2, sqrt(m_h_psn_extra[iskim]->GetBinContent(2 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
375  5 + 1)); //ffo with c4|hie
376  m_h_eff[iskim]->SetBinError(3, sqrt(m_h_psn_extra[iskim]->GetBinContent(3 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
377  5 + 1)); //ffb with c4|hie
378  m_h_eff[iskim]->SetBinError(4, sqrt(m_h_psn_extra[iskim]->GetBinContent(19 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
379  5 + 1)); //ffy with c4|hie
380  m_h_eff[iskim]->SetBinError(5, sqrt(m_h_psn_extra[iskim]->GetBinContent(20 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
381  5 + 1)); //fyo with c4|hie
382  m_h_eff[iskim]->SetBinError(6, sqrt(m_h_psn_extra[iskim]->GetBinContent(21 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
383  5 + 1)); //fyb with c4|hie
384 
385  if (m_h_psn_extra[iskim]->GetBinContent(6 + 1) == 0)continue;
386  m_h_eff[iskim]->SetBinContent(7, m_h_psn_extra[iskim]->GetBinContent(27 + 1) / m_h_psn_extra[iskim]->GetBinContent(
387  6 + 1)); //hie with fff|ffo|ffb
388  m_h_eff[iskim]->SetBinContent(8, m_h_psn_extra[iskim]->GetBinContent(26 + 1) / m_h_psn_extra[iskim]->GetBinContent(
389  6 + 1)); //c4 with fff|ffo|ffb
390  m_h_eff[iskim]->SetBinContent(9, m_h_psn_extra[iskim]->GetBinContent(28 + 1) / m_h_psn_extra[iskim]->GetBinContent(
391  6 + 1)); //lml0 with fff|ffo|ffb
392  m_h_eff[iskim]->SetBinContent(10, m_h_psn_extra[iskim]->GetBinContent(29 + 1) / m_h_psn_extra[iskim]->GetBinContent(
393  6 + 1)); //lml1 with fff|ffo|ffb
394  m_h_eff[iskim]->SetBinContent(11, m_h_psn_extra[iskim]->GetBinContent(30 + 1) / m_h_psn_extra[iskim]->GetBinContent(
395  6 + 1)); //lml2 with fff|ffo|ffb
396  m_h_eff[iskim]->SetBinContent(12, m_h_psn_extra[iskim]->GetBinContent(31 + 1) / m_h_psn_extra[iskim]->GetBinContent(
397  6 + 1)); //lml3 with fff|ffo|ffb
398  m_h_eff[iskim]->SetBinContent(13, m_h_psn_extra[iskim]->GetBinContent(32 + 1) / m_h_psn_extra[iskim]->GetBinContent(
399  6 + 1)); //lml4 with fff|ffo|ffb
400  m_h_eff[iskim]->SetBinContent(14, m_h_psn_extra[iskim]->GetBinContent(33 + 1) / m_h_psn_extra[iskim]->GetBinContent(
401  6 + 1)); //lml5 with fff|ffo|ffb
402  m_h_eff[iskim]->SetBinContent(15, m_h_psn_extra[iskim]->GetBinContent(34 + 1) / m_h_psn_extra[iskim]->GetBinContent(
403  6 + 1)); //lml6 with fff|ffo|ffb
404  m_h_eff[iskim]->SetBinContent(16, m_h_psn_extra[iskim]->GetBinContent(35 + 1) / m_h_psn_extra[iskim]->GetBinContent(
405  6 + 1)); //lml7 with fff|ffo|ffb
406  m_h_eff[iskim]->SetBinContent(17, m_h_psn_extra[iskim]->GetBinContent(36 + 1) / m_h_psn_extra[iskim]->GetBinContent(
407  6 + 1)); //lml8 with fff|ffo|ffb
408  m_h_eff[iskim]->SetBinContent(18, m_h_psn_extra[iskim]->GetBinContent(37 + 1) / m_h_psn_extra[iskim]->GetBinContent(
409  6 + 1)); //lml9 with fff|ffo|ffb
410  m_h_eff[iskim]->SetBinContent(19, m_h_psn_extra[iskim]->GetBinContent(38 + 1) / m_h_psn_extra[iskim]->GetBinContent(
411  6 + 1)); //lml10 with fff|ffo|ffb
412  m_h_eff[iskim]->SetBinContent(20, m_h_psn_extra[iskim]->GetBinContent(39 + 1) / m_h_psn_extra[iskim]->GetBinContent(
413  6 + 1)); //lml12 with fff|ffo|ffb
414  m_h_eff[iskim]->SetBinContent(21, m_h_psn_extra[iskim]->GetBinContent(40 + 1) / m_h_psn_extra[iskim]->GetBinContent(
415  6 + 1)); //lml13 with fff|ffo|ffb
416  m_h_eff[iskim]->SetBinContent(22, m_h_psn_extra[iskim]->GetBinContent(9 + 1) / m_h_psn_extra[iskim]->GetBinContent(
417  0 + 1)); //bha3d with all
418  m_h_eff[iskim]->SetBinContent(23, m_h_psn_extra[iskim]->GetBinContent(42 + 1) / m_h_psn_extra[iskim]->GetBinContent(
419  6 + 1)); //mu_b2b with fff|ffo|ffb
420  m_h_eff[iskim]->SetBinError(7, sqrt(m_h_psn_extra[iskim]->GetBinContent(27 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
421  6 + 1)); //hie with fff|ffo|ffb
422  m_h_eff[iskim]->SetBinError(8, sqrt(m_h_psn_extra[iskim]->GetBinContent(26 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
423  6 + 1)); //c4 with fff|ffo|ffb
424  m_h_eff[iskim]->SetBinError(9, sqrt(m_h_psn_extra[iskim]->GetBinContent(28 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
425  6 + 1)); //lml0 with fff|ffo|ffb
426  m_h_eff[iskim]->SetBinError(10, sqrt(m_h_psn_extra[iskim]->GetBinContent(29 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
427  6 + 1)); //lml1 with fff|ffo|ffb
428  m_h_eff[iskim]->SetBinError(11, sqrt(m_h_psn_extra[iskim]->GetBinContent(30 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
429  6 + 1)); //lml2 with fff|ffo|ffb
430  m_h_eff[iskim]->SetBinError(12, sqrt(m_h_psn_extra[iskim]->GetBinContent(31 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
431  6 + 1)); //lml3 with fff|ffo|ffb
432  m_h_eff[iskim]->SetBinError(13, sqrt(m_h_psn_extra[iskim]->GetBinContent(32 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
433  6 + 1)); //lml4 with fff|ffo|ffb
434  m_h_eff[iskim]->SetBinError(14, sqrt(m_h_psn_extra[iskim]->GetBinContent(33 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
435  6 + 1)); //lml5 with fff|ffo|ffb
436  m_h_eff[iskim]->SetBinError(15, sqrt(m_h_psn_extra[iskim]->GetBinContent(34 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
437  6 + 1)); //lml6 with fff|ffo|ffb
438  m_h_eff[iskim]->SetBinError(16, sqrt(m_h_psn_extra[iskim]->GetBinContent(35 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
439  6 + 1)); //lml7 with fff|ffo|ffb
440  m_h_eff[iskim]->SetBinError(17, sqrt(m_h_psn_extra[iskim]->GetBinContent(36 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
441  6 + 1)); //lml8 with fff|ffo|ffb
442  m_h_eff[iskim]->SetBinError(18, sqrt(m_h_psn_extra[iskim]->GetBinContent(37 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
443  6 + 1)); //lml9 with fff|ffo|ffb
444  m_h_eff[iskim]->SetBinError(19, sqrt(m_h_psn_extra[iskim]->GetBinContent(38 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
445  6 + 1)); //lml10 with fff|ffo|ffb
446  m_h_eff[iskim]->SetBinError(20, sqrt(m_h_psn_extra[iskim]->GetBinContent(39 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
447  6 + 1)); //lml12 with fff|ffo|ffb
448  m_h_eff[iskim]->SetBinError(21, sqrt(m_h_psn_extra[iskim]->GetBinContent(40 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
449  6 + 1)); //lml13 with fff|ffo|ffb
450  m_h_eff[iskim]->SetBinError(22, sqrt(m_h_psn_extra[iskim]->GetBinContent(9 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
451  0 + 1)); //bha3d with all
452  m_h_eff[iskim]->SetBinError(23, sqrt(m_h_psn_extra[iskim]->GetBinContent(42 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
453  6 + 1)); //mu_b2b with fff|ffo|ffb
454 
455  if (m_h_psn_extra[iskim]->GetBinContent(14 + 1) == 0)continue;
456  m_h_eff[iskim]->SetBinContent(24, m_h_psn_extra[iskim]->GetBinContent(48 + 1) / m_h_psn_extra[iskim]->GetBinContent(
457  14 + 1)); //mu_b2b with lml|eclmumu
458  m_h_eff[iskim]->SetBinContent(25, m_h_psn_extra[iskim]->GetBinContent(49 + 1) / m_h_psn_extra[iskim]->GetBinContent(
459  14 + 1)); //mu_eb2b with lml|eclmumu
460  m_h_eff[iskim]->SetBinContent(26, m_h_psn_extra[iskim]->GetBinContent(50 + 1) / m_h_psn_extra[iskim]->GetBinContent(
461  14 + 1)); //cdcklm1 with fff|ffo|ffb
462  m_h_eff[iskim]->SetBinContent(27, m_h_psn_extra[iskim]->GetBinContent(51 + 1) / m_h_psn_extra[iskim]->GetBinContent(
463  14 + 1)); //cdcklm2 with fff|ffo|ffb
464  m_h_eff[iskim]->SetBinContent(28, m_h_psn_extra[iskim]->GetBinContent(15 + 1) / m_h_psn_extra[iskim]->GetBinContent(
465  14 + 1)); //fff with lml|eclmumu
466  m_h_eff[iskim]->SetBinContent(29, m_h_psn_extra[iskim]->GetBinContent(16 + 1) / m_h_psn_extra[iskim]->GetBinContent(
467  14 + 1)); //ffo with lml|eclmumu
468  m_h_eff[iskim]->SetBinContent(30, m_h_psn_extra[iskim]->GetBinContent(17 + 1) / m_h_psn_extra[iskim]->GetBinContent(
469  14 + 1)); //ffb with lml|eclmumu
470  m_h_eff[iskim]->SetBinContent(31, m_h_psn_extra[iskim]->GetBinContent(11 + 1) / m_h_psn_extra[iskim]->GetBinContent(
471  14 + 1)); //ff with lml|eclmumu
472  m_h_eff[iskim]->SetBinContent(32, m_h_psn_extra[iskim]->GetBinContent(13 + 1) / m_h_psn_extra[iskim]->GetBinContent(
473  14 + 1)); //f with lml|eclmumu
474  m_h_eff[iskim]->SetBinContent(33, m_h_psn_extra[iskim]->GetBinContent(23 + 1) / m_h_psn_extra[iskim]->GetBinContent(
475  14 + 1)); //ffy with lml|eclmumu
476  m_h_eff[iskim]->SetBinContent(34, m_h_psn_extra[iskim]->GetBinContent(24 + 1) / m_h_psn_extra[iskim]->GetBinContent(
477  14 + 1)); //fyo with lml|eclmumu
478  m_h_eff[iskim]->SetBinContent(35, m_h_psn_extra[iskim]->GetBinContent(25 + 1) / m_h_psn_extra[iskim]->GetBinContent(
479  14 + 1)); //fyb with lml|eclmumu
480  m_h_eff[iskim]->SetBinError(24, sqrt(m_h_psn_extra[iskim]->GetBinContent(48 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
481  14 + 1)); //mu_b2b with lml|eclmumu
482  m_h_eff[iskim]->SetBinError(25, sqrt(m_h_psn_extra[iskim]->GetBinContent(49 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
483  14 + 1)); //mu_eb2b with lml|eclmumu
484  m_h_eff[iskim]->SetBinError(26, sqrt(m_h_psn_extra[iskim]->GetBinContent(50 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
485  14 + 1)); //cdcklm1 with lml|eclmumu
486  m_h_eff[iskim]->SetBinError(27, sqrt(m_h_psn_extra[iskim]->GetBinContent(51 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
487  14 + 1)); //cdcklm2 with lml|eclmumu
488  m_h_eff[iskim]->SetBinError(28, sqrt(m_h_psn_extra[iskim]->GetBinContent(15 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
489  14 + 1)); //fff with lml|eclmumu
490  m_h_eff[iskim]->SetBinError(29, sqrt(m_h_psn_extra[iskim]->GetBinContent(16 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
491  14 + 1)); //ffo with lml|eclmumu
492  m_h_eff[iskim]->SetBinError(30, sqrt(m_h_psn_extra[iskim]->GetBinContent(17 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
493  14 + 1)); //ffb with lml|eclmumu
494  m_h_eff[iskim]->SetBinError(31, sqrt(m_h_psn_extra[iskim]->GetBinContent(11 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
495  14 + 1)); //ff with lml|eclmumu
496  m_h_eff[iskim]->SetBinError(32, sqrt(m_h_psn_extra[iskim]->GetBinContent(13 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
497  14 + 1)); //f with lml|eclmumu
498  m_h_eff[iskim]->SetBinError(33, sqrt(m_h_psn_extra[iskim]->GetBinContent(23 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
499  14 + 1)); //ffy with lml|eclmumu
500  m_h_eff[iskim]->SetBinError(34, sqrt(m_h_psn_extra[iskim]->GetBinContent(24 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
501  14 + 1)); //fyo with lml|eclmumu
502  m_h_eff[iskim]->SetBinError(35, sqrt(m_h_psn_extra[iskim]->GetBinContent(25 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
503  14 + 1)); //fyb with lml|eclmumu
504 
505  m_h_eff[iskim]->SetBinContent(36, m_h_psn_extra[iskim]->GetBinContent(55 + 1) / m_h_psn_extra[iskim]->GetBinContent(
506  6 + 1)); //cdcecl2 with fff|ffo|ffb
507  m_h_eff[iskim]->SetBinContent(37, m_h_psn_extra[iskim]->GetBinContent(68 + 1) / m_h_psn_extra[iskim]->GetBinContent(
508  14 + 1)); //ecleklm with lml|eclmumu
509  m_h_eff[iskim]->SetBinContent(38, m_h_psn_extra[iskim]->GetBinContent(74 + 1) / m_h_psn_extra[iskim]->GetBinContent(
510  5 + 1)); //syo with c4|hie
511  m_h_eff[iskim]->SetBinContent(39, m_h_psn_extra[iskim]->GetBinContent(75 + 1) / m_h_psn_extra[iskim]->GetBinContent(
512  5 + 1)); //yioiecl1 with c4|hie
513  m_h_eff[iskim]->SetBinContent(40, m_h_psn_extra[iskim]->GetBinContent(76 + 1) / m_h_psn_extra[iskim]->GetBinContent(
514  5 + 1)); //stt with c4|hie
515 
516  m_h_eff[iskim]->SetBinError(36, sqrt(m_h_psn_extra[iskim]->GetBinContent(55 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
517  6 + 1)); //cdcecl2 with fff|ffo|ffb
518  m_h_eff[iskim]->SetBinError(37, sqrt(m_h_psn_extra[iskim]->GetBinContent(68 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
519  14 + 1)); //ecleklm with lml|eclmumu
520  m_h_eff[iskim]->SetBinError(38, sqrt(m_h_psn_extra[iskim]->GetBinContent(74 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
521  5 + 1)); //syo with c4|hie
522  m_h_eff[iskim]->SetBinError(39, sqrt(m_h_psn_extra[iskim]->GetBinContent(75 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
523  5 + 1)); //yioiecl1 with c4|hie
524  m_h_eff[iskim]->SetBinError(40, sqrt(m_h_psn_extra[iskim]->GetBinContent(76 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
525  5 + 1)); //stt with c4|hie
526  }
527  //fill efficiency for shifter
528  m_h_eff_shifter_fast->SetBinContent(1, m_h_eff_fast[9] ->GetBinContent(0 + 1)); //fff with c4|hie
529  m_h_eff_shifter_fast->SetBinContent(2, m_h_eff_fast[9] ->GetBinContent(1 + 1)); //ffo with c4|hie
530  m_h_eff_shifter_fast->SetBinContent(3, m_h_eff_fast[9] ->GetBinContent(3 + 1)); //ffy with c4|hie
531  m_h_eff_shifter_fast->SetBinContent(4, m_h_eff_fast[9] ->GetBinContent(4 + 1)); //fyo with c4|hie
532  m_h_eff_shifter_fast->SetBinContent(5, m_h_eff_fast[9] ->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
533  m_h_eff_shifter_fast->SetBinContent(6, m_h_eff_fast[9] ->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
534  m_h_eff_shifter_fast->SetBinContent(7, m_h_eff_fast[10]->GetBinContent(23 + 1)); //mu_b2b with lml|eclmumu
535  m_h_eff_shifter_fast->SetBinContent(8, m_h_eff_fast[10]->GetBinContent(24 + 1)); //mu_eb2b with lml|eclmumu
536  m_h_eff_shifter_fast->SetBinContent(9, m_h_eff_fast[10]->GetBinContent(26 + 1)); //cdcklm2 with lml|eclmumu
537  m_h_eff_shifter_fast->SetBinContent(10, m_h_eff_fast[10]->GetBinContent(35 + 1)); //cdcecl2 with fff|ffo|ffb
538  m_h_eff_shifter_fast->SetBinContent(11, m_h_eff_fast[10]->GetBinContent(36 + 1)); //ecleklm with lml|eclmumu
539  m_h_eff_shifter_fast->SetBinContent(12, m_h_eff_fast[9] ->GetBinContent(37 + 1)); //syo with c4|hie
540  m_h_eff_shifter_fast->SetBinContent(13, m_h_eff_fast[9] ->GetBinContent(38 + 1)); //yioiecl1 with c4|hie
541  m_h_eff_shifter_fast->SetBinContent(14, m_h_eff_fast[9] ->GetBinContent(39 + 1)); //stt with c4|hie
542  m_h_eff_shifter_fast->SetBinError(1, m_h_eff_fast[9] ->GetBinError(0 + 1)); //fff with c4|hie
543  m_h_eff_shifter_fast->SetBinError(2, m_h_eff_fast[9] ->GetBinError(1 + 1)); //ffo with c4|hie
544  m_h_eff_shifter_fast->SetBinError(3, m_h_eff_fast[9] ->GetBinError(3 + 1)); //ffy with c4|hie
545  m_h_eff_shifter_fast->SetBinError(4, m_h_eff_fast[9] ->GetBinError(4 + 1)); //fyo with c4|hie
546  m_h_eff_shifter_fast->SetBinError(5, m_h_eff_fast[9] ->GetBinError(6 + 1)); //hie with fff|ffo|ffb
547  m_h_eff_shifter_fast->SetBinError(6, m_h_eff_fast[9] ->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
548  m_h_eff_shifter_fast->SetBinError(7, m_h_eff_fast[10]->GetBinError(23 + 1)); //mu_b2b with lml|eclmumu
549  m_h_eff_shifter_fast->SetBinError(8, m_h_eff_fast[10]->GetBinError(24 + 1)); //mu_eb2b with lml|eclmumu
550  m_h_eff_shifter_fast->SetBinError(9, m_h_eff_fast[10]->GetBinError(26 + 1)); //cdcklm2 with lml|eclmumu
551  m_h_eff_shifter_fast->SetBinError(10, m_h_eff_fast[10]->GetBinError(35 + 1)); //cdcecl2 with fff|ffo|ffb
552  m_h_eff_shifter_fast->SetBinError(11, m_h_eff_fast[10]->GetBinError(36 + 1)); //ecleklm with lml|eclmumu
553  m_h_eff_shifter_fast->SetBinError(12, m_h_eff_fast[9] ->GetBinError(37 + 1)); //syo with c4|hie
554  m_h_eff_shifter_fast->SetBinError(13, m_h_eff_fast[9] ->GetBinError(38 + 1)); //yioiecl1 with c4|hie
555  m_h_eff_shifter_fast->SetBinError(14, m_h_eff_fast[9] ->GetBinError(39 + 1)); //stt with c4|hie
556 
557  m_h_eff_shifter->SetBinContent(1, m_h_eff[9] ->GetBinContent(0 + 1)); //fff with c4|hie
558  m_h_eff_shifter->SetBinContent(2, m_h_eff[9] ->GetBinContent(1 + 1)); //ffo with c4|hie
559  m_h_eff_shifter->SetBinContent(3, m_h_eff[9] ->GetBinContent(3 + 1)); //ffy with c4|hie
560  m_h_eff_shifter->SetBinContent(4, m_h_eff[9] ->GetBinContent(4 + 1)); //fyo with c4|hie
561  m_h_eff_shifter->SetBinContent(5, m_h_eff[9] ->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
562  m_h_eff_shifter->SetBinContent(6, m_h_eff[9] ->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
563  m_h_eff_shifter->SetBinContent(7, m_h_eff[10]->GetBinContent(23 + 1)); //mu_b2b with lml|eclmumu
564  m_h_eff_shifter->SetBinContent(8, m_h_eff[10]->GetBinContent(24 + 1)); //mu_eb2b with lml|eclmumu
565  m_h_eff_shifter->SetBinContent(9, m_h_eff[10]->GetBinContent(26 + 1)); //cdcklm2 with lml|eclmumu
566  m_h_eff_shifter->SetBinContent(10, m_h_eff[10]->GetBinContent(35 + 1)); //cdcecl2 with fff|ffo|ffb
567  m_h_eff_shifter->SetBinContent(11, m_h_eff[10]->GetBinContent(36 + 1)); //ecleklm with lml|eclmumu
568  m_h_eff_shifter->SetBinContent(12, m_h_eff[9] ->GetBinContent(37 + 1)); //syo with c4|hie
569  m_h_eff_shifter->SetBinContent(13, m_h_eff[9] ->GetBinContent(38 + 1)); //yioiecl1 with c4|hie
570  m_h_eff_shifter->SetBinContent(14, m_h_eff[9] ->GetBinContent(39 + 1)); //stt with c4|hie
571  m_h_eff_shifter->SetBinError(1, m_h_eff[9] ->GetBinError(0 + 1)); //fff with c4|hie
572  m_h_eff_shifter->SetBinError(2, m_h_eff[9] ->GetBinError(1 + 1)); //ffo with c4|hie
573  m_h_eff_shifter->SetBinError(3, m_h_eff[9] ->GetBinError(3 + 1)); //ffy with c4|hie
574  m_h_eff_shifter->SetBinError(4, m_h_eff[9] ->GetBinError(4 + 1)); //fyo with c4|hie
575  m_h_eff_shifter->SetBinError(5, m_h_eff[9] ->GetBinError(6 + 1)); //hie with fff|ffo|ffb
576  m_h_eff_shifter->SetBinError(6, m_h_eff[9] ->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
577  m_h_eff_shifter->SetBinError(7, m_h_eff[10]->GetBinError(23 + 1)); //mu_b2b with lml|eclmumu
578  m_h_eff_shifter->SetBinError(8, m_h_eff[10]->GetBinError(24 + 1)); //mu_eb2b with lml|eclmumu
579  m_h_eff_shifter->SetBinError(9, m_h_eff[10]->GetBinError(26 + 1)); //cdcklm2 with lml|eclmumu
580  m_h_eff_shifter->SetBinError(10, m_h_eff[10]->GetBinError(35 + 1)); //cdcecl2 with fff|ffo|ffb
581  m_h_eff_shifter->SetBinError(11, m_h_eff[10]->GetBinError(36 + 1)); //ecleklm with lml|eclmumu
582  m_h_eff_shifter->SetBinError(12, m_h_eff[9] ->GetBinError(37 + 1)); //syo with c4|hie
583  m_h_eff_shifter->SetBinError(13, m_h_eff[9] ->GetBinError(38 + 1)); //yioiecl1 with c4|hie
584  m_h_eff_shifter->SetBinError(14, m_h_eff[9] ->GetBinError(39 + 1)); //stt with c4|hie
585 
586 
587  //fill efficiency with offline selection
588  m_h_psn_pure_extra = (TH1D*)findHist("TRGGDL/hGDL_psn_pure_extra_all");
589  if (m_h_psn_pure_extra == nullptr) {
590  B2WARNING("Histogram/canvas named hGDL_psn_pure_extra is not found.");
591  } else {
592  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
593  m_h_pure_eff->SetBinContent(1, m_h_psn_pure_extra->GetBinContent(1 + 1) / m_h_psn_pure_extra->GetBinContent(
594  0 + 1)); //fff with c4|hie
595  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
596  m_h_pure_eff->SetBinContent(2, m_h_psn_pure_extra->GetBinContent(4 + 1) / m_h_psn_pure_extra->GetBinContent(
597  3 + 1)); //ffo with c4|hie
598  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
599  m_h_pure_eff->SetBinContent(3, m_h_psn_pure_extra->GetBinContent(7 + 1) / m_h_psn_pure_extra->GetBinContent(
600  6 + 1)); //ffb with c4|hie
601  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
602  m_h_pure_eff->SetBinContent(4, m_h_psn_pure_extra->GetBinContent(2 + 1) / m_h_psn_pure_extra->GetBinContent(
603  0 + 1)); //ffy with c4|hie
604  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
605  m_h_pure_eff->SetBinContent(5, m_h_psn_pure_extra->GetBinContent(5 + 1) / m_h_psn_pure_extra->GetBinContent(
606  3 + 1)); //fyo with c4|hie
607  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
608  m_h_pure_eff->SetBinContent(6, m_h_psn_pure_extra->GetBinContent(8 + 1) / m_h_psn_pure_extra->GetBinContent(
609  6 + 1)); //fyb with c4|hie
610  if (m_h_psn_pure_extra->GetBinContent(9 + 1) != 0)
611  m_h_pure_eff->SetBinContent(7, m_h_psn_pure_extra->GetBinContent(10 + 1) / m_h_psn_pure_extra->GetBinContent(
612  9 + 1)); //hie with fff|ffo|ffb
613  if (m_h_psn_pure_extra->GetBinContent(11 + 1) != 0)
614  m_h_pure_eff->SetBinContent(8, m_h_psn_pure_extra->GetBinContent(12 + 1) / m_h_psn_pure_extra->GetBinContent(
615  11 + 1)); //hie with fff|ffo|ffb
616  }
617 
618  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
619  m_c_eff[iskim]->Clear();
620  m_c_eff[iskim]->cd();
621  m_h_eff[iskim]->SetMinimum(0);
622  m_h_eff[iskim]->Draw();
623  m_c_eff[iskim]->Update();
624  }
625 
626  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
627  m_c_eff_fast[iskim]->Clear();
628  m_c_eff_fast[iskim]->cd();
629  m_h_eff_fast[iskim]->SetMinimum(0);
630  m_h_eff_fast[iskim]->Draw();
631  m_c_eff_fast[iskim]->Update();
632  }
633 
634  m_c_eff_shifter->Clear();
635  m_c_eff_shifter->cd();
636  m_c_eff_shifter->SetFillColor(0);
637  m_h_eff_shifter->SetMaximum(1.1);
638  m_h_eff_shifter->SetMinimum(0);
639  m_h_eff_shifter->SetLineWidth(2);
640  m_h_eff_shifter->SetMarkerStyle(20);
641  m_c_eff_shifter_fast->SetFillColor(0);
642  m_h_eff_shifter_fast->SetLineColor(2);
643  m_h_eff_shifter_fast->SetLineStyle(3);
644  m_h_eff_shifter_fast->SetMaximum(1.1);
645  m_h_eff_shifter_fast->SetMinimum(0);
646  m_h_eff_shifter_fast->SetLineWidth(2);
647  m_h_eff_shifter_fast->SetMarkerStyle(20);
648  m_h_eff_shifter_fast->SetMarkerColor(2);
649  m_h_eff_shifter->SetTitle("TRG efficiency");
650  m_h_eff_shifter_fast->SetTitle("TRG efficiency");
651  m_c_eff_shifter->SetFrameLineColor(1);
652  m_h_eff_shifter->GetXaxis()->SetLabelColor(1);
653  m_h_eff_shifter->GetXaxis()->SetAxisColor(1);
654  m_h_eff_shifter->GetYaxis()->SetTitleColor(1);
655  m_h_eff_shifter->GetYaxis()->SetLabelColor(1);
656  m_h_eff_shifter->GetYaxis()->SetAxisColor(1);
657  m_c_eff_shifter_fast->SetFrameLineColor(1);
658  m_h_eff_shifter_fast->GetXaxis()->SetLabelColor(1);
659  m_h_eff_shifter_fast->GetXaxis()->SetAxisColor(1);
660  m_h_eff_shifter_fast->GetYaxis()->SetTitleColor(1);
661  m_h_eff_shifter_fast->GetYaxis()->SetLabelColor(1);
662  m_h_eff_shifter_fast->GetYaxis()->SetAxisColor(1);
663 
664  if (m_runtype == "physics") {
665  for (int i = 0; i < n_eff_shifter; i++) {
666  double eff = m_h_eff_shifter->GetBinContent(i + 1);
667  double err = m_h_eff_shifter->GetBinError(i + 1);
668  double eff_err_min = eff - 2 * err;
669  double eff_err_max = eff + 2 * err;
670  double eff_fast = m_h_eff_shifter_fast->GetBinContent(i + 1);
671  double err_fast = m_h_eff_shifter_fast->GetBinError(i + 1);
672  double eff_err_min_fast = eff_fast - 2 * err_fast;
673  double eff_err_max_fast = eff_fast + 2 * err_fast;
674  if (
675  (eff_err_max < m_limit_low_shifter[i]) || (eff_err_min > m_limit_high_shifter[i]) ||
676  (eff_err_max_fast < m_limit_low_shifter[i]) || (eff_err_min_fast > m_limit_high_shifter[i])
677  ) {
678  m_c_eff_shifter->SetFillColor(5);
679  m_c_eff_shifter_fast->SetFillColor(5);
680  m_h_eff_shifter->SetTitle("Call TRG expert: bad efficiency");
681  m_h_eff_shifter_fast->SetTitle("Call TRG expert: bad efficiency");
682  m_c_eff_shifter->SetFrameLineColor(2);
683  m_h_eff_shifter->GetXaxis()->SetLabelColor(2);
684  m_h_eff_shifter->GetXaxis()->SetAxisColor(2);
685  m_h_eff_shifter->GetYaxis()->SetTitleColor(2);
686  m_h_eff_shifter->GetYaxis()->SetLabelColor(2);
687  m_h_eff_shifter->GetYaxis()->SetAxisColor(2);
688  m_c_eff_shifter_fast->SetFrameLineColor(2);
689  m_h_eff_shifter_fast->GetXaxis()->SetLabelColor(2);
690  m_h_eff_shifter_fast->GetXaxis()->SetAxisColor(2);
691  m_h_eff_shifter_fast->GetYaxis()->SetTitleColor(2);
692  m_h_eff_shifter_fast->GetYaxis()->SetLabelColor(2);
693  m_h_eff_shifter_fast->GetYaxis()->SetAxisColor(2);
694  }
695  }
696  } else {
697  m_h_eff_shifter->SetTitle("Ignore this plot during non-physic run");
698  m_h_eff_shifter_fast->SetTitle("Ignore this plot during non-physic run");
699  }
700 
701 
702  m_h_eff_shifter->Draw();
703  m_h_eff_shifter_fast->Draw("same");
704 
705  for (int i = 0; i < n_eff_shifter; i++) {
706  m_line_limit_low_shifter[i]-> SetLineColor(1);
707  m_line_limit_low_shifter[i]-> SetLineStyle(2);
708  m_line_limit_low_shifter[i]-> SetLineWidth(2);
709  m_line_limit_low_shifter[i]-> Draw("same");
710  m_line_limit_high_shifter[i]->SetLineColor(1);
711  m_line_limit_high_shifter[i]->SetLineStyle(2);
712  m_line_limit_high_shifter[i]-> SetLineWidth(2);
713  m_line_limit_high_shifter[i]->Draw("same");
714  }
715  m_c_eff_shifter->Update();
716 
717  m_c_eff_shifter_fast->Clear();
718  m_c_eff_shifter_fast->cd();
719  m_h_eff_shifter_fast->Draw();
720  for (int i = 0; i < n_eff_shifter; i++) {
721  m_line_limit_low_shifter[i]-> SetLineColor(1);
722  m_line_limit_low_shifter[i]-> SetLineStyle(2);
723  m_line_limit_low_shifter[i]-> SetLineWidth(2);
724  m_line_limit_low_shifter[i]-> Draw("same");
725  m_line_limit_high_shifter[i]->SetLineColor(1);
726  m_line_limit_high_shifter[i]->SetLineStyle(2);
727  m_line_limit_high_shifter[i]-> SetLineWidth(2);
728  m_line_limit_high_shifter[i]->Draw("same");
729  }
730  m_c_eff_shifter_fast->Update();
731 
732  m_c_pure_eff->Clear();
733  m_c_pure_eff->cd();
734  m_h_pure_eff->SetMinimum(0);
735  m_h_pure_eff->Draw();
736  m_c_pure_eff->Update();
737 
738 
739 #ifdef _BELLE2_EPICS
740  if (getUseEpics()) {
741  for (auto i = 0; i < n_eff_shifter; i++) {
742  double data;
743  //data = m_h_eff_shifter->GetBinContent(i + 1);
744  data = m_h_eff_shifter_fast->GetBinContent(i + 1);
745  if (mychid[i]) SEVCHK(ca_put(DBR_DOUBLE, mychid[i], (void*)&data), "ca_set failure");
746  }
747  for (auto i = 0; i < nskim_gdldqm; i++) {
748  double data = 0;
749  if (m_h_psn_extra[i] == nullptr) {
750  B2WARNING("Histogram/canvas named hGDL_psn_extra is not found.");
751  } else if (m_h_psn_extra[6] == nullptr) {
752  B2WARNING("Histogram/canvas named hGDL_psn_extra is not found.");
753  } else {
754  if (i == 0 || i == 6) {
755  data = m_h_psn_extra[i]->GetBinContent(0 + 1);
756  } else if (m_h_psn_extra[6]->GetBinContent(0 + 1) != 0) {
757  data = m_h_psn_extra[i]->GetBinContent(0 + 1) / m_h_psn_extra[6]->GetBinContent(0 + 1);
758  }
759  }
760 
761  if (mychid_entry[i]) SEVCHK(ca_put(DBR_DOUBLE, mychid_entry[i], (void*)&data), "ca_set failure");
762  }
763  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
764  }
765 #endif
766 
767 }
768 
770 {
771  B2DEBUG(20, "DQMHistAnalysisTRGGDL : endRun called");
772 }
773 
775 {
776 #ifdef _BELLE2_EPICS
777  if (getUseEpics()) {
778  for (auto i = 0; i < n_eff_shifter; i++) {
779  if (mychid[i]) SEVCHK(ca_clear_channel(mychid[i]), "ca_clear_channel failure");
780  }
781  for (auto i = 0; i < nskim_gdldqm; i++) {
782  if (mychid_entry[i]) SEVCHK(ca_clear_channel(mychid_entry[i]), "ca_clear_channel failure");
783  }
784  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
785  }
786 #endif
787  B2DEBUG(20, "terminate called");
788 }
789 
The base class for the histogram analysis module.
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
bool getUseEpics(void)
Getter for EPICS usage.
TH1D * m_h_eff_shifter_fast
Histogram for TRGGDL efficiency, simplified one for CR shifter.
void initialize() override final
Initialize the Module.
static const int n_eff_shifter
number of bins for the simplified efficiency histogram
TCanvas * m_c_eff_shifter_fast
Canvas for TRGGDL efficiency, simplified one for CR shifter.
TCanvas * m_c_eff_fast[nskim_gdldqm]
Canvas for TRGGDL efficiency in each HLT skim.
TH1D * m_h_eff_fast[nskim_gdldqm]
Histogram for TRGGDL efficiency in each HLT skim.
TH1 * m_rtype
histogram from DQMInfo with runtype
bool m_enableAlert
Enable alert by base color of canvases.
TString m_runtype
string with runtype: physics or cosmic
static const int nskim_gdldqm
number of HLT skims
TLine * m_line_limit_high_shifter[n_eff_shifter]
upper limit line for the simplified efficiency histogram
double m_limit_low_shifter[n_eff_shifter]
lower limit value in each bin
TH1D * m_h_pure_eff
Histogram for TRGGDL efficiency with offline selection.
TLine * m_line_limit_low_shifter[n_eff_shifter]
lower limit line for the simplified efficiency histogram
void terminate() override final
Termination action.
TH1D * m_h_eff[nskim_gdldqm]
Histogram for TRGGDL efficiency in each HLT skim.
const char * c_eff[n_eff]
label of bins for the efficiency histogram
void event() override final
Event processor.
std::string skim_smap[nskim_gdldqm]
name of HLT skims
TH1D * m_h_eff_shifter
Histogram for TRGGDL efficiency, simplified one for CR shifter.
TH1D * m_h_psn_extra_fast[nskim_gdldqm]
DQM Histogram for PSN bits in each HLT skim.
double m_limit_high_shifter[n_eff_shifter]
upper limit value in each bin
TH1D * m_h_psn_pure_extra
DQM Histogram for PSN bits with offline selection.
static const int n_pure_eff
number of bins for the efficiency histogram with offline selection
TH1D * m_h_psn_extra[nskim_gdldqm]
DQM Histogram for PSN bits in each HLT skim.
TCanvas * m_c_pure_eff
Canvas for TRGGDL efficiency with offline selection.
void endRun() override final
End-of-run action.
TCanvas * m_c_eff[nskim_gdldqm]
Canvas for TRGGDL efficiency in each HLT skim.
const char * c_pure_eff[n_pure_eff]
label of bins for the efficiency histogram with offline selection
TCanvas * m_c_eff_shifter
Canvas for TRGGDL efficiency, simplified one for CR shifter.
static const int n_eff
number of bins for the efficiency histogram
const char * c_eff_shifter[n_eff_shifter]
label of bins for the simplified efficiency histogram
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:560
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:650
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
Abstract base class for different kinds of events.