22 using namespace RooFit;
24 void rf501_simultaneouspdf()
30 RooRealVar x(
"x",
"x", -8, 8);
33 RooRealVar mean(
"mean",
"mean", 0, -8, 8);
34 RooRealVar sigma(
"sigma",
"sigma", 0.3, 0.1, 10);
35 RooGaussian gx(
"gx",
"gx", x, mean, sigma);
38 RooRealVar a0(
"a0",
"a0", -0.1, -1, 1);
39 RooRealVar a1(
"a1",
"a1", 0.004, -1, 1);
40 RooChebychev px(
"px",
"px", x, RooArgSet(a0, a1));
43 RooRealVar f(
"f",
"f", 0.2, 0., 1.);
44 RooAddPdf model(
"model",
"model", RooArgList(gx, px), f);
51 RooRealVar mean_ctl(
"mean_ctl",
"mean_ctl", -3, -8, 8);
52 RooGaussian gx_ctl(
"gx_ctl",
"gx_ctl", x, mean_ctl, sigma);
55 RooRealVar a0_ctl(
"a0_ctl",
"a0_ctl", -0.1, -1, 1);
56 RooRealVar a1_ctl(
"a1_ctl",
"a1_ctl", 0.5, -0.1, 1);
57 RooChebychev px_ctl(
"px_ctl",
"px_ctl", x, RooArgSet(a0_ctl, a1_ctl));
60 RooRealVar f_ctl(
"f_ctl",
"f_ctl", 0.5, 0., 1.);
61 RooAddPdf model_ctl(
"model_ctl",
"model_ctl", RooArgList(gx_ctl, px_ctl), f_ctl);
67 RooDataSet *data = model.generate(RooArgSet(x), 100);
68 RooDataSet *data_ctl = model_ctl.generate(RooArgSet(x), 2000);
74 RooCategory sample(
"sample",
"sample");
75 sample.defineType(
"physics");
76 sample.defineType(
"control");
79 RooDataSet combData(
"combData",
"combined data", x, Index(sample), Import(
"physics", *data),
80 Import(
"control", *data_ctl));
86 RooSimultaneous simPdf(
"simPdf",
"simultaneous pdf", sample);
89 simPdf.addPdf(model,
"physics");
90 simPdf.addPdf(model_ctl,
"control");
96 simPdf.fitTo(combData);
102 RooPlot *frame1 = x.frame(Bins(30), Title(
"Physics sample"));
105 combData.plotOn(frame1, Cut(
"sample==sample::physics"));
111 simPdf.plotOn(frame1, Slice(sample,
"physics"), ProjWData(sample, combData));
112 simPdf.plotOn(frame1, Slice(sample,
"physics"), Components(
"px"), ProjWData(sample, combData), LineStyle(kDashed));
115 RooPlot *frame2 = x.frame(Bins(30), Title(
"Control sample"));
116 combData.plotOn(frame2, Cut(
"sample==sample::control"));
117 simPdf.plotOn(frame2, Slice(sample,
"control"), ProjWData(sample, combData));
118 simPdf.plotOn(frame2, Slice(sample,
"control"), Components(
"px_ctl"), ProjWData(sample, combData),
121 TCanvas *c =
new TCanvas(
"rf501_simultaneouspdf",
"rf403_simultaneouspdf", 800, 400);
124 gPad->SetLeftMargin(0.15);
125 frame1->GetYaxis()->SetTitleOffset(1.4);
128 gPad->SetLeftMargin(0.15);
129 frame2->GetYaxis()->SetTitleOffset(1.4);