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
26using namespace std;
27using namespace Belle2;
28
29//-----------------------------------------------------------------
30// Register module
31//-----------------------------------------------------------------
32
33REG_MODULE(DQMHistAnalysisTRGGDL);
34
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}
48
50{
51 gROOT->cd();
52
53 for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
54 char charhist_eff[1000];
55 sprintf(charhist_eff, "hGDL_ana_eff_%s", skim_smap[iskim].c_str());
56 m_h_eff[iskim] = new TH1D(charhist_eff, charhist_eff, n_eff, 0, n_eff);
57 sprintf(charhist_eff, "hGDL_ana_eff_fast_%s", skim_smap[iskim].c_str());
58 m_h_eff_fast[iskim] = new TH1D(charhist_eff, charhist_eff, n_eff, 0, n_eff);
59 for (int i = 0; i < n_eff; i++) {
60 m_h_eff[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
61 m_h_eff_fast[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
62 }
63 char charhist_c_eff[1000];
64 sprintf(charhist_c_eff, "TRGGDL/hGDL_ana_eff_%s", skim_smap[iskim].c_str());
65 m_c_eff[iskim] = new TCanvas(charhist_c_eff);
66 sprintf(charhist_c_eff, "TRGGDL/hGDL_ana_eff_fast_%s", skim_smap[iskim].c_str());
67 m_c_eff_fast[iskim] = new TCanvas(charhist_c_eff);
68 }
69
70 m_h_eff_shifter = new TH1D("hGDL_ana_eff_shifter", "hGDL_ana_eff_shifter", n_eff_shifter, 0, n_eff_shifter);
71 m_h_eff_shifter->GetYaxis()->SetTitle("efficiency");
72 m_h_eff_shifter_fast = new TH1D("hGDL_ana_eff_shifter_fast", "hGDL_ana_eff_shifter_fast", n_eff_shifter, 0, n_eff_shifter);
73 m_h_eff_shifter_fast->GetYaxis()->SetTitle("efficiency");
74 for (int i = 0; i < n_eff_shifter; i++) {
75 m_h_eff_shifter->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
76 m_h_eff_shifter_fast->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
79 }
80 m_c_eff_shifter = new TCanvas("TRGGDL/hGDL_ana_eff_shifter");
81 m_c_eff_shifter_fast = new TCanvas("TRGGDL/hGDL_ana_eff_shifter_fast");
82
83 m_h_pure_eff = new TH1D("hGDL_ana_pure_eff", "hGDL_ana_pure_eff", n_pure_eff, 0, n_pure_eff);
84 for (int i = 0; i < n_pure_eff; i++) {
85 m_h_pure_eff->GetXaxis()->SetBinLabel(i + 1, c_pure_eff[i]);
86 }
87 m_c_pure_eff = new TCanvas("TRGGDL/hGDL_ana_pure_eff");
88
89
90
91#ifdef _BELLE2_EPICS
92 if (getUseEpics()) {
93 for (int i = 0; i < n_eff_shifter; i++) {
94 std::string aa = "TRGAna:eff_shift_" + std::to_string(i);
95 SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid[i]), "ca_create_channel failure");
96 // Read LO and HI limits from EPICS, seems this needs additional channels?
97 // SEVCHK(ca_get(DBR_DOUBLE,mychid[i],(void*)&data),"ca_get failure"); // data is only valid after ca_pend_io!!
98 }
99 for (int i = 0; i < nskim_gdldqm; i++) {
100 std::string aa = "TRGAna:entry_" + std::to_string(i);
101 SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid_entry[i]), "ca_create_channel failure");
102 }
103 }
104#endif
105
106 B2DEBUG(20, "DQMHistAnalysisTRGGDL: initialized.");
107}
108
109
111{
112
113 for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
114
115 //get histo
116 char c_psn[1000];
117 sprintf(c_psn, "TRGGDL/hGDL_psn_extra_fast_%s", skim_smap[iskim].c_str());
118 m_h_psn_extra_fast[iskim] = (TH1D*)findHist(c_psn);
120 if (m_h_psn_extra_fast[iskim] == nullptr) {
121 B2WARNING("Histogram/canvas named TRGGDL/hGDL_psn_extra_fast is not found.");
122 continue;
123 }
124
125 //fill efficiency values
126 if (m_h_psn_extra_fast[iskim]->GetBinContent(0 + 1) == 0)continue;
127 if (m_h_psn_extra_fast[iskim]->GetBinContent(5 + 1) == 0)continue;
128 m_h_eff_fast[iskim]->SetBinContent(1, m_h_psn_extra_fast[iskim]->GetBinContent(1 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
129 5 + 1)); //fff with c4|hie
130 m_h_eff_fast[iskim]->SetBinContent(2, m_h_psn_extra_fast[iskim]->GetBinContent(2 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
131 5 + 1)); //ffo with c4|hie
132 m_h_eff_fast[iskim]->SetBinContent(3, m_h_psn_extra_fast[iskim]->GetBinContent(3 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
133 5 + 1)); //ffb with c4|hie
134 m_h_eff_fast[iskim]->SetBinContent(4, m_h_psn_extra_fast[iskim]->GetBinContent(19 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
135 5 + 1)); //ffy with c4|hie
136 m_h_eff_fast[iskim]->SetBinContent(5, m_h_psn_extra_fast[iskim]->GetBinContent(20 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
137 5 + 1)); //fyo with c4|hie
138 m_h_eff_fast[iskim]->SetBinContent(6, m_h_psn_extra_fast[iskim]->GetBinContent(21 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
139 5 + 1)); //fyb with c4|hie
140 m_h_eff_fast[iskim]->SetBinError(1, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(1 + 1)) /
141 m_h_psn_extra_fast[iskim]->GetBinContent(
142 5 + 1)); //fff with c4|hie
143 m_h_eff_fast[iskim]->SetBinError(2, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(2 + 1)) /
144 m_h_psn_extra_fast[iskim]->GetBinContent(
145 5 + 1)); //ffo with c4|hie
146 m_h_eff_fast[iskim]->SetBinError(3, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(3 + 1)) /
147 m_h_psn_extra_fast[iskim]->GetBinContent(
148 5 + 1)); //ffb with c4|hie
149 m_h_eff_fast[iskim]->SetBinError(4, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(19 + 1)) /
150 m_h_psn_extra_fast[iskim]->GetBinContent(
151 5 + 1)); //ffy with c4|hie
152 m_h_eff_fast[iskim]->SetBinError(5, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(20 + 1)) /
153 m_h_psn_extra_fast[iskim]->GetBinContent(
154 5 + 1)); //fyo with c4|hie
155 m_h_eff_fast[iskim]->SetBinError(6, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(21 + 1)) /
156 m_h_psn_extra_fast[iskim]->GetBinContent(
157 5 + 1)); //fyb with c4|hie
158
159 if (m_h_psn_extra_fast[iskim]->GetBinContent(6 + 1) == 0)continue;
160 m_h_eff_fast[iskim]->SetBinContent(7, m_h_psn_extra_fast[iskim]->GetBinContent(27 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
161 6 + 1)); //hie with fff|ffo|ffb
162 m_h_eff_fast[iskim]->SetBinContent(8, m_h_psn_extra_fast[iskim]->GetBinContent(26 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
163 6 + 1)); //c4 with fff|ffo|ffb
164 m_h_eff_fast[iskim]->SetBinContent(9, m_h_psn_extra_fast[iskim]->GetBinContent(28 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
165 6 + 1)); //lml0 with fff|ffo|ffb
166 m_h_eff_fast[iskim]->SetBinContent(10, m_h_psn_extra_fast[iskim]->GetBinContent(29 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
167 6 + 1)); //lml1 with fff|ffo|ffb
168 m_h_eff_fast[iskim]->SetBinContent(11, m_h_psn_extra_fast[iskim]->GetBinContent(30 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
169 6 + 1)); //lml2 with fff|ffo|ffb
170 m_h_eff_fast[iskim]->SetBinContent(12, m_h_psn_extra_fast[iskim]->GetBinContent(31 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
171 6 + 1)); //lml3 with fff|ffo|ffb
172 m_h_eff_fast[iskim]->SetBinContent(13, m_h_psn_extra_fast[iskim]->GetBinContent(32 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
173 6 + 1)); //lml4 with fff|ffo|ffb
174 m_h_eff_fast[iskim]->SetBinContent(14, m_h_psn_extra_fast[iskim]->GetBinContent(33 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
175 6 + 1)); //lml5 with fff|ffo|ffb
176 m_h_eff_fast[iskim]->SetBinContent(15, m_h_psn_extra_fast[iskim]->GetBinContent(34 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
177 6 + 1)); //lml6 with fff|ffo|ffb
178 m_h_eff_fast[iskim]->SetBinContent(16, m_h_psn_extra_fast[iskim]->GetBinContent(35 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
179 6 + 1)); //lml7 with fff|ffo|ffb
180 m_h_eff_fast[iskim]->SetBinContent(17, m_h_psn_extra_fast[iskim]->GetBinContent(36 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
181 6 + 1)); //lml8 with fff|ffo|ffb
182 m_h_eff_fast[iskim]->SetBinContent(18, m_h_psn_extra_fast[iskim]->GetBinContent(37 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
183 6 + 1)); //lml9 with fff|ffo|ffb
184 m_h_eff_fast[iskim]->SetBinContent(19, m_h_psn_extra_fast[iskim]->GetBinContent(38 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
185 6 + 1)); //lml10 with fff|ffo|ffb
186 m_h_eff_fast[iskim]->SetBinContent(20, m_h_psn_extra_fast[iskim]->GetBinContent(39 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
187 6 + 1)); //lml12 with fff|ffo|ffb
188 m_h_eff_fast[iskim]->SetBinContent(21, m_h_psn_extra_fast[iskim]->GetBinContent(40 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
189 6 + 1)); //lml13 with fff|ffo|ffb
190 m_h_eff_fast[iskim]->SetBinContent(22, m_h_psn_extra_fast[iskim]->GetBinContent(9 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
191 0 + 1)); //bha3d with all
192 m_h_eff_fast[iskim]->SetBinContent(23, m_h_psn_extra_fast[iskim]->GetBinContent(42 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
193 6 + 1)); //mu_b2b with fff|ffo|ffb
194 m_h_eff_fast[iskim]->SetBinError(7, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(27 + 1)) /
195 m_h_psn_extra_fast[iskim]->GetBinContent(
196 6 + 1)); //hie with fff|ffo|ffb
197 m_h_eff_fast[iskim]->SetBinError(8, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(26 + 1)) /
198 m_h_psn_extra_fast[iskim]->GetBinContent(
199 6 + 1)); //c4 with fff|ffo|ffb
200 m_h_eff_fast[iskim]->SetBinError(9, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(28 + 1)) /
201 m_h_psn_extra_fast[iskim]->GetBinContent(
202 6 + 1)); //lml0 with fff|ffo|ffb
203 m_h_eff_fast[iskim]->SetBinError(10, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(29 + 1)) /
204 m_h_psn_extra_fast[iskim]->GetBinContent(
205 6 + 1)); //lml1 with fff|ffo|ffb
206 m_h_eff_fast[iskim]->SetBinError(11, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(30 + 1)) /
207 m_h_psn_extra_fast[iskim]->GetBinContent(
208 6 + 1)); //lml2 with fff|ffo|ffb
209 m_h_eff_fast[iskim]->SetBinError(12, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(31 + 1)) /
210 m_h_psn_extra_fast[iskim]->GetBinContent(
211 6 + 1)); //lml3 with fff|ffo|ffb
212 m_h_eff_fast[iskim]->SetBinError(13, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(32 + 1)) /
213 m_h_psn_extra_fast[iskim]->GetBinContent(
214 6 + 1)); //lml4 with fff|ffo|ffb
215 m_h_eff_fast[iskim]->SetBinError(14, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(33 + 1)) /
216 m_h_psn_extra_fast[iskim]->GetBinContent(
217 6 + 1)); //lml5 with fff|ffo|ffb
218 m_h_eff_fast[iskim]->SetBinError(15, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(34 + 1)) /
219 m_h_psn_extra_fast[iskim]->GetBinContent(
220 6 + 1)); //lml6 with fff|ffo|ffb
221 m_h_eff_fast[iskim]->SetBinError(16, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(35 + 1)) /
222 m_h_psn_extra_fast[iskim]->GetBinContent(
223 6 + 1)); //lml7 with fff|ffo|ffb
224 m_h_eff_fast[iskim]->SetBinError(17, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(36 + 1)) /
225 m_h_psn_extra_fast[iskim]->GetBinContent(
226 6 + 1)); //lml8 with fff|ffo|ffb
227 m_h_eff_fast[iskim]->SetBinError(18, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(37 + 1)) /
228 m_h_psn_extra_fast[iskim]->GetBinContent(
229 6 + 1)); //lml9 with fff|ffo|ffb
230 m_h_eff_fast[iskim]->SetBinError(19, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(38 + 1)) /
231 m_h_psn_extra_fast[iskim]->GetBinContent(
232 6 + 1)); //lml10 with fff|ffo|ffb
233 m_h_eff_fast[iskim]->SetBinError(20, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(39 + 1)) /
234 m_h_psn_extra_fast[iskim]->GetBinContent(
235 6 + 1)); //lml12 with fff|ffo|ffb
236 m_h_eff_fast[iskim]->SetBinError(21, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(40 + 1)) /
237 m_h_psn_extra_fast[iskim]->GetBinContent(
238 6 + 1)); //lml13 with fff|ffo|ffb
239 m_h_eff_fast[iskim]->SetBinError(22, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(9 + 1)) /
240 m_h_psn_extra_fast[iskim]->GetBinContent(
241 0 + 1)); //bha3d with all
242 m_h_eff_fast[iskim]->SetBinError(23, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(42 + 1)) /
243 m_h_psn_extra_fast[iskim]->GetBinContent(
244 6 + 1)); //mu_b2b with fff|ffo|ffb
245
246 if (m_h_psn_extra_fast[iskim]->GetBinContent(14 + 1) == 0)continue;
247 m_h_eff_fast[iskim]->SetBinContent(24, m_h_psn_extra_fast[iskim]->GetBinContent(48 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
248 14 + 1)); //mu_b2b with lml|eclmumu
249 m_h_eff_fast[iskim]->SetBinContent(25, m_h_psn_extra_fast[iskim]->GetBinContent(49 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
250 14 + 1)); //mu_eb2b with lml|eclmumu
251 m_h_eff_fast[iskim]->SetBinContent(26, m_h_psn_extra_fast[iskim]->GetBinContent(50 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
252 14 + 1)); //cdcklm1 with fff|ffo|ffb
253 m_h_eff_fast[iskim]->SetBinContent(27, m_h_psn_extra_fast[iskim]->GetBinContent(51 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
254 14 + 1)); //cdcklm2 with fff|ffo|ffb
255 m_h_eff_fast[iskim]->SetBinContent(28, m_h_psn_extra_fast[iskim]->GetBinContent(15 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
256 14 + 1)); //fff with lml|eclmumu
257 m_h_eff_fast[iskim]->SetBinContent(29, m_h_psn_extra_fast[iskim]->GetBinContent(16 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
258 14 + 1)); //ffo with lml|eclmumu
259 m_h_eff_fast[iskim]->SetBinContent(30, m_h_psn_extra_fast[iskim]->GetBinContent(17 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
260 14 + 1)); //ffb with lml|eclmumu
261 m_h_eff_fast[iskim]->SetBinContent(31, m_h_psn_extra_fast[iskim]->GetBinContent(11 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
262 14 + 1)); //ff with lml|eclmumu
263 m_h_eff_fast[iskim]->SetBinContent(32, m_h_psn_extra_fast[iskim]->GetBinContent(13 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
264 14 + 1)); //f with lml|eclmumu
265 m_h_eff_fast[iskim]->SetBinContent(33, m_h_psn_extra_fast[iskim]->GetBinContent(23 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
266 14 + 1)); //ffy with lml|eclmumu
267 m_h_eff_fast[iskim]->SetBinContent(34, m_h_psn_extra_fast[iskim]->GetBinContent(24 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
268 14 + 1)); //fyo with lml|eclmumu
269 m_h_eff_fast[iskim]->SetBinContent(35, m_h_psn_extra_fast[iskim]->GetBinContent(25 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
270 14 + 1)); //fyb with lml|eclmumu
271 m_h_eff_fast[iskim]->SetBinError(24, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(48 + 1)) /
272 m_h_psn_extra_fast[iskim]->GetBinContent(
273 14 + 1)); //mu_b2b with lml|eclmumu
274 m_h_eff_fast[iskim]->SetBinError(25, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(49 + 1)) /
275 m_h_psn_extra_fast[iskim]->GetBinContent(
276 14 + 1)); //mu_eb2b with lml|eclmumu
277 m_h_eff_fast[iskim]->SetBinError(26, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(50 + 1)) /
278 m_h_psn_extra_fast[iskim]->GetBinContent(
279 14 + 1)); //cdcklm1 with lml|eclmumu
280 m_h_eff_fast[iskim]->SetBinError(27, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(51 + 1)) /
281 m_h_psn_extra_fast[iskim]->GetBinContent(
282 14 + 1)); //cdcklm2 with lml|eclmumu
283 m_h_eff_fast[iskim]->SetBinError(28, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(15 + 1)) /
284 m_h_psn_extra_fast[iskim]->GetBinContent(
285 14 + 1)); //fff with lml|eclmumu
286 m_h_eff_fast[iskim]->SetBinError(29, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(16 + 1)) /
287 m_h_psn_extra_fast[iskim]->GetBinContent(
288 14 + 1)); //ffo with lml|eclmumu
289 m_h_eff_fast[iskim]->SetBinError(30, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(17 + 1)) /
290 m_h_psn_extra_fast[iskim]->GetBinContent(
291 14 + 1)); //ffb with lml|eclmumu
292 m_h_eff_fast[iskim]->SetBinError(31, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(11 + 1)) /
293 m_h_psn_extra_fast[iskim]->GetBinContent(
294 14 + 1)); //ff with lml|eclmumu
295 m_h_eff_fast[iskim]->SetBinError(32, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(13 + 1)) /
296 m_h_psn_extra_fast[iskim]->GetBinContent(
297 14 + 1)); //f with lml|eclmumu
298 m_h_eff_fast[iskim]->SetBinError(33, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(23 + 1)) /
299 m_h_psn_extra_fast[iskim]->GetBinContent(
300 14 + 1)); //ffy with lml|eclmumu
301 m_h_eff_fast[iskim]->SetBinError(34, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(24 + 1)) /
302 m_h_psn_extra_fast[iskim]->GetBinContent(
303 14 + 1)); //fyo with lml|eclmumu
304 m_h_eff_fast[iskim]->SetBinError(35, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(25 + 1)) /
305 m_h_psn_extra_fast[iskim]->GetBinContent(
306 14 + 1)); //fyb with lml|eclmumu
307
308 m_h_eff_fast[iskim]->SetBinContent(36, m_h_psn_extra_fast[iskim]->GetBinContent(55 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
309 6 + 1)); //cdcecl2 with fff|ffo|ffb
310 m_h_eff_fast[iskim]->SetBinContent(37, m_h_psn_extra_fast[iskim]->GetBinContent(68 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
311 14 + 1)); //ecleklm with lml|eclmumu
312 m_h_eff_fast[iskim]->SetBinContent(38, m_h_psn_extra_fast[iskim]->GetBinContent(74 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
313 5 + 1)); //syo with c4|hie
314 m_h_eff_fast[iskim]->SetBinContent(39, m_h_psn_extra_fast[iskim]->GetBinContent(75 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
315 5 + 1)); //yioiecl1 with c4|hie
316 m_h_eff_fast[iskim]->SetBinContent(40, m_h_psn_extra_fast[iskim]->GetBinContent(76 + 1) / m_h_psn_extra_fast[iskim]->GetBinContent(
317 5 + 1)); //stt with c4|hie
318
319 m_h_eff_fast[iskim]->SetBinError(36, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(55 + 1)) /
320 m_h_psn_extra_fast[iskim]->GetBinContent(
321 6 + 1)); //cdcecl2 with fff|ffo|ffb
322 m_h_eff_fast[iskim]->SetBinError(37, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(68 + 1)) /
323 m_h_psn_extra_fast[iskim]->GetBinContent(
324 14 + 1)); //ecleklm with lml|eclmumu
325 m_h_eff_fast[iskim]->SetBinError(38, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(74 + 1)) /
326 m_h_psn_extra_fast[iskim]->GetBinContent(
327 5 + 1)); //syo with c4|hie
328 m_h_eff_fast[iskim]->SetBinError(39, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(75 + 1)) /
329 m_h_psn_extra_fast[iskim]->GetBinContent(
330 5 + 1)); //yioiecl1 with c4|hie
331 m_h_eff_fast[iskim]->SetBinError(40, sqrt(m_h_psn_extra_fast[iskim]->GetBinContent(76 + 1)) /
332 m_h_psn_extra_fast[iskim]->GetBinContent(
333 5 + 1)); //stt with c4|hie
334 }
335
336 for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
337
338 //get histo
339 char c_psn[1000];
340 sprintf(c_psn, "TRGGDL/hGDL_psn_extra_%s", skim_smap[iskim].c_str());
341 m_h_psn_extra[iskim] = (TH1D*)findHist(c_psn);
343 if (m_h_psn_extra[iskim] == nullptr) {
344 B2WARNING("Histogram/canvas named TRGGDL/hGDL_psn_extra is not found.");
345 continue;
346 }
347
348 //fill efficiency values
349 if (m_h_psn_extra[iskim]->GetBinContent(0 + 1) == 0)continue;
350 if (m_h_psn_extra[iskim]->GetBinContent(5 + 1) == 0)continue;
351 m_h_eff[iskim]->SetBinContent(1, m_h_psn_extra[iskim]->GetBinContent(1 + 1) / m_h_psn_extra[iskim]->GetBinContent(
352 5 + 1)); //fff with c4|hie
353 m_h_eff[iskim]->SetBinContent(2, m_h_psn_extra[iskim]->GetBinContent(2 + 1) / m_h_psn_extra[iskim]->GetBinContent(
354 5 + 1)); //ffo with c4|hie
355 m_h_eff[iskim]->SetBinContent(3, m_h_psn_extra[iskim]->GetBinContent(3 + 1) / m_h_psn_extra[iskim]->GetBinContent(
356 5 + 1)); //ffb with c4|hie
357 m_h_eff[iskim]->SetBinContent(4, m_h_psn_extra[iskim]->GetBinContent(19 + 1) / m_h_psn_extra[iskim]->GetBinContent(
358 5 + 1)); //ffy with c4|hie
359 m_h_eff[iskim]->SetBinContent(5, m_h_psn_extra[iskim]->GetBinContent(20 + 1) / m_h_psn_extra[iskim]->GetBinContent(
360 5 + 1)); //fyo with c4|hie
361 m_h_eff[iskim]->SetBinContent(6, m_h_psn_extra[iskim]->GetBinContent(21 + 1) / m_h_psn_extra[iskim]->GetBinContent(
362 5 + 1)); //fyb with c4|hie
363 m_h_eff[iskim]->SetBinError(1, sqrt(m_h_psn_extra[iskim]->GetBinContent(1 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
364 5 + 1)); //fff with c4|hie
365 m_h_eff[iskim]->SetBinError(2, sqrt(m_h_psn_extra[iskim]->GetBinContent(2 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
366 5 + 1)); //ffo with c4|hie
367 m_h_eff[iskim]->SetBinError(3, sqrt(m_h_psn_extra[iskim]->GetBinContent(3 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
368 5 + 1)); //ffb with c4|hie
369 m_h_eff[iskim]->SetBinError(4, sqrt(m_h_psn_extra[iskim]->GetBinContent(19 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
370 5 + 1)); //ffy with c4|hie
371 m_h_eff[iskim]->SetBinError(5, sqrt(m_h_psn_extra[iskim]->GetBinContent(20 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
372 5 + 1)); //fyo with c4|hie
373 m_h_eff[iskim]->SetBinError(6, sqrt(m_h_psn_extra[iskim]->GetBinContent(21 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
374 5 + 1)); //fyb with c4|hie
375
376 if (m_h_psn_extra[iskim]->GetBinContent(6 + 1) == 0)continue;
377 m_h_eff[iskim]->SetBinContent(7, m_h_psn_extra[iskim]->GetBinContent(27 + 1) / m_h_psn_extra[iskim]->GetBinContent(
378 6 + 1)); //hie with fff|ffo|ffb
379 m_h_eff[iskim]->SetBinContent(8, m_h_psn_extra[iskim]->GetBinContent(26 + 1) / m_h_psn_extra[iskim]->GetBinContent(
380 6 + 1)); //c4 with fff|ffo|ffb
381 m_h_eff[iskim]->SetBinContent(9, m_h_psn_extra[iskim]->GetBinContent(28 + 1) / m_h_psn_extra[iskim]->GetBinContent(
382 6 + 1)); //lml0 with fff|ffo|ffb
383 m_h_eff[iskim]->SetBinContent(10, m_h_psn_extra[iskim]->GetBinContent(29 + 1) / m_h_psn_extra[iskim]->GetBinContent(
384 6 + 1)); //lml1 with fff|ffo|ffb
385 m_h_eff[iskim]->SetBinContent(11, m_h_psn_extra[iskim]->GetBinContent(30 + 1) / m_h_psn_extra[iskim]->GetBinContent(
386 6 + 1)); //lml2 with fff|ffo|ffb
387 m_h_eff[iskim]->SetBinContent(12, m_h_psn_extra[iskim]->GetBinContent(31 + 1) / m_h_psn_extra[iskim]->GetBinContent(
388 6 + 1)); //lml3 with fff|ffo|ffb
389 m_h_eff[iskim]->SetBinContent(13, m_h_psn_extra[iskim]->GetBinContent(32 + 1) / m_h_psn_extra[iskim]->GetBinContent(
390 6 + 1)); //lml4 with fff|ffo|ffb
391 m_h_eff[iskim]->SetBinContent(14, m_h_psn_extra[iskim]->GetBinContent(33 + 1) / m_h_psn_extra[iskim]->GetBinContent(
392 6 + 1)); //lml5 with fff|ffo|ffb
393 m_h_eff[iskim]->SetBinContent(15, m_h_psn_extra[iskim]->GetBinContent(34 + 1) / m_h_psn_extra[iskim]->GetBinContent(
394 6 + 1)); //lml6 with fff|ffo|ffb
395 m_h_eff[iskim]->SetBinContent(16, m_h_psn_extra[iskim]->GetBinContent(35 + 1) / m_h_psn_extra[iskim]->GetBinContent(
396 6 + 1)); //lml7 with fff|ffo|ffb
397 m_h_eff[iskim]->SetBinContent(17, m_h_psn_extra[iskim]->GetBinContent(36 + 1) / m_h_psn_extra[iskim]->GetBinContent(
398 6 + 1)); //lml8 with fff|ffo|ffb
399 m_h_eff[iskim]->SetBinContent(18, m_h_psn_extra[iskim]->GetBinContent(37 + 1) / m_h_psn_extra[iskim]->GetBinContent(
400 6 + 1)); //lml9 with fff|ffo|ffb
401 m_h_eff[iskim]->SetBinContent(19, m_h_psn_extra[iskim]->GetBinContent(38 + 1) / m_h_psn_extra[iskim]->GetBinContent(
402 6 + 1)); //lml10 with fff|ffo|ffb
403 m_h_eff[iskim]->SetBinContent(20, m_h_psn_extra[iskim]->GetBinContent(39 + 1) / m_h_psn_extra[iskim]->GetBinContent(
404 6 + 1)); //lml12 with fff|ffo|ffb
405 m_h_eff[iskim]->SetBinContent(21, m_h_psn_extra[iskim]->GetBinContent(40 + 1) / m_h_psn_extra[iskim]->GetBinContent(
406 6 + 1)); //lml13 with fff|ffo|ffb
407 m_h_eff[iskim]->SetBinContent(22, m_h_psn_extra[iskim]->GetBinContent(9 + 1) / m_h_psn_extra[iskim]->GetBinContent(
408 0 + 1)); //bha3d with all
409 m_h_eff[iskim]->SetBinContent(23, m_h_psn_extra[iskim]->GetBinContent(42 + 1) / m_h_psn_extra[iskim]->GetBinContent(
410 6 + 1)); //mu_b2b with fff|ffo|ffb
411 m_h_eff[iskim]->SetBinError(7, sqrt(m_h_psn_extra[iskim]->GetBinContent(27 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
412 6 + 1)); //hie with fff|ffo|ffb
413 m_h_eff[iskim]->SetBinError(8, sqrt(m_h_psn_extra[iskim]->GetBinContent(26 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
414 6 + 1)); //c4 with fff|ffo|ffb
415 m_h_eff[iskim]->SetBinError(9, sqrt(m_h_psn_extra[iskim]->GetBinContent(28 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
416 6 + 1)); //lml0 with fff|ffo|ffb
417 m_h_eff[iskim]->SetBinError(10, sqrt(m_h_psn_extra[iskim]->GetBinContent(29 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
418 6 + 1)); //lml1 with fff|ffo|ffb
419 m_h_eff[iskim]->SetBinError(11, sqrt(m_h_psn_extra[iskim]->GetBinContent(30 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
420 6 + 1)); //lml2 with fff|ffo|ffb
421 m_h_eff[iskim]->SetBinError(12, sqrt(m_h_psn_extra[iskim]->GetBinContent(31 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
422 6 + 1)); //lml3 with fff|ffo|ffb
423 m_h_eff[iskim]->SetBinError(13, sqrt(m_h_psn_extra[iskim]->GetBinContent(32 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
424 6 + 1)); //lml4 with fff|ffo|ffb
425 m_h_eff[iskim]->SetBinError(14, sqrt(m_h_psn_extra[iskim]->GetBinContent(33 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
426 6 + 1)); //lml5 with fff|ffo|ffb
427 m_h_eff[iskim]->SetBinError(15, sqrt(m_h_psn_extra[iskim]->GetBinContent(34 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
428 6 + 1)); //lml6 with fff|ffo|ffb
429 m_h_eff[iskim]->SetBinError(16, sqrt(m_h_psn_extra[iskim]->GetBinContent(35 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
430 6 + 1)); //lml7 with fff|ffo|ffb
431 m_h_eff[iskim]->SetBinError(17, sqrt(m_h_psn_extra[iskim]->GetBinContent(36 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
432 6 + 1)); //lml8 with fff|ffo|ffb
433 m_h_eff[iskim]->SetBinError(18, sqrt(m_h_psn_extra[iskim]->GetBinContent(37 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
434 6 + 1)); //lml9 with fff|ffo|ffb
435 m_h_eff[iskim]->SetBinError(19, sqrt(m_h_psn_extra[iskim]->GetBinContent(38 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
436 6 + 1)); //lml10 with fff|ffo|ffb
437 m_h_eff[iskim]->SetBinError(20, sqrt(m_h_psn_extra[iskim]->GetBinContent(39 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
438 6 + 1)); //lml12 with fff|ffo|ffb
439 m_h_eff[iskim]->SetBinError(21, sqrt(m_h_psn_extra[iskim]->GetBinContent(40 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
440 6 + 1)); //lml13 with fff|ffo|ffb
441 m_h_eff[iskim]->SetBinError(22, sqrt(m_h_psn_extra[iskim]->GetBinContent(9 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
442 0 + 1)); //bha3d with all
443 m_h_eff[iskim]->SetBinError(23, sqrt(m_h_psn_extra[iskim]->GetBinContent(42 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
444 6 + 1)); //mu_b2b with fff|ffo|ffb
445
446 if (m_h_psn_extra[iskim]->GetBinContent(14 + 1) == 0)continue;
447 m_h_eff[iskim]->SetBinContent(24, m_h_psn_extra[iskim]->GetBinContent(48 + 1) / m_h_psn_extra[iskim]->GetBinContent(
448 14 + 1)); //mu_b2b with lml|eclmumu
449 m_h_eff[iskim]->SetBinContent(25, m_h_psn_extra[iskim]->GetBinContent(49 + 1) / m_h_psn_extra[iskim]->GetBinContent(
450 14 + 1)); //mu_eb2b with lml|eclmumu
451 m_h_eff[iskim]->SetBinContent(26, m_h_psn_extra[iskim]->GetBinContent(50 + 1) / m_h_psn_extra[iskim]->GetBinContent(
452 14 + 1)); //cdcklm1 with fff|ffo|ffb
453 m_h_eff[iskim]->SetBinContent(27, m_h_psn_extra[iskim]->GetBinContent(51 + 1) / m_h_psn_extra[iskim]->GetBinContent(
454 14 + 1)); //cdcklm2 with fff|ffo|ffb
455 m_h_eff[iskim]->SetBinContent(28, m_h_psn_extra[iskim]->GetBinContent(15 + 1) / m_h_psn_extra[iskim]->GetBinContent(
456 14 + 1)); //fff with lml|eclmumu
457 m_h_eff[iskim]->SetBinContent(29, m_h_psn_extra[iskim]->GetBinContent(16 + 1) / m_h_psn_extra[iskim]->GetBinContent(
458 14 + 1)); //ffo with lml|eclmumu
459 m_h_eff[iskim]->SetBinContent(30, m_h_psn_extra[iskim]->GetBinContent(17 + 1) / m_h_psn_extra[iskim]->GetBinContent(
460 14 + 1)); //ffb with lml|eclmumu
461 m_h_eff[iskim]->SetBinContent(31, m_h_psn_extra[iskim]->GetBinContent(11 + 1) / m_h_psn_extra[iskim]->GetBinContent(
462 14 + 1)); //ff with lml|eclmumu
463 m_h_eff[iskim]->SetBinContent(32, m_h_psn_extra[iskim]->GetBinContent(13 + 1) / m_h_psn_extra[iskim]->GetBinContent(
464 14 + 1)); //f with lml|eclmumu
465 m_h_eff[iskim]->SetBinContent(33, m_h_psn_extra[iskim]->GetBinContent(23 + 1) / m_h_psn_extra[iskim]->GetBinContent(
466 14 + 1)); //ffy with lml|eclmumu
467 m_h_eff[iskim]->SetBinContent(34, m_h_psn_extra[iskim]->GetBinContent(24 + 1) / m_h_psn_extra[iskim]->GetBinContent(
468 14 + 1)); //fyo with lml|eclmumu
469 m_h_eff[iskim]->SetBinContent(35, m_h_psn_extra[iskim]->GetBinContent(25 + 1) / m_h_psn_extra[iskim]->GetBinContent(
470 14 + 1)); //fyb with lml|eclmumu
471 m_h_eff[iskim]->SetBinError(24, sqrt(m_h_psn_extra[iskim]->GetBinContent(48 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
472 14 + 1)); //mu_b2b with lml|eclmumu
473 m_h_eff[iskim]->SetBinError(25, sqrt(m_h_psn_extra[iskim]->GetBinContent(49 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
474 14 + 1)); //mu_eb2b with lml|eclmumu
475 m_h_eff[iskim]->SetBinError(26, sqrt(m_h_psn_extra[iskim]->GetBinContent(50 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
476 14 + 1)); //cdcklm1 with lml|eclmumu
477 m_h_eff[iskim]->SetBinError(27, sqrt(m_h_psn_extra[iskim]->GetBinContent(51 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
478 14 + 1)); //cdcklm2 with lml|eclmumu
479 m_h_eff[iskim]->SetBinError(28, sqrt(m_h_psn_extra[iskim]->GetBinContent(15 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
480 14 + 1)); //fff with lml|eclmumu
481 m_h_eff[iskim]->SetBinError(29, sqrt(m_h_psn_extra[iskim]->GetBinContent(16 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
482 14 + 1)); //ffo with lml|eclmumu
483 m_h_eff[iskim]->SetBinError(30, sqrt(m_h_psn_extra[iskim]->GetBinContent(17 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
484 14 + 1)); //ffb with lml|eclmumu
485 m_h_eff[iskim]->SetBinError(31, sqrt(m_h_psn_extra[iskim]->GetBinContent(11 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
486 14 + 1)); //ff with lml|eclmumu
487 m_h_eff[iskim]->SetBinError(32, sqrt(m_h_psn_extra[iskim]->GetBinContent(13 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
488 14 + 1)); //f with lml|eclmumu
489 m_h_eff[iskim]->SetBinError(33, sqrt(m_h_psn_extra[iskim]->GetBinContent(23 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
490 14 + 1)); //ffy with lml|eclmumu
491 m_h_eff[iskim]->SetBinError(34, sqrt(m_h_psn_extra[iskim]->GetBinContent(24 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
492 14 + 1)); //fyo with lml|eclmumu
493 m_h_eff[iskim]->SetBinError(35, sqrt(m_h_psn_extra[iskim]->GetBinContent(25 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
494 14 + 1)); //fyb with lml|eclmumu
495
496 m_h_eff[iskim]->SetBinContent(36, m_h_psn_extra[iskim]->GetBinContent(55 + 1) / m_h_psn_extra[iskim]->GetBinContent(
497 6 + 1)); //cdcecl2 with fff|ffo|ffb
498 m_h_eff[iskim]->SetBinContent(37, m_h_psn_extra[iskim]->GetBinContent(68 + 1) / m_h_psn_extra[iskim]->GetBinContent(
499 14 + 1)); //ecleklm with lml|eclmumu
500 m_h_eff[iskim]->SetBinContent(38, m_h_psn_extra[iskim]->GetBinContent(74 + 1) / m_h_psn_extra[iskim]->GetBinContent(
501 5 + 1)); //syo with c4|hie
502 m_h_eff[iskim]->SetBinContent(39, m_h_psn_extra[iskim]->GetBinContent(75 + 1) / m_h_psn_extra[iskim]->GetBinContent(
503 5 + 1)); //yioiecl1 with c4|hie
504 m_h_eff[iskim]->SetBinContent(40, m_h_psn_extra[iskim]->GetBinContent(76 + 1) / m_h_psn_extra[iskim]->GetBinContent(
505 5 + 1)); //stt with c4|hie
506
507 m_h_eff[iskim]->SetBinError(36, sqrt(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]->SetBinError(37, sqrt(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]->SetBinError(38, sqrt(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]->SetBinError(39, sqrt(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]->SetBinError(40, sqrt(m_h_psn_extra[iskim]->GetBinContent(76 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
516 5 + 1)); //stt with c4|hie
517 }
518 //fill efficiency for shifter
519 m_h_eff_shifter_fast->SetBinContent(1, m_h_eff_fast[9] ->GetBinContent(0 + 1)); //fff with c4|hie
520 m_h_eff_shifter_fast->SetBinContent(2, m_h_eff_fast[9] ->GetBinContent(1 + 1)); //ffo with c4|hie
521 m_h_eff_shifter_fast->SetBinContent(3, m_h_eff_fast[9] ->GetBinContent(3 + 1)); //ffy with c4|hie
522 m_h_eff_shifter_fast->SetBinContent(4, m_h_eff_fast[9] ->GetBinContent(4 + 1)); //fyo with c4|hie
523 m_h_eff_shifter_fast->SetBinContent(5, m_h_eff_fast[9] ->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
524 m_h_eff_shifter_fast->SetBinContent(6, m_h_eff_fast[9] ->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
525 m_h_eff_shifter_fast->SetBinContent(7, m_h_eff_fast[10]->GetBinContent(23 + 1)); //mu_b2b with lml|eclmumu
526 m_h_eff_shifter_fast->SetBinContent(8, m_h_eff_fast[10]->GetBinContent(24 + 1)); //mu_eb2b with lml|eclmumu
527 m_h_eff_shifter_fast->SetBinContent(9, m_h_eff_fast[10]->GetBinContent(26 + 1)); //cdcklm2 with lml|eclmumu
528 m_h_eff_shifter_fast->SetBinContent(10, m_h_eff_fast[10]->GetBinContent(35 + 1)); //cdcecl2 with fff|ffo|ffb
529 m_h_eff_shifter_fast->SetBinContent(11, m_h_eff_fast[10]->GetBinContent(36 + 1)); //ecleklm with lml|eclmumu
530 m_h_eff_shifter_fast->SetBinContent(12, m_h_eff_fast[9] ->GetBinContent(37 + 1)); //syo with c4|hie
531 m_h_eff_shifter_fast->SetBinContent(13, m_h_eff_fast[9] ->GetBinContent(38 + 1)); //yioiecl1 with c4|hie
532 m_h_eff_shifter_fast->SetBinContent(14, m_h_eff_fast[9] ->GetBinContent(39 + 1)); //stt with c4|hie
533 m_h_eff_shifter_fast->SetBinError(1, m_h_eff_fast[9] ->GetBinError(0 + 1)); //fff with c4|hie
534 m_h_eff_shifter_fast->SetBinError(2, m_h_eff_fast[9] ->GetBinError(1 + 1)); //ffo with c4|hie
535 m_h_eff_shifter_fast->SetBinError(3, m_h_eff_fast[9] ->GetBinError(3 + 1)); //ffy with c4|hie
536 m_h_eff_shifter_fast->SetBinError(4, m_h_eff_fast[9] ->GetBinError(4 + 1)); //fyo with c4|hie
537 m_h_eff_shifter_fast->SetBinError(5, m_h_eff_fast[9] ->GetBinError(6 + 1)); //hie with fff|ffo|ffb
538 m_h_eff_shifter_fast->SetBinError(6, m_h_eff_fast[9] ->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
539 m_h_eff_shifter_fast->SetBinError(7, m_h_eff_fast[10]->GetBinError(23 + 1)); //mu_b2b with lml|eclmumu
540 m_h_eff_shifter_fast->SetBinError(8, m_h_eff_fast[10]->GetBinError(24 + 1)); //mu_eb2b with lml|eclmumu
541 m_h_eff_shifter_fast->SetBinError(9, m_h_eff_fast[10]->GetBinError(26 + 1)); //cdcklm2 with lml|eclmumu
542 m_h_eff_shifter_fast->SetBinError(10, m_h_eff_fast[10]->GetBinError(35 + 1)); //cdcecl2 with fff|ffo|ffb
543 m_h_eff_shifter_fast->SetBinError(11, m_h_eff_fast[10]->GetBinError(36 + 1)); //ecleklm with lml|eclmumu
544 m_h_eff_shifter_fast->SetBinError(12, m_h_eff_fast[9] ->GetBinError(37 + 1)); //syo with c4|hie
545 m_h_eff_shifter_fast->SetBinError(13, m_h_eff_fast[9] ->GetBinError(38 + 1)); //yioiecl1 with c4|hie
546 m_h_eff_shifter_fast->SetBinError(14, m_h_eff_fast[9] ->GetBinError(39 + 1)); //stt with c4|hie
547
548 m_h_eff_shifter->SetBinContent(1, m_h_eff[9] ->GetBinContent(0 + 1)); //fff with c4|hie
549 m_h_eff_shifter->SetBinContent(2, m_h_eff[9] ->GetBinContent(1 + 1)); //ffo with c4|hie
550 m_h_eff_shifter->SetBinContent(3, m_h_eff[9] ->GetBinContent(3 + 1)); //ffy with c4|hie
551 m_h_eff_shifter->SetBinContent(4, m_h_eff[9] ->GetBinContent(4 + 1)); //fyo with c4|hie
552 m_h_eff_shifter->SetBinContent(5, m_h_eff[9] ->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
553 m_h_eff_shifter->SetBinContent(6, m_h_eff[9] ->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
554 m_h_eff_shifter->SetBinContent(7, m_h_eff[10]->GetBinContent(23 + 1)); //mu_b2b with lml|eclmumu
555 m_h_eff_shifter->SetBinContent(8, m_h_eff[10]->GetBinContent(24 + 1)); //mu_eb2b with lml|eclmumu
556 m_h_eff_shifter->SetBinContent(9, m_h_eff[10]->GetBinContent(26 + 1)); //cdcklm2 with lml|eclmumu
557 m_h_eff_shifter->SetBinContent(10, m_h_eff[10]->GetBinContent(35 + 1)); //cdcecl2 with fff|ffo|ffb
558 m_h_eff_shifter->SetBinContent(11, m_h_eff[10]->GetBinContent(36 + 1)); //ecleklm with lml|eclmumu
559 m_h_eff_shifter->SetBinContent(12, m_h_eff[9] ->GetBinContent(37 + 1)); //syo with c4|hie
560 m_h_eff_shifter->SetBinContent(13, m_h_eff[9] ->GetBinContent(38 + 1)); //yioiecl1 with c4|hie
561 m_h_eff_shifter->SetBinContent(14, m_h_eff[9] ->GetBinContent(39 + 1)); //stt with c4|hie
562 m_h_eff_shifter->SetBinError(1, m_h_eff[9] ->GetBinError(0 + 1)); //fff with c4|hie
563 m_h_eff_shifter->SetBinError(2, m_h_eff[9] ->GetBinError(1 + 1)); //ffo with c4|hie
564 m_h_eff_shifter->SetBinError(3, m_h_eff[9] ->GetBinError(3 + 1)); //ffy with c4|hie
565 m_h_eff_shifter->SetBinError(4, m_h_eff[9] ->GetBinError(4 + 1)); //fyo with c4|hie
566 m_h_eff_shifter->SetBinError(5, m_h_eff[9] ->GetBinError(6 + 1)); //hie with fff|ffo|ffb
567 m_h_eff_shifter->SetBinError(6, m_h_eff[9] ->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
568 m_h_eff_shifter->SetBinError(7, m_h_eff[10]->GetBinError(23 + 1)); //mu_b2b with lml|eclmumu
569 m_h_eff_shifter->SetBinError(8, m_h_eff[10]->GetBinError(24 + 1)); //mu_eb2b with lml|eclmumu
570 m_h_eff_shifter->SetBinError(9, m_h_eff[10]->GetBinError(26 + 1)); //cdcklm2 with lml|eclmumu
571 m_h_eff_shifter->SetBinError(10, m_h_eff[10]->GetBinError(35 + 1)); //cdcecl2 with fff|ffo|ffb
572 m_h_eff_shifter->SetBinError(11, m_h_eff[10]->GetBinError(36 + 1)); //ecleklm with lml|eclmumu
573 m_h_eff_shifter->SetBinError(12, m_h_eff[9] ->GetBinError(37 + 1)); //syo with c4|hie
574 m_h_eff_shifter->SetBinError(13, m_h_eff[9] ->GetBinError(38 + 1)); //yioiecl1 with c4|hie
575 m_h_eff_shifter->SetBinError(14, m_h_eff[9] ->GetBinError(39 + 1)); //stt with c4|hie
576
577
578 //fill efficiency with offline selection
579 m_h_psn_pure_extra = (TH1D*)findHist("TRGGDL/hGDL_psn_pure_extra_all");
580 if (m_h_psn_pure_extra == nullptr) {
581 B2WARNING("Histogram/canvas named hGDL_psn_pure_extra is not found.");
582 } else {
583 if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
584 m_h_pure_eff->SetBinContent(1, m_h_psn_pure_extra->GetBinContent(1 + 1) / m_h_psn_pure_extra->GetBinContent(
585 0 + 1)); //fff with c4|hie
586 if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
587 m_h_pure_eff->SetBinContent(2, m_h_psn_pure_extra->GetBinContent(4 + 1) / m_h_psn_pure_extra->GetBinContent(
588 3 + 1)); //ffo with c4|hie
589 if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
590 m_h_pure_eff->SetBinContent(3, m_h_psn_pure_extra->GetBinContent(7 + 1) / m_h_psn_pure_extra->GetBinContent(
591 6 + 1)); //ffb with c4|hie
592 if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
593 m_h_pure_eff->SetBinContent(4, m_h_psn_pure_extra->GetBinContent(2 + 1) / m_h_psn_pure_extra->GetBinContent(
594 0 + 1)); //ffy with c4|hie
595 if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
596 m_h_pure_eff->SetBinContent(5, m_h_psn_pure_extra->GetBinContent(5 + 1) / m_h_psn_pure_extra->GetBinContent(
597 3 + 1)); //fyo with c4|hie
598 if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
599 m_h_pure_eff->SetBinContent(6, m_h_psn_pure_extra->GetBinContent(8 + 1) / m_h_psn_pure_extra->GetBinContent(
600 6 + 1)); //fyb with c4|hie
601 if (m_h_psn_pure_extra->GetBinContent(9 + 1) != 0)
602 m_h_pure_eff->SetBinContent(7, m_h_psn_pure_extra->GetBinContent(10 + 1) / m_h_psn_pure_extra->GetBinContent(
603 9 + 1)); //hie with fff|ffo|ffb
604 if (m_h_psn_pure_extra->GetBinContent(11 + 1) != 0)
605 m_h_pure_eff->SetBinContent(8, m_h_psn_pure_extra->GetBinContent(12 + 1) / m_h_psn_pure_extra->GetBinContent(
606 11 + 1)); //hie with fff|ffo|ffb
607 }
608
609 for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
610 m_c_eff[iskim]->Clear();
611 m_c_eff[iskim]->cd();
612 m_h_eff[iskim]->SetMinimum(0);
613 m_h_eff[iskim]->Draw();
614 m_c_eff[iskim]->Update();
615 }
616
617 for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
618 m_c_eff_fast[iskim]->Clear();
619 m_c_eff_fast[iskim]->cd();
620 m_h_eff_fast[iskim]->SetMinimum(0);
621 m_h_eff_fast[iskim]->Draw();
622 m_c_eff_fast[iskim]->Update();
623 }
624
625 m_c_eff_shifter->Clear();
626 m_c_eff_shifter->cd();
627 m_h_eff_shifter->SetMaximum(1.1);
628 m_h_eff_shifter->SetMinimum(0);
629 m_h_eff_shifter->SetLineWidth(2);
630 m_h_eff_shifter->SetMarkerStyle(20);
631 m_h_eff_shifter_fast->SetLineColor(2);
632 m_h_eff_shifter_fast->SetLineStyle(3);
633 m_h_eff_shifter_fast->SetMaximum(1.1);
634 m_h_eff_shifter_fast->SetMinimum(0);
635 m_h_eff_shifter_fast->SetLineWidth(2);
636 m_h_eff_shifter_fast->SetMarkerStyle(20);
637 m_h_eff_shifter_fast->SetMarkerColor(2);
638 m_h_eff_shifter->SetTitle("TRG efficiency");
639 m_h_eff_shifter_fast->SetTitle("TRG efficiency");
640 m_c_eff_shifter->SetFrameLineColor(1);
641 m_h_eff_shifter->GetXaxis()->SetLabelColor(1);
642 m_h_eff_shifter->GetXaxis()->SetAxisColor(1);
643 m_h_eff_shifter->GetYaxis()->SetTitleColor(1);
644 m_h_eff_shifter->GetYaxis()->SetLabelColor(1);
645 m_h_eff_shifter->GetYaxis()->SetAxisColor(1);
646 m_c_eff_shifter_fast->SetFrameLineColor(1);
647 m_h_eff_shifter_fast->GetXaxis()->SetLabelColor(1);
648 m_h_eff_shifter_fast->GetXaxis()->SetAxisColor(1);
649 m_h_eff_shifter_fast->GetYaxis()->SetTitleColor(1);
650 m_h_eff_shifter_fast->GetYaxis()->SetLabelColor(1);
651 m_h_eff_shifter_fast->GetYaxis()->SetAxisColor(1);
652
653 m_IsPhysicsRun = (getRunType() == "physics");
654 if (m_IsPhysicsRun == true) {
655 int error_check = 0;
656 for (int i = 0; i < n_eff_shifter; i++) {
657 double eff = m_h_eff_shifter->GetBinContent(i + 1);
658 double err = m_h_eff_shifter->GetBinError(i + 1);
659 double eff_err_min = eff - 2 * err;
660 double eff_err_max = eff + 2 * err;
661 double eff_fast = m_h_eff_shifter_fast->GetBinContent(i + 1);
662 double err_fast = m_h_eff_shifter_fast->GetBinError(i + 1);
663 double eff_err_min_fast = eff_fast - 2 * err_fast;
664 double eff_err_max_fast = eff_fast + 2 * err_fast;
665 if (
666 (eff_err_max < m_limit_low_shifter[i]) || (eff_err_min > m_limit_high_shifter[i]) ||
667 (eff_err_max_fast < m_limit_low_shifter[i]) || (eff_err_min_fast > m_limit_high_shifter[i])
668 ) {error_check = 1;}
669 }
670
671 if (error_check == 1) {
672 m_c_eff_shifter->SetFillColor(2);
673 m_c_eff_shifter_fast->SetFillColor(2);
674 m_c_eff_shifter->SetFrameFillColor(10);
675 m_c_eff_shifter_fast->SetFrameFillColor(10);
676 m_h_eff_shifter->SetTitle("Call TRG expert: bad efficiency");
677 m_h_eff_shifter_fast->SetTitle("Call TRG expert: bad efficiency");
678 m_c_eff_shifter->SetFrameLineColor(1);
679 m_h_eff_shifter->GetXaxis()->SetLabelColor(1);
680 m_h_eff_shifter->GetXaxis()->SetAxisColor(1);
681 m_h_eff_shifter->GetYaxis()->SetTitleColor(1);
682 m_h_eff_shifter->GetYaxis()->SetLabelColor(1);
683 m_h_eff_shifter->GetYaxis()->SetAxisColor(1);
684 m_c_eff_shifter_fast->SetFrameLineColor(1);
685 m_h_eff_shifter_fast->GetXaxis()->SetLabelColor(1);
686 m_h_eff_shifter_fast->GetXaxis()->SetAxisColor(1);
687 m_h_eff_shifter_fast->GetYaxis()->SetTitleColor(1);
688 m_h_eff_shifter_fast->GetYaxis()->SetLabelColor(1);
689 m_h_eff_shifter_fast->GetYaxis()->SetAxisColor(1);
690 } else {
691 m_c_eff_shifter->SetFillColor(kGreen);
692 m_c_eff_shifter->SetFrameFillColor(10);
693 m_c_eff_shifter_fast->SetFillColor(kGreen);
694 m_c_eff_shifter_fast->SetFrameFillColor(10);
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();
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 }
764#endif
765
766}
767
769{
770 B2DEBUG(20, "DQMHistAnalysisTRGGDL : endRun called");
771}
772
774{
775#ifdef _BELLE2_EPICS
776 if (getUseEpics()) {
777 for (auto i = 0; i < n_eff_shifter; i++) {
778 if (mychid[i]) SEVCHK(ca_clear_channel(mychid[i]), "ca_clear_channel failure");
779 }
780 for (auto i = 0; i < nskim_gdldqm; i++) {
781 if (mychid_entry[i]) SEVCHK(ca_clear_channel(mychid_entry[i]), "ca_clear_channel failure");
782 }
783 }
784#endif
785 B2DEBUG(20, "terminate called");
786}
787
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).
static const std::string & getRunType(void)
Get the list of the reference histograms.
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.
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
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: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.