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