13 #ifndef ROOT_Minuit2_Minuit2Minimizer
14 #define ROOT_Minuit2_Minuit2Minimizer
28 class ModularFunctionMinimizer;
30 class FunctionMinimum;
58 class Minuit2Minimizer :
public ROOT::Math::Minimizer {
65 Minuit2Minimizer (ROOT::Minuit2::EMinimizerType type = ROOT::Minuit2::kMigrad);
70 Minuit2Minimizer (
const char * type);
75 virtual ~Minuit2Minimizer ();
83 Minuit2Minimizer(
const Minuit2Minimizer &);
88 Minuit2Minimizer & operator = (
const Minuit2Minimizer & rhs);
96 virtual void SetFunction(
const ROOT::Math::IMultiGenFunction & func);
99 virtual void SetFunction(
const ROOT::Math::IMultiGradFunction & func);
102 virtual bool SetVariable(
unsigned int ivar,
const std::string & name,
double val,
double step);
105 virtual bool SetLowerLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double lower );
107 virtual bool SetUpperLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double upper );
109 virtual bool SetLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double ,
double );
111 virtual bool SetFixedVariable(
unsigned int ,
const std::string & ,
double );
113 virtual bool SetVariableValue(
unsigned int ivar,
double val);
115 virtual bool SetVariableValues(
const double * val);
117 virtual bool SetVariableStepSize(
unsigned int ivar,
double step );
119 virtual bool SetVariableLowerLimit(
unsigned int ivar,
double lower);
121 virtual bool SetVariableUpperLimit(
unsigned int ivar,
double upper);
123 virtual bool SetVariableLimits(
unsigned int ivar,
double lower,
double upper);
125 virtual bool FixVariable(
unsigned int ivar);
127 virtual bool ReleaseVariable(
unsigned int ivar);
130 virtual bool IsFixedVariable(
unsigned int ivar)
const;
132 virtual bool GetVariableSettings(
unsigned int ivar, ROOT::Fit::ParameterSettings & varObj)
const;
134 virtual std::string VariableName(
unsigned int ivar)
const;
137 virtual int VariableIndex(
const std::string & name)
const;
151 virtual bool Minimize();
154 virtual double MinValue()
const {
return fState.Fval(); }
157 virtual double Edm()
const {
return fState.Edm(); }
160 virtual const double * X()
const;
163 virtual const double * MinGradient()
const {
return 0; }
166 virtual unsigned int NCalls()
const {
return fState.NFcn(); }
170 virtual unsigned int NDim()
const {
return fDim; }
174 virtual unsigned int NFree()
const {
return fState.VariableParameters(); }
177 virtual bool ProvidesError()
const {
return true; }
180 virtual const double * Errors()
const;
189 virtual double CovMatrix(
unsigned int i,
unsigned int j)
const;
200 virtual bool GetCovMatrix(
double * cov)
const;
209 virtual bool GetHessianMatrix(
double * h)
const;
221 virtual int CovMatrixStatus()
const;
226 virtual double Correlation(
unsigned int i,
unsigned int j )
const;
234 virtual double GlobalCC(
unsigned int i)
const;
248 virtual bool GetMinosError(
unsigned int i,
double & errLow,
double & errUp,
int = 0);
254 virtual bool Scan(
unsigned int i,
unsigned int & nstep,
double * x,
double * y,
double xmin = 0,
double xmax = 0);
260 virtual bool Contour(
unsigned int i,
unsigned int j,
unsigned int & npoints,
double *xi,
double *xj);
273 virtual bool Hesse();
280 virtual void PrintResults();
284 void SetTraceObject(MnTraceObject & obj);
288 void SetStorageLevel(
int level);
291 const ROOT::Minuit2::MnUserParameterState & State() {
return fState; }
297 virtual const ROOT::Minuit2::ModularFunctionMinimizer * GetMinimizer()
const {
return fMinimizer; }
299 virtual void SetMinimizer( ROOT::Minuit2::ModularFunctionMinimizer * m) { fMinimizer = m; }
301 void SetMinimizerType( ROOT::Minuit2::EMinimizerType type);
303 virtual const ROOT::Minuit2::FCNBase * GetFCN()
const {
return fMinuitFCN; }
306 bool ExamineMinimum(
const ROOT::Minuit2::FunctionMinimum & min);
313 ROOT::Minuit2::MnUserParameterState fState;
315 ROOT::Minuit2::ModularFunctionMinimizer * fMinimizer;
316 ROOT::Minuit2::FCNBase * fMinuitFCN;
317 ROOT::Minuit2::FunctionMinimum * fMinimum;
318 mutable std::vector<double> fValues;
319 mutable std::vector<double> fErrors;