%%cpp -d #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooPolyVar.h" #include "RooProdPdf.h" #include "RooPlot.h" #include "TCanvas.h" #include "TAxis.h" #include "TH1.h" using namespace RooFit; RooRealVar x("x", "x", -5, 5); RooRealVar y("y", "y", -5, 5); RooRealVar a0("a0", "a0", -0.5, -5, 5); RooRealVar a1("a1", "a1", -0.5, -1, 1); RooPolyVar fy("fy", "fy", y, RooArgSet(a0, a1)); RooRealVar sigmax("sigma", "width of gaussian", 0.5); RooGaussian gaussx("gaussx", "Gaussian in x with shifting mean in y", x, fy, sigmax); RooGaussian gaussy("gaussy", "Gaussian in y", y, 0.0, 3.0); RooProdPdf model("model", "gaussx(x|y)*gaussy(y)", gaussy, Conditional(gaussx, x)); std::unique_ptr data{model.generate({x, y}, 10000)}; RooPlot *xframe = x.frame(); data->plotOn(xframe); model.plotOn(xframe); RooPlot *yframe = y.frame(); data->plotOn(yframe); model.plotOn(yframe); TH1 *hh_model = model.createHistogram("hh_model", x, Binning(50), YVar(y, Binning(50))); hh_model->SetLineColor(kBlue); TCanvas *c = new TCanvas("rf305_condcorrprod", "rf05_condcorrprod", 1200, 400); c->Divide(3); c->cd(1); gPad->SetLeftMargin(0.15); xframe->GetYaxis()->SetTitleOffset(1.6); xframe->Draw(); c->cd(2); gPad->SetLeftMargin(0.15); yframe->GetYaxis()->SetTitleOffset(1.6); yframe->Draw(); c->cd(3); gPad->SetLeftMargin(0.20); hh_model->GetZaxis()->SetTitleOffset(2.5); hh_model->Draw("surf"); gROOT->GetListOfCanvases()->Draw()