00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "Minuit2/BasicMinimumError.h"
00011
00012 #if defined(DEBUG) || defined(WARNINGMSG)
00013 #include "Minuit2/MnPrint.h"
00014 #endif
00015
00016
00017 namespace ROOT {
00018
00019 namespace Minuit2 {
00020
00021
00022
00023 MnAlgebraicSymMatrix BasicMinimumError::Hessian() const {
00024
00025 MnAlgebraicSymMatrix tmp(fMatrix);
00026 int ifail = Invert(tmp);
00027 if(ifail != 0) {
00028 #ifdef WARNINGMSG
00029 MN_INFO_MSG("BasicMinimumError: inversion fails; return diagonal matrix.");
00030 #endif
00031 MnAlgebraicSymMatrix tmp2(fMatrix.Nrow());
00032 for(unsigned int i = 0; i < fMatrix.Nrow(); i++) {
00033 tmp2(i,i) = 1./fMatrix(i,i);
00034 }
00035 return tmp2;
00036 }
00037 return tmp;
00038 }
00039
00040 }
00041
00042 }