152 const char *prev =
"";
156 if (std::strcmp(cs, prev) != 0)
187 std::ostringstream os;
190 std::string prefix = os.str();
195 if (prefix.find(s) != std::string::npos)
202 : fFcn(fcn), fEdm(edm), fNcalls(ncalls), fIter(iter)
217 os << std::setw(4) <<
x.fIter <<
" - ";
219 os <<
"FCN = " << std::setw(
WIDTH) <<
x.fFcn <<
" Edm = " << std::setw(
WIDTH) <<
x.fEdm
220 <<
" NCalls = " << std::setw(6) <<
x.fNcalls;
229 const unsigned int nrow =
vec.size();
230 const unsigned int np = std::min(nrow,
static_cast<unsigned int>(
MnPrint::MaxNP()) );
232 for (
unsigned int i = 0; i <
np; i++) {
249 const int pr = os.precision(8);
250 const unsigned int nrow = matrix.
Nrow();
251 const unsigned int n = std::min(nrow,
static_cast<unsigned int>(
MnPrint::MaxNP()) );
252 for (
unsigned int i = 0; i < nrow; i++) {
263 for (
unsigned int j = 0; j < nrow; j++) {
281 os <<
"\n Pos | Name | type | Value | Error +/-";
283 int pr = os.precision();
287 os <<
"\n" << std::setw(5) <<
p.Number() <<
" | " << std::setw(10) <<
p.Name() <<
" |";
290 else if (
p.IsFixed())
292 else if (
p.HasLimits())
298 os <<
p.Value() <<
" | " << std::setw(12);
302 if (std::fabs(
p.Value() -
p.LowerLimit()) < eps2) {
303 os <<
" (at lower limit)";
304 }
else if (std::fabs(
p.Value() -
p.UpperLimit()) < eps2) {
305 os <<
" (at upper limit)";
318 const int pr = os.precision(6);
320 unsigned int n = matrix.
Nrow();
321 for (
unsigned int i = 0; i <
n; i++) {
323 for (
unsigned int j = 0; j <
n; j++) {
328 double di = matrix(i, i);
329 for (
unsigned int j = 0; j <
n; j++) {
330 double dj = matrix(j, j);
332 os << matrix(i, j) / std::sqrt(std::fabs(di * dj));
342 const int pr = os.precision(6);
356 os <<
"\n Valid : " << (state.
IsValid() ?
"yes" :
"NO") <<
"\n Function calls: " << state.
NFcn()
357 <<
"\n Minimum value : " << state.
Fval() <<
"\n Edm : " << state.
Edm()
359 <<
"\n Covariance and correlation matrix: ";
363 os <<
"matrix is not present or not valid";
365 os <<
"\n Global correlation coefficients: " << state.
GlobalCC();
375 os <<
"\n Valid : " << (min.
IsValid() ?
"yes" :
"NO") <<
"\n Function calls: " << min.
NFcn()
376 <<
"\n Minimum value : " << min.
Fval() <<
"\n Edm : " << min.
Edm()
379 os <<
"\n Internal covariance matrix: " << min.
Error().
Matrix();
385 os <<
"\n FunctionMinimum is invalid:";
387 os <<
"\n State is invalid";
389 os <<
"\n Edm is above max";
391 os <<
"\n Reached call limit";
402 os <<
"\n Minimum value : " << min.
Fval() <<
"\n Edm : " << min.
Edm()
403 <<
"\n Internal parameters:" << min.
Vec() <<
"\n Internal gradient :" << min.
Gradient().
Vec();
405 os <<
"\n Internal covariance matrix:" << min.
Error().
Matrix();
414 os <<
"MnMachinePrecision " << prec.
Eps() <<
'\n';
423 os <<
"Minos # of function calls: " << me.
NFcn() <<
'\n';
426 os <<
"Minos Error is not valid." <<
'\n';
428 os <<
"lower Minos Error is not valid." <<
'\n';
430 os <<
"upper Minos Error is not valid." <<
'\n';
432 os <<
"Minos Error is Lower limit of Parameter " << me.
Parameter() <<
"." <<
'\n';
434 os <<
"Minos Error is Upper limit of Parameter " << me.
Parameter() <<
"." <<
'\n';
436 os <<
"Minos number of function calls for Lower Error exhausted." <<
'\n';
438 os <<
"Minos number of function calls for Upper Error exhausted." <<
'\n';
440 os <<
"Minos found a new Minimum in negative direction." <<
'\n';
444 os <<
"Minos found a new Minimum in positive direction." <<
'\n';
448 int pr = os.precision();
454 <<
"| positive " <<
'\n';
455 os << std::setw(4) << me.
Parameter() << std::setw(5) <<
"||";
469 os <<
"Contours # of function calls: " << ce.
NFcn() <<
'\n';
470 os <<
"MinosError in x: " <<
'\n';
472 os <<
"MinosError in y: " <<
'\n';
476 for (
auto ipar = ce().begin(); ipar != ce().end(); ++ipar) {
477 os << ipar - ce().begin() <<
" " << (*ipar).first <<
" " << (*ipar).second <<
'\n';
484std::ostream &
operator<<(std::ostream &os,
const std::pair<double, double> &point)
486 os <<
"\t x = " << point.first <<
" y = " << point.second << std::endl;
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
winID h TVirtualViewer3D TVirtualGLPainter p
winID h TVirtualViewer3D TVirtualGLPainter char TVirtualGLPainter plot
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 Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
const MinosError & YMinosError() const
unsigned int NFcn() const
const MinosError & XMinosError() const
const MnAlgebraicVector & Vec() const
class holding the full result of the minimization; both internal and external (MnUserParameterState) ...
const MinimumParameters & Parameters() const
const MinimumError & Error() const
bool HasReachedCallLimit() const
const MinimumState & State() const
const MnUserParameters & UserParameters() const
bool IsAboveMaxEdm() const
bool HasValidCovariance() const
Class describing a symmetric matrix of size n.
unsigned int Nrow() const
MnAlgebraicSymMatrix Matrix() const
const MnAlgebraicVector & Vec() const
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
const MinimumError & Error() const
const MnAlgebraicVector & Vec() const
bool HasCovariance() const
const FunctionGradient & Gradient() const
Class holding the result of Minos (lower and upper values) for a specific parameter.
unsigned int NFcn() const
unsigned int Parameter() const
const MnUserParameterState & UpperState() const
bool AtUpperLimit() const
bool AtLowerMaxFcn() const
const MnUserParameterState & LowerState() const
bool AtUpperMaxFcn() const
bool AtLowerLimit() const
class for global correlation coefficient
const std::vector< double > & GlobalCC() const
Sets the relative floating point (double) arithmetic precision.
double Eps() const
eps returns the smallest possible number so that 1.+eps > 1.
double Eps2() const
eps2 returns 2*sqrt(eps)
MnPlot produces a text-screen graphical output of (x,y) points, e.g.
Oneline(double fcn, double edm, int ncalls, int iter=-1)
static int SetMaxNP(int value)
static void ClearFilter()
static void AddFilter(const char *prefix)
static void ShowPrefixStack(bool yes)
static int SetGlobalLevel(int level)
MnPrint(const char *prefix, int level=MnPrint::GlobalLevel())
static void StreamPrefix(std::ostringstream &os)
Class containing the covariance matrix data represented as a vector of size n*(n+1)/2 Used to hide in...
unsigned int Nrow() const
class which holds the external user and/or internal Minuit representation of the parameters and error...
const MnUserParameters & Parameters() const
unsigned int NFcn() const
const MnGlobalCorrelationCoeff & GlobalCC() const
const char * Name(unsigned int) const
const MnUserCovariance & Covariance() const
int CovarianceStatus() const
bool HasCovariance() const
API class for the user interaction with the parameters; serves as input to the minimizer as well as o...
const MnMachinePrecision & Precision() const
const std::vector< ROOT::Minuit2::MinuitParameter > & Parameters() const
access to parameters (row-wise)
const_reference back() const
const T & const_reference
const_pointer end() const
static constexpr unsigned fMaxSize
const_pointer begin() const
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
std::vector< std::string > gPrefixFilter
thread_local PrefixStack< const char * > gPrefixStack
thread_local int gPrintLevel
void StreamFullPrefix(std::ostringstream &os)
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.