46   fValid(
false), fNormalized(
false), fNFree(0), fNdf(0), fNCalls(0),
 
   47   fStatus(-1), fCovStatus(0), fVal(0), fEdm(-1), fChi2(-1)
 
 
   66   fParNames(std::vector<std::string> ( 
fconfig.NPar() ) )
 
   75   if ( (
fMinimType.find(
"Fumili") == std::string::npos) &&
 
   76        (
fMinimType.find(
"GSLMultiFit") == std::string::npos)
 
   83   for (
unsigned int i = 0; i < 
npar; ++i ) {
 
   97   std::cout << 
"create fit result from config - nfree " << 
fNFree << std::endl;
 
 
  113   fVal  =  min->MinValue();
 
  124   const unsigned int npar = min->NDim();
 
  125   if (
npar == 0) 
return;
 
  128      fParams = std::vector<double>(min->X(), min->X() + 
npar);
 
  132      for (
unsigned int i = 0; i < 
npar; ++i ) {
 
  151      for (
unsigned int i = 0; i < 
npar; ++i ) {
 
  158   unsigned int nfree = 0;
 
  160   for (
unsigned int ipar = 0; ipar < 
npar; ++ipar) {
 
  173      MATH_ERROR_MSG(
"FitResult",
"FitConfiguration and Minimizer result are not consistent");
 
  174      std::cout << 
"Number of free parameters from FitConfig = " << 
nfree << std::endl;
 
  175      std::cout << 
"Number of free parameters from Minimizer = " << 
fNFree << std::endl;
 
  199   if (min->Errors() != 
nullptr) {
 
  201      fErrors = std::vector<double>(min->Errors(), min->Errors() + 
npar ) ;
 
  206         for (
unsigned int i = 0; i < 
npar; ++i)
 
  207            for (
unsigned int j = 0; 
j <= i; ++
j)
 
  214      for (
unsigned int i = 0; i < 
npar; ++i) {
 
  215         double globcc = min->GlobalCC(i);
 
 
  234   if (min->NDim() != 
npar ) {
 
  238   if (min->X() == 
nullptr ) {
 
  242   if (
fNFree != min->NFree() ) {
 
  249   fVal = min->MinValue();
 
  255   if ( min->NCalls() > 0)   
fNCalls = min->NCalls();
 
  259   std::copy(min->X(), min->X() + 
npar, 
fParams.begin());
 
  265   if (min->Errors() != 
nullptr)  {
 
  269      std::copy(min->Errors(), min->Errors() + 
npar, 
fErrors.begin() ) ;
 
  277         for (
unsigned int i = 0; i < 
npar; ++i) {
 
  278            for (
unsigned int j = 0; 
j <= i; ++
j)
 
  285      for (
unsigned int i = 0; i < 
npar; ++i) {
 
  286         double globcc = min->GlobalCC(i);
 
 
  303   for (
unsigned int i = 0; i < 
fErrors.size() ; ++i)
 
  305   for (
unsigned int i = 0; i < 
fCovMatrix.size() ; ++i)
 
 
  327   std::map<unsigned int, std::pair<double,double> >::const_iterator 
itr = 
fMinosErrors.find(i);
 
 
  335   std::map<unsigned int, std::pair<double,double> >::const_iterator 
itr = 
fMinosErrors.find(i);
 
 
  342   std::map<unsigned int, std::pair<double,double> >::const_iterator 
itr = 
fMinosErrors.find(i);
 
 
  355   for (
unsigned int i = 0; i < 
npar; ++i)
 
 
  370   std::map<unsigned int, unsigned int>::const_iterator 
itr =  
fBoundParams.find(ipar);
 
  372      lower =  -std::numeric_limits<Double_t>::infinity();
 
  373      upper =  std::numeric_limits<Double_t>::infinity();
 
 
  394      os << 
"<Empty FitResult>\n";
 
  397   os << 
"****************************************\n";
 
  400         os << 
"         Invalid FitResult";
 
  401         os << 
"  (status = " << 
fStatus << 
" )";
 
  404         os << 
"      FitResult before fitting";
 
  406      os << 
"\n****************************************\n";
 
  410   os << 
"Minimizer is " << 
fMinimType << std::endl;
 
  411   const unsigned int nw = 25; 
 
  412   const unsigned int nn = 12; 
 
  413   const std::ios_base::fmtflags 
prFmt = os.setf(std::ios::left,std::ios::adjustfield); 
 
  416      os << std::left << std::setw(
nw) << 
"MinFCN" << 
" = " << std::right << std::setw(nn) << 
fVal << std::endl;
 
  418      os << std::left << std::setw(
nw) <<  
"Chi2"         << 
" = " << std::right << std::setw(nn) << 
fChi2 << std::endl;
 
  419   os << std::left << std::setw(
nw) << 
"NDf"              << 
" = " << std::right << std::setw(nn) << 
fNdf << std::endl;
 
  420   if (
fMinimType.find(
"Linear") == std::string::npos) {  
 
  421      if (
fEdm >=0) os << std::left << std::setw(
nw) << 
"Edm"    << 
" = " << std::right << std::setw(nn) << 
fEdm << std::endl;
 
  422      os << std::left << std::setw(
nw) << 
"NCalls" << 
" = " << std::right << std::setw(nn) << 
fNCalls << std::endl;
 
  424   for (
unsigned int i = 0; i < 
npar; ++i) {
 
  426      os << 
" = " << std::right << std::setw(nn) << 
fParams[i];
 
  428         os << std::setw(9) << 
" "  << std::setw(nn) << 
" " << 
" \t (fixed)";
 
  431            os << 
"   +/-   " << std::left << std::setw(nn) << 
fErrors[i] << std::right;
 
  433            os << 
"  " << std::left  << std::setw(nn) << 
LowerError(i) << 
" +" << std::setw(nn) << 
UpperError(i)
 
  436            os << 
" \t (limited)";
 
  442   if (
prFmt != os.flags() ) os.setf(
prFmt, std::ios::adjustfield);
 
 
  452   os << 
"\nCovariance Matrix:\n\n";
 
  461   const std::ios_base::fmtflags 
prevFmt = os.flags();
 
  463   os << std::setw(
parw) << 
" " << 
"\t";
 
  464   for (
unsigned int i = 0; i < 
npar; ++i) {
 
  470   for (
unsigned int i = 0; i < 
npar; ++i) {
 
  473         for (
unsigned int j = 0; 
j < 
npar; ++
j) {
 
  482   os << 
"\nCorrelation Matrix:\n\n";
 
  483   os << std::setw(
parw) << 
" " << 
"\t";
 
  484   for (
unsigned int i = 0; i < 
npar; ++i) {
 
  490   for (
unsigned int i = 0; i < 
npar; ++i) {
 
  493         for (
unsigned int j = 0; 
j < 
npar; ++
j) {
 
  502   os.setf(
prevFmt, std::ios::adjustfield);
 
 
  515      MATH_ERROR_MSG(
"FitResult::GetConfidenceIntervals",
"Cannot compute Confidence Intervals without fit model function");
 
  522   if (
fChi2 <= 0 || 
fNdf == 0) norm = 
false;
 
  531   unsigned int ndim = 
fFitFunc->NDim();
 
  534   std::vector<double> 
xpoint(ndim);
 
  535   std::vector<double> grad(
npar);
 
  549      for (
unsigned int ipar = 0; ipar < 
npar; ++ipar) {
 
  556               d.SetStepSize( std::max( 
fErrors[ipar]*1.E-5, 1.E-15) );
 
  558               d.SetStepSize( std::min(std::max(
fParams[ipar]*1.E-5, 1.E-15), 0.0001 ) );
 
  568      for (
unsigned int ipar = 0; ipar < 
npar; ++ipar) {
 
  575      for (
unsigned int ipar = 0; ipar < 
npar; ++ipar) {
 
  576         r2 += grad[ipar] * 
vsum[ipar];
 
  578      double r = std::sqrt(
r2);
 
 
  587   unsigned int ndim = 
data.NDim();
 
  588   unsigned int np = 
data.NPoints();
 
  589   std::vector<double> 
xdata( ndim * 
np );
 
  590   for (
unsigned int i = 0; i < 
np ; ++i) {
 
  591      const double * 
x = 
data.Coords(i);
 
  593      std::copy(
x,
x+ndim,
itr);
 
 
  603    std::vector<double> 
result;
 
  609      MATH_ERROR_MSG(
"FitResult::GetConfidenceIntervals",
"Cannot compute Confidence Intervals without the fit bin data");
 
 
  645      MATH_ERROR_MSG(
"FitResult::Scan", 
"Minimizer is not available - cannot Scan");
 
 
  666      MATH_ERROR_MSG(
"FitResult::Contour", 
"Minimizer is not available - cannot produce Contour");
 
 
#define MATH_ERROR_MSG(loc, str)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
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 np
 
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 r
 
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 result
 
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
 
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
 
std::vector< double > fGlobalCC
global Correlation coefficient
 
unsigned int fNFree
number of fit free parameters (total parameters are in size of parameter vector)
 
bool Update(const std::shared_ptr< ROOT::Math::Minimizer > &min, const ROOT::Fit::FitConfig &fconfig, bool isValid, unsigned int ncalls=0)
Update the fit result with a new minimization status To be run only if same fit is performed with sam...
 
std::map< unsigned int, unsigned int > fBoundParams
list of limited parameters
 
const BinData * FittedBinData() const
return BinData used in the fit (return a nullptr in case a different fit is done or the data are not ...
 
void FillResult(const std::shared_ptr< ROOT::Math::Minimizer > &min, const FitConfig &fconfig, const std::shared_ptr< IModelFunction > &f, bool isValid, unsigned int sizeOfData=0, int fitType=1, const ROOT::Math::IMultiGenFunction *chi2func=nullptr, unsigned int ncalls=0)
Fill the fit result from a Minimizer instance after fitting Run also Minos if requested from the conf...
 
double UpperError(unsigned int i) const
upper Minos error. If Minos has not run for parameter i return the parabolic error
 
double fVal
minimum function value
 
double fEdm
expected distance from minimum
 
std::vector< double > fErrors
errors
 
std::shared_ptr< ROOT::Math::Minimizer > fMinimizer
! minimizer object used for fitting
 
bool fValid
flag for indicating valid fit
 
bool IsParameterFixed(unsigned int ipar) const
query if a parameter is fixed
 
unsigned int fNdf
number of degree of freedom
 
double Error(unsigned int i) const
parameter error by index
 
double CovMatrix(unsigned int i, unsigned int j) const
retrieve covariance matrix element
 
void GetConfidenceIntervals(unsigned int n, unsigned int stride1, unsigned int stride2, const double *x, double *ci, double cl=0.95, bool norm=false) const
get confidence intervals for an array of n points x.
 
int fCovStatus
covariance matrix status code
 
bool Scan(unsigned int ipar, unsigned int &npoints, double *pntsx, double *pntsy, double xmin=0, double xmax=0)
scan likelihood value of parameter and fill the given graph.
 
FitResult()
Default constructor for an empty (non valid) fit result.
 
std::shared_ptr< FitData > fFitData
! data set used in the fit
 
std::string GetParameterName(unsigned int ipar) const
get name of parameter (deprecated)
 
bool ParameterBounds(unsigned int ipar, double &lower, double &upper) const
retrieve parameter bounds - return false if parameter is not bound
 
std::vector< double > fParams
parameter values. Size is total number of parameters
 
std::vector< double > fCovMatrix
covariance matrix (size is npar*(npar+1)/2) where npar is total parameters
 
void SetMinosError(unsigned int i, double elow, double eup)
set the Minos errors for parameter i (called by the Fitter class when running Minos)
 
void Print(std::ostream &os, bool covmat=false) const
print the result and optionally covariance matrix and correlations
 
double LowerError(unsigned int i) const
lower Minos error. If Minos has not run for parameter i return the parabolic error
 
void PrintCovMatrix(std::ostream &os) const
print error matrix and correlations
 
unsigned int fNCalls
number of function calls
 
bool Contour(unsigned int ipar, unsigned int jpar, unsigned int &npoints, double *pntsx, double *pntsy, double confLevel=0.683)
create contour of two parameters around the minimum pass as option confidence level: default is a val...
 
bool HasMinosError(unsigned int i) const
query if parameter i has the Minos error
 
std::vector< std::pair< double, double > > fParamBounds
parameter bounds
 
int fStatus
minimizer status code
 
double fChi2
fit chi2 value (different than fval in case of chi2 fits)
 
std::shared_ptr< IModelFunction > fFitFunc
! model function resulting from the fit.
 
std::map< unsigned int, bool > fFixedParams
list of fixed parameters
 
std::string fMinimType
string indicating type of minimizer
 
double Correlation(unsigned int i, unsigned int j) const
retrieve correlation elements
 
int Index(const std::string &name) const
get index for parameter name (return -1 if not found)
 
double Prob() const
p value of the fit (chi2 probability)
 
std::string ParName(unsigned int i) const
name of the parameter
 
void NormalizeErrors()
normalize errors using chi2/ndf for chi2 fits
 
bool fNormalized
flag for indicating is errors are normalized
 
bool IsParameterBound(unsigned int ipar) const
query if a parameter is bound
 
std::vector< std::string > fParNames
parameter names (only with FCN only fits, when fFitFunc=0)
 
std::map< unsigned int, std::pair< double, double > > fMinosErrors
map contains the two Minos errors
 
void SetChi2AndNdf(double chi2, unsigned int npoints)
Set the chi2 and the ndf This function should be called when using an external FCN for fitting and on...
 
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
 
bool IsFixed() const
check if is fixed
 
bool HasUpperLimit() const
check if parameter has upper limit
 
double LowerLimit() const
return lower limit value
 
const std::string & Name() const
return name
 
bool HasLowerLimit() const
check if parameter has lower limit
 
double Value() const
copy constructor and assignment operators (leave them to the compiler)
 
double StepSize() const
return step size
 
double UpperLimit() const
return upper limit value
 
bool IsBound() const
check if is bound
 
Documentation for the abstract class IBaseFunctionMultiDim.
 
OneDimParamFunctionAdapter class to wrap a multi-dim parametric function in one dimensional one.
 
User class for calculating the derivatives of a function.
 
const_iterator begin() const
 
double chisquared_cdf_c(double x, double r, double x0=0)
Complement of the cumulative distribution function of the  distribution with  degrees of freedom (upp...
 
double normal_quantile(double z, double sigma)
Inverse ( ) of the cumulative distribution function of the lower tail of the normal (Gaussian) distri...
 
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
 
const int gInitialResultStatus
 
std::string ToString(const T &val)
Utility function for conversion to strings.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
Double_t ChisquareQuantile(Double_t p, Double_t ndf)
Evaluate the quantiles of the chi-squared probability distribution function.
 
Double_t StudentQuantile(Double_t p, Double_t ndf, Bool_t lower_tail=kTRUE)
Computes quantiles of the Student's t-distribution 1st argument is the probability,...