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