48struct BayesianNumericalOptions {
50 double confLevel = 0.95 ;
51 TString integrationType =
"";
55 bool scanPosterior =
false;
56 bool plotPosterior =
false;
60 double nSigmaNuisance = -1;
64BayesianNumericalOptions optBayes;
66void StandardBayesianNumericalDemo(
const char* infile =
"",
67 const char* workspaceName =
"combined",
68 const char* modelConfigName =
"ModelConfig",
69 const char* dataName =
"obsData") {
72 double confLevel = optBayes.confLevel;
73 TString integrationType = optBayes.integrationType;
74 int nToys = optBayes.nToys;
75 bool scanPosterior = optBayes.scanPosterior;
76 bool plotPosterior = optBayes.plotPosterior;
77 int nScanPoints = optBayes.nScanPoints;
78 int intervalType = optBayes.intervalType;
79 int maxPOI = optBayes.maxPOI;
80 double nSigmaNuisance = optBayes.nSigmaNuisance;
88 const char* filename =
"";
89 if (!strcmp(infile,
"")) {
90 filename =
"results/example_combined_GaussExample_model.root";
95 cout <<
"HistFactory file cannot be generated on Windows - exit" << endl;
99 cout <<
"will run standard hist2workspace example"<<endl;
100 gROOT->ProcessLine(
".! prepareHistFactory .");
101 gROOT->ProcessLine(
".! hist2workspace config/example.xml");
102 cout <<
"\n\n---------------------"<<endl;
103 cout <<
"Done creating example input"<<endl;
104 cout <<
"---------------------\n\n"<<endl;
116 cout <<
"StandardRooStatsDemoMacro: Input file " << filename <<
" is not found" << endl;
128 cout <<
"workspace not found" << endl;
141 cout <<
"data or ModelConfig was not found" <<endl;
160 if (nSigmaNuisance > 0) {
168 for (
int i = 0; i < nuisPar.getSize(); ++i) {
171 v->setMin(
TMath::Max(
v->getMin(),
v->getVal() - nSigmaNuisance *
v->getError() ) );
172 v->setMax(
TMath::Min(
v->getMax(),
v->getVal() + nSigmaNuisance *
v->getError() ) );
173 std::cout <<
"setting interval for nuisance " <<
v->GetName() <<
" : [ " <<
v->getMin() <<
" , " <<
v->getMax() <<
" ]" << std::endl;
179 bayesianCalc.SetConfidenceLevel(confLevel);
183 if (intervalType == 0) bayesianCalc.SetShortestInterval();
184 if (intervalType == 1) bayesianCalc.SetLeftSideTailFraction(0.5);
185 if (intervalType == 2) bayesianCalc.SetLeftSideTailFraction(0.);
187 if (!integrationType.IsNull() ) {
188 bayesianCalc.SetIntegrationType(integrationType);
189 bayesianCalc.SetNumIters(nToys);
193 if (integrationType.Contains(
"TOYMC") ) {
195 cout <<
"using TOYMC integration: make nuisance pdf from the model " << std::endl;
197 bayesianCalc.ForceNuisancePdf(*nuisPdf);
198 scanPosterior =
true;
203 bayesianCalc.SetScanOfPosterior(nScanPoints);
206 if (maxPOI != -999 && maxPOI > poi->
getMin())
213 cout <<
"\n>>>> RESULT : " << confLevel*100 <<
"% interval on " << poi->
GetName()<<
" is : ["<<
218 if (!plotPosterior)
return;
229 cout <<
"\nDrawing plot of posterior function....." << endl;
232 bayesianCalc.SetScanOfPosterior(nScanPoints);
234 RooPlot * plot = bayesianCalc.GetPosteriorPlot();
R__EXTERN TSystem * gSystem
static int DefaultPrintLevel()
static const std::string & DefaultMinimizerType()
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
RooAbsArg * first() const
RooAbsData is the common abstract base class for binned and unbinned datasets.
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
virtual RooFitResult * fitTo(RooAbsData &data, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none())
Fit PDF to given dataset.
virtual Double_t getMin(const char *name=0) const
static void setEvalErrorLoggingMode(ErrorLoggingMode m)
Set evaluation error logging mode.
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
A RooPlot is a plot frame and a container for graphics objects within that frame.
virtual void Draw(Option_t *options=0)
Draw this plot and all of the elements it contains.
RooRealVar represents a fundamental (non-derived) real valued object.
void setMax(const char *name, Double_t value)
Set maximum of name range to given value.
BayesianCalculator is a concrete implementation of IntervalCalculator, providing the computation of a...
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
virtual void SetPriorPdf(const RooAbsPdf &pdf)
Set the Prior Pdf, add to the the workspace if not already there.
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return NULL if not existing)
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return NULL if not existing)
RooAbsPdf * GetPdf() const
get model PDF (return NULL if pdf has not been specified or does not exist)
SimpleInterval is a concrete implementation of the ConfInterval interface.
virtual Double_t UpperLimit()
virtual Double_t LowerLimit()
The RooWorkspace is a persistable container for RooFit projects.
RooAbsData * data(const char *name) const
Retrieve dataset (binned or unbinned) with given name. A null pointer is returned if not found.
void Print(Option_t *opts=0) const
Print contents of the workspace.
Bool_t import(const RooAbsArg &arg, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg())
Import a RooAbsArg object, e.g.
TObject * obj(const char *name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name)
RooAbsPdf * pdf(const char *name) const
Retrieve p.d.f (RooAbsPdf) with given name. A null pointer is returned if not found.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose, Int_t netopt=0)
Create / open a file.
virtual const char * GetName() const
Returns name of object.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
RooCmdArg Hesse(Bool_t flag=kTRUE)
RooCmdArg Save(Bool_t flag=kTRUE)
RooCmdArg PrintLevel(Int_t code)
RooCmdArg Minimizer(const char *type, const char *alg=0)
@(#)root/roostats:$Id$ Author: George Lewis, Kyle Cranmer
RooAbsPdf * MakeNuisancePdf(RooAbsPdf &pdf, const RooArgSet &observables, const char *name)
Short_t Max(Short_t a, Short_t b)
Short_t Min(Short_t a, Short_t b)