%%cpp -d #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooChebychev.h" #include "RooAddPdf.h" #include "RooMCStudy.h" #include "RooRandomizeParamMCSModule.h" #include "RooDLLSignificanceMCSModule.h" #include "RooPlot.h" #include "TCanvas.h" #include "TAxis.h" #include "TH1.h" #include "TDirectory.h" using namespace RooFit; RooRealVar mjjj("mjjj", "m(3jet) (GeV)", 100, 85., 350.); RooRealVar mtop("mtop", "m(top)", 162); RooRealVar wtop("wtop", "m(top) resolution", 15.2); RooGaussian sig("sig", "top signal", mjjj, mtop, wtop); RooRealVar c0("c0", "Chebychev coefficient 0", -0.846, -1., 1.); RooRealVar c1("c1", "Chebychev coefficient 1", 0.112, -1., 1.); RooRealVar c2("c2", "Chebychev coefficient 2", 0.076, -1., 1.); RooChebychev bkg("bkg", "combinatorial background", mjjj, RooArgList(c0, c1, c2)); RooRealVar nsig("nsig", "number of signal events", 53, 0, 1e3); RooRealVar nbkg("nbkg", "number of background events", 103, 0, 5e3); RooAddPdf model("model", "model", RooArgList(sig, bkg), RooArgList(nsig, nbkg)); RooMCStudy *mcs = new RooMCStudy(model, mjjj, Binned(), Silence(), Extended(true), FitOptions(Extended(true), PrintEvalErrors(-1))); RooRandomizeParamMCSModule randModule; randModule.sampleSumUniform(RooArgSet(nsig, nbkg), 50, 500); mcs->addModule(randModule); RooDLLSignificanceMCSModule sigModule(nsig, 0); mcs->addModule(sigModule); mcs->generateAndFit(500); TH1 *dll_vs_ngen = mcs->fitParDataSet().createHistogram("ngen,dll_nullhypo_nsig", AutoBinning(40), AutoBinning(40)); TH1 *z_vs_ngen = mcs->fitParDataSet().createHistogram("ngen,significance_nullhypo_nsig", AutoBinning(40), AutoBinning(40)); TH1 *errnsig_vs_ngen = mcs->fitParDataSet().createHistogram("ngen,nsigerr", AutoBinning(40), AutoBinning(40)); TH1 *errnsig_vs_nsig = mcs->fitParDataSet().createHistogram("nsig,nsigerr", AutoBinning(40), AutoBinning(40)); TCanvas *c = new TCanvas("rf803_mcstudy_addons2", "rf802_mcstudy_addons2", 800, 800); c->Divide(2, 2); c->cd(1); gPad->SetLeftMargin(0.15); dll_vs_ngen->GetYaxis()->SetTitleOffset(1.6); dll_vs_ngen->Draw("box"); c->cd(2); gPad->SetLeftMargin(0.15); z_vs_ngen->GetYaxis()->SetTitleOffset(1.6); z_vs_ngen->Draw("box"); c->cd(3); gPad->SetLeftMargin(0.15); errnsig_vs_ngen->GetYaxis()->SetTitleOffset(1.6); errnsig_vs_ngen->Draw("box"); c->cd(4); gPad->SetLeftMargin(0.15); errnsig_vs_nsig->GetYaxis()->SetTitleOffset(1.6); errnsig_vs_nsig->Draw("box"); gDirectory->Add(mcs); %jsroot on gROOT->GetListOfCanvases()->Draw()