%%cpp -d #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooAddPdf.h" #include "RooMinimizer.h" #include "TCanvas.h" #include "TAxis.h" #include "RooPlot.h" using namespace RooFit; RooRealVar x("x", "x", -20, 20); RooRealVar mean("mean", "mean of g1 and g2", 0, -10, 10); RooRealVar sigma_g1("sigma_g1", "width of g1", 3); RooGaussian g1("g1", "g1", x, mean, sigma_g1); RooRealVar sigma_g2("sigma_g2", "width of g2", 4, 3.0, 6.0); RooGaussian g2("g2", "g2", x, mean, sigma_g2); RooRealVar frac("frac", "frac", 0.5, 0.0, 1.0); RooAddPdf model("model", "model", RooArgList(g1, g2), frac); std::unique_ptr data{model.generate(x, 1000)}; std::unique_ptr nll{model.createNLL(*data, NumCPU(2))}; RooMinimizer(*nll).migrad(); RooPlot *frame1 = frac.frame(Bins(10), Range(0.01, 0.95), Title("LL and profileLL in frac")); nll->plotOn(frame1, ShiftToZero()); RooPlot *frame2 = sigma_g2.frame(Bins(10), Range(3.3, 5.0), Title("LL and profileLL in sigma_g2")); nll->plotOn(frame2, ShiftToZero()); std::unique_ptr pll_frac{nll->createProfile(frac)}; pll_frac->plotOn(frame1, LineColor(kRed)); frame1->SetMinimum(0); frame1->SetMaximum(3); std::unique_ptr pll_sigmag2{nll->createProfile(sigma_g2)}; pll_sigmag2->plotOn(frame2, LineColor(kRed)); frame2->SetMinimum(0); frame2->SetMaximum(3); TCanvas *c = new TCanvas("rf605_profilell", "rf605_profilell", 800, 400); c->Divide(2); c->cd(1); gPad->SetLeftMargin(0.15); frame1->GetYaxis()->SetTitleOffset(1.4); frame1->Draw(); c->cd(2); gPad->SetLeftMargin(0.15); frame2->GetYaxis()->SetTitleOffset(1.4); frame2->Draw(); %jsroot on gROOT->GetListOfCanvases()->Draw()