13 #ifndef ROOT_TFumiliMinimizer
14 #define ROOT_TFumiliMinimizer
41 class TFumiliMinimizer :
public ROOT::Math::Minimizer {
48 TFumiliMinimizer (
int dummy=0 );
62 TFumiliMinimizer(
const TFumiliMinimizer &);
67 TFumiliMinimizer & operator = (
const TFumiliMinimizer & rhs);
72 virtual void SetFunction(
const ROOT::Math::IMultiGenFunction & func);
75 virtual void SetFunction(
const ROOT::Math::IMultiGradFunction & func);
78 virtual bool SetVariable(
unsigned int ivar,
const std::string & name,
double val,
double step);
81 virtual bool SetLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double ,
double );
85 virtual bool SetLowerLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double lower );
87 virtual bool SetUpperLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double upper );
91 virtual bool SetFixedVariable(
unsigned int ,
const std::string & ,
double );
94 virtual bool SetVariableValue(
unsigned int ivar,
double val );
97 virtual bool Minimize();
100 virtual double MinValue()
const {
return fMinVal; }
103 virtual double Edm()
const {
return fEdm; }
106 virtual const double * X()
const {
return &fParams.front(); }
109 virtual const double * MinGradient()
const {
return 0; }
112 virtual unsigned int NCalls()
const {
return 0; }
116 virtual unsigned int NDim()
const {
return fDim; }
120 virtual unsigned int NFree()
const {
return fNFree; }
123 virtual bool ProvidesError()
const {
return true; }
126 virtual const double * Errors()
const {
return &fErrors.front(); }
132 virtual double CovMatrix(
unsigned int i,
unsigned int j)
const {
133 return fCovar[i + fDim* j];
139 virtual int CovMatrixStatus()
const {
140 if (fCovar.size() == 0)
return 0;
141 return (fStatus ==0) ? 3 : 1;
151 static void Fcn(
int &,
double * ,
double & f,
double * ,
int);
156 static double EvaluateFCN(
const double * x,
double * g);
165 std::vector<double> fParams;
166 std::vector<double> fErrors;
167 std::vector<double> fCovar;
173 static ROOT::Math::FitMethodFunction * fgFunc;
174 static ROOT::Math::FitMethodGradFunction * fgGradFunc;
176 static TFumili * fgFumili;
178 ClassDef(TFumiliMinimizer,1)