void clsExample() { // first, the simple case: no binning TConfidenceLevel* cl_1bin = TLimit::ComputeLimit(16.0,71.7,70,500000); cl_1bin->Draw(); std::cout << "Statistics: " << cl_1bin->GetStatistic() << std::endl; std::cout << "Expected CLs: " << cl_1bin->GetExpectedCLs_b() << std::endl; std::cout << "Observed CLb, CLsb, CLs: " << cl_1bin->CLb() << " " << cl_1bin->CLsb() << " " << cl_1bin->CLs() << std::endl; // the conclusion here is that one cannot exclude the signal at 95%CL, even with the small downward fluctuation. // then with histograms new TCanvas; TH1F* signal = new TH1F("signal","signal",5,0,5); TH1F* bkg = new TH1F("bkg","bkg",5,0,5); TH1F* data = new TH1F("data","data",5,0,5); signal->SetBinContent(1,1.8); signal->SetBinContent(2,4.0); signal->SetBinContent(3,5.5); signal->SetBinContent(4,4.0); signal->SetBinContent(5,0.7); bkg->SetBinContent(1,26.1) ; bkg->SetBinContent(2,27.9) ; bkg->SetBinContent(3,14.0) ; bkg->SetBinContent(4,3.4) ; bkg->SetBinContent(5,0.3) ; data->SetBinContent(1,24) ; data->SetBinContent(2,30) ; data->SetBinContent(3,13) ; data->SetBinContent(4,3) ; data->SetBinContent(5,0) ; bkg->SetFillColor(kBlue); signal->SetFillColor(kRed); data->SetMarkerStyle(29); data->SetMarkerSize(1.5); THStack* stack = new THStack("simulations","simulations"); stack->Add(bkg); stack->Add(signal); stack->Draw(); data->Draw("same,P"); TLimitDataSource input(signal,bkg,data); TConfidenceLevel* cl_histo = TLimit::ComputeLimit(&input,500000); cl_histo->CLs(); cl_histo->GetExpectedCLs_b(); new TCanvas; cl_histo->Draw(); std::cout << "Statistics: " << cl_histo->GetStatistic() << std::endl; std::cout << "Expected CLs: " << cl_histo->GetExpectedCLs_b() << std::endl; std::cout << "Observed CLb, CLsb, CLs: " << cl_histo->CLb() << " " << cl_histo->CLsb() << " " << cl_histo->CLs() << std::endl; }