Belle II Software  release-05-01-25
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  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
97 #endif
98 
99  B2DEBUG(20, "DQMHistAnalysisTRGGDL: initialized.");
100 }
101 
103 {
104 }
105 
107 {
108 
109  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
110 
111  //get histo
112  char c_psn[1000];
113  sprintf(c_psn, "TRGGDL/hGDL_psn_extra_%s", skim_smap[iskim].c_str());
114  m_h_psn_extra[iskim] = (TH1D*)findHist(c_psn);
116  if (m_h_psn_extra[iskim] == NULL) {
117  B2INFO("Histogram/canvas named hGDL_psn_extra is not found.");
118  continue;
119  }
120 
121  //fill efficiency values
122  if (m_h_psn_extra[iskim]->GetBinContent(0 + 1) == 0)continue;
123  if (m_h_psn_extra[iskim]->GetBinContent(5 + 1) == 0)continue;
124  m_h_eff[iskim]->SetBinContent(1, m_h_psn_extra[iskim]->GetBinContent(1 + 1) / m_h_psn_extra[iskim]->GetBinContent(
125  5 + 1)); //fff with c4|hie
126  m_h_eff[iskim]->SetBinContent(2, m_h_psn_extra[iskim]->GetBinContent(2 + 1) / m_h_psn_extra[iskim]->GetBinContent(
127  5 + 1)); //ffo with c4|hie
128  m_h_eff[iskim]->SetBinContent(3, m_h_psn_extra[iskim]->GetBinContent(3 + 1) / m_h_psn_extra[iskim]->GetBinContent(
129  5 + 1)); //ffb with c4|hie
130  m_h_eff[iskim]->SetBinContent(4, m_h_psn_extra[iskim]->GetBinContent(19 + 1) / m_h_psn_extra[iskim]->GetBinContent(
131  5 + 1)); //ffy with c4|hie
132  m_h_eff[iskim]->SetBinContent(5, m_h_psn_extra[iskim]->GetBinContent(20 + 1) / m_h_psn_extra[iskim]->GetBinContent(
133  5 + 1)); //fyo with c4|hie
134  m_h_eff[iskim]->SetBinContent(6, m_h_psn_extra[iskim]->GetBinContent(21 + 1) / m_h_psn_extra[iskim]->GetBinContent(
135  5 + 1)); //fyb with c4|hie
136  m_h_eff[iskim]->SetBinError(1, sqrt(m_h_psn_extra[iskim]->GetBinContent(1 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
137  5 + 1)); //fff with c4|hie
138  m_h_eff[iskim]->SetBinError(2, sqrt(m_h_psn_extra[iskim]->GetBinContent(2 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
139  5 + 1)); //ffo with c4|hie
140  m_h_eff[iskim]->SetBinError(3, sqrt(m_h_psn_extra[iskim]->GetBinContent(3 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
141  5 + 1)); //ffb with c4|hie
142  m_h_eff[iskim]->SetBinError(4, sqrt(m_h_psn_extra[iskim]->GetBinContent(19 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
143  5 + 1)); //ffy with c4|hie
144  m_h_eff[iskim]->SetBinError(5, sqrt(m_h_psn_extra[iskim]->GetBinContent(20 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
145  5 + 1)); //fyo with c4|hie
146  m_h_eff[iskim]->SetBinError(6, sqrt(m_h_psn_extra[iskim]->GetBinContent(21 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
147  5 + 1)); //fyb with c4|hie
148 
149  if (m_h_psn_extra[iskim]->GetBinContent(6 + 1) == 0)continue;
150  m_h_eff[iskim]->SetBinContent(7, m_h_psn_extra[iskim]->GetBinContent(27 + 1) / m_h_psn_extra[iskim]->GetBinContent(
151  6 + 1)); //hie with fff|ffo|ffb
152  m_h_eff[iskim]->SetBinContent(8, m_h_psn_extra[iskim]->GetBinContent(26 + 1) / m_h_psn_extra[iskim]->GetBinContent(
153  6 + 1)); //c4 with fff|ffo|ffb
154  m_h_eff[iskim]->SetBinContent(9, m_h_psn_extra[iskim]->GetBinContent(28 + 1) / m_h_psn_extra[iskim]->GetBinContent(
155  6 + 1)); //lml0 with fff|ffo|ffb
156  m_h_eff[iskim]->SetBinContent(10, m_h_psn_extra[iskim]->GetBinContent(29 + 1) / m_h_psn_extra[iskim]->GetBinContent(
157  6 + 1)); //lml1 with fff|ffo|ffb
158  m_h_eff[iskim]->SetBinContent(11, m_h_psn_extra[iskim]->GetBinContent(30 + 1) / m_h_psn_extra[iskim]->GetBinContent(
159  6 + 1)); //lml2 with fff|ffo|ffb
160  m_h_eff[iskim]->SetBinContent(12, m_h_psn_extra[iskim]->GetBinContent(31 + 1) / m_h_psn_extra[iskim]->GetBinContent(
161  6 + 1)); //lml3 with fff|ffo|ffb
162  m_h_eff[iskim]->SetBinContent(13, m_h_psn_extra[iskim]->GetBinContent(32 + 1) / m_h_psn_extra[iskim]->GetBinContent(
163  6 + 1)); //lml4 with fff|ffo|ffb
164  m_h_eff[iskim]->SetBinContent(14, m_h_psn_extra[iskim]->GetBinContent(33 + 1) / m_h_psn_extra[iskim]->GetBinContent(
165  6 + 1)); //lml5 with fff|ffo|ffb
166  m_h_eff[iskim]->SetBinContent(15, m_h_psn_extra[iskim]->GetBinContent(34 + 1) / m_h_psn_extra[iskim]->GetBinContent(
167  6 + 1)); //lml6 with fff|ffo|ffb
168  m_h_eff[iskim]->SetBinContent(16, m_h_psn_extra[iskim]->GetBinContent(35 + 1) / m_h_psn_extra[iskim]->GetBinContent(
169  6 + 1)); //lml7 with fff|ffo|ffb
170  m_h_eff[iskim]->SetBinContent(17, m_h_psn_extra[iskim]->GetBinContent(36 + 1) / m_h_psn_extra[iskim]->GetBinContent(
171  6 + 1)); //lml8 with fff|ffo|ffb
172  m_h_eff[iskim]->SetBinContent(18, m_h_psn_extra[iskim]->GetBinContent(37 + 1) / m_h_psn_extra[iskim]->GetBinContent(
173  6 + 1)); //lml9 with fff|ffo|ffb
174  m_h_eff[iskim]->SetBinContent(19, m_h_psn_extra[iskim]->GetBinContent(38 + 1) / m_h_psn_extra[iskim]->GetBinContent(
175  6 + 1)); //lml10 with fff|ffo|ffb
176  m_h_eff[iskim]->SetBinContent(20, m_h_psn_extra[iskim]->GetBinContent(39 + 1) / m_h_psn_extra[iskim]->GetBinContent(
177  6 + 1)); //lml12 with fff|ffo|ffb
178  m_h_eff[iskim]->SetBinContent(21, m_h_psn_extra[iskim]->GetBinContent(40 + 1) / m_h_psn_extra[iskim]->GetBinContent(
179  6 + 1)); //lml13 with fff|ffo|ffb
180  m_h_eff[iskim]->SetBinContent(22, m_h_psn_extra[iskim]->GetBinContent(9 + 1) / m_h_psn_extra[iskim]->GetBinContent(
181  0 + 1)); //bha3d with all
182  m_h_eff[iskim]->SetBinContent(23, m_h_psn_extra[iskim]->GetBinContent(42 + 1) / m_h_psn_extra[iskim]->GetBinContent(
183  6 + 1)); //mu_b2b with fff|ffo|ffb
184  m_h_eff[iskim]->SetBinError(7, sqrt(m_h_psn_extra[iskim]->GetBinContent(27 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
185  6 + 1)); //hie with fff|ffo|ffb
186  m_h_eff[iskim]->SetBinError(8, sqrt(m_h_psn_extra[iskim]->GetBinContent(26 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
187  6 + 1)); //c4 with fff|ffo|ffb
188  m_h_eff[iskim]->SetBinError(9, sqrt(m_h_psn_extra[iskim]->GetBinContent(28 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
189  6 + 1)); //lml0 with fff|ffo|ffb
190  m_h_eff[iskim]->SetBinError(10, sqrt(m_h_psn_extra[iskim]->GetBinContent(29 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
191  6 + 1)); //lml1 with fff|ffo|ffb
192  m_h_eff[iskim]->SetBinError(11, sqrt(m_h_psn_extra[iskim]->GetBinContent(30 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
193  6 + 1)); //lml2 with fff|ffo|ffb
194  m_h_eff[iskim]->SetBinError(12, sqrt(m_h_psn_extra[iskim]->GetBinContent(31 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
195  6 + 1)); //lml3 with fff|ffo|ffb
196  m_h_eff[iskim]->SetBinError(13, sqrt(m_h_psn_extra[iskim]->GetBinContent(32 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
197  6 + 1)); //lml4 with fff|ffo|ffb
198  m_h_eff[iskim]->SetBinError(14, sqrt(m_h_psn_extra[iskim]->GetBinContent(33 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
199  6 + 1)); //lml5 with fff|ffo|ffb
200  m_h_eff[iskim]->SetBinError(15, sqrt(m_h_psn_extra[iskim]->GetBinContent(34 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
201  6 + 1)); //lml6 with fff|ffo|ffb
202  m_h_eff[iskim]->SetBinError(16, sqrt(m_h_psn_extra[iskim]->GetBinContent(35 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
203  6 + 1)); //lml7 with fff|ffo|ffb
204  m_h_eff[iskim]->SetBinError(17, sqrt(m_h_psn_extra[iskim]->GetBinContent(36 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
205  6 + 1)); //lml8 with fff|ffo|ffb
206  m_h_eff[iskim]->SetBinError(18, sqrt(m_h_psn_extra[iskim]->GetBinContent(37 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
207  6 + 1)); //lml9 with fff|ffo|ffb
208  m_h_eff[iskim]->SetBinError(19, sqrt(m_h_psn_extra[iskim]->GetBinContent(38 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
209  6 + 1)); //lml10 with fff|ffo|ffb
210  m_h_eff[iskim]->SetBinError(20, sqrt(m_h_psn_extra[iskim]->GetBinContent(39 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
211  6 + 1)); //lml12 with fff|ffo|ffb
212  m_h_eff[iskim]->SetBinError(21, sqrt(m_h_psn_extra[iskim]->GetBinContent(40 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
213  6 + 1)); //lml13 with fff|ffo|ffb
214  m_h_eff[iskim]->SetBinError(22, sqrt(m_h_psn_extra[iskim]->GetBinContent(9 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
215  0 + 1)); //bha3d with all
216  m_h_eff[iskim]->SetBinError(23, sqrt(m_h_psn_extra[iskim]->GetBinContent(42 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
217  6 + 1)); //mu_b2b with fff|ffo|ffb
218 
219  if (m_h_psn_extra[iskim]->GetBinContent(14 + 1) == 0)continue;
220  m_h_eff[iskim]->SetBinContent(24, m_h_psn_extra[iskim]->GetBinContent(48 + 1) / m_h_psn_extra[iskim]->GetBinContent(
221  14 + 1)); //mu_b2b with lml|eclmumu
222  m_h_eff[iskim]->SetBinContent(25, m_h_psn_extra[iskim]->GetBinContent(49 + 1) / m_h_psn_extra[iskim]->GetBinContent(
223  14 + 1)); //mu_eb2b with lml|eclmumu
224  m_h_eff[iskim]->SetBinContent(26, m_h_psn_extra[iskim]->GetBinContent(44 + 1) / m_h_psn_extra[iskim]->GetBinContent(
225  6 + 1)); //cdcklm1 with fff|ffo|ffb
226  m_h_eff[iskim]->SetBinContent(27, m_h_psn_extra[iskim]->GetBinContent(45 + 1) / m_h_psn_extra[iskim]->GetBinContent(
227  6 + 1)); //cdcklm2 with fff|ffo|ffb
228  m_h_eff[iskim]->SetBinContent(28, m_h_psn_extra[iskim]->GetBinContent(15 + 1) / m_h_psn_extra[iskim]->GetBinContent(
229  14 + 1)); //fff with lml|eclmumu
230  m_h_eff[iskim]->SetBinContent(29, m_h_psn_extra[iskim]->GetBinContent(16 + 1) / m_h_psn_extra[iskim]->GetBinContent(
231  14 + 1)); //ffo with lml|eclmumu
232  m_h_eff[iskim]->SetBinContent(30, m_h_psn_extra[iskim]->GetBinContent(17 + 1) / m_h_psn_extra[iskim]->GetBinContent(
233  14 + 1)); //ffb with lml|eclmumu
234  m_h_eff[iskim]->SetBinContent(31, m_h_psn_extra[iskim]->GetBinContent(11 + 1) / m_h_psn_extra[iskim]->GetBinContent(
235  14 + 1)); //ff with lml|eclmumu
236  m_h_eff[iskim]->SetBinContent(32, m_h_psn_extra[iskim]->GetBinContent(13 + 1) / m_h_psn_extra[iskim]->GetBinContent(
237  14 + 1)); //f with lml|eclmumu
238  m_h_eff[iskim]->SetBinContent(33, m_h_psn_extra[iskim]->GetBinContent(23 + 1) / m_h_psn_extra[iskim]->GetBinContent(
239  14 + 1)); //ffy with lml|eclmumu
240  m_h_eff[iskim]->SetBinContent(34, m_h_psn_extra[iskim]->GetBinContent(24 + 1) / m_h_psn_extra[iskim]->GetBinContent(
241  14 + 1)); //fyo with lml|eclmumu
242  m_h_eff[iskim]->SetBinContent(35, m_h_psn_extra[iskim]->GetBinContent(25 + 1) / m_h_psn_extra[iskim]->GetBinContent(
243  14 + 1)); //fyb with lml|eclmumu
244  m_h_eff[iskim]->SetBinError(24, sqrt(m_h_psn_extra[iskim]->GetBinContent(48 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
245  14 + 1)); //mu_b2b with lml|eclmumu
246  m_h_eff[iskim]->SetBinError(25, sqrt(m_h_psn_extra[iskim]->GetBinContent(49 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
247  14 + 1)); //mu_eb2b with lml|eclmumu
248  m_h_eff[iskim]->SetBinError(26, sqrt(m_h_psn_extra[iskim]->GetBinContent(44 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
249  6 + 1)); //cdcklm1 with fff|ffo|ffb
250  m_h_eff[iskim]->SetBinError(27, sqrt(m_h_psn_extra[iskim]->GetBinContent(45 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
251  6 + 1)); //cdcklm2 with fff|ffo|ffb
252  m_h_eff[iskim]->SetBinError(28, sqrt(m_h_psn_extra[iskim]->GetBinContent(15 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
253  14 + 1)); //fff with lml|eclmumu
254  m_h_eff[iskim]->SetBinError(29, sqrt(m_h_psn_extra[iskim]->GetBinContent(16 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
255  14 + 1)); //ffo with lml|eclmumu
256  m_h_eff[iskim]->SetBinError(30, sqrt(m_h_psn_extra[iskim]->GetBinContent(17 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
257  14 + 1)); //ffb with lml|eclmumu
258  m_h_eff[iskim]->SetBinError(31, sqrt(m_h_psn_extra[iskim]->GetBinContent(11 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
259  14 + 1)); //ff with lml|eclmumu
260  m_h_eff[iskim]->SetBinError(32, sqrt(m_h_psn_extra[iskim]->GetBinContent(13 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
261  14 + 1)); //f with lml|eclmumu
262  m_h_eff[iskim]->SetBinError(33, sqrt(m_h_psn_extra[iskim]->GetBinContent(23 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
263  14 + 1)); //ffy with lml|eclmumu
264  m_h_eff[iskim]->SetBinError(34, sqrt(m_h_psn_extra[iskim]->GetBinContent(24 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
265  14 + 1)); //fyo with lml|eclmumu
266  m_h_eff[iskim]->SetBinError(35, sqrt(m_h_psn_extra[iskim]->GetBinContent(25 + 1)) / m_h_psn_extra[iskim]->GetBinContent(
267  14 + 1)); //fyb with lml|eclmumu
268  }
269  //fill efficiency for shifter
270  m_h_eff_shifter->SetBinContent(1, m_h_eff[1]->GetBinContent(0 + 1)); //fff with c4|hie
271  m_h_eff_shifter->SetBinContent(2, m_h_eff[1]->GetBinContent(1 + 1)); //ffo with c4|hie
272  m_h_eff_shifter->SetBinContent(3, m_h_eff[1]->GetBinContent(3 + 1)); //ffy with c4|hie
273  m_h_eff_shifter->SetBinContent(4, m_h_eff[1]->GetBinContent(4 + 1)); //fyo with c4|hie
274  m_h_eff_shifter->SetBinContent(5, m_h_eff[1]->GetBinContent(6 + 1)); //hie with fff|ffo|ffb
275  m_h_eff_shifter->SetBinContent(6, m_h_eff[1]->GetBinContent(7 + 1)); //c4 with fff|ffo|ffb
276  m_h_eff_shifter->SetBinContent(7, m_h_eff[4]->GetBinContent(22 + 1)); //mu_b2b with lml|eclmumu
277  m_h_eff_shifter->SetBinError(1, m_h_eff[1]->GetBinError(0 + 1)); //fff with c4|hie
278  m_h_eff_shifter->SetBinError(2, m_h_eff[1]->GetBinError(1 + 1)); //ffo with c4|hie
279  m_h_eff_shifter->SetBinError(3, m_h_eff[1]->GetBinError(3 + 1)); //ffy with c4|hie
280  m_h_eff_shifter->SetBinError(4, m_h_eff[1]->GetBinError(4 + 1)); //fyo with c4|hie
281  m_h_eff_shifter->SetBinError(5, m_h_eff[1]->GetBinError(6 + 1)); //hie with fff|ffo|ffb
282  m_h_eff_shifter->SetBinError(6, m_h_eff[1]->GetBinError(7 + 1)); //c4 with fff|ffo|ffb
283  m_h_eff_shifter->SetBinError(7, m_h_eff[4]->GetBinError(22 + 1)); //mu_b2b with lml|eclmumu
284 
285 
286  //fill efficiency with offline selection
287  m_h_psn_pure_extra = (TH1D*)findHist("TRGGDL/hGDL_psn_pure_extra_all");
288  if (m_h_psn_pure_extra == NULL) {
289  B2INFO("Histogram/canvas named hGDL_psn_pure_extra is not found.");
290  } else {
291  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
292  m_h_pure_eff->SetBinContent(1, m_h_psn_pure_extra->GetBinContent(1 + 1) / m_h_psn_pure_extra->GetBinContent(
293  0 + 1)); //fff with c4|hie
294  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
295  m_h_pure_eff->SetBinContent(2, m_h_psn_pure_extra->GetBinContent(4 + 1) / m_h_psn_pure_extra->GetBinContent(
296  3 + 1)); //ffo with c4|hie
297  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
298  m_h_pure_eff->SetBinContent(3, m_h_psn_pure_extra->GetBinContent(7 + 1) / m_h_psn_pure_extra->GetBinContent(
299  6 + 1)); //ffb with c4|hie
300  if (m_h_psn_pure_extra->GetBinContent(0 + 1) != 0)
301  m_h_pure_eff->SetBinContent(4, m_h_psn_pure_extra->GetBinContent(2 + 1) / m_h_psn_pure_extra->GetBinContent(
302  0 + 1)); //ffy with c4|hie
303  if (m_h_psn_pure_extra->GetBinContent(3 + 1) != 0)
304  m_h_pure_eff->SetBinContent(5, m_h_psn_pure_extra->GetBinContent(5 + 1) / m_h_psn_pure_extra->GetBinContent(
305  3 + 1)); //fyo with c4|hie
306  if (m_h_psn_pure_extra->GetBinContent(6 + 1) != 0)
307  m_h_pure_eff->SetBinContent(6, m_h_psn_pure_extra->GetBinContent(8 + 1) / m_h_psn_pure_extra->GetBinContent(
308  6 + 1)); //fyb with c4|hie
309  if (m_h_psn_pure_extra->GetBinContent(9 + 1) != 0)
310  m_h_pure_eff->SetBinContent(7, m_h_psn_pure_extra->GetBinContent(10 + 1) / m_h_psn_pure_extra->GetBinContent(
311  9 + 1)); //hie with fff|ffo|ffb
312  if (m_h_psn_pure_extra->GetBinContent(11 + 1) != 0)
313  m_h_pure_eff->SetBinContent(8, m_h_psn_pure_extra->GetBinContent(12 + 1) / m_h_psn_pure_extra->GetBinContent(
314  11 + 1)); //hie with fff|ffo|ffb
315  }
316 
317  for (unsigned iskim = 0; iskim < nskim_gdldqm; iskim++) {
318  m_c_eff[iskim]->Clear();
319  m_c_eff[iskim]->cd();
320  m_h_eff[iskim]->SetMinimum(0);
321  m_h_eff[iskim]->Draw();
322  m_c_eff[iskim]->Update();
323  }
324 
325  m_c_eff_shifter->Clear();
326  m_c_eff_shifter->cd();
327  m_c_eff_shifter->SetFillColor(0);
328  m_h_eff_shifter->SetMaximum(1.1);
329  m_h_eff_shifter->SetMinimum(0);
330  m_h_eff_shifter->SetLineWidth(2);
331  for (int i = 0; i < n_eff_shifter; i++) {
332  double eff = m_h_eff_shifter->GetBinContent(i + 1);
333  double err = m_h_eff_shifter->GetBinError(i + 1);
334  double eff_err_min = eff - 2 * err;
335  double eff_err_max = eff + 2 * err;
336  if ((eff_err_max < m_limit_low_shifter[i]) || (eff_err_min > m_limit_high_shifter[i])) m_c_eff_shifter->SetFillColor(2);
337  }
338  m_h_eff_shifter->Draw();
339  for (int i = 0; i < n_eff_shifter; i++) {
340  m_line_limit_low_shifter[i]-> SetLineColor(1);
341  m_line_limit_low_shifter[i]-> SetLineStyle(2);
342  m_line_limit_low_shifter[i]-> SetLineWidth(2);
343  m_line_limit_low_shifter[i]-> Draw("same");
344  m_line_limit_high_shifter[i]->SetLineColor(1);
345  m_line_limit_high_shifter[i]->SetLineStyle(2);
346  m_line_limit_high_shifter[i]-> SetLineWidth(2);
347  m_line_limit_high_shifter[i]->Draw("same");
348  }
349  m_c_eff_shifter->Update();
350 
351  m_c_pure_eff->Clear();
352  m_c_pure_eff->cd();
353  m_h_pure_eff->SetMinimum(0);
354  m_h_pure_eff->Draw();
355  m_c_pure_eff->Update();
356 
357 
358 #ifdef _BELLE2_EPICS
359  for (auto i = 0; i < n_eff_shifter; i++) {
360  double data;
361  data = m_h_eff_shifter->GetBinContent(i + 1);
362  if (mychid[i]) SEVCHK(ca_put(DBR_DOUBLE, mychid[i], (void*)&data), "ca_set failure");
363  }
364  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
365 #endif
366 
367 }
368 
370 {
371  B2DEBUG(20, "DQMHistAnalysisTRGGDL : endRun called");
372 }
373 
375 {
376 #ifdef _BELLE2_EPICS
377  for (auto i = 0; i < n_eff_shifter; i++) {
378  if (mychid[i]) SEVCHK(ca_clear_channel(mychid[i]), "ca_clear_channel failure");
379  }
380  SEVCHK(ca_pend_io(5.0), "ca_pend_io failure");
381 #endif
382  B2DEBUG(20, "terminate called");
383 }
384 
385 TCanvas* DQMHistAnalysisTRGGDLModule::find_canvas(TString canvas_name)
386 {
387  TIter nextckey(gROOT->GetListOfCanvases());
388  TObject* cobj = NULL;
389 
390  while ((cobj = (TObject*)nextckey())) {
391  if (cobj->IsA()->InheritsFrom("TCanvas")) {
392  if (cobj->GetName() == canvas_name)
393  break;
394  }
395  }
396  return (TCanvas*)cobj;
397 }
398 
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:191
Belle2::DQMHistAnalysisTRGGDLModule::find_canvas
TCanvas * find_canvas(TString cname)
Find canvas by name.
Definition: DQMHistAnalysisTRGGDL.cc:385
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:164
Belle2::DQMHistAnalysisTRGGDLModule::m_limit_low_shifter
double m_limit_low_shifter[n_eff_shifter]
lower limit value in each bin
Definition: DQMHistAnalysisTRGGDL.h:193
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:180
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:177
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:369
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:196
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:178
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:167
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:106
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:102
Belle2::DQMHistAnalysisTRGGDLModule::m_h_eff_shifter
TH1D * m_h_eff_shifter
Histogram for TRGGDL efficiency, simplified one for CR shifter.
Definition: DQMHistAnalysisTRGGDL.h:165
Belle2::DQMHistAnalysisTRGGDLModule::m_c_pure_eff
TCanvas * m_c_pure_eff
Canvas for TRGGDL efficiency with offline selection.
Definition: DQMHistAnalysisTRGGDL.h:176
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:374
Belle2::DQMHistAnalysisTRGGDLModule::n_eff_shifter
static const int n_eff_shifter
number of bins for the simplified efficiency histogram
Definition: DQMHistAnalysisTRGGDL.h:166
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:192
Belle2::DQMHistAnalysisModule
The base class for the histogram analysis module.
Definition: DQMHistAnalysis.h:27