{ using namespace RooStats; using namespace RooFit; double credLevel= .68; double size = 1.-credLevel; RooWorkspace w ("CMGWs","CMG workspace"); w.factory("Gaussian::signal(imass[110,120],sigmean[115],sigwidth[1])"); w.factory("Exponential::background(imass,exppar[-.1])"); w.factory("SUM::model(nsig[50,0.1,120]*signal,nbkg[1000,0,10000]*background)"); w.factory("Uniform::priorPOI(nsig)"); //prior1 w.factory("GenericPdf::priorPOI2('1/sqrt(@0)',nsig)"); //prior2 // Get the interesting objects RooAbsPdf* model = w.pdf("model"); RooRealVar* nsig = w.var("nsig"); // Create an example dataset (binned is fast..) RooDataHist* data = model->generateBinned(*w.var("imass")); // Model Config 1 ModelConfig modelConfig(new RooWorkspace()); modelConfig.SetPdf(*model); modelConfig.SetParametersOfInterest(RooArgSet(*nsig)); modelConfig.SetPriorPdf(*w.pdf("priorPOI")); cout << "\nBayesian Result using a Flat prior " << endl; BayesianCalculator bcalc(*(RooAbsData*)data,modelConfig); bcalc.SetTestSize(size); SimpleInterval* interval = bcalc.GetInterval(); double cl = bcalc.ConfidenceLevel(); cout << "* " << cl <<" CL central interval: [ " << interval->LowerLimit() << " - " << interval->UpperLimit() << " ]" << endl; RooPlot * plot = bcalc.GetPosteriorPlot(true); // Model Config 2 ModelConfig modelConfigsqrt(&w); modelConfigsqrt.SetPdf(*model); modelConfigsqrt.SetParametersOfInterest(RooArgSet(*nsig)); modelConfigsqrt.SetPriorPdf(*w.pdf("priorPOI2")); cout << "\nBayesian Result using a 1/sqrt prior " << endl; BayesianCalculator bcalcsqrt(*(RooAbsData*)data,modelConfigsqrt); bcalcsqrt.SetTestSize(size); interval = bcalcsqrt.GetInterval(); cl = bcalc.ConfidenceLevel(); cout << "* " << cl <<" CL central interval: [ " << interval->LowerLimit() << " - " << interval->UpperLimit() << " ]" << endl; RooPlot * plotsqrt = bcalcsqrt.GetPosteriorPlot(true); TCanvas* c1=new TCanvas("BCR","Bayesian Calculator Result",800,400); c1->Divide(2,1); c1->cd(1);plot->Draw(); c1->cd(2);plotsqrt->Draw(); }