diff --git a/src/ToDo.txt b/src/ToDo.txt index 32d7f386..2973cfee 100644 --- a/src/ToDo.txt +++ b/src/ToDo.txt @@ -92,6 +92,7 @@ short term: **DONE** 08-09-01 * PFitter.cpp: implement HESSE + **DONE** 08-09-01 * implement FFT with msr-interface diff --git a/src/classes/PFitter.cpp b/src/classes/PFitter.cpp index a931ed5a..9f4131f0 100644 --- a/src/classes/PFitter.cpp +++ b/src/classes/PFitter.cpp @@ -36,6 +36,7 @@ using namespace std; #include #include "Minuit2/FunctionMinimum.h" +#include "Minuit2/MnHesse.h" #include "Minuit2/MnMinimize.h" #include "Minuit2/MnMigrad.h" #include "Minuit2/MnMinos.h" @@ -311,6 +312,23 @@ bool PFitter::ExecuteHesse() if (fFcnMin) fMnUserParams = fFcnMin->UserParameters(); + // create the hesse object + ROOT::Minuit2::MnHesse hesse; + + // call hesse + ROOT::Minuit2::MnUserParameterState mnState = hesse((*fFitterFcn), fMnUserParams); + + if (!mnState.IsValid()) { + cout << endl << "**WARNING** PFitter::ExecuteHesse(): Hesse encountered some problems!"; + cout << endl; + return false; + } + + // fill parabolic errors + for (unsigned int i=0; iSetMsrParamStep(i, mnState.Error(i)); + } + return true; }