15from __future__
import print_function
23x = ROOT.RooRealVar(
"x",
"x", -10, 10)
25m = ROOT.RooRealVar(
"m",
"m", 0, -10, 10)
26s = ROOT.RooRealVar(
"s",
"s", 2, 0.1, 10)
27gauss = ROOT.RooGaussian(
"gauss",
"gauss(x,m,s)", x, m, s)
30poly = ROOT.RooPolynomial(
"poly",
"poly(x)", x)
33f = ROOT.RooRealVar(
"f",
"f", 0.5, 0., 1.)
34model = ROOT.RooAddPdf(
"model",
"model", ROOT.RooArgList(gauss, poly), ROOT.RooArgList(f))
37d = model.generate(ROOT.RooArgSet(x), 50)
44fconstraint = ROOT.RooGaussian(
45 "fconstraint",
"fconstraint", f, ROOT.RooFit.RooConst(0.8), ROOT.RooFit.RooConst(0.1))
55modelc = ROOT.RooProdPdf(
56 "modelc",
"model with constraint", ROOT.RooArgList(model, fconstraint))
59r1 = model.fitTo(d, ROOT.RooFit.Save())
62r2 = modelc.fitTo(d, ROOT.RooFit.Constrain(ROOT.RooArgSet(f)), ROOT.RooFit.Save())
69fconstext = ROOT.RooGaussian(
"fconstext",
"fconstext", f, ROOT.RooFit.RooConst(
70 0.2), ROOT.RooFit.RooConst(0.1))
73r3 = model.fitTo(d, ROOT.RooFit.ExternalConstraints(
74 ROOT.RooArgSet(fconstext)), ROOT.RooFit.Save())
77print(
"fit result without constraint (data generated at f=0.5)")
79print(
"fit result with internal constraint (data generated at f=0.5, is f=0.8+/-0.2)")
81print(
"fit result with (another) external constraint (data generated at f=0.5, is f=0.2+/-0.1)")