87#include "RConfigure.h"
118 double likelihood = std::exp(-nll);
120 if (
fPrior) likelihood *= (*fPrior)(
x);
123 if (nCalls > 0 && nCalls % 1000 == 0) {
124 ooccoutD(
nullptr,Eval) <<
"Likelihood evaluation ncalls = " << nCalls
125 <<
" x0 " <<
x[0] <<
" nll = " << nll+
fOffset;
127 ooccoutD(
nullptr,Eval) <<
" likelihood " << likelihood
128 <<
" max Likelihood " <<
fMaxL << std::endl;
131 if (likelihood >
fMaxL ) {
133 if ( likelihood > 1.E10) {
134 ooccoutW(
nullptr,Eval) <<
"LikelihoodFunction::() WARNING - Huge likelihood value found for parameters ";
136 ooccoutW(
nullptr,Eval) <<
" x[" << i <<
" ] = " <<
x[i];
137 ooccoutW(
nullptr,Eval) <<
" nll = " << nll <<
" L = " << likelihood << std::endl;
149 return (*
this)(&tmp);
172 fXmin(bindParams.getSize() ),
173 fXmax(bindParams.getSize() ),
185 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorCdfFunction::Compute integral of posterior in nuisance and poi. "
186 <<
" nllMinimum is " << nllMinimum << std::endl;
188 std::vector<double> par(bindParams.
getSize());
189 for (
unsigned int i = 0; i <
fXmin.size(); ++i) {
194 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorFunction::Integrate" << var.
GetName()
195 <<
" in interval [ " <<
fXmin[i] <<
" , " <<
fXmax[i] <<
" ] " << std::endl;
205 if (
fError)
ooccoutE(
nullptr,NumIntegration) <<
"PosteriorFunction::Error computing normalization - norm = " <<
fNorm << std::endl;
246 ooccoutD(
nullptr,NumIntegration) <<
" cloning function .........." << std::endl;
275 fXmin[0] = itr->first;
276 normcdf0 = itr->second;
286 double normcdf = cdf/
fNorm;
288 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorCdfFunction: poi = [" <<
fXmin[0] <<
" , "
289 <<
fXmax[0] <<
"] integral = " << cdf <<
" +/- " << error
290 <<
" norm-integ = " << normcdf <<
" cdf(x) = " << normcdf+normcdf0
293 if (
TMath::IsNaN(cdf) || cdf > std::numeric_limits<double>::max()) {
294 ooccoutE(
nullptr,NumIntegration) <<
"PosteriorFunction::Error computing integral - cdf = "
299 if (cdf != 0 && error/cdf > 0.2 )
300 oocoutW(
nullptr,NumIntegration) <<
"PosteriorCdfFunction: integration error is larger than 20 % x0 = " <<
fXmin[0]
301 <<
" x = " <<
x <<
" cdf(x) = " << cdf <<
" +/- " << error << std::endl;
304 oocoutI(
nullptr,NumIntegration) <<
"PosteriorCdfFunction - integral of posterior = "
305 << cdf <<
" +/- " << error << std::endl;
318 if (normcdf > 1. + 3 * errnorm) {
319 oocoutW(
nullptr,NumIntegration) <<
"PosteriorCdfFunction: normalized cdf values is larger than 1"
320 <<
" x = " <<
x <<
" normcdf(x) = " << normcdf <<
" +/- " << error/
fNorm << std::endl;
353 norm = 1.0,
double nllOffset = 0,
int niter = 0) :
358 fXmin(nuisParams.getSize() ),
359 fXmax(nuisParams.getSize() ),
369 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorFunction::Evaluate the posterior function by integrating the nuisances: " << std::endl;
370 for (
unsigned int i = 0; i <
fXmin.size(); ++i) {
374 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorFunction::Integrate " << var.
GetName()
375 <<
" in interval [" <<
fXmin[i] <<
" , " <<
fXmax[i] <<
" ] " << std::endl;
377 if (
fXmin.size() == 1) {
385 else if (
fXmin.size() > 1) {
418 if (
fXmin.size() == 1) {
422 else if (
fXmin.size() > 1) {
431 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorFunction: POI value = "
432 <<
x <<
"\tf(x) = " <<
f <<
" +/- " << error
433 <<
" norm-f(x) = " <<
f/
fNorm
439 if (
f != 0 && error/
f > 0.2 )
440 ooccoutW(
nullptr,NumIntegration) <<
"PosteriorFunction::DoEval - Error from integration in "
441 <<
fXmin.size() <<
" Dim is larger than 20 % "
442 <<
"x = " <<
x <<
" p(x) = " <<
f <<
" +/- " << error << std::endl;
469 nllOffset = 0,
int niter = 0,
bool redoToys =
true ) :
487 ooccoutI(
nullptr,InputArguments) <<
"PosteriorFunctionFromToyMC::Evaluate the posterior function by randomizing the nuisances: niter " <<
fNumIterations << std::endl;
489 ooccoutI(
nullptr,InputArguments) <<
"PosteriorFunctionFromToyMC::Pdf used for randomizing the nuisance is " <<
fPdf->
GetName() << std::endl;
495 <<
" is not part of sampling pdf. "
496 <<
"they will be treated as constant " << std::endl;
501 ooccoutI(
nullptr,InputArguments) <<
"PosteriorFunctionFromToyMC::Generate nuisance toys only one time (for all POI points)" << std::endl;
510 ooccoutE(
nullptr,InputArguments) <<
"PosteriorFunctionFromToyMC - failed to generate nuisance parameters" << std::endl;
547 std::vector<double>
p(npar);
548 for (
int i = 0; i < npar; ++i) {
568 if( fval > std::numeric_limits<double>::max() ) {
569 ooccoutE(
nullptr,Eval) <<
"BayesianCalculator::EvalPosteriorFunctionFromToy : "
570 <<
"Likelihood evaluates to infinity " << std::endl;
571 ooccoutE(
nullptr,Eval) <<
"poi value = " <<
x << std::endl;
572 ooccoutE(
nullptr,Eval) <<
"Nuisance parameter values : ";
573 for (
int i = 0; i < npar; ++i)
575 ooccoutE(
nullptr,Eval) <<
" - return 0 " << std::endl;
581 ooccoutE(
nullptr,Eval) <<
"BayesianCalculator::EvalPosteriorFunctionFromToy : "
582 <<
"Likelihood is a NaN " << std::endl;
583 ooccoutE(
nullptr,Eval) <<
"poi value = " <<
x << std::endl;
584 ooccoutE(
nullptr,Eval) <<
"Nuisance parameter values : ";
585 for (
int i = 0; i < npar; ++i)
587 ooccoutE(
nullptr,Eval) <<
" - return 0 " << std::endl;
600 double dval2 = std::max( sum2/
double(
fNumIterations) - val*val, 0.0);
604 ooccoutD(
nullptr,NumIntegration) <<
"PosteriorFunctionFromToyMC: POI value = "
605 <<
x <<
"\tp(x) = " << val <<
" +/- " <<
fError << std::endl;
608 if (val != 0 &&
fError/val > 0.2 ) {
609 ooccoutW(
nullptr,NumIntegration) <<
"PosteriorFunctionFromToyMC::DoEval"
610 <<
" - Error in estimating posterior is larger than 20% ! "
611 <<
"x = " <<
x <<
" p(x) = " << val <<
" +/- " <<
fError << std::endl;
643 fProductPdf (0), fLikelihood (0), fIntegratedLikelihood (0), fPosteriorPdf(0),
644 fPosteriorFunction(0), fApproxPosterior(0),
645 fLower(0), fUpper(0),
647 fSize(0.05), fLeftSideFraction(0.5),
648 fBrfPrecision(0.00005),
651 fValidInterval(false)
669 fPriorPdf(&priorPdf),
671 fProductPdf (0), fLikelihood (0), fIntegratedLikelihood (0), fPosteriorPdf(0),
672 fPosteriorFunction(0), fApproxPosterior(0),
673 fLower(0), fUpper(0),
675 fSize(0.05), fLeftSideFraction(0.5),
676 fBrfPrecision(0.00005),
679 fValidInterval(false)
694 fPdf(model.GetPdf()),
695 fPriorPdf( model.GetPriorPdf()),
697 fProductPdf (0), fLikelihood (0), fIntegratedLikelihood (0), fPosteriorPdf(0),
698 fPosteriorFunction(0), fApproxPosterior(0),
699 fLower(0), fUpper(0),
701 fSize(0.05), fLeftSideFraction(0.5),
702 fBrfPrecision(0.00005),
705 fValidInterval(false)
783 coutE(InputArguments) <<
"BayesianCalculator::GetPosteriorPdf - missing pdf model" << std::endl;
787 coutE(InputArguments) <<
"BayesianCalculator::GetPosteriorPdf - missing parameter of interest" << std::endl;
791 coutE(InputArguments) <<
"BayesianCalculator::GetPosteriorPdf - current implementation works only on 1D intervals" << std::endl;
807 ccoutD(Eval) <<
"BayesianCalculator::GetPosteriorFunction : "
809 <<
" neglogLikelihood = " <<
fLogLike->getVal() << std::endl;
816 if ( nllVal > std::numeric_limits<double>::max() ) {
817 coutE(Eval) <<
"BayesianCalculator::GetPosteriorFunction : "
818 <<
" Negative log likelihood evaluates to infinity " << std::endl
819 <<
" Non-const Parameter values : ";
821 for (
int i = 0; i <
p.getSize(); ++i) {
825 ccoutE(Eval) << std::endl;
826 ccoutE(Eval) <<
"-- Perform a full likelihood fit of the model before or set more reasonable parameter values"
828 coutE(Eval) <<
"BayesianCalculator::GetPosteriorFunction : " <<
" cannot compute posterior function " << std::endl;
848 coutI(Eval) <<
"BayesianCalculator::GetPosteriorFunction : "
849 <<
" nll value " << nllVal <<
" poi value = " << poi->
getVal() << std::endl;
854 bool ret = minim.
Minimize(100,1.E-3,1.E-3);
858 coutI(Eval) <<
"BayesianCalculator::GetPosteriorFunction : minimum of NLL vs POI for POI = "
866 ccoutD(Eval) <<
"BayesianCalculator::GetPosteriorFunction : use ROOFIT integration "
923 bool doToysEveryIteration =
true;
929 ccoutI(Eval) <<
"BayesianCalculator::GetPosteriorFunction : no nuisance pdf is provided, try using global pdf (this will be slower)"
959 coutW(Eval) <<
"BayesianCalculator::GetPosteriorFunction : " <<
RooAbsReal::numEvalErrors() <<
" errors reported in evaluating log-likelihood function "
977 if (!plike)
return 0;
1023 if (!posterior)
return 0;
1032 if (!
plot)
return 0;
1040 plot->GetYaxis()->SetTitle(
"posterior function");
1105 coutW(Eval) <<
"BayesianCalculator::GetInterval - recomputing interval for the same CL and same model" << std::endl;
1109 coutE(Eval) <<
"BayesianCalculator::GetInterval - no parameter of interest is set " << std::endl;
1148 coutW(Eval) <<
"BayesianCalculator::GetInterval - computing integral from cdf failed - do a scan in "
1166 coutE(Eval) <<
"BayesianCalculator::GetInterval - cannot compute a valid interval - return a dummy [1,0] interval"
1170 coutI(Eval) <<
"BayesianCalculator::GetInterval - found a valid interval : [" <<
fLower <<
" , "
1171 <<
fUpper <<
" ]" << std::endl;
1176 interval->
SetTitle(
"SimpleInterval from BayesianCalculator");
1201 coutI(Eval) <<
"BayesianCalculator: Compute interval using RooFit: posteriorPdf + createCdf + RooBrentRootFinder " << std::endl;
1213 std::unique_ptr<RooAbsFunc> cdf_bind{cdf->bindVars(
fPOI,&
fPOI)};
1214 if (!cdf_bind)
return;
1219 double tmpVal = poi->
getVal();
1222 if (lowerCutOff > 0) {
1223 double y = lowerCutOff;
1229 if (upperCutOff < 1.0) {
1230 double y=upperCutOff;
1235 if (!ret)
coutE(Eval) <<
"BayesianCalculator::GetInterval "
1236 <<
"Error returned from Root finder, estimated interval is not fully correct"
1252 coutI(InputArguments) <<
"BayesianCalculator:GetInterval Compute the interval from the posterior cdf " << std::endl;
1257 coutE(InputArguments) <<
"BayesianCalculator::GetInterval() cannot make posterior Function " << std::endl;
1272 coutE(Eval) <<
"BayesianCalculator: Numerical error computing CDF integral - try a different method " << std::endl;
1280 ccoutD(Eval) <<
"BayesianCalculator::GetInterval - finding roots of posterior using RF " << rf.
Name()
1283 if (lowerCutOff > 0) {
1285 ccoutD(NumIntegration) <<
"Integrating posterior to get cdf and search lower limit at p =" << lowerCutOff << std::endl;
1288 coutW(Eval) <<
"BayesianCalculator: Numerical error integrating the CDF " << std::endl;
1290 coutE(NumIntegration) <<
"BayesianCalculator::GetInterval - Error from root finder when searching lower limit !" << std::endl;
1298 if (upperCutOff < 1.0) {
1300 ccoutD(NumIntegration) <<
"Integrating posterior to get cdf and search upper interval limit at p =" << upperCutOff << std::endl;
1303 coutW(Eval) <<
"BayesianCalculator: Numerical error integrating the CDF " << std::endl;
1305 coutE(NumIntegration) <<
"BayesianCalculator::GetInterval - Error from root finder when searching upper limit !" << std::endl;
1336 if (!posterior)
return;
1344 coutI(Eval) <<
"BayesianCalculator - scan posterior function in nbins = " << tmp->
GetNpx() << std::endl;
1371 ccoutD(Eval) <<
"BayesianCalculator: Compute interval from the approximate posterior " << std::endl;
1377 double limits[2] = {0,0};
1378 prob[0] = lowerCutOff;
1379 prob[1] = upperCutOff;
1391 coutI(Eval) <<
"BayesianCalculator - computing shortest interval with CL = " << 1.-
fSize << std::endl;
1404 std::vector<int>
index(
n);
1409 double actualCL = 0;
1414 for (
int i = 0; i <
n; ++i) {
1416 double p = bins[ idx] / norm;
1430 ccoutD(Eval) <<
"BayesianCalculator::ComputeShortestInterval - actual interval CL = "
1431 << actualCL <<
" difference from requested is " << (actualCL-(1.-
fSize))/
fSize*100. <<
"% "
1432 <<
" limits are [ " << lower <<
" , " <<
" upper ] " << std::endl;
1435 if (lower < upper) {
1441 if ( std::abs(actualCL-(1.-
fSize)) > 0.1*(1.-
fSize) )
1442 coutW(Eval) <<
"BayesianCalculator::ComputeShortestInterval - actual interval CL = "
1443 << actualCL <<
" differs more than 10% from desired CL value - must increase nbins "
1444 <<
n <<
" to an higher value " << std::endl;
1447 coutE(Eval) <<
"BayesianCalculator::ComputeShortestInterval " <<
n <<
" bins are not sufficient " << std::endl;
winID h TVirtualViewer3D TVirtualGLPainter p
winID h TVirtualViewer3D TVirtualGLPainter char TVirtualGLPainter plot
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
User class for performing function minimization.
void SetFunction(const ROOT::Math::IGenFunction &f, double xlow, double xup)
Sets function to be minimized.
bool Minimize(int maxIter, double absTol=1.E-8, double relTol=1.E-10) override
Find minimum position iterating until convergence specified by the absolute and relative tolerance or...
double FValMinimum() const override
Return function value at current estimate of the minimum.
Functor1D class for one-dimensional functions.
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
Numerical multi dimensional integration options.
void Print(std::ostream &os=std::cout) const
print all the options
void SetNCalls(unsigned int calls)
set maximum number of function calls
User class for performing multidimensional integration.
double Integral(const double *xmin, const double *xmax)
evaluate the integral with the previously given function between xmin[] and xmax[]
void SetFunction(Function &f, unsigned int dim)
set integration function using a generic function implementing the operator()(double *x) The dimensio...
static IntegrationMultiDim::Type GetType(const char *name)
static function to get the enumeration from a string
ROOT::Math::IntegratorMultiDimOptions Options() const
retrieve the options
double Error() const
return integration error
User Class for performing numerical integration of a function in one dimension.
static IntegrationOneDim::Type GetType(const char *name)
static function to get the enumeration from a string
User Class to find the Root of one dimensional functions.
const char * Name() const
Return the current and latest estimate of the lower value of the Root-finding interval (for bracketin...
bool Solve(Function &f, Derivative &d, double start, int maxIter=100, double absTol=1E-8, double relTol=1E-10)
Solve f(x) = 0, given a derivative d.
double Root() const
Return the current and latest estimate of the Root.
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
Storage_t const & get() const
Const access to the underlying stl container.
Int_t getSize() const
Return the number of elements in the collection.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
RooAbsArg * first() const
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsData is the common abstract base class for binned and unbinned datasets.
void resetNumCall() const
Reset function call counter.
Int_t numCall() const
Return number of function calls since last reset.
RooFit::OwningPtr< RooAbsReal > createCdf(const RooArgSet &iset, const RooArgSet &nset=RooArgSet())
Create a cumulative distribution function of this p.d.f in terms of the observables listed in iset.
RooFit::OwningPtr< RooDataSet > generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none())
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
virtual RooFit::OwningPtr< RooAbsReal > createNLL(RooAbsData &data, const RooLinkedList &cmdList={})
Construct representation of -log(L) of PDF with given dataset.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
RooPlot * frame(const RooCmdArg &arg1, 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()) const
Create a new RooPlot on the heap with a drawing frame initialized for this object,...
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooFit::OwningPtr< RooAbsReal > createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, 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()) const
Create an object that represents the integral of the function over one or more observables std::liste...
TF1 * asTF(const RooArgList &obs, const RooArgList &pars=RooArgList(), const RooArgSet &nset=RooArgSet()) const
Return a ROOT TF1,2,3 object bound to this RooAbsReal with given definition of observables and parame...
virtual RooPlot * plotOn(RooPlot *frame, 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(), const RooCmdArg &arg10=RooCmdArg()) const
Plot (project) PDF on specified frame.
static Int_t numEvalErrors()
Return the number of logged evaluation errors since the last clearing.
static void setEvalErrorLoggingMode(ErrorLoggingMode m)
Set evaluation error logging mode.
static void clearEvalErrorLog()
Clear the stack of evaluation error messages.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Implement the abstract 1-dimensional root finding interface using the Brent-Decker method.
void setTol(double tol)
Set convergence tolerance parameter.
bool findRoot(double &result, double xlo, double xhi, double value=0) const override
Do the root finding using the Brent-Decker method.
RooCFunction1Binding is a templated implementation of class RooAbsReal that binds generic C(++) funct...
Lightweight interface adaptor that exports a RooAbsPdf as a functor.
RooGenericPdf is a concrete implementation of a probability density function, which takes a RooArgLis...
A RooPlot is a plot frame and a container for graphics objects within that frame.
RooProdPdf is an efficient implementation of a product of PDFs of the form.
RooRealVar represents a variable that can be changed from the outside.
void setVal(double value) override
Set value of variable to 'value'.
BayesianCalculator is a concrete implementation of IntervalCalculator, providing the computation of a...
ROOT::Math::IGenFunction * fPosteriorFunction
function representing the posterior
RooAbsReal * fLikelihood
internal pointer to likelihood function
double fNLLMin
minimum value of Nll
int fNumIterations
number of iterations (when using ToyMC)
RooAbsPdf * GetPosteriorPdf() const
return posterior pdf (object is managed by the user)
RooAbsData * fData
data set
RooPlot * GetPosteriorPlot(bool norm=false, double precision=0.01) const
get the plot with option to get it normalized
int fNScanBins
number of bins to scan, if = -1 no scan is done (default)
void ClearAll() const
clear all cached pdf objects
void ComputeShortestInterval() const
compute the shortest interval from the histogram representing the posterior
RooAbsPdf * fNuisancePdf
nuisance pdf (needed when using nuisance sampling technique)
RooArgSet fConditionalObs
conditional observables
double fBrfPrecision
root finder precision
RooAbsReal * fIntegratedLikelihood
integrated likelihood function, i.e - unnormalized posterior function
void ApproximatePosterior() const
approximate posterior in nbins using a TF1 scan the poi values and evaluate the posterior at each poi...
double fSize
size used for getting the interval
RooArgSet fNuisanceParameters
nuisance parameters
double fLeftSideFraction
fraction of probability content on left side of interval
RooArgSet fGlobalObs
global observables
double GetMode() const
return the mode (most probable value of the posterior function)
RooAbsPdf * fPdf
model pdf (could contain the nuisance pdf as constraint term)
SimpleInterval * GetInterval() const override
compute the interval.
RooAbsPdf * fProductPdf
internal pointer to model * prior
TF1 * fApproxPosterior
TF1 representing the scanned posterior function.
RooAbsReal * GetPosteriorFunction() const
return posterior function (object is managed by the BayesianCalculator class)
void SetIntegrationType(const char *type)
set the integration type (possible type are) :
RooAbsPdf * fPosteriorPdf
normalized (on the poi) posterior pdf
double fUpper
upper interval bound
double fLower
computer lower interval bound
TH1 * GetPosteriorHistogram() const
return the approximate posterior as histogram (TH1 object). Note the object is managed by the Bayesia...
void ComputeIntervalFromApproxPosterior(double c1, double c2) const
compute the interval using the approximate posterior function
BayesianCalculator()
constructor
void SetModel(const ModelConfig &model) override
set the model via the ModelConfig
RooAbsPdf * fPriorPdf
prior pdf (typically for the POI)
std::unique_ptr< RooAbsReal > fLogLike
internal pointer to log likelihood function
double ConfidenceLevel() const override
Get the Confidence level for the test.
~BayesianCalculator() override
destructor
void ComputeIntervalUsingRooFit(double c1, double c2) const
internal function compute the interval using RooFit
void ComputeIntervalFromCdf(double c1, double c2) const
internal function compute the interval using Cdf integration
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
const RooArgSet * GetConditionalObservables() const
get RooArgSet for conditional observables (return nullptr if not existing)
const RooArgSet * GetGlobalObservables() const
get RooArgSet for global observables (return nullptr if not existing)
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return nullptr if not existing)
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return nullptr if not existing)
RooAbsPdf * GetPdf() const
get model PDF (return nullptr if pdf has not been specified or does not exist)
RooAbsPdf * GetPriorPdf() const
get parameters prior pdf (return nullptr if not existing)
PosteriorCdfFunction(RooAbsReal &nll, RooArgList &bindParams, RooAbsReal *prior=0, const char *integType=0, double nllMinimum=0)
std::shared_ptr< RooFunctor > fPriorFunc
PosteriorCdfFunction & operator=(const PosteriorCdfFunction &)
void SetOffset(double offset)
PosteriorCdfFunction(const PosteriorCdfFunction &rhs)
std::vector< double > fXmax
ROOT::Math::IntegratorMultiDim fIntegrator
double DoEval(double x) const override
implementation of the evaluation function. Must be implemented by derived classes
std::map< double, double > fNormCdfValues
std::vector< double > fXmin
ROOT::Math::IGenFunction * Clone() const override
Clone a function.
LikelihoodFunction fLikelihood
Posterior function obtaining sampling toy MC for the nuisance according to their pdf.
void GenerateToys() const
PosteriorFunctionFromToyMC(RooAbsReal &nll, RooAbsPdf &pdf, RooRealVar &poi, RooArgList &nuisParams, RooAbsReal *prior=0, double nllOffset=0, int niter=0, bool redoToys=true)
LikelihoodFunction fLikelihood
std::shared_ptr< RooFunctor > fPriorFunc
std::unique_ptr< RooDataSet > fGenParams
double DoEval(double x) const override
implementation of the evaluation function. Must be implemented by derived classes
ROOT::Math::IGenFunction * Clone() const override
Clone a function.
LikelihoodFunction fLikelihood
std::shared_ptr< RooFunctor > fPriorFunc
std::unique_ptr< ROOT::Math::IntegratorMultiDim > fIntegratorMultiDim
PosteriorFunction(RooAbsReal &nll, RooRealVar &poi, RooArgList &nuisParams, RooAbsReal *prior=0, const char *integType=0, double norm=1.0, double nllOffset=0, int niter=0)
ROOT::Math::IGenFunction * Clone() const override
Clone a function.
std::vector< double > fXmin
std::vector< double > fXmax
double DoEval(double x) const override
implementation of the evaluation function. Must be implemented by derived classes
std::unique_ptr< ROOT::Math::Integrator > fIntegratorOneDim
SimpleInterval is a concrete implementation of the ConfInterval interface.
Use TF1, TF2, TF3 functions as RooFit objects.
const Float_t * GetArray() const
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function Note that this histogram is managed ...
virtual void SetNpx(Int_t npx=100)
Set the number of points used to draw the function.
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum)
Compute Quantiles for density distribution of this function.
TObject * Clone(const char *newname=nullptr) const override
Make a complete copy of the underlying object.
virtual Int_t GetNpx() const
1-D histogram with a double per channel (see TH1 documentation)}
TH1 is the base class of all histogram classes in ROOT.
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
void SetName(const char *name) override
Change the name of this histogram.
virtual Double_t GetSumOfWeights() const
Return the sum of weights excluding under/overflows.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
void ToUpper()
Change string to upper case.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
RooCmdArg Constrain(const RooArgSet ¶ms)
RooCmdArg GlobalObservables(Args_t &&... argsOrArgSet)
RooCmdArg ConditionalObservables(Args_t &&... argsOrArgSet)
Create a RooCmdArg to declare conditional observables.
RooCmdArg FillColor(Color_t color)
RooCmdArg Precision(double prec)
RooCmdArg DrawOption(const char *opt)
RooCmdArg Range(const char *rangeName, bool adjustNorm=true)
Namespace for new Math classes and functions.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
Namespace for the RooStats classes.
void RemoveConstantParameters(RooArgSet *set)
const ROOT::Math::RootFinder::EType kRootFinderType
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)
Sort the n elements of the array a of generic templated type Element.
void SetPrior(RooFunctor *prior)
LikelihoodFunction(RooFunctor &f, RooFunctor *prior=0, double offset=0)
double operator()(const double *x) const
static uint64_t sum(uint64_t i)