Belle II Software  release-08-00-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("debug", m_debug, "debug mode", false);
31  addParam("alert", m_enableAlert, "Enable color alert", true);
32  addParam("scale_dst", m_scale_dst, "Scale factor signal/sideband", 0.09375);
33 }
34 
36 {
37 }
38 
40 {
41  gROOT->cd();
42 
43  //mon_mumu = new Belle2::MonitoringObject("mumu");
44  mon_mumu = getMonitoringObject("mumu");
46 
47  // make cavases to be added to MonitoringObject
48  mumu_main = new TCanvas("mumu_main", "mumu_main", 0, 0, 800, 600);
49  mumu_resolution = new TCanvas("mumu_resolution", "mumu_resolution", 0, 0, 800, 600);
50  mumu_muon_val = new TCanvas("mumu_muon_val", "mumu_muon_val", 0, 0, 400, 400);
51  dst_mass = new TCanvas("dst_mass", "dst_mass", 0, 0, 1200, 400);
52  dst_pi_val = new TCanvas("dst_pi_val", "dst_pi_val", 0, 0, 800, 400);
53  dst_k_val = new TCanvas("dst_k_val", "dst_k_val", 0, 0, 800, 400);
54 
55  // add canvases to MonitoringObject
62 
63  B2DEBUG(20, "DQMHistAnalysisMiraBelle: initialized.");
64 }
65 
67 {
68  B2DEBUG(20, "DQMHistAnalysisMiraBelle: beginRun called.");
69 }
70 
72 {
73  B2DEBUG(20, "DQMHistAnalysisOutputMiraBelle: event called.");
74 }
75 
77 {
78  // ========== mumutight
79  // get existing histograms produced by DQM modules
80  TH1* hist_npxd = findHist("PhysicsObjectsMiraBelle/hist_npxd");
81  TH1* hist_nsvd = findHist("PhysicsObjectsMiraBelle/hist_nsvd");
82  TH1* hist_ncdc = findHist("PhysicsObjectsMiraBelle/hist_ncdc");
83  TH1* hist_topdig = findHist("PhysicsObjectsMiraBelle/hist_topdig");
84  TH1* hist_DetPhotonARICH = findHist("PhysicsObjectsMiraBelle/hist_DetPhotonARICH");
85  TH1* hist_klmTotalHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalHits");
86  TH1* hist_klmClusterLayers = findHist("PhysicsObjectsMiraBelle/hist_klmClusterLayers");
87  TH1* hist_dD0 = findHist("PhysicsObjectsMiraBelle/hist_dD0");
88  TH1* hist_dZ0 = findHist("PhysicsObjectsMiraBelle/hist_dZ0");
89  TH1* hist_dPtcms = findHist("PhysicsObjectsMiraBelle/hist_dPtcms");
90  TH1* hist_Pval = findHist("PhysicsObjectsMiraBelle/hist_Pval");
91  TH1* hist_nExtraCDCHits = findHist("PhysicsObjectsMiraBelle/hist_nExtraCDCHits");
92  TH1* hist_nECLClusters = findHist("PhysicsObjectsMiraBelle/hist_nECLClusters");
93  TH1* hist_muid = findHist("PhysicsObjectsMiraBelle/hist_muid");
94  TH1* hist_inv_p = findHist("PhysicsObjectsMiraBelle/hist_inv_p");
95  TH1* hist_ndf = findHist("PhysicsObjectsMiraBelle/hist_ndf");
96  TH1* hist_D0 = findHist("PhysicsObjectsMiraBelle/hist_D0");
97  TH1* hist_Z0 = findHist("PhysicsObjectsMiraBelle/hist_Z0");
98  TH1* hist_theta = findHist("PhysicsObjectsMiraBelle/hist_theta");
99  TH1* hist_Phi0 = findHist("PhysicsObjectsMiraBelle/hist_Phi0");
100  TH1* hist_Pt = findHist("PhysicsObjectsMiraBelle/hist_Pt");
101  TH1* hist_Mom = findHist("PhysicsObjectsMiraBelle/hist_Mom");
102  TH1* hist_klmTotalBarrelHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalBarrelHits");
103  TH1* hist_klmTotalEndcapHits = findHist("PhysicsObjectsMiraBelle/hist_klmTotalEndcapHits");
104  TH1* hist_dPhicms = findHist("PhysicsObjectsMiraBelle/hist_dPhicms");
105 
106  // Make TCanvases
107  // --- Mumu_Main
108  mumu_main->Divide(4, 3);
109  mumu_main->cd(1); hist_theta->Draw();
110  mumu_main->cd(2); hist_Phi0->Draw();
111  mumu_main->cd(3); hist_Mom->Draw();
112  mumu_main->cd(4); hist_Pt->Draw();
113  mumu_main->cd(5); hist_npxd->Draw();
114  mumu_main->cd(6); hist_nsvd->Draw();
115  mumu_main->cd(7); hist_ncdc->Draw();
116  mumu_main->cd(8); hist_topdig->Draw();
117  mumu_main->cd(9); hist_DetPhotonARICH->Draw();
118  mumu_main->cd(10); hist_klmClusterLayers->Draw();
119  mumu_main->cd(11); hist_nExtraCDCHits->Draw();
120  mumu_main->cd(12); hist_nECLClusters->Draw();
121  // --- Mumu_Resolution
122  mumu_resolution->Divide(3, 3);
123  mumu_resolution->cd(1); hist_inv_p->Draw();
124  mumu_resolution->cd(2); hist_dD0->Draw();
125  mumu_resolution->cd(3); hist_dZ0->Draw();
126  mumu_resolution->cd(4); hist_dPtcms->Draw();
127  mumu_resolution->cd(5); hist_dPhicms->Draw();
128  mumu_resolution->cd(6); hist_nECLClusters->Draw();
129  mumu_resolution->cd(7); hist_nExtraCDCHits->Draw();
130  mumu_resolution->cd(8); hist_ndf->Draw();
131  mumu_muon_val->Divide(2, 2);
132  // --- Muon variables
133  mumu_muon_val->cd(1); hist_muid->Draw();
134  mumu_muon_val->cd(2); hist_Pval->Draw();
135  mumu_muon_val->cd(3); hist_theta->Draw();
136  mumu_muon_val->cd(4); hist_Phi0->Draw();
137 
138  // calculate the values of monitoring variables
139  float mean_npxd = hist_npxd->GetMean();
140  float mean_nsvd = hist_nsvd->GetMean();
141  float mean_ncdc = hist_ncdc->GetMean();
142  float mean_nklmlayer = hist_klmClusterLayers->GetMean();
143  float mean_nklm = hist_klmTotalHits->GetMean();
144  float mean_nbklm = hist_klmTotalBarrelHits->GetMean();
145  float mean_neklm = hist_klmTotalEndcapHits->GetMean();
146  float mean_topdig = hist_topdig->GetMean();
147  float mean_parich = hist_DetPhotonARICH->GetMean();
148  float mean_ncdc_ex = hist_nExtraCDCHits->GetMean();
149  float mean_necl = hist_nECLClusters->GetMean();
150  float mean_muid = hist_muid->GetMean();
151  float mean_d0 = hist_D0->GetMean();
152  float mean_z0 = hist_Z0->GetMean();
153  float mean_pval = hist_Pval->GetMean();
154  float mean_ndf = hist_ndf->GetMean();
155  float dif_ndf_ncdc = mean_ndf - mean_ncdc;
156  float mean_dd0 = hist_dD0->GetMean();
157  float mean_dz0 = hist_dZ0->GetMean();
158  float mean_dpt = hist_dPtcms->GetMean();
159  float rms_dd0 = hist_dD0->GetRMS();
160  float rms_dz0 = hist_dZ0->GetRMS();
161  float rms_dpt = hist_dPtcms->GetRMS();
162  float sigma68_dd0 = getSigma68(hist_dD0);
163  float sigma68_dz0 = getSigma68(hist_dZ0);
164  float sigma68_dpt = getSigma68(hist_dPtcms);
165  int ntot = hist_nsvd->GetEntries();
166  float neve_mumu = ntot;
167  float goodmu_frac = hist_muid->GetBinContent(20) / (float)ntot;
168  float goodmu_o_badmu = hist_muid->GetBinContent(20) / (float)hist_muid->GetBinContent(1);
169  float pval_more95 = 0;
170  float pval_less05 = 0;
171  for (int i = 95; i < 100; i++) pval_more95 += hist_Pval->GetBinContent(i + 1);
172  for (int i = 0; i < 5; i++) pval_less05 += hist_Pval->GetBinContent(i + 1);
173  float pval_frac_0 = pval_less05 / (float)ntot;
174  float pval_frac_1 = pval_more95 / (float)ntot;
175  float nocdc_frac = hist_ncdc->GetBinContent(1) / (float)ntot;
176  float notop_frac = hist_topdig->GetBinContent(1) / (float)ntot;
177  float noarich_frac = hist_DetPhotonARICH->GetBinContent(1) / (float)ntot;
178  //Calculate M(mumu)
179  float peak_mumu = hist_inv_p->GetXaxis()->GetBinCenter(hist_inv_p->GetMaximumBin());
180  TF1* f_mumuInvM = new TF1("f_mumuInvM", "gaus", peak_mumu - 0.04, peak_mumu + 0.04);
181  f_mumuInvM->SetParameters(hist_inv_p->GetMaximum(), peak_mumu, 0.045);
182  f_mumuInvM->SetParLimits(1, peak_mumu - 0.04, peak_mumu + 0.04);
183  f_mumuInvM->SetParLimits(2, 0.01, 0.06);
184  hist_inv_p->Fit(f_mumuInvM, "R");
185  float fit_mumumass = f_mumuInvM->GetParameter(1);
186  if (fit_mumumass < 9) fit_mumumass = 9;
187  if (fit_mumumass > 12) fit_mumumass = 12;
188 
189  // set values
190  mon_mumu->setVariable("mean_npxd", mean_npxd);
191  mon_mumu->setVariable("mean_nsvd", mean_nsvd);
192  mon_mumu->setVariable("mean_ncdc", mean_ncdc);
193  mon_mumu->setVariable("mean_nklmlayer", mean_nklmlayer);
194  mon_mumu->setVariable("mean_nklm", mean_nklm);
195  mon_mumu->setVariable("mean_nbklm", mean_nbklm);
196  mon_mumu->setVariable("mean_neklm", mean_neklm);
197  mon_mumu->setVariable("mean_topdig", mean_topdig);
198  mon_mumu->setVariable("mean_parich", mean_parich);
199  mon_mumu->setVariable("mean_ncdc_ex", mean_ncdc_ex);
200  mon_mumu->setVariable("mean_necl", mean_necl);
201  mon_mumu->setVariable("mean_muid", mean_muid);
202  mon_mumu->setVariable("mean_d0", mean_d0);
203  mon_mumu->setVariable("mean_z0", mean_z0);
204  mon_mumu->setVariable("mean_pval", mean_pval);
205  mon_mumu->setVariable("mean_ndf", mean_ndf);
206  mon_mumu->setVariable("dif_ndf_ncdc", dif_ndf_ncdc);
207  mon_mumu->setVariable("mean_dd0", mean_dd0);
208  mon_mumu->setVariable("mean_dz0", mean_dz0);
209  mon_mumu->setVariable("mean_dpt", mean_dpt);
210  mon_mumu->setVariable("rms_dd0", rms_dd0);
211  mon_mumu->setVariable("rms_dz0", rms_dz0);
212  mon_mumu->setVariable("rms_dpt", rms_dpt);
213  mon_mumu->setVariable("sigma68_dd0", sigma68_dd0);
214  mon_mumu->setVariable("sigma68_dz0", sigma68_dz0);
215  mon_mumu->setVariable("sigma68_dpt", sigma68_dpt);
216  mon_mumu->setVariable("neve_mumu", neve_mumu);
217  mon_mumu->setVariable("goodmu_frac", goodmu_frac);
218  mon_mumu->setVariable("goodmu_o_badmu", goodmu_o_badmu);
219  mon_mumu->setVariable("pval_frac_0", pval_frac_0);
220  mon_mumu->setVariable("pval_frac_1", pval_frac_1);
221  mon_mumu->setVariable("nocdc_frac", nocdc_frac);
222  mon_mumu->setVariable("notop_frac", notop_frac);
223  mon_mumu->setVariable("noarich_frac", noarich_frac);
224  mon_mumu->setVariable("fit_mumumass", fit_mumumass);
225 
226  // ========== D*
227  // get existing histograms produced by DQM modules
228  TH1* hist_D0_InvM = findHist("PhysicsObjectsMiraBelleDst/hist_D0_InvM");
229  TH1* hist_delta_m = findHist("PhysicsObjectsMiraBelleDst/hist_delta_m");
230  TH1* hist_D0_softpi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ALL_pion");
231  TH1* hist_D0_softpi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_SVD_pion");
232  TH1* hist_D0_softpi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_CDC_pion");
233  TH1* hist_D0_softpi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_TOP_pion");
234  TH1* hist_D0_softpi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ARICH_pion");
235  TH1* hist_D0_softpi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_ECL_pion");
236  TH1* hist_D0_softpi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_softpi_PID_KLM_pion");
237  TH1* hist_D0_pi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ALL_pion");
238  TH1* hist_D0_pi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_SVD_pion");
239  TH1* hist_D0_pi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_CDC_pion");
240  TH1* hist_D0_pi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_TOP_pion");
241  TH1* hist_D0_pi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ARICH_pion");
242  TH1* hist_D0_pi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_ECL_pion");
243  TH1* hist_D0_pi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_D0_pi_PID_KLM_pion");
244  TH1* hist_D0_K_PID_ALL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ALL_kaon");
245  TH1* hist_D0_K_PID_SVD_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_SVD_kaon");
246  TH1* hist_D0_K_PID_CDC_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_CDC_kaon");
247  TH1* hist_D0_K_PID_TOP_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_TOP_kaon");
248  TH1* hist_D0_K_PID_ARICH_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ARICH_kaon");
249  TH1* hist_D0_K_PID_ECL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_ECL_kaon");
250  TH1* hist_D0_K_PID_KLM_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_D0_K_PID_KLM_kaon");
251  TH1* hist_sideband_D0_softpi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ALL_pion");
252  TH1* hist_sideband_D0_softpi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_SVD_pion");
253  TH1* hist_sideband_D0_softpi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_CDC_pion");
254  TH1* hist_sideband_D0_softpi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_TOP_pion");
255  TH1* hist_sideband_D0_softpi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ARICH_pion");
256  TH1* hist_sideband_D0_softpi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_ECL_pion");
257  TH1* hist_sideband_D0_softpi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_softpi_PID_KLM_pion");
258  TH1* hist_sideband_D0_pi_PID_ALL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ALL_pion");
259  TH1* hist_sideband_D0_pi_PID_SVD_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_SVD_pion");
260  TH1* hist_sideband_D0_pi_PID_CDC_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_CDC_pion");
261  TH1* hist_sideband_D0_pi_PID_TOP_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_TOP_pion");
262  TH1* hist_sideband_D0_pi_PID_ARICH_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ARICH_pion");
263  TH1* hist_sideband_D0_pi_PID_ECL_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_ECL_pion");
264  TH1* hist_sideband_D0_pi_PID_KLM_pion = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_pi_PID_KLM_pion");
265  TH1* hist_sideband_D0_K_PID_ALL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ALL_kaon");
266  TH1* hist_sideband_D0_K_PID_SVD_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_SVD_kaon");
267  TH1* hist_sideband_D0_K_PID_CDC_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_CDC_kaon");
268  TH1* hist_sideband_D0_K_PID_TOP_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_TOP_kaon");
269  TH1* hist_sideband_D0_K_PID_ARICH_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ARICH_kaon");
270  TH1* hist_sideband_D0_K_PID_ECL_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_ECL_kaon");
271  TH1* hist_sideband_D0_K_PID_KLM_kaon = findHist("PhysicsObjectsMiraBelleDst/hist_sideband_D0_K_PID_KLM_kaon");
272  TH1* hist_D0_pi0_InvM = findHist("PhysicsObjectsMiraBelleDst2/hist_D0_pi0_InvM");
273 
274  // Fit mass distributions for scale factor
275  TF1* f_InvM = new TF1("f_InvM", "[0]*TMath::Gaus(x,[1],[2])+[3]*pow(x-[4],2)+[5]", 1.81, 1.95);
276  f_InvM->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
277  f_InvM->SetParameters(hist_D0_InvM->GetMaximum(), 1.86, 5e-3, 0., 1.86, 0.);
278  hist_D0_InvM->Fit(f_InvM, "", "", 1.81, 1.95);
279  f_InvM->SetLineColor(kRed);
280 
281  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);
282  f_delta_m->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
283  f_delta_m->SetParameters(hist_delta_m->GetMaximum(), 0.145, 5e-4, 0., 0.145, 0.);
284  hist_delta_m->Fit(f_delta_m, "", "", 0.14, 0.16);
285  f_delta_m->SetLineColor(kRed);
286 
287  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);
288  f_pi0_InvM->SetParNames("Height", "#mu", "#sigma", "a", "b", "c");
289  f_pi0_InvM->SetParameters(hist_D0_pi0_InvM->GetMaximum(), 0.13, 5e-3, 0., 0.13, 0.);
290  hist_D0_pi0_InvM->Fit(f_pi0_InvM, "", "", 0.09, 0.17);
291  f_pi0_InvM->SetLineColor(kRed);
292 
293  // D->KPi and D->KPiPi0 yields
294  TF1* f_gaus_InvM = new TF1("f_gaus_InvM", "gaus", 1.81, 1.95);
295  f_gaus_InvM->SetParameters(f_InvM->GetParameter(0), f_InvM->GetParameter(1), f_InvM->GetParameter(2));
296  float InvM_bin_width = hist_D0_InvM->GetXaxis()->GetBinWidth(1);
297  float neve_dst = f_gaus_InvM->Integral(1.81, 1.95) / InvM_bin_width;
298 
299  TF1* f_gaus_pi0_InvM = new TF1("f_gaus_pi0_InvM", "gaus", 0.09, 0.17);
300  f_gaus_pi0_InvM->SetParameters(f_pi0_InvM->GetParameter(0), f_pi0_InvM->GetParameter(1), f_pi0_InvM->GetParameter(2));
301  float pi0_InvM_bin_width = hist_D0_pi0_InvM->GetXaxis()->GetBinWidth(1);
302  float neve_pi0 = f_gaus_pi0_InvM->Integral(0.09, 0.17) / pi0_InvM_bin_width;
303 
304  // Sumw2
305  hist_D0_softpi_PID_ALL_pion->Sumw2();
306  hist_D0_softpi_PID_SVD_pion->Sumw2();
307  hist_D0_softpi_PID_CDC_pion->Sumw2();
308  hist_D0_softpi_PID_TOP_pion->Sumw2();
309  hist_D0_softpi_PID_ARICH_pion->Sumw2();
310  hist_D0_softpi_PID_ECL_pion->Sumw2();
311  hist_D0_softpi_PID_KLM_pion->Sumw2();
312  hist_D0_pi_PID_ALL_pion->Sumw2();
313  hist_D0_pi_PID_SVD_pion->Sumw2();
314  hist_D0_pi_PID_CDC_pion->Sumw2();
315  hist_D0_pi_PID_TOP_pion->Sumw2();
316  hist_D0_pi_PID_ARICH_pion->Sumw2();
317  hist_D0_pi_PID_ECL_pion->Sumw2();
318  hist_D0_pi_PID_KLM_pion->Sumw2();
319  hist_D0_K_PID_ALL_kaon->Sumw2();
320  hist_D0_K_PID_SVD_kaon->Sumw2();
321  hist_D0_K_PID_CDC_kaon->Sumw2();
322  hist_D0_K_PID_TOP_kaon->Sumw2();
323  hist_D0_K_PID_ARICH_kaon->Sumw2();
324  hist_D0_K_PID_ECL_kaon->Sumw2();
325  hist_D0_K_PID_KLM_kaon->Sumw2();
326  hist_sideband_D0_softpi_PID_ALL_pion->Sumw2();
327  hist_sideband_D0_softpi_PID_SVD_pion->Sumw2();
328  hist_sideband_D0_softpi_PID_CDC_pion->Sumw2();
329  hist_sideband_D0_softpi_PID_TOP_pion->Sumw2();
330  hist_sideband_D0_softpi_PID_ARICH_pion->Sumw2();
331  hist_sideband_D0_softpi_PID_ECL_pion->Sumw2();
332  hist_sideband_D0_softpi_PID_KLM_pion->Sumw2();
333  hist_sideband_D0_pi_PID_ALL_pion->Sumw2();
334  hist_sideband_D0_pi_PID_SVD_pion->Sumw2();
335  hist_sideband_D0_pi_PID_CDC_pion->Sumw2();
336  hist_sideband_D0_pi_PID_TOP_pion->Sumw2();
337  hist_sideband_D0_pi_PID_ARICH_pion->Sumw2();
338  hist_sideband_D0_pi_PID_ECL_pion->Sumw2();
339  hist_sideband_D0_pi_PID_KLM_pion->Sumw2();
340  hist_sideband_D0_K_PID_ALL_kaon->Sumw2();
341  hist_sideband_D0_K_PID_SVD_kaon->Sumw2();
342  hist_sideband_D0_K_PID_CDC_kaon->Sumw2();
343  hist_sideband_D0_K_PID_TOP_kaon->Sumw2();
344  hist_sideband_D0_K_PID_ARICH_kaon->Sumw2();
345  hist_sideband_D0_K_PID_ECL_kaon->Sumw2();
346  hist_sideband_D0_K_PID_KLM_kaon->Sumw2();
347 
348  // Scale the distributions in sideband
349  hist_sideband_D0_softpi_PID_ALL_pion->Scale(m_scale_dst);
350  hist_sideband_D0_softpi_PID_SVD_pion->Scale(m_scale_dst);
351  hist_sideband_D0_softpi_PID_CDC_pion->Scale(m_scale_dst);
352  hist_sideband_D0_softpi_PID_TOP_pion->Scale(m_scale_dst);
353  hist_sideband_D0_softpi_PID_ARICH_pion->Scale(m_scale_dst);
354  hist_sideband_D0_softpi_PID_ECL_pion->Scale(m_scale_dst);
355  hist_sideband_D0_softpi_PID_KLM_pion->Scale(m_scale_dst);
356  hist_sideband_D0_pi_PID_ALL_pion->Scale(m_scale_dst);
357  hist_sideband_D0_pi_PID_SVD_pion->Scale(m_scale_dst);
358  hist_sideband_D0_pi_PID_CDC_pion->Scale(m_scale_dst);
359  hist_sideband_D0_pi_PID_TOP_pion->Scale(m_scale_dst);
360  hist_sideband_D0_pi_PID_ARICH_pion->Scale(m_scale_dst);
361  hist_sideband_D0_pi_PID_ECL_pion->Scale(m_scale_dst);
362  hist_sideband_D0_pi_PID_KLM_pion->Scale(m_scale_dst);
363  hist_sideband_D0_K_PID_ALL_kaon->Scale(m_scale_dst);
364  hist_sideband_D0_K_PID_SVD_kaon->Scale(m_scale_dst);
365  hist_sideband_D0_K_PID_CDC_kaon->Scale(m_scale_dst);
366  hist_sideband_D0_K_PID_TOP_kaon->Scale(m_scale_dst);
367  hist_sideband_D0_K_PID_ARICH_kaon->Scale(m_scale_dst);
368  hist_sideband_D0_K_PID_ECL_kaon->Scale(m_scale_dst);
369  hist_sideband_D0_K_PID_KLM_kaon->Scale(m_scale_dst);
370 
371  // BG subtraction
372  hist_D0_softpi_PID_ALL_pion->Add(hist_sideband_D0_softpi_PID_ALL_pion, -1);
373  hist_D0_softpi_PID_SVD_pion->Add(hist_sideband_D0_softpi_PID_SVD_pion, -1);
374  hist_D0_softpi_PID_CDC_pion->Add(hist_sideband_D0_softpi_PID_CDC_pion, -1);
375  hist_D0_softpi_PID_TOP_pion->Add(hist_sideband_D0_softpi_PID_TOP_pion, -1);
376  hist_D0_softpi_PID_ARICH_pion->Add(hist_sideband_D0_softpi_PID_ARICH_pion, -1);
377  hist_D0_softpi_PID_ECL_pion->Add(hist_sideband_D0_softpi_PID_ECL_pion, -1);
378  hist_D0_softpi_PID_KLM_pion->Add(hist_sideband_D0_softpi_PID_KLM_pion, -1);
379  hist_D0_pi_PID_ALL_pion->Add(hist_sideband_D0_pi_PID_ALL_pion, -1);
380  hist_D0_pi_PID_SVD_pion->Add(hist_sideband_D0_pi_PID_SVD_pion, -1);
381  hist_D0_pi_PID_CDC_pion->Add(hist_sideband_D0_pi_PID_CDC_pion, -1);
382  hist_D0_pi_PID_TOP_pion->Add(hist_sideband_D0_pi_PID_TOP_pion, -1);
383  hist_D0_pi_PID_ARICH_pion->Add(hist_sideband_D0_pi_PID_ARICH_pion, -1);
384  hist_D0_pi_PID_ECL_pion->Add(hist_sideband_D0_pi_PID_ECL_pion, -1);
385  hist_D0_pi_PID_KLM_pion->Add(hist_sideband_D0_pi_PID_KLM_pion, -1);
386  hist_D0_K_PID_ALL_kaon->Add(hist_sideband_D0_K_PID_ALL_kaon, -1);
387  hist_D0_K_PID_SVD_kaon->Add(hist_sideband_D0_K_PID_SVD_kaon, -1);
388  hist_D0_K_PID_CDC_kaon->Add(hist_sideband_D0_K_PID_CDC_kaon, -1);
389  hist_D0_K_PID_TOP_kaon->Add(hist_sideband_D0_K_PID_TOP_kaon, -1);
390  hist_D0_K_PID_ARICH_kaon->Add(hist_sideband_D0_K_PID_ARICH_kaon, -1);
391  hist_D0_K_PID_ECL_kaon->Add(hist_sideband_D0_K_PID_ECL_kaon, -1);
392  hist_D0_K_PID_KLM_kaon->Add(hist_sideband_D0_K_PID_KLM_kaon, -1);
393 
394  // Make TCanvases
395  // --- D* -> D0pi mass resolution
396  dst_mass->Divide(3, 1);
397  dst_mass->cd(1);
398  hist_D0_InvM->Draw();
399  f_InvM->Draw("SAME");
400  dst_mass->cd(2);
401  hist_delta_m->Draw();
402  f_delta_m->Draw("SAME");
403  dst_mass->cd(3);
404  hist_D0_pi0_InvM->Draw();
405  f_pi0_InvM->Draw("SAME");
406  // --- pi variables for D0 -> K pi
407  dst_pi_val->Divide(4, 2);
408  dst_pi_val->cd(1); hist_D0_pi_PID_ALL_pion->Draw();
409  dst_pi_val->cd(2); hist_D0_pi_PID_SVD_pion->Draw();
410  dst_pi_val->cd(3); hist_D0_pi_PID_CDC_pion->Draw();
411  dst_pi_val->cd(4); hist_D0_pi_PID_TOP_pion->Draw();
412  dst_pi_val->cd(5); hist_D0_pi_PID_ARICH_pion->Draw();
413  dst_pi_val->cd(6); hist_D0_pi_PID_ECL_pion->Draw();
414  dst_pi_val->cd(7); hist_D0_pi_PID_KLM_pion->Draw();
415  // --- K variables for D0 -> K pi
416  dst_k_val->Divide(4, 2);
417  dst_k_val->cd(1); hist_D0_K_PID_ALL_kaon->Draw();
418  dst_k_val->cd(2); hist_D0_K_PID_SVD_kaon->Draw();
419  dst_k_val->cd(3); hist_D0_K_PID_CDC_kaon->Draw();
420  dst_k_val->cd(4); hist_D0_K_PID_TOP_kaon->Draw();
421  dst_k_val->cd(5); hist_D0_K_PID_ARICH_kaon->Draw();
422  dst_k_val->cd(6); hist_D0_K_PID_ECL_kaon->Draw();
423  dst_k_val->cd(7); hist_D0_K_PID_KLM_kaon->Draw();
424 
425  // calculate the values of monitoring variables
426  float mean_D0_InvM = f_InvM->GetParameter(1);
427  float width_D0_InvM = f_InvM->GetParameter(2);
428  float mean_delta_m = f_delta_m->GetParameter(1);
429  float width_delta_m = f_delta_m->GetParameter(2);
430  float mean_pi0_InvM = f_pi0_InvM->GetParameter(1);
431  float width_pi0_InvM = f_pi0_InvM->GetParameter(2);
432  float mean_D0_softpi_PID_ALL_pion = hist_D0_softpi_PID_ALL_pion->GetMean();
433  float mean_D0_softpi_PID_SVD_pion = hist_D0_softpi_PID_SVD_pion->GetMean();
434  float mean_D0_softpi_PID_CDC_pion = hist_D0_softpi_PID_CDC_pion->GetMean();
435  float mean_D0_softpi_PID_TOP_pion = hist_D0_softpi_PID_TOP_pion->GetMean();
436  float mean_D0_softpi_PID_ARICH_pion = hist_D0_softpi_PID_ARICH_pion->GetMean();
437  float mean_D0_softpi_PID_ECL_pion = hist_D0_softpi_PID_ECL_pion->GetMean();
438  float mean_D0_softpi_PID_KLM_pion = hist_D0_softpi_PID_KLM_pion->GetMean();
439  float mean_D0_pi_PID_ALL_pion = hist_D0_pi_PID_ALL_pion->GetMean();
440  float mean_D0_pi_PID_SVD_pion = hist_D0_pi_PID_SVD_pion->GetMean();
441  float mean_D0_pi_PID_CDC_pion = hist_D0_pi_PID_CDC_pion->GetMean();
442  float mean_D0_pi_PID_TOP_pion = hist_D0_pi_PID_TOP_pion->GetMean();
443  float mean_D0_pi_PID_ARICH_pion = hist_D0_pi_PID_ARICH_pion->GetMean();
444  float mean_D0_pi_PID_ECL_pion = hist_D0_pi_PID_ECL_pion->GetMean();
445  float mean_D0_pi_PID_KLM_pion = hist_D0_pi_PID_KLM_pion->GetMean();
446  float mean_D0_K_PID_ALL_kaon = hist_D0_K_PID_ALL_kaon->GetMean();
447  float mean_D0_K_PID_SVD_kaon = hist_D0_K_PID_SVD_kaon->GetMean();
448  float mean_D0_K_PID_CDC_kaon = hist_D0_K_PID_CDC_kaon->GetMean();
449  float mean_D0_K_PID_TOP_kaon = hist_D0_K_PID_TOP_kaon->GetMean();
450  float mean_D0_K_PID_ARICH_kaon = hist_D0_K_PID_ARICH_kaon->GetMean();
451  float mean_D0_K_PID_ECL_kaon = hist_D0_K_PID_ECL_kaon->GetMean();
452  float mean_D0_K_PID_KLM_kaon = hist_D0_K_PID_KLM_kaon->GetMean();
453 
454  // set values
455  mon_dst->setVariable("neve_dst", neve_dst);
456  mon_dst->setVariable("neve_pi0", neve_pi0);
457  mon_dst->setVariable("mean_D0_InvM", mean_D0_InvM);
458  mon_dst->setVariable("width_D0_InvM", width_D0_InvM);
459  mon_dst->setVariable("mean_delta_m", mean_delta_m);
460  mon_dst->setVariable("width_delta_m", width_delta_m);
461  mon_dst->setVariable("mean_pi0_InvM", mean_pi0_InvM);
462  mon_dst->setVariable("width_pi0_InvM", width_pi0_InvM);
463  mon_dst->setVariable("mean_D0_softpi_PID_ALL_pion", mean_D0_softpi_PID_ALL_pion);
464  mon_dst->setVariable("mean_D0_softpi_PID_SVD_pion", mean_D0_softpi_PID_SVD_pion);
465  mon_dst->setVariable("mean_D0_softpi_PID_CDC_pion", mean_D0_softpi_PID_CDC_pion);
466  mon_dst->setVariable("mean_D0_softpi_PID_TOP_pion", mean_D0_softpi_PID_TOP_pion);
467  mon_dst->setVariable("mean_D0_softpi_PID_ARICH_pion", mean_D0_softpi_PID_ARICH_pion);
468  mon_dst->setVariable("mean_D0_softpi_PID_ECL_pion", mean_D0_softpi_PID_ECL_pion);
469  mon_dst->setVariable("mean_D0_softpi_PID_KLM_pion", mean_D0_softpi_PID_KLM_pion);
470  mon_dst->setVariable("mean_D0_pi_PID_ALL_pion", mean_D0_pi_PID_ALL_pion);
471  mon_dst->setVariable("mean_D0_pi_PID_SVD_pion", mean_D0_pi_PID_SVD_pion);
472  mon_dst->setVariable("mean_D0_pi_PID_CDC_pion", mean_D0_pi_PID_CDC_pion);
473  mon_dst->setVariable("mean_D0_pi_PID_TOP_pion", mean_D0_pi_PID_TOP_pion);
474  mon_dst->setVariable("mean_D0_pi_PID_ARICH_pion", mean_D0_pi_PID_ARICH_pion);
475  mon_dst->setVariable("mean_D0_pi_PID_ECL_pion", mean_D0_pi_PID_ECL_pion);
476  mon_dst->setVariable("mean_D0_pi_PID_KLM_pion", mean_D0_pi_PID_KLM_pion);
477  mon_dst->setVariable("mean_D0_K_PID_ALL_kaon", mean_D0_K_PID_ALL_kaon);
478  mon_dst->setVariable("mean_D0_K_PID_SVD_kaon", mean_D0_K_PID_SVD_kaon);
479  mon_dst->setVariable("mean_D0_K_PID_CDC_kaon", mean_D0_K_PID_CDC_kaon);
480  mon_dst->setVariable("mean_D0_K_PID_TOP_kaon", mean_D0_K_PID_TOP_kaon);
481  mon_dst->setVariable("mean_D0_K_PID_ARICH_kaon", mean_D0_K_PID_ARICH_kaon);
482  mon_dst->setVariable("mean_D0_K_PID_ECL_kaon", mean_D0_K_PID_ECL_kaon);
483  mon_dst->setVariable("mean_D0_K_PID_KLM_kaon", mean_D0_K_PID_KLM_kaon);
484 
485 
486  B2DEBUG(20, "DQMHistAnalysisMiraBelle : endRun called");
487 }
488 
490 {
491 
492  B2DEBUG(20, "terminate called");
493 }
TCanvas * dst_k_val
TCanvas object for PID distributions of K.
void initialize() override final
Initialize the Module.
bool m_enableAlert
Enable alert by base color of canvases.
TCanvas * mumu_resolution
TCanvas object for resolution display.
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.
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.