44      print.
Warn(
"No variable parameters are defined! - Return current function value ");
 
   50   print.
Debug(
"initial edm is ", edm);
 
   56      print.
Error(
"Initial matrix not positive defined, edm = ",edm,
"\nExit minimization ");
 
   60   std::vector<MinimumState> 
result;
 
   87            print.
Warn(
"FunctionMinimum is invalid");
 
   96      print.
Debug(
"Approximate Edm", edm, 
"npass", 
ipass);
 
  101      print.
Debug(
"FumiliBuilder will verify convergence and Error matrix; " 
  103                  min.Error().Dcovar());
 
  114      print.
Info(
"After Hessian");
 
  121      print.
Debug(
"Edm", edm, 
"State", 
st);
 
  126         print.
Warn(
"Stop iterations, no improvements after Hesse; current Edm", edm, 
"previous value", 
edmprev);
 
  130         print.
Debug(
"Tolerance not sufficient, continue minimization; Edm", edm, 
"Requested", 
edmval);
 
  134         if (min.IsAboveMaxEdm()) {
 
 
  199   MnPrint print(
"FumiliBuilder");
 
  221   double delta = 0.3 * std::max(1.0 , 
normX0);
 
  222   const double eta = 0.1;
 
  229      print.
Info(
"Using Fumili with a line search algorithm");
 
  245      step = -1. * 
s0.Error().InvHessian() * 
s0.Gradient().Vec();
 
  247      print.
Debug(
"Iteration -", 
result.size(), 
"\n  Fval", 
s0.Fval(), 
"numOfCall", 
fcn.NumOfCalls(),
 
  248                  "\n  Internal Parameter values", 
s0.Vec(), 
"\n  Newton step", step);
 
  253         print.
Warn(
"Matrix not pos.def, gdel =", 
gdel, 
" > 0");
 
  257         step = -1. * 
s0.Error().InvHessian() * 
s0.Gradient().Vec();
 
  260         print.
Warn(
"After correction, gdel =", 
gdel);
 
  277         print.
Debug(
"Do a line search", 
fcn.NumOfCalls());
 
  281         if (std::fabs(pp.Y() - 
s0.Fval()) < 
prec.Eps()) {
 
  286         print.
Debug(
"New point after Line Search :", 
"\n  FVAL     ", 
p.Fval(), 
"\n  Parameter", 
p.Vec());
 
  289      auto & 
H = 
s0.Error().Hessian();
 
  290      unsigned int n = (
scaleTR) ?   
H.Nrow() : 0;
 
  297      for (
unsigned int i = 0; i < 
n; i++){
 
  298         double d  = std::sqrt(
H(i,i));
 
  309            print.
Debug(
"scaling Trust region with diagonal matrix D ",D);
 
  327            print.
Debug(
"Accept full Newton step - it is inside TR ",delta);
 
  335               auto gScaled = Dinv * 
s0.Gradient().Grad();
 
  339               for (
unsigned int i = 0; i < 
n; i++) {
 
  340                  for (
unsigned int j = 0; 
j <=i; 
j++) {
 
  356               step = - (delta/ 
normGrad) * 
s0.Gradient().Grad();
 
  358               print.
Debug(
"Use as new point the Cauchy  point - along gradient with norm=delta ", delta);
 
  368               print.
Debug(
"Use as new point the Cauchy  point - along gradient with tau ", tau, 
"delta = ", delta);
 
  380               print.
Debug(
" dogleg equation", 
a, 
b, 
c);
 
  386                  print.
Warn(
"a is equal to zero!  a = ", 
a);
 
  387                  print.
Info(
" delta ", delta, 
" tau ", tau, 
" gHg ", 
gHg, 
" normgrad2 ", 
normGrad2);
 
  390                  double t1 = (-
b + sqrt(
b * 
b - 4. * 
a * 
c)) / (2.0 * 
a);
 
  391                  double t2 = (-
b - sqrt(
b * 
b - 4. * 
a * 
c)) / (2.0 * 
a);
 
  393                  print.
Debug(
" solution dogleg equation", 
t1, 
t2);
 
  394                  if (
t1 >= 0 && 
t1 <= 1.)
 
  401               print.
Debug(
"New dogleg point is t = ", t);
 
  403            print.
Debug(
"New accepted step is ",step);
 
  420            if (rho > 0.75 && 
norm == delta) {
 
  424         print.
Debug(
"New point after Trust region :", 
"norm tr ",
norm,
" rho ", rho,
" delta ", delta,
 
  425           "  FVAL    ", 
p.Fval(), 
"\n  Parameter", 
p.Vec());
 
  432               print.
Debug(
"Trust region: accept new point p = x + step since rho is larger than eta");
 
  436             print.
Debug(
"Trust region reject new point and repeat since rho is smaller than eta");
 
  446      print.
Debug(
"Before Gradient - NCalls = ", 
fcn.NumOfCalls());
 
  450      print.
Debug(
"After Gradient - NCalls = ", 
fcn.NumOfCalls());
 
  461      print.
Debug(
"Updated new point:", 
"\n  FVAL     ", 
p.Fval(), 
"\n  Parameter", 
p.Vec(), 
"\n  Gradient", 
g.Vec(),
 
  462                  "\n  InvHessian", 
e.InvHessian(), 
"\n  Hessian", 
e.Hessian(), 
"\n  Edm", edm);
 
  465         print.
Warn(
"Matrix not pos.def., Edm < 0");
 
  480         if (
p.Fval() < 
s0.Fval())
 
  491      print.
Debug(
"finish iteration -", 
result.size(), 
"lambda =", lambda, 
"f1 =", 
p.Fval(), 
"f0 =", 
s0.Fval(),
 
  492                  "num of calls =", 
fcn.NumOfCalls(), 
"edm =", edm);
 
  500      edm *= (1. + 3. * 
e.Dcovar());
 
  514      if (edm < std::fabs(
prec.Eps2() * 
result.back().Fval())) {
 
  515         print.
Warn(
"Machine accuracy limits further improvement");
 
  518      } 
else if (edm < 10 * 
edmval) {
 
  522         print.
Warn(
"No convergence; Edm", edm, 
"is above tolerance", 10 * 
edmval);
 
  528   print.
Debug(
"Exiting successfully", 
"Ncalls", 
fcn.NumOfCalls(), 
"FCN", 
result.back().Fval(), 
"Edm", edm, 
"Requested",
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void gc
 
FunctionMinimum Minimum(const MnFcn &fMnFcn, const GradientCalculator &fGradienCalculator, const MinimumSeed &fMinimumSeed, const MnStrategy &fMnStrategy, unsigned int maxfcn, double edmval) const override
Class the member function calculating the Minimum and verifies the result depending on the strategy.
 
FumiliMethodType fMethodType
 
const FumiliErrorUpdator & ErrorUpdator() const
Accessor to the Error updator of the builder.
 
const VariableMetricEDMEstimator & Estimator() const
Accessor to the EDM (expected vertical distance to the Minimum) estimator.
 
class holding the full result of the minimization; both internal and external (MnUserParameterState) ...
 
interface class for gradient calculators
 
Class describing a symmetric matrix of size n.
 
unsigned int size() const
 
void TraceIteration(int iter, const MinimumState &state) const
 
MinimumError keeps the inv.
 
const FunctionGradient & Gradient() const
 
const MinimumError & Error() const
 
const MinimumParameters & Parameters() const
 
const MnMachinePrecision & Precision() const
 
const MinimumState & State() const
 
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
 
Wrapper class to FCNBase interface used internally by Minuit.
 
API class for calculating the numerical covariance matrix (== 2x Inverse Hessian == 2x Inverse 2nd de...
 
Implements a 1-dimensional minimization along a given direction (i.e.
 
Sets the relative floating point (double) arithmetic precision.
 
Force the covariance matrix to be positive defined by adding extra terms in the diagonal.
 
void Debug(const Ts &... args)
 
void Error(const Ts &... args)
 
void Info(const Ts &... args)
 
void Warn(const Ts &... args)
 
API class for defining four levels of strategies: low (0), medium (1), high (2), very high (>=3); act...
 
double similarity(const LAVector &, const LASymMatrix &)
 
double inner_product(const LAVector &, const LAVector &)