-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[RF] Problem running weighted binned fit in batch mode #9118
Copy link
Copy link
Closed
Description
Running a weighted batch fit in Batch mode on an unweighted data set results in wrong errors du to a wrong Hessian computed the second time.
Here is the code reproducing the problem:
import ROOT as r
c1 = r.TCanvas()
def fit(sumw2 = False, batchmode = False, binned = False, minimizer = "Minuit2", printLevel = 0 ):
if (batchmode) :
print("running in batchmode")
if (sumw2) :
print("using weight correction")
r.RooRandom.randomGenerator().SetSeed(4357)
ws = r.RooWorkspace("workspace")
x = ws.factory("x[-10, 10]")
sig = ws.factory("Gaussian::sig(x, mu[-1, 1], s[0.1, 5])")
bkg = ws.factory("Chebychev::bkg(x, {c1[0.1, -1, 1]})")
shp = ws.factory("SUM::shp(Nsig[0, 20000] * sig, Nbkg[0, 20000] * bkg)")
if (binned) :
data = shp.generateBinned(r.RooArgSet(x))
else :
data = shp.generate(r.RooArgSet(x))
data.Print()
ws.Import(data)
res1 = shp.fitTo(
data,
r.RooFit.Extended(),
r.RooFit.Save(),
r.RooFit.SumW2Error(sumw2),
r.RooFit.Strategy(1),
r.RooFit.BatchMode(batchmode),
r.RooFit.Minimizer(minimizer),
r.RooFit.PrintLevel(printLevel)
)
res1.Print()
pl = x.frame()
data.plotOn(pl)
shp.plotOn(pl)
pl.Draw()
c1.SaveAs("fit.png")
fit(1,1,1,"Minuit",2) # you can see second covariance matrix is completely wrong
This was reported in https://root-forum.cern.ch/t/sumw2error-gives-unexpected-results-with-unweighted-datasets-batchmode/47206
Reactions are currently unavailable