59 const std::vector<double> & fcn_gradient =
fFcn.
Gradient();
60 assert( fcn_gradient.size() == extParam.size() );
88 std::vector<double> deriv(nvar);
89 std::vector<unsigned int> extIndex(nvar);
90 for (
int i = 0; i < nvar; ++i) {
96 v(i) = fcn_gradient[extIndex[i]]*deriv[i];
98 for (
int j = 0; j <= i; ++j) {
99 h(i,j) = deriv[i]*deriv[j]*
fFcn.
Hessian(extIndex[i],extIndex[j]);
110 std::cout <<
"Fumili Gradient " <<
v << std::endl;
111 std::cout <<
"Minuit Gradient " << g2.
Vec() << std::endl;
Extension of the FCNBase for the Fumili method.
virtual void EvaluateAll(const std::vector< double > &par)=0
Evaluate function Value, Gradient and Hessian using Fumili approximation, for values of parameters p ...
virtual const std::vector< double > & Gradient() const
Return cached Value of function Gradient estimated previously using the FumiliFCNBase::EvaluateAll me...
virtual double Hessian(unsigned int row, unsigned int col) const
Return Value of the i-th j-th element of the Hessian matrix estimated previously using the FumiliFCNB...
FunctionGradient operator()(const MinimumParameters &) const
const MnUserTransformation & fTransformation
MnAlgebraicSymMatrix fHessian
const FumiliFCNBase & fFcn
const MnAlgebraicVector & Vec() const
Class describing a symmetric matrix of size n.
unsigned int size() const
const MnAlgebraicVector & Vec() const
API class for defining three levels of strategies: low (0), medium (1), high (>=2); acts on: Migrad (...
Wrapper used by Minuit of FCN interface containing a reference to the transformation object.
class performing the numerical gradient calculation
Namespace for new ROOT classes and functions.