25 using namespace RooFit;
27 RooDataSet *makeFakeDataXY();
29 void rf303_conditional()
35 RooRealVar x(
"x",
"x", -10, 10);
36 RooRealVar y(
"y",
"y", -10, 10);
39 RooRealVar a0(
"a0",
"a0", -0.5, -5, 5);
40 RooRealVar a1(
"a1",
"a1", -0.5, -1, 1);
41 RooPolyVar fy(
"fy",
"fy", y, RooArgSet(a0, a1));
44 RooRealVar sigma(
"sigma",
"width of gaussian", 0.5, 0.1, 2.0);
45 RooGaussian model(
"model",
"Gaussian with shifting mean", x, fy, sigma);
48 RooDataSet *expDataXY = makeFakeDataXY();
54 RooDataSet *expDataY = (RooDataSet *)expDataXY->reduce(y);
57 RooDataSet *data = model.generate(x, ProtoData(*expDataY));
63 model.fitTo(*expDataXY, ConditionalObservables(y));
69 RooPlot *xframe = x.frame();
70 expDataXY->plotOn(xframe);
71 model.plotOn(xframe, ProjWData(*expDataY));
74 RooAbsData *binnedDataY = expDataY->binnedClone();
75 model.plotOn(xframe, ProjWData(*binnedDataY), LineColor(kCyan), LineStyle(kDotted));
78 ((RooRealVar *)expDataY->get()->find(
"y"))->setBins(5);
79 RooAbsData *binnedDataY2 = expDataY->binnedClone();
80 model.plotOn(xframe, ProjWData(*binnedDataY2), LineColor(kRed));
83 new TCanvas(
"rf303_conditional",
"rf303_conditional", 600, 460);
84 gPad->SetLeftMargin(0.15);
85 xframe->GetYaxis()->SetTitleOffset(1.2);
89 RooDataSet *makeFakeDataXY()
91 RooRealVar x(
"x",
"x", -10, 10);
92 RooRealVar y(
"y",
"y", -10, 10);
93 RooArgSet coord(x, y);
95 RooDataSet *d =
new RooDataSet(
"d",
"d", RooArgSet(x, y));
97 for (
int i = 0; i < 10000; i++) {
98 Double_t tmpy = gRandom->Gaus(0, 10);
99 Double_t tmpx = gRandom->Gaus(0.5 * tmpy, 1);
100 if (fabs(tmpy) < 10 && fabs(tmpx) < 10) {