28 void HybridOriginalDemo(
int ntoys = 1000)
30 using namespace RooFit;
31 using namespace RooStats;
34 RooRandom::randomGenerator()->SetSeed(3007);
37 RooRealVar x(
"x",
"", -3, 3);
38 RooArgList observables(x);
41 RooGaussian sig_pdf(
"sig_pdf",
"", x, RooConst(0.0), RooConst(0.8));
42 RooRealVar sig_yield(
"sig_yield",
"", 20, 0, 300);
45 RooPolynomial bkg_pdf(
"bkg_pdf",
"", x, RooConst(0));
46 RooRealVar bkg_yield(
"bkg_yield",
"", 40, 0, 300);
47 RooExtendPdf bkg_ext_pdf(
"bkg_ext_pdf",
"", bkg_pdf, bkg_yield);
50 sig_yield.setConstant(kTRUE);
53 RooAddPdf tot_pdf(
"tot_pdf",
"", RooArgList(sig_pdf, bkg_pdf), RooArgList(sig_yield, bkg_yield));
57 RooGaussian bkg_yield_prior(
"bkg_yield_prior",
"", bkg_yield, RooConst(bkg_yield.getVal()), RooConst(10.));
59 RooArgSet nuisance_parameters(bkg_yield);
62 RooDataSet *data = tot_pdf.generate(observables, RooFit::Extended());
67 HybridCalculatorOriginal myHybridCalc(*data, tot_pdf, bkg_ext_pdf, &nuisance_parameters, &bkg_yield_prior);
70 myHybridCalc.SetTestStatistic(1);
73 myHybridCalc.SetNumberOfToys(ntoys);
74 myHybridCalc.UseNuisance(
true);
77 myHybridCalc.SetGenerateBinned(
false);
80 HybridResult *myHybridResult = myHybridCalc.GetHypoTest();
82 if (!myHybridResult) {
83 std::cerr <<
"\nError returned from Hypothesis test" << std::endl;
88 HybridPlot *myHybridPlot =
89 myHybridResult->GetPlot(
"myHybridPlot",
"Plot of results with HybridCalculatorOriginal", 100);
93 double clsb_data = myHybridResult->CLsplusb();
94 double clb_data = myHybridResult->CLb();
95 double cls_data = myHybridResult->CLs();
96 double data_significance = myHybridResult->Significance();
97 double min2lnQ_data = myHybridResult->GetTestStat_data();
100 double mean_sb_toys_test_stat = myHybridPlot->GetSBmean();
101 myHybridResult->SetDataTestStatistics(mean_sb_toys_test_stat);
102 double toys_significance = myHybridResult->Significance();
104 std::cout <<
"Completed HybridCalculatorOriginal example:\n";
105 std::cout <<
" - -2lnQ = " << min2lnQ_data << endl;
106 std::cout <<
" - CL_sb = " << clsb_data << std::endl;
107 std::cout <<
" - CL_b = " << clb_data << std::endl;
108 std::cout <<
" - CL_s = " << cls_data << std::endl;
109 std::cout <<
" - significance of data = " << data_significance << std::endl;
110 std::cout <<
" - mean significance of toys = " << toys_significance << std::endl;