BatchMode gives different errors for fits to weighted data if SumW2Errors is active. Reproducer below.
# %%
import ROOT as r
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)")
_data = shp.generate(r.RooArgSet(x))
wFunc = ws.factory(f'FormulaVar::w("@0 * @0 + 10", {{{x.GetName()}}})')
w = _data.addColumn(wFunc)
data = r.RooDataSet(_data.GetName(), _data.GetTitle(), _data, _data.get(), "", w.GetName())
datahist = r.RooDataHist("datahist", "datahist", data.get(), data)
# %%
print("with BatchMode and with SumW2Error:")
yy = shp.fitTo(
datahist,
r.RooFit.Extended(),
r.RooFit.Save(),
r.RooFit.SumW2Error(True),
r.RooFit.Strategy(1),
r.RooFit.BatchMode(True),
r.RooFit.Minimizer("Minuit2", "migrad"),
)
print("without BatchMode and with SumW2Error:")
ny = shp.fitTo(
datahist,
r.RooFit.Extended(),
r.RooFit.Save(),
r.RooFit.SumW2Error(True),
r.RooFit.Strategy(1),
r.RooFit.BatchMode(False),
r.RooFit.Minimizer("Minuit2", "migrad"),
)
print("with BatchMode and without SumW2Error:")
yn = shp.fitTo(
datahist,
r.RooFit.Extended(),
r.RooFit.Save(),
r.RooFit.SumW2Error(False),
r.RooFit.Strategy(1),
r.RooFit.BatchMode(True),
r.RooFit.Minimizer("Minuit2", "migrad"),
)
print("without BatchMode and without SumW2Error:")
nn = shp.fitTo(
datahist,
r.RooFit.Extended(),
r.RooFit.Save(),
r.RooFit.SumW2Error(False),
r.RooFit.Strategy(1),
r.RooFit.BatchMode(False),
r.RooFit.Minimizer("Minuit2", "migrad"),
)
# %%
print("with BatchMode and with SumW2Error:")
yy.Print()
print("without BatchMode and with SumW2Error:")
ny.Print()
print("with BatchMode and without SumW2Error:")
yn.Print()
print("without BatchMode and without SumW2Error:")
nn.Print()
Relevant output:
with BatchMode and with SumW2Error:
RooFitResult: minimized FCN value: -4.42332e+06, estimated distance to minimum: 0.000130498
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
Nbkg 2.0000e+04 +/- 5.89e-04
Nsig 2.0000e+04 +/- 1.05e-03
c1 2.8927e-01 +/- 2.89e-03
mu -1.0000e+00 +/- 1.98e-07
s 5.0000e+00 +/- 1.34e-07
without BatchMode and with SumW2Error:
RooFitResult: minimized FCN value: -4.42332e+06, estimated distance to minimum: 1239.4
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
Nbkg 2.0000e+04 +/- 2.87e-08
Nsig 2.0000e+04 +/- 1.02e-07
c1 2.8928e-01 +/- 2.64e-02
mu -1.0000e+00 +/- 5.50e-10
s 5.0000e+00 +/- 6.94e-10
with BatchMode and without SumW2Error:
RooFitResult: minimized FCN value: -4.42332e+06, estimated distance to minimum: 1.66733e-07
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
Nbkg 2.0000e+04 +/- 3.13e-02
Nsig 2.0000e+04 +/- 4.24e-02
c1 2.8928e-01 +/- 2.89e-03
mu -1.0000e+00 +/- 1.27e-04
s 5.0000e+00 +/- 2.23e-05
without BatchMode and without SumW2Error:
RooFitResult: minimized FCN value: -4.42332e+06, estimated distance to minimum: 1.55437e-07
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
Nbkg 2.0000e+04 +/- 3.13e-02
Nsig 2.0000e+04 +/- 4.24e-02
c1 2.8928e-01 +/- 2.89e-03
mu -1.0000e+00 +/- 1.27e-04
s 5.0000e+00 +/- 2.23e-05