21double similarity(
const LAVector &,
const LASymMatrix &);
33 MnPrint print(
"DavidonErrorUpdator");
42 print.
Debug(
"\ndx", dx,
"\ndg", dg,
"\ndelgam", delgam,
"gvg", gvg);
45 print.
Warn(
"delgam = 0 : cannot update - return same matrix (details in info log)");
46 print.
Info(
"Explanation:\n"
47 " The distance from the minimum cannot be estimated, since at two\n"
48 " different points s0 and p1, the function gradient projected onto\n"
49 " the difference of s0 and p1 is zero, where:\n"
50 " * s0: ",
s0.Vec(),
"\n"
51 " * p1: ", p1.
Vec(),
"\n"
52 " * gradient at s0: ",
s0.Gradient().Vec(),
"\n"
53 " * gradient at p1: ", g1.
Vec(),
"\n"
54 " To understand whether this hints to an issue in the minimized function,\n"
55 " the minimized function can be plotted along points between s0 and p1 to\n"
56 " look for unexpected behavior.");
61 print.
Warn(
"delgam < 0 : first derivatives increasing along search line (details in info log)");
62 print.
Info(
"Explanation:\n"
63 " The distance from the minimum cannot be estimated, since the minimized\n"
64 " function seems not to be strictly convex in the space probed by the fit.\n"
65 " That is expected if the starting parameters are e.g. close to a local maximum\n"
66 " of the minimized function. If this function is expected to be fully convex\n"
67 " in the probed range or Minuit is already close to the function minimum, this\n"
68 " may hint to numerical or analytical issues with the minimized function.\n"
69 " This was found by projecting the difference of gradients at two points, s0 and p1,\n"
70 " onto the direction given by the difference of s0 and p1, where:\n"
71 " * s0: ",
s0.Vec(),
"\n"
72 " * p1: ", p1.
Vec(),
"\n"
73 " * gradient at s0: ",
s0.Gradient().Vec(),
"\n"
74 " * gradient at p1: ", g1.
Vec(),
"\n"
75 " To understand whether this hints to an issue in the minimized function,\n"
76 " the minimized function can be plotted along points between s0 and p1 to\n"
77 " look for unexpected behavior.");
82 print.
Warn(
"gvg <= 0 : cannot update - return same matrix");
94 print.
Debug(
"delgam<gvg : use dual (BFGS) formula");
97 print.
Debug(
"delgam<gvg : use rank 2 Davidon formula");
MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override
const MnAlgebraicVector & Vec() const
Class describing a symmetric matrix of size n.
MinimumError keeps the inv.
const MnAlgebraicVector & Vec() const
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
void Debug(const Ts &... args)
void Info(const Ts &... args)
void Warn(const Ts &... args)
ABObj< sym, VectorOuterProduct< ABObj< vec, LAVector, double >, double >, double > Outer_product(const ABObj< vec, LAVector, double > &obj)
LAPACK Algebra function specialize the Outer_product function for LAVector;.
LAVector MnAlgebraicVector
double sum_of_elements(const LASymMatrix &)
double similarity(const LAVector &, const LASymMatrix &)
double inner_product(const LAVector &, const LAVector &)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...