37 MnPrint print(
"NegativeG2LineSearch");
46 print.
Info(
"Doing a NegativeG2LineSearch since one of the G2 component is negative");
48 unsigned int n =
st.Parameters().Vec().size();
52 unsigned int iter = 0;
58 print.
Error(
"Input gradient to NG2LS must have G2 already computed");
64 for (
unsigned int i = 0; i <
n; i++) {
66 if (
dgrad.G2()(i) <= 0) {
80 if (
dgrad.Vec()(i) < 0)
90 print.
Debug(
"Iter", iter,
"param", i,
pa.Vec()(i),
"grad2",
dgrad.G2()(i),
"grad",
91 dgrad.Vec()(i),
"grad step", step(i),
" gdel ",
gdel);
95 print.
Debug(
"Line search result", pp.
X(),
"f(0)",
pa.Fval(),
"f(1)", pp.
Y());
102 if (!
dgrad.HasG2()) {
104 print.
Debug(
"Compute G2 at the new point",
pa.Vec());
108 print.
Error(
"Cannot compute G2");
116 print.
Debug(
"New result after Line search - iter", iter,
"param", i,
pa.Vec()(i),
"step", step(i),
"new grad2",
123 }
while (iter++ < 2 *
n &&
iterate);
126 print.
Debug(
"Approximate new covariance after NegativeG2LS using only G2");
128 for (
unsigned int i = 0; i <
n; i++) {
147 for (
unsigned int i = 0; i < grad.
Vec().
size(); i++)
149 if (grad.
G2()(i) <= 0) {
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void gc
const MnAlgebraicVector & Vec() const
const MnAlgebraicVector & G2() const
interface class for gradient calculators
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 (...
Wrapper class to FCNBase interface used internally by Minuit.
Implements a 1-dimensional minimization along a given direction (i.e.
Sets the relative floating point (double) arithmetic precision.
double Y() const
Accessor to the y (second) coordinate.
double X() const
Accessor to the x (first) coordinate.
void Debug(const Ts &... args)
void Error(const Ts &... args)
void Info(const Ts &... args)
bool HasNegativeG2(const FunctionGradient &, const MnMachinePrecision &) const
MinimumState operator()(const MnFcn &, const MinimumState &, const GradientCalculator &, const MnMachinePrecision &) const
double Estimate(const FunctionGradient &, const MinimumError &) const
int iterate(rng_state_t *X)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...