52 const std::vector<double> &fcn_gradient =
fFcn.
Gradient();
53 assert(fcn_gradient.size() == extParam.size());
78 std::vector<double> deriv(nvar);
79 std::vector<unsigned int> extIndex(nvar);
80 for (
int i = 0; i < nvar; ++i) {
86 v(i) = fcn_gradient[extIndex[i]] * deriv[i];
88 for (
int j = 0; j <= i; ++j) {
89 h(i, j) = deriv[i] * deriv[j] *
fFcn.
Hessian(extIndex[i], extIndex[j]);
93 MnPrint print(
"FumiliGradientCalculator");
94 print.
Debug([&](std::ostream &os) {
100 os <<
"Fumili Gradient" <<
v <<
"\nMinuit Gradient" << g2.
Vec();
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
void Debug(const Ts &... args)
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
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...