18 x = ROOT.RooRealVar(
"x",
"x", -5, 5)
19 y = ROOT.RooRealVar(
"y",
"y", -5, 5)
20 z = ROOT.RooRealVar(
"z",
"z", -5, 5)
23 gx = ROOT.RooGaussian(
24 "gx",
"gx", x, ROOT.RooFit.RooConst(0), ROOT.RooFit.RooConst(1))
25 gy = ROOT.RooGaussian(
26 "gy",
"gy", y, ROOT.RooFit.RooConst(0), ROOT.RooFit.RooConst(1))
27 gz = ROOT.RooGaussian(
28 "gz",
"gz", z, ROOT.RooFit.RooConst(0), ROOT.RooFit.RooConst(1))
29 sig = ROOT.RooProdPdf(
"sig",
"sig", ROOT.RooArgList(gx, gy, gz))
32 px = ROOT.RooPolynomial(
"px",
"px", x, ROOT.RooArgList(
33 ROOT.RooFit.RooConst(-0.1), ROOT.RooFit.RooConst(0.004)))
34 py = ROOT.RooPolynomial(
"py",
"py", y, ROOT.RooArgList(
35 ROOT.RooFit.RooConst(0.1), ROOT.RooFit.RooConst(-0.004)))
36 pz = ROOT.RooPolynomial(
"pz",
"pz", z)
37 bkg = ROOT.RooProdPdf(
"bkg",
"bkg", ROOT.RooArgList(px, py, pz))
40 fsig = ROOT.RooRealVar(
"fsig",
"signal fraction", 0.1, 0., 1.)
41 model = ROOT.RooAddPdf(
42 "model",
"model", ROOT.RooArgList(
43 sig, bkg), ROOT.RooArgList(fsig))
45 data = model.generate(ROOT.RooArgSet(x, y, z), 20000)
51 frame = x.frame(ROOT.RooFit.Title(
52 "Projection of 3D data and pdf on X"), ROOT.RooFit.Bins(40))
60 y.setRange(
"sigRegion", -1, 1)
61 z.setRange(
"sigRegion", -1, 1)
64 frame2 = x.frame(ROOT.RooFit.Title(
65 "Same projection on X in signal range of (Y,Z)"), ROOT.RooFit.Bins(40))
71 data.plotOn(frame2, ROOT.RooFit.CutRange(
"sigRegion"))
74 model.plotOn(frame2, ROOT.RooFit.ProjectionRange(
"sigRegion"))
76 c = ROOT.TCanvas(
"rf311_rangeplot",
"rf310_rangeplot", 800, 400)
79 ROOT.gPad.SetLeftMargin(0.15)
80 frame.GetYaxis().SetTitleOffset(1.4)
83 ROOT.gPad.SetLeftMargin(0.15)
84 frame2.GetYaxis().SetTitleOffset(1.4)
87 c.SaveAs(
"rf311_rangeplot.png")