24x = ROOT.RooRealVar(
"x",
"x", -8, 8)
27mean = ROOT.RooRealVar(
"mean",
"mean", 0, -8, 8)
28sigma = ROOT.RooRealVar(
"sigma",
"sigma", 0.3, 0.1, 10)
29gx = ROOT.RooGaussian(
"gx",
"gx", x, mean, sigma)
32a0 = ROOT.RooRealVar(
"a0",
"a0", -0.1, -1, 1)
33a1 = ROOT.RooRealVar(
"a1",
"a1", 0.004, -1, 1)
34px = ROOT.RooChebychev(
"px",
"px", x, ROOT.RooArgList(a0, a1))
37f = ROOT.RooRealVar(
"f",
"f", 0.2, 0., 1.)
38model = ROOT.RooAddPdf(
39 "model",
"model", ROOT.RooArgList(gx, px), ROOT.RooArgList(f))
46mean_ctl = ROOT.RooRealVar(
"mean_ctl",
"mean_ctl", -3, -8, 8)
47gx_ctl = ROOT.RooGaussian(
"gx_ctl",
"gx_ctl", x, mean_ctl, sigma)
50a0_ctl = ROOT.RooRealVar(
"a0_ctl",
"a0_ctl", -0.1, -1, 1)
51a1_ctl = ROOT.RooRealVar(
"a1_ctl",
"a1_ctl", 0.5, -0.1, 1)
52px_ctl = ROOT.RooChebychev(
53 "px_ctl",
"px_ctl", x, ROOT.RooArgList(a0_ctl, a1_ctl))
56f_ctl = ROOT.RooRealVar(
"f_ctl",
"f_ctl", 0.5, 0., 1.)
57model_ctl = ROOT.RooAddPdf(
58 "model_ctl",
"model_ctl", ROOT.RooArgList(gx_ctl, px_ctl), ROOT.RooArgList(f_ctl))
64data = model.generate(ROOT.RooArgSet(x), 100)
65data_ctl = model_ctl.generate(ROOT.RooArgSet(x), 2000)
71sample = ROOT.RooCategory(
"sample",
"sample")
72sample.defineType(
"physics")
73sample.defineType(
"control")
76combData = ROOT.RooDataSet(
"combData",
"combined data", ROOT.RooArgSet(x), ROOT.RooFit.Index(
77 sample), ROOT.RooFit.Import(
"physics", data), ROOT.RooFit.Import(
"control", data_ctl))
83simPdf = ROOT.RooSimultaneous(
"simPdf",
"simultaneous pdf", sample)
87simPdf.addPdf(model,
"physics")
88simPdf.addPdf(model_ctl,
"control")
100frame1 = x.frame(ROOT.RooFit.Bins(30), ROOT.RooFit.Title(
"Physics sample"))
103combData.plotOn(frame1, ROOT.RooFit.Cut(
"sample==sample::physics"))
109simPdf.plotOn(frame1, ROOT.RooFit.Slice(sample,
"physics"),
110 ROOT.RooFit.ProjWData(ROOT.RooArgSet(sample), combData))
111simPdf.plotOn(frame1, ROOT.RooFit.Slice(sample,
"physics"), ROOT.RooFit.Components(
112 "px"), ROOT.RooFit.ProjWData(ROOT.RooArgSet(sample), combData), ROOT.RooFit.LineStyle(ROOT.kDashed))
115frame2 = x.frame(ROOT.RooFit.Bins(30), ROOT.RooFit.Title(
"Control sample"))
116combData.plotOn(frame2, ROOT.RooFit.Cut(
"sample==sample::control"))
117simPdf.plotOn(frame2, ROOT.RooFit.Slice(sample,
"control"),
118 ROOT.RooFit.ProjWData(ROOT.RooArgSet(sample), combData))
119simPdf.plotOn(frame2, ROOT.RooFit.Slice(sample,
"control"), ROOT.RooFit.Components(
120 "px_ctl"), ROOT.RooFit.ProjWData(ROOT.RooArgSet(sample), combData), ROOT.RooFit.LineStyle(ROOT.kDashed))
122c = ROOT.TCanvas(
"rf501_simultaneouspdf",
123 "rf501_simultaneouspdf", 800, 400)
126ROOT.gPad.SetLeftMargin(0.15)
127frame1.GetYaxis().SetTitleOffset(1.4)
130ROOT.gPad.SetLeftMargin(0.15)
131frame2.GetYaxis().SetTitleOffset(1.4)
134c.SaveAs(
"rf501_simultaneouspdf.png")