78 ConfInterval(
name), fBestFitParams(nullptr), fLikelihoodRatio(nullptr), fConfidenceLevel(0.95)
89 fBestFitParams(bestParams),
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;
223 if (!profilell)
return false;
229 std::unique_ptr<RooArgSet> partmp{profilell->
getVariables()};
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;
257 std::transform(minimType.begin(), minimType.end(), minimType.begin(), (
int(*)(
int)) tolower );
258 *minimType.begin() = toupper( *minimType.begin());
260 if (minimType !=
"Minuit" && minimType !=
"Minuit2") {
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;
306 lower = itrl->second;
307 upper = itru->second;
315 int iX = params.
index(¶m);
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;
332 err_level = err_level/2;
335 unsigned int ivarX = iX;
339 ret =
fMinimizer->GetMinosError(ivarX, elow, eup );
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;
374 int iX = params.
index(¶mX);
375 int iY = params.
index(¶mY);
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;
393 cont_level = cont_level/2;
396 unsigned int ncp = npoints;
397 unsigned int ivarX = iX;
398 unsigned int ivarY = iY;
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;
405 if (
int(ncp) < npoints) {
406 coutW(Minimization) <<
"LikelihoodInterval -Warning - Less points calculated in contours np = " << ncp <<
" / " << npoints << std::endl;
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-...
RooFit::OwningPtr< RooArgSet > getVariables(bool stripDisconnected=true) const
Return RooArgSet with all variables (tree leaf nodes of expression tree)
bool equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically-named contents.
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.
void setGlobalKillBelow(RooFit::MsgLevel level)
RooFit::MsgLevel globalKillBelow() const
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.