5050)
5151from machine_learning_hep .hf_pt_spectrum import hf_pt_spectrum
5252from machine_learning_hep .logger import get_logger
53- from machine_learning_hep .utils .hist import get_dim , project_hist
53+ from machine_learning_hep .utils .hist import get_dim
5454
5555
5656# pylint: disable=too-few-public-methods, too-many-instance-attributes, too-many-statements, fixme
@@ -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
@@ -320,7 +320,7 @@ def fit(self):
320320 for ipt in range (len (self .lpt_finbinmin )):
321321 lpt_probcutfin [ipt ] = self .lpt_probcutfin_tmp [self .bin_matching [ipt ]]
322322 self .logger .debug ("fitting %s - %i - %i" , level , ipt , ibin2 )
323- roows = self .roows .get (ipt )
323+ roows = self .roows .get (( ibin2 , ipt ) )
324324 if self .mltype == "MultiClassification" :
325325 suffix = "%s%d_%d_%.2f%.2f%s_%.2f_%.2f" % (
326326 self .v_var_binning ,
@@ -342,9 +342,11 @@ def fit(self):
342342 self .lvar2_binmin [ibin2 ],
343343 self .lvar2_binmax [ibin2 ],
344344 )
345- h_invmass = rfile .Get ("hmass " + suffix )
345+ 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
@@ -378,12 +380,14 @@ def fit(self):
378380 break
379381 self .logger .debug ("Using fit config for %i: %s" , ipt , fitcfg )
380382 if datasel := fitcfg .get ("datasel" ):
381- h = rfile .Get (f"h_mass-pthf_{ datasel } " )
382- h_invmass = project_hist (h , [0 ], {1 : (ipt + 1 , ipt + 1 )})
383+ h_invmass = rfile .Get (f"hmass_{ datasel } _{ suffix } " )
383384
384385 for fixpar in fitcfg .get ("fix_params" , []):
385386 if roows .var (fixpar ):
386387 roows .var (fixpar ).setConstant (True )
388+ for par in fitcfg .get ("free_params" , []):
389+ if roows .var (par ):
390+ roows .var (par ).setConstant (False )
387391 if h_invmass .GetEntries () == 0 :
388392 continue
389393
@@ -405,8 +409,8 @@ def fit(self):
405409 )
406410 # if level == 'mc':
407411 # roo_ws.Print()
408- self .roo_ws [ level ][ ipt ] = roo_ws
409- self .roows [ ipt ] = roo_ws
412+ self .roows [( ibin2 , ipt ) ] = roo_ws . Clone ()
413+ self .roo_ws [( level , ibin2 , ipt ) ] = roo_ws . Clone ()
410414 if roo_res .status () == 0 :
411415 if level in ("data" , "mc_sig" ):
412416 self .fit_mean [level ][ipt ] = roo_ws .var (self .p_param_names ["gauss_mean" ]).getValV ()
@@ -425,7 +429,7 @@ def fit(self):
425429 if level == "data" :
426430 mean_sgn = roo_ws .var (self .p_param_names ["gauss_mean" ])
427431 sigma_sgn = roo_ws .var (self .p_param_names ["gauss_sigma" ])
428- (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 (
429433 roo_ws , roo_res , self .p_pdfnames , self .p_param_names , mean_sgn , sigma_sgn
430434 )
431435
@@ -573,7 +577,7 @@ def efficiency(self):
573577 h_sel_fd_sl .SetName ("signal_loss_fd_mult%d" % imult )
574578 h_sel_fd_sl .Write ()
575579
576- legslFD .AddEntry (h_sel_fd_sl , legeffstring , "LEP" )
580+ legslFD .AddEntry (h_sel_fd_sl , legeffFDstring , "LEP" )
577581 h_sel_fd_sl .GetXaxis ().SetTitle ("#it{p}_{T} (GeV/#it{c})" )
578582 h_sel_fd_sl .GetYaxis ().SetTitle ("Signal loss (feeddown) %s" % (self .p_latexnhadron ))
579583 h_sel_fd_sl .SetMinimum (0.7 )
0 commit comments