36   unsigned int npar = par.size();
 
   37   unsigned int nfcn = 0;
 
   56   std::array<double, 3> 
alsb{0., 0., 0.};
 
   57   std::array<double, 3> 
flsb{0., 0., 0.};
 
   59   MnPrint print(
"MnFunctionCross");
 
   61   print.
Debug([&](std::ostream &os) {
 
   62      for (
unsigned int i = 0; i < par.size(); ++i)
 
   63         os << 
"Parameter " << par[i] << 
" value " << 
pmid[i] << 
" dir " << 
pdir[i] << 
" function min = " << 
aminsv 
   64            << 
" contour value aim = (fmin + up) = " << 
aim;
 
   70   for (
unsigned int i = 0; i < par.size(); i++) {
 
   71      unsigned int kex = par[i];
 
  102      print.
Warn(
"Parameter is at limit", 
pmid[0], 
"delta", 
pdir[0]);
 
  111   print.
Info([&](std::ostream &os) {
 
  112      os << 
"Run Migrad with fixed parameters:";
 
  113      for (
unsigned i = 0; i < 
npar; ++i)
 
  114         os << 
"\n  Pos " << par[i] << 
": " << 
fState.
Name(par[i]) << 
" = " << 
pmid[i];
 
  117   for (
unsigned int i = 0; i < 
npar; i++)
 
  130      print.
Warn(
"New minimum found while scanning parameter", par.front(), 
"new value =", 
min0.Fval(),
 
  131                 "old value =", 
fFval);
 
  134   if (
min0.HasReachedCallLimit())
 
  161   print.
Info([&](std::ostream &os) {
 
  162      os << 
"Run Migrad again (2nd) with fixed parameters:";
 
  163      for (
unsigned i = 0; i < 
npar; ++i)
 
  167   for (
unsigned int i = 0; i < 
npar; i++)
 
  177   if (
min1.HasReachedCallLimit())
 
  198      for (
unsigned int it = 0; it < 
maxlk; it++) {
 
  209         print.
Info([&](std::ostream &os) {
 
  210            os << 
"Run Migrad again (iteration " << it << 
" ) :";
 
  211            for (
unsigned i = 0; i < 
npar; ++i)
 
  212               os << 
"\n  parameter " << par[i] << 
" (" << 
fState.
Name(par[i]) << 
") fixed to " 
  216         for (
unsigned int i = 0; i < 
npar; i++)
 
  226         if (
min1.HasReachedCallLimit())
 
  255   double fdist = std::min(std::fabs(
aim - 
flsb[0]), std::fabs(
aim - 
flsb[1]));
 
  258   if (std::fabs(
aopt) > 1.)
 
  277   print.
Info([&](std::ostream &os) {
 
  278      os << 
"Run Migrad again (3rd) with fixed parameters:";
 
  279      for (
unsigned i = 0; i < 
npar; ++i)
 
  283   for (
unsigned int i = 0; i < 
npar; i++)
 
  293   if (
min2.HasReachedCallLimit())
 
  308   unsigned int ibest = 2;
 
  312   for (
unsigned int i = 0; i < 3; i++) {
 
  342      print.
Debug(
"All three points below - look again fir positive slope");
 
  352   print.
Debug(
"New straight line using point 1-2; dfda", 
dfda);
 
  366      print.
Debug(
"Parabola fit: iteration", 
ipt);
 
  384      print.
Debug(
"Parabola fit: x1", 
x1, 
"x2", 
x2, 
"s1", 
s1, 
"s2", 
s2);
 
  387         print.
Warn(
"Problem 1");
 
  401      if (std::fabs(
aopt) > 1.)
 
  415      unsigned int ileft = 3;
 
  417      unsigned int iout = 3;
 
  421      for (
unsigned int i = 0; i < 3; i++) {
 
  438         } 
else if (
ileft == 3)
 
  478      print.
Info([&](std::ostream &os) {
 
  479         os << 
"Run Migrad again at new point (#iter = " << 
ipt+1 << 
" ):";
 
  480         for (
unsigned i = 0; i < 
npar; ++i)
 
  481            os << 
"\n\t - parameter " << par[i] << 
" fixed to " << 
pmid[i] + (
aopt)*
pdir[i];
 
  484      for (
unsigned int i = 0; i < 
npar; i++)
 
  494      if (
min2.HasReachedCallLimit())
 
 
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 x2
Option_t Option_t TPoint TPoint const char x1
virtual double Up() const =0
Error definition of the function.
class holding the full result of the minimization; both internal and external (MnUserParameterState) ...
double LowerLimit() const
double UpperLimit() const
bool HasLowerLimit() const
bool HasUpperLimit() const
void SetValue(unsigned int, double)
MnCross operator()(std::span< const unsigned int >, std::span< const double >, std::span< const double >, double, unsigned int) const
const MnUserParameterState & fState
const MnStrategy & fStrategy
Sets the relative floating point (double) arithmetic precision.
double Eps() const
eps returns the smallest possible number so that 1.+eps > 1.
API class for minimization using Variable Metric technology ("MIGRAD"); allows for user interaction: ...
This class defines a parabola of the form a*x*x + b*x + c.
void Debug(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...
unsigned int Strategy() const
const MnMachinePrecision & Precision() const
const MinuitParameter & Parameter(unsigned int i) const
const char * Name(unsigned int) const
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...