10#ifndef ROOT_Minuit2_MinimumError
11#define ROOT_Minuit2_MinimumError
57 MnPrint print(
"MinimumError::Hessian");
58 print.
Warn(
"Inversion fails; return diagonal matrix");
59 for (
unsigned int i = 0; i < fPtr->fMatrix.Nrow(); ++i)
60 for (
unsigned int j = 0; j <= i; j++)
61 tmp(i, j) = i == j ? 1. / fPtr->fMatrix(i, i) : 0;
66 double Dcovar()
const {
return fPtr->fDCovar; }
69 bool IsValid()
const {
return IsAvailable() && (IsPosDef() || IsMadePosDef()); }
70 bool IsAccurate()
const {
return IsPosDef() && Dcovar() < 0.1; }
74 bool HesseFailed()
const {
return GetStatus() == MnHesseFailed; }
75 bool InvertFailed()
const {
return GetStatus() == MnInvertFailed; }
86 std::shared_ptr<Data>
fPtr;
Class describing a symmetric matrix of size n.
MinimumError keeps the inv.
bool HasReachedCallLimit() const
MinimumError(const MnAlgebraicSymMatrix &mat, Status status)
MinimumError(unsigned int n)
const MnAlgebraicSymMatrix & InvHessian() const
MnAlgebraicSymMatrix Matrix() const
MnAlgebraicSymMatrix Hessian() const
std::shared_ptr< Data > fPtr
MinimumError(const MnAlgebraicSymMatrix &mat, double dcov)
bool IsMadePosDef() const
bool InvertFailed() const
Force the covariance matrix to be positive defined by adding extra terms in the diagonal.
void Warn(const Ts &... args)
int Invert(LASymMatrix &)
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
MnAlgebraicSymMatrix fMatrix