20 x = ROOT.RooRealVar(
"x",
"x", -10, 10)
23 a = ROOT.RooRealVar(
"a",
"a", 0.4, 0, 1)
24 b = ROOT.RooRealVar(
"b",
"b", 5)
25 c = ROOT.RooRealVar(
"c",
"c", -1, -10, 10)
26 effFunc = ROOT.RooFormulaVar(
27 "effFunc",
"(1-a)+a*cos((x-c)/b)", ROOT.RooArgList(a, b, c, x))
33 cut = ROOT.RooCategory(
"cut",
"cutr")
34 cut.defineType(
"accept", 1)
35 cut.defineType(
"reject", 0)
38 effPdf = ROOT.RooEfficiency(
"effPdf",
"effPdf", effFunc, cut,
"accept")
45 shapePdf = ROOT.RooPolynomial(
46 "shapePdf",
"shapePdf", x, ROOT.RooArgList(ROOT.RooFit.RooConst(-0.095)))
47 model = ROOT.RooProdPdf(
50 ROOT.RooArgSet(shapePdf),
51 ROOT.RooFit.Conditional(
52 ROOT.RooArgSet(effPdf),
56 data = model.generate(ROOT.RooArgSet(x, cut), 10000)
62 effPdf.fitTo(data, ROOT.RooFit.ConditionalObservables(ROOT.RooArgSet(x)))
68 frame1 = x.frame(ROOT.RooFit.Bins(
69 20), ROOT.RooFit.Title(
"Data (all, accepted)"))
73 ROOT.RooFit.Cut(
"cut==cut::accept"),
74 ROOT.RooFit.MarkerColor(
76 ROOT.RooFit.LineColor(
80 frame2 = x.frame(ROOT.RooFit.Bins(
81 20), ROOT.RooFit.Title(
"Fitted efficiency"))
82 data.plotOn(frame2, ROOT.RooFit.Efficiency(cut))
83 effFunc.plotOn(frame2, ROOT.RooFit.LineColor(ROOT.kRed))
86 ca = ROOT.TCanvas(
"rf701_efficiency",
"rf701_efficiency", 800, 400)
89 ROOT.gPad.SetLeftMargin(0.15)
90 frame1.GetYaxis().SetTitleOffset(1.6)
93 ROOT.gPad.SetLeftMargin(0.15)
94 frame2.GetYaxis().SetTitleOffset(1.4)
97 ca.SaveAs(
"rf701_efficiencyfit.png")