Belle II Software  release-05-02-19
DQMHistAnalysisTRGGDL.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Kindo Haruki, Luka Santelj *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 // Own include
12 #include <dqm/analysis/modules/DQMHistAnalysisTRGGDL.h>
13 
14 //DQM
15 #include <dqm/analysis/modules/DQMHistAnalysis.h>
16 
17 #include <TH1F.h>
18 #include <TH2F.h>
19 #include <TCanvas.h>
20 #include <TLine.h>
21 #include <TClass.h>
22 #include <TROOT.h>
23 
24 #include <fstream>
25 #include <iostream>
26 #include <vector>
27 #include <algorithm>
28 
29 using namespace std;
30 using namespace Belle2;
31 
32 //-----------------------------------------------------------------
33 // Register module
34 //-----------------------------------------------------------------
35 
36 REG_MODULE(DQMHistAnalysisTRGGDL);
37 
38 DQMHistAnalysisTRGGDLModule::DQMHistAnalysisTRGGDLModule()
40 {
41  // set module description (e.g. insert text)
42  setDescription("Modify and analyze the data quality histograms of TRGGDL");
44  addParam("debug", m_debug, "debug mode", false);
45  addParam("alert", m_enableAlert, "Enable color alert", true);
46 }
47 
49 {
50 #ifdef _BELLE2_EPICS
51  if (ca_current_context()) ca_context_destroy();
52 #endif
53 }
54 
56 {
57  gROOT->cd();
58 
59  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
60  char charhist_eff[1000];
61  sprintf(charhist_eff, "hGDL_ana_eff_%s", skim_smap[iskim].c_str());
62  m_h_eff[iskim] = new TH1D(charhist_eff, charhist_eff, n_eff, 0, n_eff);
63  for (int i = 0; i < n_eff; i++) {
64  m_h_eff[iskim]->GetXaxis()->SetBinLabel(i + 1, c_eff[i]);
65  }
66  char charhist_c_eff[1000];
67  sprintf(charhist_c_eff, "TRGGDL/hGDL_ana_eff_%s", skim_smap[iskim].c_str());
68  m_c_eff[iskim] = new TCanvas(charhist_c_eff);
69  }
70 
71  m_h_eff_shifter = new TH1D("hGDL_ana_eff_shifter", "hGDL_ana_eff_shifter", n_eff_shifter, 0, n_eff_shifter);
72  m_h_eff_shifter->GetYaxis()->SetTitle("efficiency");
73  for (int i = 0; i < n_eff_shifter; i++) {
74  m_h_eff_shifter->GetXaxis()->SetBinLabel(i + 1, c_eff_shifter[i]);
75  m_line_limit_low_shifter[i] = new TLine(i, m_limit_low_shifter[i], i + 1, m_limit_low_shifter[i]);
77  }
78  m_c_eff_shifter = new TCanvas("TRGGDL/hGDL_ana_eff_shifter");
79 
80  m_h_pure_eff = new TH1D("hGDL_ana_pure_eff", "hGDL_ana_pure_eff", n_pure_eff, 0, n_pure_eff);
81  for (int i = 0; i < n_pure_eff; i++) {
82  m_h_pure_eff->GetXaxis()->SetBinLabel(i + 1, c_pure_eff[i]);
83  }
84  m_c_pure_eff = new TCanvas("TRGGDL/hGDL_ana_pure_eff");
85 
86 
87 
88 #ifdef _BELLE2_EPICS
89  if (!ca_current_context()) SEVCHK(ca_context_create(ca_disable_preemptive_callback), "ca_context_create");
90  for (int i = 0; i < n_eff_shifter; i++) {
91  std::string aa = "TRGAna:eff_shift_" + std::to_string(i);
92  SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid[i]), "ca_create_channel failure");
93  // Read LO and HI limits from EPICS, seems this needs additional channels?
94  // SEVCHK(ca_get(DBR_DOUBLE,mychid[i],(void*)&data),"ca_get failure"); // data is only valid after ca_pend_io!!
95  }
96  for (int i = 0; i < nskim_gdldqm; i++) {
97  std::string aa = "TRGAna:entry_" + std::to_string(i);
98  SEVCHK(ca_create_channel(aa.c_str(), NULL, NULL, 10, &mychid_entry[i]), "ca_create_channel failure");
99  }
100  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
101 #endif
102 
103  B2DEBUG(20, "DQMHistAnalysisTRGGDL: initialized.");
104 }
105 
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_%s", skim_smap[iskim].c_str());
118  m_h_psn_extra[iskim] = (TH1D*)findHist(c_psn);
120  if (m_h_psn_extra[iskim] == nullptr) {
121  B2WARNING("Histogram/canvas named hGDL_psn_extra is not found.");
122  continue;
123  }
124 
125  //fill efficiency values
126  if (m_h_psn_extra[iskim]->GetBinContent(0 + 1) == 0)continue;
127  if (m_h_psn_extra[iskim]->GetBinContent(5 + 1) == 0)continue;
128  m_h_eff[iskim]->SetBinContent(1, m_h_psn_extra[iskim]->GetBinContent(1 + 1) / m_h_psn_extra[iskim]->GetBinContent(
129  5 + 1)); //fff with c4|hie
130  m_h_eff[iskim]->SetBinContent(2, m_h_psn_extra[iskim]->GetBinContent(2 + 1) / m_h_psn_extra[iskim]->GetBinContent(
131  5 + 1)); //ffo with c4|hie
132  m_h_eff[iskim]->SetBinContent(3, m_h_psn_extra[iskim]->GetBinContent(3 + 1) / m_h_psn_extra[iskim]->GetBinContent(
133  5 + 1)); //ffb with c4|hie
134  m_h_eff[iskim]->SetBinContent(4, m_h_psn_extra[iskim]->GetBinContent(19 + 1) / m_h_psn_extra[iskim]->GetBinContent(
135  5 + 1)); //ffy with c4|hie
136  m_h_eff[iskim]->SetBinContent(5, m_h_psn_extra[iskim]->GetBinContent(20 + 1) / m_h_psn_extra[iskim]->GetBinContent(
137  5 + 1)); //fyo with c4|hie
138  m_h_eff[iskim]->SetBinContent(6, m_h_psn_extra[iskim]->GetBinContent(21 + 1) / m_h_psn_extra[iskim]->GetBinContent(
139  5 + 1)); //fyb with c4|hie
140  m_h_eff[iskim]->SetBinError(1, sqrt(m_h_psn_extra[iskim]->GetBinContent(1 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
141  5 + 1)); //fff with c4|hie
142  m_h_eff[iskim]->SetBinError(2, sqrt(m_h_psn_extra[iskim]->GetBinContent(2 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
143  5 + 1)); //ffo with c4|hie
144  m_h_eff[iskim]->SetBinError(3, sqrt(m_h_psn_extra[iskim]->GetBinContent(3 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
145  5 + 1)); //ffb with c4|hie
146  m_h_eff[iskim]->SetBinError(4, sqrt(m_h_psn_extra[iskim]->GetBinContent(19 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
147  5 + 1)); //ffy with c4|hie
148  m_h_eff[iskim]->SetBinError(5, sqrt(m_h_psn_extra[iskim]->GetBinContent(20 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
149  5 + 1)); //fyo with c4|hie
150  m_h_eff[iskim]->SetBinError(6, sqrt(m_h_psn_extra[iskim]->GetBinContent(21 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
151  5 + 1)); //fyb with c4|hie
152 
153  if (m_h_psn_extra[iskim]->GetBinContent(6 + 1) == 0)continue;
154  m_h_eff[iskim]->SetBinContent(7, m_h_psn_extra[iskim]->GetBinContent(27 + 1) / m_h_psn_extra[iskim]->GetBinContent(
155  6 + 1)); //hie with fff|ffo|ffb
156  m_h_eff[iskim]->SetBinContent(8, m_h_psn_extra[iskim]->GetBinContent(26 + 1) / m_h_psn_extra[iskim]->GetBinContent(
157  6 + 1)); //c4 with fff|ffo|ffb
158  m_h_eff[iskim]->SetBinContent(9, m_h_psn_extra[iskim]->GetBinContent(28 + 1) / m_h_psn_extra[iskim]->GetBinContent(
159  6 + 1)); //lml0 with fff|ffo|ffb
160  m_h_eff[iskim]->SetBinContent(10, m_h_psn_extra[iskim]->GetBinContent(29 + 1) / m_h_psn_extra[iskim]->GetBinContent(
161  6 + 1)); //lml1 with fff|ffo|ffb
162  m_h_eff[iskim]->SetBinContent(11, m_h_psn_extra[iskim]->GetBinContent(30 + 1) / m_h_psn_extra[iskim]->GetBinContent(
163  6 + 1)); //lml2 with fff|ffo|ffb
164  m_h_eff[iskim]->SetBinContent(12, m_h_psn_extra[iskim]->GetBinContent(31 + 1) / m_h_psn_extra[iskim]->GetBinContent(
165  6 + 1)); //lml3 with fff|ffo|ffb
166  m_h_eff[iskim]->SetBinContent(13, m_h_psn_extra[iskim]->GetBinContent(32 + 1) / m_h_psn_extra[iskim]->GetBinContent(
167  6 + 1)); //lml4 with fff|ffo|ffb
168  m_h_eff[iskim]->SetBinContent(14, m_h_psn_extra[iskim]->GetBinContent(33 + 1) / m_h_psn_extra[iskim]->GetBinContent(
169  6 + 1)); //lml5 with fff|ffo|ffb
170  m_h_eff[iskim]->SetBinContent(15, m_h_psn_extra[iskim]->GetBinContent(34 + 1) / m_h_psn_extra[iskim]->GetBinContent(
171  6 + 1)); //lml6 with fff|ffo|ffb
172  m_h_eff[iskim]->SetBinContent(16, m_h_psn_extra[iskim]->GetBinContent(35 + 1) / m_h_psn_extra[iskim]->GetBinContent(
173  6 + 1)); //lml7 with fff|ffo|ffb
174  m_h_eff[iskim]->SetBinContent(17, m_h_psn_extra[iskim]->GetBinContent(36 + 1) / m_h_psn_extra[iskim]->GetBinContent(
175  6 + 1)); //lml8 with fff|ffo|ffb
176  m_h_eff[iskim]->SetBinContent(18, m_h_psn_extra[iskim]->GetBinContent(37 + 1) / m_h_psn_extra[iskim]->GetBinContent(
177  6 + 1)); //lml9 with fff|ffo|ffb
178  m_h_eff[iskim]->SetBinContent(19, m_h_psn_extra[iskim]->GetBinContent(38 + 1) / m_h_psn_extra[iskim]->GetBinContent(
179  6 + 1)); //lml10 with fff|ffo|ffb
180  m_h_eff[iskim]->SetBinContent(20, m_h_psn_extra[iskim]->GetBinContent(39 + 1) / m_h_psn_extra[iskim]->GetBinContent(
181  6 + 1)); //lml12 with fff|ffo|ffb
182  m_h_eff[iskim]->SetBinContent(21, m_h_psn_extra[iskim]->GetBinContent(40 + 1) / m_h_psn_extra[iskim]->GetBinContent(
183  6 + 1)); //lml13 with fff|ffo|ffb
184  m_h_eff[iskim]->SetBinContent(22, m_h_psn_extra[iskim]->GetBinContent(9 + 1) / m_h_psn_extra[iskim]->GetBinContent(
185  0 + 1)); //bha3d with all
186  m_h_eff[iskim]->SetBinContent(23, m_h_psn_extra[iskim]->GetBinContent(42 + 1) / m_h_psn_extra[iskim]->GetBinContent(
187  6 + 1)); //mu_b2b with fff|ffo|ffb
188  m_h_eff[iskim]->SetBinError(7, sqrt(m_h_psn_extra[iskim]->GetBinContent(27 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
189  6 + 1)); //hie with fff|ffo|ffb
190  m_h_eff[iskim]->SetBinError(8, sqrt(m_h_psn_extra[iskim]->GetBinContent(26 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
191  6 + 1)); //c4 with fff|ffo|ffb
192  m_h_eff[iskim]->SetBinError(9, sqrt(m_h_psn_extra[iskim]->GetBinContent(28 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
193  6 + 1)); //lml0 with fff|ffo|ffb
194  m_h_eff[iskim]->SetBinError(10, sqrt(m_h_psn_extra[iskim]->GetBinContent(29 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
195  6 + 1)); //lml1 with fff|ffo|ffb
196  m_h_eff[iskim]->SetBinError(11, sqrt(m_h_psn_extra[iskim]->GetBinContent(30 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
197  6 + 1)); //lml2 with fff|ffo|ffb
198  m_h_eff[iskim]->SetBinError(12, sqrt(m_h_psn_extra[iskim]->GetBinContent(31 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
199  6 + 1)); //lml3 with fff|ffo|ffb
200  m_h_eff[iskim]->SetBinError(13, sqrt(m_h_psn_extra[iskim]->GetBinContent(32 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
201  6 + 1)); //lml4 with fff|ffo|ffb
202  m_h_eff[iskim]->SetBinError(14, sqrt(m_h_psn_extra[iskim]->GetBinContent(33 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
203  6 + 1)); //lml5 with fff|ffo|ffb
204  m_h_eff[iskim]->SetBinError(15, sqrt(m_h_psn_extra[iskim]->GetBinContent(34 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
205  6 + 1)); //lml6 with fff|ffo|ffb
206  m_h_eff[iskim]->SetBinError(16, sqrt(m_h_psn_extra[iskim]->GetBinContent(35 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
207  6 + 1)); //lml7 with fff|ffo|ffb
208  m_h_eff[iskim]->SetBinError(17, sqrt(m_h_psn_extra[iskim]->GetBinContent(36 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
209  6 + 1)); //lml8 with fff|ffo|ffb
210  m_h_eff[iskim]->SetBinError(18, sqrt(m_h_psn_extra[iskim]->GetBinContent(37 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
211  6 + 1)); //lml9 with fff|ffo|ffb
212  m_h_eff[iskim]->SetBinError(19, sqrt(m_h_psn_extra[iskim]->GetBinContent(38 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
213  6 + 1)); //lml10 with fff|ffo|ffb
214  m_h_eff[iskim]->SetBinError(20, sqrt(m_h_psn_extra[iskim]->GetBinContent(39 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
215  6 + 1)); //lml12 with fff|ffo|ffb
216  m_h_eff[iskim]->SetBinError(21, sqrt(m_h_psn_extra[iskim]->GetBinContent(40 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
217  6 + 1)); //lml13 with fff|ffo|ffb
218  m_h_eff[iskim]->SetBinError(22, sqrt(m_h_psn_extra[iskim]->GetBinContent(9 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
219  0 + 1)); //bha3d with all
220  m_h_eff[iskim]->SetBinError(23, sqrt(m_h_psn_extra[iskim]->GetBinContent(42 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
221  6 + 1)); //mu_b2b with fff|ffo|ffb
222 
223  if (m_h_psn_extra[iskim]->GetBinContent(14 + 1) == 0)continue;
224  m_h_eff[iskim]->SetBinContent(24, m_h_psn_extra[iskim]->GetBinContent(48 + 1) / m_h_psn_extra[iskim]->GetBinContent(
225  14 + 1)); //mu_b2b with lml|eclmumu
226  m_h_eff[iskim]->SetBinContent(25, m_h_psn_extra[iskim]->GetBinContent(49 + 1) / m_h_psn_extra[iskim]->GetBinContent(
227  14 + 1)); //mu_eb2b with lml|eclmumu
228  m_h_eff[iskim]->SetBinContent(26, m_h_psn_extra[iskim]->GetBinContent(50 + 1) / m_h_psn_extra[iskim]->GetBinContent(
229  14 + 1)); //cdcklm1 with fff|ffo|ffb
230  m_h_eff[iskim]->SetBinContent(27, m_h_psn_extra[iskim]->GetBinContent(51 + 1) / m_h_psn_extra[iskim]->GetBinContent(
231  14 + 1)); //cdcklm2 with fff|ffo|ffb
232  m_h_eff[iskim]->SetBinContent(28, m_h_psn_extra[iskim]->GetBinContent(15 + 1) / m_h_psn_extra[iskim]->GetBinContent(
233  14 + 1)); //fff with lml|eclmumu
234  m_h_eff[iskim]->SetBinContent(29, m_h_psn_extra[iskim]->GetBinContent(16 + 1) / m_h_psn_extra[iskim]->GetBinContent(
235  14 + 1)); //ffo with lml|eclmumu
236  m_h_eff[iskim]->SetBinContent(30, m_h_psn_extra[iskim]->GetBinContent(17 + 1) / m_h_psn_extra[iskim]->GetBinContent(
237  14 + 1)); //ffb with lml|eclmumu
238  m_h_eff[iskim]->SetBinContent(31, m_h_psn_extra[iskim]->GetBinContent(11 + 1) / m_h_psn_extra[iskim]->GetBinContent(
239  14 + 1)); //ff with lml|eclmumu
240  m_h_eff[iskim]->SetBinContent(32, m_h_psn_extra[iskim]->GetBinContent(13 + 1) / m_h_psn_extra[iskim]->GetBinContent(
241  14 + 1)); //f with lml|eclmumu
242  m_h_eff[iskim]->SetBinContent(33, m_h_psn_extra[iskim]->GetBinContent(23 + 1) / m_h_psn_extra[iskim]->GetBinContent(
243  14 + 1)); //ffy with lml|eclmumu
244  m_h_eff[iskim]->SetBinContent(34, m_h_psn_extra[iskim]->GetBinContent(24 + 1) / m_h_psn_extra[iskim]->GetBinContent(
245  14 + 1)); //fyo with lml|eclmumu
246  m_h_eff[iskim]->SetBinContent(35, m_h_psn_extra[iskim]->GetBinContent(25 + 1) / m_h_psn_extra[iskim]->GetBinContent(
247  14 + 1)); //fyb with lml|eclmumu
248  m_h_eff[iskim]->SetBinError(24, sqrt(m_h_psn_extra[iskim]->GetBinContent(48 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
249  14 + 1)); //mu_b2b with lml|eclmumu
250  m_h_eff[iskim]->SetBinError(25, sqrt(m_h_psn_extra[iskim]->GetBinContent(49 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
251  14 + 1)); //mu_eb2b with lml|eclmumu
252  m_h_eff[iskim]->SetBinError(26, sqrt(m_h_psn_extra[iskim]->GetBinContent(50 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
253  14 + 1)); //cdcklm1 with lml|eclmumu
254  m_h_eff[iskim]->SetBinError(27, sqrt(m_h_psn_extra[iskim]->GetBinContent(51 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
255  14 + 1)); //cdcklm2 with lml|eclmumu
256  m_h_eff[iskim]->SetBinError(28, sqrt(m_h_psn_extra[iskim]->GetBinContent(15 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
257  14 + 1)); //fff with lml|eclmumu
258  m_h_eff[iskim]->SetBinError(29, sqrt(m_h_psn_extra[iskim]->GetBinContent(16 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
259  14 + 1)); //ffo with lml|eclmumu
260  m_h_eff[iskim]->SetBinError(30, sqrt(m_h_psn_extra[iskim]->GetBinContent(17 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
261  14 + 1)); //ffb with lml|eclmumu
262  m_h_eff[iskim]->SetBinError(31, sqrt(m_h_psn_extra[iskim]->GetBinContent(11 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
263  14 + 1)); //ff with lml|eclmumu
264  m_h_eff[iskim]->SetBinError(32, sqrt(m_h_psn_extra[iskim]->GetBinContent(13 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
265  14 + 1)); //f with lml|eclmumu
266  m_h_eff[iskim]->SetBinError(33, sqrt(m_h_psn_extra[iskim]->GetBinContent(23 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
267  14 + 1)); //ffy with lml|eclmumu
268  m_h_eff[iskim]->SetBinError(34, sqrt(m_h_psn_extra[iskim]->GetBinContent(24 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
269  14 + 1)); //fyo with lml|eclmumu
270  m_h_eff[iskim]->SetBinError(35, sqrt(m_h_psn_extra[iskim]->GetBinContent(25 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
271  14 + 1)); //fyb with lml|eclmumu
272 
273  m_h_eff[iskim]->SetBinContent(36, m_h_psn_extra[iskim]->GetBinContent(55 + 1) / m_h_psn_extra[iskim]->GetBinContent(
274  6 + 1)); //cdcecl2 with fff|ffo|ffb
275  m_h_eff[iskim]->SetBinContent(37, m_h_psn_extra[iskim]->GetBinContent(68 + 1) / m_h_psn_extra[iskim]->GetBinContent(
276  14 + 1)); //ecleklm with lml|eclmumu
277  m_h_eff[iskim]->SetBinContent(38, m_h_psn_extra[iskim]->GetBinContent(74 + 1) / m_h_psn_extra[iskim]->GetBinContent(
278  5 + 1)); //syo with c4|hie
279  m_h_eff[iskim]->SetBinContent(39, m_h_psn_extra[iskim]->GetBinContent(75 + 1) / m_h_psn_extra[iskim]->GetBinContent(
280  5 + 1)); //yioiecl1 with c4|hie
281  m_h_eff[iskim]->SetBinContent(40, m_h_psn_extra[iskim]->GetBinContent(76 + 1) / m_h_psn_extra[iskim]->GetBinContent(
282  5 + 1)); //stt with c4|hie
283 
284  m_h_eff[iskim]->SetBinError(36, sqrt(m_h_psn_extra[iskim]->GetBinContent(55 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
285  6 + 1)); //cdcecl2 with fff|ffo|ffb
286  m_h_eff[iskim]->SetBinError(37, sqrt(m_h_psn_extra[iskim]->GetBinContent(68 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
287  14 + 1)); //ecleklm with lml|eclmumu
288  m_h_eff[iskim]->SetBinError(38, sqrt(m_h_psn_extra[iskim]->GetBinContent(74 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
289  5 + 1)); //syo with c4|hie
290  m_h_eff[iskim]->SetBinError(39, sqrt(m_h_psn_extra[iskim]->GetBinContent(75 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
291  5 + 1)); //yioiecl1 with c4|hie
292  m_h_eff[iskim]->SetBinError(40, sqrt(m_h_psn_extra[iskim]->GetBinContent(76 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
293  5 + 1)); //stt with c4|hie
294  }
295  //fill efficiency for shifter
296  m_h_eff_shifter->SetBinContent(1, m_h_eff[9] ->GetBinContent(0 + 1)); //fff with c4|hie
297  m_h_eff_shifter->SetBinContent(2, m_h_eff[9] ->GetBinContent(1 + 1)); //ffo with c4|hie
298  m_h_eff_shifter->SetBinContent(3, m_h_eff[9] ->GetBinContent(3 + 1)); //ffy with c4|hie
299  m_h_eff_shifter->SetBinContent(4, m_h_eff[9] ->GetBinContent(4 + 1)); //fyo with c4|hie
300  m_h_eff_shifter->SetBinContent(5, m_h_eff[9] ->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
301  m_h_eff_shifter->SetBinContent(6, m_h_eff[9] ->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
302  m_h_eff_shifter->SetBinContent(7, m_h_eff[10]->GetBinContent(23 + 1)); //mu_b2b with lml|eclmumu
303  m_h_eff_shifter->SetBinContent(8, m_h_eff[10]->GetBinContent(24 + 1)); //mu_eb2b with lml|eclmumu
304  m_h_eff_shifter->SetBinContent(9, m_h_eff[10]->GetBinContent(26 + 1)); //cdcklm2 with lml|eclmumu
305  m_h_eff_shifter->SetBinContent(10, m_h_eff[10]->GetBinContent(35 + 1)); //cdcecl2 with fff|ffo|ffb
306  m_h_eff_shifter->SetBinContent(11, m_h_eff[10]->GetBinContent(36 + 1)); //ecleklm with lml|eclmumu
307  m_h_eff_shifter->SetBinContent(12, m_h_eff[9] ->GetBinContent(37 + 1)); //syo with c4|hie
308  m_h_eff_shifter->SetBinContent(13, m_h_eff[9] ->GetBinContent(38 + 1)); //yioiecl1 with c4|hie
309  m_h_eff_shifter->SetBinContent(14, m_h_eff[9] ->GetBinContent(39 + 1)); //stt with c4|hie
310  m_h_eff_shifter->SetBinError(1, m_h_eff[9] ->GetBinError(0 + 1)); //fff with c4|hie
311  m_h_eff_shifter->SetBinError(2, m_h_eff[9] ->GetBinError(1 + 1)); //ffo with c4|hie
312  m_h_eff_shifter->SetBinError(3, m_h_eff[9] ->GetBinError(3 + 1)); //ffy with c4|hie
313  m_h_eff_shifter->SetBinError(4, m_h_eff[9] ->GetBinError(4 + 1)); //fyo with c4|hie
314  m_h_eff_shifter->SetBinError(5, m_h_eff[9] ->GetBinError(6 + 1)); //hie with fff|ffo|ffb
315  m_h_eff_shifter->SetBinError(6, m_h_eff[9] ->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
316  m_h_eff_shifter->SetBinError(7, m_h_eff[10]->GetBinError(23 + 1)); //mu_b2b with lml|eclmumu
317  m_h_eff_shifter->SetBinError(8, m_h_eff[10]->GetBinError(24 + 1)); //mu_eb2b with lml|eclmumu
318  m_h_eff_shifter->SetBinError(9, m_h_eff[10]->GetBinError(26 + 1)); //cdcklm2 with lml|eclmumu
319  m_h_eff_shifter->SetBinError(10, m_h_eff[10]->GetBinError(35 + 1)); //cdcecl2 with fff|ffo|ffb
320  m_h_eff_shifter->SetBinError(11, m_h_eff[10]->GetBinError(36 + 1)); //ecleklm with lml|eclmumu
321  m_h_eff_shifter->SetBinError(12, m_h_eff[9] ->GetBinError(37 + 1)); //syo with c4|hie
322  m_h_eff_shifter->SetBinError(13, m_h_eff[9] ->GetBinError(38 + 1)); //yioiecl1 with c4|hie
323  m_h_eff_shifter->SetBinError(14, m_h_eff[9] ->GetBinError(39 + 1)); //stt with c4|hie
324 
325 
326  //fill efficiency with offline selection
327  m_h_psn_pure_extra = (TH1D*)findHist("TRGGDL/hGDL_psn_pure_extra_all");
328  if (m_h_psn_pure_extra == nullptr) {
329  B2WARNING("Histogram/canvas named hGDL_psn_pure_extra is not found.");
330  } else {
331  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
332  m_h_pure_eff->SetBinContent(1, m_h_psn_pure_extra->GetBinContent(1 + 1) / m_h_psn_pure_extra->GetBinContent(
333  0 + 1)); //fff with c4|hie
334  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
335  m_h_pure_eff->SetBinContent(2, m_h_psn_pure_extra->GetBinContent(4 + 1) / m_h_psn_pure_extra->GetBinContent(
336  3 + 1)); //ffo with c4|hie
337  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
338  m_h_pure_eff->SetBinContent(3, m_h_psn_pure_extra->GetBinContent(7 + 1) / m_h_psn_pure_extra->GetBinContent(
339  6 + 1)); //ffb with c4|hie
340  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
341  m_h_pure_eff->SetBinContent(4, m_h_psn_pure_extra->GetBinContent(2 + 1) / m_h_psn_pure_extra->GetBinContent(
342  0 + 1)); //ffy with c4|hie
343  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
344  m_h_pure_eff->SetBinContent(5, m_h_psn_pure_extra->GetBinContent(5 + 1) / m_h_psn_pure_extra->GetBinContent(
345  3 + 1)); //fyo with c4|hie
346  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
347  m_h_pure_eff->SetBinContent(6, m_h_psn_pure_extra->GetBinContent(8 + 1) / m_h_psn_pure_extra->GetBinContent(
348  6 + 1)); //fyb with c4|hie
349  if (m_h_psn_pure_extra->GetBinContent(9 + 1) != 0)
350  m_h_pure_eff->SetBinContent(7, m_h_psn_pure_extra->GetBinContent(10 + 1) / m_h_psn_pure_extra->GetBinContent(
351  9 + 1)); //hie with fff|ffo|ffb
352  if (m_h_psn_pure_extra->GetBinContent(11 + 1) != 0)
353  m_h_pure_eff->SetBinContent(8, m_h_psn_pure_extra->GetBinContent(12 + 1) / m_h_psn_pure_extra->GetBinContent(
354  11 + 1)); //hie with fff|ffo|ffb
355  }
356 
357  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
358  m_c_eff[iskim]->Clear();
359  m_c_eff[iskim]->cd();
360  m_h_eff[iskim]->SetMinimum(0);
361  m_h_eff[iskim]->Draw();
362  m_c_eff[iskim]->Update();
363  }
364 
365  m_c_eff_shifter->Clear();
366  m_c_eff_shifter->cd();
367  m_c_eff_shifter->SetFillColor(0);
368  m_h_eff_shifter->SetMaximum(1.1);
369  m_h_eff_shifter->SetMinimum(0);
370  m_h_eff_shifter->SetLineWidth(2);
371  for (int i = 0; i < n_eff_shifter; i++) {
372  double eff = m_h_eff_shifter->GetBinContent(i + 1);
373  double err = m_h_eff_shifter->GetBinError(i + 1);
374  double eff_err_min = eff - 2 * err;
375  double eff_err_max = eff + 2 * err;
376  if ((eff_err_max < m_limit_low_shifter[i]) || (eff_err_min > m_limit_high_shifter[i])) m_c_eff_shifter->SetFillColor(2);
377  }
378  m_h_eff_shifter->Draw();
379  for (int i = 0; i < n_eff_shifter; i++) {
380  m_line_limit_low_shifter[i]-> SetLineColor(1);
381  m_line_limit_low_shifter[i]-> SetLineStyle(2);
382  m_line_limit_low_shifter[i]-> SetLineWidth(2);
383  m_line_limit_low_shifter[i]-> Draw("same");
384  m_line_limit_high_shifter[i]->SetLineColor(1);
385  m_line_limit_high_shifter[i]->SetLineStyle(2);
386  m_line_limit_high_shifter[i]-> SetLineWidth(2);
387  m_line_limit_high_shifter[i]->Draw("same");
388  }
389  m_c_eff_shifter->Update();
390 
391  m_c_pure_eff->Clear();
392  m_c_pure_eff->cd();
393  m_h_pure_eff->SetMinimum(0);
394  m_h_pure_eff->Draw();
395  m_c_pure_eff->Update();
396 
397 
398 #ifdef _BELLE2_EPICS
399  for (auto i = 0; i < n_eff_shifter; i++) {
400  double data;
401  data = m_h_eff_shifter->GetBinContent(i + 1);
402  if (mychid[i]) SEVCHK(ca_put(DBR_DOUBLE, mychid[i], (void*)&data), "ca_set failure");
403  }
404  for (auto i = 0; i < nskim_gdldqm; i++) {
405  double data = 0;
406  if (m_h_psn_extra[i] == nullptr) {
407  B2WARNING("Histogram/canvas named hGDL_psn_extra is not found.");
408  } else if (m_h_psn_extra[6] == nullptr) {
409  B2WARNING("Histogram/canvas named hGDL_psn_extra is not found.");
410  } else {
411  if (i == 0 || i == 6) {
412  data = m_h_psn_extra[i]->GetBinContent(0 + 1);
413  } else if (m_h_psn_extra[6]->GetBinContent(0 + 1) != 0) {
414  data = m_h_psn_extra[i]->GetBinContent(0 + 1) / m_h_psn_extra[6]->GetBinContent(0 + 1);
415  }
416  }
417 
418  if (mychid_entry[i]) SEVCHK(ca_put(DBR_DOUBLE, mychid_entry[i], (void*)&data), "ca_set failure");
419  }
420  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
421 #endif
422 
423 }
424 
426 {
427  B2DEBUG(20, "DQMHistAnalysisTRGGDL : endRun called");
428 }
429 
431 {
432 #ifdef _BELLE2_EPICS
433  for (auto i = 0; i < n_eff_shifter; i++) {
434  if (mychid[i]) SEVCHK(ca_clear_channel(mychid[i]), "ca_clear_channel failure");
435  }
436  for (auto i = 0; i < nskim_gdldqm; i++) {
437  if (mychid_entry[i]) SEVCHK(ca_clear_channel(mychid_entry[i]), "ca_clear_channel failure");
438  }
439  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
440 #endif
441  B2DEBUG(20, "terminate called");
442 }
443 
444 TCanvas* DQMHistAnalysisTRGGDLModule::find_canvas(TString canvas_name)
445 {
446  TIter nextckey(gROOT->GetListOfCanvases());
447  TObject* cobj = NULL;
448 
449  while ((cobj = (TObject*)nextckey())) {
450  if (cobj->IsA()->InheritsFrom("TCanvas")) {
451  if (cobj->GetName() == canvas_name)
452  break;
453  }
454  }
455  return (TCanvas*)cobj;
456 }
457 
Belle2::DQMHistAnalysisTRGGDLModule::m_line_limit_low_shifter
TLine * m_line_limit_low_shifter[n_eff_shifter]
lower limit line for the simplified efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:204
Belle2::DQMHistAnalysisTRGGDLModule::find_canvas
TCanvas * find_canvas(TString cname)
Find canvas by name.
Definition: DQMHistAnalysisTRGGDL.cc:444
Belle2::Module::setDescription
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:216
Belle2::DQMHistAnalysisTRGGDLModule::n_eff
static const int n_eff
number of bins for the efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:125
Belle2::DQMHistAnalysisTRGGDLModule::m_c_eff_shifter
TCanvas * m_c_eff_shifter
Canvas for TRGGDL efficiency, simplified one for CR shifter.
Definition: DQMHistAnalysisTRGGDL.h:170
Belle2::DQMHistAnalysisTRGGDLModule::m_limit_low_shifter
double m_limit_low_shifter[n_eff_shifter]
lower limit value in each bin
Definition: DQMHistAnalysisTRGGDL.h:206
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::Module::c_ParallelProcessingCertified
@ 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:82
Belle2::DQMHistAnalysisTRGGDLModule::m_h_eff
TH1D * m_h_eff[nskim_gdldqm]
Histogram for TRGGDL efficiency in each HLT skim.
Definition: DQMHistAnalysisTRGGDL.h:124
Belle2::DQMHistAnalysisTRGGDLModule::c_pure_eff
const char * c_pure_eff[n_pure_eff]
label of bins for the efficiency histogram with offline selection
Definition: DQMHistAnalysisTRGGDL.h:193
Belle2::DQMHistAnalysisModule::findHist
static TH1 * findHist(const std::string &histname)
Find histogram.
Definition: DQMHistAnalysis.cc:83
Belle2::DQMHistAnalysisTRGGDLModule::m_h_pure_eff
TH1D * m_h_pure_eff
Histogram for TRGGDL efficiency with offline selection.
Definition: DQMHistAnalysisTRGGDL.h:190
Belle2::DQMHistAnalysisTRGGDLModule::m_debug
bool m_debug
debug
Definition: DQMHistAnalysisTRGGDL.h:102
Belle2::DQMHistAnalysisTRGGDLModule::endRun
virtual void endRun() override
End-of-run action.
Definition: DQMHistAnalysisTRGGDL.cc:425
Belle2::Module::setPropertyFlags
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:210
Belle2::DQMHistAnalysisTRGGDLModule::m_limit_high_shifter
double m_limit_high_shifter[n_eff_shifter]
upper limit value in each bin
Definition: DQMHistAnalysisTRGGDL.h:209
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::DQMHistAnalysisTRGGDLModule::n_pure_eff
static const int n_pure_eff
number of bins for the efficiency histogram with offline selection
Definition: DQMHistAnalysisTRGGDL.h:191
Belle2::DQMHistAnalysisTRGGDLModule::c_eff
const char * c_eff[n_eff]
label of bins for the efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:127
Belle2::DQMHistAnalysisTRGGDLModule::nskim_gdldqm
static const int nskim_gdldqm
number of HLT skims
Definition: DQMHistAnalysisTRGGDL.h:106
Belle2::DQMHistAnalysisTRGGDLModule::m_enableAlert
bool m_enableAlert
Enable alert by base color of canvases.
Definition: DQMHistAnalysisTRGGDL.h:103
Belle2::DQMHistAnalysisTRGGDLModule::c_eff_shifter
const char * c_eff_shifter[n_eff_shifter]
label of bins for the simplified efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:173
Belle2::DQMHistAnalysisTRGGDLModule::~DQMHistAnalysisTRGGDLModule
virtual ~DQMHistAnalysisTRGGDLModule()
Destructor.
Definition: DQMHistAnalysisTRGGDL.cc:48
Belle2::DQMHistAnalysisTRGGDLModule::m_h_psn_extra
TH1D * m_h_psn_extra[nskim_gdldqm]
DQM Histogram for PSN bits in each HLT skim.
Definition: DQMHistAnalysisTRGGDL.h:121
Belle2::DQMHistAnalysisTRGGDLModule::event
virtual void event() override
Event processor.
Definition: DQMHistAnalysisTRGGDL.cc:110
Belle2::Module::addParam
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:562
Belle2::DQMHistAnalysisTRGGDLModule::m_h_psn_pure_extra
TH1D * m_h_psn_pure_extra
DQM Histogram for PSN bits with offline selection.
Definition: DQMHistAnalysisTRGGDL.h:122
Belle2::DQMHistAnalysisTRGGDLModule::skim_smap
std::string skim_smap[nskim_gdldqm]
name of HLT skims
Definition: DQMHistAnalysisTRGGDL.h:107
Belle2::DQMHistAnalysisTRGGDLModule::beginRun
virtual void beginRun() override
Called when entering a new run.
Definition: DQMHistAnalysisTRGGDL.cc:106
Belle2::DQMHistAnalysisTRGGDLModule::m_h_eff_shifter
TH1D * m_h_eff_shifter
Histogram for TRGGDL efficiency, simplified one for CR shifter.
Definition: DQMHistAnalysisTRGGDL.h:171
Belle2::DQMHistAnalysisTRGGDLModule::m_c_pure_eff
TCanvas * m_c_pure_eff
Canvas for TRGGDL efficiency with offline selection.
Definition: DQMHistAnalysisTRGGDL.h:189
Belle2::DQMHistAnalysisTRGGDLModule::m_c_eff
TCanvas * m_c_eff[nskim_gdldqm]
Canvas for TRGGDL efficiency in each HLT skim.
Definition: DQMHistAnalysisTRGGDL.h:123
Belle2::DQMHistAnalysisTRGGDLModule::initialize
virtual void initialize() override
Initialize the Module.
Definition: DQMHistAnalysisTRGGDL.cc:55
Belle2::DQMHistAnalysisTRGGDLModule::terminate
virtual void terminate() override
Termination action.
Definition: DQMHistAnalysisTRGGDL.cc:430
Belle2::DQMHistAnalysisTRGGDLModule::n_eff_shifter
static const int n_eff_shifter
number of bins for the simplified efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:172
Belle2::DQMHistAnalysisTRGGDLModule::m_line_limit_high_shifter
TLine * m_line_limit_high_shifter[n_eff_shifter]
upper limit line for the simplified efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:205
Belle2::DQMHistAnalysisModule
The base class for the histogram analysis module.
Definition: DQMHistAnalysis.h:27