13 #ifndef ROOT_TMinuitMinimizer
14 #define ROOT_TMinuitMinimizer
50 class TMinuitMinimizer :
public ROOT::Math::Minimizer {
57 TMinuitMinimizer ( ROOT::Minuit::EMinimizerType type = ROOT::Minuit::kMigrad,
unsigned int ndim = 0);
62 TMinuitMinimizer (
const char * type ,
unsigned int ndim = 0);
75 TMinuitMinimizer(
const TMinuitMinimizer &);
80 TMinuitMinimizer & operator = (
const TMinuitMinimizer & rhs);
85 virtual void SetFunction(
const ROOT::Math::IMultiGenFunction & func);
88 virtual void SetFunction(
const ROOT::Math::IMultiGradFunction & func);
91 virtual bool SetVariable(
unsigned int ivar,
const std::string & name,
double val,
double step);
94 virtual bool SetLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double ,
double );
97 virtual bool SetLowerLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double lower );
100 virtual bool SetUpperLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double upper );
103 virtual bool SetFixedVariable(
unsigned int ,
const std::string & ,
double );
106 virtual bool SetVariableValue(
unsigned int ,
double );
109 virtual bool SetVariableStepSize(
unsigned int ,
double );
111 virtual bool SetVariableLowerLimit(
unsigned int ,
double );
113 virtual bool SetVariableUpperLimit(
unsigned int ,
double );
115 virtual bool SetVariableLimits(
unsigned int ivar,
double lower,
double upper);
117 virtual bool FixVariable(
unsigned int);
119 virtual bool ReleaseVariable(
unsigned int);
122 virtual bool IsFixedVariable(
unsigned int)
const;
124 virtual bool GetVariableSettings(
unsigned int, ROOT::Fit::ParameterSettings & )
const;
128 virtual bool Minimize();
131 virtual double MinValue()
const;
134 virtual double Edm()
const;
137 virtual const double * X()
const {
return &fParams.front(); }
140 virtual const double * MinGradient()
const {
return 0; }
143 virtual unsigned int NCalls()
const;
147 virtual unsigned int NDim()
const {
return fDim; }
151 virtual unsigned int NFree()
const;
154 virtual bool ProvidesError()
const {
return true; }
157 virtual const double * Errors()
const {
return &fErrors.front(); }
163 virtual double CovMatrix(
unsigned int i,
unsigned int j)
const {
164 return ( fCovar.size() > (i + fDim* j) ) ? fCovar[i + fDim* j] : 0;
175 virtual bool GetCovMatrix(
double * cov)
const;
184 virtual bool GetHessianMatrix(
double * h)
const;
187 virtual int CovMatrixStatus()
const;
190 virtual double GlobalCC(
unsigned int )
const;
193 virtual bool GetMinosError(
unsigned int i,
double & errLow,
double & errUp,
int = 0);
198 virtual bool Hesse();
204 virtual bool Scan(
unsigned int i,
unsigned int &nstep,
double * x,
double * y,
double xmin = 0,
double xmax = 0);
210 virtual bool Contour(
unsigned int i,
unsigned int j,
unsigned int & npoints,
double *xi,
double *xj);
213 virtual void PrintResults();
219 virtual std::string VariableName(
unsigned int ivar)
const;
223 virtual int VariableIndex(
const std::string & name)
const;
227 bool static UseStaticMinuit(
bool on =
true);
231 void SuppressMinuitWarnings(
bool nowarn=
true);
234 bool SetDebug(
bool on =
true);
239 static void Fcn(
int &,
double * ,
double & f,
double * ,
int);
241 static void FcnGrad(
int &,
double * g,
double & f,
double * ,
int);
244 void InitTMinuit(
int ndim);
250 void DoReleaseFixParameter(
int ivar);
253 void RetrieveParams();
256 void RetrieveErrorMatrix();
259 bool CheckMinuitInstance()
const;
262 bool CheckVarIndex(
unsigned int ivar)
const;
270 std::vector<double> fParams;
271 std::vector<double> fErrors;
272 std::vector<double> fCovar;
274 ROOT::Minuit::EMinimizerType fType;
277 static TMinuit * fgMinuit;
280 static bool fgUseStaticMinuit;
282 ClassDef(TMinuitMinimizer,1)