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