21x = ROOT.RooRealVar(
"x",
"x", -8, 8)
24mean = ROOT.RooRealVar(
"mean",
"mean", 0, -8, 8)
25sigma = ROOT.RooRealVar(
"sigma",
"sigma", 0.3, 0.1, 10)
26gx = ROOT.RooGaussian(
"gx",
"gx", x, mean, sigma)
29a0 = ROOT.RooRealVar(
"a0",
"a0", -0.1, -1, 1)
30a1 = ROOT.RooRealVar(
"a1",
"a1", 0.004, -1, 1)
31px = ROOT.RooChebychev(
"px",
"px", x, [a0, a1])
34f = ROOT.RooRealVar(
"f",
"f", 0.2, 0.0, 1.0)
35model = ROOT.RooAddPdf(
"model",
"model", [gx, px], [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(
"px_ctl",
"px_ctl", x, [a0_ctl, a1_ctl])
51f_ctl = ROOT.RooRealVar(
"f_ctl",
"f_ctl", 0.5, 0.0, 1.0)
52model_ctl = ROOT.RooAddPdf(
"model_ctl",
"model_ctl", [gx_ctl, px_ctl], [f_ctl])
58data = model.generate({x}, 100)
59data_ctl = model_ctl.generate({x}, 2000)
65sample = ROOT.RooCategory(
"sample",
"sample")
66sample.defineType(
"physics")
67sample.defineType(
"control")
70combData = ROOT.RooDataSet(
75 Import={
"physics": data,
"control": data_ctl},
83simPdf = ROOT.RooSimultaneous(
"simPdf",
"simultaneous pdf", {
"physics": model,
"control": model_ctl}, sample)
89fitResult = simPdf.fitTo(combData, PrintLevel=-1, Save=
True)
96frame1 = x.frame(Bins=30, Title=
"Physics sample")
99combData.plotOn(frame1, Cut=
"sample==sample::physics")
107simPdf.plotOn(frame1, Slice=(sample,
"physics"), ProjWData=(sample, combData))
108simPdf.plotOn(frame1, Slice=(sample,
"physics"), Components=
"px", ProjWData=(sample, combData), LineStyle=
"--")
111frame2 = x.frame(Bins=30, Title=
"Control sample")
112combData.plotOn(frame2, Cut=
"sample==sample::control")
113simPdf.plotOn(frame2, Slice=(sample,
"control"), ProjWData=(sample, combData))
114simPdf.plotOn(frame2, Slice=(sample,
"control"), Components=
"px_ctl", ProjWData=(sample, combData), LineStyle=
"--")
116c = ROOT.TCanvas(
"rf501_simultaneouspdf",
"rf501_simultaneouspdf", 800, 400)
119ROOT.gPad.SetLeftMargin(0.15)
120frame1.GetYaxis().SetTitleOffset(1.4)
123ROOT.gPad.SetLeftMargin(0.15)
124frame2.GetYaxis().SetTitleOffset(1.4)
127c.SaveAs(
"rf501_simultaneouspdf.png")