14 #ifndef ROOT_Math_BasicMinimizer
15 #define ROOT_Math_BasicMinimizer
37 class MinimTransformFunction;
54 class BasicMinimizer :
public ROOT::Math::Minimizer {
67 virtual ~BasicMinimizer ();
75 BasicMinimizer(
const BasicMinimizer &) : Minimizer() {}
80 BasicMinimizer & operator = (
const BasicMinimizer & rhs) {
81 if (
this == &rhs)
return *
this;
88 virtual void SetFunction(
const ROOT::Math::IMultiGenFunction & func);
91 virtual void SetFunction(
const ROOT::Math::IMultiGradFunction & func);
94 virtual bool SetVariable(
unsigned int ivar,
const std::string & name,
double val,
double step);
98 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 );
102 virtual bool SetLimitedVariable(
unsigned int ivar ,
const std::string & name ,
double val ,
double step ,
double ,
double );
104 virtual bool SetFixedVariable(
unsigned int ,
const std::string & ,
double );
106 virtual bool SetVariableValue(
unsigned int ivar,
double val );
108 virtual bool SetVariableValues(
const double * x);
110 virtual bool SetVariableStepSize(
unsigned int ivar,
double step );
112 virtual bool SetVariableLowerLimit(
unsigned int ivar,
double lower);
114 virtual bool SetVariableUpperLimit(
unsigned int ivar,
double upper);
116 virtual bool SetVariableLimits(
unsigned int ivar,
double lower,
double upper);
118 virtual bool FixVariable(
unsigned int ivar);
120 virtual bool ReleaseVariable(
unsigned int ivar);
123 virtual bool IsFixedVariable(
unsigned int ivar)
const;
125 virtual bool GetVariableSettings(
unsigned int ivar, ROOT::Fit::ParameterSettings & varObj)
const;
127 virtual std::string VariableName(
unsigned int ivar)
const;
130 virtual int VariableIndex(
const std::string & name)
const;
133 virtual bool Minimize();
136 virtual double MinValue()
const {
return fMinVal; }
139 virtual const double * X()
const {
return &fValues.front(); }
142 virtual unsigned int NDim()
const {
return fDim; }
145 virtual unsigned int NFree()
const;
148 virtual unsigned int NPar()
const {
return fValues.size(); }
151 const ROOT::Math::IMultiGenFunction * ObjFunction()
const {
return fObjFunc; }
154 const ROOT::Math::IMultiGradFunction * GradObjFunction()
const;
157 const ROOT::Math::MinimTransformFunction * TransformFunction()
const;
160 void PrintResult()
const;
163 virtual const double * StepSizes()
const {
return &fSteps.front(); }
167 bool CheckDimension()
const;
169 bool CheckObjFunction()
const;
171 MinimTransformFunction * CreateTransformation(std::vector<double> & startValues,
const ROOT::Math::IMultiGradFunction * func = 0);
173 void SetFinalValues(
const double * x);
175 void SetMinValue(
double val) { fMinVal = val; }
182 const ROOT::Math::IMultiGenFunction * fObjFunc;
185 std::vector<double> fValues;
186 std::vector<double> fSteps;
187 std::vector<std::string> fNames;
188 std::vector<ROOT::Math::EMinimVariableType> fVarTypes;
189 std::map< unsigned int, std::pair<double, double> > fBounds;