13 #ifndef ROOT_Minuit2_HybridMinimizer 14 #define ROOT_Minuit2_HybridMinimizer 16 #include "Math/Minimizer.h" 17 #include "Minuit2/MnUserParameterState.h" 18 #include "Math/IFunctionfwd.h" 19 #include "Minuit2/MinosError.h" 20 #include "Minuit2/ModularFunctionMinimizer.h" 21 #include "Minuit2/FumiliMinimizer.h" 27 class ModularFunctionMinimizer;
29 class FunctionMinimum;
88 void Clear()
override;
91 void SetFunction(
const ROOT::Math::IMultiGenFunction &
func)
override;
94 void SetFunction(
const ROOT::Math::IMultiGradFunction &
func)
override;
100 bool SetLowerLimitedVariable(
unsigned int ivar ,
const std::string &
name ,
double val ,
double step ,
double lower )
override;
104 bool SetLimitedVariable(
unsigned int ivar ,
const std::string &
name ,
double val ,
double step ,
double ,
double )
override;
106 bool SetFixedVariable(
unsigned int ,
const std::string & ,
double )
override;
108 bool SetVariableValue(
unsigned int ivar,
double val)
override;
109 bool SetVariableValues(
const double *
val)
override;
112 std::string VariableName(
unsigned int ivar)
const override;
130 bool Minimize()
override;
139 const double *
X()
const override;
149 unsigned int NDim()
const override {
return fDim; }
153 unsigned int NFree()
const override {
return fState.VariableParameters(); }
159 const double * Errors()
const override;
168 double CovMatrix(
unsigned int i,
unsigned int j)
const override;
179 bool GetCovMatrix(
double * cov)
const override;
188 bool GetHessianMatrix(
double *
h)
const override;
200 int CovMatrixStatus()
const override;
205 double Correlation(
unsigned int i,
unsigned int j )
const override;
213 double GlobalCC(
unsigned int i)
const override;
227 bool GetMinosError(
unsigned int i,
double & errLow,
double & errUp,
int = 0)
override;
233 bool Scan(
unsigned int i,
unsigned int & nstep,
double * x,
double * y,
double xmin = 0,
double xmax = 0)
override;
239 bool Contour(
unsigned int i,
unsigned int j,
unsigned int &
npoints,
double *
xi,
double *xj)
override;
252 bool Hesse()
override;
259 void PrintResults()
override;
262 const ROOT::Minuit2::MnUserParameterState &
State() {
return fState; }
270 virtual const ROOT::Minuit2::ModularFunctionMinimizer *
GetMinimizer()
const {
return fMinimizer; }
272 virtual void SetMinimizer( ROOT::Minuit2::ModularFunctionMinimizer *
m) { fMinimizer =
m; }
274 virtual const ROOT::Minuit2::FCNBase *
GetFCN()
const {
return fMinuitFCN; }
277 bool ExamineMinimum(
const ROOT::Minuit2::FunctionMinimum &
min);
284 ROOT::Minuit2::MnUserParameterState
fState;
double MinValue() const override
return minimum function value
ROOT::Minuit2::MnUserParameterState fState
ROOT::Minuit2::FCNBase * fMinuitFCN
ROOT::Minuit2::FunctionMinimum * fMinimum
unsigned int NDim() const override
std::vector< double > fErrors
const ROOT::Minuit2::MnUserParameterState & State()
return the minimizer state (containing values, step size , etc..)
const double * MinGradient() const override
return pointer to gradient values at the minimum
virtual void SetMinimizer(ROOT::Minuit2::ModularFunctionMinimizer *m)
unsigned int NFree() const override
unsigned int NCalls() const override
number of function calls to reach the minimum
std::vector< double > fValues
ROOT::Minuit2::ModularFunctionMinimizer * fMinimizer
virtual const ROOT::Minuit2::ModularFunctionMinimizer * GetMinimizer() const
virtual const ROOT::Minuit2::FCNBase * GetFCN() const
double Edm() const override
return expected distance reached from the minimum
bool ProvidesError() const override
minimizer provides error and error matrix