27 MnPrint print(
"DavidonErrorUpdator");
39 print.
Warn(
"delgam = 0 : cannot update - return same matrix (details in info log)");
40 print.
Info(
"Explanation:\n"
41 " The distance from the minimum cannot be estimated, since at two\n"
42 " different points s0 and p1, the function gradient projected onto\n"
43 " the difference of s0 and p1 is zero, where:\n"
44 " * s0: ",
s0.Vec(),
"\n"
45 " * p1: ",
p1.Vec(),
"\n"
46 " * gradient at s0: ",
s0.Gradient().Vec(),
"\n"
47 " * gradient at p1: ",
g1.Vec(),
"\n"
48 " To understand whether this hints to an issue in the minimized function,\n"
49 " the minimized function can be plotted along points between s0 and p1 to\n"
50 " look for unexpected behavior.");
55 print.
Warn(
"delgam < 0 : first derivatives increasing along search line (details in info log)");
56 print.
Info(
"Explanation:\n"
57 " The distance from the minimum cannot be estimated, since the minimized\n"
58 " function seems not to be strictly convex in the space probed by the fit.\n"
59 " That is expected if the starting parameters are e.g. close to a local maximum\n"
60 " of the minimized function. If this function is expected to be fully convex\n"
61 " in the probed range or Minuit is already close to the function minimum, this\n"
62 " may hint to numerical or analytical issues with the minimized function.\n"
63 " This was found by projecting the difference of gradients at two points, s0 and p1,\n"
64 " onto the direction given by the difference of s0 and p1, where:\n"
65 " * s0: ",
s0.Vec(),
"\n"
66 " * p1: ",
p1.Vec(),
"\n"
67 " * gradient at s0: ",
s0.Gradient().Vec(),
"\n"
68 " * gradient at p1: ",
g1.Vec(),
"\n"
69 " To understand whether this hints to an issue in the minimized function,\n"
70 " the minimized function can be plotted along points between s0 and p1 to\n"
71 " look for unexpected behavior.");
76 print.
Warn(
"gvg <= 0 : cannot update - return same matrix");
88 print.
Debug(
"delgam<gvg : use dual (BFGS) formula");
91 print.
Debug(
"delgam<gvg : use rank 2 Davidon formula");
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override
Class describing a symmetric matrix of size n.
MinimumError keeps the inv.
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)
LAVector MnAlgebraicVector
double sum_of_elements(const LASymMatrix &)
double similarity(const LAVector &, const LASymMatrix &)
double inner_product(const LAVector &, const LAVector &)
ABObj< sym, VectorOuterProduct< ABObj< vec, M, T >, T >, T > Outer_product(const ABObj< vec, M, T > &obj)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...