23x = ROOT.RooRealVar(
"x", 
"x", -10, 10)
 
   26m = ROOT.RooRealVar(
"m", 
"m", 0, -10, 10)
 
   27s = ROOT.RooRealVar(
"s", 
"s", 2, 0.1, 10)
 
   28g = ROOT.RooGaussian(
"g", 
"g", x, m, s)
 
   31p = ROOT.RooPolynomial(
"p", 
"p", x)
 
   34f = ROOT.RooRealVar(
"f", 
"f", 0.4, 0.0, 1.0)
 
   35sum = ROOT.RooAddPdf(
"sum", 
"sum", [g, p], [f])
 
   38fconstraint = ROOT.RooGaussian(
"fconstraint", 
"fconstraint", f, ROOT.RooFit.RooConst(0.7), ROOT.RooFit.RooConst(0.1))
 
   41sumc = ROOT.RooProdPdf(
"sumc", 
"sum with constraint", [sum, fconstraint])
 
   47mcs = ROOT.RooMCStudy(sumc, {x}, Constrain={f}, Silence=
True, Binned=
True, FitOptions={
"PrintLevel": -1})
 
   52mcs.generateAndFit(500, 2000)
 
   55h_f_gen = mcs.fitParDataSet().createHistogram(
"f_gen", AutoBinning=40)
 
   58frame1 = mcs.plotParam(f, Bins=40)
 
   59frame1.SetTitle(
"Distribution of fitted f values")
 
   62frame2 = mcs.plotPull(f, Bins=40, FitGauss=
True)
 
   63frame1.SetTitle(
"Distribution of f pull values")
 
   65c = ROOT.TCanvas(
"rf804_mcstudy_constr", 
"rf804_mcstudy_constr", 1200, 400)
 
   68ROOT.gPad.SetLeftMargin(0.15)
 
   69h_f_gen.GetYaxis().SetTitleOffset(1.4)
 
   72ROOT.gPad.SetLeftMargin(0.15)
 
   73frame1.GetYaxis().SetTitleOffset(1.4)
 
   76ROOT.gPad.SetLeftMargin(0.15)
 
   77frame2.GetYaxis().SetTitleOffset(1.4)
 
   80c.SaveAs(
"rf804_mcstudy_constr.png")