/* What happens if you increase the systematic level? Do the distribution move? Why? What happens if you use unbinned datasets? Why? */ { 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("SUM::sb(nsig[50,0,120]*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"); // Create an example dataset (binned is fast..) RooDataHist* data = sbpdf->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.SetNumberOfToys(3000);myHybridCalc.SetGenerateBinned(true); HybridResult* myHybridResult = myHybridCalc.GetHypoTest(); // Plot! HybridPlot* myHybridPlot = myHybridResult->GetPlot("myHybridPlot","HybridCalculatorOriginal",50); myHybridPlot->Draw(); cout << " - CL_sb = " << myHybridResult->CLsplusb() << endl << " - CL_b = " << myHybridResult->CLb() << endl << " - CL_s = " << myHybridResult->CLs() << endl << " - significance of data = " << myHybridResult->Significance() << endl;}