17x = ROOT.RooRealVar(
"x",
"x", -5, 5)
18y = ROOT.RooRealVar(
"y",
"y", -5, 5)
19z = ROOT.RooRealVar(
"z",
"z", -5, 5)
22gx = ROOT.RooGaussian(
"gx",
"gx", x, 0.0, 1.0)
23gy = ROOT.RooGaussian(
"gy",
"gy", y, 0.0, 1.0)
24gz = ROOT.RooGaussian(
"gz",
"gz", z, 0.0, 1.0)
25sig = ROOT.RooProdPdf(
"sig",
"sig", [gx, gy, gz])
28px = ROOT.RooPolynomial(
"px",
"px", x, [-0.1, 0.004])
29py = ROOT.RooPolynomial(
"py",
"py", y, [0.1, -0.004])
30pz = ROOT.RooPolynomial(
"pz",
"pz", z)
31bkg = ROOT.RooProdPdf(
"bkg",
"bkg", [px, py, pz])
34fsig = ROOT.RooRealVar(
"fsig",
"signal fraction", 0.1, 0.0, 1.0)
35model = ROOT.RooAddPdf(
"model",
"model", [sig, bkg], [fsig])
37data = model.generate({x, y, z}, 20000)
43frame = x.frame(Title=
"Projection of 3D data and pdf on X", Bins=40)
51y.setRange(
"sigRegion", -1, 1)
52z.setRange(
"sigRegion", -1, 1)
55frame2 = x.frame(Title=
"Same projection on X in signal range of (Y,Z)", Bins=40)
61data.plotOn(frame2, CutRange=
"sigRegion")
64model.plotOn(frame2, ProjectionRange=
"sigRegion")
66c = ROOT.TCanvas(
"rf311_rangeplot",
"rf310_rangeplot", 800, 400)
69ROOT.gPad.SetLeftMargin(0.15)
70frame.GetYaxis().SetTitleOffset(1.4)
73ROOT.gPad.SetLeftMargin(0.15)
74frame2.GetYaxis().SetTitleOffset(1.4)
77c.SaveAs(
"rf311_rangeplot.png")