20x = ROOT.RooRealVar(
"x",
"x", -8, 8)
23mean = ROOT.RooRealVar(
"mean",
"mean", 0, -8, 8)
24sigma = ROOT.RooRealVar(
"sigma",
"sigma", 0.3, 0.1, 10)
25gx = ROOT.RooGaussian(
"gx",
"gx", x, mean, sigma)
28a0 = ROOT.RooRealVar(
"a0",
"a0", -0.1, -1, 1)
29a1 = ROOT.RooRealVar(
"a1",
"a1", 0.004, -1, 1)
30px = ROOT.RooChebychev(
"px",
"px", x, ROOT.RooArgList(a0, a1))
33f = ROOT.RooRealVar(
"f",
"f", 0.2, 0., 1.)
34model = ROOT.RooAddPdf(
35 "model",
"model", ROOT.RooArgList(gx, px), ROOT.RooArgList(f))
42mean_ctl = ROOT.RooRealVar(
"mean_ctl",
"mean_ctl", -3, -8, 8)
43gx_ctl = ROOT.RooGaussian(
"gx_ctl",
"gx_ctl", x, mean_ctl, sigma)
46a0_ctl = ROOT.RooRealVar(
"a0_ctl",
"a0_ctl", -0.1, -1, 1)
47a1_ctl = ROOT.RooRealVar(
"a1_ctl",
"a1_ctl", 0.5, -0.1, 1)
48px_ctl = ROOT.RooChebychev(
49 "px_ctl",
"px_ctl", x, ROOT.RooArgList(a0_ctl, a1_ctl))
52f_ctl = ROOT.RooRealVar(
"f_ctl",
"f_ctl", 0.5, 0., 1.)
53model_ctl = ROOT.RooAddPdf(
59 ROOT.RooArgList(f_ctl))
65data = model.generate(ROOT.RooArgSet(x), 100)
66data_ctl = model_ctl.generate(ROOT.RooArgSet(x), 2000)
72sample = ROOT.RooCategory(
"sample",
"sample")
73sample.defineType(
"physics")
74sample.defineType(
"control")
77combData = ROOT.RooDataSet(
81 ROOT.RooFit.Index(sample),
93simPdf = ROOT.RooSimultaneous(
"simPdf",
"simultaneous pdf", sample)
97simPdf.addPdf(model,
"physics")
98simPdf.addPdf(model_ctl,
"control")
104simPdf.fitTo(combData)
110frame1 = x.frame(ROOT.RooFit.Bins(30), ROOT.RooFit.Title(
"Physics sample"))
113combData.plotOn(frame1, ROOT.RooFit.Cut(
"sample==sample::physics"))
121sampleSet = ROOT.RooArgSet(sample)
122simPdf.plotOn(frame1, ROOT.RooFit.Slice(sample,
"physics"), ROOT.RooFit.Components(
123 "px"), ROOT.RooFit.ProjWData(sampleSet, combData), ROOT.RooFit.LineStyle(ROOT.kDashed))
126frame2 = x.frame(ROOT.RooFit.Bins(30), ROOT.RooFit.Title(
"Control sample"))
127combData.plotOn(frame2, ROOT.RooFit.Cut(
"sample==sample::control"))
128simPdf.plotOn(frame2, ROOT.RooFit.Slice(sample,
"control"),
129 ROOT.RooFit.ProjWData(sampleSet, combData))
130simPdf.plotOn(frame2, ROOT.RooFit.Slice(sample,
"control"), ROOT.RooFit.Components(
131 "px_ctl"), ROOT.RooFit.ProjWData(sampleSet, combData), ROOT.RooFit.LineStyle(ROOT.kDashed))
133c = ROOT.TCanvas(
"rf501_simultaneouspdf",
134 "rf501_simultaneouspdf", 800, 400)
137ROOT.gPad.SetLeftMargin(0.15)
138frame1.GetYaxis().SetTitleOffset(1.4)
141ROOT.gPad.SetLeftMargin(0.15)
142frame2.GetYaxis().SetTitleOffset(1.4)
145c.SaveAs(
"rf501_simultaneouspdf.png")