36 MnPrint print(
"NegativeG2LineSearch");
45 print.
Info(
"Doing a NegativeG2LineSearch since one of the G2 component is negative");
47 unsigned int n =
st.Parameters().Vec().size();
51 unsigned int iter = 0;
57 print.
Error(
"Input gradient to NG2LS must have G2 already computed");
63 for (
unsigned int i = 0; i <
n; i++) {
65 if (
dgrad.G2()(i) <= 0) {
79 if (
dgrad.Vec()(i) < 0)
89 print.
Debug(
"Iter", iter,
"param", i,
pa.Vec()(i),
"grad2",
dgrad.G2()(i),
"grad",
90 dgrad.Vec()(i),
"grad step", step(i),
" gdel ",
gdel);
94 print.
Debug(
"Line search result", pp.X(),
"f(0)",
pa.Fval(),
"f(1)", pp.Y());
101 if (!
dgrad.HasG2()) {
103 print.
Debug(
"Compute G2 at the new point",
pa.Vec());
107 print.
Error(
"Cannot compute G2");
115 print.
Debug(
"New result after Line search - iter", iter,
"param", i,
pa.Vec()(i),
"step", step(i),
"new grad2",
122 }
while (iter++ < 2 *
n &&
iterate);
125 print.
Debug(
"Approximate new covariance after NegativeG2LS using only G2");
127 for (
unsigned int i = 0; i <
n; i++) {
146 for (
unsigned int i = 0; i < grad.
Vec().
size(); i++)
148 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.
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)
Namespace for new ROOT classes and functions.