%%cpp -d #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooChebychev.h" #include "RooAddPdf.h" #include "RooMCStudy.h" #include "RooPlot.h" #include "TCanvas.h" #include "TAxis.h" #include "TH2.h" #include "RooFitResult.h" #include "TStyle.h" #include "TDirectory.h" using namespace RooFit; RooRealVar x("x", "x", 0, 10); x.setBins(40); RooRealVar mean("mean", "mean of gaussians", 5, 0, 10); RooRealVar sigma1("sigma1", "width of gaussians", 0.5); RooRealVar sigma2("sigma2", "width of gaussians", 1); RooGaussian sig1("sig1", "Signal component 1", x, mean, sigma1); RooGaussian sig2("sig2", "Signal component 2", x, mean, sigma2); RooRealVar a0("a0", "a0", 0.5, 0., 1.); RooRealVar a1("a1", "a1", -0.2, -1, 1.); RooChebychev bkg("bkg", "Background", x, RooArgSet(a0, a1)); RooRealVar sig1frac("sig1frac", "fraction of component 1 in signal", 0.8, 0., 1.); RooAddPdf sig("sig", "Signal", RooArgList(sig1, sig2), sig1frac); RooRealVar nbkg("nbkg", "number of background events,", 150, 0, 1000); RooRealVar nsig("nsig", "number of signal events", 150, 0, 1000); RooAddPdf model("model", "g1+g2+a", RooArgList(bkg, sig), RooArgList(nbkg, nsig)); RooMCStudy *mcstudy = new RooMCStudy(model, x, Binned(true), Silence(), Extended(), FitOptions(Save(true), PrintEvalErrors(0))); mcstudy->generateAndFit(1000); RooPlot *frame1 = mcstudy->plotParam(mean, Bins(40)); RooPlot *frame2 = mcstudy->plotError(mean, Bins(40)); RooPlot *frame3 = mcstudy->plotPull(mean, Bins(40), FitGauss(true)); RooPlot *frame4 = mcstudy->plotNLL(Bins(40)); TH1 *hh_cor_a0_s1f = mcstudy->fitParDataSet().createHistogram("hh", a1, YVar(sig1frac)); TH1 *hh_cor_a0_a1 = mcstudy->fitParDataSet().createHistogram("hh", a0, YVar(a1)); TH2 *corrHist000 = mcstudy->fitResult(0)->correlationHist("c000"); TH2 *corrHist127 = mcstudy->fitResult(127)->correlationHist("c127"); TH2 *corrHist953 = mcstudy->fitResult(953)->correlationHist("c953"); gStyle->SetOptStat(0); TCanvas *c = new TCanvas("rf801_mcstudy", "rf801_mcstudy", 900, 900); c->Divide(3, 3); 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(); c->cd(3); gPad->SetLeftMargin(0.15); frame3->GetYaxis()->SetTitleOffset(1.4); frame3->Draw(); c->cd(4); gPad->SetLeftMargin(0.15); frame4->GetYaxis()->SetTitleOffset(1.4); frame4->Draw(); c->cd(5); gPad->SetLeftMargin(0.15); hh_cor_a0_s1f->GetYaxis()->SetTitleOffset(1.4); hh_cor_a0_s1f->Draw("box"); c->cd(6); gPad->SetLeftMargin(0.15); hh_cor_a0_a1->GetYaxis()->SetTitleOffset(1.4); hh_cor_a0_a1->Draw("box"); c->cd(7); gPad->SetLeftMargin(0.15); corrHist000->GetYaxis()->SetTitleOffset(1.4); corrHist000->Draw("colz"); c->cd(8); gPad->SetLeftMargin(0.15); corrHist127->GetYaxis()->SetTitleOffset(1.4); corrHist127->Draw("colz"); c->cd(9); gPad->SetLeftMargin(0.15); corrHist953->GetYaxis()->SetTitleOffset(1.4); corrHist953->Draw("colz"); gDirectory->Add(mcstudy); %jsroot on gROOT->GetListOfCanvases()->Draw()