339static const char charal[29] = 
" .ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
  454      gROOT->GetListOfSpecials()->Add(
this);
 
 
  481      gROOT->GetListOfSpecials()->Add(
this);
 
 
  491   Error(
"TMinuit", 
"can not copy construct TMinuit");
 
 
  504      if (
gROOT != 
nullptr && 
gROOT->GetListOfSpecials() != 
nullptr) 
gROOT->GetListOfSpecials()->Remove(
this);
 
 
  586   for (
int i = 0; i < 
fMaxpar; i++) {
 
 
  666      Warning(
"Contour",
"Cannot find more than 4 points, no TGraph returned");
 
  674      Warning(
"Contour",
"Returning a TGraph with %d points only",
npfound);
 
  683   if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TMinuitGraph"))) {
 
  684      if (
h->LoadPlugin() != -1)
 
 
  833   mnexcm( 
"FIX", tmp,  1,  err );
 
 
  886   mnexcm( 
"MIGRAD", tmp, 0, err );
 
 
  900   mnexcm( 
"RELEASE", tmp, 1, err );
 
 
  912   mnexcm( 
"SET ERRDEF", &
up, 1, err );
 
 
  939   m->SetParamPtrs(args);
 
 
  958   mnexcm( 
"SET PRINT", tmp, 1, err );
 
 
  980      Printf(
" FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.");
 
 
 1051   if (
naa == -1) 
return;
 
 1053   if (
naa > 1 || 
nb == 1) 
return;
 
 1058   if (
nb << 1 != 
naa) 
return;
 
 
 1079   for (i = 1; i <= 
fNpar; ++i) {
 
 
 1113   for (i = 1; i <= 
fMaxext; ++i) {
 
 
 1134   static const char *
const clabel = 
"0123456789ABCDEFGHIJ";
 
 1141   Int_t i,  
ngrid, 
ixmid, 
nparx, ix, 
nx, 
ny, 
ki1, 
ki2, 
ixzero, iy, 
ics;
 
 1177   if (
nx < 11)   
nx = 11;
 
 1178   if (
ny < 11)   
ny = 11;
 
 1179   if (
nx >= 115) 
nx = 114;
 
 1196   for (i = 1; i <= 20; ++i) {        
contur[i-1] = 
fAmin + 
fUp*(i-1)*(i-1); }
 
 1206   for (ix = 1; ix <= 
nx + 1; ++ix) {
 
 1222   for (iy = 1; iy <= 
ny; ++iy) {
 
 1235      for (ix = 1; ix <= 
nx + 1; ++ix) {
 
 1242      for (ix = 1; ix <= 
nx; ++ix) {
 
 1269      Printf(
"        %12.4g%s%12.4g",xlo,(
const char*)
chln,xup);
 
 1274   Printf(
"       X-AXIS: PARAMETER %3d %s  ONE COLUMN=%12.4g" 
 1283   Printf(
" INVALID PARAMETER NUMBER(S) REQUESTED.  IGNORED.");
 
 
 1319   lenbuf = 
crdbuf.Length();
 
 1324   for (i = 1; i <= 
TMath::Min(20,lenbuf); ++i) {
 
 1325      if (
crdbuf[i-1] == 
'\'') 
break;
 
 1326      if (
crdbuf[i-1] == 
' ') {
 
 1334   if (
ipos > lenbuf) {
 
 1335      Printf(
" BLANK COMMAND IGNORED.");
 
 1368      Printf(
" COMMAND CANNOT BE INTERPRETED");
 
 
 1405   Int_t nall, 
iold, 
line, 
mpar, 
ierr, 
inew, 
move, next, i, 
j, 
nfcol, 
iercr;
 
 1406   Int_t idist=0, 
npcol, 
kints, 
i2, 
i1, 
lr, 
nfcnco=0, 
ki1, 
ki2, 
ki3, 
ke3;
 
 1432      Printf(
" START MNCONTOUR CALCULATION OF %4d POINTS ON CONTOUR.",
nptu);
 
 1437            Printf(
" EACH POINT IS A MINIMUM WITH RESPECT TO PARAMETER %3d  %s",
ke3,(
const char*)
fCpnam[
ke3-1]);
 
 1439            Printf(
" EACH POINT IS A MINIMUM WITH RESPECT TO THE OTHER %3d VARIABLE PARAMETERS.",
fNpar - 2);
 
 1449      mnwarn(
"W", 
"MNContour ", 
"Contour squeezed by parameter limits.");
 
 1458      mnwarn(
"W", 
"MNContour ", 
"Contour squeezed by parameter limits.");
 
 1469      mnwarn(
"W", 
"MNContour ", 
"Contour squeezed by parameter limits.");
 
 1477      mnwarn(
"W", 
"MNContour ", 
"Contour squeezed by parameter limits.");
 
 1487      Printf(
" Plot of four points found by MINOS");
 
 1493      for (i = 2; i <= 
nall; ++i) {
 
 1511   for (i = 1; i <= 
mpar; ++i) { 
fXt[i-1] = 
fX[i-1]; }
 
 1514   for (i = 1; i <= 
mpar; ++i) {
 
 1561               Printf(
" MNCONT CANNOT FIND NEXT POINT ON CONTOUR.  ONLY %3d POINTS FOUND.",
nowpts);
 
 1565         mnwarn(
"W", 
"MNContour ", 
"Cannot find midpoint, try closer.");
 
 1591      for (i = 2; i <= 
nall; ++i) {
 
 1626   for (i = 1; i <= 
mpar; ++i) {
 
 1645   Printf(
" INVALID PARAMETER NUMBERS.");
 
 1648   Printf(
" LESS THAN FOUR POINTS REQUESTED.");
 
 1654   Printf(
" MNCONT UNABLE TO FIND FOUR POINTS.");
 
 
 1682   char *
cnull  = 
nullptr;
 
 1683   const char *
cnumer = 
"123456789-.0+";
 
 1686   Int_t ifld, 
iend, 
lend, left, 
nreq, 
ipos, 
kcmnd, 
nextb, 
ic, 
ibegin, 
ltoadd;
 
 1721      Printf(
" MINUIT WARNING: INPUT DATA WORD TOO LONG.");
 
 1748      for (
ic = 1; 
ic <= 13; ++
ic) {
 
 1772         Printf(
" MINUIT WARNING IN MNCRCK: ");
 
 1773         Printf(
" COMMAND HAS INPUT %5d NUMERIC FIELDS, BUT MINUIT CAN ACCEPT ONLY%3d",
nreq,
mxp);
 
 
 1830   for (ik = 1; ik <= 2; ++ik) {
 
 1836         if (
fKe2cr == 0) 
continue;
 
 1842      if (
zdir == 0) 
continue;
 
 1894   mnwarn(
"D", 
"MNCROS    ", 
"Looking for slope of the right sign");
 
 1896   for (it = 1; it <= 
maxlk; ++it) {
 
 1921   mnwarn(
"W", 
"MNCROS    ", 
"Cannot find slope of the right sign");
 
 1961   for (i = 1; i <= 3; ++i) {
 
 1986   if (
coeff[2] <= 0) {
 
 1987      mnwarn(
"D", 
"MNCROS    ", 
"Curvature is negative near contour line.");
 
 1991      mnwarn(
"D", 
"MNCROS    ", 
"Problem 2, impossible determinant");
 
 2001      Printf(
" MNCONTour problem 1");
 
 2024   for (i = 1; i <= 3; ++i) {
 
 2100      for (i = 1; i <= 
ipt; ++i) {
 
 2114         Printf(
"POINTS LABELLED '+' WERE TOO HIGH TO PLOT.");
 
 2117         Printf(
"RIGHTMOST POINT IS UP AGAINST LIMIT.");
 
 
 2137      Printf(
" FUNCTION MUST BE MINIMIZED BEFORE CALLING %s",(
const char*)
fCfrom);
 
 2144         mnwarn(
"W", 
fCfrom, 
"NO ERROR MATRIX.  WILL IMPROVISE.");
 
 2145         for (i = 1; i <= 
fNpar; ++i) {
 
 2147            for (
j = 1; 
j <= i-1; ++
j) {
 
 2152            if (
fG2[i-1] <= 0) {
 
 
 2201      Printf(
"  FIRST DERIVATIVE DEBUG PRINTOUT.  MNDERI");
 
 2202      Printf(
" PAR    DERIV     STEP      MINSTEP   OPTSTEP  D1-D2    2ND DRV");
 
 2219   for (i = 1; i <= 
fNpar; ++i) {
 
 2232         if (
fGstep[i-1] < 0 && step > .5) step = .5;
 
 2246         fX[i-1] = 
xtf + step;
 
 2250         fX[i-1] = 
xtf - step;
 
 
 2330      if (
l < 1) 
goto L25;
 
 2332      for (k = 1; k <= 
l; ++k) {
 
 2339      if (
gl > 1
e-35) 
goto L30;
 
 2347      if (
f >= 0) 
gl = -
gl;
 
 2352      for (
j = 1; 
j <= 
l; ++
j) {
 
 2356         if (
j >= 
l) 
goto L47;
 
 2364      for (
j = 1; 
j <= 
l; ++
j) {
 
 2368         for (k = 1; k <= 
j; ++k) {
 
 2378   for (i = 1; i <= 
n; ++i) {
 
 2382      for (
j = 1; 
j <= 
l; ++
j) {
 
 2390      if (
l == 0) 
continue;
 
 2392      for (
j = 1; 
j <= 
l; ++
j) {
 
 2399   for (i = 2; i <= 
n; ++i) {
 
 2406   for (
l = 1; 
l <= 
n; ++
l) {
 
 2410      for (m1 = 
l; m1 <= 
n; ++m1) {
 
 2419      if (
j == 
mits) 
return;
 
 2427      for (i = 
l; i <= 
n; ++i) { 
work[i] -= 
h; }
 
 2434      for (
i1 = 
l; 
i1 <= m1; ++
i1) {
 
 2456         for (k = 1; k <= 
n; ++k) {
 
 2470   for (i = 1; i <= 
n1; ++i) {
 
 2474      for (
j = 
i1; 
j <= 
n; ++
j) {
 
 2480      if (k == i) 
continue;
 
 2484      for (
j = 1; 
j <= 
n; ++
j) {
 
 
 2517   if (
fISW[1] < 1) 
return;
 
 2519      Printf(
" EXTERNAL ERROR MATRIX.    NDIM=%4d    NPAR=%3d    ERR DEF=%g",ndim,
fNpar,
fUp);
 
 2526         Printf(
" USER-DIMENSIONED  ARRAY EMAT NOT BIG ENOUGH. REDUCED MATRIX CALCULATED.");
 
 2534      Printf(
" ELEMENTS ABOVE DIAGONAL ARE NOT PRINTED.");
 
 2537   for (i = 1; i <= 
npard; ++i) {
 
 2540      for (
j = 1; 
j <= i; ++
j) {
 
 2549      for (i = 1; i <= 
npard; ++i) {
 
 2555            if (
k2 > iz) 
k2 = iz;
 
 
 2591   if (eplus == 
fUndefi)  eplus = 0;
 
 2599   if (
fISW[1] < 2) 
return;
 
 
 2669   static const char *
const cname[40] = {
 
 2727   if (
lk > 20) 
lk = 20;
 
 2744         for (i = 1; i <= 
lnow; ++i) {
 
 2756            for (i = 
lnow + 1; i <= 
kll; ++i) {
 
 2762            Printf(
"  ERROR: ABOVE CALL TO MNEXCM TRIED TO PASS MORE THAN %d PARAMETERS.", 
fMaxpar);
 
 2780   for (i = 1; i <= 
nntot; ++i) {
 
 2788   if (
fCword(0,4) == 
"MINO") i = 5;
 
 2789   if (i != 6 && i != 7 && i != 8 && i != 23) {
 
 2804      case 10:  
goto L1000;
 
 2805      case 11:  
goto L1100;
 
 2806      case 12:  
goto L1200;
 
 2807      case 13:  
goto L1300;
 
 2808      case 14:  
goto L1400;
 
 2809      case 15:  
goto L1500;
 
 2810      case 16:  
goto L1600;
 
 2811      case 17:  
goto L1700;
 
 2812      case 18:  
goto L1800;
 
 2813      case 19:  
goto L1900;
 
 2814      case 20:  
goto L1900;
 
 2815      case 21:  
goto L1900;
 
 2816      case 22:  
goto L2200;
 
 2817      case 23:  
goto L2300;
 
 2818      case 24:  
goto L2400;
 
 2819      case 25:  
goto L1900;
 
 2820      case 26:  
goto L2600;
 
 2821      case 27:  
goto L3300;
 
 2822      case 28:  
goto L3300;
 
 2823      case 29:  
goto L3300;
 
 2824      case 30:  
goto L3300;
 
 2825      case 31:  
goto L3300;
 
 2826      case 32:  
goto L3300;
 
 2827      case 33:  
goto L3300;
 
 2828      case 34:  
goto L3400;
 
 2829      case 35:  
goto L3500;
 
 2830      case 36:  
goto L3600;
 
 2831      case 37:  
goto L3700;
 
 2832      case 38:  
goto L3800;
 
 2833      case 39:  
goto L3900;
 
 2834      case 40:  
goto L4000;
 
 2851   if (
fISW[3] >= 1) 
return;
 
 2853   if (
fISW[0] == 1) 
return;
 
 2854   if (
fCword(0,3) == 
"MIG") 
return;
 
 2859   if (
fISW[0] == 1) 
return;
 
 2879   Printf(
" TOO MANY FUNCTION CALLS. MINOS GIVES UP");
 
 2899      Printf(
"%s:  NO PARAMETERS REQUESTED ",(
const char*)
fCword);
 
 2904      chwhy = 
" IS UNDEFINED.";
 
 2908      chwhy = 
" IS CONSTANT.  ";
 
 2912         chwhy = 
" ALREADY FIXED.";
 
 2918         chwhy = 
" ALREADY VARIABLE.";
 
 2941   if (it > 1 || it < 0) 
goto L1005;
 
 2952   Printf(
" IGNORED.  UNKNOWN ARGUMENT:%4d",it);
 
 2983         Printf(
"%s:  NO PARAMETERS REQUESTED ",(
const char*)
fCword);
 
 3041      if (
fISW[4] >= 0) 
Printf(
" CALL TO USER FUNCTION WITH IFLAG = 3");
 
 3053      Printf(
" MINUIT MEMORY CLEARED. NO PARAMETERS NOW DEFINED.");
 
 3089   if (step <= 0) step = 2;
 
 3092   for (i = 1; i <= 
fNpar; ++i) {
 
 3103   Printf(
" BLANK COMMAND IGNORED.");
 
 3109   Printf(
" THE *COVARIANCE* COMMAND IS OSBSOLETE. THE COVARIANCE MATRIX IS NOW SAVED IN A DIFFERENT FORMAT WITH THE *SAVE* COMMAND AND READ IN WITH:*SET COVARIANCE*");
 
 3137   Printf(
" OBSOLETE COMMAND:%s   PLEASE USE:%s",(
const char*)
fCword 
 
 3173   Int_t kold, 
nold, 
ndex, 
knew, 
iext, i, 
j, 
m, 
n, 
lc, ik;
 
 3180      Printf(
" MINUIT ERROR.  ARGUMENT TO MNFIXP=%4d",
iint);
 
 3186      Printf(
" MINUIT CANNOT FIX PARAMETER %4d MAXIMUM NUMBER THAT CAN BE FIXED IS %d",
iext,
fMaxpar);
 
 3206   for (ik = 
iext + 1; ik <= 
fNu; ++ik) {
 
 3220   if (
fISW[1] <= 0) 
return;
 
 3222   if (
fNpar <= 0)   
return;
 
 3223   for (i = 1; i <= 
nold; ++i) {
 
 3232   for (i = 1; i <= 
nold; ++i) {
 
 3233      for (
j = 1; 
j <= i; ++
j) {
 
 
 3263      Printf(
" CALL TO MNFREE IGNORED.  ARGUMENT GREATER THAN ONE");
 
 3266      Printf(
" CALL TO MNFREE IGNORED.  THERE ARE NO FIXED PARAMETERS");
 
 3268   if (k == 1 || k == 0) 
goto L40;
 
 3273   Printf(
" IGNORED.  PARAMETER SPECIFIED IS ALREADY VARIABLE.");
 
 3279   Printf(
" PARAMETER %4d NOT FIXED.  CANNOT BE RELEASED.",
ka);
 
 3292   for (i = ik + 1; i <= 
fNpfix; ++i) {
 
 3313   for (ik = 
fNu; ik >= 
ir; --ik) {
 
 3344      Printf(
"                   PARAMETER %4d  %s RESTORED TO VARIABLE.",
ir,
 
 3347   if (k == 0) 
goto L40;
 
 
 3385   Printf(
" CHECK OF GRADIENT CALCULATION IN FCN");
 
 3386   Printf(
"            PARAMETER      G(IN FCN)   G(MINUIT)  DG(MINUIT)   AGREEMENT");
 
 3391      const char *
cwd = 
"GOOD";
 
 3403      Printf(
"       %5d  %10s%12.4e%12.4e%12.4e    %s",i
 
 3404                    ,(
const char*)
fCpnam[i-1]
 
 3408      Printf(
"  AGREEMENT=NONE  MEANS FCN DID NOT CALCULATE THE DERIVATIVE");
 
 3411      Printf(
" MINUIT DOES NOT ACCEPT DERIVATIVE CALCULATIONS BY FCN");
 
 3412      Printf(
" TO FORCE ACCEPTANCE, ENTER *SET GRAD    1*");
 
 
 3447      Printf(
"   ==>List of MINUIT Interactive commands:");
 
 3448      Printf(
" CLEar     Reset all parameter names and values undefined");
 
 3449      Printf(
" CONtour   Make contour map of the user function");
 
 3450      Printf(
" EXIT      Exit from Interactive Minuit");
 
 3451      Printf(
" FIX       Cause parameter(s) to remain constant");
 
 3452      Printf(
" HESse     Calculate the Hessian or error matrix.");
 
 3453      Printf(
" IMPROVE   Search for a new minimum around current minimum");
 
 3454      Printf(
" MIGrad    Minimize by the method of Migrad");
 
 3455      Printf(
" MINImize  MIGRAD + SIMPLEX method if Migrad fails");
 
 3456      Printf(
" MINOs     Exact (non-linear) parameter error analysis");
 
 3457      Printf(
" MNContour Calculate one MINOS function contour");
 
 3458      Printf(
" PARameter Define or redefine new parameters and values");
 
 3459      Printf(
" RELease   Make previously FIXed parameters variable again");
 
 3460      Printf(
" REStore   Release last parameter fixed");
 
 3461      Printf(
" SAVe      Save current parameter values on a file");
 
 3462      Printf(
" SCAn      Scan the user function by varying parameters");
 
 3463      Printf(
" SEEk      Minimize by the method of Monte Carlo");
 
 3464      Printf(
" SET       Set various MINUIT constants or conditions");
 
 3465      Printf(
" SHOw      Show values of current constants or conditions");
 
 3466      Printf(
" SIMplex   Minimize by the method of Simplex");
 
 3476      Printf(
" Resets all parameter names and values to undefined.");
 
 3477      Printf(
" Must normally be followed by a PARameters command or ");
 
 3478      Printf(
" equivalent, in order to define parameter values.");
 
 3486      Printf(
" ***>CONTOUR <par1>  <par2>  [devs]  [ngrid]");
 
 3487      Printf(
" Instructs Minuit to trace contour lines of the user function");
 
 3488      Printf(
" with respect to the two parameters whose external numbers");
 
 3489      Printf(
" are <par1> and <par2>.");
 
 3490      Printf(
" Other variable parameters of the function, if any, will have");
 
 3491      Printf(
" their values fixed at the current values during the contour");
 
 3492      Printf(
" tracing. The optional parameter [devs] (default value 2.)");
 
 3493      Printf(
" gives the number of standard deviations in each parameter");
 
 3494      Printf(
" which should lie entirely within the plotting area.");
 
 3495      Printf(
" Optional parameter [ngrid] (default value 25 unless page");
 
 3496      Printf(
" size is too small) determines the resolution of the plot,");
 
 3497      Printf(
" i.e. the number of rows and columns of the grid at which the");
 
 3498      Printf(
" function will be evaluated. [See also MNContour.]");
 
 3507      Printf(
" Signals the end of a data block (i.e., the end of a fit),");
 
 3508      Printf(
" and implies that execution should continue, because another");
 
 3509      Printf(
" Data Block follows. A Data Block is a set of Minuit data");
 
 3510      Printf(
" consisting of");
 
 3512      Printf(
"     (2) One or more Parameter Definitions,");
 
 3513      Printf(
"     (3) A blank line, and");
 
 3514      Printf(
"     (4) A set of Minuit Commands.");
 
 3515      Printf(
" The END command is used when more than one Data Block is to");
 
 3516      Printf(
" be used with the same FCN function. It first causes Minuit");
 
 3517      Printf(
" to issue a CALL FCN with IFLAG=3, in order to allow FCN to");
 
 3518      Printf(
" perform any calculations associated with the final fitted");
 
 3519      Printf(
" parameter values, unless a CALL FCN 3 command has already");
 
 3520      Printf(
" been executed at the current FCN value.");
 
 3529      Printf(
" Signals the end of execution.");
 
 3530      Printf(
" The EXIT command first causes Minuit to issue a CALL FCN");
 
 3531      Printf(
" with IFLAG=3, to allow FCN to perform any calculations");
 
 3532      Printf(
" associated with the final fitted parameter values, unless a");
 
 3533      Printf(
" CALL FCN 3 command has already been executed.");
 
 3541      Printf(
" ***>FIX} <parno> [parno] ... [parno]");
 
 3542      Printf(
" Causes parameter(s) <parno> to be removed from the list of");
 
 3543      Printf(
" variable parameters, and their value(s) will remain constant");
 
 3544      Printf(
" during subsequent minimizations, etc., until another command");
 
 3545      Printf(
" changes their value(s) or status.");
 
 3553      Printf(
" ***>HESse  [maxcalls]");
 
 3554      Printf(
" Calculate, by finite differences, the Hessian or error matrix.");
 
 3555      Printf(
"  That is, it calculates the full matrix of second derivatives");
 
 3556      Printf(
" of the function with respect to the currently variable");
 
 3557      Printf(
" parameters, and inverts it, printing out the resulting error");
 
 3558      Printf(
" matrix. The optional argument [maxcalls] specifies the");
 
 3559      Printf(
" (approximate) maximum number of function calls after which");
 
 3560      Printf(
" the calculation will be stopped.");
 
 3568      Printf(
" ***>IMPROVE  [maxcalls]");
 
 3569      Printf(
" If a previous minimization has converged, and the current");
 
 3570      Printf(
" values of the parameters therefore correspond to a local");
 
 3571      Printf(
" minimum of the function, this command requests a search for");
 
 3572      Printf(
" additional distinct local minima.");
 
 3573      Printf(
" The optional argument [maxcalls] specifies the (approximate");
 
 3574      Printf(
" maximum number of function calls after which the calculation");
 
 3575      Printf(
" will be stopped.");
 
 3583      Printf(
" ***>MIGrad  [maxcalls]  [tolerance]");
 
 3584      Printf(
" Causes minimization of the function by the method of Migrad,");
 
 3585      Printf(
" the most efficient and complete single method, recommended");
 
 3586      Printf(
" for general functions (see also MINImize).");
 
 3587      Printf(
" The minimization produces as a by-product the error matrix");
 
 3588      Printf(
" of the parameters, which is usually reliable unless warning");
 
 3589      Printf(
" messages are produced.");
 
 3590      Printf(
" The optional argument [maxcalls] specifies the (approximate)");
 
 3591      Printf(
" maximum number of function calls after which the calculation");
 
 3592      Printf(
" will be stopped even if it has not yet converged.");
 
 3593      Printf(
" The optional argument [tolerance] specifies required tolerance");
 
 3594      Printf(
" on the function value at the minimum.");
 
 3595      Printf(
" The default tolerance is 0.1, and the minimization will stop");
 
 3596      Printf(
" when the estimated vertical distance to the minimum (EDM) is");
 
 3597      Printf(
" less than 0.001*[tolerance]*UP (see [SET ERRordef]).");
 
 3605      Printf(
" ***>MINImize  [maxcalls] [tolerance]");
 
 3606      Printf(
" Causes minimization of the function by the method of Migrad,");
 
 3607      Printf(
" as does the MIGrad command, but switches to the SIMplex method");
 
 3608      Printf(
" if Migrad fails to converge. Arguments are as for MIGrad.");
 
 3609      Printf(
" Note that command requires four characters to be unambiguous.");
 
 3617      Printf(
" ***>MINOs  [maxcalls]  [parno] [parno] ...");
 
 3618      Printf(
" Causes a Minos error analysis to be performed on the parameters");
 
 3619      Printf(
" whose numbers [parno] are specified. If none are specified,");
 
 3620      Printf(
" Minos errors are calculated for all variable parameters.");
 
 3621      Printf(
" Minos errors may be expensive to calculate, but are very");
 
 3622      Printf(
" reliable since they take account of non-linearities in the");
 
 3623      Printf(
" problem as well as parameter correlations, and are in general");
 
 3625      Printf(
" The optional argument [maxcalls] specifies the (approximate)");
 
 3626      Printf(
" maximum number of function calls per parameter requested,");
 
 3627      Printf(
" after which the calculation will stop for that parameter.");
 
 3635      Printf(
" ***>MNContour  <par1> <par2> [npts]");
 
 3636      Printf(
" Calculates one function contour of FCN with respect to");
 
 3637      Printf(
" parameters par1 and par2, with FCN minimized always with");
 
 3638      Printf(
" respect to all other NPAR-2 variable parameters (if any).");
 
 3639      Printf(
" Minuit will try to find npts points on the contour (default 20)");
 
 3640      Printf(
" If only two parameters are variable at the time, it is not");
 
 3641      Printf(
" necessary to specify their numbers. To calculate more than");
 
 3642      Printf(
" one contour, it is necessary to SET ERRordef to the appropriate");
 
 3643      Printf(
" value and issue the MNContour command for each contour.");
 
 3651      Printf(
" ***>PARameters");
 
 3652      Printf(
" followed by one or more parameter definitions.");
 
 3653      Printf(
" Parameter definitions are of the form:");
 
 3654      Printf(
"   <number>  ''name''  <value>  <step>  [lolim] [uplim] ");
 
 3656      Printf(
"  3  ''K width''  1.2   0.1");
 
 3657      Printf(
" the last definition is followed by a blank line or a zero.");
 
 3665      Printf(
" ***>RELease  <parno> [parno] ... [parno]");
 
 3666      Printf(
" If <parno> is the number of a previously variable parameter");
 
 3667      Printf(
" which has been fixed by a command: FIX <parno>, then that");
 
 3668      Printf(
" parameter will return to variable status.  Otherwise a warning");
 
 3669      Printf(
" message is printed and the command is ignored.");
 
 3670      Printf(
" Note that this command operates only on parameters which were");
 
 3671      Printf(
" at one time variable and have been FIXed. It cannot make");
 
 3672      Printf(
" constant parameters variable; that must be done by redefining");
 
 3673      Printf(
" the parameter with a PARameters command.");
 
 3681      Printf(
" ***>REStore  [code]");
 
 3682      Printf(
" If no [code] is specified, this command restores all previously");
 
 3683      Printf(
" FIXed parameters to variable status. If [code]=1, then only");
 
 3684      Printf(
" the last parameter FIXed is restored to variable status.");
 
 3685      Printf(
" If code is neither zero nor one, the command is ignored.");
 
 3694      Printf(
" Signals the end of a data block, and instructs Minuit to return");
 
 3695      Printf(
" to the program which called it. The RETurn command first");
 
 3696      Printf(
" causes Minuit to CALL FCN with IFLAG=3, in order to allow FCN");
 
 3697      Printf(
" to perform any calculations associated with the final fitted");
 
 3698      Printf(
" parameter values, unless a CALL FCN 3 command has already been");
 
 3699      Printf(
" executed at the current FCN value.");
 
 3708      Printf(
" Causes the current parameter values to be saved on a file in");
 
 3709      Printf(
" such a format that they can be read in again as Minuit");
 
 3710      Printf(
" parameter definitions. If the covariance matrix exists, it is");
 
 3711      Printf(
" also output in such a format. The unit number is by default 7,");
 
 3712      Printf(
" or that specified by the user in their call to MINTIO or");
 
 3713      Printf(
" MNINIT. The user is responsible for opening the file previous");
 
 3714      Printf(
" to issuing the [SAVe] command (except where this can be done");
 
 3715      Printf(
" interactively).");
 
 3723      Printf(
" ***>SCAn  [parno]  [numpts] [from]  [to]");
 
 3724      Printf(
" Scans the value of the user function by varying parameter");
 
 3725      Printf(
" number [parno], leaving all other parameters fixed at the");
 
 3726      Printf(
" current value. If [parno] is not specified, all variable");
 
 3727      Printf(
" parameters are scanned in sequence.");
 
 3728      Printf(
" The number of points [numpts] in the scan is 40 by default,");
 
 3729      Printf(
" and cannot exceed 100. The range of the scan is by default");
 
 3730      Printf(
" 2 standard deviations on each side of the current best value,");
 
 3731      Printf(
" but can be specified as from [from] to [to].");
 
 3732      Printf(
" After each scan, if a new minimum is found, the best parameter");
 
 3733      Printf(
" values are retained as start values for future scans or");
 
 3734      Printf(
" minimizations. The curve resulting from each scan is plotted");
 
 3735      Printf(
" on the output unit in order to show the approximate behaviour");
 
 3736      Printf(
" of the function.");
 
 3737      Printf(
" This command is not intended for minimization, but is sometimes");
 
 3738      Printf(
" useful for debugging the user function or finding a");
 
 3739      Printf(
" reasonable starting point.");
 
 3747      Printf(
" ***>SEEk  [maxcalls]  [devs]");
 
 3748      Printf(
" Causes a Monte Carlo minimization of the function, by choosing");
 
 3749      Printf(
" random values of the variable parameters, chosen uniformly");
 
 3750      Printf(
" over a hypercube centered at the current best value.");
 
 3751      Printf(
" The region size is by default 3 standard deviations on each");
 
 3752      Printf(
" side, but can be changed by specifying the value of [devs].");
 
 3760      Printf(
" ***>SET <option_name>");
 
 3762      Printf(
"    Informs Minuit that it is running in batch mode.");
 
 3765      Printf(
"  SET EPSmachine  <accuracy>");
 
 3766      Printf(
"    Informs Minuit that the relative floating point arithmetic");
 
 3767      Printf(
"    precision is <accuracy>. Minuit determines the nominal");
 
 3768      Printf(
"    precision itself, but the SET EPSmachine command can be");
 
 3769      Printf(
"    used to override Minuit own determination, when the user");
 
 3770      Printf(
"    knows that the FCN function value is not calculated to");
 
 3771      Printf(
"    the nominal machine accuracy. Typical values of <accuracy>");
 
 3772      Printf(
"    are between 10**-5 and 10**-14.");
 
 3775      Printf(
"  SET ERRordef  <up>");
 
 3776      Printf(
"    Sets the value of UP (default value= 1.), defining parameter");
 
 3777      Printf(
"    errors. Minuit defines parameter errors as the change");
 
 3778      Printf(
"    in parameter value required to change the function value");
 
 3779      Printf(
"    by UP. Normally, for chisquared fits UP=1, and for negative");
 
 3780      Printf(
"    log likelihood, UP=0.5.");
 
 3783      Printf(
"   SET GRAdient  [force]");
 
 3784      Printf(
"    Informs Minuit that the user function is prepared to");
 
 3785      Printf(
"    calculate its own first derivatives and return their values");
 
 3786      Printf(
"    in the array GRAD when IFLAG=2 (see specs of FCN).");
 
 3787      Printf(
"    If [force] is not specified, Minuit will calculate");
 
 3788      Printf(
"    the FCN derivatives by finite differences at the current");
 
 3789      Printf(
"    point and compare with the user calculation at that point,");
 
 3790      Printf(
"    accepting the user values only if they agree.");
 
 3791      Printf(
"    If [force]=1, Minuit does not do its own derivative");
 
 3792      Printf(
"    calculation, and uses the derivatives calculated in FCN.");
 
 3795      Printf(
"   SET INPut  [unitno]  [filename]");
 
 3796      Printf(
"    Causes Minuit, in data-driven mode only, to read subsequent");
 
 3797      Printf(
"    commands (or parameter definitions) from a different input");
 
 3798      Printf(
"    file. If no [unitno] is specified, reading reverts to the");
 
 3799      Printf(
"    previous input file, assuming that there was one.");
 
 3800      Printf(
"    If [unitno] is specified, and that unit has not been opened,");
 
 3801      Printf(
"    then Minuit attempts to open the file [filename]} if a");
 
 3802      Printf(
"    name is specified. If running in interactive mode and");
 
 3803      Printf(
"    [filename] is not specified and [unitno] is not opened,");
 
 3804      Printf(
"    Minuit prompts the user to enter a file name.");
 
 3805      Printf(
"    If the word REWIND is added to the command (note:no blanks");
 
 3806      Printf(
"    between INPUT and REWIND), the file is rewound before");
 
 3807      Printf(
"    reading. Note that this command is implemented in standard");
 
 3808      Printf(
"    Fortran 77 and the results may depend on the  system;");
 
 3809      Printf(
"    for example, if a filename is given under VM/CMS, it must");
 
 3810      Printf(
"    be preceded by a slash.");
 
 3813      Printf(
"   SET INTeractive");
 
 3814      Printf(
"    Informs Minuit that it is running interactively.");
 
 3817      Printf(
"   SET LIMits  [parno]  [lolim]  [uplim]");
 
 3818      Printf(
"    Allows the user to change the limits on one or all");
 
 3819      Printf(
"    parameters. If no arguments are specified, all limits are");
 
 3820      Printf(
"    removed from all parameters. If [parno] alone is specified,");
 
 3821      Printf(
"    limits are removed from parameter [parno].");
 
 3822      Printf(
"    If all arguments are specified, then parameter [parno] will");
 
 3823      Printf(
"    be bounded between [lolim] and [uplim].");
 
 3824      Printf(
"    Limits can be specified in either order, Minuit will take");
 
 3825      Printf(
"    the smaller as [lolim] and the larger as [uplim].");
 
 3826      Printf(
"    However, if [lolim] is equal to [uplim], an error condition");
 
 3830      Printf(
"   SET LINesperpage");
 
 3831      Printf(
"     Sets the number of lines for one page of output.");
 
 3832      Printf(
"     Default value is 24 for interactive mode");
 
 3835      Printf(
"   SET NOGradient");
 
 3836      Printf(
"    The inverse of SET GRAdient, instructs Minuit not to");
 
 3837      Printf(
"    use the first derivatives calculated by the user in FCN.");
 
 3840      Printf(
"   SET NOWarnings");
 
 3841      Printf(
"    Suppresses Minuit warning messages.");
 
 3844      Printf(
"   SET OUTputfile  <unitno>");
 
 3845      Printf(
"    Instructs Minuit to write further output to unit <unitno>.");
 
 3848      Printf(
"   SET PAGethrow  <integer>");
 
 3849      Printf(
"    Sets the carriage control character for ``new page'' to");
 
 3850      Printf(
"    <integer>. Thus the value 1 produces a new page, and 0");
 
 3851      Printf(
"    produces a blank line, on some devices (see TOPofpage)");
 
 3855      Printf(
"   SET PARameter  <parno>  <value>");
 
 3856      Printf(
"    Sets the value of parameter <parno> to <value>.");
 
 3857      Printf(
"    The parameter in question may be variable, fixed, or");
 
 3858      Printf(
"    constant, but must be defined.");
 
 3861      Printf(
"   SET PRIntout  <level>");
 
 3862      Printf(
"    Sets the print level, determining how much output will be");
 
 3863      Printf(
"    produced. Allowed values and their meanings are displayed");
 
 3864      Printf(
"    after a SHOw PRInt command, and are currently <level>=:");
 
 3865      Printf(
"      [-1]  no output except from SHOW commands");
 
 3866      Printf(
"       [0]  minimum output");
 
 3867      Printf(
"       [1]  default value, normal output");
 
 3868      Printf(
"       [2]  additional output giving intermediate results.");
 
 3869      Printf(
"       [3]  maximum output, showing progress of minimizations.");
 
 3870      Printf(
"    Note: See also the SET WARnings command.");
 
 3873      Printf(
"   SET RANdomgenerator  <seed>");
 
 3874      Printf(
"    Sets the seed of the random number generator used in SEEk.");
 
 3875      Printf(
"    This can be any integer between 10000 and 900000000, for");
 
 3876      Printf(
"    example one which was output from a SHOw RANdom command of");
 
 3877      Printf(
"    a previous run.");
 
 3880      Printf(
"   SET STRategy  <level>");
 
 3881      Printf(
"    Sets the strategy to be used in calculating first and second");
 
 3882      Printf(
"    derivatives and in certain minimization methods.");
 
 3883      Printf(
"    In general, low values of <level> mean fewer function calls");
 
 3884      Printf(
"    and high values mean more reliable minimization.");
 
 3885      Printf(
"    Currently allowed values are 0, 1 (default), and 2.");
 
 3889      Printf(
"    Informs Minuit that the next input line is to be considered");
 
 3890      Printf(
"    the (new) title for this task or sub-task.  This is for");
 
 3891      Printf(
"    the convenience of the user in reading their output.");
 
 3895      Printf(
"    Instructs Minuit to output warning messages when suspicious");
 
 3896      Printf(
"    conditions arise which may indicate unreliable results.");
 
 3897      Printf(
"    This is the default.");
 
 3900      Printf(
"    SET WIDthpage");
 
 3901      Printf(
"    Informs Minuit of the output page width.");
 
 3902      Printf(
"    Default values are 80 for interactive jobs");
 
 3910      Printf(
" ***>SHOw  <option_name>");
 
 3911      Printf(
"  All SET XXXX commands have a corresponding SHOw XXXX command.");
 
 3912      Printf(
"  In addition, the SHOw commands listed starting here have no");
 
 3913      Printf(
"  corresponding SET command for obvious reasons.");
 
 3916      Printf(
"   SHOw CORrelations");
 
 3917      Printf(
"    Calculates and prints the parameter correlations from the");
 
 3918      Printf(
"    error matrix.");
 
 3921      Printf(
"   SHOw COVariance");
 
 3922      Printf(
"    Prints the (external) covariance (error) matrix.");
 
 3925      Printf(
"   SHOw EIGenvalues");
 
 3926      Printf(
"    Calculates and prints the eigenvalues of the covariance");
 
 3930      Printf(
"   SHOw FCNvalue");
 
 3931      Printf(
"    Prints the current value of FCN.");
 
 3939      Printf(
" ***>SIMplex  [maxcalls]  [tolerance]");
 
 3940      Printf(
" Performs a function minimization using the simplex method of");
 
 3941      Printf(
" Nelder and Mead. Minimization terminates either when the");
 
 3942      Printf(
" function has been called (approximately) [maxcalls] times,");
 
 3943      Printf(
" or when the estimated vertical distance to minimum (EDM) is");
 
 3944      Printf(
" less than [tolerance].");
 
 3945      Printf(
" The default value of [tolerance] is 0.1*UP(see SET ERRordef).");
 
 3962      Printf(
" Same as EXIT.");
 
 3970      Printf(
" ***>TOPofpage");
 
 3971      Printf(
" Causes Minuit to write the character specified in a");
 
 3972      Printf(
" SET PAGethrow command (default = 1) to column 1 of the output");
 
 3973      Printf(
" file, which may or may not position your output medium to");
 
 3974      Printf(
" the top of a page depending on the device and system.");
 
 3978   Printf(
" Unknown MINUIT command. Type HELP for list of commands.");
 
 
 3997   Double_t df, 
aimsag, 
fs1, 
tlrstp, 
fs2, 
stpinm, 
g2i, 
sag=0, 
xtf, 
xti, 
xtj;
 
 3998   Int_t icyc, 
ncyc, 
ndex, 
idrv, 
iext, 
npar2, i, 
j, 
ifail, 
npard, 
nparx, 
id, 
multpy;
 
 4019      Printf(
"   START COVARIANCE MATRIX CALCULATION.");
 
 4035      Printf(
" PAR D   GSTEP           D          G2         GRD         SAG    ");
 
 4049   for (
id = 1; 
id <= 
npard; ++
id) {
 
 4052      if (
fG2[i-1] == 0) {
 
 4053         mnwarn(
"W", 
"HESSE", 
Form(
"Second derivative enters zero, param %d",
iext));
 
 4083               if (
d >= .5) 
goto L26;
 
 4085               if (
d > .5)         
d = .51;
 
 4124      ndex = i*(i + 1) / 2;
 
 4136   for (i = 1; i <= 
fNpar; ++i) {
 
 4137      for (
j = 1; 
j <= i-1; ++
j) {
 
 4148         ndex = i*(i-1) / 2 + 
j;
 
 4156   for (i = 1; i <= 
fNpar; ++i) {
 
 4157      for (
j = 1; 
j <= i; ++
j) {
 
 4158         ndex = i*(i-1) / 2 + 
j;
 
 4165      mnwarn(
"W", 
"HESSE", 
"Matrix inversion fails.");
 
 4171   for (i = 1; i <= 
fNpar; ++i) {
 
 4174      for (
j = 1; 
j <= i-1; ++
j) {
 
 4186      Printf(
" COVARIANCE MATRIX CALCULATED SUCCESSFULLY");
 
 4195      Printf(
"  MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX. ");
 
 4197   for (i = 1; i <= 
fNpar; ++i) {
 
 4199      for (
j = 1; 
j <= i-1; ++
j) {
 
 
 4234   for (i = 1; i <= 
fNpar; ++i) {
 
 4271            mnwarn(
"D", 
"MNHES1", 
"Step size too small for 1st drv.");
 
 
 4307   if (
fNpar <= 0) 
return;
 
 4321   for (i = 1; i <= 
fNpar; ++i) {
 
 4324      for (
j = 1; 
j <= i; ++
j) {
 
 4325         ndex = i*(i-1) / 2 + 
j;
 
 4333   for (i = 1; i <= 
fNpar; ++i) {
 
 4335      for (
j = 1; 
j <= i; ++
j) {
 
 4343   for (i = 1; i <= 
fNpar; ++i) {
 
 4351      Printf(
"START ATTEMPT NO.%2d TO FIND NEW MINIMUM",loop);
 
 4361   for (i = 1; i <= 
fNpar; ++i) {
 
 4390   for (i = 1; i <= 
fNpar; ++i) {
 
 4400   for (i = 1; i <= 
fNpar; ++i) {
 
 4419   for (i = 1; i <= 
fNpar; ++i) {
 
 4432      Printf(
" AN IMPROVEMENT ON THE PREVIOUS MINIMUM HAS BEEN FOUND");
 
 4439   for (i = 1; i <= 
fNpar; ++i) {
 
 4449   for (i = 1; i <= 
fNpar; ++i) {
 
 4467      Printf(
" IMPROVE HAS FOUND A TRULY NEW MINIMUM");
 
 4468      Printf(
" *************************************");
 
 4474      Printf(
" COVARIANCE MATRIX WAS NOT POSITIVE-DEFINITE");
 
 4480   for (i = 1; i <= 
fNpar; ++i) {
 
 4489      Printf(
" IMPROVE HAS RETURNED TO REGION OF ORIGINAL MINIMUM");
 
 
 4548   fCovmes[0] = 
"NO ERROR MATRIX       ";
 
 4549   fCovmes[1] = 
"ERR MATRIX APPROXIMATE";
 
 4550   fCovmes[2] = 
"ERR MATRIX NOT POS-DEF";
 
 4551   fCovmes[3] = 
"ERROR MATRIX ACCURATE ";
 
 4589   for (i = 1; i <= 100; ++i) {
 
 4597   Printf(
" MNINIT UNABLE TO DETERMINE ARITHMETIC PRECISION. WILL ASSUME:%g",
fEpsmac);
 
 
 4627   if (
i2 > 0) 
goto L30;
 
 4638            Printf(
"           LIMITS NOT CHANGED FOR FIXED PARAMETER:%4d",
inu);
 
 4645            Printf(
" LIMITS REMOVED FROM PARAMETER  :%3d",
inu);
 
 4668      Printf(
" PARAMETER %3d IS NOT VARIABLE.", 
i2);
 
 4674      Printf(
" REQUEST TO CHANGE LIMITS ON FIXED PARAMETER:%3d",
i2);
 
 4678      Printf(
" MINUIT BUG IN MNLIMS. SEE F. JAMES");
 
 4686         Printf(
" LIMITS REMOVED FROM PARAMETER  %2d",
i2);
 
 4699      Printf(
" NO LIMITS SPECIFIED.  PARAMETER %3d IS ALREADY UNLIMITED.  NO CHANGE.",
i2);
 
 4712   else           fGstep[kint-1] = -.1;
 
 4715   if (
fCstatu != 
"NO CHANGE ") {
 
 
 4759         Printf(
" MNLINE start point not consistent, F values, parameters=");
 
 4774   for (i = 1; i <= 
fNpar; ++i) {
 
 4775      if (step[i-1] != 0) {
 
 4780      fX[i-1] = start[i-1] + step[i-1];
 
 4823      for (i = 1; i <= 
fNpar; ++i) { 
fX[i-1] = start[i-1] + 
slam*step[i-1]; }
 
 4855         if (
coeff[2] <= 0) {
 
 4886            for (i = 1; i <= 
fNpar; ++i) { 
fX[i-1] = start[i-1] + 
slam*step[i-1]; }
 
 4914         } 
while (f3 >= 
fvmax);
 
 4928      } 
while (
nxypt < 12);
 
 4934      cmess = 
" LINE SEARCH HAS EXHAUSTED THE LIMIT OF FUNCTION CALLS ";
 
 4935      Printf(
" MNLINE DEBUG: steps=");
 
 4941   if (
l70 && 
ldebug) 
cmess = 
" LINE SEARCH HAS ATTAINED TOLERANCE ";
 
 4942   if (
l80 && 
ldebug) 
cmess = 
" STEP SIZE AT ARITHMETICALLY ALLOWED MINIMUM";
 
 4945   for (i = 1; i <= 
fNpar; ++i) {
 
 4947      fX[i-1]     = start[i-1] + 
fDirin[i-1];
 
 4951      mnwarn(
"D", 
"MNLINE", 
" LINE MINIMUM IN BACKWARDS DIRECTION");
 
 4954      mnwarn(
"D", 
"MNLINE", 
" LINE SEARCH FINDS NO IMPROVEMENT ");
 
 
 4981      Printf(
" MNMATU: NPAR=0");
 
 4995   if (
fNpar <= 1) 
return;
 
 5001   Printf(
" PARAMETER  CORRELATION COEFFICIENTS  ");
 
 5002   ctemp = 
"       NO.  GLOBAL";
 
 5003   for (
id = 1; 
id <= 
nparm; ++
id) {
 
 5007   for (i = 1; i <= 
fNpar; ++i) {
 
 5009      ndi = i*(i + 1) / 2;
 
 5014         ndj  = 
j*(
j + 1) / 2;
 
 5019      for (it = 1; it <= 
nparm; ++it) {
 
 5023      if (i <= 
nparm) 
continue;
 
 5032         if (i <= 
nparm) 
break;
 
 
 5059   if (
fNpar <= 0) 
return;
 
 5076      Printf(
" START MIGRAD MINIMIZATION.  STRATEGY %2d.  CONVERGENCE WHEN EDM .LT.%9.2e",
fIstrat,
rhotol);
 
 5101   for (i = 1; i <= 
fNpar; ++i) {
 
 5108      for (i = 1; i <= 
fNpar; ++i) {
 
 5109         if (
fG2[i-1] > 0) 
continue;
 
 5115         mnwarn(
"D", 
"MNMIGR", 
"Negative G2 line search");
 
 5124   for (i = 1; i <= 
fNpar; ++i) {
 
 5126      for (
j = 1; 
j <= i-1; ++
j) {
 
 5131      if (
fG2[i-1] <= 0) 
fG2[i-1] = 1;
 
 5136      Printf(
" DEBUG MNMIGR, STARTING MATRIX DIAGONAL,  VHMAT=");
 
 5151   for (i = 1; i <= 
fNpar; ++i) {
 
 5155      for (
j = 1; 
j <= i-1; ++
j) {
 
 5164      mnwarn(
"W", 
"MIGRAD", 
"STARTING MATRIX NOT POS-DEFINITE.");
 
 5180   for (i = 1; i <= 
fNpar; ++i) {
 
 5193      mnwarn(
"D", 
"MIGRAD", 
" FIRST DERIVATIVES OF FCN ARE ALL ZERO");
 
 5198      mnwarn(
"D", 
"MIGRAD", 
" NEWTON STEP NOT DESCENT.");
 
 5199      if (
npsdf == 1) 
goto L1;
 
 5223   for (i = 1; i <= 
fNpar; ++i) {
 
 5243      mnwarn(
"D", 
"MIGRAD", 
"NOT POS-DEF. EDM OR GVG NEGATIVE.");
 
 5252   if (
iswtr >= 3 || (
iswtr == 2 && iter % 10 == 1)) {
 
 5257      mnwarn(
"D", 
"MIGRAD", 
"NO CHANGE IN FIRST DERIVATIVES OVER LAST STEP");
 
 5260      mnwarn(
"D", 
"MIGRAD", 
"FIRST DERIVATIVES INCREASING ALONG SEARCH LINE");
 
 5266      for (
kk = 1; 
kk <= 10; ++
kk) {
 
 5272   for (i = 1; i <= 
fNpar; ++i) {
 
 5273      for (
j = 1; 
j <= i; ++
j) {
 
 5277         ndex  = i*(i-1) / 2 + 
j;
 
 5285      Printf(
" RELATIVE CHANGE IN COV. MATRIX=%5.1f per cent",
fDcovar*100);
 
 5289      for (
kk = 1; 
kk <= 10; ++
kk) {
 
 5294   for (i = 1; i <= 
fNpar; ++i) {
 
 5297   for (i = 1; i <= 
fNpar; ++i) {
 
 5298      for (
j = 1; 
j <= i; ++
j) {
 
 5299         ndex = i*(i-1) / 2 + 
j;
 
 5307   for (i = 1; i <= 
fNpar; ++i) {
 
 5321      Printf(
" CALL LIMIT EXCEEDED IN MIGRAD.");
 
 5328      Printf(
" MIGRAD FAILS TO FIND IMPROVEMENT");
 
 5334         Printf(
" MACHINE ACCURACY LIMITS FURTHER IMPROVEMENT.");
 
 5340         Printf(
" MIGRAD FAILS WITH STRATEGY=0.   WILL TRY WITH STRATEGY=1.");
 
 5348      Printf(
" MIGRAD TERMINATED WITHOUT CONVERGENCE.");
 
 5356      Printf(
" MIGRAD MINIMIZATION HAS CONVERGED.");
 
 5361            Printf(
" MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.");
 
 
 5403         if (
knt >= 7) 
break;
 
 5405         if (
ilax == 0) 
break;
 
 5409         Printf(
" PARAMETER NUMBER %3d NOT A VARIABLE. IGNORED.",
ilax);
 
 5442   Printf(
" NEW MINIMUM FOUND.  GO BACK TO MINIMIZATION STEP.");
 
 5443   Printf(
" =================================================");
 
 5453   Printf(
" THERE ARE NO MINOS ERRORS TO CALCULATE.");
 
 
 5487   for (i = 1; i <= 
mpar; ++i) { 
fXt[i-1] = 
fX[i-1]; }
 
 5490   for (i = 1; i <= 
mpar; ++i) {
 
 5503   ndex  = it*(it + 1) / 2;
 
 5506   for (i = 1; i <= 
mpar; ++i) {
 
 5507      if (i == it) 
continue;
 
 5516      Printf(
" MINUIT ERROR. CANNOT FIX PARAMETER %4d   INTERNAL %3d",
ilax,it);
 
 5532         Printf(
" DETERMINATION OF %sTIVE MINOS ERROR FOR PARAMETER %d %s" 
 5537            mnwarn(
"D", 
"MINOS", 
"NO COVARIANCE MATRIX.");
 
 5548      if ( (
delu == 0 && 
ut == 0) ||
 
 5551      for (i = 1; i <= 
fNpar; ++i) {
 
 5573         Printf(
"        THE %4sTIVE MINOS ERROR OF PARAMETER %3d  %10s, IS %12.4e" 
 5581         Printf(
"    THE %4sTIVE MINOS ERROR OF PARAMETER %3d, %s EXCEEDS ITS LIMIT." 
 5589         Printf(
"       THE %4sTIVE MINOS ERROR %4d REQUIRES MORE THAN %5d FUNCTION CALLS." 
 5596         Printf(
"                         %4sTIVE MINOS ERROR NOT CALCULATED FOR PARAMETER %d" 
 5603         Printf(
"     **************************************************************************");
 
 5619   for (i = 1; i <= 
mpar; ++i) {
 
 
 5677      Printf(
" MINUIT USER ERROR.  PARAMETER NUMBER IS %3d  ALLOWED RANGE IS ONE TO %4d",k,
fMaxext);
 
 5685   for (ix = 1; ix <= 
fNpfix; ++ix) {
 
 5689      mnwarn(
"W", 
"PARAM DEF", 
"REDEFINING A FIXED PARAMETER.");
 
 5691         Printf(
" CANNOT RELEASE. MAX NPAR EXCEEDED.");
 
 5702      Printf(
" PARAMETER DEFINITIONS:");
 
 5703      Printf(
"    NO.   NAME         VALUE      STEP SIZE      LIMITS");
 
 5709      Printf(
" %5d %-10s %13.5e  constant",k,(
const char*)
cnamk,
uk);
 
 5714   if (
a == 0 && 
b == 0) {
 
 5718         Printf(
" %5d %-10s %13.5e%13.5e     no limits",k,(
const char*)
cnamk,
uk,
wk);
 
 5731      Printf(
" MINUIT USER ERROR.   TOO MANY VARIABLE PARAMETERS.");
 
 5736      Printf(
" USER ERROR IN MINUIT PARAMETER");
 
 5738      Printf(
" UPPER AND LOWER LIMITS EQUAL.");
 
 5745      mnwarn(
"W", 
"PARAM DEF", 
"PARAMETER LIMITS WERE REVERSED.");
 
 5754      mnwarn(
"W", 
"PARAM DEF", 
"STARTING VALUE OUTSIDE LIMITS.");
 
 5757      mnwarn(
"W", 
"PARAM DEF", 
"STARTING VALUE IS AT LIMIT.");
 
 5775   for (ix = 1; ix <= k-1; ++ix) { 
if (
fNiofex[ix-1] > 0) ++
lastin; }
 
 5794      for (in = 
lastin + 1; in <= kint; ++in) {
 
 5819      fXt[in-1]   = 
fX[in-1];
 
 
 5894   if (k <= 0) 
goto L210;
 
 5929   if (k == 0)    
goto L210;
 
 
 5959   Double_t a, 
f, s, t, 
y, 
s2, 
x2, 
x3, 
x4, 
y2, 
cz[3], 
xm, 
xy, 
x2y;
 
 5969   for (i = 1; i <= 3; ++i) { 
cz[i-1] = 0; }
 
 5984   for (i = 1; i <= 
npar2p; ++i) {
 
 5997   if (
a == 0) 
goto L10;
 
 6009   for (i = 1; i <= 3; ++i) { 
coef2p[i] = 
cz[i-1]; }
 
 
 6036            chbuf2 = 
" IS AT ITS LOWER ALLOWED LIMIT.";
 
 6039            chbuf2 = 
" IS AT ITS UPPER ALLOWED LIMIT.";
 
 6044         if (
yy2 > 1) 
chbuf2 = 
" BROUGHT BACK INSIDE LIMITS.";
 
 
 6073      if ((
h = 
gROOT->GetPluginManager()->FindHandler(
"TMinuitGraph"))) {
 
 6075         if (
h->LoadPlugin() != -1)
 
 6098   if (
nxypt <= 1) 
return;
 
 6104   for (i = 1; i <= 
km1; ++i) {
 
 6107      for (
j = 1; 
j <= 
ni; ++
j) {
 
 6108         if (ypt[
j-1] > ypt[
j]) 
continue;
 
 6120      if (
iquit == 0) 
break;
 
 6125   for (i = 1; i <= 
nxypt; ++i) {
 
 6126      if (xpt[i-1] > 
xmax) 
xmax = xpt[i-1];
 
 6127      if (xpt[i-1] < 
xmin) 
xmin = xpt[i-1];
 
 6152   for (i = 1; i <= 
nxypt; ++i) {
 
 6153      xpt[i-1] = 
ax*xpt[i-1] + 
bx;
 
 6154      ypt[i-1] = any - 
ay*ypt[i-1] - 
by;
 
 6164   for (i = 1; i <= 
ny; ++i) {
 
 6181         ix = 
Int_t(xpt[k-1]);
 
 
 6284   chnam = 
"undefined";
 
 
 6319      Printf(
" THERE ARE CURRENTLY NO PARAMETERS DEFINED");
 
 6329   for (k = 1; k <= 6; ++k) {
 
 6330      colhdu[k-1] = 
"UNDEFINED";
 
 6331      colhdl[k-1] = 
"COLUMN HEAD";
 
 6345   Printf(
" FCN=%s FROM %8s  STATUS=%10s %6d CALLS   %9d TOTAL" 
 6351      Printf(
"                     EDM=%s    STRATEGY=%2d      %s" 
 6357      Printf(
"                     EDM=%s    STRATEGY=%2d  ERROR MATRIX UNCERTAINTY %5.1f per cent" 
 6361   if (
ikode == 0) 
return;
 
 6364   for (i = 1; i <= 
fNu; ++i) {
 
 6365      if (
fNvarl[i-1] < 0) 
continue;
 
 6366      for (
ic = 10; 
ic >= 1; --
ic) {
 
 6380      colhdl[1] = 
"    NEGATIVE  ";
 
 6381      colhdl[2] = 
"    POSITIVE  ";
 
 6386      colhdu[1] = 
"    INTERNAL  ";
 
 6387      colhdl[1] = 
"    STEP SIZE ";
 
 6388      colhdu[2] = 
"    INTERNAL  ";
 
 6397      colhdl[2] = 
"   DERIVATIVE ";
 
 6400      colhdu[0] = 
"    PARABOLIC ";
 
 6404      colhdl[1] = 
"   NEGATIVE   ";
 
 6405      colhdl[2] = 
"   POSITIVE   ";
 
 6409      if (
fISW[1] < 3) 
colhdu[0] = 
"  APPROXIMATE ";
 
 6410      if (
fISW[1] < 1) 
colhdu[0] = 
" CURRENT GUESS";
 
 6412   Printf(
"  EXT PARAMETER              %-14s%-14s%-14s",(
const char*)
colhdu[0]
 
 6414                                                    ,(
const char*)
colhdu[2]);
 
 6415   Printf(
"  NO.   NAME      VALUE      %-14s%-14s%-14s",(
const char*)
colhdl[0]
 
 6417                                                    ,(
const char*)
colhdl[2]);
 
 6419   for (i = 1; i <= 
fNu; ++i) {
 
 6420      if (
fNvarl[i-1] < 0) 
continue;
 
 6423      if (
l == 0) 
goto L55;
 
 6426      cx2 = 
"PLEASE GET X..";
 
 6427      cx3 = 
"PLEASE GET X..";
 
 6445            cx3 = 
"** at limit **";
 
 6450         if (
x2 == 0)        
cx2 = 
" ";
 
 6453         if (
x3 == 0)        
cx3 = 
" ";
 
 6456      if (
cx2 == 
"PLEASE GET X..")  
cx2.Form(
"%14.5e",
x2);
 
 6457      if (
cx3 == 
"PLEASE GET X..")  
cx3.Form(
"%14.5e",
x3);
 
 6458      Printf(
"%4d %-11s%14.5e%14.5e%-14s%-14s",i
 
 6460                   ,(
const char*)
cx2,(
const char*)
cx3);
 
 6465         Printf(
"                                 WARNING -   - ABOVE PARAMETER IS AT LIMIT.");
 
 6471      colhdu[0] = 
"   constant   ";
 
 6474         Printf(
"%4d %-11s%14.5e%-14s%14.5e%14.5e",i
 
 6478         Printf(
"%4d %-11s%14.5e%s",i
 
 
 6505   for (i = 1; i <= 
fNpar; ++i) {
 
 6506      ndex = i*(i + 1) / 2;
 
 6519   for (i = 1; i <= 
fNpar; ++i) {
 
 6528      for (
j = 1; 
j <= i; ++
j) {
 
 6543      Printf(
" EIGENVALUES OF SECOND-DERIVATIVE MATRIX:");
 
 
 6578      for (i = 1; i <= 
fNpar; ++i) { 
fX[i-1] = 
pnew[i-1]; }
 
 6589   for (i = 1; i <= 
fNpar; ++i) {
 
 6602      Printf(
"  FUNCTION VALUE DOES NOT SEEM TO DEPEND ON ANY OF THE %d VARIABLE PARAMETERS.",
fNpar);
 
 6603      Printf(
"          VERIFY THAT STEP SIZES ARE BIG ENOUGH AND CHECK FCN LOGIC.");
 
 6604      Printf(
" *******************************************************************************");
 
 6605      Printf(
" *******************************************************************************");
 
 
 6623   static std::atomic<Int_t> 
g_iseed( 12345 );
 
 
 6676   for (i = 1; i <= 
fNpar; ++i) {
 
 
 6697   Printf(
"mnsave is dummy in TMinuit");
 
 
 6794   Printf(
"%dSCAN OF PARAMETER NO. %d,  %s" 
 6799   Printf(
" REQUESTED RANGE OUTSIDE LIMITS FOR PARAMETER  %d",ipar);
 
 
 6830   if (alpha <= 0) alpha = 3;
 
 6832      Printf(
" MNSEEK: MONTE CARLO MINIMIZATION USING METROPOLIS ALGORITHM");
 
 6834      Printf(
" MAXIMUM STEP SIZE IS %9.3f ERROR BARS.",alpha);
 
 6846   for (ipar = 1; ipar <= 
fNpar; ++ipar) {
 
 6855            fDirin[ipar-1] = 6.2831859999999997;
 
 6864      for (ipar = 1; ipar <= 
fNpar; ++ipar) {
 
 6894      Printf(
" MNSEEK: %5d SUCCESSIVE UNSUCCESSFUL TRIALS.",
ifail);
 
 
 6917   static const char *
const cname[30] = {
 
 6952      "-1: NO OUTPUT EXCEPT FROM SHOW    ",
 
 6953      " 0: REDUCED OUTPUT                ",
 
 6954      " 1: NORMAL OUTPUT                 ",
 
 6955      " 2: EXTRA OUTPUT FOR PROBLEM CASES",
 
 6956      " 3: MAXIMUM OUTPUT                "};
 
 6959      " 0: MINIMIZE THE NUMBER OF CALLS TO FUNCTION",
 
 6960      " 1: TRY TO BALANCE SPEED AGAINST RELIABILITY",
 
 6961      " 2: MAKE SURE MINIMUM TRUE, ERRORS CORRECT  "};
 
 6964      "REPORT ALL EXCEPTIONAL CONDITIONS      ",
 
 6965      "MNLINE: LINE SEARCH MINIMIZATION       ",
 
 6966      "MNDERI: FIRST DERIVATIVE CALCULATIONS  ",
 
 6967      "MNHESS: SECOND DERIVATIVE CALCULATIONS ",
 
 6968      "MNMIGR: COVARIANCE MATRIX UPDATES      ",
 
 6969      "MNHES1: FIRST DERIVATIVE UNCERTAINTIES ",
 
 6970      "MNCONT: MNCONTOUR PLOT (MNCROS SEARCH) "};
 
 6982   for (i = 1; i <= 
nntot; ++i) {
 
 7002   switch ((
int)
kname) {
 
 7020      case 18:  
goto L3000;
 
 7022      case 20:  
goto L3000;
 
 7027      case 25:  
goto L3000;
 
 7028      case 26:  
goto L1900;
 
 7052   Printf(
" UNDEFINED PARAMETER NUMBER.  IGNORED.");
 
 7083   for (i = 1; i <= 
fNpar; ++i) {
 
 7111   mnwarn(
"W", 
"SHO", 
"SHO");
 
 7119      Printf(
" MINUIT RANDOM NUMBER SEED SET TO %d",
jseed);
 
 7179   mnwarn(
"D", 
"SHO", 
"SHO");
 
 7182   Printf(
" UNKNOWN DEBUG OPTION %d REQUESTED. IGNORED",
idbopt);
 
 7195   switch ((
int)
kname) {
 
 7205      case 10:  
goto L1100;
 
 7206      case 11:  
goto L1110;
 
 7207      case 12:  
goto L1120;
 
 7208      case 13:  
goto L1130;
 
 7209      case 14:  
goto L1130;
 
 7210      case 15:  
goto L1150;
 
 7211      case 16:  
goto L1160;
 
 7212      case 17:  
goto L1170;
 
 7213      case 18:  
goto L1180;
 
 7214      case 19:  
goto L1190;
 
 7215      case 20:  
goto L1200;
 
 7216      case 21:  
goto L1210;
 
 7217      case 22:  
goto L1220;
 
 7218      case 23:  
goto L1100;
 
 7219      case 24:  
goto L1100;
 
 7220      case 25:  
goto L1250;
 
 7221      case 26:  
goto L1900;
 
 7222      case 27:  
goto L1270;
 
 7223      case 28:  
goto L1270;
 
 7224      case 29:  
goto L1290;
 
 7225      case 30:  
goto L1300;
 
 7255   Printf(
" ALLOWED PRINT LEVELS ARE:");
 
 7266      Printf(
" NOGRAD IS SET.  DERIVATIVES NOT COMPUTED IN FCN.");
 
 7268      Printf(
"   GRAD IS SET.  USER COMPUTES DERIVATIVES IN FCN.");
 
 7273   Printf(
" ERRORS CORRESPOND TO FUNCTION CHANGE OF %g",
fUp);
 
 7297   cmode = 
"BATCH MODE      ";
 
 7298   if (
fISW[5] == 1) 
cmode  = 
"INTERACTIVE MODE";
 
 7300   Printf(
" INPUT NOW BEING READ IN %s FROM UNIT NO. %d FILENAME: %s" 
 7313   cwarn = 
"SUPPRESSED";
 
 7330   Printf(
" TITLE OF CURRENT TASK IS:%s",(
const char*)
fCtitl);
 
 7334   Printf(
" ALLOWED STRATEGIES ARE:");
 
 7356      Printf(
" NO PAGE THROWS IN MINUIT OUTPUT");
 
 7364   Printf(
"       THERE ARE NO MINOS ERRORS CURRENTLY VALID.");
 
 7371   Printf(
" FLOATING-POINT NUMBERS ASSUMED ACCURATE TO %g",
fEpsmac);
 
 7379   Printf(
" THIS IS MINUIT VERSION:%s",(
const char*)
fCvrsn);
 
 7383   for (
id = 0; 
id <= 6; ++
id) {
 
 7386      Printf(
"          DEBUG OPTION %3d IS %3s :%s" 
 7387             ,
id,(
const char*)
copt,(
const char*)
cdbopt[
id]);
 
 7402   Printf(
" THE COMMAND:%10s IS UNKNOWN.",(
const char*)
fCword);
 
 7411   Printf(
" THE FORMAT OF THE %4s COMMAND IS:",(
const char*)
ckind);
 
 7412   Printf(
" %s xxx    [numerical arguments if any]",(
const char*)
ckind);
 
 7413   Printf(
" WHERE xxx MAY BE ONE OF THE FOLLOWING:");
 
 7421   Printf(
" ABOVE COMMAND IS ILLEGAL.   IGNORED");
 
 
 7435   static constexpr Double_t alpha = 1;
 
 7436   static constexpr Double_t beta = .5;
 
 7437   static constexpr Double_t gamma = 2;
 
 7448   if (
fNpar <= 0) 
return;
 
 7457   rho2    = rho1 + alpha*gamma;
 
 7460      Printf(
" START SIMPLEX MINIMIZATION.    CONVERGENCE WHEN EDM .LT. %g",
fEpsi);
 
 7462   for (i = 1; i <= 
fNpar; ++i) {
 
 7475   for (i = 1; i <= 
fNpar; ++i) {
 
 7488      if (kg == 1) 
goto L8;
 
 7492      if (
nf < 3) 
goto L4;
 
 7502      if (ns < 6) 
goto L4;
 
 7527   for (i = 1; i <= 
fNpar; ++i) {
 
 7537   for (i = 1; i <= 
fNpar; ++i) {
 
 7545   rho = (rho2*
y1 - rho1*
y2)*.5 / (
y1 - 
y2);
 
 7548   for (i = 1; i <= 
fNpar; ++i) {
 
 7581   for (i = 1; i <= 
fNpar; ++i) {
 
 7594      Printf(
" SIMPLEX MINIMIZATION HAS CONVERGED.");
 
 7600      Printf(
" SIMPLEX TERMINATES WITHOUT CONVERGENCE.");
 
 7606   for (i = 1; i <= 
fNpar; ++i) {
 
 
 7674   static const TString cpt = 
" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890./;:[]$%*_!@#&+()";
 
 7678   for (i = 1; i <= 
l; ++i) {
 
 7679      for (
ic = 1; 
ic <= 80; ++
ic) {
 
 
 7711   if (
n < 1) 
goto L100;
 
 7714   for (i = 1; i <= 
n; ++i) {
 
 7719   for (i = 1; i <= 
n; ++i) {
 
 7720      for (
j = 1; 
j <= 
n; ++
j) {
 
 7725   for (i = 1; i <= 
n; ++i) {
 
 7728      if (
a[k + k*
l] != 0) 
fVERTq[k-1] = 1 / 
a[k + k*
l];
 
 7735      else if (
km1 == 0) 
goto L50;
 
 7738      for (
j = 1; 
j <= 
km1; ++
j) {
 
 7744      if (k - 
n < 0) 
goto L51;
 
 7745      else if (k - 
n == 0) 
goto L60;
 
 7755      for (
j = 1; 
j <= 
n; ++
j) {
 
 7760   for (
j = 1; 
j <= 
n; ++
j) {
 
 7761      for (k = 1; k <= 
j; ++k) {
 
 
 7794   if (
corg(0,3) != 
"SHO" || 
cmes(0,3) != 
"SHO") {
 
 7800            Printf(
" MINUIT WARNING IN %s",(
const char*)
corg);
 
 7801            Printf(
" ============== %s",(
const char*)
cmes);
 
 7807            Printf(
" MINUIT DEBUG FOR %s",(
const char*)
corg);
 
 7808            Printf(
" =============== %s ",(
const char*)
cmes);
 
 7833      englsh = 
" WAS SUPPRESSED.  ";
 
 7840         Printf(
" ONLY THE MOST RECENT 10 WILL BE LISTED BELOW.");
 
 7844      Printf(
"  CALLS  ORIGIN         MESSAGE");
 
 7845      for (i = 1; i <= nm; ++i) {
 
 
 7885      for (i = 1; i <= 
fNpar; ++i) {
 
 7888         for (
j = 1; 
j <= i; ++
j) {
 
 
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 char Point_t Rectangle_t WindowAttributes_t Float_t r
 
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 id
 
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 winding char text const char depth char const char Int_t count const char cname
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint xy
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize fs
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
 
Option_t Option_t TPoint TPoint const char y1
 
static const char charal[29]
 
void InteractiveFCNm(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Static function called when SetFCN is called in interactive mode.
 
R__EXTERN TMinuit * gMinuit
 
R__EXTERN TVirtualMutex * gROOTMutex
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
#define R__LOCKGUARD(mutex)
 
Method or function calling interface.
 
virtual void mnderi()
Calculates the first derivatives of FCN (GRD)
 
virtual void mnvert(Double_t *a, Int_t l, Int_t m, Int_t n, Int_t &ifail)
Inverts a symmetric matrix.
 
virtual Int_t GetParameter(Int_t parNo, Double_t ¤tValue, Double_t ¤tError) const
return parameter value and error
 
virtual Int_t FixParameter(Int_t parNo)
fix a parameter
 
virtual void mnbins(Double_t a1, Double_t a2, Int_t naa, Double_t &bl, Double_t &bh, Int_t &nb, Double_t &bwid)
Compute reasonable histogram intervals.
 
virtual Int_t GetNumPars() const
returns the total number of parameters that have been defined as fixed or free.
 
virtual void mnpsdf()
Calculates the eigenvalues of v to see if positive-def.
 
virtual Int_t GetNumFixedPars() const
returns the number of currently fixed parameters
 
virtual void mnpfit(Double_t *parx2p, Double_t *pary2p, Int_t npar2p, Double_t *coef2p, Double_t &sdev2p)
To fit a parabola to npar2p points.
 
virtual Int_t Release(Int_t parNo)
release a parameter
 
virtual void mnpars(TString &crdbuf, Int_t &icondn)
Implements one parameter definition.
 
virtual void mnimpr()
Attempts to improve on a good local minimum.
 
virtual void BuildArrays(Int_t maxpar=15)
Create internal Minuit arrays for the maxpar parameters.
 
virtual void mnwerr()
Calculates the WERR, external parameter errors.
 
virtual void mnrset(Int_t iopt)
Resets function value and errors to UNDEFINED.
 
virtual void mneig(Double_t *a, Int_t ndima, Int_t n, Int_t mits, Double_t *work, Double_t precis, Int_t &ifault)
Compute matrix eigen values.
 
virtual void mnsimp()
Minimization using the simplex method of Nelder and Mead.
 
TMethodCall * GetMethodCall() const
 
TMinuit()
Minuit normal constructor.
 
virtual void mnamin()
Initialize AMIN.
 
virtual Int_t SetErrorDef(Double_t up)
To get the n-sigma contour the error def parameter "up" has to set to n^2.
 
virtual void mncler()
Resets the parameter list to UNDEFINED.
 
virtual void mnplot(Double_t *xpt, Double_t *ypt, char *chpt, Int_t nxypt, Int_t npagwd, Int_t npagln)
Plots points in array xypt onto one page with labelled axes.
 
virtual Int_t Migrad()
invokes the MIGRAD minimizer
 
virtual void mncomd(const char *crdbin, Int_t &icondn)
Reads a command string and executes.
 
TString * fCpnam
Character to be plotted at the X,Y contour positions.
 
TMethodCall * fMethodCall
 
virtual void mngrad()
Interprets the SET GRAD command.
 
~TMinuit() override
Minuit default destructor.
 
virtual void mnrazz(Double_t ynew, Double_t *pnew, Double_t *y, Int_t &jh, Int_t &jl)
Called only by MNSIMP (and MNIMPR) to add a new point.
 
virtual void mnmnos()
Performs a MINOS error analysis.
 
virtual void mnline(Double_t *start, Double_t fstart, Double_t *step, Double_t slope, Double_t toler)
Perform a line search from position START.
 
virtual void mncuve()
Makes sure that the current point is a local minimum.
 
virtual void mnscan()
Scans the values of FCN as a function of one parameter.
 
virtual void DeleteArrays()
Delete internal Minuit arrays.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
TString fWarmes[kMAXWARN]
 
virtual void mnsave()
Writes current parameter values and step sizes onto file ISYSSA.
 
virtual void mnmatu(Int_t kode)
Prints the covariance matrix v when KODE=1.
 
virtual void mnlims()
Interprets the SET LIM command, to reset the parameter limits.
 
void(* fFCN)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
 
virtual void SetMaxIterations(Int_t maxiter=500)
 
virtual void SetFCN(void(*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t))
To set the address of the minimization function.
 
virtual void mncont(Int_t ke1, Int_t ke2, Int_t nptu, Double_t *xptu, Double_t *yptu, Int_t &ierrf)
Find points along a contour where FCN is minimum.
 
virtual void mninit(Int_t i1, Int_t i2, Int_t i3)
Main initialization member function for MINUIT.
 
virtual void mnseek()
Performs a rough (but global) minimization by monte carlo search.
 
virtual void mncalf(Double_t *pvec, Double_t &ycalf)
Transform FCN to find further minima.
 
virtual Int_t Command(const char *command)
Execute a Minuit command.
 
virtual void mnpout(Int_t iuext, TString &chnam, Double_t &val, Double_t &err, Double_t &xlolim, Double_t &xuplim, Int_t &iuint) const
Provides the user with information concerning the current status.
 
virtual Int_t Eval(Int_t npar, Double_t *grad, Double_t &fval, Double_t *par, Int_t flag)
Evaluate the minimisation function Input parameters:
 
virtual void mnmigr()
Performs a local function minimization.
 
virtual void mnemat(Double_t *emat, Int_t ndim)
Calculates the external error matrix from the internal matrix.
 
virtual void mnrn15(Double_t &val, Int_t &inseed)
This is a super-portable random number generator.
 
virtual void mnerrs(Int_t number, Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &gcc)
Utility routine to get MINOS errors.
 
virtual void mnexin(Double_t *pint)
Transforms the external parameter values U to internal values.
 
virtual void mnexcm(const char *comand, Double_t *plist, Int_t llist, Int_t &ierflg)
Interprets a command and takes appropriate action.
 
virtual void mnhelp(TString comd)
HELP routine for MINUIT interactive commands.
 
virtual Int_t SetPrintLevel(Int_t printLevel=0)
set Minuit print level.
 
Bool_t mnunpt(TString &cfname)
Returns .TRUE.
 
virtual void mnhess()
Calculates the full second-derivative matrix of FCN.
 
virtual void mneval(Double_t anext, Double_t &fnext, Int_t &ierev)
Evaluates the function being analysed by MNCROS.
 
virtual void mnset()
Interprets the commands that start with SET and SHOW.
 
virtual void mndxdi(Double_t pint, Int_t ipar, Double_t &dxdi)
Calculates the transformation factor between ext/internal values.
 
virtual void mntiny(Double_t epsp1, Double_t &epsbak)
To find the machine precision.
 
virtual void mninex(Double_t *pint)
Transforms from internal coordinates (PINT) to external (U)
 
virtual void mnpint(Double_t &pexti, Int_t i, Double_t &pinti)
Calculates the internal parameter value PINTI.
 
virtual void mnfixp(Int_t iint, Int_t &ierr)
Removes parameter IINT from the internal parameter list.
 
virtual void mnmnot(Int_t ilax, Int_t ilax2, Double_t &val2pl, Double_t &val2mi)
Performs a MINOS error analysis on one parameter.
 
virtual void mncrck(TString crdbuf, Int_t maxcwd, TString &comand, Int_t &lnc, Int_t mxp, Double_t *plist, Int_t &llist, Int_t &ierr, Int_t isyswr)
Cracks the free-format input.
 
virtual Int_t DefineParameter(Int_t parNo, const char *name, Double_t initVal, Double_t initErr, Double_t lowerLimit, Double_t upperLimit)
Define a parameter.
 
virtual void mnstat(Double_t &fmin, Double_t &fedm, Double_t &errdef, Int_t &npari, Int_t &nparx, Int_t &istat)
Returns concerning the current status of the minimization.
 
virtual void mnwarn(const char *copt, const char *corg, const char *cmes)
Prints Warning messages.
 
virtual void mnprin(Int_t inkode, Double_t fval)
Prints the values of the parameters at the time of the call.
 
TString fOrigin[kMAXWARN]
 
virtual void mncros(Double_t &aopt, Int_t &iercr)
Find point where MNEVAL=AMIN+UP.
 
virtual Int_t GetNumFreePars() const
returns the number of currently free parameters
 
virtual void mnhes1()
Calculate first derivatives (GRD) and uncertainties (DGRD)
 
virtual void mnfree(Int_t k)
Restores one or more fixed parameter(s) to variable status.
 
virtual void mncntr(Int_t ke1, Int_t ke2, Int_t &ierrf)
Print function contours in two variables, on line printer.
 
virtual TObject * Contour(Int_t npoints=10, Int_t pa1=0, Int_t pa2=1)
Creates a TGraph object describing the n-sigma contour of a TMinuit fit.
 
virtual void mnparm(Int_t k, TString cnamj, Double_t uk, Double_t wk, Double_t a, Double_t b, Int_t &ierflg)
Implements one parameter definition.
 
The TNamed class is the base class for all named ROOT classes.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
Mother of all ROOT objects.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void Execute(const char *method, const char *params, Int_t *error=nullptr)
Execute method on this object with the given parameter string, e.g.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
void ToUpper()
Change string to upper case.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
Double_t ASin(Double_t)
Returns the principal value of the arc sine of x, expressed in radians.
 
Double_t ATan(Double_t)
Returns the principal value of the arc tangent of x, expressed in radians.
 
Double_t Log(Double_t x)
Returns the natural logarithm of x.
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
 
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
 
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
 
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
 
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.