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)")