{ using namespace RooFit;using namespace RooStats; RooWorkspace w("CMGWs","CMG workspace"); w.factory("Gaussian::sonly_simple(imass[110,120],sigmean[115,105,120],sigwidth[1])"); w.factory("ExtendPdf::bonly(Exponential::bonly_simple(imass,exppar[-.1]),nbkg[1000,0,10000])"); w.factory("prod::sigyield(nsig[50],r[1,0,10])"); w.factory("SUM::sb(sigyield*sonly_simple,nbkg*bonly_simple)"); w.factory("Gaussian::nbkgConstraint(nbkg,1000,100)"); // 10% background uncertainty w.factory("set::nuisanceParameters(nbkg)"); RooAbsPdf* sbpdf = w.pdf("sb"); RooAbsPdf* bonlypdf = w.pdf("bonly"); RooAbsPdf* prior = w.pdf("nbkgConstraint"); RooArgSet* nuisanceParameters = w.set("nuisanceParameters"); RooRealVar* r = w.var("r"); // Create an example dataset (binned is fast..) RooDataHist* data = bonlypdf->generateBinned(*w.var("imass"),ExpectedData()); // Model Config sb AND BONLY ModelConfig modelConfigsb(&w);modelConfigsb.SetPdf(*sbpdf); modelConfigsb.SetNuisanceParameters(*nuisanceParameters); modelConfigsb.SetPriorPdf(*prior); ModelConfig modelConfigb(&w);modelConfigb.SetPdf(*bonlypdf); modelConfigb.SetNuisanceParameters(*nuisanceParameters); modelConfigb.SetPriorPdf(*prior); // Configure and run the hybrid calculator HybridCalculatorOriginal myHybridCalc(*data, modelConfigsb, modelConfigb); myHybridCalc.SetGenerateBinned(true);myHybridCalc.SetNumberOfToys(3000); // run the hypothesis-test invertion HypoTestInverter myInverter(myHybridCalc,*r); myInverter.SetTestSize(0.10);myInverter.UseCLs(true); myInverter.RunFixedScan(5, 1.3, 1.7); // 5points HypoTestInverterResult* results = myInverter.GetInterval(); HypoTestInverterPlot myInverterPlot("myInverterPlot","",results); TGraphErrors* gr1 = myInverterPlot.MakePlot(); gr1->SetLineWidth(2);gr1->SetFillColor(kBlue);gr1->SetFillStyle(3002); gr1->SetTitle("HypotestInverter;R;CL_{s}"); gr1->Draw("ALPE3"); double ulError = results->UpperLimitEstimatedError(); double upperLimit = results->UpperLimit(); std::cout << "The computed upper limit is: " << upperLimit << std::endl; std::cout << "an estimated error on this upper limit is: " << ulError << std::endl; }