11from __future__
import print_function
19x = ROOT.RooRealVar(
"x",
"x", -10, 10)
21m = ROOT.RooRealVar(
"m",
"m", 0, -10, 10)
22s = ROOT.RooRealVar(
"s",
"s", 2, 0.1, 10)
23gauss = ROOT.RooGaussian(
"gauss",
"gauss(x,m,s)", x, m, s)
26poly = ROOT.RooPolynomial(
"poly",
"poly(x)", x)
29f = ROOT.RooRealVar(
"f",
"f", 0.5, 0., 1.)
30model = ROOT.RooAddPdf(
39d = model.generate(ROOT.RooArgSet(x), 50)
46fconstraint = ROOT.RooGaussian(
50 ROOT.RooFit.RooConst(0.8),
51 ROOT.RooFit.RooConst(0.1))
61modelc = ROOT.RooProdPdf(
62 "modelc",
"model with constraint", ROOT.RooArgList(model, fconstraint))
65r1 = model.fitTo(d, ROOT.RooFit.Save())
70 ROOT.RooFit.Constrain(
79fconstext = ROOT.RooGaussian(
"fconstext",
"fconstext", f, ROOT.RooFit.RooConst(
80 0.2), ROOT.RooFit.RooConst(0.1))
83r3 = model.fitTo(d, ROOT.RooFit.ExternalConstraints(
84 ROOT.RooArgSet(fconstext)), ROOT.RooFit.Save())
87print(
"fit result without constraint (data generated at f=0.5)")
89print(
"fit result with internal constraint (data generated at f=0.5, is f=0.8+/-0.2)")
91print(
"fit result with (another) external constraint (data generated at f=0.5, is f=0.2+/-0.1)")