sig = ROOT.RooGaussian("sig", "sig", m, mean, sigma) bkgr = ROOT.RooExponential("bkgr", "bkgr", m, exp_par) model_gen = ROOT.RooAddPdf("model_gen", "model_gen", ROOT.RooArgList(sig, bkgr), ROOT.RooArgList(fraction)) model = ROOT.RooAddPdf('model', 'model', ROOT.RooArgList(sig, bkgr), ROOT.RooArgList(N_sig, N_bkgr)) # Sample N_GEN events data = model_gen.generate(ROOT.RooArgSet(m), N_GEN) data = data.reduce( f'{m.GetName()} > {m.getMin()} && {m.GetName()} < {m.getMax()}') # Fit and plot'em all DE = DataExplorer(label='test', data=data, model=model) fit_results = DE.fit(minos=True) c = ROOT.TCanvas() frame = DE.plot_on_frame() frame.Draw() # Make pull distribution for the fit c_pull = ROOT.TCanvas() frame_pull = DE.plot_pull() frame_pull.Draw() # Plot likelihood profiles c_ll = ROOT.TCanvas() frame_ll = DE.plot_ll(poi=N_sig) frame_ll.Draw() # Check whether there is bias in the fit