Belle II Software  release-08-01-10
DQMHistAnalysisMiraBelle.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/DQMHistAnalysisMiraBelle.h>
11 
12 #include <TROOT.h>
13 #include <TF1.h>
14 
15 using namespace std;
16 using namespace Belle2;
17 
18 //-----------------------------------------------------------------
19 // Register module
20 //-----------------------------------------------------------------
21 
22 REG_MODULE(DQMHistAnalysisMiraBelle);
23 
24 DQMHistAnalysisMiraBelleModule::DQMHistAnalysisMiraBelleModule()
26 {
27  // set module description (e.g. insert text)
28  setDescription("Modify and analyze the data quality histograms of MiraBelle");
30  addParam("scale_dst", m_scale_dst, "Scale factor signal/sideband", 0.09375);
31 }
32 
34 {
35 }
36 
38 {
39  gROOT->cd();
40 
41  //mon_mumu = new Belle2::MonitoringObject("mumu");
42  mon_mumu = getMonitoringObject("mumu");
44  //bhabha,hadrons
45  mon_bhabha = getMonitoringObject("bhabha");
46  mon_hadron = getMonitoringObject("hadronb2");
47 
48  // make cavases to be added to MonitoringObject
49  mumu_main = new TCanvas("mumu_main", "mumu_main", 0, 0, 800, 600);
50  mumu_resolution = new TCanvas("mumu_resolution", "mumu_resolution", 0, 0, 800, 600);
51  mumu_muon_val = new TCanvas("mumu_muon_val", "mumu_muon_val", 0, 0, 400, 400);
52  dst_mass = new TCanvas("dst_mass", "dst_mass", 0, 0, 1200, 400);
53  dst_pi_val = new TCanvas("dst_pi_val", "dst_pi_val", 0, 0, 800, 400);
54  dst_k_val = new TCanvas("dst_k_val", "dst_k_val", 0, 0, 800, 400);
55  //bhabha,hadrons
56  bhabha_main = new TCanvas("bhabha_main", "bhabha_main", 0, 0, 800, 600);
57  bhabha_resolution = new TCanvas("bhabha_resolution", "bhabha_resolution", 0, 0, 800, 600);
58  hadron_main = new TCanvas("hadron_main", "hadron_main", 0, 0, 800, 600);
59 
60  // add canvases to MonitoringObject
67  //bhabha,hadrons
71 
72  B2DEBUG(20, "DQMHistAnalysisMiraBelle: initialized.");
73 
74 }
75 
77 {
78  B2DEBUG(20, "DQMHistAnalysisMiraBelle: beginRun called.");
79 }
80 
82 {
83  B2DEBUG(20, "DQMHistAnalysisOutputMiraBelle: event called.");
84 }
85 
87 {
88  // ========== mumutight
89  // get existing histograms produced by DQM modules
90  auto* hist_npxd = findHist("PhysicsObjectsMiraBelle/hist_npxd");
91  auto* hist_nsvd = findHist("PhysicsObjectsMiraBelle/hist_nsvd");
92  auto* hist_ncdc = findHist("PhysicsObjectsMiraBelle/hist_ncdc");
93  auto* hist_topdig = findHist("PhysicsObjectsMiraBelle/hist_topdig");
94  auto* hist_DetPhotonARICH = findHist("PhysicsObjectsMiraBelle/hist_DetPhotonARICH");
95  auto* hist_klmTotalHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalHits");
96  auto* hist_klmClusterLayers = findHist("PhysicsObjectsMiraBelle/hist_klmClusterLayers");
97  auto* hist_dD0 = findHist("PhysicsObjectsMiraBelle/hist_dD0");
98  auto* hist_dZ0 = findHist("PhysicsObjectsMiraBelle/hist_dZ0");
99  auto* hist_dPtcms = findHist("PhysicsObjectsMiraBelle/hist_dPtcms");
100  auto* hist_Pval = findHist("PhysicsObjectsMiraBelle/hist_Pval");
101  auto* hist_nExtraCDCHits = findHist("PhysicsObjectsMiraBelle/hist_nExtraCDCHits");
102  auto* hist_nECLClusters = findHist("PhysicsObjectsMiraBelle/hist_nECLClusters");
103  auto* hist_muid = findHist("PhysicsObjectsMiraBelle/hist_muid");
104  auto* hist_inv_p = findHist("PhysicsObjectsMiraBelle/hist_inv_p");
105  auto* hist_ndf = findHist("PhysicsObjectsMiraBelle/hist_ndf");
106  auto* hist_D0 = findHist("PhysicsObjectsMiraBelle/hist_D0");
107  auto* hist_Z0 = findHist("PhysicsObjectsMiraBelle/hist_Z0");
108  auto* hist_theta = findHist("PhysicsObjectsMiraBelle/hist_theta");
109  auto* hist_Phi0 = findHist("PhysicsObjectsMiraBelle/hist_Phi0");
110  auto* hist_Pt = findHist("PhysicsObjectsMiraBelle/hist_Pt");
111  auto* hist_Mom = findHist("PhysicsObjectsMiraBelle/hist_Mom");
112  auto* hist_klmTotalBarrelHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalBarrelHits");
113  auto* hist_klmTotalEndcapHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalEndcapHits");
114  auto* hist_dPhicms = findHist("PhysicsObjectsMiraBelle/hist_dPhicms");
115 
116  if (hist_npxd == nullptr) {
117  B2ERROR("Can not find the hist_npxd histogram!");
118  return;
119  }
120  if (hist_nsvd == nullptr) {
121  B2ERROR("Can not find the hist_nsvd histogram!");
122  return;
123  }
124  if (hist_ncdc == nullptr) {
125  B2ERROR("Can not find the hist_ncdc histogram!");
126  return;
127  }
128  if (hist_topdig == nullptr) {
129  B2ERROR("Can not find the hist_topdig histogram!");
130  return;
131  }
132  if (hist_DetPhotonARICH == nullptr) {
133  B2ERROR("Can not find the hist_DetPhotonARICH histogram!");
134  return;
135  }
136  if (hist_klmTotalHits == nullptr) {
137  B2ERROR("Can not find the hist_klmTotalHits histogram!");
138  return;
139  }
140  if (hist_klmClusterLayers == nullptr) {
141  B2ERROR("Can not find the hist_klmClusterLayers histogram!");
142  return;
143  }
144  if (hist_dD0 == nullptr) {
145  B2ERROR("Can not find the hist_dD0 histogram!");
146  return;
147  }
148  if (hist_dZ0 == nullptr) {
149  B2ERROR("Can not find the hist_dZ0 histogram!");
150  return;
151  }
152  if (hist_dPtcms == nullptr) {
153  B2ERROR("Can not find the hist_dPtcms histogram!");
154  return;
155  }
156  if (hist_Pval == nullptr) {
157  B2ERROR("Can not find the hist_Pval histogram!");
158  return;
159  }
160  if (hist_nExtraCDCHits == nullptr) {
161  B2ERROR("Can not find the hist_nExtraCDCHits histogram!");
162  return;
163  }
164  if (hist_nECLClusters == nullptr) {
165  B2ERROR("Can not find the hist_nECLClusters histogram!");
166  return;
167  }
168  if (hist_muid == nullptr) {
169  B2ERROR("Can not find the hist_muid histogram!");
170  return;
171  }
172  if (hist_inv_p == nullptr) {
173  B2ERROR("Can not find the hist_inv_p histogram!");
174  return;
175  }
176  if (hist_ndf == nullptr) {
177  B2ERROR("Can not find the hist_ndf histogram!");
178  return;
179  }
180  if (hist_D0 == nullptr) {
181  B2ERROR("Can not find the hist_D0 histogram!");
182  return;
183  }
184  if (hist_Z0 == nullptr) {
185  B2ERROR("Can not find the hist_Z0 histogram!");
186  return;
187  }
188  if (hist_theta == nullptr) {
189  B2ERROR("Can not find the hist_theta histogram!");
190  return;
191  }
192  if (hist_Phi0 == nullptr) {
193  B2ERROR("Can not find the hist_Phi0 histogram!");
194  return;
195  }
196  if (hist_Pt == nullptr) {
197  B2ERROR("Can not find the hist_Pt histogram!");
198  return;
199  }
200  if (hist_Mom == nullptr) {
201  B2ERROR("Can not find the hist_Mom histogram!");
202  return;
203  }
204  if (hist_klmTotalBarrelHits == nullptr) {
205  B2ERROR("Can not find the hist_klmTotalBarrelHits histogram!");
206  return;
207  }
208  if (hist_klmTotalEndcapHits == nullptr) {
209  B2ERROR("Can not find the hist_klmTotalEndcapHits histogram!");
210  return;
211  }
212  if (hist_dPhicms == nullptr) {
213  B2ERROR("Can not find the hist_dPhicms histogram!");
214  return;
215  }
216 
217  // Make TCanvases
218  // --- Mumu_Main
219  mumu_main->Divide(4, 3);
220  mumu_main->cd(1); hist_theta->Draw();
221  mumu_main->cd(2); hist_Phi0->Draw();
222  mumu_main->cd(3); hist_Mom->Draw();
223  mumu_main->cd(4); hist_Pt->Draw();
224  mumu_main->cd(5); hist_npxd->Draw();
225  mumu_main->cd(6); hist_nsvd->Draw();
226  mumu_main->cd(7); hist_ncdc->Draw();
227  mumu_main->cd(8); hist_topdig->Draw();
228  mumu_main->cd(9); hist_DetPhotonARICH->Draw();
229  mumu_main->cd(10); hist_klmClusterLayers->Draw();
230  mumu_main->cd(11); hist_nExtraCDCHits->Draw();
231  mumu_main->cd(12); hist_nECLClusters->Draw();
232  // --- Mumu_Resolution
233  mumu_resolution->Divide(3, 3);
234  mumu_resolution->cd(1); hist_inv_p->Draw();
235  mumu_resolution->cd(2); hist_dD0->Draw();
236  mumu_resolution->cd(3); hist_dZ0->Draw();
237  mumu_resolution->cd(4); hist_dPtcms->Draw();
238  mumu_resolution->cd(5); hist_dPhicms->Draw();
239  mumu_resolution->cd(6); hist_nECLClusters->Draw();
240  mumu_resolution->cd(7); hist_nExtraCDCHits->Draw();
241  mumu_resolution->cd(8); hist_ndf->Draw();
242  mumu_muon_val->Divide(2, 2);
243  // --- Muon variables
244  mumu_muon_val->cd(1); hist_muid->Draw();
245  mumu_muon_val->cd(2); hist_Pval->Draw();
246  mumu_muon_val->cd(3); hist_theta->Draw();
247  mumu_muon_val->cd(4); hist_Phi0->Draw();
248 
249  // calculate the values of monitoring variables
250  double mean_npxd = hist_npxd->GetMean();
251  double mean_nsvd = hist_nsvd->GetMean();
252  double mean_ncdc = hist_ncdc->GetMean();
253  double mean_nklmlayer = hist_klmClusterLayers->GetMean();
254  double mean_nklm = hist_klmTotalHits->GetMean();
255  double mean_nbklm = hist_klmTotalBarrelHits->GetMean();
256  double mean_neklm = hist_klmTotalEndcapHits->GetMean();
257  double mean_topdig = hist_topdig->GetMean();
258  double mean_parich = hist_DetPhotonARICH->GetMean();
259  double mean_ncdc_ex = hist_nExtraCDCHits->GetMean();
260  double mean_necl = hist_nECLClusters->GetMean();
261  double mean_muid = hist_muid->GetMean();
262  double mean_d0 = hist_D0->GetMean();
263  double mean_z0 = hist_Z0->GetMean();
264  double mean_pval = hist_Pval->GetMean();
265  double mean_ndf = hist_ndf->GetMean();
266  double dif_ndf_ncdc = mean_ndf - mean_ncdc;
267  double mean_dd0 = hist_dD0->GetMean();
268  double mean_dz0 = hist_dZ0->GetMean();
269  double mean_dpt = hist_dPtcms->GetMean();
270  double rms_dd0 = hist_dD0->GetRMS();
271  double rms_dz0 = hist_dZ0->GetRMS();
272  double rms_dpt = hist_dPtcms->GetRMS();
273  double sigma68_dd0 = getSigma68(hist_dD0);
274  double sigma68_dz0 = getSigma68(hist_dZ0);
275  double sigma68_dpt = getSigma68(hist_dPtcms);
276  int ntot = hist_nsvd->GetEntries();
277  double neve_mumu = ntot;
278  double goodmu_frac = -1.;
279  double pval_frac_0 = -1.;
280  double pval_frac_1 = -1.;
281  double nocdc_frac = -1.;
282  double notop_frac = -1.;
283  double noarich_frac = -1.;
284  double muidcontent = hist_muid->GetBinContent(1);
285  double goodmu_o_badmu = -1.;
286  if (muidcontent != 0) {
287  goodmu_o_badmu = hist_muid->GetBinContent(20) / muidcontent;
288  } else {
289  goodmu_o_badmu = 0.0;
290  }
291  double pval_more95 = 0.0;
292  double pval_less05 = 0.0;
293  for (int i = 95; i < 100; i++) pval_more95 += hist_Pval->GetBinContent(i + 1);
294  for (int i = 0; i < 5; i++) pval_less05 += hist_Pval->GetBinContent(i + 1);
295  if (ntot != 0) {
296  goodmu_frac = hist_muid->GetBinContent(20) / neve_mumu;
297  pval_frac_0 = pval_less05 / neve_mumu;
298  pval_frac_1 = pval_more95 / neve_mumu;
299  nocdc_frac = hist_ncdc->GetBinContent(1) / neve_mumu;
300  notop_frac = hist_topdig->GetBinContent(1) / neve_mumu;
301  noarich_frac = hist_DetPhotonARICH->GetBinContent(1) / neve_mumu;
302  } else {
303  goodmu_frac = 0.0;
304  pval_frac_0 = 0.0;
305  pval_frac_1 = 0.0;
306  nocdc_frac = 0.0;
307  notop_frac = 0.0;
308  noarich_frac = 0.0;
309  }
310  //Calculate M(mumu)
311  double peak_mumu = hist_inv_p->GetXaxis()->GetBinCenter(hist_inv_p->GetMaximumBin());
312  TF1* f_mumuInvM = new TF1("f_mumuInvM", "gaus", peak_mumu - 0.04, peak_mumu + 0.04);
313  f_mumuInvM->SetParameters(hist_inv_p->GetMaximum(), peak_mumu, 0.045);
314  f_mumuInvM->SetParLimits(1, peak_mumu - 0.04, peak_mumu + 0.04);
315  f_mumuInvM->SetParLimits(2, 0.01, 0.06);
316  hist_inv_p->Fit(f_mumuInvM, "R");
317  double fit_mumumass = f_mumuInvM->GetParameter(1);
318  if (fit_mumumass < 9.) fit_mumumass = 9.;
319  if (fit_mumumass > 12.) fit_mumumass = 12.;
320 
321  // set values
322  mon_mumu->setVariable("mean_npxd", mean_npxd);
323  mon_mumu->setVariable("mean_nsvd", mean_nsvd);
324  mon_mumu->setVariable("mean_ncdc", mean_ncdc);
325  mon_mumu->setVariable("mean_nklmlayer", mean_nklmlayer);
326  mon_mumu->setVariable("mean_nklm", mean_nklm);
327  mon_mumu->setVariable("mean_nbklm", mean_nbklm);
328  mon_mumu->setVariable("mean_neklm", mean_neklm);
329  mon_mumu->setVariable("mean_topdig", mean_topdig);
330  mon_mumu->setVariable("mean_parich", mean_parich);
331  mon_mumu->setVariable("mean_ncdc_ex", mean_ncdc_ex);
332  mon_mumu->setVariable("mean_necl", mean_necl);
333  mon_mumu->setVariable("mean_muid", mean_muid);
334  mon_mumu->setVariable("mean_d0", mean_d0);
335  mon_mumu->setVariable("mean_z0", mean_z0);
336  mon_mumu->setVariable("mean_pval", mean_pval);
337  mon_mumu->setVariable("mean_ndf", mean_ndf);
338  mon_mumu->setVariable("dif_ndf_ncdc", dif_ndf_ncdc);
339  mon_mumu->setVariable("mean_dd0", mean_dd0);
340  mon_mumu->setVariable("mean_dz0", mean_dz0);
341  mon_mumu->setVariable("mean_dpt", mean_dpt);
342  mon_mumu->setVariable("rms_dd0", rms_dd0);
343  mon_mumu->setVariable("rms_dz0", rms_dz0);
344  mon_mumu->setVariable("rms_dpt", rms_dpt);
345  mon_mumu->setVariable("sigma68_dd0", sigma68_dd0);
346  mon_mumu->setVariable("sigma68_dz0", sigma68_dz0);
347  mon_mumu->setVariable("sigma68_dpt", sigma68_dpt);
348  mon_mumu->setVariable("neve_mumu", neve_mumu);
349  mon_mumu->setVariable("goodmu_frac", goodmu_frac);
350  mon_mumu->setVariable("goodmu_o_badmu", goodmu_o_badmu);
351  mon_mumu->setVariable("pval_frac_0", pval_frac_0);
352  mon_mumu->setVariable("pval_frac_1", pval_frac_1);
353  mon_mumu->setVariable("nocdc_frac", nocdc_frac);
354  mon_mumu->setVariable("notop_frac", notop_frac);
355  mon_mumu->setVariable("noarich_frac", noarich_frac);
356  mon_mumu->setVariable("fit_mumumass", fit_mumumass);
357 
358  // ========== D*
359  // get existing histograms produced by DQM modules
360  auto* hist_D0_InvM = findHist("PhysicsObjectsMiraBelleDst/hist_D0_InvM");
361  auto* hist_delta_m = findHist("PhysicsObjectsMiraBelleDst/hist_delta_m");
362  auto* hist_D0_softpi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ALL_pion");
363  auto* hist_D0_softpi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_SVD_pion");
364  auto* hist_D0_softpi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_CDC_pion");
365  auto* hist_D0_softpi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_TOP_pion");
366  auto* hist_D0_softpi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ARICH_pion");
367  auto* hist_D0_softpi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ECL_pion");
368  auto* hist_D0_softpi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_KLM_pion");
369  auto* hist_D0_pi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ALL_pion");
370  auto* hist_D0_pi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_SVD_pion");
371  auto* hist_D0_pi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_CDC_pion");
372  auto* hist_D0_pi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_TOP_pion");
373  auto* hist_D0_pi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ARICH_pion");
374  auto* hist_D0_pi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ECL_pion");
375  auto* hist_D0_pi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_KLM_pion");
376  auto* hist_D0_K_PID_ALL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ALL_kaon");
377  auto* hist_D0_K_PID_SVD_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_SVD_kaon");
378  auto* hist_D0_K_PID_CDC_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_CDC_kaon");
379  auto* hist_D0_K_PID_TOP_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_TOP_kaon");
380  auto* hist_D0_K_PID_ARICH_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ARICH_kaon");
381  auto* hist_D0_K_PID_ECL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ECL_kaon");
382  auto* hist_D0_K_PID_KLM_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_KLM_kaon");
383  auto* hist_sideband_D0_softpi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ALL_pion");
384  auto* hist_sideband_D0_softpi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_SVD_pion");
385  auto* hist_sideband_D0_softpi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_CDC_pion");
386  auto* hist_sideband_D0_softpi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_TOP_pion");
387  auto* hist_sideband_D0_softpi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ARICH_pion");
388  auto* hist_sideband_D0_softpi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ECL_pion");
389  auto* hist_sideband_D0_softpi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_KLM_pion");
390  auto* hist_sideband_D0_pi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ALL_pion");
391  auto* hist_sideband_D0_pi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_SVD_pion");
392  auto* hist_sideband_D0_pi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_CDC_pion");
393  auto* hist_sideband_D0_pi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_TOP_pion");
394  auto* hist_sideband_D0_pi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ARICH_pion");
395  auto* hist_sideband_D0_pi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ECL_pion");
396  auto* hist_sideband_D0_pi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_KLM_pion");
397  auto* hist_sideband_D0_K_PID_ALL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ALL_kaon");
398  auto* hist_sideband_D0_K_PID_SVD_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_SVD_kaon");
399  auto* hist_sideband_D0_K_PID_CDC_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_CDC_kaon");
400  auto* hist_sideband_D0_K_PID_TOP_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_TOP_kaon");
401  auto* hist_sideband_D0_K_PID_ARICH_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ARICH_kaon");
402  auto* hist_sideband_D0_K_PID_ECL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ECL_kaon");
403  auto* hist_sideband_D0_K_PID_KLM_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_KLM_kaon");
404  auto* hist_D0_pi0_InvM = findHist("PhysicsObjectsMiraBelleDst2/hist_D0_pi0_InvM");
405  if (hist_D0_InvM == nullptr) {
406  B2ERROR("Can not find the hist_D0_InvM histogram!");
407  return;
408  }
409  if (hist_delta_m == nullptr) {
410  B2ERROR("Can not find the hist_delta_m histogram!");
411  return;
412  }
413  if (hist_D0_softpi_PID_ALL_pion == nullptr) {
414  B2ERROR("Can not find the hist_D0_softpi_PID_ALL_pion histogram!");
415  return;
416  }
417  if (hist_D0_softpi_PID_SVD_pion == nullptr) {
418  B2ERROR("Can not find the hist_D0_softpi_PID_SVD_pion histogram!");
419  return;
420  }
421  if (hist_D0_softpi_PID_CDC_pion == nullptr) {
422  B2ERROR("Can not find the hist_D0_softpi_PID_CDC_pion histogram!");
423  return;
424  }
425  if (hist_D0_softpi_PID_TOP_pion == nullptr) {
426  B2ERROR("Can not find the hist_D0_softpi_PID_TOP_pion histogram!");
427  return;
428  }
429  if (hist_D0_softpi_PID_ARICH_pion == nullptr) {
430  B2ERROR("Can not find the hist_D0_softpi_PID_ARICH_pion histogram!");
431  return;
432  }
433  if (hist_D0_softpi_PID_ECL_pion == nullptr) {
434  B2ERROR("Can not find the hist_D0_softpi_PID_ECL_pion histogram!");
435  return;
436  }
437  if (hist_D0_softpi_PID_KLM_pion == nullptr) {
438  B2ERROR("Can not find the hist_D0_softpi_PID_KLM_pion histogram!");
439  return;
440  }
441  if (hist_D0_pi_PID_ALL_pion == nullptr) {
442  B2ERROR("Can not find the hist_D0_pi_PID_ALL_pion histogram!");
443  return;
444  }
445  if (hist_D0_pi_PID_SVD_pion == nullptr) {
446  B2ERROR("Can not find the hist_D0_pi_PID_SVD_pion histogram!");
447  return;
448  }
449  if (hist_D0_pi_PID_CDC_pion == nullptr) {
450  B2ERROR("Can not find the hist_D0_pi_PID_CDC_pion histogram!");
451  return;
452  }
453  if (hist_D0_pi_PID_TOP_pion == nullptr) {
454  B2ERROR("Can not find the hist_D0_pi_PID_TOP_pion histogram!");
455  return;
456  }
457  if (hist_D0_pi_PID_ARICH_pion == nullptr) {
458  B2ERROR("Can not find the hist_D0_pi_PID_ARICH_pion histogram!");
459  return;
460  }
461  if (hist_D0_pi_PID_ECL_pion == nullptr) {
462  B2ERROR("Can not find the hist_D0_pi_PID_ECL_pion histogram!");
463  return;
464  }
465  if (hist_D0_pi_PID_KLM_pion == nullptr) {
466  B2ERROR("Can not find the hist_D0_pi_PID_KLM_pion histogram!");
467  return;
468  }
469  if (hist_D0_K_PID_ALL_kaon == nullptr) {
470  B2ERROR("Can not find the hist_D0_K_PID_ALL_kaon histogram!");
471  return;
472  }
473  if (hist_D0_K_PID_SVD_kaon == nullptr) {
474  B2ERROR("Can not find the hist_D0_K_PID_SVD_kaon histogram!");
475  return;
476  }
477  if (hist_D0_K_PID_CDC_kaon == nullptr) {
478  B2ERROR("Can not find the hist_D0_K_PID_CDC_kaon histogram!");
479  return;
480  }
481  if (hist_D0_K_PID_TOP_kaon == nullptr) {
482  B2ERROR("Can not find the hist_D0_K_PID_TOP_kaon histogram!");
483  return;
484  }
485  if (hist_D0_K_PID_ARICH_kaon == nullptr) {
486  B2ERROR("Can not find the hist_D0_K_PID_ARICH_kaon histogram!");
487  return;
488  }
489  if (hist_D0_K_PID_ECL_kaon == nullptr) {
490  B2ERROR("Can not find the hist_D0_K_PID_ECL_kaon histogram!");
491  return;
492  }
493  if (hist_D0_K_PID_KLM_kaon == nullptr) {
494  B2ERROR("Can not find the hist_D0_K_PID_KLM_kaon histogram!");
495  return;
496  }
497  if (hist_sideband_D0_softpi_PID_ALL_pion == nullptr) {
498  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_ALL_pion histogram!");
499  return;
500  }
501  if (hist_sideband_D0_softpi_PID_SVD_pion == nullptr) {
502  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_SVD_pion histogram!");
503  return;
504  }
505  if (hist_sideband_D0_softpi_PID_CDC_pion == nullptr) {
506  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_CDC_pion histogram!");
507  return;
508  }
509  if (hist_sideband_D0_softpi_PID_TOP_pion == nullptr) {
510  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_TOP_pion histogram!");
511  return;
512  }
513  if (hist_sideband_D0_softpi_PID_ARICH_pion == nullptr) {
514  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_ARICH_pion histogram!");
515  return;
516  }
517  if (hist_sideband_D0_softpi_PID_ECL_pion == nullptr) {
518  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_ECL_pion histogram!");
519  return;
520  }
521  if (hist_sideband_D0_softpi_PID_KLM_pion == nullptr) {
522  B2ERROR("Can not find the hist_sideband_D0_softpi_PID_KLM_pion histogram!");
523  return;
524  }
525  if (hist_sideband_D0_pi_PID_ALL_pion == nullptr) {
526  B2ERROR("Can not find the hist_sideband_D0_pi_PID_ALL_pion histogram!");
527  return;
528  }
529  if (hist_sideband_D0_pi_PID_SVD_pion == nullptr) {
530  B2ERROR("Can not find the hist_sideband_D0_pi_PID_SVD_pion histogram!");
531  return;
532  }
533  if (hist_sideband_D0_pi_PID_CDC_pion == nullptr) {
534  B2ERROR("Can not find the hist_sideband_D0_pi_PID_CDC_pion histogram!");
535  return;
536  }
537  if (hist_sideband_D0_pi_PID_TOP_pion == nullptr) {
538  B2ERROR("Can not find the hist_sideband_D0_pi_PID_TOP_pion histogram!");
539  return;
540  }
541  if (hist_sideband_D0_pi_PID_ARICH_pion == nullptr) {
542  B2ERROR("Can not find the hist_sideband_D0_pi_PID_ARICH_pion histogram!");
543  return;
544  }
545  if (hist_sideband_D0_pi_PID_ECL_pion == nullptr) {
546  B2ERROR("Can not find the hist_sideband_D0_pi_PID_ECL_pion histogram!");
547  return;
548  }
549  if (hist_sideband_D0_pi_PID_KLM_pion == nullptr) {
550  B2ERROR("Can not find the hist_sideband_D0_pi_PID_KLM_pion histogram!");
551  return;
552  }
553  if (hist_sideband_D0_K_PID_ALL_kaon == nullptr) {
554  B2ERROR("Can not find the hist_sideband_D0_K_PID_ALL_kaon histogram!");
555  return;
556  }
557  if (hist_sideband_D0_K_PID_SVD_kaon == nullptr) {
558  B2ERROR("Can not find the hist_sideband_D0_K_PID_SVD_kaon histogram!");
559  return;
560  }
561  if (hist_sideband_D0_K_PID_CDC_kaon == nullptr) {
562  B2ERROR("Can not find the hist_sideband_D0_K_PID_CDC_kaon histogram!");
563  return;
564  }
565  if (hist_sideband_D0_K_PID_TOP_kaon == nullptr) {
566  B2ERROR("Can not find the hist_sideband_D0_K_PID_TOP_kaon histogram!");
567  return;
568  }
569  if (hist_sideband_D0_K_PID_ARICH_kaon == nullptr) {
570  B2ERROR("Can not find the hist_sideband_D0_K_PID_ARICH_kaon histogram!");
571  return;
572  }
573  if (hist_sideband_D0_K_PID_ECL_kaon == nullptr) {
574  B2ERROR("Can not find the hist_sideband_D0_K_PID_ECL_kaon histogram!");
575  return;
576  }
577  if (hist_sideband_D0_K_PID_KLM_kaon == nullptr) {
578  B2ERROR("Can not find the hist_sideband_D0_K_PID_KLM_kaon histogram!");
579  return;
580  }
581  if (hist_D0_pi0_InvM == nullptr) {
582  B2ERROR("Can not find the hist_D0_pi0_InvM histogram!");
583  return;
584  }
585  // Fit mass distributions for scale factor
586  TF1* f_InvM = new TF1("f_InvM", "[0]*TMath::Gaus(x,[1],[2])+[3]*pow(x-[4],2)+[5]", 1.81, 1.95);
587  f_InvM->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
588  f_InvM->SetParameters(hist_D0_InvM->GetMaximum(), 1.86, 5e-3, 0., 1.86, 0.);
589  hist_D0_InvM->Fit(f_InvM, "", "", 1.81, 1.95);
590  f_InvM->SetLineColor(kRed);
591 
592  TF1* f_delta_m = new TF1("f_delta_m", "[0]*TMath::Gaus(x,[1],[2])+[3]*pow(x-[4],2)+[5]", 0.14, 0.16);
593  f_delta_m->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
594  f_delta_m->SetParameters(hist_delta_m->GetMaximum(), 0.145, 5e-4, 0., 0.145, 0.);
595  hist_delta_m->Fit(f_delta_m, "", "", 0.14, 0.16);
596  f_delta_m->SetLineColor(kRed);
597 
598  TF1* f_pi0_InvM = new TF1("f_pi0_InvM", "[0]*TMath::Gaus(x,[1],[2])+[3]*pow(x-[4],2)+[5]", 0.09, 0.17);
599  f_pi0_InvM->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
600  f_pi0_InvM->SetParameters(hist_D0_pi0_InvM->GetMaximum(), 0.13, 5e-3, 0., 0.13, 0.);
601  hist_D0_pi0_InvM->Fit(f_pi0_InvM, "", "", 0.09, 0.17);
602  f_pi0_InvM->SetLineColor(kRed);
603 
604  // D->KPi and D->KPiPi0 yields
605  TF1* f_gaus_InvM = new TF1("f_gaus_InvM", "gaus", 1.81, 1.95);
606  f_gaus_InvM->SetParameters(f_InvM->GetParameter(0), f_InvM->GetParameter(1), f_InvM->GetParameter(2));
607  double InvM_bin_width = hist_D0_InvM->GetXaxis()->GetBinWidth(1);
608  double neve_dst = f_gaus_InvM->Integral(1.81, 1.95) / InvM_bin_width;
609 
610  TF1* f_gaus_pi0_InvM = new TF1("f_gaus_pi0_InvM", "gaus", 0.09, 0.17);
611  f_gaus_pi0_InvM->SetParameters(f_pi0_InvM->GetParameter(0), f_pi0_InvM->GetParameter(1), f_pi0_InvM->GetParameter(2));
612  double pi0_InvM_bin_width = hist_D0_pi0_InvM->GetXaxis()->GetBinWidth(1);
613  double neve_pi0 = f_gaus_pi0_InvM->Integral(0.09, 0.17) / pi0_InvM_bin_width;
614 
615  // Sumw2
616  hist_D0_softpi_PID_ALL_pion->Sumw2();
617  hist_D0_softpi_PID_SVD_pion->Sumw2();
618  hist_D0_softpi_PID_CDC_pion->Sumw2();
619  hist_D0_softpi_PID_TOP_pion->Sumw2();
620  hist_D0_softpi_PID_ARICH_pion->Sumw2();
621  hist_D0_softpi_PID_ECL_pion->Sumw2();
622  hist_D0_softpi_PID_KLM_pion->Sumw2();
623  hist_D0_pi_PID_ALL_pion->Sumw2();
624  hist_D0_pi_PID_SVD_pion->Sumw2();
625  hist_D0_pi_PID_CDC_pion->Sumw2();
626  hist_D0_pi_PID_TOP_pion->Sumw2();
627  hist_D0_pi_PID_ARICH_pion->Sumw2();
628  hist_D0_pi_PID_ECL_pion->Sumw2();
629  hist_D0_pi_PID_KLM_pion->Sumw2();
630  hist_D0_K_PID_ALL_kaon->Sumw2();
631  hist_D0_K_PID_SVD_kaon->Sumw2();
632  hist_D0_K_PID_CDC_kaon->Sumw2();
633  hist_D0_K_PID_TOP_kaon->Sumw2();
634  hist_D0_K_PID_ARICH_kaon->Sumw2();
635  hist_D0_K_PID_ECL_kaon->Sumw2();
636  hist_D0_K_PID_KLM_kaon->Sumw2();
637  hist_sideband_D0_softpi_PID_ALL_pion->Sumw2();
638  hist_sideband_D0_softpi_PID_SVD_pion->Sumw2();
639  hist_sideband_D0_softpi_PID_CDC_pion->Sumw2();
640  hist_sideband_D0_softpi_PID_TOP_pion->Sumw2();
641  hist_sideband_D0_softpi_PID_ARICH_pion->Sumw2();
642  hist_sideband_D0_softpi_PID_ECL_pion->Sumw2();
643  hist_sideband_D0_softpi_PID_KLM_pion->Sumw2();
644  hist_sideband_D0_pi_PID_ALL_pion->Sumw2();
645  hist_sideband_D0_pi_PID_SVD_pion->Sumw2();
646  hist_sideband_D0_pi_PID_CDC_pion->Sumw2();
647  hist_sideband_D0_pi_PID_TOP_pion->Sumw2();
648  hist_sideband_D0_pi_PID_ARICH_pion->Sumw2();
649  hist_sideband_D0_pi_PID_ECL_pion->Sumw2();
650  hist_sideband_D0_pi_PID_KLM_pion->Sumw2();
651  hist_sideband_D0_K_PID_ALL_kaon->Sumw2();
652  hist_sideband_D0_K_PID_SVD_kaon->Sumw2();
653  hist_sideband_D0_K_PID_CDC_kaon->Sumw2();
654  hist_sideband_D0_K_PID_TOP_kaon->Sumw2();
655  hist_sideband_D0_K_PID_ARICH_kaon->Sumw2();
656  hist_sideband_D0_K_PID_ECL_kaon->Sumw2();
657  hist_sideband_D0_K_PID_KLM_kaon->Sumw2();
658 
659  // Scale the distributions in sideband
660  hist_sideband_D0_softpi_PID_ALL_pion->Scale(m_scale_dst);
661  hist_sideband_D0_softpi_PID_SVD_pion->Scale(m_scale_dst);
662  hist_sideband_D0_softpi_PID_CDC_pion->Scale(m_scale_dst);
663  hist_sideband_D0_softpi_PID_TOP_pion->Scale(m_scale_dst);
664  hist_sideband_D0_softpi_PID_ARICH_pion->Scale(m_scale_dst);
665  hist_sideband_D0_softpi_PID_ECL_pion->Scale(m_scale_dst);
666  hist_sideband_D0_softpi_PID_KLM_pion->Scale(m_scale_dst);
667  hist_sideband_D0_pi_PID_ALL_pion->Scale(m_scale_dst);
668  hist_sideband_D0_pi_PID_SVD_pion->Scale(m_scale_dst);
669  hist_sideband_D0_pi_PID_CDC_pion->Scale(m_scale_dst);
670  hist_sideband_D0_pi_PID_TOP_pion->Scale(m_scale_dst);
671  hist_sideband_D0_pi_PID_ARICH_pion->Scale(m_scale_dst);
672  hist_sideband_D0_pi_PID_ECL_pion->Scale(m_scale_dst);
673  hist_sideband_D0_pi_PID_KLM_pion->Scale(m_scale_dst);
674  hist_sideband_D0_K_PID_ALL_kaon->Scale(m_scale_dst);
675  hist_sideband_D0_K_PID_SVD_kaon->Scale(m_scale_dst);
676  hist_sideband_D0_K_PID_CDC_kaon->Scale(m_scale_dst);
677  hist_sideband_D0_K_PID_TOP_kaon->Scale(m_scale_dst);
678  hist_sideband_D0_K_PID_ARICH_kaon->Scale(m_scale_dst);
679  hist_sideband_D0_K_PID_ECL_kaon->Scale(m_scale_dst);
680  hist_sideband_D0_K_PID_KLM_kaon->Scale(m_scale_dst);
681 
682  // BG subtraction
683  hist_D0_softpi_PID_ALL_pion->Add(hist_sideband_D0_softpi_PID_ALL_pion, -1);
684  hist_D0_softpi_PID_SVD_pion->Add(hist_sideband_D0_softpi_PID_SVD_pion, -1);
685  hist_D0_softpi_PID_CDC_pion->Add(hist_sideband_D0_softpi_PID_CDC_pion, -1);
686  hist_D0_softpi_PID_TOP_pion->Add(hist_sideband_D0_softpi_PID_TOP_pion, -1);
687  hist_D0_softpi_PID_ARICH_pion->Add(hist_sideband_D0_softpi_PID_ARICH_pion, -1);
688  hist_D0_softpi_PID_ECL_pion->Add(hist_sideband_D0_softpi_PID_ECL_pion, -1);
689  hist_D0_softpi_PID_KLM_pion->Add(hist_sideband_D0_softpi_PID_KLM_pion, -1);
690  hist_D0_pi_PID_ALL_pion->Add(hist_sideband_D0_pi_PID_ALL_pion, -1);
691  hist_D0_pi_PID_SVD_pion->Add(hist_sideband_D0_pi_PID_SVD_pion, -1);
692  hist_D0_pi_PID_CDC_pion->Add(hist_sideband_D0_pi_PID_CDC_pion, -1);
693  hist_D0_pi_PID_TOP_pion->Add(hist_sideband_D0_pi_PID_TOP_pion, -1);
694  hist_D0_pi_PID_ARICH_pion->Add(hist_sideband_D0_pi_PID_ARICH_pion, -1);
695  hist_D0_pi_PID_ECL_pion->Add(hist_sideband_D0_pi_PID_ECL_pion, -1);
696  hist_D0_pi_PID_KLM_pion->Add(hist_sideband_D0_pi_PID_KLM_pion, -1);
697  hist_D0_K_PID_ALL_kaon->Add(hist_sideband_D0_K_PID_ALL_kaon, -1);
698  hist_D0_K_PID_SVD_kaon->Add(hist_sideband_D0_K_PID_SVD_kaon, -1);
699  hist_D0_K_PID_CDC_kaon->Add(hist_sideband_D0_K_PID_CDC_kaon, -1);
700  hist_D0_K_PID_TOP_kaon->Add(hist_sideband_D0_K_PID_TOP_kaon, -1);
701  hist_D0_K_PID_ARICH_kaon->Add(hist_sideband_D0_K_PID_ARICH_kaon, -1);
702  hist_D0_K_PID_ECL_kaon->Add(hist_sideband_D0_K_PID_ECL_kaon, -1);
703  hist_D0_K_PID_KLM_kaon->Add(hist_sideband_D0_K_PID_KLM_kaon, -1);
704 
705  // Make TCanvases
706  // --- D* -> D0pi mass resolution
707  dst_mass->Divide(3, 1);
708  dst_mass->cd(1);
709  hist_D0_InvM->Draw();
710  f_InvM->Draw("SAME");
711  dst_mass->cd(2);
712  hist_delta_m->Draw();
713  f_delta_m->Draw("SAME");
714  dst_mass->cd(3);
715  hist_D0_pi0_InvM->Draw();
716  f_pi0_InvM->Draw("SAME");
717  // --- pi variables for D0 -> K pi
718  dst_pi_val->Divide(4, 2);
719  dst_pi_val->cd(1); hist_D0_pi_PID_ALL_pion->Draw();
720  dst_pi_val->cd(2); hist_D0_pi_PID_SVD_pion->Draw();
721  dst_pi_val->cd(3); hist_D0_pi_PID_CDC_pion->Draw();
722  dst_pi_val->cd(4); hist_D0_pi_PID_TOP_pion->Draw();
723  dst_pi_val->cd(5); hist_D0_pi_PID_ARICH_pion->Draw();
724  dst_pi_val->cd(6); hist_D0_pi_PID_ECL_pion->Draw();
725  dst_pi_val->cd(7); hist_D0_pi_PID_KLM_pion->Draw();
726  // --- K variables for D0 -> K pi
727  dst_k_val->Divide(4, 2);
728  dst_k_val->cd(1); hist_D0_K_PID_ALL_kaon->Draw();
729  dst_k_val->cd(2); hist_D0_K_PID_SVD_kaon->Draw();
730  dst_k_val->cd(3); hist_D0_K_PID_CDC_kaon->Draw();
731  dst_k_val->cd(4); hist_D0_K_PID_TOP_kaon->Draw();
732  dst_k_val->cd(5); hist_D0_K_PID_ARICH_kaon->Draw();
733  dst_k_val->cd(6); hist_D0_K_PID_ECL_kaon->Draw();
734  dst_k_val->cd(7); hist_D0_K_PID_KLM_kaon->Draw();
735 
736  // calculate the values of monitoring variables
737  double mean_D0_InvM = f_InvM->GetParameter(1);
738  double width_D0_InvM = f_InvM->GetParameter(2);
739  double mean_delta_m = f_delta_m->GetParameter(1);
740  double width_delta_m = f_delta_m->GetParameter(2);
741  double mean_pi0_InvM = f_pi0_InvM->GetParameter(1);
742  double width_pi0_InvM = f_pi0_InvM->GetParameter(2);
743  double mean_D0_softpi_PID_ALL_pion = hist_D0_softpi_PID_ALL_pion->GetMean();
744  double mean_D0_softpi_PID_SVD_pion = hist_D0_softpi_PID_SVD_pion->GetMean();
745  double mean_D0_softpi_PID_CDC_pion = hist_D0_softpi_PID_CDC_pion->GetMean();
746  double mean_D0_softpi_PID_TOP_pion = hist_D0_softpi_PID_TOP_pion->GetMean();
747  double mean_D0_softpi_PID_ARICH_pion = hist_D0_softpi_PID_ARICH_pion->GetMean();
748  double mean_D0_softpi_PID_ECL_pion = hist_D0_softpi_PID_ECL_pion->GetMean();
749  double mean_D0_softpi_PID_KLM_pion = hist_D0_softpi_PID_KLM_pion->GetMean();
750  double mean_D0_pi_PID_ALL_pion = hist_D0_pi_PID_ALL_pion->GetMean();
751  double mean_D0_pi_PID_SVD_pion = hist_D0_pi_PID_SVD_pion->GetMean();
752  double mean_D0_pi_PID_CDC_pion = hist_D0_pi_PID_CDC_pion->GetMean();
753  double mean_D0_pi_PID_TOP_pion = hist_D0_pi_PID_TOP_pion->GetMean();
754  double mean_D0_pi_PID_ARICH_pion = hist_D0_pi_PID_ARICH_pion->GetMean();
755  double mean_D0_pi_PID_ECL_pion = hist_D0_pi_PID_ECL_pion->GetMean();
756  double mean_D0_pi_PID_KLM_pion = hist_D0_pi_PID_KLM_pion->GetMean();
757  double mean_D0_K_PID_ALL_kaon = hist_D0_K_PID_ALL_kaon->GetMean();
758  double mean_D0_K_PID_SVD_kaon = hist_D0_K_PID_SVD_kaon->GetMean();
759  double mean_D0_K_PID_CDC_kaon = hist_D0_K_PID_CDC_kaon->GetMean();
760  double mean_D0_K_PID_TOP_kaon = hist_D0_K_PID_TOP_kaon->GetMean();
761  double mean_D0_K_PID_ARICH_kaon = hist_D0_K_PID_ARICH_kaon->GetMean();
762  double mean_D0_K_PID_ECL_kaon = hist_D0_K_PID_ECL_kaon->GetMean();
763  double mean_D0_K_PID_KLM_kaon = hist_D0_K_PID_KLM_kaon->GetMean();
764 
765  // set values
766  mon_dst->setVariable("neve_dst", neve_dst);
767  mon_dst->setVariable("neve_pi0", neve_pi0);
768  mon_dst->setVariable("mean_D0_InvM", mean_D0_InvM);
769  mon_dst->setVariable("width_D0_InvM", width_D0_InvM);
770  mon_dst->setVariable("mean_delta_m", mean_delta_m);
771  mon_dst->setVariable("width_delta_m", width_delta_m);
772  mon_dst->setVariable("mean_pi0_InvM", mean_pi0_InvM);
773  mon_dst->setVariable("width_pi0_InvM", width_pi0_InvM);
774  mon_dst->setVariable("mean_D0_softpi_PID_ALL_pion", mean_D0_softpi_PID_ALL_pion);
775  mon_dst->setVariable("mean_D0_softpi_PID_SVD_pion", mean_D0_softpi_PID_SVD_pion);
776  mon_dst->setVariable("mean_D0_softpi_PID_CDC_pion", mean_D0_softpi_PID_CDC_pion);
777  mon_dst->setVariable("mean_D0_softpi_PID_TOP_pion", mean_D0_softpi_PID_TOP_pion);
778  mon_dst->setVariable("mean_D0_softpi_PID_ARICH_pion", mean_D0_softpi_PID_ARICH_pion);
779  mon_dst->setVariable("mean_D0_softpi_PID_ECL_pion", mean_D0_softpi_PID_ECL_pion);
780  mon_dst->setVariable("mean_D0_softpi_PID_KLM_pion", mean_D0_softpi_PID_KLM_pion);
781  mon_dst->setVariable("mean_D0_pi_PID_ALL_pion", mean_D0_pi_PID_ALL_pion);
782  mon_dst->setVariable("mean_D0_pi_PID_SVD_pion", mean_D0_pi_PID_SVD_pion);
783  mon_dst->setVariable("mean_D0_pi_PID_CDC_pion", mean_D0_pi_PID_CDC_pion);
784  mon_dst->setVariable("mean_D0_pi_PID_TOP_pion", mean_D0_pi_PID_TOP_pion);
785  mon_dst->setVariable("mean_D0_pi_PID_ARICH_pion", mean_D0_pi_PID_ARICH_pion);
786  mon_dst->setVariable("mean_D0_pi_PID_ECL_pion", mean_D0_pi_PID_ECL_pion);
787  mon_dst->setVariable("mean_D0_pi_PID_KLM_pion", mean_D0_pi_PID_KLM_pion);
788  mon_dst->setVariable("mean_D0_K_PID_ALL_kaon", mean_D0_K_PID_ALL_kaon);
789  mon_dst->setVariable("mean_D0_K_PID_SVD_kaon", mean_D0_K_PID_SVD_kaon);
790  mon_dst->setVariable("mean_D0_K_PID_CDC_kaon", mean_D0_K_PID_CDC_kaon);
791  mon_dst->setVariable("mean_D0_K_PID_TOP_kaon", mean_D0_K_PID_TOP_kaon);
792  mon_dst->setVariable("mean_D0_K_PID_ARICH_kaon", mean_D0_K_PID_ARICH_kaon);
793  mon_dst->setVariable("mean_D0_K_PID_ECL_kaon", mean_D0_K_PID_ECL_kaon);
794  mon_dst->setVariable("mean_D0_K_PID_KLM_kaon", mean_D0_K_PID_KLM_kaon);
795 
796  //bhabha,hadrons
797  // ========== bhabha_all
798  // get existing histograms produced by DQM modules
799  auto* histbh_npxd = findHist("PhysicsObjectsMiraBelleBhabha/hist_npxd");
800  auto* histbh_nsvd = findHist("PhysicsObjectsMiraBelleBhabha/hist_nsvd");
801  auto* histbh_ncdc = findHist("PhysicsObjectsMiraBelleBhabha/hist_ncdc");
802  auto* histbh_topdig = findHist("PhysicsObjectsMiraBelleBhabha/hist_topdig");
803  auto* histbh_DetPhotonARICH = findHist("PhysicsObjectsMiraBelleBhabha/hist_DetPhotonARICH");
804  auto* histbh_dD0 = findHist("PhysicsObjectsMiraBelleBhabha/hist_dD0");
805  auto* histbh_dZ0 = findHist("PhysicsObjectsMiraBelleBhabha/hist_dZ0");
806  auto* histbh_dPtcms = findHist("PhysicsObjectsMiraBelleBhabha/hist_dPtcms");
807  auto* histbh_Pval = findHist("PhysicsObjectsMiraBelleBhabha/hist_Pval");
808  auto* histbh_nExtraCDCHits = findHist("PhysicsObjectsMiraBelleBhabha/hist_nExtraCDCHits");
809  auto* histbh_nECLClusters = findHist("PhysicsObjectsMiraBelleBhabha/hist_nECLClusters");
810  auto* histbh_electronid = findHist("PhysicsObjectsMiraBelleBhabha/hist_electronid");
811  auto* histbh_inv_p = findHist("PhysicsObjectsMiraBelleBhabha/hist_inv_p");
812  auto* histbh_ndf = findHist("PhysicsObjectsMiraBelleBhabha/hist_ndf");
813  auto* histbh_D0 = findHist("PhysicsObjectsMiraBelleBhabha/hist_D0");
814  auto* histbh_Z0 = findHist("PhysicsObjectsMiraBelleBhabha/hist_Z0");
815  auto* histbh_theta = findHist("PhysicsObjectsMiraBelleBhabha/hist_theta");
816  auto* histbh_Phi0 = findHist("PhysicsObjectsMiraBelleBhabha/hist_Phi0");
817  auto* histbh_Pt = findHist("PhysicsObjectsMiraBelleBhabha/hist_Pt");
818  auto* histbh_Mom = findHist("PhysicsObjectsMiraBelleBhabha/hist_Mom");
819  auto* histbh_dPhicms = findHist("PhysicsObjectsMiraBelleBhabha/hist_dPhicms");
820 
821  if (histbh_npxd == nullptr) {
822  B2ERROR("Can not find the histbh_npxd histogram!");
823  return;
824  }
825  if (histbh_nsvd == nullptr) {
826  B2ERROR("Can not find the histbh_nsvd histogram!");
827  return;
828  }
829  if (histbh_ncdc == nullptr) {
830  B2ERROR("Can not find the histbh_ncdc histogram!");
831  return;
832  }
833  if (histbh_topdig == nullptr) {
834  B2ERROR("Can not find the histbh_topdig histogram!");
835  return;
836  }
837  if (histbh_DetPhotonARICH == nullptr) {
838  B2ERROR("Can not find the histbh_DetPhotonARICH histogram!");
839  return;
840  }
841  if (histbh_dD0 == nullptr) {
842  B2ERROR("Can not find the histbh_dD0 histogram!");
843  return;
844  }
845  if (histbh_dZ0 == nullptr) {
846  B2ERROR("Can not find the histbh_dZ0 histogram!");
847  return;
848  }
849  if (histbh_dPtcms == nullptr) {
850  B2ERROR("Can not find the histbh_dPtcms histogram!");
851  return;
852  }
853  if (histbh_Pval == nullptr) {
854  B2ERROR("Can not find the histbh_Pval histogram!");
855  return;
856  }
857  if (histbh_nExtraCDCHits == nullptr) {
858  B2ERROR("Can not find the histbh_nExtraCDCHits histogram!");
859  return;
860  }
861  if (histbh_nECLClusters == nullptr) {
862  B2ERROR("Can not find the histbh_nECLClusters histogram!");
863  return;
864  }
865  if (histbh_electronid == nullptr) {
866  B2ERROR("Can not find the histbh_electronid histogram!");
867  return;
868  }
869  if (histbh_inv_p == nullptr) {
870  B2ERROR("Can not find the histbh_inv_p histogram!");
871  return;
872  }
873  if (histbh_ndf == nullptr) {
874  B2ERROR("Can not find the histbh_ndf histogram!");
875  return;
876  }
877  if (histbh_D0 == nullptr) {
878  B2ERROR("Can not find the histbh_D0 histogram!");
879  return;
880  }
881  if (histbh_Z0 == nullptr) {
882  B2ERROR("Can not find the histbh_Z0 histogram!");
883  return;
884  }
885  if (histbh_theta == nullptr) {
886  B2ERROR("Can not find the histbh_theta histogram!");
887  return;
888  }
889  if (histbh_Phi0 == nullptr) {
890  B2ERROR("Can not find the histbh_Phi0 histogram!");
891  return;
892  }
893  if (histbh_Pt == nullptr) {
894  B2ERROR("Can not find the histbh_Pt histogram!");
895  return;
896  }
897  if (histbh_Mom == nullptr) {
898  B2ERROR("Can not find the histbh_Mom histogram!");
899  return;
900  }
901  if (histbh_dPhicms == nullptr) {
902  B2ERROR("Can not find the histbh_dPhicms histogram!");
903  return;
904  }
905 
906  // Make TCanvases
907  // --- bhabha_Main
908  bhabha_main->Divide(4, 3);
909  bhabha_main->cd(1); histbh_theta->Draw();
910  bhabha_main->cd(2); histbh_Phi0->Draw();
911  bhabha_main->cd(3); histbh_Mom->Draw();
912  bhabha_main->cd(4); histbh_Pt->Draw();
913  bhabha_main->cd(5); histbh_npxd->Draw();
914  bhabha_main->cd(6); histbh_nsvd->Draw();
915  bhabha_main->cd(7); histbh_ncdc->Draw();
916  bhabha_main->cd(8); histbh_topdig->Draw();
917  bhabha_main->cd(9); histbh_DetPhotonARICH->Draw();
918  bhabha_main->cd(10); histbh_nExtraCDCHits->Draw();
919  bhabha_main->cd(11); histbh_nECLClusters->Draw();
920  // --- bhabha_Resolution
921  bhabha_resolution->Divide(3, 3);
922  bhabha_resolution->cd(1); histbh_inv_p->Draw();
923  bhabha_resolution->cd(2); histbh_dD0->Draw();
924  bhabha_resolution->cd(3); histbh_dZ0->Draw();
925  bhabha_resolution->cd(4); histbh_dPtcms->Draw();
926  bhabha_resolution->cd(5); histbh_dPhicms->Draw();
927  bhabha_resolution->cd(6); histbh_nECLClusters->Draw();
928  bhabha_resolution->cd(7); histbh_nExtraCDCHits->Draw();
929  bhabha_resolution->cd(8); histbh_ndf->Draw();
930 
931  // calculate the values of monitoring variables
932  double bh_mean_npxd = histbh_npxd->GetMean();
933  double bh_mean_nsvd = histbh_nsvd->GetMean();
934  double bh_mean_ncdc = histbh_ncdc->GetMean();
935  double bh_mean_topdig = histbh_topdig->GetMean();
936  double bh_mean_parich = histbh_DetPhotonARICH->GetMean();
937  double bh_mean_ncdc_ex = histbh_nExtraCDCHits->GetMean();
938  double bh_mean_necl = histbh_nECLClusters->GetMean();
939  double bh_mean_electronid = histbh_electronid->GetMean();
940  double bh_mean_d0 = histbh_D0->GetMean();
941  double bh_mean_z0 = histbh_Z0->GetMean();
942  double bh_mean_pval = histbh_Pval->GetMean();
943  double bh_mean_ndf = histbh_ndf->GetMean();
944  double bh_dif_ndf_ncdc = mean_ndf - mean_ncdc;
945  double bh_mean_dd0 = histbh_dD0->GetMean();
946  double bh_mean_dz0 = histbh_dZ0->GetMean();
947  double bh_mean_dpt = histbh_dPtcms->GetMean();
948  double bh_rms_dd0 = histbh_dD0->GetRMS();
949  double bh_rms_dz0 = histbh_dZ0->GetRMS();
950  double bh_rms_dpt = histbh_dPtcms->GetRMS();
951  double bh_sigma68_dd0 = getSigma68(histbh_dD0);
952  double bh_sigma68_dz0 = getSigma68(histbh_dZ0);
953  double bh_sigma68_dpt = getSigma68(histbh_dPtcms);
954  int bh_ntot = histbh_nsvd->GetEntries();
955  double bh_neve_bhabha = bh_ntot;
956  double bh_goode_frac = -1.;
957  double bh_pval_frac_0 = -1.;
958  double bh_pval_frac_1 = -1.;
959  double bh_nocdc_frac = -1.;
960  double bh_notop_frac = -1.;
961  double bh_noarich_frac = -1.;
962  double eidcontent = histbh_electronid->GetBinContent(1);
963  double bh_goode_o_bade;
964  if (eidcontent != 0) {
965  bh_goode_o_bade = histbh_electronid->GetBinContent(20) / eidcontent;
966  } else {
967  bh_goode_o_bade = 0.0;
968  }
969  double bh_pval_more95 = 0.0;
970  double bh_pval_less05 = 0.0;
971  for (int i = 95; i < 100; i++) bh_pval_more95 += histbh_Pval->GetBinContent(i + 1);
972  for (int i = 0; i < 5; i++) bh_pval_less05 += histbh_Pval->GetBinContent(i + 1);
973  if (bh_neve_bhabha != 0) {
974  bh_goode_frac = histbh_electronid->GetBinContent(20) / bh_neve_bhabha;
975  bh_pval_frac_0 = bh_pval_less05 / bh_neve_bhabha;
976  bh_pval_frac_1 = bh_pval_more95 / bh_neve_bhabha;
977  bh_nocdc_frac = histbh_ncdc->GetBinContent(1) / bh_neve_bhabha;
978  bh_notop_frac = histbh_topdig->GetBinContent(1) / bh_neve_bhabha;
979  bh_noarich_frac = histbh_DetPhotonARICH->GetBinContent(1) / bh_neve_bhabha;
980  } else {
981  bh_goode_frac = 0.0;
982  bh_pval_frac_0 = 0.0;
983  bh_pval_frac_1 = 0.0;
984  bh_nocdc_frac = 0.0;
985  bh_notop_frac = 0.0;
986  bh_noarich_frac = 0.0;
987  }
988  // set values
989  mon_bhabha->setVariable("bh_mean_npxd", bh_mean_npxd);
990  mon_bhabha->setVariable("bh_mean_nsvd", bh_mean_nsvd);
991  mon_bhabha->setVariable("bh_mean_ncdc", bh_mean_ncdc);
992  mon_bhabha->setVariable("bh_mean_topdig", bh_mean_topdig);
993  mon_bhabha->setVariable("bh_mean_parich", bh_mean_parich);
994  mon_bhabha->setVariable("bh_mean_ncdc_ex", bh_mean_ncdc_ex);
995  mon_bhabha->setVariable("bh_mean_necl", bh_mean_necl);
996  mon_bhabha->setVariable("bh_mean_electronid", bh_mean_electronid);
997  mon_bhabha->setVariable("bh_mean_d0", bh_mean_d0);
998  mon_bhabha->setVariable("bh_mean_z0", bh_mean_z0);
999  mon_bhabha->setVariable("bh_mean_pval", bh_mean_pval);
1000  mon_bhabha->setVariable("bh_mean_ndf", bh_mean_ndf);
1001  mon_bhabha->setVariable("bh_dif_ndf_ncdc", bh_dif_ndf_ncdc);
1002  mon_bhabha->setVariable("bh_mean_dd0", bh_mean_dd0);
1003  mon_bhabha->setVariable("bh_mean_dz0", bh_mean_dz0);
1004  mon_bhabha->setVariable("bh_mean_dpt", bh_mean_dpt);
1005  mon_bhabha->setVariable("bh_rms_dd0", bh_rms_dd0);
1006  mon_bhabha->setVariable("bh_rms_dz0", bh_rms_dz0);
1007  mon_bhabha->setVariable("bh_rms_dpt", bh_rms_dpt);
1008  mon_bhabha->setVariable("bh_sigma68_dd0", bh_sigma68_dd0);
1009  mon_bhabha->setVariable("bh_sigma68_dz0", bh_sigma68_dz0);
1010  mon_bhabha->setVariable("bh_sigma68_dpt", bh_sigma68_dpt);
1011  mon_bhabha->setVariable("bh_neve_bhabha", bh_neve_bhabha);
1012  mon_bhabha->setVariable("bh_goode_frac", bh_goode_frac);
1013  mon_bhabha->setVariable("bh_goode_o_bade", bh_goode_o_bade);
1014  mon_bhabha->setVariable("bh_pval_frac_0", bh_pval_frac_0);
1015  mon_bhabha->setVariable("bh_pval_frac_1", bh_pval_frac_1);
1016  mon_bhabha->setVariable("bh_nocdc_frac", bh_nocdc_frac);
1017  mon_bhabha->setVariable("bh_notop_frac", bh_notop_frac);
1018  mon_bhabha->setVariable("bh_noarich_frac", bh_noarich_frac);
1019  // ========== hadronb2 + tight
1020  // get existing histograms produced by DQM modules
1021  auto* histhad_nECLClusters = findHist("PhysicsObjectsMiraBelleHadron/hist_nECLClusters");
1022  auto* histhad_visibleEnergyCMSnorm = findHist("PhysicsObjectsMiraBelleHadron/hist_visibleEnergyCMSnorm");
1023  auto* histhad_EsumCMSnorm = findHist("PhysicsObjectsMiraBelleHadron/hist_EsumCMSnorm");
1024  auto* histhad_R2 = findHist("PhysicsObjectsMiraBelleHadron/hist_R2");
1025  auto* histhad_physicsresultsH = findHist("PhysicsObjectsMiraBelleHadron/hist_physicsresultsH");
1026 
1027  if (histhad_nECLClusters == nullptr) {
1028  B2ERROR("Can not find the histhad_nECLClusters histogram!");
1029  return;
1030  }
1031  if (histhad_visibleEnergyCMSnorm == nullptr) {
1032  B2ERROR("Can not find the histhad_visibleEnergyCMSnorm histogram!");
1033  return;
1034  }
1035  if (histhad_EsumCMSnorm == nullptr) {
1036  B2ERROR("Can not find the histhad_EsumCMSnorm histogram!");
1037  return;
1038  }
1039  if (histhad_R2 == nullptr) {
1040  B2ERROR("Can not find the histhad_R2 histogram!");
1041  return;
1042  }
1043  if (histhad_physicsresultsH == nullptr) {
1044  B2ERROR("Can not find the histhad_physicsresultsH histogram!");
1045  return;
1046  }
1047 
1048  // Make TCanvases
1049  // --- hadron_Main
1050  hadron_main->Divide(2, 2);
1051  hadron_main->cd(1); histhad_nECLClusters->Draw();
1052  hadron_main->cd(2); histhad_visibleEnergyCMSnorm->Draw();
1053  hadron_main->cd(3); histhad_EsumCMSnorm->Draw();
1054  hadron_main->cd(4); histhad_R2->Draw();
1055  // calculate the values of monitoring variables
1056  double had_ntot = histhad_physicsresultsH->GetBinContent(3);
1057 
1058  double ratio_hadron_bhabha = -1.;
1059  if (bh_ntot != 0) {
1060  ratio_hadron_bhabha = had_ntot / bh_neve_bhabha;
1061  } else {
1062  ratio_hadron_bhabha = 0.0;
1063  }
1064  // set values
1065  mon_bhabha->setVariable("had_ntot", had_ntot);
1066  mon_hadron->setVariable("ratio_hadron_bhabha", ratio_hadron_bhabha);
1067 
1068  B2DEBUG(20, "DQMHistAnalysisMiraBelle : endRun called");
1069 }
1070 
1072 {
1073 
1074  B2DEBUG(20, "terminate called");
1075 }
TCanvas * dst_k_val
TCanvas object for PID distributions of K.
void initialize() override final
Initialize the Module.
TCanvas * bhabha_main
TCanvas object for main display.
TCanvas * hadron_main
TCanvas object for main display.
TCanvas * bhabha_resolution
TCanvas object for resolution display.
TCanvas * mumu_resolution
TCanvas object for resolution display.
Belle2::MonitoringObject * mon_bhabha
MonitoringObject for bhabha events.
void terminate() override final
Termination action.
TCanvas * dst_pi_val
TCanvas object for PID distributions of pi.
Belle2::MonitoringObject * mon_dst
MonitoringObject for D* events.
void event() override final
Event processor.
TCanvas * mumu_main
TCanvas object for main display.
TCanvas * mumu_muon_val
TCanvas object for mumu values display.
Belle2::MonitoringObject * mon_mumu
MonitoringObject for mumu events.
void endRun() override final
End-of-run action.
TCanvas * dst_mass
TCanvas object for D0 mass, delta mass, and pi0 mass.
double m_scale_dst
Scale factor "signal region" / "sideband", assuming uniform events.
void beginRun() override final
Called when entering a new run.
Belle2::MonitoringObject * mon_hadron
MonitoringObject for hadronb2 tight events.
The base class for the histogram analysis module.
static TH1 * findHist(const std::string &histname, bool onlyIfUpdated=false)
Get histogram from list (no other search).
double getSigma68(TH1 *h) const
Helper function to compute half of the central interval covering 68% of a distribution.
static MonitoringObject * getMonitoringObject(const std::string &histname)
Get MonitoringObject with given name (new object is created if non-existing)
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 addCanvas(TCanvas *canv)
Add Canvas to monitoring object.
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
Abstract base class for different kinds of events.