21 #ifndef RooStats_LikelihoodInterval
61 ConfInterval(name), fBestFitParams(0), fLikelihoodRatio(0), fConfidenceLevel(0.95)
72 fBestFitParams(bestParams),
74 fConfidenceLevel(0.95)
99 std::cout <<
"parameters don't match" << std::endl;
106 std::cout <<
"likelihood ratio not set" << std::endl;
119 std::cout <<
"The likelihood ratio is < 0, indicates a bad minimum or numerical precision problems. Will return true" << std::endl;
152 std::cout <<
"size is wrong, parameters don't match" << std::endl;
156 std::cout <<
"size is ok, but parameters don't match" << std::endl;
206 if (!profilell)
return false;
221 for (
int i = 0; i < params.
getSize(); ++i) {
233 ccoutI(
InputArguments) <<
"LikelihoodInterval: using nll offset - set all RooAbsReal to hide the offset " << std::endl;
239 std::transform(minimType.begin(), minimType.end(), minimType.begin(), (int(*)(int)) tolower );
240 *minimType.begin() = toupper( *minimType.begin());
242 if (minimType !=
"Minuit" && minimType !=
"Minuit2") {
243 ccoutE(
InputArguments) << minimType <<
" is wrong type of minimizer for getting interval limits or contours - must use Minuit or Minuit2" << std::endl;
259 for (
unsigned int i = 0; i <
fMinFunc->NDim(); ++i) {
287 lower = itrl->second;
288 upper = itru->second;
297 int ix = params.
index(¶m);
299 ccoutE(
InputArguments) <<
"Error - invalid parameter " << param.
GetName() <<
" specified for finding the interval limits " << std::endl;
306 ccoutE(
Eval) <<
"Error returned from minimization of likelihood function - cannot find interval limits " << std::endl;
314 err_level = err_level/2;
317 unsigned int ivarX = ix;
321 ret =
fMinimizer->GetMinosError(ivarX, elow, eup );
361 int ix = params.
index(¶mX);
362 int iy = params.
index(¶mY);
363 if (ix < 0 || iy < 0) {
364 coutE(
InputArguments) <<
"LikelihoodInterval - Error - invalid parameters specified for finding the contours; parX = " << paramX.
GetName()
365 <<
" parY = " << paramY.
GetName() << std::endl;
372 coutE(
Eval) <<
"LikelihoodInterval - Error returned creating minimizer for likelihood function - cannot find contour points " << std::endl;
380 cont_level = cont_level/2;
383 unsigned int ncp = npoints;
384 unsigned int ivarX = ix;
385 unsigned int ivarY = iy;
386 coutI(
Minimization) <<
"LikelihoodInterval - Finding the contour of " << paramX.
GetName() <<
" ( " << ivarX <<
" ) and " << paramY.
GetName() <<
" ( " << ivarY <<
" ) " << std::endl;
387 ret =
fMinimizer->Contour(ivarX, ivarY, ncp, x, y );
392 if (
int(ncp) < npoints) {
393 coutW(
Minimization) <<
"LikelihoodInterval -Warning - Less points calculated in contours np = " << ncp <<
" / " << npoints << std::endl;
ClassImp(RooStats::LikelihoodInterval)
virtual Double_t ConfidenceLevel() const
return confidence level
RooAbsReal * fLikelihoodRatio
snapshot of the model parameters with best fit value (managed internally)
std::map< std::string, double > fLowerLimits
Requested confidence level (eg. 0.95 for 95% CL)
std::shared_ptr< ROOT::Math::Minimizer > fMinimizer
map with cached upper bound values
std::map< std::string, double > fUpperLimits
map with cached lower bound values
LikelihoodInterval is a concrete implementation of the RooStats::ConfInterval interface.
Bool_t CheckParameters(const RooArgSet &) const
check if parameters are correct (i.e. they are the POI of this interval)
std::shared_ptr< ROOT::Math::IMultiGenFunction > fMinFunc
transient pointer to functor class used by the minimizer
LikelihoodInterval(const char *name=0)
default constructor
Bool_t equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically named contents.
virtual RooArgSet * GetParameters() const
return a cloned list of parameters of interest. User manages the return object
Int_t index(const RooAbsArg *arg) const
void SetParameters(const RooArgSet *desiredVals, RooArgSet *paramsToChange)
static ROOT::Math::Minimizer * CreateMinimizer(const std::string &minimizerType="", const std::string &algoType="")
static method to create the corrisponding Minimizer given the string Supported Minimizers types are: ...
virtual Double_t getMin(const char *name=0) const
Bool_t FindLimits(const RooRealVar ¶m, double &lower, double &upper)
find both lower and upper interval boundaries for a given parameter retun false if the bounds have no...
static RooMsgService & instance()
Return reference to singleton instance.
RooArgSet * fBestFitParams
parameters of interest for this interval
static void setHideOffset(Bool_t flag)
Double_t LowerLimit(const RooRealVar ¶m)
return the lower bound of the interval on a given parameter
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.
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
Double_t getVal(const RooArgSet *set=0) const
RooFit::MsgLevel globalKillBelow() const
virtual void setVal(Double_t value)
Set value of variable to 'value'.
Double_t UpperLimit(const RooRealVar ¶m)
return the upper bound of the interval on a given parameter
bool CreateMinimizer()
internal function to create the minimizer for finding the contours
void ResetLimits()
reset the cached limit values
RooAbsArg * find(const char *name) const
Find object with given name in list.
static const std::string & DefaultMinimizerType()
void setGlobalKillBelow(RooFit::MsgLevel level)
virtual const char * GetName() const
Returns name of object.
std::shared_ptr< RooFunctor > fFunctor
transient pointer to minimizer class used to find limits and contour
ConfInterval is an interface class for a generic interval in the RooStats framework.
Namespace for the RooStats classes.
virtual ~LikelihoodInterval()
destructor
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
virtual Bool_t IsInInterval(const RooArgSet &) const
check if given point is in the interval
Int_t GetContourPoints(const RooRealVar ¶mX, const RooRealVar ¶mY, Double_t *x, Double_t *y, Int_t npoints=30)
return the 2D-contour points for the given subset of parameters by default make the contour using 30 ...
Template class to wrap any C++ callable object implementing operator() (const double * x) in a multi-...
virtual Double_t getMax(const char *name=0) const
void RemoveConstantParameters(RooArgSet *set)
Double_t fConfidenceLevel
likelihood ratio function used to make contours (managed internally)
static bool UseStaticMinuit(bool on=true)
static function to switch on/off usage of static global TMinuit instance (gMinuit) By default it is u...
void setError(Double_t value)
Double_t getError() const