Skip to content

Commit e97082c

Browse files
author
Luigi Dello Stritto
committed
fix signal count
1 parent 82a4fbf commit e97082c

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

machine_learning_hep/analysis/analyzer_jets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ def _roofit_mass(self, level, hist, ipt, pdfnames, param_names, fitcfg, roows=No
401401
if level == "data":
402402
mean_sgn = ws.var(self.p_param_names["gauss_mean"])
403403
sigma_sgn = ws.var(self.p_param_names["gauss_sigma"])
404-
(sig, sig_err, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
404+
(sig, sig_err, _, _, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
405405
ws, res, pdfnames, param_names, mean_sgn, sigma_sgn
406406
)
407407
add_text_info_perf(textInfoLeft, sig, sig_err, bkg, bkg_err, s_over_b, s_over_b_err, signif, signif_err)

machine_learning_hep/analysis/analyzerdhadrons.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def _roofit_mass(self, level, hist, ipt, pdfnames, param_names, fitcfg, roows=No
183183
if level == "data":
184184
mean_sgn = ws.var(self.p_param_names["gauss_mean"])
185185
sigma_sgn = ws.var(self.p_param_names["gauss_sigma"])
186-
(sig, sig_err, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
186+
(sig, sig_err, _, _, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
187187
ws, res, pdfnames, param_names, mean_sgn, sigma_sgn
188188
)
189189

@@ -372,7 +372,7 @@ def fit(self):
372372
if level == "data":
373373
mean_sgn = roo_ws.var(self.p_param_names["gauss_mean"])
374374
sigma_sgn = roo_ws.var(self.p_param_names["gauss_sigma"])
375-
(sig, sig_err, _, _, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
375+
(sig, sig_err, _, _, _, _, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
376376
roo_ws, roo_res, self.p_pdfnames, self.p_param_names, mean_sgn, sigma_sgn
377377
)
378378

machine_learning_hep/analysis/analyzerdhadrons_mult.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def _roofit_mass(self, level, hist, ipt, pdfnames, param_names, fitcfg, roows=No
211211
if level == "data":
212212
mean_sgn = ws.var(self.p_param_names["gauss_mean"])
213213
sigma_sgn = ws.var(self.p_param_names["gauss_sigma"])
214-
(sig, sig_err, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
214+
(sig, sig_err, _, _, bkg, bkg_err, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
215215
ws, res, pdfnames, param_names, mean_sgn, sigma_sgn
216216
)
217217

@@ -344,7 +344,9 @@ def fit(self):
344344
)
345345
h_invmass = rfile.Get("hmass_" + suffix)
346346
# Rebin
347-
h_invmass.Rebin(self.p_rebin[ipt])
347+
#rebin = self.p_rebin[ibin2][ipt]
348+
rebin = self.p_rebin[ipt]
349+
h_invmass.Rebin(rebin)
348350
if h_invmass.GetEntries() < 100: # TODO: reconsider criterion
349351
self.logger.error(
350352
"Not enough entries to fit for %s, pt bin %d, mult bin %d", level, ipt, ibin2
@@ -427,7 +429,7 @@ def fit(self):
427429
if level == "data":
428430
mean_sgn = roo_ws.var(self.p_param_names["gauss_mean"])
429431
sigma_sgn = roo_ws.var(self.p_param_names["gauss_sigma"])
430-
(sig, sig_err, _, _, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
432+
(sig, sig_err, _, _, _, _, signif, signif_err, s_over_b, s_over_b_err) = calc_signif(
431433
roo_ws, roo_res, self.p_pdfnames, self.p_param_names, mean_sgn, sigma_sgn
432434
)
433435

@@ -575,7 +577,7 @@ def efficiency(self):
575577
h_sel_fd_sl.SetName("signal_loss_fd_mult%d" % imult)
576578
h_sel_fd_sl.Write()
577579

578-
legslFD.AddEntry(h_sel_fd_sl, legeffstring, "LEP")
580+
legslFD.AddEntry(h_sel_fd_sl, legeffFDstring, "LEP")
579581
h_sel_fd_sl.GetXaxis().SetTitle("#it{p}_{T} (GeV/#it{c})")
580582
h_sel_fd_sl.GetYaxis().SetTitle("Signal loss (feeddown) %s" % (self.p_latexnhadron))
581583
h_sel_fd_sl.SetMinimum(0.7)

machine_learning_hep/fitting/roofitter.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,24 @@ def fit_mass_new(
121121
# c.Update()
122122

123123
if level == "data" and USE_EXTMODEL and frame is not None:
124-
residuals = frame.residHist("data", "pdf_bkg")
124+
tmp_frame = m.frame()
125+
dh.plotOn(tmp_frame, ROOT.RooFit.Name("data"))
126+
127+
if (ws.pdf("refl") and ws.pdf("corr")):
128+
model.plotOn(
129+
tmp_frame,
130+
ROOT.RooFit.Components("bkg,refl,corr"),
131+
ROOT.RooFit.Name("bkg_total")
132+
)
133+
else:
134+
model.plotOn(
135+
tmp_frame,
136+
ROOT.RooFit.Components("bkg"),
137+
ROOT.RooFit.Name("bkg_total")
138+
)
139+
140+
residuals = tmp_frame.residHist("data", "bkg_total")
141+
125142
residual_frame = m.frame()
126143
residual_frame.addPlotable(residuals, "P")
127144

@@ -176,6 +193,8 @@ def calc_signif(roows, res, pdfnames, param_names, mean_sgn, sigma_sgn):
176193
if not USE_EXTMODEL:
177194
return (0., 0., 0., 0., 0., 0, 0, 0.)
178195
f_sig = roows.pdf(pdfnames["pdf_sig"])
196+
197+
# total signal under the fit function
179198
n_signal = res.floatParsFinal().find("n_signal").getVal()
180199
sigma_n_signal = res.floatParsFinal().find("n_signal").getError()
181200

@@ -197,6 +216,7 @@ def calc_signif(roows, res, pdfnames, param_names, mean_sgn, sigma_sgn):
197216
signal_integral = f_sig.createIntegral(massvar_set, norm_set, signal_range)
198217
bkg_integral = f_bkg.createIntegral(massvar_set, norm_set, signal_range)
199218

219+
# signal under the fit function in 3sigma
200220
n_signal_signal = signal_integral.getVal() * n_signal
201221
n_bkg_signal = bkg_integral.getVal() * n_bkg
202222

@@ -224,6 +244,8 @@ def calc_signif(roows, res, pdfnames, param_names, mean_sgn, sigma_sgn):
224244
)
225245

226246
return (
247+
n_signal,
248+
sigma_n_signal,
227249
n_signal_signal,
228250
sigma_n_signal_signal,
229251
n_bkg_signal,

0 commit comments

Comments
 (0)