78 ConfInterval(
name), fBestFitParams(nullptr), fLikelihoodRatio(nullptr), fConfidenceLevel(0.95)
91 fConfidenceLevel(0.95)
116 std::cout <<
"parameters don't match" << std::endl;
123 std::cout <<
"likelihood ratio not set" << std::endl;
136 std::cout <<
"The likelihood ratio is < 0, indicates a bad minimum or numerical precision problems. Will return true" << std::endl;
169 std::cout <<
"size is wrong, parameters don't match" << std::endl;
173 std::cout <<
"size is ok, but parameters don't match" << std::endl;
237 for (std::size_t i = 0; i < params.
size(); ++i) {
250 if (config.useLikelihoodOffset) {
251 ccoutI(InputArguments) <<
"LikelihoodInterval: using nll offset - set all RooAbsReal to hide the offset " << std::endl;
261 ccoutE(InputArguments) <<
minimType <<
" is wrong type of minimizer for getting interval limits or contours - must use Minuit or Minuit2" << std::endl;
271 fMinFunc = std::static_pointer_cast<ROOT::Math::IMultiGenFunction>(
278 for (
unsigned int i = 0; i <
fMinFunc->NDim(); ++i) {
280 fMinimizer->SetLimitedVariable( i,
v.GetName(),
v.getVal(),
v.getError(),
v.getMin(),
v.getMax() );
285 ccoutE(Minimization) <<
"Error: Minimization failed " << std::endl;
317 ccoutE(InputArguments) <<
"Error - invalid parameter " << param.
GetName() <<
" specified for finding the interval limits " << std::endl;
324 ccoutE(Eval) <<
"Error returned from minimization of likelihood function - cannot find interval limits " << std::endl;
344 ccoutW(Minimization) <<
"Warning: lower value for " << param.
GetName() <<
" is at limit " <<
lower << std::endl;
350 ccoutW(Minimization) <<
"Warning: upper value for " << param.
GetName() <<
" is at limit " <<
upper << std::endl;
376 if (
iX < 0 ||
iY < 0) {
377 coutE(InputArguments) <<
"LikelihoodInterval - Error - invalid parameters specified for finding the contours; parX = " <<
paramX.GetName()
378 <<
" parY = " <<
paramY.GetName() << std::endl;
385 coutE(Eval) <<
"LikelihoodInterval - Error returned creating minimizer for likelihood function - cannot find contour points " << std::endl;
399 coutI(Minimization) <<
"LikelihoodInterval - Finding the contour of " <<
paramX.GetName() <<
" ( " <<
ivarX <<
" ) and " <<
paramY.GetName() <<
" ( " <<
ivarY <<
" ) " << std::endl;
402 coutE(Minimization) <<
"LikelihoodInterval - Error finding contour for parameters " <<
paramX.GetName() <<
" and " <<
paramY.GetName() << std::endl;
406 coutW(Minimization) <<
"LikelihoodInterval -Warning - Less points calculated in contours np = " <<
ncp <<
" / " <<
npoints << std::endl;
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
static ROOT::Math::Minimizer * CreateMinimizer(const std::string &minimizerType="", const std::string &algoType="")
static method to create the corresponding Minimizer given the string Supported Minimizers types are: ...
static const std::string & DefaultMinimizerType()
Template class to wrap any C++ callable object implementing operator() (const double * x) in a multi-...
const_iterator begin() const
const_iterator end() const
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expression tree)
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
Storage_t::size_type size() const
RooAbsArg * find(const char *name) const
Find object with given name in list.
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
Abstract base class for objects that represent a real value and implements functionality common to al...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
static void setHideOffset(bool flag)
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
static RooMsgService & instance()
Return reference to singleton instance.
Implements the profile likelihood estimator for a given likelihood and set of parameters of interest.
Variable that can be changed from the outside.
void setVal(double value) override
Set value of variable to 'value'.
void setError(double value)
ConfInterval is an interface class for a generic interval in the RooStats framework.
LikelihoodInterval is a concrete implementation of the RooStats::ConfInterval interface.
double ConfidenceLevel() const override
return confidence level
double UpperLimit(const RooRealVar ¶m)
return the upper bound of the interval on a given parameter
Int_t GetContourPoints(const RooRealVar ¶mX, const RooRealVar ¶mY, double *x, double *y, Int_t npoints=30)
return the 2D-contour points for the given subset of parameters by default make the contour using 30 ...
void ResetLimits()
reset the cached limit values
bool CreateMinimizer()
internal function to create the minimizer for finding the contours
RooArgSet * GetParameters() const override
return a cloned list of parameters of interest. User manages the return object
RooArgSet * fBestFitParams
snapshot of the model parameters with best fit value (managed internally)
RooArgSet fParameters
parameters of interest for this interval
~LikelihoodInterval() override
destructor
double LowerLimit(const RooRealVar ¶m)
return the lower bound of the interval on a given parameter
std::shared_ptr< RooFunctor > fFunctor
! transient pointer to functor class used by the minimizer
bool FindLimits(const RooRealVar ¶m, double &lower, double &upper)
find both lower and upper interval boundaries for a given parameter return false if the bounds have n...
double fConfidenceLevel
Requested confidence level (eg. 0.95 for 95% CL)
std::map< std::string, double > fLowerLimits
map with cached lower bound values
bool IsInInterval(const RooArgSet &) const override
check if given point is in the interval
bool CheckParameters(const RooArgSet &) const override
check if parameters are correct (i.e. they are the POI of this interval)
RooAbsReal * fLikelihoodRatio
likelihood ratio function used to make contours (managed internally)
std::map< std::string, double > fUpperLimits
map with cached upper bound values
std::shared_ptr< ROOT::Math::Minimizer > fMinimizer
! transient pointer to minimizer class used to find limits and contour
LikelihoodInterval(const char *name=nullptr)
default constructor
std::shared_ptr< ROOT::Math::IMultiGenFunction > fMinFunc
! transient pointer to the minimization function
static bool UseStaticMinuit(bool on=true)
static function to switch on/off usage of static global TMinuit instance (gMinuit) By default it is u...
const char * GetName() const override
Returns name of object.
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.
Namespace for the RooStats classes.
void SetParameters(const RooArgSet *desiredVals, RooArgSet *paramsToChange)
void RemoveConstantParameters(RooArgSet *set)
RooStatsConfig & GetGlobalRooStatsConfig()
Retrieve the config object which can be used to set flags for things like offsetting the likelihood o...
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
Double_t ChisquareQuantile(Double_t p, Double_t ndf)
Evaluate the quantiles of the chi-squared probability distribution function.