ROOT logo
// @(#)root/minuit:$Id: TMinuit.cxx 31268 2009-11-18 11:15:29Z brun $
// Author: Rene Brun, Frederick James   12/08/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//______________________________________________________________________________
//*-*-*-*-*-*-*-*-*-*-*-*The Minimization package*-*--*-*-*-*-*-*-*-*-*-*-*
//*-*                    ========================                         *
//*-*                                                                     *
//*-*   This package was originally written in Fortran by Fred James      *
//*-*   and part of PACKLIB (patch D506)                                  *
//*-*                                                                     *
//*-*   It has been converted to a C++ class  by R.Brun                   *
//*-*   The current implementation in C++ is a straightforward conversion *
//*-*   of the original Fortran version: The main changes are:            *
//*-*                                                                     *
//*-*   - The variables in the various Minuit labelled common blocks      *
//*-*     have been changed to the TMinuit class data members.            *
//*-*   - The internal arrays with a maximum dimension depending on the   *
//*-*     maximum number of parameters are now data members arrays with   *
//*-*     a dynamic dimension such that one can fit very large problems   *
//*-*     by simply initialising the TMinuit constructor with the maximum *
//*-*     number of parameters.                                           *
//*-*   - The include file Minuit.h has been commented as much as possible*
//*-*     using existing comments in the code or the printed documentation*
//*-*   - The original Minuit subroutines are now member functions.       *
//*-*   - Constructors and destructor have been added.                    *
//*-*   - Instead of passing the FCN  function in the argument            *
//*-*     list, the addresses of this function is stored as pointer       *
//*-*     in the data members of the class. This is by far more elegant   *
//*-*     and flexible in an interactive environment.                     *
//*-*     The member function SetFCN can be used to define this pointer.  *
//*-*   - The ROOT static function Printf is provided to replace all      *
//*-*     format statements and to print on currently defined output file.*
//*-*   - The functions SetObjectFit(TObject *obj)/GetObjectFit() can be  *
//*-*     used inside the FCN function to set/get a referenced object     *
//*-*     instead of using global variables.                              *
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//BEGIN_HTML <!--
/* -->
<P>
<H2><A NAME=H2Basic-concepts-of-MINUIT.html>Basic concepts of MINUIT</A></H2>
<P>
The <A HREF="http://wwwinfo.cern.ch/asdoc/minuit/minmain.html"> MINUIT</A> package acts on a multiparameter Fortran function to which one
must give the generic name <TT>FCN</TT>. In the ROOT implementation,
the function <TT>FCN</TT> is defined via the MINUIT SetFCN member function
when an Histogram.Fit command is invoked.
The value of <TT>FCN</TT> will in general depend on one
or more variable parameters.
<P>
To take a simple example, in case of ROOT histograms (classes TH1C,TH1S,TH1F,TH1D)
the Fit function defines the Minuit fitting function as being H1FitChisquare
or H1FitLikelihood depending on the options selected.
H1FitChisquare
calculates the chisquare between the user fitting function (gaussian, polynomial,
user defined,etc) and the data for given values of the parameters.
It is the task of MINUIT to find those values of the parameters
which give the lowest value of chisquare.
<P>
<H3>Basic concepts - The transformation for parameters with limits.</H3>
<P>
For variable parameters with limits, MINUIT uses the following
transformation:
<P>
<PRE>
  P   = arcsin(2((P   -a)/(b- a))-1)                P    = a+((b- a)/(2))(sinP    +1)
   int             ext                               ext                      int
</PRE>
<P>
so that the internal value P    can take on any value, while the external
                            int
value P    can take on values only between the lower limit a and the
       ext
upper limit b. Since the transformation is necessarily non-linear, it
would transform a nice linear problem into a nasty non-linear one, which
is the reason why limits should be avoided if not necessary. In addition,
the transformation does require some computer time, so it slows down the
computation a little bit, and more importantly, it introduces additional
numerical inaccuracy into the problem in addition to what is introduced in
the numerical calculation of the <TT>FCN</TT> value. The effects of
non-linearity and numerical roundoff both become more important as the
external value gets closer to one of the limits (expressed as the distance
to nearest limit divided by distance between limits). The user must
therefore be aware of the fact that, for example, if he puts limits of
(0,10^10  ) on a parameter, then the values 0.0 and 1. 0 will be
indistinguishable to the accuracy of most machines.
<P>
The transformation also affects the parameter error matrix, of course, so
MINUIT does a transformation of the error matrix (and the ``parabolic''
parameter errors) when there are parameter limits. Users should however
realize that the transformation is only a linear approximation, and that
it cannot give a meaningful result if one or more parameters is very close
to a limit, where partial Pext /partial Pint  #0. Therefore, it is
recommended that:
<P>
<OL>
<LI>Limits on variable parameters should be used only when needed in order
to prevent the parameter from taking on unphysical values.
<LI>When a satisfactory minimum has been found using limits, the limits
should then be removed if possible, in order to perform or re-perform the
error analysis without limits.
</OL>
<P>
<H3>How to get the right answer from MINUIT.</H3>
<P>
MINUIT offers the user a choice of several minimization algorithms. The
MIGRAD algorithm is in general the best minimizer for
nearly all functions. It is a variable-metric method with inexact line
search, a stable metric updating scheme, and checks for
positive-definiteness. Its main weakness is that it depends heavily on
knowledge of the first derivatives, and fails miserably if they are very
inaccurate.
<P>
If parameter limits are needed, in spite of the side effects, then the
user should be aware of the following techniques to alleviate problems
caused by limits:
<P>
<H4>Getting the right minimum with limits.</H4>
<P>
If MIGRAD converges normally to a point where no parameter is near one of
its limits, then the existence of limits has probably not prevented MINUIT
from finding the right minimum. On the other hand, if one or more
parameters is near its limit at the minimum, this may be because the true
minimum is indeed at a limit, or it may be because the minimizer has
become ``blocked'' at a limit. This may normally happen only if the
parameter is so close to a limit (internal value at an odd multiple of #((pi)/(2))
that MINUIT prints a warning to this effect when it prints
the parameter values.

The minimizer can become blocked at a limit, because at a limit the
derivative seen by the minimizer partial F/partial Pint  is zero no matter
what the real derivative partial F/partial Pext  is.
<P>
<P>
<PRE>
((partial F)/(partial P   ))= ((partial F)/(partial P   ))((partial P    )/(partial P   )) =((partial F)/(partial P    ))= 0
                       int                           ext             ext             int                           ext
</PRE>
<P>
<P>
<H4>Getting the right parameter errors with limits.</H4>
<P>
In the best case, where the minimum is far from any limits, MINUIT will
correctly transform the error matrix, and the parameter errors it reports
should be accurate and very close to those you would have got without
limits. In other cases (which should be more common, since otherwise you
wouldn't need limits), the very meaning of parameter errors becomes
problematic. Mathematically, since the limit is an absolute constraint on
the parameter, a parameter at its limit has no error, at least in one
direction. The error matrix, which can assign only symmetric errors, then
becomes essentially meaningless.
<P>
<H3>Interpretation of Parameter Errors:</H3>
<P>
There are two kinds of problems that can arise: the reliability of
MINUIT's error estimates, and their statistical interpretation, assuming
they are accurate.
<P>
<H3>Statistical interpretation:</H3>
<P>
For discussuion of basic concepts, such as the meaning of the elements of
the error matrix, or setting of exact confidence levels see:
<ol>
  <li>F.James.
     Determining the statistical Significance of experimental Results.
     Technical Report DD/81/02 and CERN Report 81-03, CERN, 1981.</li>

  <li>W.T.Eadie, D.Drijard, F.James, M.Roos, and B.Sadoulet.
     Statistical Methods in Experimental Physics.
     North-Holland, 1971.</li>
</ol>
<P>
<H3>Reliability of MINUIT error estimates.</H3>
<P>
MINUIT always carries around its own current estimates of the parameter
errors, which it will print out on request, no matter how accurate they
are at any given point in the execution. For example, at initialization,
these estimates are just the starting step sizes as specified by the user.
After a HESSE step, the errors are usually quite accurate,
unless there has been a problem. MINUIT, when it prints out error values,
also gives some indication of how reliable it thinks they are. For
example, those marked <TT>CURRENT GUESS ERROR</TT> are only working values
not to be believed, and <TT>APPROXIMATE ERROR</TT> means that they have
been calculated but there is reason to believe that they may not be
accurate.
<P>
If no mitigating adjective is given, then at least MINUIT believes the
errors are accurate, although there is always a small chance that MINUIT
has been fooled. Some visible signs that MINUIT may have been fooled are:
<P>
<OL>
<LI>Warning messages produced during the minimization or error analysis.
<LI>Failure to find new minimum.
<LI>Value of <TT>EDM</TT> too big (estimated Distance to Minimum).
<LI>Correlation coefficients exactly equal to zero, unless some parameters
are known to be uncorrelated with the others.
<LI>Correlation coefficients very close to one (greater than 0.99). This
indicates both an exceptionally difficult problem, and one which has been
badly parameterized so that individual errors are not very meaningful
because they are so highly correlated.
<LI>Parameter at limit. This condition, signalled by a MINUIT warning
message, may make both the function minimum and parameter errors
unreliable. See the discussion above ``Getting the right parameter errors
with limits''.
</OL>
<P>
The best way to be absolutely sure of the errors, is to use
``independent'' calculations and compare them, or compare the calculated
errors with a picture of the function. Theoretically, the covariance
matrix for a ``physical'' function must be positive-definite at the
minimum, although it may not be so for all points far away from the
minimum, even for a well-determined physical problem. Therefore, if MIGRAD
reports that it has found a non-positive-definite covariance matrix, this
may be a sign of one or more of the following:
<P>
<H5>A non-physical region:</H5>
<P>
On its way to the minimum, MIGRAD may have traversed a region which has
unphysical behaviour, which is of course not a serious problem as long as
it recovers and leaves such a region.
<P>
<H5>An underdetermined problem:</H5>
<P>
If the matrix is not positive-definite even at the minimum, this may mean
that the solution is not well-defined, for example that there are more
unknowns than there are data points, or that the parameterization of the
fit contains a linear dependence. If this is the case, then MINUIT (or any
other program) cannot solve your problem uniquely, and the error matrix
will necessarily be largely meaningless, so the user must remove the
underdeterminedness by reformulating the parameterization. MINUIT cannot
do this itself.
<P>
<H5>Numerical inaccuracies:</H5>
<P>
It is possible that the apparent lack of positive-definiteness is in fact
only due to excessive roundoff errors in numerical calculations in the
user function or not enough precision. This is unlikely in general, but
becomes more likely if the number of free parameters is very large, or if

the parameters are badly scaled (not all of the same order of magnitude),
and correlations are also large. In any case, whether the
non-positive-definiteness is real or only numerical is largely irrelevant,
since in both cases the error matrix will be unreliable and the minimum
suspicious.
<P>
<H5>An ill-posed problem:</H5>
<P>
For questions of parameter dependence, see the discussion above on
positive-definiteness.
<P>
Possible other mathematical problems are the following:
<P>
<H5>Excessive numerical roundoff:</H5>
<P>
Be especially careful of exponential and factorial functions which get big
very quickly and lose accuracy.
<P>
<H5>Starting too far from the solution:</H5>
<P>
The function may have unphysical local minima, especially at infinity in
some variables.

<H5>Minuit parameter errors in the presence of limits</H5>
This concerns the way Minuit reports the symmetric (or parabolic)  errors
on parameters.  It does not apply to the errors reported from Minos, which
are in general asymmetric.
<P>
The symmetric errors reported by Minuit are always calculated from 
the covariance matrix, assuming that this matrix has been calculated, 
usually as the result of a Migrad minimization or a direct 
calculation by Hesse which inverts the second derivative matrix.
<P>
When there are no limits on the parameter in question, the error reported 
by Minuit should therefore be exactly equal to the square root of the 
corresponding diagonal element of the error matrix reported by Minuit.
<P>
However, when there are limits on the parameter, there is a transformation
between the internal parameter values seen by Minuit (which are unbounded)  
and the external parameter values seen by the user in FCN (which remain
inside the desired limits).  Therefore the internal error matrix kept by
Minuit must be transformed to an external error matrix for the user.  
This is done by multiplying the (I,J)th element by DEXDIN(I)*DEXDIN(J),
where DEXDIN is the derivative of the external value with respect to the
internal value at the minimum.  This is a linearization of the
transformation, and is the only way to produce an error matrix in external
coordinates meaningful to the user.  But when reporting the individual
parabolic errors for limited parameters, Minuit can do a little better, so
it does.  In this case, Minuit actually transforms the ends of the
internal "error bar" to external coordinates and reports the length of
this transformed interval.  Strictly speaking, it is now asymmetric, but
since the origin of the asymmetry is only an artificial transformation it
does not make much sense, so the transformed errors are symmetrized.
<P>
The result of all the above is that for parameters with limits, the error 
reported by Minuit is not exactly equal to the square root of the diagonal 
element of the error matrix.  The difference is a measure of how much the 
limits deform the problem.  If possible, it is suggested not to use limits 
on parameters, and the problem goes away.  If for some reason limits are 
necessary, and you are sensitive to the difference between the two ways of 
calculating the errors, it is suggested to use Minos errors which take 
into account the non-linearities much more precisely.

<!--*/
// -->END_HTML

#include <stdlib.h>
#include <stdio.h>

#include "TROOT.h"
#include "TMinuit.h"
#include "TMath.h"
#include "TError.h"
#include "TPluginManager.h"
#include "TClass.h"
#include "TInterpreter.h"

TMinuit *gMinuit;

const char charal[29] = " .ABCDEFGHIJKLMNOPQRSTUVWXYZ";

ClassImp(TMinuit)

//______________________________________________________________________________
TMinuit::TMinuit(): TNamed("MINUIT","The Minimization package")
{
//*-*-*-*-*-*-*-*-*-*-*Minuit normal constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  ========================

   if (TMinuit::Class()->IsCallingNew()) {
      //preset all pointers to null
      fCpnam     = 0;
      fU         = 0;
      fAlim      = 0;
      fBlim      = 0;
      fPstar     = 0;
      fGin       = 0;
      fNvarl     = 0;
      fNiofex    = 0;

      fNexofi    = 0;
      fIpfix     = 0;
      fErp       = 0;
      fErn       = 0;
      fWerr      = 0;
      fGlobcc    = 0;
      fX         = 0;
      fXt        = 0;
      fDirin     = 0;
      fXs        = 0;
      fXts       = 0;
      fDirins    = 0;
      fGrd       = 0;
      fG2        = 0;
      fGstep     = 0;
      fDgrd      = 0;
      fGrds      = 0;
      fG2s       = 0;
      fGsteps    = 0;
      fPstst     = 0;
      fPbar      = 0;
      fPrho      = 0;
      fWord7     = 0;
      fVhmat     = 0;
      fVthmat    = 0;
      fP         = 0;
      fXpt       = 0;
      fYpt       = 0;
      fChpt      = 0;
      fCONTgcc   = 0;
      fCONTw     = 0;
      fFIXPyy    = 0;
      fGRADgf    = 0;
      fHESSyy    = 0;
      fIMPRdsav  = 0;
      fIMPRy     = 0;
      fMATUvline = 0;
      fMIGRflnu  = 0;
      fMIGRstep  = 0;
      fMIGRgs    = 0;
      fMIGRvg    = 0;
      fMIGRxxs   = 0;
      fMNOTxdev  = 0;
      fMNOTw     = 0;
      fMNOTgcc   = 0;
      fPSDFs     = 0;
      fSEEKxmid  = 0;
      fSEEKxbest = 0;
      fSIMPy     = 0;
      fVERTq     = 0;
      fVERTs     = 0;
      fVERTpp    = 0;
      fCOMDplist = 0;
      fPARSplist = 0;

      fUp        = 0;
      fEpsi      = 0;
      fApsi      = 0;
      fXmidcr    = 0;
      fYmidcr    = 0;
      fXdircr    = 0;
      fYdircr    = 0;   

      fStatus       = 0;
      fEmpty        = 0;
      fObjectFit    = 0;
      fMethodCall   = 0;
      fPlot         = 0;
      fGraphicsMode = kTRUE;

   } else {
      BuildArrays(25);

      fUp        = 0;
      fEpsi      = 0;
      fApsi      = 0;
      fXmidcr    = 0;
      fYmidcr    = 0;
      fXdircr    = 0;
      fYdircr    = 0;   

      fStatus       = 0;
      fEmpty        = 0;
      fObjectFit    = 0;
      fMethodCall   = 0;
      fPlot         = 0;
      fGraphicsMode = kTRUE;
      SetMaxIterations();
      mninit(5,6,7);
   }

   fFCN = 0;
   gMinuit = this;
   gROOT->GetListOfSpecials()->Add(gMinuit);

}

//______________________________________________________________________________
TMinuit::TMinuit(Int_t maxpar): TNamed("MINUIT","The Minimization package")
{
//*-*-*-*-*-*-*-*-*-*-*Minuit normal constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  ========================
//
//  maxpar is the maximum number of parameters used with this TMinuit object.

   BuildArrays(maxpar);

   fStatus       = 0;
   fEmpty        = 0;
   fObjectFit    = 0;
   fMethodCall   = 0;
   fPlot         = 0;
   fGraphicsMode = kTRUE;
   SetMaxIterations();

   mninit(5,6,7);
   gMinuit = this;
   gROOT->GetListOfSpecials()->Add(gMinuit);
}

//______________________________________________________________________________
TMinuit::TMinuit(const TMinuit &minuit) : TNamed(minuit)
{
   // Private TMinuit copy ctor. TMinuit can not be copied.

   Error("TMinuit", "can not copy construct TMinuit");
}

//______________________________________________________________________________
TMinuit::~TMinuit()
{
//*-*-*-*-*-*-*-*-*-*-*Minuit default destructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  =========================

   DeleteArrays();
   delete fPlot;
   delete fMethodCall;
   gROOT->GetListOfSpecials()->Remove(this);
   if (gMinuit == this) gMinuit = 0;
}

//______________________________________________________________________________
void TMinuit::BuildArrays(Int_t maxpar)
{
//*-*-*-*-*-*-*Create internal Minuit arrays for the maxpar parameters*-*-*-*
//*-*          =======================================================

   fMaxpar = 25;
   if (maxpar >= fMaxpar) fMaxpar = maxpar+1;
   fMaxpar1= fMaxpar*(fMaxpar+1);
   fMaxpar2= 2*fMaxpar;
   fMaxpar5= fMaxpar1/2;
   fMaxcpt = 101;
   fCpnam  = new TString[fMaxpar2];
   fU      = new Double_t[fMaxpar2];
   fAlim   = new Double_t[fMaxpar2];
   fBlim   = new Double_t[fMaxpar2];
   fPstar  = new Double_t[fMaxpar2];
   fGin    = new Double_t[fMaxpar2];
   fNvarl  = new Int_t[fMaxpar2];
   fNiofex = new Int_t[fMaxpar2];

   fNexofi = new Int_t[fMaxpar];
   fIpfix  = new Int_t[fMaxpar];
   fErp    = new Double_t[fMaxpar];
   fErn    = new Double_t[fMaxpar];
   fWerr   = new Double_t[fMaxpar];
   fGlobcc = new Double_t[fMaxpar];
   fX      = new Double_t[fMaxpar];
   fXt     = new Double_t[fMaxpar];
   fDirin  = new Double_t[fMaxpar];
   fXs     = new Double_t[fMaxpar];
   fXts    = new Double_t[fMaxpar];
   fDirins = new Double_t[fMaxpar];
   fGrd    = new Double_t[fMaxpar];
   fG2     = new Double_t[fMaxpar];
   fGstep  = new Double_t[fMaxpar];
   fDgrd   = new Double_t[fMaxpar];
   fGrds   = new Double_t[fMaxpar];
   fG2s    = new Double_t[fMaxpar];
   fGsteps = new Double_t[fMaxpar];
   fPstst  = new Double_t[fMaxpar];
   fPbar   = new Double_t[fMaxpar];
   fPrho   = new Double_t[fMaxpar];
   fWord7  = new Double_t[fMaxpar];
   fVhmat  = new Double_t[fMaxpar5];
   fVthmat = new Double_t[fMaxpar5];
   fP      = new Double_t[fMaxpar1];
   fXpt    = new Double_t[fMaxcpt];
   fYpt    = new Double_t[fMaxcpt];
   fChpt   = new char[fMaxcpt+1];
   // initialisation of dynamic arrays used internally in some functions
   // these arrays had a fix dimension in Minuit
   fCONTgcc   = new Double_t[fMaxpar];
   fCONTw     = new Double_t[fMaxpar];
   fFIXPyy    = new Double_t[fMaxpar];
   fGRADgf    = new Double_t[fMaxpar];
   fHESSyy    = new Double_t[fMaxpar];
   fIMPRdsav  = new Double_t[fMaxpar];
   fIMPRy     = new Double_t[fMaxpar];
   fMATUvline = new Double_t[fMaxpar];
   fMIGRflnu  = new Double_t[fMaxpar];
   fMIGRstep  = new Double_t[fMaxpar];
   fMIGRgs    = new Double_t[fMaxpar];
   fMIGRvg    = new Double_t[fMaxpar];
   fMIGRxxs   = new Double_t[fMaxpar];
   fMNOTxdev  = new Double_t[fMaxpar];
   fMNOTw     = new Double_t[fMaxpar];
   fMNOTgcc   = new Double_t[fMaxpar];
   fPSDFs     = new Double_t[fMaxpar];
   fSEEKxmid  = new Double_t[fMaxpar];
   fSEEKxbest = new Double_t[fMaxpar];
   fSIMPy     = new Double_t[fMaxpar];
   fVERTq     = new Double_t[fMaxpar];
   fVERTs     = new Double_t[fMaxpar];
   fVERTpp    = new Double_t[fMaxpar];
   fCOMDplist = new Double_t[fMaxpar];
   fPARSplist = new Double_t[fMaxpar];

   for (int i = 0; i < fMaxpar; i++) {
      fErp[i] = 0;
      fErn[i] = 0;
   }
}


//______________________________________________________________________________
TObject *TMinuit::Clone(const char *newname) const
{
   // Make a clone of an object using the Streamer facility.
   // Function pointer is copied to Clone
   TMinuit *named = (TMinuit*)TNamed::Clone(newname);
   named->fFCN=fFCN;
   return named;
}


//______________________________________________________________________________
Int_t TMinuit::Command(const char *command)
{
// execute a Minuit command
//     Equivalent to MNEXCM except that the command is given as a
//     character string.
// See TMinuit::mnhelp for the full list of available commands
//
// Returns the status of the execution:
//   = 0: command executed normally
//     1: command is blank, ignored
//     2: command line unreadable, ignored
//     3: unknown command, ignored
//     4: abnormal termination (e.g., MIGRAD not converged)
//     5: command is a request to read PARAMETER definitions
//     6: 'SET INPUT' command
//     7: 'SET TITLE' command
//     8: 'SET COVAR' command
//     9: reserved
//    10: END command
//    11: EXIT or STOP command
//    12: RETURN command
//
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t status = 0;
   mncomd(command,status);
   return status;
}

//______________________________________________________________________________
TObject *TMinuit::Contour(Int_t npoints, Int_t pa1, Int_t pa2)
{
  // Creates a TGraph object describing the n-sigma contour of a
  // TMinuit fit. The contour of the parameters pa1 and pa2 is calculated
  // unsing npoints (>=4) points. The TMinuit status will be
  //  0   on success and
  // -1   if errors in the calling sequence (pa1, pa2 not variable)
  //  1   if less than four points can be found
  //  2   if npoints<4
  //  n>3 if only n points can be found (n < npoints)
  // The status can be obtained via TMinuit::GetStatus().
  //
  // To get the n-sigma contour the ERRDEF parameter in Minuit has to set
  // to n^2. The fcn function has to be set before the routine is called.
  //
  // The TGraph object is created via the interpreter. The user must cast it
  // to a TGraph*. Note that the TGraph is created with npoints+1 in order to
  // close the contour (setting last point equal to first point).
  //
  // You can find an example in $ROOTSYS/tutorials/fit/fitcont.C

   if (npoints<4) {
      // we need at least 4 points
      fStatus= 2;
      return (TObject *)0;
   }
   Int_t    npfound;
   Double_t *xcoor = new Double_t[npoints+1];
   Double_t *ycoor = new Double_t[npoints+1];
   mncont(pa1,pa2,npoints,xcoor,ycoor,npfound);
   if (npfound<4) {
      // mncont did go wrong
      Warning("Contour","Cannot find more than 4 points, no TGraph returned");
      fStatus= (npfound==0 ? 1 : npfound);
      delete [] xcoor;
      delete [] ycoor;
      return (TObject *)0;
   }
   if (npfound!=npoints) {
      // mncont did go wrong
      Warning("Contour","Returning a TGraph with %d points only",npfound);
      npoints = npfound;
   }
   fStatus=0;
   // create graph via the  PluginManager
   xcoor[npoints] = xcoor[0];  // add first point at end to get closed polyline
   ycoor[npoints] = ycoor[0];
   TObject *gr = 0;
   TPluginHandler *h;
   if ((h = gROOT->GetPluginManager()->FindHandler("TMinuitGraph"))) {
      if (h->LoadPlugin() != -1)
      gr = (TObject*)h->ExecPlugin(3,npoints+1,xcoor,ycoor);
   }
   delete [] xcoor;
   delete [] ycoor;
   return gr;
}

//______________________________________________________________________________
Int_t TMinuit::DefineParameter( Int_t parNo, const char *name, Double_t initVal, Double_t initErr, Double_t lowerLimit, Double_t upperLimit )
{
// Define a parameter

   Int_t err;

   TString sname = name;
   mnparm( parNo, sname, initVal, initErr, lowerLimit, upperLimit, err);

   return err;
}

//______________________________________________________________________________
void TMinuit::DeleteArrays()
{
//*-*-*-*-*-*-*-*-*-*-*-*Delete internal Minuit arrays*-*-*-*-*-*-*-*-*
//*-*                    =============================
   if (fEmpty) return;
   delete [] fCpnam;
   delete [] fU;
   delete [] fAlim;
   delete [] fBlim;
   delete [] fErp;
   delete [] fErn;
   delete [] fWerr;
   delete [] fGlobcc;
   delete [] fNvarl;
   delete [] fNiofex;
   delete [] fNexofi;
   delete [] fX;
   delete [] fXt;
   delete [] fDirin;
   delete [] fXs;
   delete [] fXts;
   delete [] fDirins;
   delete [] fGrd;
   delete [] fG2;
   delete [] fGstep;
   delete [] fGin;
   delete [] fDgrd;
   delete [] fGrds;
   delete [] fG2s;
   delete [] fGsteps;
   delete [] fIpfix;
   delete [] fVhmat;
   delete [] fVthmat;
   delete [] fP;
   delete [] fPstar;
   delete [] fPstst;
   delete [] fPbar;
   delete [] fPrho;
   delete [] fWord7;
   delete [] fXpt;
   delete [] fYpt;
   delete [] fChpt;

   delete [] fCONTgcc;
   delete [] fCONTw;
   delete [] fFIXPyy;
   delete [] fGRADgf;
   delete [] fHESSyy;
   delete [] fIMPRdsav;
   delete [] fIMPRy;
   delete [] fMATUvline;
   delete [] fMIGRflnu;
   delete [] fMIGRstep;
   delete [] fMIGRgs;
   delete [] fMIGRvg;
   delete [] fMIGRxxs;
   delete [] fMNOTxdev;
   delete [] fMNOTw;
   delete [] fMNOTgcc;
   delete [] fPSDFs;
   delete [] fSEEKxmid;
   delete [] fSEEKxbest;
   delete [] fSIMPy;
   delete [] fVERTq;
   delete [] fVERTs;
   delete [] fVERTpp;
   delete [] fCOMDplist;
   delete [] fPARSplist;

   fEmpty = 1;
}

//______________________________________________________________________________
Int_t TMinuit::Eval(Int_t npar, Double_t *grad, Double_t &fval, Double_t *par, Int_t flag)
{
// Evaluate the minimisation function
//  Input parameters:
//    npar:    number of currently variable parameters
//    par:     array of (constant and variable) parameters
//    flag:    Indicates what is to be calculated (see example below)
//    grad:    array of gradients
//  Output parameters:
//    fval:    The calculated function value.
//    grad:    The (optional) vector of first derivatives).
//
// The meaning of the parameters par is of course defined by the user,
// who uses the values of those parameters to calculate his function value.
// The starting values must be specified by the user.
// Later values are determined by Minuit as it searches for the minimum
// or performs whatever analysis is requested by the user.
//
// Note that this virtual function may be redefined in a class derived from TMinuit.
// The default function calls the function specified in SetFCN
//
// Example of Minimisation function:
/*
   if (flag == 1) {
      read input data,
      calculate any necessary constants, etc.
   }
   if (flag == 2) {
      calculate GRAD, the first derivatives of FVAL
     (this is optional)
   }
   Always calculate the value of the function, FVAL,
   which is usually a chisquare or log likelihood.
   if (iflag == 3) {
      will come here only after the fit is finished.
      Perform any final calculations, output fitted data, etc.
   }
*/
//  See concrete examples in TH1::H1FitChisquare, H1FitLikelihood

   if (fFCN) (*fFCN)(npar,grad,fval,par,flag);
   return 0;
}

//______________________________________________________________________________
Int_t TMinuit::FixParameter( Int_t parNo)
{
// fix a parameter

   Int_t err;
   Double_t tmp = parNo+1; //set internal Minuit numbering

   mnexcm( "FIX", &tmp,  1,  err );

   return err;
}

//______________________________________________________________________________
Int_t TMinuit::GetParameter( Int_t parNo, Double_t &currentValue, Double_t &currentError ) const
{
// return parameter value and error
   Int_t    err;
   TString  name; // ignored
   Double_t bnd1, bnd2; // ignored

   mnpout( parNo, name, currentValue, currentError, bnd1, bnd2, err );

   return err;
}

//______________________________________________________________________________
Int_t TMinuit::GetNumFixedPars() const
{
// returns the number of currently fixed parameters

   return fNpfix;
}

//______________________________________________________________________________
Int_t TMinuit::GetNumFreePars() const
{
// returns the number of currently free parameters

   return fNpar;
}

//______________________________________________________________________________
Int_t TMinuit::GetNumPars() const
{
// returns the total number of parameters that have been defined.
// (fixed and free)

   return fNpar + fNpfix;
}

//______________________________________________________________________________
Int_t TMinuit::Migrad()
{
// invokes the MIGRAD minimizer
   Int_t err;
   Double_t tmp = 0;

   mnexcm( "MIGRAD", &tmp, 0, err );

   return err;
}

//______________________________________________________________________________
Int_t TMinuit::Release( Int_t parNo)
{
// release a parameter

   Int_t err;
   Double_t tmp = parNo+1; //set internal Minuit numbering

   mnexcm( "RELEASE", &tmp, 1, err );

   return err;
}

//______________________________________________________________________________
Int_t TMinuit::SetErrorDef( Double_t up )
{
// To get the n-sigma contour the error def parameter "up" has to set to n^2.
   
   Int_t err;

   mnexcm( "SET ERRDEF", &up, 1, err );

   return err;
}

//______________________________________________________________________________
void TMinuit::SetFCN(void (*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t))
{
//*-*-*-*-*-*-*To set the address of the minimization function*-*-*-*-*-*-*-*
//*-*          ===============================================
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   fFCN = fcn;
}

//______________________________________________________________________________
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
//*-*          ===============================================

   TMethodCall *m  = gMinuit->GetMethodCall();
   if (!m) return;

   Long_t args[5];
   args[0] = (Long_t)&npar;
   args[1] = (Long_t)gin;
   args[2] = (Long_t)&f;
   args[3] = (Long_t)u;
   args[4] = (Long_t)flag;
   m->SetParamPtrs(args);
   Double_t result;
   m->Execute(result);
}

//______________________________________________________________________________
void TMinuit::SetFCN(void *fcn)
{
//*-*-*-*-*-*-*To set the address of the minimization function*-*-*-*-*-*-*-*
//*-*          ===============================================
//     this function is called by CINT instead of the function above
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   if (!fcn) return;

   const char *funcname = gCint->Getp2f2funcname(fcn);
   if (funcname) {
      fMethodCall = new TMethodCall();
      fMethodCall->InitWithPrototype(funcname,"Int_t&,Double_t*,Double_t&,Double_t*,Int_t");
   }
   fFCN = InteractiveFCNm;
   gMinuit = this; //required by InteractiveFCNm
}

//______________________________________________________________________________
Int_t TMinuit::SetPrintLevel( Int_t printLevel )
{
   //set Minuit print level
   // printlevel = -1  quiet (also suppresse all warnings)
   //            =  0  normal
   //            =  1  verbose
   Int_t    err;
   Double_t tmp = printLevel;

   mnexcm( "SET PRINT", &tmp, 1, err );
   
   if (printLevel <=-1) mnexcm("SET NOWarnings",&tmp,0,err);

   return err;
}

//______________________________________________________________________________
void TMinuit::mnamin()
{
//*-*-*-*-*-*-*-*-*-*-*-*-*Initialize AMIN*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                      ===============
//*-*C        Called  from many places.  Initializes the value of AMIN by
//*-*C        calling the user function. Prints out the function value and
//*-*C        parameter values if Print Flag value is high enough.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t fnew;
   Int_t nparx;

   nparx = fNpar;
   if (fISW[4] >= 1) {
      Printf(" FIRST CALL TO USER FUNCTION AT NEW START POINT, WITH IFLAG=4.");
   }
   mnexin(fX);
   Eval(nparx, fGin, fnew, fU, 4);    ++fNfcn;
   fAmin = fnew;
   fEDM  = fBigedm;
} /* mnamin_ */

//______________________________________________________________________________
void TMinuit::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*-*-*-*-*-*-*-*-*
//*-*                  ======================================
//*-*        Function TO DETERMINE REASONABLE HISTOGRAM INTERVALS
//*-*        GIVEN ABSOLUTE UPPER AND LOWER BOUNDS  A1 AND A2
//*-*        AND DESIRED MAXIMUM NUMBER OF BINS NAA
//*-*        PROGRAM MAKES REASONABLE BINNING FROM BL TO BH OF WIDTH BWID
//*-*        F. JAMES,   AUGUST, 1974 , stolen for Minuit, 1988
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t awid,ah, al, sigfig, sigrnd, alb;
   Int_t kwid, lwid, na=0, log_;

   al = TMath::Min(a1,a2);
   ah = TMath::Max(a1,a2);
   if (al == ah) ah = al + 1;

//*-*-       IF NAA .EQ. -1 , PROGRAM USES BWID INPUT FROM CALLING ROUTINE
   if (naa == -1) goto L150;
L10:
   na = naa - 1;
   if (na < 1) na = 1;

//*-*-        GET NOMINAL BIN WIDTH IN EXPON FORM
L20:
   awid = (ah-al) / Double_t(na);
   log_ = Int_t(TMath::Log10(awid));
   if (awid <= 1) --log_;
   sigfig = awid*TMath::Power(10, -log_);
//*-*-       ROUND MANTISSA UP TO 2, 2.5, 5, OR 10
   if (sigfig > 2) goto L40;
   sigrnd = 2;
   goto L100;
L40:
   if (sigfig > 2.5) goto L50;
   sigrnd = 2.5;
   goto L100;
L50:
   if (sigfig > 5) goto L60;
   sigrnd = 5;
   goto L100;
L60:
   sigrnd = 1;
   ++log_;
L100:
   bwid = sigrnd*TMath::Power(10, log_);
   goto L200;
//*-*-       GET NEW BOUNDS FROM NEW WIDTH BWID
L150:
   if (bwid <= 0) goto L10;
L200:
   alb  = al / bwid;
   lwid = Int_t(alb);
   if (alb < 0) --lwid;
   bl   = bwid*Double_t(lwid);
   alb  = ah / bwid + 1;
   kwid = Int_t(alb);
   if (alb < 0) --kwid;
   bh = bwid*Double_t(kwid);
   nb = kwid - lwid;
   if (naa > 5) goto L240;
   if (naa == -1) return;
//*-*-        REQUEST FOR ONE BIN IS DIFFICULT CASE
   if (naa > 1 || nb == 1) return;
   bwid *= 2;
   nb = 1;
   return;
L240:
   if (nb << 1 != naa) return;
   ++na;
   goto L20;
} /* mnbins_ */

//______________________________________________________________________________
void TMinuit::mncalf(Double_t *pvec, Double_t &ycalf)
{
//*-*-*-*-*-*-*-*-*-*Transform FCN to find further minima*-*-*-*-*-*-*-*-*-*
//*-*                ====================================
//*-*        Called only from MNIMPR.  Transforms the function FCN
//*-*        by dividing out the quadratic part in order to find further
//*-*        minima.    Calculates  ycalf = (f-fmin)/(x-xmin)*v*(x-xmin)
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Int_t ndex, i, j, m, n, nparx;
   Double_t denom, f;

   nparx = fNpar;
   mninex(&pvec[0]);
   Eval(nparx, fGin, f, fU, 4);    ++fNfcn;
   for (i = 1; i <= fNpar; ++i) {
      fGrd[i-1] = 0;
      for (j = 1; j <= fNpar; ++j) {
         m = TMath::Max(i,j);
         n = TMath::Min(i,j);
         ndex = m*(m-1) / 2 + n;
         fGrd[i-1] += fVthmat[ndex-1]*(fXt[j-1] - pvec[j-1]);
      }
   }
   denom = 0;
   for (i = 1; i <= fNpar; ++i) {denom += fGrd[i-1]*(fXt[i-1] - pvec[i-1]); }
   if (denom <= 0) {
      fDcovar = 1;
      fISW[1] = 0;
      denom   = 1;
   }
   ycalf = (f - fApsi) / denom;
} /* mncalf_ */

//______________________________________________________________________________
void TMinuit::mncler()
{
//*-*-*-*-*-*-*-*-*-*-*Resets the parameter list to UNDEFINED*-*-*-*-*-*-*-*
//*-*                  ======================================
//*-*        Called from MINUIT and by option from MNEXCM
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t i;

   fNpfix = 0;
   fNu = 0;
   fNpar = 0;
   fNfcn = 0;
   fNwrmes[0] = 0;
   fNwrmes[1] = 0;
   for (i = 1; i <= fMaxext; ++i) {
      fU[i-1]      = 0;
      fCpnam[i-1]  = fCundef;
      fNvarl[i-1]  = -1;
      fNiofex[i-1] = 0;
   }
   mnrset(1);
   fCfrom  = "CLEAR   ";
   fNfcnfr = fNfcn;
   fCstatu = "UNDEFINED ";
   fLnolim = kTRUE;
   fLphead = kTRUE;
} /* mncler_ */

//______________________________________________________________________________
void TMinuit::mncntr(Int_t ike1, Int_t ike2, Int_t &ierrf)
{
//*-*-*-*-*Print function contours in two variables, on line printer*-*-*-*-*
//*-*      =========================================================
//*-*
//*-*                input arguments: parx, pary, devs, ngrid
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   static TString clabel = "0123456789ABCDEFGHIJ";

   /* Local variables */
   Double_t d__1, d__2;
   Double_t fcna[115], fcnb[115], contur[20];
   Double_t  ylabel, fmn, fmx, xlo, ylo, xup, yup;
   Double_t devs, xsav, ysav,  bwidx,  bwidy, unext, ff, xb4;
   Int_t i,  ngrid, ixmid, nparx, ix, nx, ny, ki1, ki2, ixzero, iy, ics;
   TString chmid, chln, chzero;

   Int_t ke1 = ike1+1;
   Int_t ke2 = ike2+1;
   if (ke1 <= 0 || ke2 <= 0) goto L1350;
   if (ke1 > fNu || ke2 > fNu) goto L1350;
   ki1 = fNiofex[ke1-1];
   ki2 = fNiofex[ke2-1];
   if (ki1 <= 0 || ki2 <= 0) goto L1350;
   if (ki1 == ki2) goto L1350;

   if (fISW[1] < 1) {
      mnhess();
      mnwerr();
   }
   nparx = fNpar;
   xsav = fU[ke1-1];
   ysav = fU[ke2-1];
   devs = fWord7[2];
   if (devs <= 0) devs = 2;
   xlo = fU[ke1-1] - devs*fWerr[ki1-1];
   xup = fU[ke1-1] + devs*fWerr[ki1-1];
   ylo = fU[ke2-1] - devs*fWerr[ki2-1];
   yup = fU[ke2-1] + devs*fWerr[ki2-1];
   ngrid = Int_t(fWord7[3]);
   if (ngrid <= 0) {
      ngrid = 25;
//*-*  Computing MIN
      nx = TMath::Min(fNpagwd - 15,ngrid);
//*-*  Computing MIN
      ny = TMath::Min(fNpagln - 7,ngrid);
   } else {
      nx = ngrid;
      ny = ngrid;
   }
   if (nx < 11)   nx = 11;
   if (ny < 11)   ny = 11;
   if (nx >= 115) nx = 114;

//*-*-        ask if parameter outside limits
   if (fNvarl[ke1-1] > 1) {
      if (xlo < fAlim[ke1-1]) xlo = fAlim[ke1-1];
      if (xup > fBlim[ke1-1]) xup = fBlim[ke1-1];
   }
   if (fNvarl[ke2-1] > 1) {
      if (ylo < fAlim[ke2-1]) ylo = fAlim[ke2-1];
      if (yup > fBlim[ke2-1]) yup = fBlim[ke2-1];
   }
   bwidx = (xup - xlo) / Double_t(nx);
   bwidy = (yup - ylo) / Double_t(ny);
   ixmid = Int_t(((xsav - xlo)*Double_t(nx) / (xup - xlo)) + 1);
   if (fAmin == fUndefi) mnamin();

   for (i = 1; i <= 20; ++i) {        contur[i-1] = fAmin + fUp*(i-1)*(i-1); }
   contur[0] += fUp*.01;
//*-*-               fill FCNB to prepare first row, and find column zero/
   fU[ke2-1] = yup;
   ixzero = 0;
   xb4 = 1;
//TH
   chmid.Resize(nx+1);
   chzero.Resize(nx+1);
   chln.Resize(nx+1);
   for (ix = 1; ix <= nx + 1; ++ix) {
      fU[ke1-1] = xlo + Double_t(ix-1)*bwidx;
      Eval(nparx, fGin, ff, fU, 4);
      fcnb[ix-1] = ff;
      if (xb4 < 0 && fU[ke1-1] > 0) ixzero = ix - 1;
      xb4          = fU[ke1-1];
      chmid[ix-1]  = '*';
      chzero[ix-1] = '-';
   }
   Printf(" Y-AXIS: PARAMETER %3d: %s",ke2,(const char*)fCpnam[ke2-1]);
   if (ixzero > 0) {
      chzero[ixzero-1] = '+';
      chln = " ";
      Printf("             X=0");
   }
//*-*-                loop over rows
   for (iy = 1; iy <= ny; ++iy) {
      unext = fU[ke2-1] - bwidy;
//*-*-                prepare this line background pattern for contour
      chln = " ";
// TH
      chln.Resize(nx+1);
      chln[ixmid-1] = '*';
      if (ixzero != 0) chln[ixzero-1] = ':';
      if (fU[ke2-1] > ysav && unext < ysav) chln = chmid;
      if (fU[ke2-1] > 0 && unext < 0)       chln = chzero;
      fU[ke2-1] = unext;
      ylabel = fU[ke2-1] + bwidy*.5;
//*-*-                move FCNB to FCNA and fill FCNB with next row
      for (ix = 1; ix <= nx + 1; ++ix) {
         fcna[ix-1] = fcnb[ix-1];
         fU[ke1-1] = xlo + Double_t(ix-1)*bwidx;
         Eval(nparx, fGin, ff, fU, 4);
         fcnb[ix-1] = ff;
      }
//*-*-                look for contours crossing the FCNxy squares
      for (ix = 1; ix <= nx; ++ix) {
         d__1 = TMath::Max(fcna[ix-1],fcnb[ix-1]),
         d__2 = TMath::Max(fcna[ix],fcnb[ix]);
         fmx  = TMath::Max(d__1,d__2);
         d__1 = TMath::Min(fcna[ix-1],fcnb[ix-1]),
         d__2 = TMath::Min(fcna[ix],fcnb[ix]);
         fmn  = TMath::Min(d__1,d__2);
         for (ics = 1; ics <= 20; ++ics) {
            if (contur[ics-1] > fmn)  goto L240;
         }
         continue;
L240:
         if (contur[ics-1] < fmx) chln[ix-1] = clabel[ics-1];
      }
//*-*-                print a row of the contour plot
      Printf(" %12.4g %s",ylabel,(const char*)chln);
   }
//*-*-                contours printed, label x-axis
   chln            = " ";
   chln(0,1)       = 'I';
   chln(ixmid-1,1) = 'I';
   chln(nx-1,1)    = 'I';
   Printf("              %s",(const char*)chln);

//*-*-               the hardest of all: print x-axis scale!
   chln =  " ";
   if (nx <= 26) {
      Printf("        %12.4g%s%12.4g",xlo,(const char*)chln,xup);
      Printf("              %s%12.4g",(const char*)chln,xsav);
   } else {
      Printf("        %12.4g%s%12.4g%s%12.4g",xlo,(const char*)chln,xsav,(const char*)chln,xup);
   }
   Printf("       X-AXIS: PARAMETER %3d %s  ONE COLUMN=%12.4g"
            ,ke1,(const char*)fCpnam[ke1-1],bwidx);
   Printf(" FUNCTION VALUES: F(I)=%12.4g +%12.4g *I**2",fAmin,fUp);
//*-*-                finished.  reset input values
   fU[ke1-1] = xsav;
   fU[ke2-1] = ysav;
   ierrf     = 0;
   return;
L1350:
   Printf(" INVALID PARAMETER NUMBER(S) REQUESTED.  IGNORED.");
   ierrf = 1;
} /* mncntr_ */

//______________________________________________________________________________
void TMinuit::mncomd(const char *crdbin, Int_t &icondn)
{
//*-*-*-*-*-*-*-*-*-*-*Reads a command string and executes*-*-*-*-*-*-*-*-*-*
//*-*                  ===================================
//*-*        Called by user.  'Reads' a command string and executes.
//*-*     Equivalent to MNEXCM except that the command is given as a
//*-*          character string.
//*-*
//*-*     ICONDN = 0: command executed normally
//*-*              1: command is blank, ignored
//*-*              2: command line unreadable, ignored
//*-*              3: unknown command, ignored
//*-*              4: abnormal termination (e.g., MIGRAD not converged)
//*-*              5: command is a request to read PARAMETER definitions
//*-*              6: 'SET INPUT' command
//*-*              7: 'SET TITLE' command
//*-*              8: 'SET COVAR' command
//*-*              9: reserved
//*-*             10: END command
//*-*             11: EXIT or STOP command
//*-*             12: RETURN command
//*-*
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Int_t ierr, ipos, i, llist, lenbuf, lnc;
   Bool_t leader;
   TString comand, crdbuf, ctemp;

   crdbuf = crdbin;
   crdbuf.ToUpper();
   lenbuf = crdbuf.Length();
   icondn = 0;
//*-*-    record not case-sensitive, get upper case, strip leading blanks
   leader = kTRUE;
   ipos = 1;
   for (i = 1; i <= TMath::Min(20,lenbuf); ++i) {
      if (crdbuf[i-1] == '\'') break;
      if (crdbuf[i-1] == ' ') {
         if (leader) ++ipos;
         continue;
      }
      leader = kFALSE;
   }

//*-*-                    blank or null command
   if (ipos > lenbuf) {
      Printf(" BLANK COMMAND IGNORED.");
      icondn = 1;
      return;
   }
//*-*-                                          . .   preemptive commands
//*-*-              if command is 'PARAMETER'
   if (crdbuf(ipos-1,3) == "PAR") {
      icondn = 5;
      fLphead = kTRUE;
      return;
   }
//*-*-              if command is 'SET INPUT'
   if (crdbuf(ipos-1,3) == "SET INP") {
      icondn = 6;
      fLphead = kTRUE;
      return;
   }
//*-*-              if command is 'SET TITLE'
   if (crdbuf(ipos-1,7) == "SET TIT") {
      icondn = 7;
      fLphead = kTRUE;
      return;
   }
//*-*-              if command is 'SET COVARIANCE'
   if (crdbuf(ipos-1,7) == "SET COV") {
      icondn = 8;
      fLphead = kTRUE;
      return;
   }
//*-*-              crack the command . . . . . . . . . . . . . . . .
   ctemp = crdbuf(ipos-1,lenbuf-ipos+1);
   mncrck(ctemp, 20, comand, lnc, fMaxpar, fCOMDplist, llist, ierr, fIsyswr);
   if (ierr > 0) {
      Printf(" COMMAND CANNOT BE INTERPRETED");
      icondn = 2;
      return;
   }

   mnexcm(comand.Data(), fCOMDplist, llist, ierr);
   icondn = ierr;
} /* mncomd_ */

//______________________________________________________________________________
void TMinuit::mncont(Int_t ike1, Int_t ike2, Int_t nptu, Double_t *xptu, Double_t *yptu, Int_t &ierrf)
{
//*-*-*-*-*-*-*Find points along a contour where FCN is minimum*-*-*-*-*-*-*
//*-*          ================================================
//*-*       Find NPTU points along a contour where the function
//*-*             FMIN (X(KE1),X(KE2)) =  AMIN+UP
//*-*       where FMIN is the minimum of FCN with respect to all
//*-*       the other NPAR-2 variable parameters (if any).
//*-*   IERRF on return will be equal to the number of points found:
//*-*     NPTU if normal termination with NPTU points found
//*-*     -1   if errors in the calling sequence (KE1, KE2 not variable)
//*-*      0   if less than four points can be found (using MNMNOT)
//*-*     n>3  if only n points can be found (n < NPTU)
//*-*
//*-*                 input arguments: parx, pary, devs, ngrid
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
    /* System generated locals */
   Int_t i__1;

   /* Local variables */
   Double_t d__1, d__2;
   Double_t dist, xdir, ydir, aopt,  u1min, u2min;
   Double_t abest, scalx, scaly;
   Double_t a1, a2, val2mi, val2pl, dc, sclfac, bigdis, sigsav;
   Int_t nall, iold, line, mpar, ierr, inew, move, next, i, j, nfcol, iercr;
   Int_t idist=0, npcol, kints, i2, i1, lr, nfcnco=0, ki1, ki2, ki3, ke3;
   Int_t nowpts, istrav, nfmxin, isw2, isw4;
   Bool_t ldebug;

   /* Function Body */
   Int_t ke1 = ike1+1;
   Int_t ke2 = ike2+1;
   ldebug = fIdbg[6] >= 1;
   if (ke1 <= 0 || ke2 <= 0) goto L1350;
   if (ke1 > fNu || ke2 > fNu) goto L1350;
   ki1 = fNiofex[ke1-1];
   ki2 = fNiofex[ke2-1];
   if (ki1 <= 0 || ki2 <= 0) goto L1350;
   if (ki1 == ki2) goto L1350;
   if (nptu < 4)  goto L1400;

   nfcnco  = fNfcn;
   fNfcnmx = (nptu + 5)*100*(fNpar + 1);
//*-*-          The minimum
   mncuve();
   u1min  = fU[ke1-1];
   u2min  = fU[ke2-1];
   ierrf  = 0;
   fCfrom = "MNContour ";
   fNfcnfr = nfcnco;
   if (fISW[4] >= 0) {
      Printf(" START MNCONTOUR CALCULATION OF %4d POINTS ON CONTOUR.",nptu);
      if (fNpar > 2) {
         if (fNpar == 3) {
            ki3 = 6 - ki1 - ki2;
            ke3 = fNexofi[ki3-1];
            Printf(" EACH POINT IS A MINIMUM WITH RESPECT TO PARAMETER %3d  %s",ke3,(const char*)fCpnam[ke3-1]);
         } else {
            Printf(" EACH POINT IS A MINIMUM WITH RESPECT TO THE OTHER %3d VARIABLE PARAMETERS.",fNpar - 2);
         }
      }
   }

//*-*-          Find the first four points using MNMNOT
//*-*-             ........................ first two points
   mnmnot(ke1, ke2, val2pl, val2mi);
   if (fErn[ki1-1] == fUndefi) {
      xptu[0] = fAlim[ke1-1];
      mnwarn("W", "MNContour ", "Contour squeezed by parameter limits.");
   } else {
      if (fErn[ki1-1] >= 0) goto L1500;
      xptu[0] = u1min + fErn[ki1-1];
   }
   yptu[0] = val2mi;

   if (fErp[ki1-1] == fUndefi) {
      xptu[2] = fBlim[ke1-1];
      mnwarn("W", "MNContour ", "Contour squeezed by parameter limits.");
   } else {
      if (fErp[ki1-1] <= 0) goto L1500;
      xptu[2] = u1min + fErp[ki1-1];
   }
   yptu[2] = val2pl;
   scalx = 1 / (xptu[2] - xptu[0]);
//*-*-             ........................... next two points
   mnmnot(ke2, ke1, val2pl, val2mi);
   if (fErn[ki2-1] == fUndefi) {
      yptu[1] = fAlim[ke2-1];
      mnwarn("W", "MNContour ", "Contour squeezed by parameter limits.");
   } else {
      if (fErn[ki2-1] >= 0) goto L1500;
      yptu[1] = u2min + fErn[ki2-1];
   }
   xptu[1] = val2mi;
   if (fErp[ki2-1] == fUndefi) {
      yptu[3] = fBlim[ke2-1];
      mnwarn("W", "MNContour ", "Contour squeezed by parameter limits.");
   } else {
      if (fErp[ki2-1] <= 0) goto L1500;
      yptu[3] = u2min + fErp[ki2-1];
   }
   xptu[3] = val2pl;
   scaly   = 1 / (yptu[3] - yptu[1]);
   nowpts  = 4;
   next    = 5;
   if (ldebug) {
      Printf(" Plot of four points found by MINOS");
      fXpt[0]  = u1min;
      fYpt[0]  = u2min;
      fChpt[0] = ' ';
//*-*  Computing MIN
      nall = TMath::Min(nowpts + 1,101);
      for (i = 2; i <= nall; ++i) {
         fXpt[i-1] = xptu[i-2];
         fYpt[i-1] = yptu[i-2];
      }
      sprintf(fChpt,"%s"," ABCD");
      mnplot(fXpt, fYpt, fChpt, nall, fNpagwd, fNpagln);
   }

//*-*-              ..................... save some values before fixing
   isw2   = fISW[1];
   isw4   = fISW[3];
   sigsav = fEDM;
   istrav = fIstrat;
   dc     = fDcovar;
   fApsi  = fEpsi*.5;
   abest  = fAmin;
   mpar   = fNpar;
   nfmxin = fNfcnmx;
   for (i = 1; i <= mpar; ++i) { fXt[i-1] = fX[i-1]; }
   i__1 = mpar*(mpar + 1) / 2;
   for (j = 1; j <= i__1; ++j) { fVthmat[j-1] = fVhmat[j-1]; }
   for (i = 1; i <= mpar; ++i) {
      fCONTgcc[i-1] = fGlobcc[i-1];
      fCONTw[i-1]   = fWerr[i-1];
   }
//*-*-                          fix the two parameters in question
   kints = fNiofex[ke1-1];
   mnfixp(kints-1, ierr);
   kints = fNiofex[ke2-1];
   mnfixp(kints-1, ierr);
//*-*-              ......................Fill in the rest of the points
   for (inew = next; inew <= nptu; ++inew) {
//*-*            find the two neighbouring points with largest separation
      bigdis = 0;
      for (iold = 1; iold <= inew - 1; ++iold) {
         i2 = iold + 1;
         if (i2 == inew) i2 = 1;
         d__1 = scalx*(xptu[iold-1] - xptu[i2-1]);
         d__2 = scaly*(yptu[iold-1] - yptu[i2-1]);
         dist = d__1*d__1 + d__2*d__2;
         if (dist > bigdis) {
            bigdis = dist;
            idist  = iold;
         }
      }
      i1 = idist;
      i2 = i1 + 1;
      if (i2 == inew) i2 = 1;
//*-*-                  next point goes between I1 and I2
      a1 = .5;
      a2 = .5;
L300:
      fXmidcr = a1*xptu[i1-1] + a2*xptu[i2-1];
      fYmidcr = a1*yptu[i1-1] + a2*yptu[i2-1];
      xdir    = yptu[i2-1] - yptu[i1-1];
      ydir    = xptu[i1-1] - xptu[i2-1];
      sclfac  = TMath::Max(TMath::Abs(xdir*scalx),TMath::Abs(ydir*scaly));
      fXdircr = xdir / sclfac;
      fYdircr = ydir / sclfac;
      fKe1cr  = ke1;
      fKe2cr  = ke2;
//*-*-               Find the contour crossing point along DIR
      fAmin = abest;
      mncros(aopt, iercr);
      if (iercr > 1) {
//*-*-             If cannot find mid-point, try closer to point 1
         if (a1 > .5) {
            if (fISW[4] >= 0) {
               Printf(" MNCONT CANNOT FIND NEXT POINT ON CONTOUR.  ONLY %3d POINTS FOUND.",nowpts);
            }
            goto L950;
         }
         mnwarn("W", "MNContour ", "Cannot find midpoint, try closer.");
         a1 = .75;
         a2 = .25;
         goto L300;
      }
//*-*-               Contour has been located, insert new point in list
      for (move = nowpts; move >= i1 + 1; --move) {
         xptu[move] = xptu[move-1];
         yptu[move] = yptu[move-1];
      }
      ++nowpts;
      xptu[i1] = fXmidcr + fXdircr*aopt;
      yptu[i1] = fYmidcr + fYdircr*aopt;
   }
L950:

   ierrf = nowpts;
   fCstatu = "SUCCESSFUL";
   if (nowpts < nptu)         fCstatu = "INCOMPLETE";

//*-*-               make a lineprinter plot of the contour
   if (fISW[4] >= 0) {
      fXpt[0]  = u1min;
      fYpt[0]  = u2min;
      fChpt[0] = ' ';
      nall = TMath::Min(nowpts + 1,101);
      for (i = 2; i <= nall; ++i) {
         fXpt[i-1]  = xptu[i-2];
         fYpt[i-1]  = yptu[i-2];
         fChpt[i-1] = 'X';
      }
      fChpt[nall] = 0;
      Printf(" Y-AXIS: PARAMETER %3d  %s",ke2,(const char*)fCpnam[ke2-1]);

      mnplot(fXpt, fYpt, fChpt, nall, fNpagwd, fNpagln);

      Printf("                         X-AXIS: PARAMETER %3d  %s",ke1,(const char*)fCpnam[ke1-1]);
   }
//*-*-                print out the coordinates around the contour
   if (fISW[4] >= 1) {
      npcol = (nowpts + 1) / 2;
      nfcol = nowpts / 2;
      Printf("%5d POINTS ON CONTOUR.   FMIN=%13.5e   ERRDEF=%11.3g",nowpts,abest,fUp);
      Printf("         %s%s%s%s",(const char*)fCpnam[ke1-1],
                                 (const char*)fCpnam[ke2-1],
                                 (const char*)fCpnam[ke1-1],
                                 (const char*)fCpnam[ke2-1]);
      for (line = 1; line <= nfcol; ++line) {
         lr = line + npcol;
         Printf(" %5d%13.5e%13.5e          %5d%13.5e%13.5e",line,xptu[line-1],yptu[line-1],lr,xptu[lr-1],yptu[lr-1]);
      }
      if (nfcol < npcol) {
         Printf(" %5d%13.5e%13.5e",npcol,xptu[npcol-1],yptu[npcol-1]);
      }
   }
//*-*-                                   . . contour finished. reset v
   fItaur = 1;
   mnfree(1);
   mnfree(1);
   i__1 = mpar*(mpar + 1) / 2;
   for (j = 1; j <= i__1; ++j) { fVhmat[j-1] = fVthmat[j-1]; }
   for (i = 1; i <= mpar; ++i) {
      fGlobcc[i-1] = fCONTgcc[i-1];
      fWerr[i-1]   = fCONTw[i-1];
      fX[i-1]      = fXt[i-1];
   }
   mninex(fX);
   fEDM    = sigsav;
   fAmin   = abest;
   fISW[1] = isw2;
   fISW[3] = isw4;
   fDcovar = dc;
   fItaur  = 0;
   fNfcnmx = nfmxin;
   fIstrat = istrav;
   fU[ke1-1] = u1min;
   fU[ke2-1] = u2min;
   goto L2000;
//*-*-                                    Error returns
L1350:
   Printf(" INVALID PARAMETER NUMBERS.");
   goto L1450;
L1400:
   Printf(" LESS THAN FOUR POINTS REQUESTED.");
L1450:
   ierrf   = -1;
   fCstatu = "USER ERROR";
   goto L2000;
L1500:
   Printf(" MNCONT UNABLE TO FIND FOUR POINTS.");
   fU[ke1-1] = u1min;
   fU[ke2-1] = u2min;
   ierrf     = 0;
   fCstatu   = "FAILED";
L2000:
   fCfrom  = "MNContour ";
   fNfcnfr = nfcnco;
} /* mncont_ */

//______________________________________________________________________________
void TMinuit::mncrck(TString cardbuf, Int_t maxcwd, TString &comand, Int_t &lnc,
        Int_t mxp, Double_t *plist, Int_t &llist, Int_t &ierr, Int_t)
{
//*-*-*-*-*-*-*-*-*-*-*-*Cracks the free-format input*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                    ============================
//*-*       Cracks the free-format input, expecting zero or more
//*-*         alphanumeric fields (which it joins into COMAND(1:LNC))
//*-*         followed by one or more numeric fields separated by
//*-*         blanks and/or one comma.  The numeric fields are put into
//*-*         the LLIST (but at most MXP) elements of PLIST.
//*-*      IERR = 0 if no errors,
//*-*           = 1 if error(s).
//*-*
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   /* Initialized data */
    
   char *cnull  = 0;
   const char *cnumer = "123456789-.0+";

   /* Local variables */
   Int_t ifld, iend, lend, left, nreq, ipos, kcmnd, nextb, ic, ibegin, ltoadd;
   Int_t ielmnt, lelmnt[25], nelmnt;
   TString ctemp;
   char *celmnt[25];
   char command[25];

   /* Function Body */
   char *crdbuf = (char*)cardbuf.Data();
   lend   = cardbuf.Length();
   ielmnt = 0;
   nextb  = 1;
   ierr   = 0;
//*-*-                                  . . . .  loop over words CELMNT
L10:
   for (ipos = nextb; ipos <= lend; ++ipos) {
      ibegin = ipos;
      if (crdbuf[ipos-1] == ' ') continue;
      if (crdbuf[ipos-1] == ',') goto L250;
      goto L150;
   }
   goto L300;
L150:
//*-*-              found beginning of word, look for end
   for (ipos = ibegin + 1; ipos <= lend; ++ipos) {
      if (crdbuf[ipos-1] == ' ') goto L250;
      if (crdbuf[ipos-1] == ',') goto L250;
   }
   ipos = lend + 1;
L250:
   iend = ipos - 1;
   ++ielmnt;
   if (iend >= ibegin) celmnt[ielmnt-1] = &crdbuf[ibegin-1];
   else                celmnt[ielmnt-1] = cnull;
   lelmnt[ielmnt-1] = iend - ibegin + 1;
   if (lelmnt[ielmnt-1] > 19) {
      Printf(" MINUIT WARNING: INPUT DATA WORD TOO LONG.");
      ctemp = cardbuf(ibegin-1,iend-ibegin+1);
      Printf("     ORIGINAL:%s",ctemp.Data());
      Printf(" TRUNCATED TO:%s",celmnt[ielmnt-1]);
      lelmnt[ielmnt-1] = 19;
   }
   if (ipos >= lend) goto L300;
   if (ielmnt >= 25) goto L300;
//*-*-                    look for comma or beginning of next word
   for (ipos = iend + 1; ipos <= lend; ++ipos) {
      if (crdbuf[ipos-1] == ' ') continue;
      nextb = ipos;
      if (crdbuf[ipos-1] == ',') nextb = ipos + 1;
      goto L10;
   }
//*-*-                All elements found, join the alphabetic ones to
//*-*-                               form a command
L300:
   nelmnt      = ielmnt;
   command[0]  = ' '; command[1] = 0;
   lnc         = 1;
   plist[0]    = 0;
   llist       = 0;
   if (ielmnt == 0) goto L900;
   kcmnd = 0;
   for (ielmnt = 1; ielmnt <= nelmnt; ++ielmnt) {
      if ( celmnt[ielmnt-1] == cnull) goto L450;
      for (ic = 1; ic <= 13; ++ic) {
         if (*celmnt[ielmnt-1] == cnumer[ic-1]) goto L450;
      }
      if (kcmnd >= maxcwd) continue;
      left = maxcwd - kcmnd;
      ltoadd = lelmnt[ielmnt-1];
      if (ltoadd > left) ltoadd = left;
      strncpy(&command[kcmnd],celmnt[ielmnt-1],ltoadd);
      kcmnd += ltoadd;
      if (kcmnd == maxcwd) continue;
      command[kcmnd] = ' ';
      ++kcmnd;
      command[kcmnd] = 0;
   }
   lnc = kcmnd;
   goto L900;
L450:
   lnc = kcmnd;
//*-*-                     . . . .  we have come to a numeric field
   llist = 0;
   for (ifld = ielmnt; ifld <= nelmnt; ++ifld) {
      ++llist;
      if (llist > mxp) {
         nreq = nelmnt - ielmnt + 1;
         Printf(" MINUIT WARNING IN MNCRCK: ");
         Printf(" COMMAND HAS INPUT %5d NUMERIC FIELDS, BUT MINUIT CAN ACCEPT ONLY%3d",nreq,mxp);
         goto L900;
      }
      if (celmnt[ifld-1] == cnull) plist[llist-1] = 0;
      else {
         sscanf(celmnt[ifld-1],"%lf",&plist[llist-1]);
      }
   }
//*-*-                                 end loop over numeric fields
L900:
   if (lnc <= 0) lnc = 1;
   comand = command;
} /* mncrck_ */

//______________________________________________________________________________
void TMinuit::mncros(Double_t &aopt, Int_t &iercr)
{
//*-*-*-*-*-*-*-*-*-*-*Find point where MNEVAL=AMIN+UP*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  ===============================
//*-*       Find point where MNEVAL=AMIN+UP, along the line through
//*-*       XMIDCR,YMIDCR with direction XDIRCR,YDIRCR,   where X and Y
//*-*       are parameters KE1CR and KE2CR.  If KE2CR=0 (from MINOS),
//*-*       only KE1CR is varied.  From MNCONT, both are varied.
//*-*       Crossing point is at
//*-*        (U(KE1),U(KE2)) = (XMID,YMID) + AOPT*(XDIR,YDIR)
//*-*
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t alsb[3], flsb[3], bmin, bmax, zmid, sdev, zdir, zlim;
   Double_t coeff[3], aleft, aulim, fdist, adist, aminsv;
   Double_t anext, fnext, slope, s1, s2, x1, x2, ecarmn, ecarmx;
   Double_t determ, rt, smalla, aright, aim, tla, tlf, dfda,ecart;
   Int_t iout=0, i, ileft, ierev, maxlk, ibest, ik, it;
   Int_t noless, iworst=0, iright, itoohi, kex, ipt;
   Bool_t ldebug;
   const char *chsign;
   x2 = 0;

   ldebug = fIdbg[6] >= 1;
   aminsv = fAmin;
//*-*-       convergence when F is within TLF of AIM and next prediction
//*-*-       of AOPT is within TLA of previous value of AOPT
   aim      = fAmin + fUp;
   tlf      = fUp*.01;
   tla      = .01;
   fXpt[0]  = 0;
   fYpt[0]  = aim;
   fChpt[0] = ' ';
   ipt = 1;
   if (fKe2cr == 0) {
      fXpt[1]  = -1;
      fYpt[1]  = fAmin;
      fChpt[1] = '.';
      ipt      = 2;
   }
//*-*-                   find the largest allowed A
   aulim = 100;
   for (ik = 1; ik <= 2; ++ik) {
      if (ik == 1) {
         kex  = fKe1cr;
         zmid = fXmidcr;
         zdir = fXdircr;
      } else {
         if (fKe2cr == 0) continue;
         kex  = fKe2cr;
         zmid = fYmidcr;
         zdir = fYdircr;
      }
      if (fNvarl[kex-1] <= 1) continue;
      if (zdir == 0) continue;
      zlim = fAlim[kex-1];
      if (zdir > 0) zlim = fBlim[kex-1];
      aulim = TMath::Min(aulim,(zlim - zmid) / zdir);
   }
//*-*-                 LSB = Line Search Buffer
//*-*-         first point
   anext   = 0;
   aopt    = anext;
   fLimset = kFALSE;
   if (aulim < aopt + tla) fLimset = kTRUE;
   mneval(anext, fnext, ierev);
//*-* debug printout:
   if (ldebug) {
      Printf(" MNCROS: calls=%8d   AIM=%10.5f  F,A=%10.5f%10.5f",fNfcn,aim,fnext,aopt);
   }
   if (ierev > 0) goto L900;
   if (fLimset && fnext <= aim) goto L930;
   ++ipt;
   fXpt[ipt-1]  = anext;
   fYpt[ipt-1]  = fnext;
   fChpt[ipt-1] = charal[ipt-1];
   alsb[0] = anext;
   flsb[0] = fnext;
   fnext   = TMath::Max(fnext,aminsv + fUp*.1);
   aopt    = TMath::Sqrt(fUp / (fnext - aminsv)) - 1;
   if (TMath::Abs(fnext - aim) < tlf) goto L800;

   if (aopt < -.5)aopt = -.5;
   if (aopt > 1)  aopt = 1;
   fLimset = kFALSE;
   if (aopt > aulim) {
      aopt    = aulim;
      fLimset = kTRUE;
   }
   mneval(aopt, fnext, ierev);
//*-* debug printout:
   if (ldebug) {
      Printf(" MNCROS: calls=%8d   AIM=%10.5f  F,A=%10.5f%10.5f",fNfcn,aim,fnext,aopt);
   }
   if (ierev > 0) goto L900;
   if (fLimset && fnext <= aim) goto L930;
   alsb[1] = aopt;
   ++ipt;
   fXpt[ipt-1]  = alsb[1];
   fYpt[ipt-1]  = fnext;
   fChpt[ipt-1] = charal[ipt-1];
   flsb[1]      = fnext;
   dfda         = (flsb[1] - flsb[0]) / (alsb[1] - alsb[0]);
//*-*-                  DFDA must be positive on the contour
   if (dfda > 0) goto L460;
L300:
   mnwarn("D", "MNCROS    ", "Looking for slope of the right sign");
   maxlk = 15 - ipt;
   for (it = 1; it <= maxlk; ++it) {
      alsb[0] = alsb[1];
      flsb[0] = flsb[1];
      aopt    = alsb[0] + Double_t(it)*.2;
      fLimset = kFALSE;
      if (aopt > aulim) {
         aopt    = aulim;
         fLimset = kTRUE;
      }
      mneval(aopt, fnext, ierev);
//*-* debug printout:
      if (ldebug) {
         Printf(" MNCROS: calls=%8d   AIM=%10.5f  F,A=%10.5f%10.5f",fNfcn,aim,fnext,aopt);
      }
      if (ierev > 0) goto L900;
      if (fLimset && fnext <= aim) goto L930;
      alsb[1] = aopt;
      ++ipt;
      fXpt[ipt-1]  = alsb[1];
      fYpt[ipt-1]  = fnext;
      fChpt[ipt-1] = charal[ipt-1];
      flsb[1]      = fnext;
      dfda         = (flsb[1] - flsb[0]) / (alsb[1] - alsb[0]);
      if (dfda > 0) goto L450;
   }
   mnwarn("W", "MNCROS    ", "Cannot find slope of the right sign");
   goto L950;
L450:
//*-*-                   we have two points with the right slope
L460:
   aopt  = alsb[1] + (aim - flsb[1]) / dfda;
   fdist = TMath::Min(TMath::Abs(aim - flsb[0]),TMath::Abs(aim - flsb[1]));
   adist = TMath::Min(TMath::Abs(aopt - alsb[0]),TMath::Abs(aopt - alsb[1]));
   tla = .01;
   if (TMath::Abs(aopt) > 1) tla = TMath::Abs(aopt)*.01;
   if (adist < tla && fdist < tlf) goto L800;
   if (ipt >= 15) goto L950;
   bmin = TMath::Min(alsb[0],alsb[1]) - 1;
   if (aopt < bmin) aopt = bmin;
   bmax = TMath::Max(alsb[0],alsb[1]) + 1;
   if (aopt > bmax) aopt = bmax;
//*-*-                   Try a third point
   fLimset = kFALSE;
   if (aopt > aulim) {
      aopt    = aulim;
      fLimset = kTRUE;
   }
   mneval(aopt, fnext, ierev);
//*-* debug printout:
   if (ldebug) {
      Printf(" MNCROS: calls=%8d   AIM=%10.5f  F,A=%10.5f%10.5f",fNfcn,aim,fnext,aopt);
   }
   if (ierev > 0) goto L900;
   if (fLimset && fnext <= aim) goto L930;
   alsb[2] = aopt;
   ++ipt;
   fXpt[ipt-1]  = alsb[2];
   fYpt[ipt-1]  = fnext;
   fChpt[ipt-1] = charal[ipt-1];
   flsb[2]      = fnext;
//*-*-               now we have three points, ask how many <AIM
   ecarmn = TMath::Abs(fnext-aim);
   ibest  = 3;
   ecarmx = 0;
   noless = 0;
   for (i = 1; i <= 3; ++i) {
      ecart = TMath::Abs(flsb[i-1] - aim);
      if (ecart > ecarmx) { ecarmx = ecart; iworst = i; }
      if (ecart < ecarmn) { ecarmn = ecart; ibest = i; }
      if (flsb[i-1] < aim) ++noless;
   }
//*-*-          if at least one on each side of AIM, fit a parabola
   if (noless == 1 || noless == 2) goto L500;
//*-*-          if all three are above AIM, third must be closest to AIM
   if (noless == 0 && ibest != 3) goto L950;
//*-*-          if all three below, and third is not best, then slope
//*-*-            has again gone negative, look for positive slope.
   if (noless == 3 && ibest != 3) {
      alsb[1] = alsb[2];
      flsb[1] = flsb[2];
      goto L300;
   }
//*-*-          in other cases, new straight line thru last two points
   alsb[iworst-1] = alsb[2];
   flsb[iworst-1] = flsb[2];
   dfda = (flsb[1] - flsb[0]) / (alsb[1] - alsb[0]);
   goto L460;
//*-*-               parabola fit
L500:
   mnpfit(alsb, flsb, 3, coeff, sdev);
   if (coeff[2] <= 0) {
      mnwarn("D", "MNCROS    ", "Curvature is negative near contour line.");
   }
   determ = coeff[1]*coeff[1] - coeff[2]*4*(coeff[0] - aim);
   if (determ <= 0) {
      mnwarn("D", "MNCROS    ", "Problem 2, impossible determinant");
      goto L950;
   }
//*-*-               Find which root is the right one
   rt = TMath::Sqrt(determ);
   x1 = (-coeff[1] + rt) / (coeff[2]*2);
   x2 = (-coeff[1] - rt) / (coeff[2]*2);
   s1 = coeff[1] + x1*2*coeff[2];
   s2 = coeff[1] + x2*2*coeff[2];
   if (s1*s2 > 0) {
      Printf(" MNCONTour problem 1");
   }
   aopt  = x1;
   slope = s1;
   if (s2 > 0) {
      aopt  = x2;
      slope = s2;
   }
//*-*-        ask if converged
   tla = .01;
   if (TMath::Abs(aopt) > 1) tla = TMath::Abs(aopt)*.01;
   if (TMath::Abs(aopt - alsb[ibest-1]) < tla && TMath::Abs(flsb[ibest-1] - aim) < tlf) {
      goto L800;
   }
   if (ipt >= 15) goto L950;

//*-*-        see if proposed point is in acceptable zone between L and R
//*-*-        first find ILEFT, IRIGHT, IOUT and IBEST
   ileft  = 0;
   iright = 0;
   ibest  = 1;
   ecarmx = 0;
   ecarmn = TMath::Abs(aim - flsb[0]);
   for (i = 1; i <= 3; ++i) {
      ecart = TMath::Abs(flsb[i-1] - aim);
      if (ecart < ecarmn) { ecarmn = ecart; ibest = i; }
      if (ecart > ecarmx) { ecarmx = ecart; }
      if (flsb[i-1] > aim) {
         if (iright == 0) iright = i;
         else if (flsb[i-1] > flsb[iright-1]) iout = i;
         else { iout = iright; iright = i; }
      }
      else if (ileft == 0) ileft = i;
      else if (flsb[i-1] < flsb[ileft-1]) iout = i;
      else { iout = ileft; ileft = i;        }
   }
//*-*-      avoid keeping a very bad point next time around
   if (ecarmx > TMath::Abs(flsb[iout-1] - aim)*10) {
      aopt = aopt*.5 + (alsb[iright-1] + alsb[ileft-1])*.25;
   }
//*-*-        knowing ILEFT and IRIGHT, get acceptable window
   smalla = tla*.1;
   if (slope*smalla > tlf) smalla = tlf / slope;
   aleft  = alsb[ileft-1] + smalla;
   aright = alsb[iright-1] - smalla;
//*-*-        move proposed point AOPT into window if necessary
   if (aopt < aleft)   aopt = aleft;
   if (aopt > aright)  aopt = aright;
   if (aleft > aright) aopt = (aleft + aright)*.5;

//*-*-        see if proposed point outside limits (should be impossible!)
   fLimset = kFALSE;
   if (aopt > aulim) {
      aopt    = aulim;
      fLimset = kTRUE;
   }
//*-*-                 Evaluate function at new point AOPT
   mneval(aopt, fnext, ierev);
//*-* debug printout:
   if (ldebug) {
      Printf(" MNCROS: calls=%8d   AIM=%10.5f  F,A=%10.5f%10.5f",fNfcn,aim,fnext,aopt);
   }
   if (ierev > 0) goto L900;
   if (fLimset && fnext <= aim) goto L930;
   ++ipt;
   fXpt[ipt-1]  = aopt;
   fYpt[ipt-1]  = fnext;
   fChpt[ipt-1] = charal[ipt-1];
//*-*-               Replace odd point by new one
   alsb[iout-1] = aopt;
   flsb[iout-1] = fnext;
//*-*-         the new point may not be the best, but it is the only one
//*-*-         which could be good enough to pass convergence criteria
   ibest = iout;
   goto L500;

//*-*-      Contour has been located, return point to MNCONT OR MINOS
L800:
   iercr = 0;
   goto L1000;
//*-*-               error in the minimization
L900:
   if (ierev == 1) goto L940;
   goto L950;
//*-*-               parameter up against limit
L930:
   iercr = 1;
   goto L1000;
//*-*-               too many calls to FCN
L940:
   iercr = 2;
   goto L1000;
//*-*-               cannot find next point
L950:
   iercr = 3;
//*-*-               in any case
L1000:
   if (ldebug) {
      itoohi = 0;
      for (i = 1; i <= ipt; ++i) {
         if (fYpt[i-1] > aim + fUp) {
            fYpt[i-1]  = aim + fUp;
            fChpt[i-1] = '+';
            itoohi     = 1;
         }
      }
      fChpt[ipt] = 0;
      chsign = "POSI";
      if (fXdircr < 0) chsign = "NEGA";
      if (fKe2cr == 0) {
         Printf("  %sTIVE MINOS ERROR, PARAMETER %3d",chsign,fKe1cr);
      }
      if (itoohi == 1) {
         Printf("POINTS LABELLED '+' WERE TOO HIGH TO PLOT.");
      }
      if (iercr == 1) {
         Printf("RIGHTMOST POINT IS UP AGAINST LIMIT.");
      }
      mnplot(fXpt, fYpt, fChpt, ipt, fNpagwd, fNpagln);
   }
} /* mncros_ */

//______________________________________________________________________________
void TMinuit::mncuve()
{
//*-*-*-*-*-*-*-*Makes sure that the current point is a local minimum*-*-*-*-*
//*-*            ====================================================
//*-*        Makes sure that the current point is a local
//*-*        minimum and that the error matrix exists,
//*-*        or at least something good enough for MINOS and MNCONT
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dxdi, wint;
   Int_t ndex, iext, i, j;

   if (fISW[3] < 1) {
      Printf(" FUNCTION MUST BE MINIMIZED BEFORE CALLING %s",(const char*)fCfrom);
      fApsi = fEpsi;
      mnmigr();
   }
   if (fISW[1] < 3) {
      mnhess();
      if (fISW[1] < 1) {
         mnwarn("W", fCfrom, "NO ERROR MATRIX.  WILL IMPROVISE.");
         for (i = 1; i <= fNpar; ++i) {
            ndex = i*(i-1) / 2;
            for (j = 1; j <= i-1; ++j) {
               ++ndex;
               fVhmat[ndex-1] = 0;
            }
            ++ndex;
            if (fG2[i-1] <= 0) {
               wint = fWerr[i-1];
               iext = fNexofi[i-1];
               if (fNvarl[iext-1] > 1) {
                  mndxdi(fX[i-1], i-1, dxdi);
                  if (TMath::Abs(dxdi) < .001) wint = .01;
                  else                   wint /= TMath::Abs(dxdi);
               }
               fG2[i-1] = fUp / (wint*wint);
            }
            fVhmat[ndex-1] = 2 / fG2[i-1];
         }
         fISW[1] = 1;
         fDcovar = 1;
      } else  mnwerr();
   }
} /* mncuve_ */

//______________________________________________________________________________
void TMinuit::mnderi()
{
//*-*-*-*-*-*-*-*Calculates the first derivatives of FCN (GRD)*-*-*-*-*-*-*-*
//*-*            =============================================
//*-*        Calculates the first derivatives of FCN (GRD),
//*-*        either by finite differences or by transforming the user-
//*-*        supplied derivatives to internal coordinates,
//*-*        according to whether fISW[2] is zero or one.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t step, dfmin, stepb4, dd, df, fs1;
   Double_t tlrstp, tlrgrd, epspri, optstp, stpmax, stpmin, fs2, grbfor=0, d1d2, xtf;
   Int_t icyc, ncyc, iint, iext, i, nparx;
   Bool_t ldebug;

   nparx = fNpar;
   ldebug = fIdbg[2] >= 1;
   if (fAmin == fUndefi) mnamin();
   if (fISW[2] == 1) goto L100;

   if (ldebug) {
//*-*-                      make sure starting at the right place
      mninex(fX);
      nparx = fNpar;
      Eval(nparx, fGin, fs1, fU, 4);        ++fNfcn;
      if (fs1 != fAmin) {
         df    = fAmin - fs1;
         mnwarn("D", "MNDERI", Form("function value differs from AMIN by %12.3g",df));
         fAmin = fs1;
      }
      Printf("  FIRST DERIVATIVE DEBUG PRINTOUT.  MNDERI");
      Printf(" PAR    DERIV     STEP      MINSTEP   OPTSTEP  D1-D2    2ND DRV");
   }
   dfmin = fEpsma2*8*(TMath::Abs(fAmin) + fUp);
   if (fIstrat <= 0) {
      ncyc   = 2;
      tlrstp = .5;
      tlrgrd = .1;
   } else if (fIstrat == 1) {
      ncyc   = 3;
      tlrstp = .3;
      tlrgrd = .05;
   } else {
      ncyc   = 5;
      tlrstp = .1;
      tlrgrd = .02;
   }
//*-*-                               loop over variable parameters
   for (i = 1; i <= fNpar; ++i) {
      epspri = fEpsma2 + TMath::Abs(fGrd[i-1]*fEpsma2);
//*-*-        two-point derivatives always assumed necessary
//*-*-        maximum number of cycles over step size depends on strategy
      xtf = fX[i-1];
      stepb4 = 0;
//*-*-                              loop as little as possible here!/
      for (icyc = 1; icyc <= ncyc; ++icyc) {
//*-*-                ........ theoretically best step
         optstp = TMath::Sqrt(dfmin / (TMath::Abs(fG2[i-1]) + epspri));
//*-*-                    step cannot decrease by more than a factor of ten
         step = TMath::Max(optstp,TMath::Abs(fGstep[i-1]*.1));
//*-*-                but if parameter has limits, max step size = 0.5
         if (fGstep[i-1] < 0 && step > .5) step = .5;
//*-*-                and not more than ten times the previous step
         stpmax = TMath::Abs(fGstep[i-1])*10;
         if (step > stpmax) step = stpmax;
//*-*-                minimum step size allowed by machine precision
         stpmin = TMath::Abs(fEpsma2*fX[i-1])*8;
         if (step < stpmin) step = stpmin;
//*-*-                end of iterations if step change less than factor 2
         if (TMath::Abs((step - stepb4) / step) < tlrstp) goto L50;
//*-*-        take step positive
         stepb4 = step;
         if (fGstep[i-1] > 0) fGstep[i-1] =  TMath::Abs(step);
         else                 fGstep[i-1] = -TMath::Abs(step);
         stepb4  = step;
         fX[i-1] = xtf + step;
         mninex(fX);
         Eval(nparx, fGin, fs1, fU, 4);            ++fNfcn;
//*-*-        take step negative
         fX[i-1] = xtf - step;
         mninex(fX);
         Eval(nparx, fGin, fs2, fU, 4);            ++fNfcn;
         grbfor = fGrd[i-1];
         fGrd[i-1] = (fs1 - fs2) / (step*2);
         fG2[i-1]  = (fs1 + fs2 - fAmin*2) / (step*step);
         fX[i-1]   = xtf;
         if (ldebug) {
            d1d2 = (fs1 + fs2 - fAmin*2) / step;
            Printf("%4d%11.3g%11.3g%10.2g%10.2g%10.2g%10.2g%10.2g",i,fGrd[i-1],step,stpmin,optstp,d1d2,fG2[i-1]);
         }
//*-*-        see if another iteration is necessary
         if (TMath::Abs(grbfor - fGrd[i-1]) / (TMath::Abs(fGrd[i-1]) + dfmin/step) < tlrgrd)
            goto L50;
      }
//*-*-                          end of ICYC loop. too many iterations
      if (ncyc == 1) goto L50;
      mnwarn("D", "MNDERI", Form("First derivative not converged. %g%g",fGrd[i-1],grbfor));
L50:
      ;
   }
   mninex(fX);
   return;
//*-*-                                       .  derivatives calc by fcn
L100:
   for (iint = 1; iint <= fNpar; ++iint) {
      iext = fNexofi[iint-1];
      if (fNvarl[iext-1] <= 1) {
         fGrd[iint-1] = fGin[iext-1];
      } else {
         dd = (fBlim[iext-1] - fAlim[iext-1])*.5*TMath::Cos(fX[iint-1]);
         fGrd[iint-1] = fGin[iext-1]*dd;
      }
   }
} /* mnderi_ */

//______________________________________________________________________________
void TMinuit::mndxdi(Double_t pint, Int_t ipar, Double_t &dxdi)
{
//*-*-*-*Calculates the transformation factor between ext/internal values*-*
//*-*    =====================================================================
//*-*        calculates the transformation factor between external and
//*-*        internal parameter values.     this factor is one for
//*-*        parameters which are not limited.     called from MNEMAT.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t i = fNexofi[ipar];
   dxdi = 1;
   if (fNvarl[i-1] > 1) {
      dxdi = TMath::Abs((fBlim[i-1] - fAlim[i-1])*TMath::Cos(pint))*.5;
   }
} /* mndxdi_ */

//______________________________________________________________________________
void TMinuit::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*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                    ===========================
   /* System generated locals */
   Int_t a_offset;
   Double_t d__1;

   /* Local variables */
   Double_t b, c, f, h, r, s, hh, gl, pr, pt;
   Int_t i, j, k, l, m=0, i0, i1, j1, m1, n1;

//*-*-         PRECIS is the machine precision EPSMAC
   /* Parameter adjustments */
   a_offset = ndima + 1;
   a -= a_offset;
   --work;

   /* Function Body */
   ifault = 1;

   i = n;
   for (i1 = 2; i1 <= n; ++i1) {
      l  = i-2;
      f  = a[i + (i-1)*ndima];
      gl = 0;

      if (l < 1) goto L25;

      for (k = 1; k <= l; ++k) {
         d__1 = a[i + k*ndima];
         gl  += d__1*d__1;
      }
L25:
      h = gl + f*f;

      if (gl > 1e-35) goto L30;

      work[i]     = 0;
      work[n + i] = f;
      goto L65;
L30:
      ++l;
      gl = TMath::Sqrt(h);
      if (f >= 0) gl = -gl;
      work[n + i] = gl;
      h -= f*gl;
      a[i + (i-1)*ndima] = f - gl;
      f = 0;
      for (j = 1; j <= l; ++j) {
         a[j + i*ndima] = a[i + j*ndima] / h;
         gl = 0;
         for (k = 1; k <= j; ++k) { gl += a[j + k*ndima]*a[i + k*ndima]; }
         if (j >= l) goto L47;
         j1 = j + 1;
         for (k = j1; k <= l; ++k) {        gl += a[k + j*ndima]*a[i + k*ndima]; }
L47:
         work[n + j] = gl / h;
         f += gl*a[j + i*ndima];
      }
      hh = f / (h + h);
      for (j = 1; j <= l; ++j) {
         f  = a[i + j*ndima];
         gl = work[n + j] - hh*f;
         work[n + j] = gl;
         for (k = 1; k <= j; ++k) {
            a[j + k*ndima] = a[j + k*ndima] - f*work[n + k] - gl*a[i + k*ndima];
         }
      }
      work[i] = h;
L65:
      --i;
   }
   work[1] = 0;
   work[n + 1] = 0;
   for (i = 1; i <= n; ++i) {
      l = i-1;
      if (work[i] == 0 || l == 0) goto L100;

      for (j = 1; j <= l; ++j) {
         gl = 0;
         for (k = 1; k <= l; ++k) { gl += a[i + k*ndima]*a[k + j*ndima]; }
         for (k = 1; k <= l; ++k) { a[k + j*ndima] -= gl*a[k + i*ndima]; }
      }
L100:
      work[i] = a[i + i*ndima];
      a[i + i*ndima] = 1;
      if (l == 0) continue;

      for (j = 1; j <= l; ++j) {
         a[i + j*ndima] = 0;
         a[j + i*ndima] = 0;
      }
   }

   n1 = n - 1;
   for (i = 2; i <= n; ++i) {
      i0 = n + i-1;
      work[i0] = work[i0 + 1];
   }
   work[n + n] = 0;
   b = 0;
   f = 0;
   for (l = 1; l <= n; ++l) {
      j = 0;
      h = precis*(TMath::Abs(work[l]) + TMath::Abs(work[n + l]));
      if (b < h) b = h;
      for (m1 = l; m1 <= n; ++m1) {
         m = m1;
         if (TMath::Abs(work[n + m]) <= b)        goto L150;
      }

L150:
      if (m == l) goto L205;

L160:
      if (j == mits) return;
      ++j;
      pt = (work[l + 1] - work[l]) / (work[n + l]*2);
      r  = TMath::Sqrt(pt*pt + 1);
      pr = pt + r;
      if (pt < 0) pr = pt - r;

      h = work[l] - work[n + l] / pr;
      for (i = l; i <= n; ++i) { work[i] -= h; }
      f += h;
      pt = work[m];
      c  = 1;
      s  = 0;
      m1 = m - 1;
      i  = m;
      for (i1 = l; i1 <= m1; ++i1) {
         j = i;
         --i;
         gl = c*work[n + i];
         h  = c*pt;
         if (TMath::Abs(pt) >= TMath::Abs(work[n + i])) goto L180;

         c = pt / work[n + i];
         r = TMath::Sqrt(c*c + 1);
         work[n + j] = s*work[n + i]*r;
         s  = 1 / r;
         c /= r;
         goto L190;
L180:
         c = work[n + i] / pt;
         r = TMath::Sqrt(c*c + 1);
         work[n + j] = s*pt*r;
         s = c / r;
         c = 1 / r;
L190:
         pt = c*work[i] - s*gl;
         work[j] = h + s*(c*gl + s*work[i]);
         for (k = 1; k <= n; ++k) {
            h = a[k + j*ndima];
            a[k + j*ndima] = s*a[k + i*ndima] + c*h;
            a[k + i*ndima] = c*a[k + i*ndima] - s*h;
         }
      }
      work[n + l] = s*pt;
      work[l]     = c*pt;

      if (TMath::Abs(work[n + l]) > b) goto L160;

L205:
      work[l] += f;
   }
   for (i = 1; i <= n1; ++i) {
      k  = i;
      pt = work[i];
      i1 = i + 1;
      for (j = i1; j <= n; ++j) {
         if (work[j] >= pt) continue;
         k  = j;
         pt = work[j];
      }

      if (k == i) continue;

      work[k] = work[i];
      work[i] = pt;
      for (j = 1; j <= n; ++j) {
         pt = a[j + i*ndima];
         a[j + i*ndima] = a[j + k*ndima];
         a[j + k*ndima] = pt;
      }
   }
   ifault = 0;
} /* mneig_ */

//______________________________________________________________________________
void TMinuit::mnemat(Double_t *emat, Int_t ndim)
{
// Calculates the external error matrix from the internal matrix
//
// Note that if the matrix is declared like Double_t matrix[5][5]
// in the calling program, one has to call mnemat with, eg
//     gMinuit->mnemat(&matrix[0][0],5);

   /* System generated locals */
   Int_t emat_dim1, emat_offset;

   /* Local variables */
   Double_t dxdi, dxdj;
   Int_t i, j, k, npard, k2, kk, iz, nperln, kga, kgb;
   TString ctemp;

   /* Parameter adjustments */
   emat_dim1 = ndim;
   emat_offset = emat_dim1 + 1;
   emat -= emat_offset;

   /* Function Body */
   if (fISW[1] < 1) return;
   if (fISW[4] >= 2) {
      Printf(" EXTERNAL ERROR MATRIX.    NDIM=%4d    NPAR=%3d    ERR DEF=%g",ndim,fNpar,fUp);
   }
//*-*-                   size of matrix to be printed
   npard = fNpar;
   if (ndim < fNpar) {
      npard = ndim;
      if (fISW[4] >= 0) {
         Printf(" USER-DIMENSIONED  ARRAY EMAT NOT BIG ENOUGH. REDUCED MATRIX CALCULATED.");
      }
   }
//*-*-                NPERLN is the number of elements that fit on one line

   nperln = (fNpagwd - 5) / 10;
   nperln = TMath::Min(nperln,13);
   if (fISW[4] >= 1 && npard > nperln) {
      Printf(" ELEMENTS ABOVE DIAGONAL ARE NOT PRINTED.");
   }
//*-*-                I counts the rows of the matrix
   for (i = 1; i <= npard; ++i) {
      mndxdi(fX[i-1], i-1, dxdi);
      kga = i*(i-1) / 2;
      for (j = 1; j <= i; ++j) {
         mndxdi(fX[j-1], j-1, dxdj);
         kgb = kga + j;
         emat[i + j*emat_dim1] = dxdi*fVhmat[kgb-1]*dxdj*fUp;
         emat[j + i*emat_dim1] = emat[i + j*emat_dim1];
      }
   }
//*-*-                   IZ is number of columns to be printed in row I
   if (fISW[4] >= 2) {
      for (i = 1; i <= npard; ++i) {
         iz = npard;
         if (npard >= nperln) iz = i;
         ctemp = " ";
         for (k = 1; nperln < 0 ? k >= iz : k <= iz; k += nperln) {
            k2 = k + nperln - 1;
            if (k2 > iz) k2 = iz;
            for (kk = k; kk <= k2; ++kk) {
               ctemp += Form("%10.3e ",emat[i + kk*emat_dim1]);
            }
            Printf("%s",(const char*)ctemp);
         }
      }
   }
} /* mnemat_ */

//______________________________________________________________________________
void TMinuit::mnerrs(Int_t number, Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &gcc)
{
//*-*-*-*-*-*-*-*-*-*Utility routine to get MINOS errors*-*-*-*-*-*-*-*-*-*-*
//*-*                ===================================
//*-*    Called by user.
//*-*    NUMBER is the parameter number
//*-*    values returned by MNERRS:
//*-*       EPLUS, EMINUS are MINOS errors of parameter NUMBER,
//*-*       EPARAB is 'parabolic' error (from error matrix).
//*-*                 (Errors not calculated are set = 0)
//*-*       GCC is global correlation coefficient from error matrix
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Double_t dxdi;
   Int_t ndiag, iin, iex;

   iex = number+1;

   if (iex > fNu || iex <= 0) goto L900;
   iin = fNiofex[iex-1];
   if (iin <= 0) goto L900;

//*-*-            IEX is external number, IIN is internal number
   eplus  = fErp[iin-1];
   if (eplus == fUndefi)  eplus = 0;
   eminus = fErn[iin-1];
   if (eminus == fUndefi) eminus = 0;
   mndxdi(fX[iin-1], iin-1, dxdi);
   ndiag  = iin*(iin + 1) / 2;
   eparab = TMath::Abs(dxdi*TMath::Sqrt(TMath::Abs(fUp*fVhmat[ndiag- 1])));
//*-*-             global correlation coefficient
   gcc = 0;
   if (fISW[1] < 2) return;
   gcc = fGlobcc[iin-1];
   return;
//*-*-                 ERROR.  parameter number not valid
L900:
   eplus  = 0;
   eminus = 0;
   eparab = 0;
   gcc    = 0;
} /* mnerrs_ */

//______________________________________________________________________________
void TMinuit::mneval(Double_t anext, Double_t &fnext, Int_t &ierev)
{
//*-*-*-*-*-*-*Evaluates the function being analyzed by MNCROS*-*-*-*-*-*-*-*
//*-*          ===============================================
//*-*      Evaluates the function being analyzed by MNCROS, which is
//*-*      generally the minimum of FCN with respect to all remaining
//*-*      variable parameters.  The class data members contains the
//*-*      data necessary to know the values of U(KE1CR) and U(KE2CR)
//*-*      to be used, namely     U(KE1CR) = XMIDCR + ANEXT*XDIRCR
//*-*      and (if KE2CR .NE. 0)  U(KE2CR) = YMIDCR + ANEXT*YDIRCR
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t nparx;

   fU[fKe1cr-1] = fXmidcr + anext*fXdircr;
   if (fKe2cr != 0) fU[fKe2cr-1] = fYmidcr + anext*fYdircr;
   mninex(fX);
   nparx = fNpar;
   Eval(nparx, fGin, fnext, fU, 4);    ++fNfcn;
   ierev = 0;
   if (fNpar > 0) {
      fItaur = 1;
      fAmin = fnext;
      fISW[0] = 0;
      mnmigr();
      fItaur = 0;
      fnext = fAmin;
      if (fISW[0] >= 1) ierev = 1;
      if (fISW[3] < 1)  ierev = 2;
   }
} /* mneval_ */

//______________________________________________________________________________
void TMinuit::mnexcm(const char *command, Double_t *plist, Int_t llist, Int_t &ierflg)
{
//*-*-*-*-*-*Interprets a command and takes appropriate action*-*-*-*-*-*-*-*
//*-*        =================================================
//*-*        either directly by skipping to the corresponding code in
//*-*        MNEXCM, or by setting up a call to a function
//*-*
//*-*  recognized MINUIT commands:
//*-*  obsolete commands:
//*-*      IERFLG is now (94.5) defined the same as ICONDN in MNCOMD
//*-*            = 0: command executed normally
//*-*              1: command is blank, ignored
//*-*              2: command line unreadable, ignored
//*-*              3: unknown command, ignored
//*-*              4: abnormal termination (e.g., MIGRAD not converged)
//*-*              9: reserved
//*-*             10: END command
//*-*             11: EXIT or STOP command
//*-*             12: RETURN command
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   TString comand = command;
   static TString clower = "abcdefghijklmnopqrstuvwxyz";
   static TString cupper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   const char *cname[40] = {
      "MINImize  ",
      "SEEk      ",
      "SIMplex   ",
      "MIGrad    ",
      "MINOs     ",
      "SET xxx   ",
      "SHOw xxx  ",
      "TOP of pag",
      "FIX       ",
      "REStore   ",
      "RELease   ",
      "SCAn      ",
      "CONtour   ",
      "HESse     ",
      "SAVe      ",
      "IMProve   ",
      "CALl fcn  ",
      "STAndard  ",
      "END       ",
      "EXIt      ",
      "RETurn    ",
      "CLEar     ",
      "HELP      ",
      "MNContour ",
      "STOp      ",
      "JUMp      ",
      "          ",
      "          ",
      "          ",
      "          ",
      "          ",
      "          ",
      "          ",
      "COVARIANCE",
      "PRINTOUT  ",
      "GRADIENT  ",
      "MATOUT    ",
      "ERROR DEF ",
      "LIMITS    ",
      "PUNCH     "};

   Int_t nntot = 40;

   /* Local variables */
   Double_t step, xptu[101], yptu[101], f, rno;
   Int_t icol, kcol, ierr, iint, iext, lnow, nptu, i, iflag, ierrf;
   Int_t ilist, nparx, izero, nf, lk, it, iw, inonde, nsuper;
   Int_t it2, ke1, ke2, nowprt, kll, krl;
   TString chwhy, c26, cvblnk, cneway, comd;
   TString ctemp;
   Bool_t lfreed, ltofix, lfixed;

//*-*  alphabetical order of command names!

   /* Function Body */

   lk = comand.Length();
   if (lk > 20) lk = 20;
   fCword =  comand;
   fCword.ToUpper();
//*-*-          Copy the first MAXP arguments into WORD7, making
//*-*-          sure that WORD7(1)=0 if LLIST=0
   for (iw = 1; iw <= fMaxpar; ++iw) {
      fWord7[iw-1] = 0;
      if (iw <= llist) fWord7[iw-1] = plist[iw-1];
   }
   ++fIcomnd;
   fNfcnlc = fNfcn;
   if (fCword(0,7) != "SET PRI" || fWord7[0] >= 0) {
      if (fISW[4] >= 0) {
         lnow = llist;
         if (lnow > 4) lnow = 4;
         Printf(" **********");
         ctemp = Form(" **%5d **%s",fIcomnd,(const char*)fCword);
         for (i = 1; i <= lnow; ++i) {
            ctemp += Form("%12.4g",plist[i-1]);
         }
         Printf("%s",(const char*)ctemp);
         inonde = 0;
         if (llist > lnow) {
            kll = llist;
            if (llist > fMaxpar) {
               inonde = 1;
               kll = fMaxpar;
            }
            Printf(" ***********");
            for (i = lnow + 1; i <= kll; ++i) {
               Printf("%12.4g",plist[i-1]);
            }
         }
         Printf(" **********");
         if (inonde > 0) {
            Printf("  ERROR: ABOVE CALL TO MNEXCM TRIED TO PASS MORE THAN %d PARAMETERS.", fMaxpar);
         }
      }
   }
   fNfcnmx = Int_t(fWord7[0]);
   if (fNfcnmx <= 0) {
      fNfcnmx = fNpar*100 + 200 + fNpar*fNpar*5;
   }
   fEpsi = fWord7[1];
   if (fEpsi <= 0) {
      fEpsi = fUp*.1;
   }
   fLnewmn = kFALSE;
   fLphead = kTRUE;
   fISW[0] = 0;
   ierflg = 0;
//*-*-               look for command in list CNAME . . . . . . . . . .
   ctemp = fCword(0,3);
   for (i = 1; i <= nntot; ++i) {
      if (strncmp(ctemp.Data(),cname[i-1],3) == 0) goto L90;
   }
   Printf("UNKNOWN COMMAND IGNORED:%s", comand.Data());
   ierflg = 3;
   return;
//*-*-               normal case: recognized MINUIT command . . . . . . .
L90:
   if (fCword(0,4) == "MINO") i = 5;
   if (i != 6 && i != 7 && i != 8 && i != 23) {
      fCfrom  = cname[i-1];
      fNfcnfr = fNfcn;
   }
//*-*-             1    2    3    4    5    6    7    8    9   10
   switch (i) {
      case 1:  goto L400;
      case 2:  goto L200;
      case 3:  goto L300;
      case 4:  goto L400;
      case 5:  goto L500;
      case 6:  goto L700;
      case 7:  goto L700;
      case 8:  goto L800;
      case 9:  goto L900;
      case 10:  goto L1000;
      case 11:  goto L1100;
      case 12:  goto L1200;
      case 13:  goto L1300;
      case 14:  goto L1400;
      case 15:  goto L1500;
      case 16:  goto L1600;
      case 17:  goto L1700;
      case 18:  goto L1800;
      case 19:  goto L1900;
      case 20:  goto L1900;
      case 21:  goto L1900;
      case 22:  goto L2200;
      case 23:  goto L2300;
      case 24:  goto L2400;
      case 25:  goto L1900;
      case 26:  goto L2600;
      case 27:  goto L3300;
      case 28:  goto L3300;
      case 29:  goto L3300;
      case 30:  goto L3300;
      case 31:  goto L3300;
      case 32:  goto L3300;
      case 33:  goto L3300;
      case 34:  goto L3400;
      case 35:  goto L3500;
      case 36:  goto L3600;
      case 37:  goto L3700;
      case 38:  goto L3800;
      case 39:  goto L3900;
      case 40:  goto L4000;
   }
//*-*-                                       . . . . . . . . . . seek
L200:
   mnseek();
   return;
//*-*-                                       . . . . . . . . . . simplex
L300:
   mnsimp();
   if (fISW[3] < 1) ierflg = 4;
   return;
//*-*-                                       . . . . . . migrad, minimize
L400:
   nf = fNfcn;
   fApsi = fEpsi;
   mnmigr();
   mnwerr();
   if (fISW[3] >= 1) return;
   ierflg = 4;
   if (fISW[0] == 1) return;
   if (fCword(0,3) == "MIG") return;

   fNfcnmx = fNfcnmx + nf - fNfcn;
   nf = fNfcn;
   mnsimp();
   if (fISW[0] == 1) return;
   fNfcnmx = fNfcnmx + nf - fNfcn;
   mnmigr();
   if (fISW[3] >= 1) ierflg = 0;
   mnwerr();
   return;
//*-*-                                       . . . . . . . . . . minos
L500:
   nsuper = fNfcn + ((fNpar + 1) << 1)*fNfcnmx;
//*-*-         possible loop over new minima
   fEpsi = fUp*.1;
L510:
   mncuve();
   mnmnos();
   if (! fLnewmn) return;
   mnrset(0);
   mnmigr();
   mnwerr();
   if (fNfcn < nsuper) goto L510;
   Printf(" TOO MANY FUNCTION CALLS. MINOS GIVES UP");
   ierflg = 4;
   return;
//*-*-                                       . . . . . . . . . .set, show
L700:
   mnset();
   return;
//*-*-                                       . . . . . . . . . . top of page

L800:
   Printf("1");
   return;
//*-*-                                       . . . . . . . . . . fix
L900:
   ltofix = kTRUE;
//*-*-                                       . . (also release) ....
L901:
   lfreed = kFALSE;
   lfixed = kFALSE;
   if (llist == 0) {
      Printf("%s:  NO PARAMETERS REQUESTED ",(const char*)fCword);
      return;
   }
   for (ilist = 1; ilist <= llist; ++ilist) {
      iext = Int_t(plist[ilist-1]);
      chwhy = " IS UNDEFINED.";
      if (iext <= 0) goto L930;
      if (iext > fNu) goto L930;
      if (fNvarl[iext-1] < 0) goto L930;
      chwhy = " IS CONSTANT.  ";
      if (fNvarl[iext-1] == 0) goto L930;
      iint = fNiofex[iext-1];
      if (ltofix) {
         chwhy = " ALREADY FIXED.";
         if (iint == 0) goto L930;
         mnfixp(iint-1, ierr);
         if (ierr == 0) lfixed = kTRUE;
         else           ierflg = 4;
      } else {
         chwhy = " ALREADY VARIABLE.";
         if (iint > 0) goto L930;
         krl = -abs(iext);
         mnfree(krl);
         lfreed = kTRUE;
      }
      continue;
L930:
      if (fISW[4] >= 0) Printf(" PARAMETER %4d %s IGNORED.",iext,(const char*)chwhy);
   }
   if (lfreed || lfixed) mnrset(0);
   if (lfreed) {
      fISW[1] = 0;
      fDcovar = 1;
      fEDM = fBigedm;
      fISW[3] = 0;
   }
   mnwerr();
   if (fISW[4] > 1) mnprin(5, fAmin);
   return;
//*-*-                                       . . . . . . . . . . restore
L1000:
   it = Int_t(fWord7[0]);
   if (it > 1 || it < 0) goto L1005;
   lfreed = fNpfix > 0;
   mnfree(it);
   if (lfreed) {
      mnrset(0);
      fISW[1] = 0;
      fDcovar = 1;
      fEDM    = fBigedm;
   }
   return;
L1005:
   Printf(" IGNORED.  UNKNOWN ARGUMENT:%4d",it);
   ierflg = 3;
   return;
//*-*-                                       . . . . . . . . . . release
L1100:
   ltofix = kFALSE;
   goto L901;
//*-*-                                      . . . . . . . . . . scan . . .
L1200:
   iext = Int_t(fWord7[0]);
   if (iext <= 0) goto L1210;
   it2 = 0;
   if (iext <= fNu) it2 = fNiofex[iext-1];
   if (it2 <= 0) goto L1250;

L1210:
   mnscan();
   return;
L1250:
   Printf(" PARAMETER %4d NOT VARIABLE.",iext);
   ierflg = 3;
   return;
//*-*-                                       . . . . . . . . . . contour
L1300:
   ke1 = Int_t(fWord7[0]);
   ke2 = Int_t(fWord7[1]);
   if (ke1 == 0) {
      if (fNpar == 2) {
         ke1 = fNexofi[0];
         ke2 = fNexofi[1];
      } else {
         Printf("%s:  NO PARAMETERS REQUESTED ",(const char*)fCword);
         ierflg = 3;
         return;
      }
   }
   fNfcnmx = 1000;
   mncntr(ke1-1, ke2-1, ierrf);
   if (ierrf > 0) ierflg = 3;
   return;
//*-*-                                       . . . . . . . . . . hesse
L1400:
   mnhess();
   mnwerr();
   if (fISW[4] >= 0) mnprin(2, fAmin);
   if (fISW[4] >= 1) mnmatu(1);
   return;
//*-*-                                       . . . . . . . . . . save
L1500:
   mnsave();
   return;
//*-*-                                       . . . . . . . . . . improve
L1600:
   mncuve();
   mnimpr();
   if (fLnewmn) goto L400;
   ierflg = 4;
   return;
//*-*-                                       . . . . . . . . . . call fcn
L1700:
   iflag = Int_t(fWord7[0]);
   nparx = fNpar;
   f = fUndefi;
   Eval(nparx, fGin, f, fU, iflag);    ++fNfcn;
   nowprt = 0;
   if (f != fUndefi) {
      if (fAmin == fUndefi) {
         fAmin  = f;
         nowprt = 1;
      } else if (f < fAmin) {
         fAmin  = f;
         nowprt = 1;
      }
      if (fISW[4] >= 0 && iflag <= 5 && nowprt == 1) {
         mnprin(5, fAmin);
      }
      if (iflag == 3)  fFval3 = f;
   }
   if (iflag > 5) mnrset(1);
   return;
//*-*-                                       . . . . . . . . . . standard
L1800:
//    stand();
   return;
//*-*-                                      . . . return, stop, end, exit
L1900:
   it = Int_t(fWord7[0]);
   if (fFval3 != fAmin && it == 0) {
      iflag = 3;
      if (fISW[4] >= 0) Printf(" CALL TO USER FUNCTION WITH IFLAG = 3");
      nparx = fNpar;
      Eval(nparx, fGin, f, fU, iflag);        ++fNfcn;
   }
   ierflg = 11;
   if (fCword(0,3) == "END") ierflg = 10;
   if (fCword(0,3) == "RET") ierflg = 12;
   return;
//*-*-                                       . . . . . . . . . . clear
L2200:
   mncler();
   if (fISW[4] >= 1) {
      Printf(" MINUIT MEMORY CLEARED. NO PARAMETERS NOW DEFINED.");
   }
   return;
//*-*-                                       . . . . . . . . . . help
L2300:
   kcol = 0;
   for (icol = 5; icol <= lk; ++icol) {
      if (fCword[icol-1] == ' ') continue;
      kcol = icol;
      goto L2320;
   }
L2320:
   if (kcol == 0) comd = "*   ";
   else           comd = fCword(kcol-1,lk-kcol+1);
   mnhelp(comd);
   return;
//*-*-                                      . . . . . . . . . . MNContour
L2400:
   fEpsi = fUp*.05;
   ke1 = Int_t(fWord7[0]);
   ke2 = Int_t(fWord7[1]);
   if (ke1 == 0 && fNpar == 2) {
      ke1 = fNexofi[0];
      ke2 = fNexofi[1];
   }
   nptu = Int_t(fWord7[2]);
   if (nptu <= 0)  nptu = 20;
   if (nptu > 101) nptu = 101;
   fNfcnmx = (nptu + 5)*100*(fNpar + 1);
   mncont(ke1-1, ke2-1, nptu, xptu, yptu, ierrf);
   if (ierrf < nptu) ierflg = 4;
   if (ierrf == -1)  ierflg = 3;
   return;
//*-*-                                     . . . . . . . . . . jump
L2600:
   step = fWord7[0];
   if (step <= 0) step = 2;
   rno = 0;
   izero = 0;
   for (i = 1; i <= fNpar; ++i) {
      mnrn15(rno, izero);
      rno      = rno*2 - 1;
      fX[i-1] += rno*step*fWerr[i-1];
   }
   mninex(fX);
   mnamin();
   mnrset(0);
   return;
//*-*-                                     . . . . . . . . . . blank line
L3300:
   Printf(" BLANK COMMAND IGNORED.");
   ierflg = 1;
   return;
//*-*  . . . . . . . . obsolete commands     . . . . . . . . . . . . . .
//*-*-                                     . . . . . . . . . . covariance
L3400:
   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*");
   ierflg = 3;
   return;
//*-*-                                       . . . . . . . . . . printout
L3500:
   cneway = "SET PRInt ";
   goto L3100;
//*-*-                                       . . . . . . . . . . gradient
L3600:
   cneway = "SET GRAd  ";
   goto L3100;
//*-*-                                       . . . . . . . . . . matout
L3700:
   cneway = "SHOW COVar";
   goto L3100;
//*-*-                                       . . . . . . . . . error def
L3800:
   cneway = "SET ERRdef";
   goto L3100;
//*-*-                                       . . . . . . . . . . limits
L3900:
   cneway = "SET LIMits";
   goto L3100;
//*-*-                                       . . . . . . . . . . punch
L4000:
   cneway = "SAVE      ";
//*-*-                               ....... come from obsolete commands
L3100:
   Printf(" OBSOLETE COMMAND:%s   PLEASE USE:%s",(const char*)fCword
                                                 ,(const char*)cneway);
   fCword = cneway;
   if (fCword == "SAVE      ") goto L1500;
   goto L700;
//*-*                                 . . . . . . . . . . . . . . . . . .
} /* mnexcm_ */

//______________________________________________________________________________
void TMinuit::mnexin(Double_t *pint)
{
//*-*-*-*-*Transforms the external parameter values U to internal values*-*-*
//*-*      =============================================================
//*-*        Transforms the external parameter values U to internal
//*-*        values in the dense array PINT.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Double_t pinti;
   Int_t iint, iext;

   fLimset = kFALSE;
   for (iint = 1; iint <= fNpar; ++iint) {
      iext = fNexofi[iint-1];
      mnpint(fU[iext-1], iext-1, pinti);
      pint[iint-1] = pinti;
   }
} /* mnexin_ */

//______________________________________________________________________________
void TMinuit::mnfixp(Int_t iint1, Int_t &ierr)
{
//*-*-*-*-*-*-*Removes parameter IINT from the internal parameter list*-*-*
//*-*          =======================================================
//*-*        and arranges the rest of the list to fill the hole.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t yyover;
   Int_t kold, nold, ndex, knew, iext, i, j, m, n, lc, ik;

//*-*-                          first see if it can be done
   ierr = 0;
   Int_t iint = iint1+1;
   if (iint > fNpar || iint <= 0) {
      ierr = 1;
      Printf(" MINUIT ERROR.  ARGUMENT TO MNFIXP=%4d",iint);
      return;
   }
   iext = fNexofi[iint-1];
   if (fNpfix >= fMaxpar) {
      ierr = 1;
      Printf(" MINUIT CANNOT FIX PARAMETER %4d MAXIMUM NUMBER THAT CAN BE FIXED IS %d",iext,fMaxpar);
      return;
   }
//*-*-                          reduce number of variable parameters by one

   fNiofex[iext-1] = 0;
   nold = fNpar;
   --fNpar;
//*-*-                      save values in case parameter is later restored

   ++fNpfix;
   fIpfix[fNpfix-1]  = iext;
   lc                = iint;
   fXs[fNpfix-1]     = fX[lc-1];
   fXts[fNpfix-1]    = fXt[lc-1];
   fDirins[fNpfix-1] = fWerr[lc-1];
   fGrds[fNpfix-1]   = fGrd[lc-1];
   fG2s[fNpfix-1]    = fG2[lc-1];
   fGsteps[fNpfix-1] = fGstep[lc-1];
//*-*-                       shift values for other parameters to fill hole
   for (ik = iext + 1; ik <= fNu; ++ik) {
      if (fNiofex[ik-1] > 0) {
         lc = fNiofex[ik-1] - 1;
         fNiofex[ik-1] = lc;
         fNexofi[lc-1] = ik;
         fX[lc-1]      = fX[lc];
         fXt[lc-1]     = fXt[lc];
         fDirin[lc-1]  = fDirin[lc];
         fWerr[lc-1]   = fWerr[lc];
         fGrd[lc-1]    = fGrd[lc];
         fG2[lc-1]     = fG2[lc];
         fGstep[lc-1]  = fGstep[lc];
      }
   }
   if (fISW[1] <= 0) return;
//*-*-                   remove one row and one column from variance matrix
   if (fNpar <= 0)   return;
   for (i = 1; i <= nold; ++i) {
      m       = TMath::Max(i,iint);
      n       = TMath::Min(i,iint);
      ndex    = m*(m-1) / 2 + n;
      fFIXPyy[i-1] = fVhmat[ndex-1];
   }
   yyover = 1 / fFIXPyy[iint-1];
   knew   = 0;
   kold   = 0;
   for (i = 1; i <= nold; ++i) {
      for (j = 1; j <= i; ++j) {
         ++kold;
         if (j == iint || i == iint) continue;
         ++knew;
         fVhmat[knew-1] = fVhmat[kold-1] - fFIXPyy[j-1]*fFIXPyy[i-1]*yyover;
      }
   }
} /* mnfixp_ */

//______________________________________________________________________________
void TMinuit::mnfree(Int_t k)
{
//*-*-*-*Restores one or more fixed parameter(s) to variable status*-*-*-*-*-*
//*-*    ==========================================================
//*-*        Restores one or more fixed parameter(s) to variable status
//*-*        by inserting it into the internal parameter list at the
//*-*        appropriate place.
//*-*
//*-*        K = 0 means restore all parameters
//*-*        K = 1 means restore the last parameter fixed
//*-*        K = -I means restore external parameter I (if possible)
//*-*        IQ = fix-location where internal parameters were stored
//*-*        IR = external number of parameter being restored
//*-*        IS = internal number of parameter being restored
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t grdv, xv, dirinv, g2v, gstepv, xtv;
   Int_t i, ipsav, ka, lc, ik, iq, ir, is;

   if (k > 1) {
      Printf(" CALL TO MNFREE IGNORED.  ARGUMENT GREATER THAN ONE");
   }
   if (fNpfix < 1) {
      Printf(" CALL TO MNFREE IGNORED.  THERE ARE NO FIXED PARAMETERS");
   }
   if (k == 1 || k == 0) goto L40;

//*-*-                  release parameter with specified external number
   ka = abs(k);
   if (fNiofex[ka-1] == 0) goto L15;
   Printf(" IGNORED.  PARAMETER SPECIFIED IS ALREADY VARIABLE.");
   return;
L15:
   if (fNpfix < 1) goto L21;
   for (ik = 1; ik <= fNpfix; ++ik) { if (fIpfix[ik-1] == ka) goto L24; }
L21:
   Printf(" PARAMETER %4d NOT FIXED.  CANNOT BE RELEASED.",ka);
   return;
L24:
   if (ik == fNpfix) goto L40;

//*-*-                  move specified parameter to end of list
   ipsav  = ka;
   xv     = fXs[ik-1];
   xtv    = fXts[ik-1];
   dirinv = fDirins[ik-1];
   grdv   = fGrds[ik-1];
   g2v    = fG2s[ik-1];
   gstepv = fGsteps[ik-1];
   for (i = ik + 1; i <= fNpfix; ++i) {
      fIpfix[i-2]  = fIpfix[i-1];
      fXs[i-2]     = fXs[i-1];
      fXts[i-2]    = fXts[i-1];
      fDirins[i-2] = fDirins[i-1];
      fGrds[i-2]   = fGrds[i-1];
      fG2s[i-2]    = fG2s[i-1];
      fGsteps[i-2] = fGsteps[i-1];
   }
   fIpfix[fNpfix-1]  = ipsav;
   fXs[fNpfix-1]     = xv;
   fXts[fNpfix-1]    = xtv;
   fDirins[fNpfix-1] = dirinv;
   fGrds[fNpfix-1]   = grdv;
   fG2s[fNpfix-1]    = g2v;
   fGsteps[fNpfix-1] = gstepv;
//*-*-               restore last parameter in fixed list  -- IPFIX(NPFIX)
L40:
   if (fNpfix < 1) goto L300;
   ir = fIpfix[fNpfix-1];
   is = 0;
   for (ik = fNu; ik >= ir; --ik) {
      if (fNiofex[ik-1] > 0) {
         lc = fNiofex[ik-1] + 1;
         is = lc - 1;
         fNiofex[ik-1] = lc;
         fNexofi[lc-1] = ik;
         fX[lc-1]      = fX[lc-2];
         fXt[lc-1]     = fXt[lc-2];
         fDirin[lc-1]  = fDirin[lc-2];
         fWerr[lc-1]   = fWerr[lc-2];
         fGrd[lc-1]    = fGrd[lc-2];
         fG2[lc-1]     = fG2[lc-2];
         fGstep[lc-1]  = fGstep[lc-2];
      }
   }
   ++fNpar;
   if (is == 0) is = fNpar;
   fNiofex[ir-1] = is;
   fNexofi[is-1] = ir;
   iq           = fNpfix;
   fX[is-1]     = fXs[iq-1];
   fXt[is-1]    = fXts[iq-1];
   fDirin[is-1] = fDirins[iq-1];
   fWerr[is-1]  = fDirins[iq-1];
   fGrd[is-1]   = fGrds[iq-1];
   fG2[is-1]    = fG2s[iq-1];
   fGstep[is-1] = fGsteps[iq-1];
   --fNpfix;
   fISW[1] = 0;
   fDcovar = 1;
   if (fISW[4] - fItaur >= 1) {
      Printf("                   PARAMETER %4d  %s RESTORED TO VARIABLE.",ir,
                      (const char*)fCpnam[ir-1]);
   }
   if (k == 0) goto L40;
L300:
//*-*-        if different from internal, external values are taken
   mnexin(fX);
} /* mnfree_ */

//______________________________________________________________________________
void TMinuit::mngrad()
{
//*-*-*-*-*-*-*-*-*-*Interprets the SET GRAD command*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                ===============================
//*-*       Called from MNSET
//*-*       Interprets the SET GRAD command, which informs MINUIT whether
//*-*       the first derivatives of FCN will be calculated by the user
//*-*       inside FCN.  It can check the user derivative calculation
//*-*       by comparing it with a finite difference approximation.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t fzero, err;
   Int_t i, nparx, lc, istsav;
   Bool_t lnone;
   static TString cwd = "    ";

   fISW[2] = 1;
   nparx   = fNpar;
   if (fWord7[0] > 0) goto L2000;

//*-*-                 get user-calculated first derivatives from FCN
   for (i = 1; i <= fNu; ++i) { fGin[i-1] = fUndefi; }
   mninex(fX);
   Eval(nparx, fGin, fzero, fU, 2);    ++fNfcn;
   mnderi();
   for (i = 1; i <= fNpar; ++i) { fGRADgf[i-1] = fGrd[i-1]; }
//*-*-                   get MINUIT-calculated first derivatives
   fISW[2] = 0;
   istsav  = fIstrat;
   fIstrat = 2;
   mnhes1();
   fIstrat = istsav;
   Printf(" CHECK OF GRADIENT CALCULATION IN FCN");
   Printf("            PARAMETER      G(IN FCN)   G(MINUIT)  DG(MINUIT)   AGREEMENT");
   fISW[2] = 1;
   lnone = kFALSE;
   for (lc = 1; lc <= fNpar; ++lc) {
      i   = fNexofi[lc-1];
      cwd = "GOOD";
      err = fDgrd[lc-1];
      if (TMath::Abs(fGRADgf[lc-1] - fGrd[lc-1]) > err)  cwd = " BAD";
      if (fGin[i-1] == fUndefi) {
         cwd      = "NONE";
         lnone    = kTRUE;
         fGRADgf[lc-1] = 0;
      }
      if (cwd != "GOOD") fISW[2] = 0;
      Printf("       %5d  %10s%12.4e%12.4e%12.4e    %s",i
                    ,(const char*)fCpnam[i-1]
                    ,fGRADgf[lc-1],fGrd[lc-1],err,(const char*)cwd);
   }
   if (lnone) {
      Printf("  AGREEMENT=NONE  MEANS FCN DID NOT CALCULATE THE DERIVATIVE");
   }
   if (fISW[2] == 0) {
      Printf(" MINUIT DOES NOT ACCEPT DERIVATIVE CALCULATIONS BY FCN");
      Printf(" TO FORCE ACCEPTANCE, ENTER *SET GRAD    1*");
   }

L2000:
   return;
} /* mngrad_ */

//______________________________________________________________________________
void TMinuit::mnhelp(const char *command)
{
   //interface to Minuit help
   TString comd = command;
   mnhelp(comd);
}

//______________________________________________________________________________
void TMinuit::mnhelp(TString comd)
{
//*-*-*-*-*-*-*-*HELP routine for MINUIT interactive commands*-*-*-*-*-*-*-*-*
//*-*            ============================================
//*-*
//*-*      COMD ='*' or "" prints a global help for all commands
//*-*      COMD =Command_name: print detailed help for one command.
//*-*         Note that at least 3 characters must be given for the command
//*-*         name.
//*-*
//*-*     Author: Rene Brun
//*-*             comments extracted from the MINUIT documentation file.
//*-*
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

//*-*.......................................................................
//*-*
//*-*  Global HELP: Summary of all commands
//*-*  ====================================
//*-*
   comd.ToUpper();
   if( comd.Length() == 0 || comd[0] == '*' || comd[0] == '?' || comd[0] == 0 || comd=="HELP" ) {
      Printf("   ==>List of MINUIT Interactive commands:");
      Printf(" CLEar     Reset all parameter names and values undefined");
      Printf(" CONtour   Make contour map of the user function");
      Printf(" EXIT      Exit from Interactive Minuit");
      Printf(" FIX       Cause parameter(s) to remain constant");
      Printf(" HESse     Calculate the Hessian or error matrix.");
      Printf(" IMPROVE   Search for a new minimum around current minimum");
      Printf(" MIGrad    Minimize by the method of Migrad");
      Printf(" MINImize  MIGRAD + SIMPLEX method if Migrad fails");
      Printf(" MINOs     Exact (non-linear) parameter error analysis");
      Printf(" MNContour Calculate one MINOS function contour");
      Printf(" PARameter Define or redefine new parameters and values");
      Printf(" RELease   Make previously FIXed parameters variable again");
      Printf(" REStore   Release last parameter fixed");
      Printf(" SAVe      Save current parameter values on a file");
      Printf(" SCAn      Scan the user function by varying parameters");
      Printf(" SEEk      Minimize by the method of Monte Carlo");
      Printf(" SET       Set various MINUIT constants or conditions");
      Printf(" SHOw      Show values of current constants or conditions");
      Printf(" SIMplex   Minimize by the method of Simplex");
      goto L99;
   }

//*-* __________________________________________________________________
//*-*
//*-* --  Command CLEAR
//*-* --  =============
//*-*
   if( !strncmp(comd.Data(),"CLE",3) ) {
      Printf(" ***>CLEAR");
      Printf(" Resets all parameter names and values to undefined.");
      Printf(" Must normally be followed by a PARameters command or ");
      Printf(" equivalent, in order to define parameter values.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command CONTOUR
//*-* --  ===============
//*-* .
   if( !strncmp(comd.Data(),"CON",3) ) {
      Printf(" ***>CONTOUR <par1>  <par2>  [devs]  [ngrid]");
      Printf(" Instructs Minuit to trace contour lines of the user function");
      Printf(" with respect to the two parameters whose external numbers");
      Printf(" are <par1> and <par2>.");
      Printf(" Other variable parameters of the function, if any, will have");
      Printf(" their values fixed at the current values during the contour");
      Printf(" tracing. The optional parameter [devs] (default value 2.)");
      Printf(" gives the number of standard deviations in each parameter");
      Printf(" which should lie entirely within the plotting area.");
      Printf(" Optional parameter [ngrid] (default value 25 unless page");
      Printf(" size is too small) determines the resolution of the plot,");
      Printf(" i.e. the number of rows and columns of the grid at which the");
      Printf(" function will be evaluated. [See also MNContour.]");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command END
//*-* --  ===========
//*-* .
   if( !strncmp(comd.Data(),"END",3) ) {
      Printf(" ***>END");
      Printf(" Signals the end of a data block (i.e., the end of a fit),");
      Printf(" and implies that execution should continue, because another");
      Printf(" Data Block follows. A Data Block is a set of Minuit data");
      Printf(" consisting of");
      Printf("     (1) A Title,");
      Printf("     (2) One or more Parameter Definitions,");
      Printf("     (3) A blank line, and");
      Printf("     (4) A set of Minuit Commands.");
      Printf(" The END command is used when more than one Data Block is to");
      Printf(" be used with the same FCN function. It first causes Minuit");
      Printf(" to issue a CALL FCN with IFLAG=3, in order to allow FCN to");
      Printf(" perform any calculations associated with the final fitted");
      Printf(" parameter values, unless a CALL FCN 3 command has already");
      Printf(" been executed at the current FCN value.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* .
//*-* --
//*-* --  Command EXIT
//*-* --  ============
   if( !strncmp(comd.Data(),"EXI",3) ) {
      Printf(" ***>EXIT");
      Printf(" Signals the end of execution.");
      Printf(" The EXIT command first causes Minuit to issue a CALL FCN");
      Printf(" with IFLAG=3, to allow FCN to perform any calculations");
      Printf(" associated with the final fitted parameter values, unless a");
      Printf(" CALL FCN 3 command has already been executed.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command FIX
//*-* --  ===========
//*-* .
   if( !strncmp(comd.Data(),"FIX",3) ) {
      Printf(" ***>FIX} <parno> [parno] ... [parno]");
      Printf(" Causes parameter(s) <parno> to be removed from the list of");
      Printf(" variable parameters, and their value(s) will remain constant");
      Printf(" during subsequent minimizations, etc., until another command");
      Printf(" changes their value(s) or status.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command HESSE
//*-* --  =============
//*-* .
   if( !strncmp(comd.Data(),"HES",3) ) {
      Printf(" ***>HESse  [maxcalls]");
      Printf(" Calculate, by finite differences, the Hessian or error matrix.");
      Printf("  That is, it calculates the full matrix of second derivatives");
      Printf(" of the function with respect to the currently variable");
      Printf(" parameters, and inverts it, printing out the resulting error");
      Printf(" matrix. The optional argument [maxcalls] specifies the");
      Printf(" (approximate) maximum number of function calls after which");
      Printf(" the calculation will be stopped.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command IMPROVE
//*-* --  ===============
//*-* .
   if( !strncmp(comd.Data(),"IMP",3) ) {
      Printf(" ***>IMPROVE  [maxcalls]");
      Printf(" If a previous minimization has converged, and the current");
      Printf(" values of the parameters therefore correspond to a local");
      Printf(" minimum of the function, this command requests a search for");
      Printf(" additional distinct local minima.");
      Printf(" The optional argument [maxcalls] specifies the (approximate");
      Printf(" maximum number of function calls after which the calculation");
      Printf(" will be stopped.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command MIGRAD
//*-* --  ==============
//*-* .
   if( !strncmp(comd.Data(),"MIG",3) ) {
      Printf(" ***>MIGrad  [maxcalls]  [tolerance]");
      Printf(" Causes minimization of the function by the method of Migrad,");
      Printf(" the most efficient and complete single method, recommended");
      Printf(" for general functions (see also MINImize).");
      Printf(" The minimization produces as a by-product the error matrix");
      Printf(" of the parameters, which is usually reliable unless warning");
      Printf(" messages are produced.");
      Printf(" The optional argument [maxcalls] specifies the (approximate)");
      Printf(" maximum number of function calls after which the calculation");
      Printf(" will be stopped even if it has not yet converged.");
      Printf(" The optional argument [tolerance] specifies required tolerance");
      Printf(" on the function value at the minimum.");
      Printf(" The default tolerance is 0.1, and the minimization will stop");
      Printf(" when the estimated vertical distance to the minimum (EDM) is");
      Printf(" less than 0.001*[tolerance]*UP (see [SET ERRordef]).");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command MINIMIZE
//*-* --  ================
//*-* .
   if( !strncmp(comd.Data(),"MINI",4) ) {
      Printf(" ***>MINImize  [maxcalls] [tolerance]");
      Printf(" Causes minimization of the function by the method of Migrad,");
      Printf(" as does the MIGrad command, but switches to the SIMplex method");
      Printf(" if Migrad fails to converge. Arguments are as for MIGrad.");
      Printf(" Note that command requires four characters to be unambiguous.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command MINOS
//*-* --  =============
//*-* .
   if( !strncmp(comd.Data(),"MIN0",4) ) {
      Printf(" ***>MINOs  [maxcalls]  [parno] [parno] ...");
      Printf(" Causes a Minos error analysis to be performed on the parameters");
      Printf(" whose numbers [parno] are specified. If none are specified,");
      Printf(" Minos errors are calculated for all variable parameters.");
      Printf(" Minos errors may be expensive to calculate, but are very");
      Printf(" reliable since they take account of non-linearities in the");
      Printf(" problem as well as parameter correlations, and are in general");
      Printf(" asymmetric.");
      Printf(" The optional argument [maxcalls] specifies the (approximate)");
      Printf(" maximum number of function calls per parameter requested,");
      Printf(" after which the calculation will stop for that parameter.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command MNCONTOUR
//*-* --  =================
//*-* .
   if( !strncmp(comd.Data(),"MNC",3) ) {
      Printf(" ***>MNContour  <par1> <par2> [npts]");
      Printf(" Calculates one function contour of FCN with respect to");
      Printf(" parameters par1 and par2, with FCN minimized always with");
      Printf(" respect to all other NPAR-2 variable parameters (if any).");
      Printf(" Minuit will try to find npts points on the contour (default 20)");
      Printf(" If only two parameters are variable at the time, it is not");
      Printf(" necessary to specify their numbers. To calculate more than");
      Printf(" one contour, it is necessary to SET ERRordef to the appropriate");
      Printf(" value and issue the MNContour command for each contour.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command PARAMETER
//*-* --  =================
//*-* .
   if( !strncmp(comd.Data(),"PAR",3) ) {
      Printf(" ***>PARameters");
      Printf(" followed by one or more parameter definitions.");
      Printf(" Parameter definitions are of the form:");
      Printf("   <number>  ''name''  <value>  <step>  [lolim] [uplim] ");
      Printf(" for example:");
      Printf("  3  ''K width''  1.2   0.1");
      Printf(" the last definition is followed by a blank line or a zero.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command RELEASE
//*-* --  ===============
//*-* .
   if( !strncmp(comd.Data(),"REL",3) ) {
      Printf(" ***>RELease  <parno> [parno] ... [parno]");
      Printf(" If <parno> is the number of a previously variable parameter");
      Printf(" which has been fixed by a command: FIX <parno>, then that");
      Printf(" parameter will return to variable status.  Otherwise a warning");
      Printf(" message is printed and the command is ignored.");
      Printf(" Note that this command operates only on parameters which were");
      Printf(" at one time variable and have been FIXed. It cannot make");
      Printf(" constant parameters variable; that must be done by redefining");
      Printf(" the parameter with a PARameters command.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command RESTORE
//*-* --  ===============
//*-* .
   if( !strncmp(comd.Data(),"RES",3) ) {
      Printf(" ***>REStore  [code]");
      Printf(" If no [code] is specified, this command restores all previously");
      Printf(" FIXed parameters to variable status. If [code]=1, then only");
      Printf(" the last parameter FIXed is restored to variable status.");
      Printf(" If code is neither zero nor one, the command is ignored.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command RETURN
//*-* --  ==============
//*-* .
   if( !strncmp(comd.Data(),"RET",3) ) {
      Printf(" ***>RETURN");
      Printf(" Signals the end of a data block, and instructs Minuit to return");
      Printf(" to the program which called it. The RETurn command first");
      Printf(" causes Minuit to CALL FCN with IFLAG=3, in order to allow FCN");
      Printf(" to perform any calculations associated with the final fitted");
      Printf(" parameter values, unless a CALL FCN 3 command has already been");
      Printf(" executed at the current FCN value.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SAVE
//*-* --  ============
//*-* .
   if( !strncmp(comd.Data(),"SAV",3) ) {
      Printf(" ***>SAVe");
      Printf(" Causes the current parameter values to be saved on a file in");
      Printf(" such a format that they can be read in again as Minuit");
      Printf(" parameter definitions. If the covariance matrix exists, it is");
      Printf(" also output in such a format. The unit number is by default 7,");
      Printf(" or that specified by the user in his call to MINTIO or");
      Printf(" MNINIT. The user is responsible for opening the file previous");
      Printf(" to issuing the [SAVe] command (except where this can be done");
      Printf(" interactively).");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SCAN
//*-* --  ============
//*-* .
   if( !strncmp(comd.Data(),"SCA",3) ) {
      Printf(" ***>SCAn  [parno]  [numpts] [from]  [to]");
      Printf(" Scans the value of the user function by varying parameter");
      Printf(" number [parno], leaving all other parameters fixed at the");
      Printf(" current value. If [parno] is not specified, all variable");
      Printf(" parameters are scanned in sequence.");
      Printf(" The number of points [numpts] in the scan is 40 by default,");
      Printf(" and cannot exceed 100. The range of the scan is by default");
      Printf(" 2 standard deviations on each side of the current best value,");
      Printf(" but can be specified as from [from] to [to].");
      Printf(" After each scan, if a new minimum is found, the best parameter");
      Printf(" values are retained as start values for future scans or");
      Printf(" minimizations. The curve resulting from each scan is plotted");
      Printf(" on the output unit in order to show the approximate behaviour");
      Printf(" of the function.");
      Printf(" This command is not intended for minimization, but is sometimes");
      Printf(" useful for debugging the user function or finding a");
      Printf(" reasonable starting point.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SEEK
//*-* --  ============
//*-* .
   if( !strncmp(comd.Data(),"SEE",3) ) {
      Printf(" ***>SEEk  [maxcalls]  [devs]");
      Printf(" Causes a Monte Carlo minimization of the function, by choosing");
      Printf(" random values of the variable parameters, chosen uniformly");
      Printf(" over a hypercube centered at the current best value.");
      Printf(" The region size is by default 3 standard deviations on each");
      Printf(" side, but can be changed by specifying the value of [devs].");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SET
//*-* --  ===========
//*-* .
   if( !strncmp(comd.Data(),"SET",3) ) {
      Printf(" ***>SET <option_name>");
      Printf("  SET BATch");
      Printf("    Informs Minuit that it is running in batch mode.");

      Printf(" ");
      Printf("  SET EPSmachine  <accuracy>");
      Printf("    Informs Minuit that the relative floating point arithmetic");
      Printf("    precision is <accuracy>. Minuit determines the nominal");
      Printf("    precision itself, but the SET EPSmachine command can be");
      Printf("    used to override Minuit own determination, when the user");
      Printf("    knows that the FCN function value is not calculated to");
      Printf("    the nominal machine accuracy. Typical values of <accuracy>");
      Printf("    are between 10**-5 and 10**-14.");

      Printf(" ");
      Printf("  SET ERRordef  <up>");
      Printf("    Sets the value of UP (default value= 1.), defining parameter");
      Printf("    errors. Minuit defines parameter errors as the change");
      Printf("    in parameter value required to change the function value");
      Printf("    by UP. Normally, for chisquared fits UP=1, and for negative");
      Printf("    log likelihood, UP=0.5.");

      Printf(" ");
      Printf("   SET GRAdient  [force]");
      Printf("    Informs Minuit that the user function is prepared to");
      Printf("    calculate its own first derivatives and return their values");
      Printf("    in the array GRAD when IFLAG=2 (see specs of FCN).");
      Printf("    If [force] is not specified, Minuit will calculate");
      Printf("    the FCN derivatives by finite differences at the current");
      Printf("    point and compare with the user calculation at that point,");
      Printf("    accepting the user values only if they agree.");
      Printf("    If [force]=1, Minuit does not do its own derivative");
      Printf("    calculation, and uses the derivatives calculated in FCN.");

      Printf(" ");
      Printf("   SET INPut  [unitno]  [filename]");
      Printf("    Causes Minuit, in data-driven mode only, to read subsequent");
      Printf("    commands (or parameter definitions) from a different input");
      Printf("    file. If no [unitno] is specified, reading reverts to the");
      Printf("    previous input file, assuming that there was one.");
      Printf("    If [unitno] is specified, and that unit has not been opened,");
      Printf("    then Minuit attempts to open the file [filename]} if a");
      Printf("    name is specified. If running in interactive mode and");
      Printf("    [filename] is not specified and [unitno] is not opened,");
      Printf("    Minuit prompts the user to enter a file name.");
      Printf("    If the word REWIND is added to the command (note:no blanks");
      Printf("    between INPUT and REWIND), the file is rewound before");
      Printf("    reading. Note that this command is implemented in standard");
      Printf("    Fortran 77 and the results may depend on the  system;");
      Printf("    for example, if a filename is given under VM/CMS, it must");
      Printf("    be preceeded by a slash.");

      Printf(" ");
      Printf("   SET INTeractive");
      Printf("    Informs Minuit that it is running interactively.");

      Printf(" ");
      Printf("   SET LIMits  [parno]  [lolim]  [uplim]");
      Printf("    Allows the user to change the limits on one or all");
      Printf("    parameters. If no arguments are specified, all limits are");
      Printf("    removed from all parameters. If [parno] alone is specified,");
      Printf("    limits are removed from parameter [parno].");
      Printf("    If all arguments are specified, then parameter [parno] will");
      Printf("    be bounded between [lolim] and [uplim].");
      Printf("    Limits can be specified in either order, Minuit will take");
      Printf("    the smaller as [lolim] and the larger as [uplim].");
      Printf("    However, if [lolim] is equal to [uplim], an error condition");
      Printf("    results.");

      Printf(" ");
      Printf("   SET LINesperpage");
      Printf("     Sets the number of lines for one page of output.");
      Printf("     Default value is 24 for interactive mode");

      Printf(" ");
      Printf("   SET NOGradient");
      Printf("    The inverse of SET GRAdient, instructs Minuit not to");
      Printf("    use the first derivatives calculated by the user in FCN.");

      Printf(" ");
      Printf("   SET NOWarnings");
      Printf("    Supresses Minuit warning messages.");

      Printf(" ");
      Printf("   SET OUTputfile  <unitno>");
      Printf("    Instructs Minuit to write further output to unit <unitno>.");

      Printf(" ");
      Printf("   SET PAGethrow  <integer>");
      Printf("    Sets the carriage control character for ``new page'' to");
      Printf("    <integer>. Thus the value 1 produces a new page, and 0");
      Printf("    produces a blank line, on some devices (see TOPofpage)");


      Printf(" ");
      Printf("   SET PARameter  <parno>  <value>");
      Printf("    Sets the value of parameter <parno> to <value>.");
      Printf("    The parameter in question may be variable, fixed, or");
      Printf("    constant, but must be defined.");

      Printf(" ");
      Printf("   SET PRIntout  <level>");
      Printf("    Sets the print level, determining how much output will be");
      Printf("    produced. Allowed values and their meanings are displayed");
      Printf("    after a SHOw PRInt command, and are currently <level>=:");
      Printf("      [-1]  no output except from SHOW commands");
      Printf("       [0]  minimum output");
      Printf("       [1]  default value, normal output");
      Printf("       [2]  additional output giving intermediate results.");
      Printf("       [3]  maximum output, showing progress of minimizations.");
      Printf("    Note: See also the SET WARnings command.");

      Printf(" ");
      Printf("   SET RANdomgenerator  <seed>");
      Printf("    Sets the seed of the random number generator used in SEEk.");
      Printf("    This can be any integer between 10000 and 900000000, for");
      Printf("    example one which was output from a SHOw RANdom command of");
      Printf("    a previous run.");

      Printf(" ");
      Printf("   SET STRategy  <level>");
      Printf("    Sets the strategy to be used in calculating first and second");
      Printf("    derivatives and in certain minimization methods.");
      Printf("    In general, low values of <level> mean fewer function calls");
      Printf("    and high values mean more reliable minimization.");
      Printf("    Currently allowed values are 0, 1 (default), and 2.");

      Printf(" ");
      Printf("   SET TITle");
      Printf("    Informs Minuit that the next input line is to be considered");
      Printf("    the (new) title for this task or sub-task.  This is for");
      Printf("    the convenience of the user in reading his output.");

      Printf(" ");
      Printf("   SET WARnings");
      Printf("    Instructs Minuit to output warning messages when suspicious");
      Printf("    conditions arise which may indicate unreliable results.");
      Printf("    This is the default.");

      Printf(" ");
      Printf("    SET WIDthpage");
      Printf("    Informs Minuit of the output page width.");
      Printf("    Default values are 80 for interactive jobs");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SHOW
//*-* --  ============
//*-* .
   if( !strncmp(comd.Data(),"SHO",3) ) {
      Printf(" ***>SHOw  <option_name>");
      Printf("  All SET XXXX commands have a corresponding SHOw XXXX command.");
      Printf("  In addition, the SHOw commands listed starting here have no");
      Printf("  corresponding SET command for obvious reasons.");

      Printf(" ");
      Printf("   SHOw CORrelations");
      Printf("    Calculates and prints the parameter correlations from the");
      Printf("    error matrix.");

      Printf(" ");
      Printf("   SHOw COVariance");
      Printf("    Prints the (external) covariance (error) matrix.");

      Printf(" ");
      Printf("   SHOw EIGenvalues");
      Printf("    Calculates and prints the eigenvalues of the covariance");
      Printf("    matrix.");

      Printf(" ");
      Printf("   SHOw FCNvalue");
      Printf("    Prints the current value of FCN.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command SIMPLEX
//*-* --  ===============
//*-* .
   if( !strncmp(comd.Data(),"SIM",3) ) {
      Printf(" ***>SIMplex  [maxcalls]  [tolerance]");
      Printf(" Performs a function minimization using the simplex method of");
      Printf(" Nelder and Mead. Minimization terminates either when the");
      Printf(" function has been called (approximately) [maxcalls] times,");
      Printf(" or when the estimated vertical distance to minimum (EDM) is");
      Printf(" less than [tolerance].");
      Printf(" The default value of [tolerance] is 0.1*UP(see SET ERRordef).");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command STANDARD
//*-* --  ================
//*-* .
   if( !strncmp(comd.Data(),"STA",3) ) {
      Printf(" ***>STAndard");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command STOP
//*-* --  ============
//*-* .
   if( !strncmp(comd.Data(),"STO",3) ) {
      Printf(" ***>STOP");
      Printf(" Same as EXIT.");
      goto L99;
   }
//*-* __________________________________________________________________
//*-* --
//*-* --  Command TOPOFPAGE
//*-* --  =================
//*-* .
   if( !strncmp(comd.Data(),"TOP",3) ) {
      Printf(" ***>TOPofpage");
      Printf(" Causes Minuit to write the character specified in a");
      Printf(" SET PAGethrow command (default = 1) to column 1 of the output");
      Printf(" file, which may or may not position your output medium to");
      Printf(" the top of a page depending on the device and system.");
      goto L99;
   }
//*-* __________________________________________________________________
   Printf(" Unknown MINUIT command. Type HELP for list of commands.");

L99:
   return;
} /* mnhelp_ */

//______________________________________________________________________________
void TMinuit::mnhess()
{
//*-*-*-*-*-*Calculates the full second-derivative matrix of FCN*-*-*-*-*-*-*-*
//*-*        ===================================================
//*-*        by taking finite differences. When calculating diagonal
//*-*        elements, it may iterate so that step size is nearly that
//*-*        which gives function change= UP/10. The first derivatives
//*-*        of course come as a free side effect, but with a smaller
//*-*        step size in order to obtain a known accuracy.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dmin_, dxdi, elem, wint, tlrg2, d, dlast, ztemp, g2bfor;
   Double_t df, aimsag, fs1, tlrstp, fs2, stpinm, g2i, sag=0, xtf, xti, xtj;
   Int_t icyc, ncyc, ndex, idrv, iext, npar2, i, j, ifail, npard, nparx, id, multpy;
   Bool_t ldebug;

   ldebug = fIdbg[3] >= 1;
   if (fAmin == fUndefi) {
      mnamin();
   }
   if (fIstrat <= 0) {
      ncyc   = 3;
      tlrstp = .5;
      tlrg2  = .1;
   } else if (fIstrat == 1) {
      ncyc   = 5;
      tlrstp = .3;
      tlrg2  = .05;
   } else {
      ncyc   = 7;
      tlrstp = .1;
      tlrg2  = .02;
   }
   if (fISW[4] >= 2 || ldebug) {
      Printf("   START COVARIANCE MATRIX CALCULATION.");
   }
   fCfrom  = "HESSE   ";
   fNfcnfr = fNfcn;
   fCstatu = "OK        ";
   npard   = fNpar;
//*-*-                make sure starting at the right place
   mninex(fX);
   nparx = fNpar;
   Eval(nparx, fGin, fs1, fU, 4);    ++fNfcn;
   if (fs1 != fAmin) {
      df    = fAmin - fs1;
      mnwarn("D", "MNHESS", Form("function value differs from AMIN by %g",df));
   }
   fAmin = fs1;
   if (ldebug) {
      Printf(" PAR D   GSTEP           D          G2         GRD         SAG    ");
   }
//*-*-                                       . . . . . . diagonal elements .

//*-*-        fISW[1] = 1 if approx, 2 if not posdef, 3 if ok
//*-*-        AIMSAG is the sagitta we are aiming for in second deriv calc.

   aimsag = TMath::Sqrt(fEpsma2)*(TMath::Abs(fAmin) + fUp);
//*-*-        Zero the second derivative matrix
   npar2 = fNpar*(fNpar + 1) / 2;
   for (i = 1; i <= npar2; ++i) { fVhmat[i-1] = 0; }

//*-*-        Loop over variable parameters for second derivatives
   idrv = 2;
   for (id = 1; id <= npard; ++id) {
      i = id + fNpar - npard;
      iext = fNexofi[i-1];
      if (fG2[i-1] == 0) {
         mnwarn("W", "HESSE", Form("Second derivative enters zero, param %d",iext));
         wint = fWerr[i-1];
         if (fNvarl[iext-1] > 1) {
            mndxdi(fX[i-1], i-1, dxdi);
            if (TMath::Abs(dxdi) < .001) wint = .01;
            else                          wint /= TMath::Abs(dxdi);
         }
         fG2[i-1] = fUp / (wint*wint);
      }
      xtf   = fX[i-1];
      dmin_ = fEpsma2*8*TMath::Abs(xtf);

//*-*-                              find step which gives sagitta = AIMSAG
      d = TMath::Abs(fGstep[i-1]);
      int skip50 = 0;
      for (icyc = 1; icyc <= ncyc; ++icyc) {
//*-*-                              loop here only if SAG=0
         for (multpy = 1; multpy <= 5; ++multpy) {
//*-*-          take two steps
            fX[i-1] = xtf + d;
            mninex(fX);
            nparx = fNpar;
            Eval(nparx, fGin, fs1, fU, 4);    ++fNfcn;
            fX[i-1] = xtf - d;
            mninex(fX);
            Eval(nparx, fGin, fs2, fU, 4);    ++fNfcn;
            fX[i-1] = xtf;
            sag = (fs1 + fs2 - fAmin*2)*.5;
            if (sag != 0) goto L30;
            if (fGstep[i-1] < 0) {
               if (d >= .5) goto L26;
               d *= 10;
               if (d > .5)         d = .51;
               continue;
            }
            d *= 10;
         }
L26:
         mnwarn("W", "HESSE", Form("Second derivative zero for parameter%d",iext));
         goto L390;
//*-*-                            SAG is not zero
L30:
         g2bfor    = fG2[i-1];
         fG2[i-1]  = sag*2 / (d*d);
         fGrd[i-1] = (fs1 - fs2) / (d*2);
         if (ldebug) {
            Printf("%4d%2d%12.5g%12.5g%12.5g%12.5g%12.5g%12.5g",i,idrv,fGstep[i-1],fG2[i-1],fGrd[i-1],sag);
         }
         if (fGstep[i-1] > 0) fGstep[i-1] =  TMath::Abs(d);
         else                 fGstep[i-1] = -TMath::Abs(d);
         fDirin[i-1] = d;
         fHESSyy[i-1]= fs1;
         dlast       = d;
         d           = TMath::Sqrt(aimsag*2 / TMath::Abs(fG2[i-1]));
//*-*-        if parameter has limits, max int step size = 0.5
         stpinm = .5;
         if (fGstep[i-1] < 0) d = TMath::Min(d,stpinm);
         if (d < dmin_) d = dmin_;
//*-*-          see if converged
         if (TMath::Abs((d - dlast) / d) < tlrstp ||
            TMath::Abs((fG2[i-1] - g2bfor) / fG2[i-1]) < tlrg2) {
            skip50 = 1;
            break;
         }
         d = TMath::Min(d,dlast*102);
         d = TMath::Max(d,dlast*.1);
      }
//*-*-                      end of step size loop
      if (!skip50)
         mnwarn("D", "MNHESS", Form("Second Deriv. SAG,AIM= %d%g%g",iext,sag,aimsag));

      ndex = i*(i + 1) / 2;
      fVhmat[ndex-1] = fG2[i-1];
   }
//*-*-                             end of diagonal second derivative loop
   mninex(fX);
//*-*-                                    refine the first derivatives
   if (fIstrat > 0) mnhes1();
   fISW[1] = 3;
   fDcovar = 0;
//*-*-                                       . . . .  off-diagonal elements

   if (fNpar == 1) goto L214;
   for (i = 1; i <= fNpar; ++i) {
      for (j = 1; j <= i-1; ++j) {
         xti     = fX[i-1];
         xtj     = fX[j-1];
         fX[i-1] = xti + fDirin[i-1];
         fX[j-1] = xtj + fDirin[j-1];
         mninex(fX);
         Eval(nparx, fGin, fs1, fU, 4);            ++fNfcn;
         fX[i-1] = xti;
         fX[j-1] = xtj;
         elem = (fs1 + fAmin - fHESSyy[i-1] - fHESSyy[j-1]) / (
                    fDirin[i-1]*fDirin[j-1]);
         ndex = i*(i-1) / 2 + j;
         fVhmat[ndex-1] = elem;
      }
   }
L214:
   mninex(fX);
//*-*-                 verify matrix positive-definite
   mnpsdf();
   for (i = 1; i <= fNpar; ++i) {
      for (j = 1; j <= i; ++j) {
         ndex = i*(i-1) / 2 + j;
         fP[i + j*fMaxpar - fMaxpar-1] = fVhmat[ndex-1];
         fP[j + i*fMaxpar - fMaxpar-1] = fP[i + j*fMaxpar - fMaxpar-1];
      }
   }
   mnvert(fP, fMaxint, fMaxint, fNpar, ifail);
   if (ifail > 0) {
      mnwarn("W", "HESSE", "Matrix inversion fails.");
      goto L390;
   }
//*-*-                                       . . . . . . .  calculate  e d m
   fEDM = 0;

   for (i = 1; i <= fNpar; ++i) {
//*-*-                             off-diagonal elements
      ndex = i*(i-1) / 2;
      for (j = 1; j <= i-1; ++j) {
         ++ndex;
         ztemp = fP[i + j*fMaxpar - fMaxpar-1]*2;
         fEDM += fGrd[i-1]*ztemp*fGrd[j-1];
         fVhmat[ndex-1] = ztemp;
      }
//*-*-                             diagonal elements
      ++ndex;
      fVhmat[ndex-1] = fP[i + i*fMaxpar - fMaxpar-1]*2;
      fEDM += fP[i + i*fMaxpar - fMaxpar-1]*(fGrd[i-1]*fGrd[i-1]);
   }
   if (fISW[4] >= 1 && fISW[1] == 3 && fItaur == 0) {
      Printf(" COVARIANCE MATRIX CALCULATED SUCCESSFULLY");
   }
   goto L900;
//*-*-                             failure to invert 2nd deriv matrix
L390:
   fISW[1] = 1;
   fDcovar = 1;
   fCstatu = "FAILED    ";
   if (fISW[4] >= 0) {
      Printf("  MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX. ");
   }
   for (i = 1; i <= fNpar; ++i) {
      ndex = i*(i-1) / 2;
      for (j = 1; j <= i-1; ++j) {
         ++ndex;
         fVhmat[ndex-1] = 0;
      }
      ++ndex;
      g2i = fG2[i-1];
      if (g2i <= 0) g2i = 1;
      fVhmat[ndex-1] = 2 / g2i;
   }
L900:
   return;
} /* mnhess_ */

//______________________________________________________________________________
void TMinuit::mnhes1()
{
//*-*-*-*Calculate first derivatives (GRD) and uncertainties (DGRD)*-*-*-*-*-*
//*-*    ==========================================================
//*-*         and appropriate step sizes GSTEP
//*-*      Called from MNHESS and MNGRAD
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dmin_, d, dfmin, dgmin=0, change, chgold, grdold=0, epspri;
   Double_t fs1, optstp, fs2, grdnew=0, sag, xtf;
   Int_t icyc, ncyc=0, idrv, i, nparx;
   Bool_t ldebug;

   ldebug = fIdbg[5] >= 1;
   if (fIstrat <= 0) ncyc = 1;
   if (fIstrat == 1) ncyc = 2;
   if (fIstrat > 1)  ncyc = 6;
   idrv = 1;
   nparx = fNpar;
   dfmin = fEpsma2*4*(TMath::Abs(fAmin) + fUp);
//*-*-                                    main loop over parameters
   for (i = 1; i <= fNpar; ++i) {
      xtf    = fX[i-1];
      dmin_  = fEpsma2*4*TMath::Abs(xtf);
      epspri = fEpsma2 + TMath::Abs(fGrd[i-1]*fEpsma2);
      optstp = TMath::Sqrt(dfmin / (TMath::Abs(fG2[i-1]) + epspri));
      d = TMath::Abs(fGstep[i-1])*.2;
      if (d > optstp) d = optstp;
      if (d < dmin_)  d = dmin_;
      chgold = 1e4;
//*-*-                                      iterate reducing step size
      for (icyc = 1; icyc <= ncyc; ++icyc) {
         fX[i-1] = xtf + d;
         mninex(fX);
         Eval(nparx, fGin, fs1, fU, 4);            ++fNfcn;
         fX[i-1] = xtf - d;
         mninex(fX);
         Eval(nparx, fGin, fs2, fU, 4);            ++fNfcn;
         fX[i-1] = xtf;
//*-*-                                      check if step sizes appropriate
         sag    = (fs1 + fs2 - fAmin*2)*.5;
         grdold = fGrd[i-1];
         grdnew = (fs1 - fs2) / (d*2);
         dgmin  = fEpsmac*(TMath::Abs(fs1) + TMath::Abs(fs2)) / d;
         if (ldebug) {
            Printf("%4d%2d%12.5g%12.5g%12.5g%12.5g%12.5g%12.5g",i,idrv,fGstep[i-1],d,fG2[i-1],grdnew,sag);
         }
         if (grdnew == 0) goto L60;
         change = TMath::Abs((grdold - grdnew) / grdnew);
         if (change > chgold && icyc > 1) goto L60;
         chgold    = change;
         fGrd[i-1] = grdnew;
         if (fGstep[i-1] > 0) fGstep[i-1] =  TMath::Abs(d);
         else                 fGstep[i-1] = -TMath::Abs(d);
//*-*-                 decrease step until first derivative changes by <5%
         if (change < .05) goto L60;
         if (TMath::Abs(grdold - grdnew) < dgmin) goto L60;
         if (d < dmin_) {
            mnwarn("D", "MNHES1", "Step size too small for 1st drv.");
            goto L60;
         }
         d *= .2;
      }
//*-*-                                      loop satisfied = too many iter
      mnwarn("D", "MNHES1", Form("Too many iterations on D1.%g%g",grdold,grdnew));
L60:
      fDgrd[i-1] = TMath::Max(dgmin,TMath::Abs(grdold - grdnew));
   }
//*-*-                                       end of first deriv. loop
   mninex(fX);
} /* mnhes1_ */

//______________________________________________________________________________
void TMinuit::mnimpr()
{
//*-*-*-*-*-*-*Attempts to improve on a good local minimum*-*-*-*-*-*-*-*-*-*
//*-*          ===========================================
//*-*        Attempts to improve on a good local minimum by finding a
//*-*        better one.   The quadratic part of FCN is removed by MNCALF
//*-*        and this transformed function is minimized using the simplex
//*-*        method from several random starting points.
//*-*        ref. -- Goldstein and Price, Math.Comp. 25, 569 (1971)
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   static Double_t rnum = 0;

   /* Local variables */
   Double_t amax, ycalf, ystar, ystst;
   Double_t pb, ep, wg, xi, sigsav, reg, sig2;
   Int_t npfn, ndex, loop=0, i, j, ifail, iseed;
   Int_t jhold, nloop, nparx, nparp1, jh, jl, iswtr;

   if (fNpar <= 0) return;
   if (fAmin == fUndefi) mnamin();
   fCstatu = "UNCHANGED ";
   fItaur  = 1;
   fEpsi   = fUp*.1;
   npfn    = fNfcn;
   nloop   = Int_t(fWord7[1]);
   if (nloop <= 0) nloop = fNpar + 4;
   nparx  = fNpar;
   nparp1 = fNpar + 1;
   wg = 1 / Double_t(fNpar);
   sigsav = fEDM;
   fApsi  = fAmin;
   iswtr   = fISW[4] - 2*fItaur;
   for (i = 1; i <= fNpar; ++i) {
      fXt[i-1]       = fX[i-1];
      fIMPRdsav[i-1] = fWerr[i-1];
      for (j = 1; j <= i; ++j) {
         ndex = i*(i-1) / 2 + j;
         fP[i + j*fMaxpar - fMaxpar-1] = fVhmat[ndex-1];
         fP[j + i*fMaxpar - fMaxpar-1] = fP[i + j*fMaxpar - fMaxpar-1];
      }
   }
   mnvert(fP, fMaxint, fMaxint, fNpar, ifail);
   if (ifail >= 1) goto L280;
//*-*-              Save inverted matrix in VT
   for (i = 1; i <= fNpar; ++i) {
      ndex = i*(i-1) / 2;
      for (j = 1; j <= i; ++j) {
         ++ndex;
         fVthmat[ndex-1] = fP[i + j*fMaxpar - fMaxpar-1];
      }
   }
   loop = 0;

L20:
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = fIMPRdsav[i-1]*2;
      mnrn15(rnum, iseed);
      fX[i-1] = fXt[i-1] + fDirin[i-1]*2*(rnum - .5);
   }
   ++loop;
   reg = 2;
   if (fISW[4] >= 0) {
      Printf("START ATTEMPT NO.%2d TO FIND NEW MINIMUM",loop);
   }
L30:
   mncalf(fX, ycalf);
   fAmin = ycalf;
//*-*-                                       . . . . set up  random simplex
   jl = nparp1;
   jh = nparp1;
   fIMPRy[nparp1-1] = fAmin;
   amax = fAmin;
   for (i = 1; i <= fNpar; ++i) {
      xi = fX[i-1];
      mnrn15(rnum, iseed);
      fX[i-1] = xi - fDirin[i-1]*(rnum - .5);
      mncalf(fX, ycalf);
      fIMPRy[i-1] = ycalf;
      if (fIMPRy[i-1] < fAmin) {
         fAmin = fIMPRy[i-1];
         jl    = i;
      } else if (fIMPRy[i-1] > amax) {
         amax = fIMPRy[i-1];
         jh   = i;
      }
      for (j = 1; j <= fNpar; ++j) { fP[j + i*fMaxpar - fMaxpar-1] = fX[j-1]; }
      fP[i + nparp1*fMaxpar - fMaxpar-1] = xi;
      fX[i-1] = xi;
   }

   fEDM = fAmin;
   sig2 = fEDM;
//*-*-                                       . . . . . . .  start main loop
L50:
   if (fAmin < 0)   goto L95;
   if (fISW[1] <= 2) goto L280;
   ep = fAmin*.1;
   if (sig2 < ep && fEDM < ep) goto L100;
   sig2 = fEDM;
   if (fNfcn - npfn > fNfcnmx) goto L300;
//*-*-        calculate new point * by reflection
   for (i = 1; i <= fNpar; ++i) {
      pb = 0;
      for (j = 1; j <= nparp1; ++j) { pb += wg*fP[i + j*fMaxpar - fMaxpar-1]; }
      fPbar[i-1]  = pb - wg*fP[i + jh*fMaxpar - fMaxpar-1];
      fPstar[i-1] = fPbar[i-1]*2 - fP[i + jh*fMaxpar - fMaxpar-1]*1;
   }
   mncalf(fPstar, ycalf);
   ystar = ycalf;
   if (ystar >= fAmin) goto L70;
//*-*-        point * better than jl, calculate new point **
   for (i = 1; i <= fNpar; ++i) {
      fPstst[i-1] = fPstar[i-1]*2 + fPbar[i- 1]*-1;
   }
   mncalf(fPstst, ycalf);
   ystst = ycalf;
   if (ystst < fIMPRy[jl-1]) goto L67;
   mnrazz(ystar, fPstar, fIMPRy, jh, jl);
   goto L50;
L67:
   mnrazz(ystst, fPstst, fIMPRy, jh, jl);
   goto L50;
//*-*-        point * is not as good as jl
L70:
   if (ystar >= fIMPRy[jh-1]) goto L73;
   jhold = jh;
   mnrazz(ystar, fPstar, fIMPRy, jh, jl);
   if (jhold != jh) goto L50;
//*-*-        calculate new point **
L73:
   for (i = 1; i <= fNpar; ++i) {
      fPstst[i-1] = fP[i + jh*fMaxpar - fMaxpar-1]*.5 + fPbar[i-1]*.5;
   }
   mncalf(fPstst, ycalf);
   ystst = ycalf;
   if (ystst > fIMPRy[jh-1]) goto L30;
//*-*-    point ** is better than jh
   if (ystst < fAmin) goto L67;
   mnrazz(ystst, fPstst, fIMPRy, jh, jl);
   goto L50;
//*-*-                                       . . . . . .  end main loop
L95:
   if (fISW[4] >= 0) {
      Printf(" AN IMPROVEMENT ON THE PREVIOUS MINIMUM HAS BEEN FOUND");
   }
   reg = .1;
//*-*-                                       . . . . . ask if point is new
L100:
   mninex(fX);
   Eval(nparx, fGin, fAmin, fU, 4);    ++fNfcn;
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = reg*fIMPRdsav[i-1];
      if (TMath::Abs(fX[i-1] - fXt[i-1]) > fDirin[i-1])     goto L150;
   }
   goto L230;
L150:
   fNfcnmx = fNfcnmx + npfn - fNfcn;
   npfn    = fNfcn;
   mnsimp();
   if (fAmin >= fApsi) goto L325;
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = fIMPRdsav[i-1]*.1;
      if (TMath::Abs(fX[i-1] - fXt[i-1]) > fDirin[i-1])     goto L250;
   }
L230:
   if (fAmin < fApsi)         goto L350;
   goto L325;
/*                                        . . . . . . truly new minimum */
L250:
   fLnewmn = kTRUE;
   if (fISW[1] >= 1) {
      fISW[1] = 1;
      fDcovar = TMath::Max(fDcovar,.5);
   } else fDcovar = 1;
   fItaur  = 0;
   fNfcnmx = fNfcnmx + npfn - fNfcn;
   fCstatu = "NEW MINIMU";
   if (fISW[4] >= 0) {
      Printf(" IMPROVE HAS FOUND A TRULY NEW MINIMUM");
      Printf(" *************************************");
   }
   return;
//*-*-                                       . . . return to previous region
L280:
   if (fISW[4] > 0) {
      Printf(" COVARIANCE MATRIX WAS NOT POSITIVE-DEFINITE");
   }
   goto L325;
L300:
   fISW[0] = 1;
L325:
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = fIMPRdsav[i-1]*.01;
      fX[i-1]     = fXt[i-1];
   }
   fAmin = fApsi;
   fEDM  = sigsav;
L350:
   mninex(fX);
   if (fISW[4] > 0) {
      Printf(" IMPROVE HAS RETURNED TO REGION OF ORIGINAL MINIMUM");
   }
   fCstatu = "UNCHANGED ";
   mnrset(0);
   if (fISW[1] < 2) goto L380;
   if (loop < nloop && fISW[0] < 1) goto L20;
L380:
   if (iswtr >= 0) mnprin(5, fAmin);
   fItaur = 0;
} /* mnimpr_ */

//______________________________________________________________________________
void TMinuit::mninex(Double_t *pint)
{
//*-*-*-*-*Transforms from internal coordinates (PINT) to external (U)*-*-*-*
//*-*      ===========================================================
//*-*        The minimizing routines which work in
//*-*        internal coordinates call this routine before calling FCN.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t i, j;

   for (j = 0; j < fNpar; ++j) {
      i = fNexofi[j]-1;
      if (fNvarl[i] == 1) {
         fU[i] = pint[j];
      } else {
         fU[i] = fAlim[i] + (TMath::Sin(pint[j]) + 1)*.5*(fBlim[i] - fAlim[i]);
      }
   }
} /* mninex_ */

//______________________________________________________________________________
void TMinuit::mninit(Int_t i1, Int_t i2, Int_t i3)
{
//*-*-*-*-*-*Main initialization member function for MINUIT*-*-*-*-*-*-*-*-*
//*-*        ==============================================
//*-*     It initializes some constants
//*-*                (including the logical I/O unit nos.),
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t piby2, epsp1, epsbak, epstry, distnn;
   Int_t i, idb;

//*-*-           I/O unit numbers
   fIsysrd = i1;
   fIsyswr = i2;
   fIstkwr[0] = fIsyswr;
   fNstkwr = 1;
   fIsyssa = i3;
   fNstkrd = 0;
//*-*-              version identifier
   fCvrsn  = "95.03++ ";
//*-*-              some CONSTANT
   fMaxint = fMaxpar;
   fMaxext = 2*fMaxpar;
   fUndefi = -54321;
   fBigedm = 123456;
   fCundef = ")UNDEFINED";
   fCovmes[0] = "NO ERROR MATRIX       ";
   fCovmes[1] = "ERR MATRIX APPROXIMATE";
   fCovmes[2] = "ERR MATRIX NOT POS-DEF";
   fCovmes[3] = "ERROR MATRIX ACCURATE ";
//*-*-               some starting values
   fNblock = 0;
   fIcomnd = 0;
   fCtitl  = fCundef;
   fCfrom  = "INPUT   ";
   fNfcn   = 0;
   fNfcnfr = fNfcn;
   fCstatu = "INITIALIZE";
   fISW[2] = 0;
   fISW[3] = 0;
   fISW[4] = 1;
//*-*-        fISW[5]=0 for batch jobs,  =1 for interactive jobs
//*-*-                     =-1 for originally interactive temporarily batch

   fISW[5] = 0;
//    if (intrac(&dummy)) fISW[5] = 1;
//*-*-       DEBUG options set to default values
   for (idb = 0; idb <= 10; ++idb) { fIdbg[idb] = 0; }
   fLrepor = kFALSE;
   fLwarn  = kTRUE;
   fLimset = kFALSE;
   fLnewmn = kFALSE;
   fIstrat = 1;
   fItaur  = 0;
//*-*-       default page dimensions and 'new page' carriage control integer
   fNpagwd = 120;
   fNpagln = 56;
   fNewpag = 1;
   if (fISW[5] > 0) {
      fNpagwd = 80;
      fNpagln = 30;
      fNewpag = 0;
   }
   fUp = 1;
   fUpdflt = fUp;
//*-*-                  determine machine accuracy epsmac
   epstry = .5;
   for (i = 1; i <= 100; ++i) {
      epstry *= .5;
      epsp1 = epstry + 1;
      mntiny(epsp1, epsbak);
      if (epsbak < epstry) goto L35;
   }
   epstry = 1e-7;
   fEpsmac = epstry*4;
   Printf(" MNINIT UNABLE TO DETERMINE ARITHMETIC PRECISION. WILL ASSUME:%g",fEpsmac);
L35:
   fEpsmac = epstry*8;
   fEpsma2 = TMath::Sqrt(fEpsmac)*2;
//*-*-                the vlims are a non-negligible distance from pi/2
//*-*-        used by MNPINT to set variables "near" the physical limits
   piby2   = TMath::ATan(1)*2;
   distnn  = TMath::Sqrt(fEpsma2)*8;
   fVlimhi =  piby2 - distnn;
   fVlimlo = -piby2 + distnn;
   mncler();
//    Printf("  MINUIT RELEASE %s INITIALIZED.   DIMENSIONS 100/50  EPSMAC=%g",(const char*)fCvrsn,fEpsmac);
} /* mninit_ */

//______________________________________________________________________________
void TMinuit::mnlims()
{
//*-*-*-*Interprets the SET LIM command, to reset the parameter limits*-*-*-*
//*-*    =============================================================
//*-*       Called from MNSET
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dxdi, snew;
   Int_t kint, i2, newcod, ifx=0, inu;

   fCfrom  = "SET LIM ";
   fNfcnfr = fNfcn;
   fCstatu = "NO CHANGE ";
   i2 = Int_t(fWord7[0]);
   if (i2 > fMaxext || i2 < 0) goto L900;
   if (i2 > 0) goto L30;
//*-*-                                    set limits on all parameters
   newcod = 4;
   if (fWord7[1] == fWord7[2]) newcod = 1;
   for (inu = 1; inu <= fNu; ++inu) {
      if (fNvarl[inu-1] <= 0) continue;
      if (fNvarl[inu-1] == 1 && newcod == 1) continue;
      kint = fNiofex[inu-1];
//*-*-            see if parameter has been fixed
      if (kint <= 0) {
         if (fISW[4] >= 0) {
            Printf("           LIMITS NOT CHANGED FOR FIXED PARAMETER:%4d",inu);
         }
         continue;
      }
      if (newcod == 1) {
//*-*-           remove limits from parameter
         if (fISW[4] > 0) {
            Printf(" LIMITS REMOVED FROM PARAMETER  :%3d",inu);
         }
         fCstatu = "NEW LIMITS";
         mndxdi(fX[kint-1], kint-1, dxdi);
         snew           = fGstep[kint-1]*dxdi;
         fGstep[kint-1] = TMath::Abs(snew);
         fNvarl[inu-1]  = 1;
      } else {
//*-*-            put limits on parameter
         fAlim[inu-1] = TMath::Min(fWord7[1],fWord7[2]);
         fBlim[inu-1] = TMath::Max(fWord7[1],fWord7[2]);
         if (fISW[4] > 0) {
            Printf(" PARAMETER %3d LIMITS SET TO  %15.5g%15.5g",inu,fAlim[inu-1],fBlim[inu-1]);
         }
         fNvarl[inu-1]  = 4;
         fCstatu        = "NEW LIMITS";
         fGstep[kint-1] = -.1;
      }
   }
   goto L900;
//*-*-                                      set limits on one parameter
L30:
   if (fNvarl[i2-1] <= 0) {
      Printf(" PARAMETER %3d IS NOT VARIABLE.", i2);
      goto L900;
   }
   kint = fNiofex[i2-1];
//*-*-                                      see if parameter was fixed
   if (kint == 0) {
      Printf(" REQUEST TO CHANGE LIMITS ON FIXED PARAMETER:%3d",i2);
      for (ifx = 1; ifx <= fNpfix; ++ifx) {
         if (i2 == fIpfix[ifx-1]) goto L92;
      }
      Printf(" MINUIT BUG IN MNLIMS. SEE F. JAMES");
L92:
      ;
   }
   if (fWord7[1] != fWord7[2]) goto L235;
//*-*-                                      remove limits
   if (fNvarl[i2-1] != 1) {
      if (fISW[4] > 0) {
         Printf(" LIMITS REMOVED FROM PARAMETER  %2d",i2);
      }
      fCstatu = "NEW LIMITS";
      if (kint <= 0) {
         fGsteps[ifx-1] = TMath::Abs(fGsteps[ifx-1]);
      } else {
         mndxdi(fX[kint-1], kint-1, dxdi);
         if (TMath::Abs(dxdi) < .01) dxdi = .01;
         fGstep[kint-1] = TMath::Abs(fGstep[kint-1]*dxdi);
         fGrd[kint-1]  *= dxdi;
      }
      fNvarl[i2-1] = 1;
   } else {
      Printf(" NO LIMITS SPECIFIED.  PARAMETER %3d IS ALREADY UNLIMITED.  NO CHANGE.",i2);
   }
   goto L900;
//*-*-                                       put on limits
L235:
   fAlim[i2-1]  = TMath::Min(fWord7[1],fWord7[2]);
   fBlim[i2-1]  = TMath::Max(fWord7[1],fWord7[2]);
   fNvarl[i2-1] = 4;
   if (fISW[4] > 0) {
      Printf(" PARAMETER %3d LIMITS SET TO  %15.5g%15.5g",i2,fAlim[i2-1],fBlim[i2-1]);
   }
   fCstatu = "NEW LIMITS";
   if (kint <= 0) fGsteps[ifx-1] = -.1;
   else           fGstep[kint-1] = -.1;

L900:
   if (fCstatu != "NO CHANGE ") {
      mnexin(fX);
      mnrset(1);
   }
} /* mnlims_ */

//______________________________________________________________________________
void TMinuit::mnline(Double_t *start, Double_t fstart, Double_t *step, Double_t slope, Double_t toler)
{
//*-*-*-*-*-*-*-*-*-*Perform a line search from position START*-*-*-*-*-*-*-*
//*-*                =========================================
//*-*        along direction STEP, where the length of vector STEP
//*-*                   gives the expected position of minimum.
//*-*        FSTART is value of function at START
//*-*        SLOPE (if non-zero) is df/dx along STEP at START
//*-*        TOLER is initial tolerance of minimum in direction STEP
//*-*
//*-* SLAMBG and ALPHA control the maximum individual steps allowed.
//*-* The first step is always =1. The max length of second step is SLAMBG.
//*-* The max size of subsequent steps is the maximum previous successful
//*-*   step multiplied by ALPHA + the size of most recent successful step,
//*-*   but cannot be smaller than SLAMBG.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t xpq[12], ypq[12], slam, sdev, coeff[3], denom, flast;
   Double_t fvals[3], xvals[3], f1, fvmin, xvmin, ratio, f2, f3, fvmax;
   Double_t toler8, toler9, overal, undral, slamin, slamax, slopem;
   Int_t i, nparx=0, nvmax=0, nxypt, kk, ipt;
   Bool_t ldebug;
   TString cmess;
   char chpq[13];
   int     l65, l70, l80;

   /* Function Body */
   l65 = 0; l70 = 0; l80 = 0;
   ldebug = fIdbg[1] >= 1;
//*-*-                 starting values for overall limits on total step SLAM
   overal = 1e3;
   undral = -100;
//*-*-                             debug check if start is ok
   if (ldebug) {
      mninex(&start[0]);
      Eval(nparx, fGin, f1, fU, 4);        ++fNfcn;
      if (f1 != fstart) {
         Printf(" MNLINE start point not consistent, F values, parameters=");
         for (kk = 1; kk <= fNpar; ++kk) {
            Printf("  %14.5e",fX[kk-1]);
         }
      }
   }
//*-*-                                     . set up linear search along STEP
   fvmin   = fstart;
   xvmin   = 0;
   nxypt   = 1;
   chpq[0] = charal[0];
   xpq[0]  = 0;
   ypq[0]  = fstart;
//*-*-              SLAMIN = smallest possible value of ABS(SLAM)
   slamin = 0;
   for (i = 1; i <= fNpar; ++i) {
      if (step[i-1] != 0) {
         ratio = TMath::Abs(start[i-1] / step[i-1]);
         if (slamin == 0)    slamin = ratio;
         if (ratio < slamin) slamin = ratio;
      }
      fX[i-1] = start[i-1] + step[i-1];
   }
   if (slamin == 0) slamin = fEpsmac;
   slamin *= fEpsma2;
   nparx = fNpar;

   mninex(fX);
   Eval(nparx, fGin, f1, fU, 4);    ++fNfcn;
   ++nxypt;
   chpq[nxypt-1] = charal[nxypt-1];
   xpq[nxypt-1] = 1;
   ypq[nxypt-1] = f1;
   if (f1 < fstart) {
      fvmin = f1;
      xvmin = 1;
   }
//*-*-                        . quadr interp using slope GDEL and two points
   slam   = 1;
   toler8 = toler;
   slamax = 5;
   flast  = f1;
//*-*-                        can iterate on two-points (cut) if no imprvmnt

   do {
      denom = (flast - fstart - slope*slam)*2 / (slam*slam);
      slam  = 1;
      if (denom != 0)    slam = -slope / denom;
      if (slam < 0)      slam = slamax;
      if (slam > slamax) slam = slamax;
      if (slam < toler8) slam = toler8;
      if (slam < slamin) {
         l80 = 1;
         break;
      }
      if (TMath::Abs(slam - 1) < toler8 && f1 < fstart) {
         l70 = 1;
         break;
      }
      if (TMath::Abs(slam - 1) < toler8) slam = toler8 + 1;
      if (nxypt >= 12) {
         l65 = 1;
         break;
      }
      for (i = 1; i <= fNpar; ++i) { fX[i-1] = start[i-1] + slam*step[i-1]; }
      mninex(fX);
      nparx = fNpar;
      Eval(nparx, fGin, f2, fU, 4);    ++fNfcn;
      ++nxypt;
      chpq[nxypt-1] = charal[nxypt-1];
      xpq[nxypt-1]  = slam;
      ypq[nxypt-1]  = f2;
      if (f2 < fvmin) {
         fvmin = f2;
         xvmin = slam;
      }
      if (fstart == fvmin) {
         flast  = f2;
         toler8 = toler*slam;
         overal = slam - toler8;
         slamax = overal;
      }
   } while (fstart == fvmin);

   if (!l65 && !l70 && !l80) {
//*-*-                                       . quadr interp using 3 points
      xvals[0] = xpq[0];
      fvals[0] = ypq[0];
      xvals[1] = xpq[nxypt-2];
      fvals[1] = ypq[nxypt-2];
      xvals[2] = xpq[nxypt-1];
      fvals[2] = ypq[nxypt-1];
//*-*-                            begin iteration, calculate desired step
      do {
         slamax = TMath::Max(slamax,TMath::Abs(xvmin)*2);
         mnpfit(xvals, fvals, 3, coeff, sdev);
         if (coeff[2] <= 0) {
            slopem = coeff[2]*2*xvmin + coeff[1];
            if (slopem <= 0)  slam = xvmin + slamax;
            else              slam = xvmin - slamax;
         } else {
            slam = -coeff[1] / (coeff[2]*2);
            if (slam > xvmin + slamax) slam = xvmin + slamax;
            if (slam < xvmin - slamax) slam = xvmin - slamax;
         }
         if (slam > 0) {
            if (slam > overal)
               slam = overal;
            else if (slam < undral)
               slam = undral;
         }

//*-*-              come here if step was cut below
         do {
            toler9 = TMath::Max(toler8,TMath::Abs(toler8*slam));
            for (ipt = 1; ipt <= 3; ++ipt) {
               if (TMath::Abs(slam - xvals[ipt-1]) < toler9) {
                  l70 = 1;
                  break;
               }
            }
            if (l70) break;
//*-*-               take the step
            if (nxypt >= 12) {
               l65 = 1;
               break;
            }
            for (i = 1; i <= fNpar; ++i) { fX[i-1] = start[i-1] + slam*step[i-1]; }
            mninex(fX);
            Eval(nparx, fGin, f3, fU, 4);    ++fNfcn;
            ++nxypt;
            chpq[nxypt-1] = charal[nxypt-1];
            xpq[nxypt-1]  = slam;
            ypq[nxypt-1]  = f3;
//*-*-            find worst previous point out of three
            fvmax = fvals[0];
            nvmax = 1;
            if (fvals[1] > fvmax) {
               fvmax = fvals[1];
               nvmax = 2;
            }
            if (fvals[2] > fvmax) {
               fvmax = fvals[2];
               nvmax = 3;
            }
//*-*-             if latest point worse than all three previous, cut step
            if (f3 >= fvmax) {
               if (nxypt >= 12) {
                  l65 = 1;
                  break;
               }
               if (slam > xvmin) overal = TMath::Min(overal,slam - toler8);
               if (slam < xvmin) undral = TMath::Max(undral,slam + toler8);
               slam = (slam + xvmin)*.5;
            }
         } while (f3 >= fvmax);

//*-*-             prepare another iteration, replace worst previous point
         if (l65 || l70) break;

         xvals[nvmax-1] = slam;
         fvals[nvmax-1] = f3;
         if (f3 < fvmin) {
            fvmin = f3;
            xvmin = slam;
         } else {
            if (slam > xvmin) overal = TMath::Min(overal,slam - toler8);
            if (slam < xvmin) undral = TMath::Max(undral,slam + toler8);
         }
      } while (nxypt < 12);
   }

//*-*-                                           . . end of iteration . . .
//*-*-           stop because too many iterations
   if (!l70 && !l80) {
      cmess = " LINE SEARCH HAS EXHAUSTED THE LIMIT OF FUNCTION CALLS ";
      if (ldebug) {
         Printf(" MNLINE DEBUG: steps=");
         for (kk = 1; kk <= fNpar; ++kk) {
            Printf("  %12.4g",step[kk-1]);
         }
      }
   }
//*-*-           stop because within tolerance
   if (l70) cmess = " LINE SEARCH HAS ATTAINED TOLERANCE ";
   if (l80) cmess = " STEP SIZE AT ARITHMETICALLY ALLOWED MINIMUM";

   fAmin = fvmin;
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = step[i-1]*xvmin;
      fX[i-1]     = start[i-1] + fDirin[i-1];
   }
   mninex(fX);
   if (xvmin < 0) {
      mnwarn("D", "MNLINE", " LINE MINIMUM IN BACKWARDS DIRECTION");
   }
   if (fvmin == fstart) {
      mnwarn("D", "MNLINE", " LINE SEARCH FINDS NO IMPROVEMENT ");
   }
   if (ldebug) {
      Printf(" AFTER %3d POINTS,%s",nxypt,(const char*)cmess);
      mnplot(xpq, ypq, chpq, nxypt, fNpagwd, fNpagln);
   }
} /* mnline_ */

//______________________________________________________________________________
void TMinuit::mnmatu(Int_t kode)
{
//*-*-*-*-*-*-*-*Prints the covariance matrix v when KODE=1*-*-*-*-*-*-*-*-*
//*-*            ==========================================
//*-*        always prints the global correlations, and
//*-*        calculates and prints the individual correlation coefficients
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Int_t ndex, i, j, m, n, ncoef, nparm, id, it, ix;
   Int_t nsofar, ndi, ndj, iso, isw2, isw5;
   TString ctemp;

   isw2 = fISW[1];
   if (isw2 < 1) {
      Printf("%s",(const char*)fCovmes[isw2]);
      return;
   }
   if (fNpar == 0) {
      Printf(" MNMATU: NPAR=0");
      return;
   }
//*-*-                                      . . . . .external error matrix
   if (kode == 1) {
      isw5    = fISW[4];
      fISW[4] = 2;
      mnemat(fP, fMaxint);
      if (isw2 < 3) {
         Printf("%s",(const char*)fCovmes[isw2]);
      }
      fISW[4] = isw5;
   }
//*-*-                                      . . . . . correlation coeffs. .
   if (fNpar <= 1) return;
   mnwerr();
//*-*-    NCOEF is number of coeff. that fit on one line, not to exceed 20
   ncoef = (fNpagwd - 19) / 6;
   ncoef = TMath::Min(ncoef,20);
   nparm = TMath::Min(fNpar,ncoef);
   Printf(" PARAMETER  CORRELATION COEFFICIENTS  ");
   ctemp = "       NO.  GLOBAL";
   for (id = 1; id <= nparm; ++id) {
      ctemp += Form(" %6d",fNexofi[id-1]);
   }
   Printf("%s",(const char*)ctemp);
   for (i = 1; i <= fNpar; ++i) {
      ix  = fNexofi[i-1];
      ndi = i*(i + 1) / 2;
      for (j = 1; j <= fNpar; ++j) {
         m    = TMath::Max(i,j);
         n    = TMath::Min(i,j);
         ndex = m*(m-1) / 2 + n;
         ndj  = j*(j + 1) / 2;
         fMATUvline[j-1] = fVhmat[ndex-1] / TMath::Sqrt(TMath::Abs(fVhmat[ndi-1]*fVhmat[ndj-1]));
      }
      nparm = TMath::Min(fNpar,ncoef);
      ctemp = Form("      %3d  %7.5f ",ix,fGlobcc[i-1]);
      for (it = 1; it <= nparm; ++it) {
         ctemp += Form(" %6.3f",fMATUvline[it-1]);
      }
      Printf("%s",(const char*)ctemp);
      if (i <= nparm) continue;
      ctemp = "                   ";
      for (iso = 1; iso <= 10; ++iso) {
         nsofar = nparm;
         nparm  = TMath::Min(fNpar,nsofar + ncoef);
         for (it = nsofar + 1; it <= nparm; ++it) {
            ctemp = ctemp + Form(" %6.3f",fMATUvline[it-1]);
         }
         Printf("%s",(const char*)ctemp);
         if (i <= nparm) break;
      }
   }
   if (isw2 < 3) {
      Printf(" %s",(const char*)fCovmes[isw2]);
   }
} /* mnmatu_ */

//______________________________________________________________________________
void TMinuit::mnmigr()
{
//*-*-*-*-*-*-*-*-*Performs a local function minimization*-*-*-*-*-*-*-*-*-*
//*-*              ======================================
//*-*        Performs a local function minimization using basically the
//*-*        method of Davidon-Fletcher-Powell as modified by Fletcher
//*-*        ref. -- Fletcher, Comp.J. 13,317 (1970)   "switching method"
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t gdel, gami, vlen, dsum, gssq, vsum, d;
   Double_t fzero, fs, ri, delgam, rhotol;
   Double_t gdgssq, gvg, vgi;
   Int_t npfn, ndex, iext, i, j, m, n, npsdf, nparx;
   Int_t iswtr, lined2, kk, nfcnmg, nrstrt,iter;
   Bool_t ldebug;
   Double_t toler = 0.05;

   if (fNpar <= 0) return;
   if (fAmin == fUndefi) mnamin();
   ldebug  = kFALSE; if ( fIdbg[4] >= 1) ldebug = kTRUE;
   fCfrom  = "MIGRAD  ";
   fNfcnfr = fNfcn;
   nfcnmg  = fNfcn;
   fCstatu = "INITIATE  ";
   iswtr   = fISW[4] - 2*fItaur;
   npfn    = fNfcn;
   nparx   = fNpar;
   vlen    = (Double_t) (fNpar*(fNpar + 1) / 2);
   nrstrt  = 0;
   npsdf   = 0;
   lined2  = 0;
   fISW[3] = -1;
   rhotol  = fApsi*.001;
   if (iswtr >= 1) {
      Printf(" START MIGRAD MINIMIZATION.  STRATEGY %2d.  CONVERGENCE WHEN EDM .LT.%9.2e",fIstrat,rhotol);
   }
//*-*-                                          initialization strategy
   if (fIstrat < 2 || fISW[1] >= 3) goto L2;
//*-*-                               come (back) here to restart completely
L1:
   if (nrstrt > fIstrat) {
      fCstatu = "FAILED    ";
      fISW[3] = -1;
      goto L230;
   }
//*-*-                                     . get full covariance and gradient
   mnhess();
   mnwerr();
   npsdf = 0;
   if (fISW[1] >= 1) goto L10;
//*-*-                                       . get gradient at start point
L2:
   mninex(fX);
   if (fISW[2] == 1) {
      Eval(nparx, fGin, fzero, fU, 2);        ++fNfcn;
   }
   mnderi();
   if (fISW[1] >= 1) goto L10;
//*-*-                                  sometimes start with diagonal matrix
   for (i = 1; i <= fNpar; ++i) {
      fMIGRxxs[i-1]  = fX[i-1];
      fMIGRstep[i-1] = 0;
   }
//*-*-                          do line search if second derivative negative
   ++lined2;
   if (lined2 < (fIstrat + 1)*fNpar) {
      for (i = 1; i <= fNpar; ++i) {
         if (fG2[i-1] > 0) continue;
         if (fGrd[i-1] > 0) fMIGRstep[i-1] = -TMath::Abs(fGstep[i-1]);
         else               fMIGRstep[i-1] =  TMath::Abs(fGstep[i-1]);
         gdel = fMIGRstep[i-1]*fGrd[i-1];
         fs   = fAmin;
         mnline(fMIGRxxs, fs, fMIGRstep, gdel, toler);
         mnwarn("D", "MNMIGR", "Negative G2 line search");
         iext = fNexofi[i-1];
         if (ldebug) {
            Printf(" Negative G2 line search, param %3d %13.3g%13.3g",iext,fs,fAmin);
         }
         goto L2;
      }
   }
//*-*-                          make diagonal error matrix
   for (i = 1; i <= fNpar; ++i) {
      ndex = i*(i-1) / 2;
      for (j = 1; j <= i-1; ++j) {
         ++ndex;
         fVhmat[ndex-1] = 0;
      }
      ++ndex;
      if (fG2[i-1] <= 0) fG2[i-1] = 1;
      fVhmat[ndex-1] = 2 / fG2[i-1];
   }
   fDcovar = 1;
   if (ldebug) {
      Printf(" DEBUG MNMIGR, STARTING MATRIX DIAGONAL,  VHMAT=");
      for (kk = 1; kk <= Int_t(vlen); ++kk) {
         Printf(" %10.2g",fVhmat[kk-1]);
      }
   }
//*-*-                                        ready to start first iteration
L10:
   ++nrstrt;
   if (nrstrt > fIstrat + 1) {
      fCstatu = "FAILED    ";
      goto L230;
   }
   fs = fAmin;
//*-*-                                       . . . get EDM and set up loop
   fEDM = 0;
   for (i = 1; i <= fNpar; ++i) {
      fMIGRgs[i-1]  = fGrd[i-1];
      fMIGRxxs[i-1] = fX[i-1];
      ndex     = i*(i-1) / 2;
      for (j = 1; j <= i-1; ++j) {
         ++ndex;
         fEDM += fMIGRgs[i-1]*fVhmat[ndex-1]*fMIGRgs[j-1];
      }
      ++ndex;
      fEDM += fMIGRgs[i-1]*fMIGRgs[i-1]*.5*fVhmat[ndex-1];
   }
   fEDM = fEDM*.5*(fDcovar*3 + 1);
   if (fEDM < 0) {
      mnwarn("W", "MIGRAD", "STARTING MATRIX NOT POS-DEFINITE.");
      fISW[1] = 0;
      fDcovar = 1;
      goto L2;
   }
   if (fISW[1] == 0) fEDM = fBigedm;
   iter = 0;
   mninex(fX);
   mnwerr();
   if (iswtr >= 1) mnprin(3, fAmin);
   if (iswtr >= 2) mnmatu(0);
//*-*-                                       . . . . .  start main loop
L24:
   if (fNfcn - npfn >= fNfcnmx) goto L190;
   gdel = 0;
   gssq = 0;
   for (i = 1; i <= fNpar; ++i) {
      ri = 0;
      gssq += fMIGRgs[i-1]*fMIGRgs[i-1];
      for (j = 1; j <= fNpar; ++j) {
         m    = TMath::Max(i,j);
         n    = TMath::Min(i,j);
         ndex = m*(m-1) / 2 + n;
         ri  += fVhmat[ndex-1]*fMIGRgs[j-1];
      }
      fMIGRstep[i-1] = ri*-.5;
      gdel += fMIGRstep[i-1]*fMIGRgs[i-1];
   }
   if (gssq == 0) {
      mnwarn("D", "MIGRAD", " FIRST DERIVATIVES OF FCN ARE ALL ZERO");
      goto L300;
   }
//*-*-                if gdel positive, V not posdef
   if (gdel >= 0) {
      mnwarn("D", "MIGRAD", " NEWTON STEP NOT DESCENT.");
      if (npsdf == 1) goto L1;
      mnpsdf();
      npsdf = 1;
      goto L24;
   }
//*-*-                                       . . . . do line search
   mnline(fMIGRxxs, fs, fMIGRstep, gdel, toler);
   if (fAmin == fs) goto L200;
   fCfrom  = "MIGRAD  ";
   fNfcnfr = nfcnmg;
   fCstatu = "PROGRESS  ";
//*-*-                                       . get gradient at new point
   mninex(fX);
   if (fISW[2] == 1) {
      Eval(nparx, fGin, fzero, fU, 2);        ++fNfcn;
   }
   mnderi();
//*-*-                                        . calculate new EDM
   npsdf = 0;
L81:
   fEDM = 0;
   gvg = 0;
   delgam = 0;
   gdgssq = 0;
   for (i = 1; i <= fNpar; ++i) {
      ri  = 0;
      vgi = 0;
      for (j = 1; j <= fNpar; ++j) {
         m    = TMath::Max(i,j);
         n    = TMath::Min(i,j);
         ndex = m*(m-1) / 2 + n;
         vgi += fVhmat[ndex-1]*(fGrd[j-1] - fMIGRgs[j-1]);
         ri  += fVhmat[ndex-1]*fGrd[j-1];
      }
      fMIGRvg[i-1] = vgi*.5;
      gami    = fGrd[i-1] - fMIGRgs[i-1];
      gdgssq += gami*gami;
      gvg    += gami*fMIGRvg[i-1];
      delgam += fDirin[i-1]*gami;
      fEDM   += fGrd[i-1]*ri*.5;
   }
   fEDM = fEDM*.5*(fDcovar*3 + 1);
//*-*-                         . if EDM negative,  not positive-definite
   if (fEDM < 0 || gvg <= 0) {
      mnwarn("D", "MIGRAD", "NOT POS-DEF. EDM OR GVG NEGATIVE.");
      fCstatu = "NOT POSDEF";
      if (npsdf == 1) goto L230;
      mnpsdf();
      npsdf = 1;
      goto L81;
   }
//*-*-                           print information about this iteration
   ++iter;
   if (iswtr >= 3 || (iswtr == 2 && iter % 10 == 1)) {
      mnwerr();
      mnprin(3, fAmin);
   }
   if (gdgssq == 0) {
      mnwarn("D", "MIGRAD", "NO CHANGE IN FIRST DERIVATIVES OVER LAST STEP");
   }
   if (delgam < 0) {
      mnwarn("D", "MIGRAD", "FIRST DERIVATIVES INCREASING ALONG SEARCH LINE");
   }
//*-*-                                       .  update covariance matrix
   fCstatu = "IMPROVEMNT";
   if (ldebug) {
      Printf(" VHMAT 1 =");
      for (kk = 1; kk <= 10; ++kk) {
         Printf(" %10.2g",fVhmat[kk-1]);
      }
   }
   dsum = 0;
   vsum = 0;
   for (i = 1; i <= fNpar; ++i) {
      for (j = 1; j <= i; ++j) {
         if(delgam == 0 || gvg == 0) d = 0;
         else d = fDirin[i-1]*fDirin[j-1] / delgam - fMIGRvg[i-1]*fMIGRvg[j-1] / gvg;
         dsum += TMath::Abs(d);
         ndex  = i*(i-1) / 2 + j;
         fVhmat[ndex-1] += d*2;
         vsum += TMath::Abs(fVhmat[ndex-1]);
      }
   }
//*-*-               smooth local fluctuations by averaging DCOVAR
   fDcovar = (fDcovar + dsum / vsum)*.5;
   if (iswtr >= 3 || ldebug) {
      Printf(" RELATIVE CHANGE IN COV. MATRIX=%5.1f per cent",fDcovar*100);
   }
   if (ldebug) {
      Printf(" VHMAT 2 =");
      for (kk = 1; kk <= 10; ++kk) {
         Printf(" %10.3g",fVhmat[kk-1]);
      }
   }
   if (delgam <= gvg) goto L135;
   for (i = 1; i <= fNpar; ++i) {
      fMIGRflnu[i-1] = fDirin[i-1] / delgam - fMIGRvg[i-1] / gvg;
   }
   for (i = 1; i <= fNpar; ++i) {
      for (j = 1; j <= i; ++j) {
         ndex = i*(i-1) / 2 + j;
         fVhmat[ndex-1] += gvg*2*fMIGRflnu[i-1]*fMIGRflnu[j-1];
      }
   }
L135:
//*-*-                                             and see if converged
   if (fEDM < rhotol*.1) goto L300;
//*-*-                                   if not, prepare next iteration
   for (i = 1; i <= fNpar; ++i) {
      fMIGRxxs[i-1] = fX[i-1];
      fMIGRgs[i-1]  = fGrd[i-1];
   }
   fs = fAmin;
   if (fISW[1] == 0 && fDcovar < .5)  fISW[1] = 1;
   if (fISW[1] == 3 && fDcovar > .1)  fISW[1] = 1;
   if (fISW[1] == 1 && fDcovar < .05) fISW[1] = 3;
   goto L24;
//*-*-                                       . . . . .  end main loop
//*-*-                                        . . call limit in MNMIGR
L190:
   fISW[0] = 1;
   if (fISW[4] >= 0) {
      Printf(" CALL LIMIT EXCEEDED IN MIGRAD.");
   }
   fCstatu = "CALL LIMIT";
   goto L230;
//*-*-                                        . . fails to improve . .
L200:
   if (iswtr >= 1) {
      Printf(" MIGRAD FAILS TO FIND IMPROVEMENT");
   }
   for (i = 1; i <= fNpar; ++i) { fX[i-1] = fMIGRxxs[i-1]; }
   if (fEDM < rhotol) goto L300;
   if (fEDM < TMath::Abs(fEpsma2*fAmin)) {
      if (iswtr >= 0) {
         Printf(" MACHINE ACCURACY LIMITS FURTHER IMPROVEMENT.");
      }
      goto L300;
   }
   if (fIstrat < 1) {
      if (fISW[4] >= 0) {
         Printf(" MIGRAD FAILS WITH STRATEGY=0.   WILL TRY WITH STRATEGY=1.");
      }
      fIstrat = 1;
   }
   goto L1;
//*-*-                                        . . fails to converge
L230:
   if (iswtr >= 0) {
      Printf(" MIGRAD TERMINATED WITHOUT CONVERGENCE.");
   }
   if (fISW[1] == 3) fISW[1] = 1;
   fISW[3] = -1;
   goto L400;
//*-*-                                        . . apparent convergence
L300:
   if (iswtr >= 0) {
      Printf(" MIGRAD MINIMIZATION HAS CONVERGED.");
   }
   if (fItaur == 0) {
      if (fIstrat >= 2 || (fIstrat == 1 && fISW[1] < 3)) {
         if (fISW[4] >= 0) {
            Printf(" MIGRAD WILL VERIFY CONVERGENCE AND ERROR MATRIX.");
         }
         mnhess();
         mnwerr();
         npsdf = 0;
         if (fEDM > rhotol) goto L10;
      }
   }
   fCstatu = "CONVERGED ";
   fISW[3] = 1;
//*-*-                                          come here in any case
L400:
   fCfrom  = "MIGRAD  ";
   fNfcnfr = nfcnmg;
   mninex(fX);
   mnwerr();
   if (iswtr >= 0) mnprin(3, fAmin);
   if (iswtr >= 1) mnmatu(1);
} /* mnmigr_ */

//______________________________________________________________________________
void TMinuit::mnmnos()
{
//*-*-*-*-*-*-*-*-*-*-*Performs a MINOS error analysis*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  ===============================
//*-*        Performs a MINOS error analysis on those parameters for
//*-*        which it is requested on the MINOS command by calling
//*-*        MNMNOT for each parameter requested.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t val2mi, val2pl;
   Int_t nbad, ilax, ilax2, ngood, nfcnmi, iin, knt;

   if (fNpar <= 0) goto L700;
   ngood = 0;
   nbad = 0;
   nfcnmi = fNfcn;
//*-*-                                     . loop over parameters requested
   for (knt = 1; knt <= fNpar; ++knt) {
      if (Int_t(fWord7[1]) == 0) {
         ilax = fNexofi[knt-1];
      } else {
         if (knt >= 7) break;
         ilax = Int_t(fWord7[knt]);
         if (ilax == 0) break;
         if (ilax > 0 && ilax <= fNu) {
            if (fNiofex[ilax-1] > 0) goto L565;
         }
         Printf(" PARAMETER NUMBER %3d NOT A VARIABLE. IGNORED.",ilax);
         continue;
      }
L565:
//*-*-                                        calculate one pair of M E s
      ilax2 = 0;
      mnmnot(ilax, ilax2, val2pl, val2mi);
      if (fLnewmn) goto L650;
//*-*-                                         update NGOOD and NBAD
      iin = fNiofex[ilax-1];
      if (fErp[iin-1] > 0) ++ngood;
      else                   ++nbad;
      if (fErn[iin-1] < 0) ++ngood;
      else                   ++nbad;
   }
//*-*-                                          end of loop . . . . . . .
//*-*-                                       . . . . printout final values .
   fCfrom  = "MINOS   ";
   fNfcnfr = nfcnmi;
   fCstatu = "UNCHANGED ";
   if (ngood == 0 && nbad == 0) goto L700;
   if (ngood > 0 && nbad == 0)  fCstatu = "SUCCESSFUL";
   if (ngood == 0 && nbad > 0)  fCstatu = "FAILURE   ";
   if (ngood > 0 && nbad > 0)   fCstatu = "PROBLEMS  ";
   if (fISW[4] >= 0)    mnprin(4, fAmin);
   if (fISW[4] >= 2)    mnmatu(0);
   return;
//*-*-                                       . . . new minimum found . . . .
L650:
   fCfrom  = "MINOS   ";
   fNfcnfr = nfcnmi;
   fCstatu = "NEW MINIMU";
   if (fISW[4] >= 0) mnprin(4, fAmin);
   Printf(" NEW MINIMUM FOUND.  GO BACK TO MINIMIZATION STEP.");
   Printf(" =================================================");
   Printf("                                                  V");
   Printf("                                                  V");
   Printf("                                                  V");
   Printf("                                               VVVVVVV");
   Printf("                                                VVVVV");
   Printf("                                                 VVV");
   Printf("                                                  V");
   Printf("");
   return;
L700:
   Printf(" THERE ARE NO MINOS ERRORS TO CALCULATE.");
} /* mnmnos_ */

//______________________________________________________________________________
void TMinuit::mnmnot(Int_t ilax, Int_t ilax2, Double_t &val2pl, Double_t &val2mi)
{
//*-*-*-*-*-*Performs a MINOS error analysis on one parameter*-*-*-*-*-*-*-*-*
//*-*        ================================================
//*-*        The parameter ILAX is varied, and the minimum of the
//*-*        function with respect to the other parameters is followed
//*-*        until it crosses the value FMIN+UP.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* System generated locals */
   Int_t i__1;

   /* Local variables */
   Double_t delu, aopt, eros;
   Double_t abest, xunit, dc, ut, sigsav, du1;
   Double_t fac, sig, sav;
   Int_t marc, isig, mpar, ndex, imax, indx, ierr, i, j;
   Int_t iercr, it, istrav, nfmxin, nlimit, isw2, isw4;
   TString csig;

//*-*-                                       . . save and prepare start vals
   isw2    = fISW[1];
   isw4    = fISW[3];
   sigsav  = fEDM;
   istrav  = fIstrat;
   dc      = fDcovar;
   fLnewmn = kFALSE;
   fApsi   = fEpsi*.5;
   abest   = fAmin;
   mpar    = fNpar;
   nfmxin  = fNfcnmx;
   for (i = 1; i <= mpar; ++i) { fXt[i-1] = fX[i-1]; }
   i__1 = mpar*(mpar + 1) / 2;
   for (j = 1; j <= i__1; ++j) { fVthmat[j-1] = fVhmat[j-1]; }
   for (i = 1; i <= mpar; ++i) {
      fMNOTgcc[i-1] = fGlobcc[i-1];
      fMNOTw[i-1]   = fWerr[i-1];
   }
   it = fNiofex[ilax-1];
   fErp[it-1] = 0;
   fErn[it-1] = 0;
   mninex(fXt);
   ut = fU[ilax-1];
   if (fNvarl[ilax-1] == 1) {
      fAlim[ilax-1] = ut - fMNOTw[it-1]*100;
      fBlim[ilax-1] = ut + fMNOTw[it-1]*100;
   }
   ndex  = it*(it + 1) / 2;
   xunit = TMath::Sqrt(fUp / fVthmat[ndex-1]);
   marc  = 0;
   for (i = 1; i <= mpar; ++i) {
      if (i == it) continue;
      ++marc;
      imax = TMath::Max(it,i);
      indx = imax*(imax-1) / 2 + TMath::Min(it,i);
      fMNOTxdev[marc-1] = xunit*fVthmat[indx-1];
   }
//*-*-                          fix the parameter in question
   mnfixp(it-1, ierr);
   if (ierr > 0) {
      Printf(" MINUIT ERROR. CANNOT FIX PARAMETER %4d   INTERNAL %3d",ilax,it);
      goto L700;
   }
//*-*-                      . . . . . Nota Bene: from here on, NPAR=MPAR-1
//*-*-     Remember: MNFIXP squeezes IT out of X, XT, WERR, and VHMAT,
//*-*-                                                   not W, VTHMAT
   for (isig = 1; isig <= 2; ++isig) {
      if (isig == 1) {
         sig  = 1;
         csig = "POSI";
      } else {
         sig  = -1;
         csig = "NEGA";
      }
//*-*-                                       . sig=sign of error being calcd
      if (fISW[4] > 1) {
         Printf(" DETERMINATION OF %sTIVE MINOS ERROR FOR PARAMETER %d"
                            ,(const char*)csig,ilax
                            ,(const char*)fCpnam[ilax-1]);
      }
      if (fISW[1] <= 0) {
            mnwarn("D", "MINOS", "NO COVARIANCE MATRIX.");
      }
      nlimit     = fNfcn + nfmxin;
      fIstrat    = TMath::Max(istrav-1,0);
      du1        = fMNOTw[it-1];
      fU[ilax-1] = ut + sig*du1;
      fU[ilax-1] = TMath::Min(fU[ilax-1],fBlim[ilax-1]);
      fU[ilax-1] = TMath::Max(fU[ilax-1],fAlim[ilax-1]);
      delu = fU[ilax-1] - ut;
//*-*-        stop if already at limit with negligible step size
      if (TMath::Abs(delu) / (TMath::Abs(ut) + TMath::Abs(fU[ilax-1])) < fEpsmac) goto L440;
      fac = delu / fMNOTw[it-1];
      for (i = 1; i <= fNpar; ++i) {
         fX[i-1] = fXt[i-1] + fac*fMNOTxdev[i-1];
      }
      if (fISW[4] > 1) {
         Printf(" PARAMETER %4d SET TO%11.3e + %10.3e = %12.3e",ilax,ut,delu,fU[ilax-1]);
      }
//*-*-                                       loop to hit AMIN+UP
      fKe1cr  = ilax;
      fKe2cr  = 0;
      fXmidcr = fU[ilax-1];
      fXdircr = delu;

      fAmin = abest;
      fNfcnmx = nlimit - fNfcn;
      mncros(aopt, iercr);
      if (abest - fAmin > fUp*.01) goto L650;
      if (iercr == 1) goto L440;
      if (iercr == 2) goto L450;
      if (iercr == 3) goto L460;
//*-*-                                       . error successfully calculated
      eros = fXmidcr - ut + aopt*fXdircr;
      if (fISW[4] > 1) {
         Printf("        THE %4sTIVE MINOS ERROR OF PARAMETER %3d  %10s, IS %12.4e"
                           ,(const char*)csig,ilax
                           ,(const char*)fCpnam[ilax-1],eros);
      }
      goto L480;
//*-*-                                       . . . . . . . . failure returns
L440:
      if (fISW[4] >= 1) {
         Printf("    THE %4sTIVE MINOS ERROR OF PARAMETER %3d, %s EXCEEDS ITS LIMIT."
                              ,(const char*)csig,ilax
                              ,(const char*)fCpnam[ilax-1]);
      }
      eros = fUndefi;
      goto L480;
L450:
      if (fISW[4] >= 1) {
         Printf("       THE %4sTIVE MINOS ERROR %4d REQUIRES MORE THAN %5d FUNCTION CALLS."
                         ,(const char*)csig,ilax,nfmxin);
      }
      eros = 0;
      goto L480;
L460:
      if (fISW[4] >= 1) {
         Printf("                         %4sTIVE MINOS ERROR NOT CALCULATED FOR PARAMETER %d"
                         ,(const char*)csig,ilax);
      }
      eros = 0;

L480:
      if (fISW[4] > 1) {
         Printf("     **************************************************************************");
      }
      if (sig < 0) {
         fErn[it-1] = eros;
         if (ilax2 > 0 && ilax2 <= fNu) val2mi = fU[ilax2-1];
      } else {
         fErp[it-1] = eros;
         if (ilax2 > 0 && ilax2 <= fNu) val2pl = fU[ilax2-1];
      }
   }
//*-*-                                       . . parameter finished. reset v
//*-*-                      normal termination */
   fItaur = 1;
   mnfree(1);
   i__1 = mpar*(mpar + 1) / 2;
   for (j = 1; j <= i__1; ++j) { fVhmat[j-1] = fVthmat[j-1]; }
   for (i = 1; i <= mpar; ++i) {
      fWerr[i-1]   = fMNOTw[i-1];
      fGlobcc[i-1] = fMNOTgcc[i-1];
      fX[i-1]      = fXt[i-1];
   }
   mninex(fX);
   fEDM    = sigsav;
   fAmin   = abest;
   fISW[1] = isw2;
   fISW[3] = isw4;
   fDcovar = dc;
   goto L700;
//*-*-                      new minimum
L650:
   fLnewmn = kTRUE;
   fISW[1] = 0;
   fDcovar = 1;
   fISW[3] = 0;
   sav     = fU[ilax-1];
   fItaur  = 1;
   mnfree(1);
   fU[ilax-1] = sav;
   mnexin(fX);
   fEDM = fBigedm;
//*-*-                      in any case
L700:
   fItaur  = 0;
   fNfcnmx = nfmxin;
   fIstrat = istrav;
} /* mnmnot_ */

//______________________________________________________________________________
void TMinuit::mnparm(Int_t k1, TString cnamj, Double_t uk, Double_t wk, Double_t a, Double_t b, Int_t &ierflg)
{
//*-*-*-*-*-*-*-*-*Implements one parameter definition*-*-*-*-*-*-*-*-*-*-*-*
//*-*              ===================================
//*-*        Called from MNPARS and user-callable
//*-*    Implements one parameter definition, that is:
//*-*          K     (external) parameter number
//*-*          CNAMK parameter name
//*-*          UK    starting value
//*-*          WK    starting step size or uncertainty
//*-*          A, B  lower and upper physical parameter limits
//*-*    and sets up (updates) the parameter lists.
//*-*    Output: IERFLG=0 if no problems
//*-*                  >0 if MNPARM unable to implement definition
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t vplu, a_small, gsmin, pinti, vminu, danger, sav, sav2;
   Int_t ierr, kint, in, ix, ktofix, lastin, kinfix, nvl;
   TString cnamk, chbufi;

   Int_t k = k1+1;
   cnamk   = cnamj;
   kint    = fNpar;
   if (k < 1 || k > fMaxext) {
//*-*-                    parameter number exceeds allowed maximum value
      Printf(" MINUIT USER ERROR.  PARAMETER NUMBER IS %3d  ALLOWED RANGE IS ONE TO %4d",k,fMaxext);
      goto L800;
   }
//*-*-                    normal parameter request
   ktofix = 0;
   if (fNvarl[k-1] < 0) goto L50;
//*-*-        previously defined parameter is being redefined
//*-*-                                    find if parameter was fixed
   for (ix = 1; ix <= fNpfix; ++ix) {
      if (fIpfix[ix-1] == k) ktofix = k;
   }
   if (ktofix > 0) {
      mnwarn("W", "PARAM DEF", "REDEFINING A FIXED PARAMETER.");
      if (kint >= fMaxint) {
         Printf(" CANNOT RELEASE. MAX NPAR EXCEEDED.");
         goto L800;
      }
      mnfree(-k);
   }
//*-*-                      if redefining previously variable parameter
   if (fNiofex[k-1] > 0) kint = fNpar - 1;
L50:

//*-*-                                     . . .print heading
   if (fLphead && fISW[4] >= 0) {
      Printf(" PARAMETER DEFINITIONS:");
      Printf("    NO.   NAME         VALUE      STEP SIZE      LIMITS");
      fLphead = kFALSE;
   }
   if (wk > 0) goto L122;
//*-*-                                       . . .constant parameter . . . .
   if (fISW[4] >= 0) {
      Printf(" %5d %-10s %13.5e  constant",k,(const char*)cnamk,uk);
   }
   nvl = 0;
   goto L200;
L122:
   if (a == 0 && b == 0) {
//*-*-                                     variable parameter without limits
      nvl = 1;
      if (fISW[4] >= 0) {
         Printf(" %5d %-10s %13.5e%13.5e     no limits",k,(const char*)cnamk,uk,wk);
      }
   } else {
//*-*-                                        variable parameter with limits
      nvl = 4;
      fLnolim = kFALSE;
      if (fISW[4] >= 0) {
         Printf(" %5d %-10s %13.5e%13.5e  %13.5e%13.5e",k,(const char*)cnamk,uk,wk,a,b);
      }
   }
//*-*-                            . . request for another variable parameter
   ++kint;
   if (kint > fMaxint) {
      Printf(" MINUIT USER ERROR.   TOO MANY VARIABLE PARAMETERS.");
      goto L800;
   }
   if (nvl == 1) goto L200;
   if (a == b) {
      Printf(" USER ERROR IN MINUIT PARAMETER");
      Printf(" DEFINITION");
      Printf(" UPPER AND LOWER LIMITS EQUAL.");
      goto L800;
   }
   if (b < a) {
      sav = b;
      b = a;
      a = sav;
      mnwarn("W", "PARAM DEF", "PARAMETER LIMITS WERE REVERSED.");
      if (fLwarn) fLphead = kTRUE;
   }
   if (b - a > 1e7) {
      mnwarn("W", "PARAM DEF", Form("LIMITS ON PARAM%d TOO FAR APART.",k));
      if (fLwarn) fLphead = kTRUE;
   }
   danger = (b - uk)*(uk - a);
   if (danger < 0) {
      mnwarn("W", "PARAM DEF", "STARTING VALUE OUTSIDE LIMITS.");
   }
   if (danger == 0) {
      mnwarn("W", "PARAM DEF", "STARTING VALUE IS AT LIMIT.");
   }
L200:
//*-*-                          . . . input OK, set values, arrange lists,
//*-*-                                   calculate step sizes GSTEP, DIRIN
   fCfrom      = "PARAMETR";
   fNfcnfr     = fNfcn;
   fCstatu     = "NEW VALUES";
   fNu         = TMath::Max(fNu,k);
   fCpnam[k-1] = cnamk;
   fU[k-1]     = uk;
   fAlim[k-1]  = a;
   fBlim[k-1]  = b;
   fNvarl[k-1] = nvl;
   mnrset(1);
//*-*-                            K is external number of new parameter
//*-*-          LASTIN is the number of var. params with ext. param. no.< K
   lastin = 0;
   for (ix = 1; ix <= k-1; ++ix) { if (fNiofex[ix-1] > 0) ++lastin; }
//*-*-                KINT is new number of variable params, NPAR is old
   if (kint == fNpar) goto L280;
   if (kint > fNpar) {
//*-*-                         insert new variable parameter in list
      for (in = fNpar; in >= lastin + 1; --in) {
         ix            = fNexofi[in-1];
         fNiofex[ix-1] = in + 1;
         fNexofi[in]   = ix;
         fX[in]        = fX[in-1];
         fXt[in]       = fXt[in-1];
         fDirin[in]    = fDirin[in-1];
         fG2[in]       = fG2[in-1];
         fGstep[in]    = fGstep[in-1];
         fWerr[in]     = fWerr[in-1];
         fGrd[in]      = fGrd[in-1];
      }
   } else {
//*-*-                         remove variable parameter from list
      for (in = lastin + 1; in <= kint; ++in) {
         ix            = fNexofi[in];
         fNiofex[ix-1] = in;
         fNexofi[in-1] = ix;
         fX[in-1]      = fX[in];
         fXt[in-1]     = fXt[in];
         fDirin[in-1]  = fDirin[in];
         fG2[in-1]     = fG2[in];
         fGstep[in-1]  = fGstep[in];
         fWerr[in-1]   = fWerr[in];
         fGrd[in-1]    = fGrd[in];
      }
   }
L280:
   ix = k;
   fNiofex[ix-1] = 0;
   fNpar = kint;
//*-*-                                      lists are now arranged . . . .
   if (nvl > 0) {
      in            = lastin + 1;
      fNexofi[in-1] = ix;
      fNiofex[ix-1] = in;
      sav           = fU[ix-1];
      mnpint(sav, ix-1, pinti);
      fX[in-1]    = pinti;
      fXt[in-1]   = fX[in-1];
      fWerr[in-1] = wk;
      sav2        = sav + wk;
      mnpint(sav2, ix-1, pinti);
      vplu = pinti - fX[in-1];
      sav2 = sav - wk;
      mnpint(sav2, ix-1, pinti);
      vminu = pinti - fX[in-1];
      fDirin[in-1] = (TMath::Abs(vplu) + TMath::Abs(vminu))*.5;
      fG2[in-1] = fUp*2 / (fDirin[in-1]*fDirin[in-1]);
      gsmin = fEpsma2*8*TMath::Abs(fX[in-1]);
      fGstep[in-1] = TMath::Max(gsmin,fDirin[in-1]*.1);
      if (fAmin != fUndefi) {
         a_small      = TMath::Sqrt(fEpsma2*(fAmin + fUp) / fUp);
         fGstep[in-1] = TMath::Max(gsmin,a_small*fDirin[in-1]);
      }
      fGrd[in-1] = fG2[in-1]*fDirin[in-1];
//*-*-                  if parameter has limits
      if (fNvarl[k-1] > 1) {
         if (fGstep[in-1] > .5) fGstep[in-1] = .5;
         fGstep[in-1] = -fGstep[in-1];
      }
   }
   if (ktofix > 0) {
      kinfix = fNiofex[ktofix-1];
      if (kinfix > 0) mnfixp(kinfix-1, ierr);
      if (ierr > 0)   goto L800;
   }
   ierflg = 0;
   return;
//*-*-                  error on input, unable to implement request  . . . .
L800:
   ierflg = 1;
} /* mnparm_ */

//______________________________________________________________________________
void TMinuit::mnpars(TString &crdbuf, Int_t &icondn)
{
//*-*-*-*-*-*-*-*Implements one parameter definition*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*            =========== =======================
//*-*        Called from MNREAD and user-callable
//*-*    Implements one parameter definition, that is:
//*-*       parses the string CRDBUF and calls MNPARM
//*-*
//*-* output conditions:
//*-*        ICONDN = 0    all OK
//*-*        ICONDN = 1    error, attempt to define parameter is ignored
//*-*        ICONDN = 2    end of parameter definitions
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t a=0, b=0, fk=0, uk=0, wk=0, xk=0;
   Int_t ierr, kapo1, kapo2;
   Int_t k, llist, ibegin, lenbuf, istart, lnc, icy;
   TString cnamk, comand, celmnt, ctemp;
   char stmp[128];

   lenbuf = strlen((const char*)crdbuf);
//*-*-                    find out whether fixed or free-field format
   kapo1 = strspn((const char*)crdbuf, "'");
   if (kapo1 == 0) goto L150;
   kapo2 = strspn((const char*)crdbuf + kapo1, "'");
   if (kapo2 == 0) goto L150;
//*-*-         new (free-field) format
   kapo2 += kapo1;
//*-*-                            skip leading blanks if any
   for (istart = 1; istart <= kapo1-1; ++istart) {
      if (crdbuf(istart-1,1) != ' ') goto L120;
   }
   goto L210;
L120:
//*-*-                              parameter number integer
   celmnt = crdbuf(istart-1, kapo1-istart);
   scanf((const char*)celmnt,&fk);
   k = Int_t(fk);
   if (k <= 0) goto L210;
   cnamk = "PARAM " + celmnt;
   if (kapo2 - kapo1 > 1) {
      cnamk = crdbuf(kapo1, kapo2-1-kapo1);
   }
//*-*  special handling if comma or blanks and a comma follow 'name'
   for (icy = kapo2 + 1; icy <= lenbuf; ++icy) {
      if (crdbuf(icy-1,1) == ',') goto L139;
      if (crdbuf(icy-1,1) != ' ') goto L140;
   }
   uk = 0;
   wk = 0;
   a  = 0;
   b  = 0;
   goto L170;
L139:
   ++icy;
L140:
   ibegin = icy;
   ctemp = crdbuf(ibegin-1,lenbuf-ibegin);
   mncrck(ctemp, 20, comand, lnc, fMaxpar, fPARSplist, llist, ierr, fIsyswr);
   if (ierr > 0) goto L180;
   uk = fPARSplist[0];
   wk = 0;
   if (llist >= 2) wk = fPARSplist[1];
   a = 0;
   if (llist >= 3) a = fPARSplist[2];
   b = 0;
   if (llist >= 4) b = fPARSplist[3];
   goto L170;
//*-*-         old (fixed-field) format
L150:
   scanf((const char*)crdbuf,&xk,stmp,&uk,&wk,&a,&b);
   cnamk = stmp;
   k = Int_t(xk);
   if (k == 0)    goto L210;
//*-*-         parameter format cracked, implement parameter definition
L170:
   mnparm(k-1, cnamk, uk, wk, a, b, ierr);
   icondn = ierr;
   return;
//*-*-         format or other error
L180:
   icondn = 1;
   return;
//*-*-       end of data
L210:
   icondn = 2;
} /* mnpars_ */

//______________________________________________________________________________
void TMinuit::mnpfit(Double_t *parx2p, Double_t *pary2p, Int_t npar2p, Double_t *coef2p, Double_t &sdev2p)
{
//*-*-*-*-*-*-*-*-*-*To fit a parabola to npar2p points*-*-*-*-*-*-*-*-*-*-*
//*-*                ==================================
//*-*   npar2p   no. of points
//*-*   parx2p(i)   x value of point i
//*-*   pary2p(i)   y value of point i
//*-*
//*-*   coef2p(1...3)  coefficients of the fitted parabola
//*-*   y=coef2p(1) + coef2p(2)*x + coef2p(3)*x**2
//*-*   sdev2p= variance
//*-*   method : chi**2 = min equation solved explicitly
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t a, f, s, t, y, s2, x2, x3, x4, y2, cz[3], xm, xy, x2y;
   x2 = x3 = 0;
   Int_t i;

   /* Parameter adjustments */
   --coef2p;
   --pary2p;
   --parx2p;

   /* Function Body */
   for (i = 1; i <= 3; ++i) { cz[i-1] = 0; }
   sdev2p = 0;
   if (npar2p < 3) goto L10;
   f = (Double_t) (npar2p);
//*-* --- center x values for reasons of machine precision
   xm  = 0;
   for (i = 1; i <= npar2p; ++i) { xm += parx2p[i]; }
   xm /= f;
   x2  = 0;
   x3  = 0;
   x4  = 0;
   y   = 0;
   y2  = 0;
   xy  = 0;
   x2y = 0;
   for (i = 1; i <= npar2p; ++i) {
      s    = parx2p[i] - xm;
      t    = pary2p[i];
      s2   = s*s;
      x2  += s2;
      x3  += s*s2;
      x4  += s2*s2;
      y   += t;
      y2  += t*t;
      xy  += s*t;
      x2y += s2*t;
   }
   a = (f*x4 - x2*x2)*x2 - f*(x3*x3);
   if (a == 0) goto L10;
   cz[2] = (x2*(f*x2y - x2*y) - f*x3*xy) / a;
   cz[1] = (xy - x3*cz[2]) / x2;
   cz[0] = (y - x2*cz[2]) / f;
   if (npar2p == 3) goto L6;
   sdev2p = y2 - (cz[0]*y + cz[1]*xy + cz[2]*x2y);
   if (sdev2p < 0) sdev2p = 0;
   sdev2p /= f - 3;
L6:
   cz[0] += xm*(xm*cz[2] - cz[1]);
   cz[1] -= xm*2*cz[2];
L10:
   for (i = 1; i <= 3; ++i) { coef2p[i] = cz[i-1]; }
} /* mnpfit_ */

//______________________________________________________________________________
void TMinuit::mnpint(Double_t &pexti, Int_t i1, Double_t &pinti)
{
//*-*-*-*-*-*-*Calculates the internal parameter value PINTI*-*-*-*-*-*-*-*
//*-*          =============================================
//*-*        corresponding  to the external value PEXTI for parameter I.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t a, alimi, blimi, yy, yy2;
   Int_t igo;
   TString chbuf2, chbufi;

   Int_t i = i1+1;
   pinti   = pexti;
   igo     = fNvarl[i-1];
   if (igo == 4) {
//*-* --                          there are two limits
      alimi = fAlim[i-1];
      blimi = fBlim[i-1];
      yy = (pexti - alimi)*2 / (blimi - alimi) - 1;
      yy2 = yy*yy;
      if (yy2 >= 1 - fEpsma2) {
         if (yy < 0) {
            a      = fVlimlo;
            chbuf2 = " IS AT ITS LOWER ALLOWED LIMIT.";
         } else {
            a      = fVlimhi;
            chbuf2 = " IS AT ITS UPPER ALLOWED LIMIT.";
         }
         pinti   = a;
         pexti   = alimi + (blimi - alimi)*.5*(TMath::Sin(a) + 1);
         fLimset = kTRUE;
         if (yy2 > 1) chbuf2 = " BROUGHT BACK INSIDE LIMITS.";
         mnwarn("W", fCfrom, Form("VARIABLE%d%s",i,chbuf2.Data()));
      } else {
         pinti = TMath::ASin(yy);
      }
   }
} /* mnpint_ */

//______________________________________________________________________________
void TMinuit::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*-*-*-*-*
 //*-*    ===========================================================
 //*-*        NXYPT is the number of points to be plotted
 //*-*        XPT(I) = x-coord. of ith point
 //*-*        YPT(I) = y-coord. of ith point
 //*-*        CHPT(I) = character to be plotted at this position
 //*-*        the input point arrays XPT, YPT, CHPT are destroyed.
 //*-*
 //*-*
 //*-*   If fGraphicsmode is true (default), a TGraph object is produced
 //*-*   via the Plug-in handler. To get the plot, you can do:
 //*-*       TGraph *gr = (TGraph*)gMinuit->GetPlot();
 //*-*       gr->Draw("al");
 //*-*
 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*


   if (fGraphicsMode) {
      TPluginHandler *h;
      if ((h = gROOT->GetPluginManager()->FindHandler("TMinuitGraph"))) {
         //remove the first two points
         if (h->LoadPlugin() != -1)
         fPlot = (TObject*)h->ExecPlugin(3,nxypt-2,&xpt[2],&ypt[2]);
      }
      return;
   }

   static TString cdot   = ".";
   static TString cslash = "/";

   /* Local variables */
   Double_t xmin, ymin, xmax, ymax, savx, savy, yprt;
   Double_t bwidx, bwidy, xbest, ybest, ax, ay, bx, by;
   Double_t xvalus[12], any, dxx, dyy;
   Int_t iten, i, j, k, maxnx, maxny, iquit, ni, linodd;
   Int_t nxbest, nybest, km1, ibk, isp1, nx, ny, ks, ix;
   TString chmess, ctemp;
   Bool_t overpr;
   char cline[120];
   char chsav, chbest;

   /* Function Body */
 //*-*  Computing MIN
   maxnx = TMath::Min(npagwd-20,100);
   if (maxnx < 10) maxnx = 10;
   maxny = npagln;
   if (maxny < 10) maxny = 10;
   if (nxypt <= 1) return;
   xbest  = xpt[0];
   ybest  = ypt[0];
   chbest = chpt[0];
 //*-*-        order the points by decreasing y
   km1 = nxypt - 1;
   for (i = 1; i <= km1; ++i) {
      iquit = 0;
      ni    = nxypt - i;
      for (j = 1; j <= ni; ++j) {
         if (ypt[j-1] > ypt[j]) continue;
         savx     = xpt[j-1];
         xpt[j-1] = xpt[j];
         xpt[j]   = savx;
         savy     = ypt[j-1];
         ypt[j-1] = ypt[j];
         ypt[j]   = savy;
         chsav    = chpt[j-1];
         chpt[j-1]= chpt[j];
         chpt[j]  = chsav;
         iquit    = 1;
      }
      if (iquit == 0) break;
   }
 //*-*-        find extreme values
   xmax = xpt[0];
   xmin = xmax;
   for (i = 1; i <= nxypt; ++i) {
      if (xpt[i-1] > xmax) xmax = xpt[i-1];
      if (xpt[i-1] < xmin) xmin = xpt[i-1];
   }
   dxx   = (xmax - xmin)*.001;
   xmax += dxx;
   xmin -= dxx;
   mnbins(xmin, xmax, maxnx, xmin, xmax, nx, bwidx);
   ymax = ypt[0];
   ymin = ypt[nxypt-1];
   if (ymax == ymin) ymax = ymin + 1;
   dyy   = (ymax - ymin)*.001;
   ymax += dyy;
   ymin -= dyy;
   mnbins(ymin, ymax, maxny, ymin, ymax, ny, bwidy);
   any = (Double_t) ny;
 //*-*-        if first point is blank, it is an 'origin'
   if (chbest == ' ') goto L50;
   xbest = (xmax + xmin)*.5;
   ybest = (ymax + ymin)*.5;
L50:
 //*-*-        find scale constants
   ax = 1 / bwidx;
   ay = 1 / bwidy;
   bx = -ax*xmin + 2;
   by = -ay*ymin - 2;
 //*-*-        convert points to grid positions
   for (i = 1; i <= nxypt; ++i) {
      xpt[i-1] = ax*xpt[i-1] + bx;
      ypt[i-1] = any - ay*ypt[i-1] - by;
   }
   nxbest = Int_t((ax*xbest + bx));
   nybest = Int_t((any - ay*ybest - by));
 //*-*-        print the points
   ny += 2;
   nx += 2;
   isp1 = 1;
   linodd = 1;
   overpr = kFALSE;
   for (i = 1; i <= ny; ++i) {
      for (ibk = 1; ibk <= nx; ++ibk) { cline[ibk-1] = ' '; }
      cline[nx] = '\0';
      cline[nx+1] = '\0';
      cline[0]        = '.';
      cline[nx-1]     = '.';
      cline[nxbest-1] = '.';
      if (i != 1 && i != nybest && i != ny) goto L320;
      for (j = 1; j <= nx; ++j) { cline[j-1] = '.'; }
L320:
      yprt = ymax - Double_t(i-1)*bwidy;
      if (isp1 > nxypt) goto L350;
 //*-*-        find the points to be plotted on this line
      for (k = isp1; k <= nxypt; ++k) {
         ks = Int_t(ypt[k-1]);
         if (ks > i) goto L345;
         ix = Int_t(xpt[k-1]);
         if (cline[ix-1] == '.')   goto L340;
         if (cline[ix-1] == ' ') goto L340;
         if (cline[ix-1] == chpt[k-1])   continue;
         overpr = kTRUE;
 //*-*-        OVERPR is true if one or more positions contains more than
 //*-*-           one point
         cline[ix-1] = '&';
         continue;
L340:
         cline[ix-1] = chpt[k-1];
      }
      isp1 = nxypt + 1;
      goto L350;
L345:
      isp1 = k;
L350:
      if (linodd == 1 || i == ny) goto L380;
      linodd = 1;
      ctemp  = cline;
      Printf("                  %s",(const char*)ctemp);
      goto L400;
L380:
      ctemp = cline;
      Printf(" %14.7g ..%s",yprt,(const char*)ctemp);
      linodd = 0;
L400:
      ;
   }
 //*-*-        print labels on x-axis every ten columns
   for (ibk = 1; ibk <= nx; ++ibk) {
      cline[ibk-1] = ' ';
      if (ibk % 10 == 1) cline[ibk-1] = '/';
   }
   Printf("                  %s",cline);

   for (ibk = 1; ibk <= 12; ++ibk) {
      xvalus[ibk-1] = xmin + Double_t(ibk-1)*10*bwidx;
   }
   printf("           ");
   iten = (nx + 9) / 10;
   for (ibk = 1; ibk <= iten; ++ibk) {
      Printf(" %9.4g", xvalus[ibk-1]);
   }
   chmess = " ";
   if (overpr) chmess = "   Overprint character is &";
   Printf("                         ONE COLUMN=%13.7g%s",bwidx,(const char*)chmess);
} /* mnplot_ */

//______________________________________________________________________________
void TMinuit::mnpout(Int_t iuext1, 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*-*-*
//*-*    ================================================================
//*-*          of parameter number IUEXT. Namely, it returns:
//*-*        CHNAM: the name of the parameter
//*-*        VAL: the current (external) value of the parameter
//*-*        ERR: the current estimate of the parameter uncertainty
//*-*        XLOLIM: the lower bound (or zero if no limits)
//*-*        XUPLIM: the upper bound (or zero if no limits)
//*-*        IUINT: the internal parameter number (or zero if not variable,
//*-*           or negative if undefined).
//*-*  Note also:  If IUEXT is negative, then it is -internal parameter
//*-*           number, and IUINT is returned as the EXTERNAL number.
//*-*     Except for IUINT, this is exactly the inverse of MNPARM
//*-*     User-called
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Int_t iint, iext, nvl;

   Int_t iuext = iuext1 + 1;
   xlolim = 0;
   xuplim = 0;
   err    = 0;
   if (iuext == 0) goto L100;
   if (iuext < 0) {
//*-*-                  internal parameter number specified
      iint  = -(iuext);
      if (iint > fNpar) goto L100;
      iext  = fNexofi[iint-1];
      iuint = iext;
   } else {
//*-*-                   external parameter number specified
      iext = iuext;
      if (iext == 0) goto L100;
      if (iext > fNu) goto L100;
      iint  = fNiofex[iext-1];
      iuint = iint;
   }
//*-*-                    in both cases
   nvl = fNvarl[iext-1];
   if (nvl < 0) goto L100;
   chnam = fCpnam[iext-1];
   val   = fU[iext-1];
   if (iint > 0) err = fWerr[iint-1];
   if (nvl == 4) {
      xlolim = fAlim[iext-1];
      xuplim = fBlim[iext-1];
   }
   return;
//*-*-               parameter is undefined
L100:
   iuint = -1;
   chnam = "undefined";
   val = 0;
} /* mnpout_ */

//______________________________________________________________________________
void TMinuit::mnprin(Int_t inkode, Double_t fval)
{
//*-*-*-*Prints the values of the parameters at the time of the call*-*-*-*-*
//*-*    ===========================================================
//*-*        also prints other relevant information such as function value,
//*-*        estimated distance to minimum, parameter errors, step sizes.
//*-*
//*-*         According to the value of IKODE, the printout is:/
//*-*    IKODE=INKODE= 0    only info about function value
//*-*                  1    parameter values, errors, limits
//*-*                  2    values, errors, step sizes, internal values
//*-*                  3    values, errors, step sizes, first derivs.
//*-*                  4    values, parabolic errors, MINOS errors
//*-*    when INKODE=5, MNPRIN chooses IKODE=1,2, or 3, according to fISW[1]
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   static TString cblank = "           ";
   static TString cnambf = "           ";

   /* Local variables */
   Double_t dcmax, x1, x2, x3, dc;
   x2 = x3 = 0;
   Int_t nadd, i, k, l, m, ikode, ic, nc, ntrail, lbl;
   TString chedm;
   TString colhdl[6], colhdu[6], cx2, cx3, cheval;

   if (fNu == 0) {
      Printf(" THERE ARE CURRENTLY NO PARAMETERS DEFINED");
      return;
   }
//*-*-                 get value of IKODE based in INKODE, fISW[1]
   ikode = inkode;
   if (inkode == 5) {
      ikode = fISW[1] + 1;
      if (ikode > 3) ikode = 3;
   }
//*-*-                 set 'default' column headings
   for (k = 1; k <= 6; ++k) {
      colhdu[k-1] = "UNDEFINED";
      colhdl[k-1] = "COLUMN HEAD";
   }
//*-*-             print title if Minos errors, and title exists.
   if (ikode == 4 && fCtitl != fCundef) {
      Printf(" MINUIT TASK: %s",(const char*)fCtitl);
   }
//*-*-             report function value and status
   if (fval == fUndefi) cheval = " unknown       ";
   else                 cheval = Form("%g",fval);

   if (fEDM == fBigedm) chedm = " unknown  ";
   else                 chedm = Form("%g",fEDM);

   nc = fNfcn - fNfcnfr;
   Printf(" FCN=%s FROM %8s  STATUS=%10s %6d CALLS   %9d TOTAL"
               ,(const char*)cheval
               ,(const char*)fCfrom
               ,(const char*)fCstatu,nc,fNfcn);
   m = fISW[1];
   if (m == 0 || m == 2 || fDcovar == 0) {
      Printf("                     EDM=%s    STRATEGY=%2d      %s"
                      ,(const char*)chedm,fIstrat
                      ,(const char*)fCovmes[m]);
   } else {
      dcmax = 1;
      dc    = TMath::Min(fDcovar,dcmax)*100;
      Printf("                     EDM=%s    STRATEGY=%2d  ERROR MATRIX UNCERTAINTY %5.1f per cent"
                      ,(const char*)chedm,fIstrat,dc);
   }

   if (ikode == 0) return;
//*-*-              find longest name (for Rene!)
   ntrail = 10;
   for (i = 1; i <= fNu; ++i) {
      if (fNvarl[i-1] < 0) continue;
      for (ic = 10; ic >= 1; --ic) {
         if (fCpnam[i-1](ic-1,1) != " ") goto L16;
      }
      ic = 1;
L16:
      lbl = 10 - ic;
      if (lbl < ntrail) ntrail = lbl;
   }
   nadd = ntrail / 2 + 1;
   if (ikode == 1) {
      colhdu[0] = "              ";
      colhdl[0] = "      ERROR   ";
      colhdu[1] = "      PHYSICAL";
      colhdu[2] = " LIMITS       ";
      colhdl[1] = "    NEGATIVE  ";
      colhdl[2] = "    POSITIVE  ";
   }
   if (ikode == 2) {
      colhdu[0] = "              ";
      colhdl[0] = "      ERROR   ";
      colhdu[1] = "    INTERNAL  ";
      colhdl[1] = "    STEP SIZE ";
      colhdu[2] = "    INTERNAL  ";
      colhdl[2] = "      VALUE   ";
   }
   if (ikode == 3) {
      colhdu[0] = "              ";
      colhdl[0] = "      ERROR   ";
      colhdu[1] = "       STEP   ";
      colhdl[1] = "       SIZE   ";
      colhdu[2] = "      FIRST   ";
      colhdl[2] = "   DERIVATIVE ";
   }
   if (ikode == 4) {
      colhdu[0] = "    PARABOLIC ";
      colhdl[0] = "      ERROR   ";
      colhdu[1] = "        MINOS ";
      colhdu[2] = "ERRORS        ";
      colhdl[1] = "   NEGATIVE   ";
      colhdl[2] = "   POSITIVE   ";
   }

   if (ikode != 4) {
      if (fISW[1] < 3) colhdu[0] = "  APPROXIMATE ";
      if (fISW[1] < 1) colhdu[0] = " CURRENT GUESS";
   }
   Printf("  EXT PARAMETER              %-14s%-14s%-14s",(const char*)colhdu[0]
                                                    ,(const char*)colhdu[1]
                                                    ,(const char*)colhdu[2]);
   Printf("  NO.   NAME      VALUE      %-14s%-14s%-14s",(const char*)colhdl[0]
                                                    ,(const char*)colhdl[1]
                                                    ,(const char*)colhdl[2]);
//*-*-                                       . . . loop over parameters . .
   for (i = 1; i <= fNu; ++i) {
      if (fNvarl[i-1] < 0) continue;
      l = fNiofex[i-1];
      cnambf = cblank(0,nadd) + fCpnam[i-1];
      if (l == 0) goto L55;
//*-*-             variable parameter.
      x1  = fWerr[l-1];
      cx2 = "PLEASE GET X..";
      cx3 = "PLEASE GET X..";
      if (ikode == 1) {
         if (fNvarl[i-1] <= 1) {
            Printf("%4d %-11s%14.5e%14.5e",i,(const char*)cnambf,fU[i-1],x1);
            continue;
         } else {
            x2 = fAlim[i-1];
            x3 = fBlim[i-1];
         }
      }
      if (ikode == 2) {
         x2 = fDirin[l-1];
         x3 = fX[l-1];
      }
      if (ikode == 3) {
         x2 = fDirin[l-1];
         x3 = fGrd[l-1];
         if (fNvarl[i-1] > 1 && TMath::Abs(TMath::Cos(fX[l-1])) < .001) {
            cx3 = "** at limit **";
         }
      }
      if (ikode == 4) {
         x2 = fErn[l-1];
         if (x2 == 0)        cx2 = " ";
         if (x2 == fUndefi)  cx2 = "   at limit   ";
         x3 = fErp[l-1];
         if (x3 == 0)        cx3 = " ";
         if (x3 == fUndefi)         cx3 = "   at limit   ";
      }
      if (cx2 == "PLEASE GET X..")  cx2 = Form("%14.5e",x2);
      if (cx3 == "PLEASE GET X..")  cx3 = Form("%14.5e",x3);
      Printf("%4d %-11s%14.5e%14.5e%-14s%-14s",i
                   ,(const char*)cnambf,fU[i-1],x1
                   ,(const char*)cx2,(const char*)cx3);

//*-*-              check if parameter is at limit
      if (fNvarl[i-1] <= 1 || ikode == 3) continue;
      if (TMath::Abs(TMath::Cos(fX[l-1])) < .001) {
         Printf("                                 WARNING -   - ABOVE PARAMETER IS AT LIMIT.");
      }
      continue;

//*-*-                               print constant or fixed parameter.
L55:
      colhdu[0] = "   constant   ";
      if (fNvarl[i-1] > 0)  colhdu[0] = "     fixed    ";
      if (fNvarl[i-1] == 4 && ikode == 1) {
         Printf("%4d %-11s%14.5e%-14s%14.5e%14.5e",i
              ,(const char*)cnambf,fU[i-1]
              ,(const char*)colhdu[0],fAlim[i-1],fBlim[i-1]);
      } else {
         Printf("%4d %-11s%14.5e%s",i
                   ,(const char*)cnambf,fU[i-1],(const char*)colhdu[0]);
      }
   }

   if (fUp != fUpdflt) {
      Printf("                               ERR DEF= %g",fUp);
   }
   return;
} /* mnprin_ */

//______________________________________________________________________________
void TMinuit::mnpsdf()
{
//*-*-*-*-*-*Calculates the eigenvalues of v to see if positive-def*-*-*-*-*
//*-*        ======================================================
//*-*        if not, adds constant along diagonal to make positive.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dgmin, padd, pmin, pmax, dg, epspdf, epsmin;
   Int_t ndex, i, j, ndexd, ip, ifault;
   TString chbuff, ctemp;

   epsmin = 1e-6;
   epspdf = TMath::Max(epsmin,fEpsma2);
   dgmin  = fVhmat[0];
//*-*-                       Check if negative or zero on diagonal
   for (i = 1; i <= fNpar; ++i) {
      ndex = i*(i + 1) / 2;
      if (fVhmat[ndex-1] <= 0) {
         mnwarn("W", fCfrom, Form("Negative diagonal element %d in Error Matrix",i));
      }
      if (fVhmat[ndex-1] < dgmin) dgmin = fVhmat[ndex-1];
   }
   if (dgmin <= 0) {
      dg    = epspdf + 1 - dgmin;
      mnwarn("W", fCfrom, Form("%g added to diagonal of error matrix",dg));
   } else {
      dg = 0;
   }
//*-*-                   Store VHMAT in P, make sure diagonal pos.
   for (i = 1; i <= fNpar; ++i) {
      ndex  = i*(i-1) / 2;
      ndexd = ndex + i;
      fVhmat[ndexd-1] += dg;
      if (fVhmat[ndexd-1]==0) {
         fPSDFs[i-1] = 1 / 1e-19; // a totally arbitrary silly small value
      } else {
         fPSDFs[i-1] = 1 / TMath::Sqrt(fVhmat[ndexd-1]);
      }
      for (j = 1; j <= i; ++j) {
         ++ndex;
         fP[i + j*fMaxpar - fMaxpar-1] = fVhmat[ndex-1]*fPSDFs[i-1]*fPSDFs[j-1];
      }
   }
//*-*-     call eigen (p,p,maxint,npar,pstar,-npar)
   mneig(fP, fMaxint, fNpar, fMaxint, fPstar, epspdf, ifault);
   pmin = fPstar[0];
   pmax = fPstar[0];
   for (ip = 2; ip <= fNpar; ++ip) {
      if (fPstar[ip-1] < pmin) pmin = fPstar[ip-1];
      if (fPstar[ip-1] > pmax) pmax = fPstar[ip-1];
   }
   pmax = TMath::Max(TMath::Abs(pmax),Double_t(1));
   if ((pmin <= 0 && fLwarn) || fISW[4] >= 2) {
      Printf(" EIGENVALUES OF SECOND-DERIVATIVE MATRIX:");
      ctemp = "       ";
      for (ip = 1; ip <= fNpar; ++ip) {
         ctemp += Form(" %11.4e",fPstar[ip-1]);
      }
      Printf((const char*)ctemp);
   }
   if (pmin > epspdf*pmax) return;
   if (fISW[1] == 3) fISW[1] = 2;
   padd = pmax*.001 - pmin;
   for (ip = 1; ip <= fNpar; ++ip) {
      ndex = ip*(ip + 1) / 2;
      fVhmat[ndex-1] *= padd + 1;
   }
   fCstatu = "NOT POSDEF";
   mnwarn("W", fCfrom, Form("MATRIX FORCED POS-DEF BY ADDING %f TO DIAGONAL.",padd));

} /* mnpsdf_ */

//______________________________________________________________________________
void TMinuit::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*-*-*-*-*-*-*
//*-*      =====================================================
//*-*        and remove an old one from the current simplex, and get the
//*-*        estimated distance to minimum.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t pbig, plit;
   Int_t i, j, nparp1;

   /* Function Body */
   for (i = 1; i <= fNpar; ++i) { fP[i + jh*fMaxpar - fMaxpar-1] = pnew[i-1]; }
   y[jh-1] = ynew;
   if (ynew < fAmin) {
      for (i = 1; i <= fNpar; ++i) { fX[i-1] = pnew[i-1]; }
      mninex(fX);
      fAmin   = ynew;
      fCstatu = "PROGRESS  ";
      jl      = jh;
   }
   jh     = 1;
   nparp1 = fNpar + 1;
   for (j = 2; j <= nparp1; ++j) { if (y[j-1] > y[jh-1]) jh = j; }
   fEDM = y[jh-1] - y[jl-1];
   if (fEDM <= 0) goto L45;
   for (i = 1; i <= fNpar; ++i) {
      pbig = fP[i-1];
      plit = pbig;
      for (j = 2; j <= nparp1; ++j) {
         if (fP[i + j*fMaxpar - fMaxpar-1] > pbig) pbig = fP[i + j*fMaxpar - fMaxpar-1];
         if (fP[i + j*fMaxpar - fMaxpar-1] < plit) plit = fP[i + j*fMaxpar - fMaxpar-1];
      }
      fDirin[i-1] = pbig - plit;
   }
L40:
   return;
L45:
   Printf("  FUNCTION VALUE DOES NOT SEEM TO DEPEND ON ANY OF THE %d VARIABLE PARAMETERS.",fNpar);
   Printf("          VERIFY THAT STEP SIZES ARE BIG ENOUGH AND CHECK FCN LOGIC.");
   Printf(" *******************************************************************************");
   Printf(" *******************************************************************************");
   goto L40;
} /* mnrazz_ */

//______________________________________________________________________________
void TMinuit::mnrn15(Double_t &val, Int_t &inseed)
{
//*-*-*-*-*-*-*This is a super-portable random number generator*-*-*-*-*-*-*
//*-*          ================================================
//*-*         It should not overflow on any 32-bit machine.
//*-*         The cycle is only ~10**9, so use with care!
//*-*         Note especially that VAL must not be undefined on input.
//*-*                    Set Default Starting Seed
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   static Int_t iseed = 12345;

   Int_t k;

   if (val == 3) goto L100;
   inseed = iseed;
   k      = iseed / 53668;
   iseed  = (iseed - k*53668)*40014 - k*12211;
   if (iseed < 0) iseed += 2147483563;
   val = Double_t(iseed*4.656613e-10);
   return;
//*-*               "entry" to set seed, flag is VAL=3
L100:
   iseed = inseed;
} /* mnrn15_ */

//______________________________________________________________________________
void TMinuit::mnrset(Int_t iopt)
{
//*-*-*-*-*-*-*-*Resets function value and errors to UNDEFINED*-*-*-*-*-*-*-*
//*-*            =============================================
//*-*    If IOPT=1,
//*-*    If IOPT=0, sets only MINOS errors to undefined
//*-*        Called from MNCLER and whenever problem changes, for example
//*-*        after SET LIMITS, SET PARAM, CALL FCN 6
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t iext, i;

   fCstatu = "RESET     ";
   if (iopt >= 1) {
      fAmin   = fUndefi;
      fFval3  = TMath::Abs(fAmin)*2 + 1;
      fEDM    = fBigedm;
      fISW[3] = 0;
      fISW[1] = 0;
      fDcovar = 1;
      fISW[0] = 0;
   }
   fLnolim = kTRUE;
   for (i = 1; i <= fNpar; ++i) {
      iext = fNexofi[i-1];
      if (fNvarl[iext-1] >= 4) fLnolim = kFALSE;
      fErp[i-1] = 0;
      fErn[i-1] = 0;
      fGlobcc[i-1] = 0;
   }
   if (fISW[1] >= 1) {
      fISW[1] = 1;
      fDcovar = TMath::Max(fDcovar,.5);
   }
} /* mnrset_ */

//______________________________________________________________________________
void TMinuit::mnsave()
{
//*-*-*-*Writes current parameter values and step sizes onto file ISYSSA*-*-*
//*-*    ===============================================================
//*-*          in format which can be reread by Minuit for restarting.
//*-*       The covariance matrix is also output if it exists.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Printf("mnsave is dummy in TMinuit");

} /* mnsave_ */

//______________________________________________________________________________
void TMinuit::mnscan()
{
//*-*-*-*-*Scans the values of FCN as a function of one parameter*-*-*-*-*-*
//*-*      ======================================================
//*-*        and plots the resulting values as a curve using MNPLOT.
//*-*        It may be called to scan one parameter or all parameters.
//*-*        retains the best function and parameter values found.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t step, uhigh, xhreq, xlreq, ubest, fnext, unext, xh, xl;
   Int_t ipar, iint, icall, ncall, nbins, nparx;
   Int_t nxypt, nccall, iparwd;

   xlreq = TMath::Min(fWord7[2],fWord7[3]);
   xhreq = TMath::Max(fWord7[2],fWord7[3]);
   ncall = Int_t((fWord7[1] + .01));
   if (ncall <= 1)  ncall = 41;
   if (ncall > 98) ncall = 98;
   nccall = ncall;
   if (fAmin == fUndefi) mnamin();
   iparwd  = Int_t((fWord7[0] + .1));
   ipar    = TMath::Max(iparwd,0);
   fCstatu = "NO CHANGE";
   if (iparwd > 0) goto L200;

//*-*-        equivalent to a loop over parameters requested
L100:
   ++ipar;
   if (ipar > fNu) goto L900;
   iint = fNiofex[ipar-1];
   if (iint <= 0) goto L100;
//*-*-        set up range for parameter IPAR
L200:
   iint    = fNiofex[ipar-1];
   ubest    = fU[ipar-1];
   fXpt[0]  = ubest;
   fYpt[0]  = fAmin;
   fChpt[0] = ' ';
   fXpt[1]  = ubest;
   fYpt[1]  = fAmin;
   fChpt[1] = 'X';
   nxypt    = 2;
   if (fNvarl[ipar-1] > 1) goto L300;

//*-*-        no limits on parameter
   if (xlreq == xhreq) goto L250;
   unext = xlreq;
   step = (xhreq - xlreq) / Double_t(ncall-1);
   goto L500;
L250:
   xl = ubest - fWerr[iint-1];
   xh = ubest + fWerr[iint-1];
   mnbins(xl, xh, ncall, unext, uhigh, nbins, step);
   nccall = nbins + 1;
   goto L500;
//*-*-        limits on parameter
L300:
   if (xlreq == xhreq) goto L350;
//*-*  Computing MAX
   xl = TMath::Max(xlreq,fAlim[ipar-1]);
//*-*  Computing MIN
   xh = TMath::Min(xhreq,fBlim[ipar-1]);
   if (xl >= xh) goto L700;
   unext = xl;
   step  = (xh - xl) / Double_t(ncall-1);
   goto L500;
L350:
   unext = fAlim[ipar-1];
   step = (fBlim[ipar-1] - fAlim[ipar-1]) / Double_t(ncall-1);
//*-*-        main scanning loop over parameter IPAR
L500:
   for (icall = 1; icall <= nccall; ++icall) {
      fU[ipar-1] = unext;
      nparx = fNpar;
      Eval(nparx, fGin, fnext, fU, 4);        ++fNfcn;
      ++nxypt;
      fXpt[nxypt-1]  = unext;
      fYpt[nxypt-1]  = fnext;
      fChpt[nxypt-1] = '*';
      if (fnext < fAmin) {
         fAmin   = fnext;
         ubest   = unext;
         fCstatu = "IMPROVED  ";
      }
      unext += step;
   }
   fChpt[nccall] = 0;

//*-*-        finished with scan of parameter IPAR
   fU[ipar-1] = ubest;
   mnexin(fX);
   if (fISW[4] >= 1)
   Printf("%dSCAN OF PARAMETER NO. %d,  %s"
         ,fNewpag,ipar,(const char*)fCpnam[ipar-1]);
   mnplot(fXpt, fYpt, fChpt, nxypt, fNpagwd, fNpagln);
   goto L800;
L700:
   Printf(" REQUESTED RANGE OUTSIDE LIMITS FOR PARAMETER  %d",ipar);
L800:
   if (iparwd <= 0) goto L100;
//*-*-        finished with all parameters
L900:
   if (fISW[4] >= 0) mnprin(5, fAmin);
} /* mnscan_ */

//______________________________________________________________________________
void TMinuit::mnseek()
{
//*-*-*-*Performs a rough (but global) minimization by monte carlo search*-*
//*-*    ================================================================
//*-*        Each time a new minimum is found, the search area is shifted
//*-*        to be centered at the best value.  Random points are chosen
//*-*        uniformly over a hypercube determined by current step sizes.
//*-*   The Metropolis algorithm accepts a worse point with probability
//*-*      exp(-d/UP), where d is the degradation.  Improved points
//*-*      are of course always accepted.  Actual steps are random
//*-*      multiples of the nominal steps (DIRIN).
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Local variables */
   Double_t dxdi, rnum, ftry, rnum1, rnum2, alpha;
   Double_t flast, bar;
   Int_t ipar, iext, j, ifail, iseed, nparx, istep, ib, mxfail, mxstep;

   mxfail = Int_t(fWord7[0]);
   if (mxfail <= 0) mxfail = fNpar*20 + 100;
   mxstep = mxfail*10;
   if (fAmin == fUndefi) mnamin();
   alpha = fWord7[1];
   if (alpha <= 0) alpha = 3;
   if (fISW[4] >= 1) {
      Printf(" MNSEEK: MONTE CARLO MINIMIZATION USING METROPOLIS ALGORITHM");
      Printf(" TO STOP AFTER %6d SUCCESSIVE FAILURES, OR %7d STEPS",mxfail,mxstep);
      Printf(" MAXIMUM STEP SIZE IS %9.3f ERROR BARS.",alpha);
   }
   fCstatu = "INITIAL  ";
   if (fISW[4] >= 2) mnprin(2, fAmin);
   fCstatu = "UNCHANGED ";
   ifail   = 0;
   rnum    = 0;
   rnum1   = 0;
   rnum2   = 0;
   nparx   = fNpar;
   flast   = fAmin;
//*-*-             set up step sizes, starting values
   for (ipar = 1; ipar <= fNpar; ++ipar) {
      iext = fNexofi[ipar-1];
      fDirin[ipar-1] = alpha*2*fWerr[ipar-1];
      if (fNvarl[iext-1] > 1) {
//*-*-             parameter with limits
         mndxdi(fX[ipar-1], ipar-1, dxdi);
         if (dxdi == 0) dxdi = 1;
         fDirin[ipar-1] = alpha*2*fWerr[ipar-1] / dxdi;
         if (TMath::Abs(fDirin[ipar-1]) > 6.2831859999999997) {
            fDirin[ipar-1] = 6.2831859999999997;
         }
      }
      fSEEKxmid[ipar-1]  = fX[ipar-1];
      fSEEKxbest[ipar-1] = fX[ipar-1];
   }
//*-*-                             search loop
   for (istep = 1; istep <= mxstep; ++istep) {
      if (ifail >= mxfail) break;
      for (ipar = 1; ipar <= fNpar; ++ipar) {
         mnrn15(rnum1, iseed);
         mnrn15(rnum2, iseed);
         fX[ipar-1] = fSEEKxmid[ipar-1] + (rnum1 + rnum2 - 1)*.5*fDirin[ipar-1];
      }
      mninex(fX);
      Eval(nparx, fGin, ftry, fU, 4);        ++fNfcn;
      if (ftry < flast) {
         if (ftry < fAmin) {
            fCstatu = "IMPROVEMNT";
            fAmin = ftry;
            for (ib = 1; ib <= fNpar; ++ib) { fSEEKxbest[ib-1] = fX[ib-1]; }
            ifail = 0;
            if (fISW[4] >= 2) mnprin(2, fAmin);
         }
         goto L300;
      } else {
         ++ifail;
//*-*-                  Metropolis algorithm
         bar = (fAmin - ftry) / fUp;
         mnrn15(rnum, iseed);
         if (bar < TMath::Log(rnum)) continue;
      }
//*-*-                   Accept new point, move there
L300:
      for (j = 1; j <= fNpar; ++j) { fSEEKxmid[j-1] = fX[j-1];        }
      flast = ftry;
   }
//*-*-                              end search loop
   if (fISW[4] > 1) {
      Printf(" MNSEEK: %5d SUCCESSIVE UNSUCCESSFUL TRIALS.",ifail);
   }
   for (ib = 1; ib <= fNpar; ++ib) { fX[ib-1] = fSEEKxbest[ib-1]; }
   mninex(fX);
   if (fISW[4] >= 1) mnprin(2, fAmin);
   if (fISW[4] == 0) mnprin(0, fAmin);
} /* mnseek_ */

//______________________________________________________________________________
void TMinuit::mnset()
{
//*-*-*-*-*Interprets the commands that start with SET and SHOW*-*-*-*-*-*-*
//*-*      ====================================================
//*-*        Called from MNEXCM
//*-*        file characteristics for SET INPUT
//*-*       'SET ' or 'SHOW',  'ON ' or 'OFF', 'SUPPRESSED' or 'REPORTED  '
//*-*        explanation of print level numbers -1:3  and strategies 0:2
//*-*        identification of debug options
//*-*        things that can be set or shown
//*-*        options not intended for normal users
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   const char *cname[30] = {
      "FCN value ",
      "PARameters",
      "LIMits    ",
      "COVariance",
      "CORrelatio",
      "PRInt levl",
      "NOGradient",
      "GRAdient  ",
      "ERRor def ",
      "INPut file",
      "WIDth page",
      "LINes page",
      "NOWarnings",
      "WARnings  ",
      "RANdom gen",
      "TITle     ",
      "STRategy  ",
      "EIGenvalue",
      "PAGe throw",
      "MINos errs",
      "EPSmachine",
      "OUTputfile",
      "BATch     ",
      "INTeractiv",
      "VERsion   ",
      "reserve   ",
      "NODebug   ",
      "DEBug     ",
      "SHOw      ",
      "SET       "};

   static Int_t nname = 25;
   static Int_t nntot = 30;
   static TString cprlev[5] = {
      "-1: NO OUTPUT EXCEPT FROM SHOW    ",
      " 0: REDUCED OUTPUT                ",
      " 1: NORMAL OUTPUT                 ",
      " 2: EXTRA OUTPUT FOR PROBLEM CASES",
      " 3: MAXIMUM OUTPUT                "};

   static TString cstrat[3] = {
      " 0: MINIMIZE THE NUMBER OF CALLS TO FUNCTION",
      " 1: TRY TO BALANCE SPEED AGAINST RELIABILITY",
      " 2: MAKE SURE MINIMUM TRUE, ERRORS CORRECT  "};

   static TString cdbopt[7] = {
      "REPORT ALL EXCEPTIONAL CONDITIONS      ",
      "MNLINE: LINE SEARCH MINIMIZATION       ",
      "MNDERI: FIRST DERIVATIVE CALCULATIONS  ",
      "MNHESS: SECOND DERIVATIVE CALCULATIONS ",
      "MNMIGR: COVARIANCE MATRIX UPDATES      ",
      "MNHES1: FIRST DERIVATIVE UNCERTAINTIES ",
      "MNCONT: MNCONTOUR PLOT (MNCROS SEARCH) "};

   /* System generated locals */
   Int_t f_inqu();

   /* Local variables */
   Double_t val;
   Int_t iset, iprm, i, jseed, kname, iseed, iunit, id, ii, kk;
   Int_t ikseed, idbopt, igrain, iswsav, isw2;
   TString  cfname, cmode, ckind,  cwarn, copt, ctemp, ctemp2;
   Bool_t lname=kFALSE;

   for (i = 1; i <= nntot; ++i) {
      ctemp  = cname[i-1];
      ckind  = ctemp(0,3);
      ctemp2 = fCword(4,6);
      if (strstr(ctemp2.Data(),ckind.Data())) goto L5;
   }
   i = 0;
L5:
   kname = i;

//*-*-          Command could be SET xxx, SHOW xxx,  HELP SET or HELP SHOW
   ctemp2 = fCword(0,3);
   if ( ctemp2.Contains("HEL"))  goto L2000;
   if ( ctemp2.Contains("SHO"))  goto L1000;
   if (!ctemp2.Contains("SET"))  goto L1900;
//*-*-                          ---
   ckind = "SET ";
//*-*-                                       . . . . . . . . . . set unknown
   if (kname <= 0) goto L1900;
//*-*-                                       . . . . . . . . . . set known
   switch ((int)kname) {
      case 1:  goto L3000;
      case 2:  goto L20;
      case 3:  goto L30;
      case 4:  goto L40;
      case 5:  goto L3000;
      case 6:  goto L60;
      case 7:  goto L70;
      case 8:  goto L80;
      case 9:  goto L90;
      case 10:  goto L100;
      case 11:  goto L110;
      case 12:  goto L120;
      case 13:  goto L130;
      case 14:  goto L140;
      case 15:  goto L150;
      case 16:  goto L160;
      case 17:  goto L170;
      case 18:  goto L3000;
      case 19:  goto L190;
      case 20:  goto L3000;
      case 21:  goto L210;
      case 22:  goto L220;
      case 23:  goto L230;
      case 24:  goto L240;
      case 25:  goto L3000;
      case 26:  goto L1900;
      case 27:  goto L270;
      case 28:  goto L280;
      case 29:  goto L290;
      case 30:  goto L300;
   }

//*-*-                                       . . . . . . . . . . set param
L20:
   iprm = Int_t(fWord7[0]);
   if (iprm > fNu) goto L25;
   if (iprm <= 0) goto L25;
   if (fNvarl[iprm-1] < 0) goto L25;
   fU[iprm-1] = fWord7[1];
   mnexin(fX);
   isw2 = fISW[1];
   mnrset(1);
//*-*-       Keep approximate covariance matrix, even if new param value
   fISW[1] = TMath::Min(isw2,1);
   fCfrom  = "SET PARM";
   fNfcnfr = fNfcn;
   fCstatu = "NEW VALUES";
   return;
L25:
   Printf(" UNDEFINED PARAMETER NUMBER.  IGNORED.");
   return;
//*-*-                                       . . . . . . . . . . set limits
L30:
   mnlims();
   return;
//*-*-                                       . . . . . . . . . . set covar
L40:
//*-*   this command must be handled by MNREAD, and is not Fortran-callable
   goto L3000;
//*-*-                                       . . . . . . . . . . set print
L60:
   fISW[4] = Int_t(fWord7[0]);
   return;
//*-*-                                       . . . . . . . . . . set nograd
L70:
   fISW[2] = 0;
   return;
//*-*-                                       . . . . . . . . . . set grad
L80:
   mngrad();
   return;
//*-*-                                       . . . . . . . . . . set errdef
L90:
   if (fWord7[0] == fUp) return;
   if (fWord7[0] <= 0) {
      if (fUp == fUpdflt) return;
      fUp = fUpdflt;
   } else {
      fUp = fWord7[0];
   }
   for (i = 1; i <= fNpar; ++i) {
      fErn[i-1] = 0;
      fErp[i-1] = 0;
   }
   mnwerr();
   return;
//*-*-                                       . . . . . . . . . . set input
//*-* This command must be handled by MNREAD. If it gets this far,
//*-*-        it is illegal.
L100:
   goto L3000;
//*-*-                                       . . . . . . . . . . set width
L110:
   fNpagwd = Int_t(fWord7[0]);
   fNpagwd = TMath::Max(fNpagwd,50);
   return;

L120:
   fNpagln = Int_t(fWord7[0]);
   return;
//*-*-                                       . . . . . . . . . . set nowarn

L130:
   fLwarn = kFALSE;
   return;
//*-*-                                       . . . . . . . . . . set warn
L140:
   fLwarn = kTRUE;
   mnwarn("W", "SHO", "SHO");
   return;
//*-*-                                       . . . . . . . . . . set random
L150:
   jseed = Int_t(fWord7[0]);
   val = 3;
   mnrn15(val, jseed);
   if (fISW[4] > 0) {
      Printf(" MINUIT RANDOM NUMBER SEED SET TO %d",jseed);
   }
   return;
//*-*-                                       . . . . . . . . . . set title
L160:
//*-*   this command must be handled by MNREAD, and is not Fortran-callable
   goto L3000;
//*-*-                                       . . . . . . . . . set strategy
L170:
   fIstrat = Int_t(fWord7[0]);
   fIstrat = TMath::Max(fIstrat,0);
   fIstrat = TMath::Min(fIstrat,2);
   if (fISW[4] > 0) goto L1172;
   return;
//*-*-                                      . . . . . . . . . set page throw
L190:
   fNewpag = Int_t(fWord7[0]);
   goto L1190;
//*-*-                                       . . . . . . . . . . set epsmac
L210:
   if (fWord7[0] > 0 && fWord7[0] < .1) {
      fEpsmac = fWord7[0];
   }
   fEpsma2 = TMath::Sqrt(fEpsmac);
   goto L1210;
//*-*-                                      . . . . . . . . . . set outputfile
L220:
   iunit = Int_t(fWord7[0]);
   fIsyswr = iunit;
   fIstkwr[0] = iunit;
   if (fISW[4] >= 0) goto L1220;
   return;
//*-*-                                       . . . . . . . . . . set batch
L230:
   fISW[5] = 0;
   if (fISW[4] >= 0) goto L1100;
   return;
//*-*-                                      . . . . . . . . . . set interactive
L240:
   fISW[5] = 1;
   if (fISW[4] >= 0) goto L1100;
   return;
//*-*-                                       . . . . . . . . . . set nodebug
L270:
   iset = 0;
   goto L281;
//*-*-                                       . . . . . . . . . . set debug
L280:
   iset = 1;
L281:
   idbopt = Int_t(fWord7[0]);
   if (idbopt > 6) goto L288;
   if (idbopt >= 0) {
      fIdbg[idbopt] = iset;
      if (iset == 1) fIdbg[0] = 1;
   } else {
//*-*-            SET DEBUG -1  sets all debug options
      for (id = 0; id <= 6; ++id) { fIdbg[id] = iset; }
   }
   fLrepor = fIdbg[0] >= 1;
   mnwarn("D", "SHO", "SHO");
   return;
L288:
   Printf(" UNKNOWN DEBUG OPTION %d REQUESTED. IGNORED",idbopt);
   return;
//*-*-                                       . . . . . . . . . . set show
L290:
//*-*-                                       . . . . . . . . . . set set
L300:
   goto L3000;
//*-*-               -----------------------------------------------------
L1000:
//*-*-              at this point, CWORD must be 'SHOW'
   ckind = "SHOW";
   if (kname <= 0) goto L1900;

   switch ((int)kname) {
      case 1:  goto L1010;
      case 2:  goto L1020;
      case 3:  goto L1030;
      case 4:  goto L1040;
      case 5:  goto L1050;
      case 6:  goto L1060;
      case 7:  goto L1070;
      case 8:  goto L1070;
      case 9:  goto L1090;
      case 10:  goto L1100;
      case 11:  goto L1110;
      case 12:  goto L1120;
      case 13:  goto L1130;
      case 14:  goto L1130;
      case 15:  goto L1150;
      case 16:  goto L1160;
      case 17:  goto L1170;
      case 18:  goto L1180;
      case 19:  goto L1190;
      case 20:  goto L1200;
      case 21:  goto L1210;
      case 22:  goto L1220;
      case 23:  goto L1100;
      case 24:  goto L1100;
      case 25:  goto L1250;
      case 26:  goto L1900;
      case 27:  goto L1270;
      case 28:  goto L1270;
      case 29:  goto L1290;
      case 30:  goto L1300;
   }

//*-*-                                       . . . . . . . . . . show fcn
L1010:
   if (fAmin == fUndefi) mnamin();
   mnprin(0, fAmin);
   return;
//*-*-                                       . . . . . . . . . . show param
L1020:
   if (fAmin == fUndefi) mnamin();
   mnprin(5, fAmin);
   return;
//*-*-                                       . . . . . . . . . . show limits
L1030:
   if (fAmin == fUndefi) mnamin();
   mnprin(1, fAmin);
   return;
//*-*-                                       . . . . . . . . . . show covar
L1040:
   mnmatu(1);
   return;
//*-*-                                       . . . . . . . . . . show corre
L1050:
   mnmatu(0);
   return;
//*-*-                                       . . . . . . . . . . show print
L1060:
   if (fISW[4] < -1) fISW[4] = -1;
   if (fISW[4] > 3)  fISW[4] = 3;
   Printf(" ALLOWED PRINT LEVELS ARE:");
   Printf("                           %s",cprlev[0].Data());
   Printf("                           %s",cprlev[1].Data());
   Printf("                           %s",cprlev[2].Data());
   Printf("                           %s",cprlev[3].Data());
   Printf("                           %s",cprlev[4].Data());
   Printf(" CURRENT PRINTOUT LEVEL IS %s",cprlev[fISW[4]+1].Data());
   return;
//*-*-                                       . . . . . . . show nograd, grad
L1070:
   if (fISW[2] <= 0) {
      Printf(" NOGRAD IS SET.  DERIVATIVES NOT COMPUTED IN FCN.");
   } else {
      Printf("   GRAD IS SET.  USER COMPUTES DERIVATIVES IN FCN.");
   }
   return;
//*-*-                                      . . . . . . . . . . show errdef
L1090:
   Printf(" ERRORS CORRESPOND TO FUNCTION CHANGE OF %g",fUp);
   return;
//*-*-                                      . . . . . . . . . . show input,
//*-*-                                               batch, or interactive
L1100:
//    ioin__1.inerr = 0;
//    ioin__1.inunit = fIsysrd;
//    ioin__1.infile = 0;
//    ioin__1.inex = 0;
//    ioin__1.inopen = 0;
//    ioin__1.innum = 0;
//    ioin__1.innamed = &lname;
//    ioin__1.innamlen = 64;
//    ioin__1.inname = cfname;
//    ioin__1.inacc = 0;
//    ioin__1.inseq = 0;
//    ioin__1.indir = 0;
//    ioin__1.infmt = 0;
//    ioin__1.inform = 0;
//    ioin__1.inunf = 0;
//    ioin__1.inrecl = 0;
//    ioin__1.innrec = 0;
//    ioin__1.inblank = 0;
//    f_inqu(&ioin__1);
   cmode = "BATCH MODE      ";
   if (fISW[5] == 1) cmode  = "INTERACTIVE MODE";
   if (! lname)      cfname = "unknown";
   Printf(" INPUT NOW BEING READ IN %s FROM UNIT NO. %d FILENAME: %s"
           ,(const char*)cmode,fIsysrd,(const char*)cfname);
   return;
//*-*-                                      . . . . . . . . . . show width
L1110:
   Printf("          PAGE WIDTH IS SET TO %d COLUMNS",fNpagwd);
   return;
//*-*-                                      . . . . . . . . . . show lines
L1120:
   Printf("          PAGE LENGTH IS SET TO %d LINES",fNpagln);
   return;
//*-*-                                      . . . . . . .show nowarn, warn
L1130:
   cwarn = "SUPPRESSED";
   if (fLwarn) cwarn = "REPORTED  ";
   Printf("%s",(const char*)cwarn);
   if (! fLwarn) mnwarn("W", "SHO", "SHO");
   return;
//*-*-                                     . . . . . . . . . . show random
L1150:
   val = 0;
   mnrn15(val, igrain);
   ikseed = igrain;
   Printf(" MINUIT RNDM SEED IS CURRENTLY=",ikseed);
   val   = 3;
   iseed = ikseed;
   mnrn15(val, iseed);
   return;
//*-*-                                       . . . . . . . . . show title
L1160:
   Printf(" TITLE OF CURRENT TASK IS:%s",(const char*)fCtitl);
   return;
//*-*-                                       . . . . . . . show strategy
L1170:
   Printf(" ALLOWED STRATEGIES ARE:");
   Printf("                    %s",cstrat[0].Data());
   Printf("                    %s",cstrat[1].Data());
   Printf("                    %s",cstrat[2].Data());
L1172:
   Printf(" NOW USING STRATEGY %s",(const char*)cstrat[fIstrat]);
   return;
//*-*-                                         . . . . . show eigenvalues
L1180:
   iswsav = fISW[4];
   fISW[4] = 3;
   if (fISW[1] < 1) {
      Printf("%s",(const char*)fCovmes[0]);
   } else {
      mnpsdf();
   }
   fISW[4] = iswsav;
   return;
//*-*-                                           . . . . . show page throw
L1190:
   Printf(" PAGE THROW CARRIAGE CONTROL = %d",fNewpag);
   if (fNewpag == 0) {
      Printf(" NO PAGE THROWS IN MINUIT OUTPUT");
   }
   return;
//*-*-                                       . . . . . . show minos errors
L1200:
   for (ii = 1; ii <= fNpar; ++ii) {
      if (fErp[ii-1] > 0 || fErn[ii-1] < 0) goto L1204;
   }
   Printf("       THERE ARE NO MINOS ERRORS CURRENTLY VALID.");
   return;
L1204:
   mnprin(4, fAmin);
   return;
//*-*-                                       . . . . . . . . . show epsmac
L1210:
   Printf(" FLOATING-POINT NUMBERS ASSUMED ACCURATE TO %g",fEpsmac);
   return;
//*-*-                                       . . . . . . show outputfiles
L1220:
   Printf("  MINUIT PRIMARY OUTPUT TO UNIT %d",fIsyswr);
   return;
//*-*-                                       . . . . . . show version
L1250:
   Printf(" THIS IS MINUIT VERSION:%s",(const char*)fCvrsn);
   return;
//*-*-                                       . . . . . . show nodebug, debug
L1270:
   for (id = 0; id <= 6; ++id) {
      copt = "OFF";
      if (fIdbg[id] >= 1) copt = "ON ";
      Printf("          DEBUG OPTION %3d IS %3s :%s"
             ,id,(const char*)copt,(const char*)cdbopt[id]);
   }
   if (! fLrepor) mnwarn("D", "SHO", "SHO");
   return;
//*-*-                                       . . . . . . . . . . show show
L1290:
   ckind = "SHOW";
   goto L2100;
//*-*-                                       . . . . . . . . . . show set
L1300:
   ckind = "SET ";
   goto L2100;
//*-*-               -----------------------------------------------------
//*-*-                             UNKNOWN COMMAND
L1900:
   Printf(" THE COMMAND:%10s IS UNKNOWN.",(const char*)fCword);
   goto L2100;
//*-*-               -----------------------------------------------------
//*-*-                   HELP SHOW,  HELP SET,  SHOW SET, or SHOW SHOW
L2000:
   ckind = "SET ";
   ctemp2 = fCword(3,7);
   if (strcmp(ctemp2.Data(), "SHO")) ckind = "SHOW";
L2100:
   Printf(" THE FORMAT OF THE %4s COMMAND IS:",(const char*)ckind);
   Printf(" %s xxx    [numerical arguments if any]",(const char*)ckind);
   Printf(" WHERE xxx MAY BE ONE OF THE FOLLOWING:");
   for (kk = 1; kk <= nname; ++kk) {
      Printf(" %s",cname[kk-1]);
   }
   return;
//*-*-               -----------------------------------------------------
//*-*-                              ILLEGAL COMMAND
L3000:
   Printf(" ABOVE COMMAND IS ILLEGAL.   IGNORED");

} /* mnset_ */

//______________________________________________________________________________
void TMinuit::mnsimp()
{
//*-*-*-*-*Minimization using the simplex method of Nelder and Mead*-*-*-*-*
//*-*      ========================================================
//*-*        Performs a minimization using the simplex method of Nelder
//*-*        and Mead (ref. -- Comp. J. 7,308 (1965)).
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* Initialized data */

   static Double_t alpha = 1;
   static Double_t beta = .5;
   static Double_t gamma = 2;
   static Double_t rhomin = 4;
   static Double_t rhomax = 8;

   /* Local variables */
   Double_t dmin_, dxdi, yrho, f, ynpp1, aming, ypbar;
   Double_t bestx, ystar, y1, y2, ystst, pb, wg;
   Double_t absmin, rho, sig2, rho1, rho2;
   Int_t npfn, i, j, k, jhold, ncycl, nparx;
   Int_t nparp1, kg, jh, nf, jl, ns;

   if (fNpar <= 0) return;
   if (fAmin == fUndefi) mnamin();
   fCfrom  = "SIMPLEX ";
   fNfcnfr = fNfcn;
   fCstatu = "UNCHANGED ";
   npfn    = fNfcn;
   nparp1  = fNpar + 1;
   nparx   = fNpar;
   rho1    = alpha + 1;
   rho2    = rho1 + alpha*gamma;
   wg      = 1 / Double_t(fNpar);
   if (fISW[4] >= 0) {
      Printf(" START SIMPLEX MINIMIZATION.    CONVERGENCE WHEN EDM .LT. %g",fEpsi);
   }
   for (i = 1; i <= fNpar; ++i) {
      fDirin[i-1] = fWerr[i-1];
      mndxdi(fX[i-1], i-1, dxdi);
      if (dxdi != 0) fDirin[i-1] = fWerr[i-1] / dxdi;
      dmin_ = fEpsma2*TMath::Abs(fX[i-1]);
      if (fDirin[i-1] < dmin_) fDirin[i-1] = dmin_;
   }
//*-* **       choose the initial simplex using single-parameter searches
L1:
   ynpp1 = fAmin;
   jl = nparp1;
   fSIMPy[nparp1-1] = fAmin;
   absmin = fAmin;
   for (i = 1; i <= fNpar; ++i) {
      aming      = fAmin;
      fPbar[i-1] = fX[i-1];
      bestx      = fX[i-1];
      kg         = 0;
      ns         = 0;
      nf         = 0;
L4:
      fX[i-1] = bestx + fDirin[i-1];
      mninex(fX);
      Eval(nparx, fGin, f, fU, 4);        ++fNfcn;
      if (f <= aming) goto L6;
//*-*-        failure
      if (kg == 1) goto L8;
      kg = -1;
      ++nf;
      fDirin[i-1] *= -.4;
      if (nf < 3) goto L4;
      ns = 6;
//*-*-        success
L6:
      bestx        = fX[i-1];
      fDirin[i-1] *= 3;
      aming        = f;
      fCstatu      = "PROGRESS  ";
      kg           = 1;
      ++ns;
      if (ns < 6) goto L4;
//*-*-        local minimum found in ith direction
L8:
      fSIMPy[i-1] = aming;
      if (aming < absmin) jl = i;
      if (aming < absmin) absmin = aming;
      fX[i-1] = bestx;
      for (k = 1; k <= fNpar; ++k) { fP[k + i*fMaxpar - fMaxpar-1] = fX[k-1]; }
   }
   jh    = nparp1;
   fAmin = fSIMPy[jl-1];
   mnrazz(ynpp1, fPbar, fSIMPy, jh, jl);
   for (i = 1; i <= fNpar; ++i) { fX[i-1] = fP[i + jl*fMaxpar - fMaxpar-1]; }
   mninex(fX);
   fCstatu = "PROGRESS  ";
   if (fISW[4] >= 1) mnprin(5, fAmin);
   fEDM  = fBigedm;
   sig2  = fEDM;
   ncycl = 0;
//*-*-                                       . . . . .  start main loop
L50:
   if (sig2 < fEpsi && fEDM < fEpsi) goto L76;
   sig2 = fEDM;
   if (fNfcn - npfn > fNfcnmx) goto L78;
//*-*-        calculate new point * by reflection
   for (i = 1; i <= fNpar; ++i) {
      pb = 0;
      for (j = 1; j <= nparp1; ++j) { pb += wg*fP[i + j*fMaxpar - fMaxpar-1]; }
      fPbar[i-1]  = pb - wg*fP[i + jh*fMaxpar - fMaxpar-1];
      fPstar[i-1] = (alpha + 1)*fPbar[i-1] - alpha*fP[i + jh*fMaxpar - fMaxpar-1];
   }
   mninex(fPstar);
   Eval(nparx, fGin, ystar, fU, 4);    ++fNfcn;
   if (ystar >= fAmin) goto L70;
//*-*-        point * better than jl, calculate new point **
   for (i = 1; i <= fNpar; ++i) {
      fPstst[i-1] = gamma*fPstar[i-1] + (1 - gamma)*fPbar[i-1];
   }
   mninex(fPstst);
   Eval(nparx, fGin, ystst, fU, 4);    ++fNfcn;
//*-*-        try a parabola through ph, pstar, pstst.  min = prho
   y1 = (ystar - fSIMPy[jh-1])*rho2;
   y2 = (ystst - fSIMPy[jh-1])*rho1;
   rho = (rho2*y1 - rho1*y2)*.5 / (y1 - y2);
   if (rho < rhomin) goto L66;
   if (rho > rhomax) rho = rhomax;
   for (i = 1; i <= fNpar; ++i) {
      fPrho[i-1] = rho*fPbar[i-1] + (1 - rho)*fP[i + jh*fMaxpar - fMaxpar-1];
   }
   mninex(fPrho);
   Eval(nparx, fGin, yrho, fU, 4);    ++fNfcn;
   if (yrho  < fSIMPy[jl-1] && yrho < ystst) goto L65;
   if (ystst < fSIMPy[jl-1]) goto L67;
   if (yrho  > fSIMPy[jl-1]) goto L66;
//*-*-        accept minimum point of parabola, PRHO
L65:
   mnrazz(yrho, fPrho, fSIMPy, jh, jl);
   goto L68;
L66:
   if (ystst < fSIMPy[jl-1]) goto L67;
   mnrazz(ystar, fPstar, fSIMPy, jh, jl);
   goto L68;
L67:
   mnrazz(ystst, fPstst, fSIMPy, jh, jl);
L68:
   ++ncycl;
   if (fISW[4] < 2) goto L50;
   if (fISW[4] >= 3 || ncycl % 10 == 0) {
      mnprin(5, fAmin);
   }
   goto L50;
//*-*-        point * is not as good as jl
L70:
   if (ystar >= fSIMPy[jh-1]) goto L73;
   jhold = jh;
   mnrazz(ystar, fPstar, fSIMPy, jh, jl);
   if (jhold != jh) goto L50;
//*-*-        calculate new point **
L73:
   for (i = 1; i <= fNpar; ++i) {
      fPstst[i-1] = beta*fP[i + jh*fMaxpar - fMaxpar-1] + (1 - beta)*fPbar[i-1];
   }
   mninex(fPstst);
   Eval(nparx, fGin, ystst, fU, 4);    ++fNfcn;
   if (ystst > fSIMPy[jh-1]) goto L1;
//*-*-    point ** is better than jh
   if (ystst < fAmin) goto L67;
   mnrazz(ystst, fPstst, fSIMPy, jh, jl);
   goto L50;
//*-*-                                       . . . . . .  end main loop
L76:
   if (fISW[4] >= 0) {
      Printf(" SIMPLEX MINIMIZATION HAS CONVERGED.");
   }
   fISW[3] = 1;
   goto L80;
L78:
   if (fISW[4] >= 0) {
      Printf(" SIMPLEX TERMINATES WITHOUT CONVERGENCE.");
   }
   fCstatu = "CALL LIMIT";
   fISW[3] = -1;
   fISW[0] = 1;
L80:
   for (i = 1; i <= fNpar; ++i) {
      pb = 0;
      for (j = 1; j <= nparp1; ++j) { pb += wg*fP[i + j*fMaxpar - fMaxpar-1]; }
      fPbar[i-1] = pb - wg*fP[i + jh*fMaxpar - fMaxpar-1];
   }
   mninex(fPbar);
   Eval(nparx, fGin, ypbar, fU, 4);    ++fNfcn;
   if (ypbar < fAmin)         mnrazz(ypbar, fPbar, fSIMPy, jh, jl);
   mninex(fX);
   if (fNfcnmx + npfn - fNfcn < fNpar*3) goto L90;
   if (fEDM > fEpsi*2) goto L1;
L90:
   if (fISW[4] >= 0) mnprin(5, fAmin);
} /* mnsimp_ */

//______________________________________________________________________________
void TMinuit::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*-*-*-*-*
//*-*      =========================================================
//*-*       User-called
//*-*          Namely, it returns:
//*-*        FMIN: the best function value found so far
//*-*        FEDM: the estimated vertical distance remaining to minimum
//*-*        ERRDEF: the value of UP defining parameter uncertainties
//*-*        NPARI: the number of currently variable parameters
//*-*        NPARX: the highest (external) parameter number defined by user
//*-*        ISTAT: a status integer indicating how good is the covariance
//*-*           matrix:  0= not calculated at all
//*-*                    1= approximation only, not accurate
//*-*                    2= full matrix, but forced positive-definite
//*-*                    3= full accurate covariance matrix
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   fmin   = fAmin;
   fedm   = fEDM;
   errdef = fUp;
   npari  = fNpar;
   nparx  = fNu;
   istat  = fISW[1];
   if (fEDM == fBigedm) fedm = fUp;
   if (fAmin == fUndefi) {
      fmin  = 0;
      fedm  = fUp;
      istat = 0;
   }
} /* mnstat_ */

//______________________________________________________________________________
void TMinuit::mntiny(Double_t epsp1, Double_t &epsbak)
{
//*-*-*-*-*-*-*-*To find the machine precision*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*            =============================
//*-*        Compares its argument with the value 1.0, and returns
//*-*        the value .TRUE. if they are equal.  To find EPSMAC
//*-*        safely by foiling the Fortran optimizer
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   epsbak = epsp1 - 1;
} /* mntiny_ */

//______________________________________________________________________________
Bool_t TMinuit::mnunpt(TString &cfname)
{
//*-*-*-*-*-*Returns .TRUE. if CFNAME contains unprintable characters*-*-*-*
//*-*        ========================================================
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Int_t i, l, ic;
   Bool_t ret_val;
   static TString cpt = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890./;:[]$%*_!@#&+()";

   ret_val = kFALSE;
   l       = strlen((const char*)cfname);
   for (i = 1; i <= l; ++i) {
      for (ic = 1; ic <= 80; ++ic) {
         if (cfname[i-1] == cpt[ic-1]) goto L100;
      }
      return kTRUE;
L100:
      ;
   }
   return ret_val;
} /* mnunpt_ */

//______________________________________________________________________________
void TMinuit::mnvert(Double_t *a, Int_t l, Int_t, Int_t n, Int_t &ifail)
{
//*-*-*-*-*-*-*-*-*-*-*-*Inverts a symmetric matrix*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                    ==========================
//*-*        inverts a symmetric matrix.   matrix is first scaled to
//*-*        have all ones on the diagonal (equivalent to change of units)
//*-*        but no pivoting is done since matrix is positive-definite.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   /* System generated locals */
   Int_t a_offset;

   /* Local variables */
   Double_t si;
   Int_t i, j, k, kp1, km1;

   /* Parameter adjustments */
   a_offset = l + 1;
   a -= a_offset;

   /* Function Body */
   ifail = 0;
   if (n < 1) goto L100;
   if (n > fMaxint) goto L100;
//*-*-                  scale matrix by sqrt of diag elements
   for (i = 1; i <= n; ++i) {
      si = a[i + i*l];
      if (si <= 0) goto L100;
      fVERTs[i-1] = 1 / TMath::Sqrt(si);
   }
   for (i = 1; i <= n; ++i) {
      for (j = 1; j <= n; ++j) {
         a[i + j*l] = a[i + j*l]*fVERTs[i-1]*fVERTs[j-1];
      }
   }
//*-*-                                       . . . start main loop . . . .
   for (i = 1; i <= n; ++i) {
      k = i;
//*-*-                  preparation for elimination step1
      if (a[k + k*l] != 0) fVERTq[k-1] = 1 / a[k + k*l];
      else goto L100;
      fVERTpp[k-1] = 1;
      a[k + k*l] = 0;
      kp1 = k + 1;
      km1 = k - 1;
      if (km1 < 0) goto L100;
      else if (km1 == 0) goto L50;
      else               goto L40;
L40:
      for (j = 1; j <= km1; ++j) {
         fVERTpp[j-1] = a[j + k*l];
         fVERTq[j-1]  = a[j + k*l]*fVERTq[k-1];
         a[j + k*l]   = 0;
      }
L50:
      if (k - n < 0) goto L51;
      else if (k - n == 0) goto L60;
      else                goto L100;
L51:
      for (j = kp1; j <= n; ++j) {
         fVERTpp[j-1] = a[k + j*l];
         fVERTq[j-1]  = -a[k + j*l]*fVERTq[k-1];
         a[k + j*l]   = 0;
      }
//*-*-                  elimination proper
L60:
      for (j = 1; j <= n; ++j) {
         for (k = j; k <= n; ++k) { a[j + k*l] += fVERTpp[j-1]*fVERTq[k-1]; }
      }
   }
//*-*-                  elements of left diagonal and unscaling
   for (j = 1; j <= n; ++j) {
      for (k = 1; k <= j; ++k) {
         a[k + j*l] = a[k + j*l]*fVERTs[k-1]*fVERTs[j-1];
         a[j + k*l] = a[k + j*l];
      }
   }
   return;
//*-*-                  failure return
L100:
   ifail = 1;
} /* mnvert_ */

//______________________________________________________________________________
void TMinuit::mnwarn(const char *copt1, const char *corg1, const char *cmes1)
{
//*-*-*-*-*-*-*-*-*-*-*-*Prints Warning messages*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                    =======================
//*-*     If COPT='W', CMES is a WARning message from CORG.
//*-*     If COPT='D', CMES is a DEBug message from CORG.
//*-*         If SET WARnings is in effect (the default), this routine
//*-*             prints the warning message CMES coming from CORG.
//*-*         If SET NOWarnings is in effect, the warning message is
//*-*             stored in a circular buffer of length kMAXMES.
//*-*         If called with CORG=CMES='SHO', it prints the messages in
//*-*             the circular buffer, FIFO, and empties the buffer.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   TString copt = copt1;
   TString corg = corg1;
   TString cmes = cmes1;

   const Int_t kMAXMES = 10;
   Int_t ityp, i, ic, nm;
   TString englsh, ctyp;

   if (corg(0,3) != "SHO" || cmes(0,3) != "SHO") {

//*-*-            Either print warning or put in buffer
      if (copt == "W") {
         ityp = 1;
         if (fLwarn) {
            Printf(" MINUIT WARNING IN %s",(const char*)corg);
            Printf(" ============== %s",(const char*)cmes);
            return;
         }
      } else {
         ityp = 2;
         if (fLrepor) {
            Printf(" MINUIT DEBUG FOR %s",(const char*)corg);
            Printf(" =============== %s ",(const char*)cmes);
            return;
         }
      }
//*-*-                if appropriate flag is off, fill circular buffer
      if (fNwrmes[ityp-1] == 0) fIcirc[ityp-1] = 0;
      ++fNwrmes[ityp-1];
      ++fIcirc[ityp-1];
      if (fIcirc[ityp-1] > 10)         fIcirc[ityp-1] = 1;
      ic = fIcirc[ityp-1];
      fOrigin[ic] = corg;
      fWarmes[ic] = cmes;
      fNfcwar[ic] = fNfcn;
      return;
   }

//*-*-            'SHO WARnings', ask if any suppressed mess in buffer
   if (copt == "W") {
      ityp = 1;
      ctyp = "WARNING";
   } else {
      ityp = 2;
      ctyp = "*DEBUG*";
   }
   if (fNwrmes[ityp-1] > 0) {
      englsh = " WAS SUPPRESSED.  ";
      if (fNwrmes[ityp-1] > 1) englsh = "S WERE SUPPRESSED.";
      Printf(" %5d MINUIT %s MESSAGE%s",fNwrmes[ityp-1]
             ,(const char*)ctyp,(const char*)englsh);
      nm = fNwrmes[ityp-1];
      ic = 0;
      if (nm > kMAXMES) {
         Printf(" ONLY THE MOST RECENT 10 WILL BE LISTED BELOW.");
         nm = kMAXMES;
         ic = fIcirc[ityp-1];
      }
      Printf("  CALLS  ORIGIN         MESSAGE");
      for (i = 1; i <= nm; ++i) {
         ++ic;
         if (ic > kMAXMES) ic = 1;
         Printf(" %6d  %s  %s", fNfcwar[ic],fOrigin[ic].Data(),fWarmes[ic].Data());
      }
      fNwrmes[ityp-1] = 0;
      Printf(" ");
   }
} /* mnwarn_ */

//______________________________________________________________________________
void TMinuit::mnwerr()
{
//*-*-*-*-*-*-*-*Calculates the WERR, external parameter errors*-*-*-*-*-*-*
//*-*            ==============================================
//*-*      and the global correlation coefficients, to be called
//*-*      whenever a new covariance matrix is available.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

   Double_t denom, ba, al, dx, du1, du2;
   Int_t ndex, ierr, i, j, k, l, ndiag, k1, iin;

//*-*-                        calculate external error if v exists
   if (fISW[1] >= 1) {
      for (l = 1; l <= fNpar; ++l) {
         ndex = l*(l + 1) / 2;
         dx = TMath::Sqrt(TMath::Abs(fVhmat[ndex-1]*fUp));
         i = fNexofi[l-1];
         if (fNvarl[i-1] > 1) {
            al = fAlim[i-1];
            ba = fBlim[i-1] - al;
            du1 = al + 0.5*(TMath::Sin(fX[l-1] + dx) + 1)*ba - fU[i-1];
            du2 = al + 0.5*(TMath::Sin(fX[l-1] - dx) + 1)*ba - fU[i-1];
            if (dx > 1) du1 = ba;
            dx = 0.5*(TMath::Abs(du1) + TMath::Abs(du2));
         }
         fWerr[l-1] = dx;
      }
   }
//*-*-                         global correlation coefficients
   if (fISW[1] >= 1) {
      for (i = 1; i <= fNpar; ++i) {
         fGlobcc[i-1] = 0;
         k1 = i*(i-1) / 2;
         for (j = 1; j <= i; ++j) {
            k = k1 + j;
            fP[i + j*fMaxpar - fMaxpar-1] = fVhmat[k-1];
            fP[j + i*fMaxpar - fMaxpar-1] = fP[i + j*fMaxpar - fMaxpar-1];
         }
      }
      mnvert(fP, fMaxint, fMaxint, fNpar, ierr);
      if (ierr == 0) {
         for (iin = 1; iin <= fNpar; ++iin) {
            ndiag = iin*(iin + 1) / 2;
            denom = fP[iin + iin*fMaxpar - fMaxpar-1]*fVhmat[ndiag-1];
            if (denom <= 1 && denom >= 0) fGlobcc[iin-1] = 0;
            else                          fGlobcc[iin-1] = TMath::Sqrt(1 - 1 / denom);
         }
      }
   }
} /* mnwerr_ */
 TMinuit.cxx:1
 TMinuit.cxx:2
 TMinuit.cxx:3
 TMinuit.cxx:4
 TMinuit.cxx:5
 TMinuit.cxx:6
 TMinuit.cxx:7
 TMinuit.cxx:8
 TMinuit.cxx:9
 TMinuit.cxx:10
 TMinuit.cxx:11
 TMinuit.cxx:12
 TMinuit.cxx:13
 TMinuit.cxx:14
 TMinuit.cxx:15
 TMinuit.cxx:16
 TMinuit.cxx:17
 TMinuit.cxx:18
 TMinuit.cxx:19
 TMinuit.cxx:20
 TMinuit.cxx:21
 TMinuit.cxx:22
 TMinuit.cxx:23
 TMinuit.cxx:24
 TMinuit.cxx:25
 TMinuit.cxx:26
 TMinuit.cxx:27
 TMinuit.cxx:28
 TMinuit.cxx:29
 TMinuit.cxx:30
 TMinuit.cxx:31
 TMinuit.cxx:32
 TMinuit.cxx:33
 TMinuit.cxx:34
 TMinuit.cxx:35
 TMinuit.cxx:36
 TMinuit.cxx:37
 TMinuit.cxx:38
 TMinuit.cxx:39
 TMinuit.cxx:40
 TMinuit.cxx:41
 TMinuit.cxx:42
 TMinuit.cxx:43
 TMinuit.cxx:44
 TMinuit.cxx:45
 TMinuit.cxx:46
 TMinuit.cxx:47
 TMinuit.cxx:48
 TMinuit.cxx:49
 TMinuit.cxx:50
 TMinuit.cxx:51
 TMinuit.cxx:52
 TMinuit.cxx:53
 TMinuit.cxx:54
 TMinuit.cxx:55
 TMinuit.cxx:56
 TMinuit.cxx:57
 TMinuit.cxx:58
 TMinuit.cxx:59
 TMinuit.cxx:60
 TMinuit.cxx:61
 TMinuit.cxx:62
 TMinuit.cxx:63
 TMinuit.cxx:64
 TMinuit.cxx:65
 TMinuit.cxx:66
 TMinuit.cxx:67
 TMinuit.cxx:68
 TMinuit.cxx:69
 TMinuit.cxx:70
 TMinuit.cxx:71
 TMinuit.cxx:72
 TMinuit.cxx:73
 TMinuit.cxx:74
 TMinuit.cxx:75
 TMinuit.cxx:76
 TMinuit.cxx:77
 TMinuit.cxx:78
 TMinuit.cxx:79
 TMinuit.cxx:80
 TMinuit.cxx:81
 TMinuit.cxx:82
 TMinuit.cxx:83
 TMinuit.cxx:84
 TMinuit.cxx:85
 TMinuit.cxx:86
 TMinuit.cxx:87
 TMinuit.cxx:88
 TMinuit.cxx:89
 TMinuit.cxx:90
 TMinuit.cxx:91
 TMinuit.cxx:92
 TMinuit.cxx:93
 TMinuit.cxx:94
 TMinuit.cxx:95
 TMinuit.cxx:96
 TMinuit.cxx:97
 TMinuit.cxx:98
 TMinuit.cxx:99
 TMinuit.cxx:100
 TMinuit.cxx:101
 TMinuit.cxx:102
 TMinuit.cxx:103
 TMinuit.cxx:104
 TMinuit.cxx:105
 TMinuit.cxx:106
 TMinuit.cxx:107
 TMinuit.cxx:108
 TMinuit.cxx:109
 TMinuit.cxx:110
 TMinuit.cxx:111
 TMinuit.cxx:112
 TMinuit.cxx:113
 TMinuit.cxx:114
 TMinuit.cxx:115
 TMinuit.cxx:116
 TMinuit.cxx:117
 TMinuit.cxx:118
 TMinuit.cxx:119
 TMinuit.cxx:120
 TMinuit.cxx:121
 TMinuit.cxx:122
 TMinuit.cxx:123
 TMinuit.cxx:124
 TMinuit.cxx:125
 TMinuit.cxx:126
 TMinuit.cxx:127
 TMinuit.cxx:128
 TMinuit.cxx:129
 TMinuit.cxx:130
 TMinuit.cxx:131
 TMinuit.cxx:132
 TMinuit.cxx:133
 TMinuit.cxx:134
 TMinuit.cxx:135
 TMinuit.cxx:136
 TMinuit.cxx:137
 TMinuit.cxx:138
 TMinuit.cxx:139
 TMinuit.cxx:140
 TMinuit.cxx:141
 TMinuit.cxx:142
 TMinuit.cxx:143
 TMinuit.cxx:144
 TMinuit.cxx:145
 TMinuit.cxx:146
 TMinuit.cxx:147
 TMinuit.cxx:148
 TMinuit.cxx:149
 TMinuit.cxx:150
 TMinuit.cxx:151
 TMinuit.cxx:152
 TMinuit.cxx:153
 TMinuit.cxx:154
 TMinuit.cxx:155
 TMinuit.cxx:156
 TMinuit.cxx:157
 TMinuit.cxx:158
 TMinuit.cxx:159
 TMinuit.cxx:160
 TMinuit.cxx:161
 TMinuit.cxx:162
 TMinuit.cxx:163
 TMinuit.cxx:164
 TMinuit.cxx:165
 TMinuit.cxx:166
 TMinuit.cxx:167
 TMinuit.cxx:168
 TMinuit.cxx:169
 TMinuit.cxx:170
 TMinuit.cxx:171
 TMinuit.cxx:172
 TMinuit.cxx:173
 TMinuit.cxx:174
 TMinuit.cxx:175
 TMinuit.cxx:176
 TMinuit.cxx:177
 TMinuit.cxx:178
 TMinuit.cxx:179
 TMinuit.cxx:180
 TMinuit.cxx:181
 TMinuit.cxx:182
 TMinuit.cxx:183
 TMinuit.cxx:184
 TMinuit.cxx:185
 TMinuit.cxx:186
 TMinuit.cxx:187
 TMinuit.cxx:188
 TMinuit.cxx:189
 TMinuit.cxx:190
 TMinuit.cxx:191
 TMinuit.cxx:192
 TMinuit.cxx:193
 TMinuit.cxx:194
 TMinuit.cxx:195
 TMinuit.cxx:196
 TMinuit.cxx:197
 TMinuit.cxx:198
 TMinuit.cxx:199
 TMinuit.cxx:200
 TMinuit.cxx:201
 TMinuit.cxx:202
 TMinuit.cxx:203
 TMinuit.cxx:204
 TMinuit.cxx:205
 TMinuit.cxx:206
 TMinuit.cxx:207
 TMinuit.cxx:208
 TMinuit.cxx:209
 TMinuit.cxx:210
 TMinuit.cxx:211
 TMinuit.cxx:212
 TMinuit.cxx:213
 TMinuit.cxx:214
 TMinuit.cxx:215
 TMinuit.cxx:216
 TMinuit.cxx:217
 TMinuit.cxx:218
 TMinuit.cxx:219
 TMinuit.cxx:220
 TMinuit.cxx:221
 TMinuit.cxx:222
 TMinuit.cxx:223
 TMinuit.cxx:224
 TMinuit.cxx:225
 TMinuit.cxx:226
 TMinuit.cxx:227
 TMinuit.cxx:228
 TMinuit.cxx:229
 TMinuit.cxx:230
 TMinuit.cxx:231
 TMinuit.cxx:232
 TMinuit.cxx:233
 TMinuit.cxx:234
 TMinuit.cxx:235
 TMinuit.cxx:236
 TMinuit.cxx:237
 TMinuit.cxx:238
 TMinuit.cxx:239
 TMinuit.cxx:240
 TMinuit.cxx:241
 TMinuit.cxx:242
 TMinuit.cxx:243
 TMinuit.cxx:244
 TMinuit.cxx:245
 TMinuit.cxx:246
 TMinuit.cxx:247
 TMinuit.cxx:248
 TMinuit.cxx:249
 TMinuit.cxx:250
 TMinuit.cxx:251
 TMinuit.cxx:252
 TMinuit.cxx:253
 TMinuit.cxx:254
 TMinuit.cxx:255
 TMinuit.cxx:256
 TMinuit.cxx:257
 TMinuit.cxx:258
 TMinuit.cxx:259
 TMinuit.cxx:260
 TMinuit.cxx:261
 TMinuit.cxx:262
 TMinuit.cxx:263
 TMinuit.cxx:264
 TMinuit.cxx:265
 TMinuit.cxx:266
 TMinuit.cxx:267
 TMinuit.cxx:268
 TMinuit.cxx:269
 TMinuit.cxx:270
 TMinuit.cxx:271
 TMinuit.cxx:272
 TMinuit.cxx:273
 TMinuit.cxx:274
 TMinuit.cxx:275
 TMinuit.cxx:276
 TMinuit.cxx:277
 TMinuit.cxx:278
 TMinuit.cxx:279
 TMinuit.cxx:280
 TMinuit.cxx:281
 TMinuit.cxx:282
 TMinuit.cxx:283
 TMinuit.cxx:284
 TMinuit.cxx:285
 TMinuit.cxx:286
 TMinuit.cxx:287
 TMinuit.cxx:288
 TMinuit.cxx:289
 TMinuit.cxx:290
 TMinuit.cxx:291
 TMinuit.cxx:292
 TMinuit.cxx:293
 TMinuit.cxx:294
 TMinuit.cxx:295
 TMinuit.cxx:296
 TMinuit.cxx:297
 TMinuit.cxx:298
 TMinuit.cxx:299
 TMinuit.cxx:300
 TMinuit.cxx:301
 TMinuit.cxx:302
 TMinuit.cxx:303
 TMinuit.cxx:304
 TMinuit.cxx:305
 TMinuit.cxx:306
 TMinuit.cxx:307
 TMinuit.cxx:308
 TMinuit.cxx:309
 TMinuit.cxx:310
 TMinuit.cxx:311
 TMinuit.cxx:312
 TMinuit.cxx:313
 TMinuit.cxx:314
 TMinuit.cxx:315
 TMinuit.cxx:316
 TMinuit.cxx:317
 TMinuit.cxx:318
 TMinuit.cxx:319
 TMinuit.cxx:320
 TMinuit.cxx:321
 TMinuit.cxx:322
 TMinuit.cxx:323
 TMinuit.cxx:324
 TMinuit.cxx:325
 TMinuit.cxx:326
 TMinuit.cxx:327
 TMinuit.cxx:328
 TMinuit.cxx:329
 TMinuit.cxx:330
 TMinuit.cxx:331
 TMinuit.cxx:332
 TMinuit.cxx:333
 TMinuit.cxx:334
 TMinuit.cxx:335
 TMinuit.cxx:336
 TMinuit.cxx:337
 TMinuit.cxx:338
 TMinuit.cxx:339
 TMinuit.cxx:340
 TMinuit.cxx:341
 TMinuit.cxx:342
 TMinuit.cxx:343
 TMinuit.cxx:344
 TMinuit.cxx:345
 TMinuit.cxx:346
 TMinuit.cxx:347
 TMinuit.cxx:348
 TMinuit.cxx:349
 TMinuit.cxx:350
 TMinuit.cxx:351
 TMinuit.cxx:352
 TMinuit.cxx:353
 TMinuit.cxx:354
 TMinuit.cxx:355
 TMinuit.cxx:356
 TMinuit.cxx:357
 TMinuit.cxx:358
 TMinuit.cxx:359
 TMinuit.cxx:360
 TMinuit.cxx:361
 TMinuit.cxx:362
 TMinuit.cxx:363
 TMinuit.cxx:364
 TMinuit.cxx:365
 TMinuit.cxx:366
 TMinuit.cxx:367
 TMinuit.cxx:368
 TMinuit.cxx:369
 TMinuit.cxx:370
 TMinuit.cxx:371
 TMinuit.cxx:372
 TMinuit.cxx:373
 TMinuit.cxx:374
 TMinuit.cxx:375
 TMinuit.cxx:376
 TMinuit.cxx:377
 TMinuit.cxx:378
 TMinuit.cxx:379
 TMinuit.cxx:380
 TMinuit.cxx:381
 TMinuit.cxx:382
 TMinuit.cxx:383
 TMinuit.cxx:384
 TMinuit.cxx:385
 TMinuit.cxx:386
 TMinuit.cxx:387
 TMinuit.cxx:388
 TMinuit.cxx:389
 TMinuit.cxx:390
 TMinuit.cxx:391
 TMinuit.cxx:392
 TMinuit.cxx:393
 TMinuit.cxx:394
 TMinuit.cxx:395
 TMinuit.cxx:396
 TMinuit.cxx:397
 TMinuit.cxx:398
 TMinuit.cxx:399
 TMinuit.cxx:400
 TMinuit.cxx:401
 TMinuit.cxx:402
 TMinuit.cxx:403
 TMinuit.cxx:404
 TMinuit.cxx:405
 TMinuit.cxx:406
 TMinuit.cxx:407
 TMinuit.cxx:408
 TMinuit.cxx:409
 TMinuit.cxx:410
 TMinuit.cxx:411
 TMinuit.cxx:412
 TMinuit.cxx:413
 TMinuit.cxx:414
 TMinuit.cxx:415
 TMinuit.cxx:416
 TMinuit.cxx:417
 TMinuit.cxx:418
 TMinuit.cxx:419
 TMinuit.cxx:420
 TMinuit.cxx:421
 TMinuit.cxx:422
 TMinuit.cxx:423
 TMinuit.cxx:424
 TMinuit.cxx:425
 TMinuit.cxx:426
 TMinuit.cxx:427
 TMinuit.cxx:428
 TMinuit.cxx:429
 TMinuit.cxx:430
 TMinuit.cxx:431
 TMinuit.cxx:432
 TMinuit.cxx:433
 TMinuit.cxx:434
 TMinuit.cxx:435
 TMinuit.cxx:436
 TMinuit.cxx:437
 TMinuit.cxx:438
 TMinuit.cxx:439
 TMinuit.cxx:440
 TMinuit.cxx:441
 TMinuit.cxx:442
 TMinuit.cxx:443
 TMinuit.cxx:444
 TMinuit.cxx:445
 TMinuit.cxx:446
 TMinuit.cxx:447
 TMinuit.cxx:448
 TMinuit.cxx:449
 TMinuit.cxx:450
 TMinuit.cxx:451
 TMinuit.cxx:452
 TMinuit.cxx:453
 TMinuit.cxx:454
 TMinuit.cxx:455
 TMinuit.cxx:456
 TMinuit.cxx:457
 TMinuit.cxx:458
 TMinuit.cxx:459
 TMinuit.cxx:460
 TMinuit.cxx:461
 TMinuit.cxx:462
 TMinuit.cxx:463
 TMinuit.cxx:464
 TMinuit.cxx:465
 TMinuit.cxx:466
 TMinuit.cxx:467
 TMinuit.cxx:468
 TMinuit.cxx:469
 TMinuit.cxx:470
 TMinuit.cxx:471
 TMinuit.cxx:472
 TMinuit.cxx:473
 TMinuit.cxx:474
 TMinuit.cxx:475
 TMinuit.cxx:476
 TMinuit.cxx:477
 TMinuit.cxx:478
 TMinuit.cxx:479
 TMinuit.cxx:480
 TMinuit.cxx:481
 TMinuit.cxx:482
 TMinuit.cxx:483
 TMinuit.cxx:484
 TMinuit.cxx:485
 TMinuit.cxx:486
 TMinuit.cxx:487
 TMinuit.cxx:488
 TMinuit.cxx:489
 TMinuit.cxx:490
 TMinuit.cxx:491
 TMinuit.cxx:492
 TMinuit.cxx:493
 TMinuit.cxx:494
 TMinuit.cxx:495
 TMinuit.cxx:496
 TMinuit.cxx:497
 TMinuit.cxx:498
 TMinuit.cxx:499
 TMinuit.cxx:500
 TMinuit.cxx:501
 TMinuit.cxx:502
 TMinuit.cxx:503
 TMinuit.cxx:504
 TMinuit.cxx:505
 TMinuit.cxx:506
 TMinuit.cxx:507
 TMinuit.cxx:508
 TMinuit.cxx:509
 TMinuit.cxx:510
 TMinuit.cxx:511
 TMinuit.cxx:512
 TMinuit.cxx:513
 TMinuit.cxx:514
 TMinuit.cxx:515
 TMinuit.cxx:516
 TMinuit.cxx:517
 TMinuit.cxx:518
 TMinuit.cxx:519
 TMinuit.cxx:520
 TMinuit.cxx:521
 TMinuit.cxx:522
 TMinuit.cxx:523
 TMinuit.cxx:524
 TMinuit.cxx:525
 TMinuit.cxx:526
 TMinuit.cxx:527
 TMinuit.cxx:528
 TMinuit.cxx:529
 TMinuit.cxx:530
 TMinuit.cxx:531
 TMinuit.cxx:532
 TMinuit.cxx:533
 TMinuit.cxx:534
 TMinuit.cxx:535
 TMinuit.cxx:536
 TMinuit.cxx:537
 TMinuit.cxx:538
 TMinuit.cxx:539
 TMinuit.cxx:540
 TMinuit.cxx:541
 TMinuit.cxx:542
 TMinuit.cxx:543
 TMinuit.cxx:544
 TMinuit.cxx:545
 TMinuit.cxx:546
 TMinuit.cxx:547
 TMinuit.cxx:548
 TMinuit.cxx:549
 TMinuit.cxx:550
 TMinuit.cxx:551
 TMinuit.cxx:552
 TMinuit.cxx:553
 TMinuit.cxx:554
 TMinuit.cxx:555
 TMinuit.cxx:556
 TMinuit.cxx:557
 TMinuit.cxx:558
 TMinuit.cxx:559
 TMinuit.cxx:560
 TMinuit.cxx:561
 TMinuit.cxx:562
 TMinuit.cxx:563
 TMinuit.cxx:564
 TMinuit.cxx:565
 TMinuit.cxx:566
 TMinuit.cxx:567
 TMinuit.cxx:568
 TMinuit.cxx:569
 TMinuit.cxx:570
 TMinuit.cxx:571
 TMinuit.cxx:572
 TMinuit.cxx:573
 TMinuit.cxx:574
 TMinuit.cxx:575
 TMinuit.cxx:576
 TMinuit.cxx:577
 TMinuit.cxx:578
 TMinuit.cxx:579
 TMinuit.cxx:580
 TMinuit.cxx:581
 TMinuit.cxx:582
 TMinuit.cxx:583
 TMinuit.cxx:584
 TMinuit.cxx:585
 TMinuit.cxx:586
 TMinuit.cxx:587
 TMinuit.cxx:588
 TMinuit.cxx:589
 TMinuit.cxx:590
 TMinuit.cxx:591
 TMinuit.cxx:592
 TMinuit.cxx:593
 TMinuit.cxx:594
 TMinuit.cxx:595
 TMinuit.cxx:596
 TMinuit.cxx:597
 TMinuit.cxx:598
 TMinuit.cxx:599
 TMinuit.cxx:600
 TMinuit.cxx:601
 TMinuit.cxx:602
 TMinuit.cxx:603
 TMinuit.cxx:604
 TMinuit.cxx:605
 TMinuit.cxx:606
 TMinuit.cxx:607
 TMinuit.cxx:608
 TMinuit.cxx:609
 TMinuit.cxx:610
 TMinuit.cxx:611
 TMinuit.cxx:612
 TMinuit.cxx:613
 TMinuit.cxx:614
 TMinuit.cxx:615
 TMinuit.cxx:616
 TMinuit.cxx:617
 TMinuit.cxx:618
 TMinuit.cxx:619
 TMinuit.cxx:620
 TMinuit.cxx:621
 TMinuit.cxx:622
 TMinuit.cxx:623
 TMinuit.cxx:624
 TMinuit.cxx:625
 TMinuit.cxx:626
 TMinuit.cxx:627
 TMinuit.cxx:628
 TMinuit.cxx:629
 TMinuit.cxx:630
 TMinuit.cxx:631
 TMinuit.cxx:632
 TMinuit.cxx:633
 TMinuit.cxx:634
 TMinuit.cxx:635
 TMinuit.cxx:636
 TMinuit.cxx:637
 TMinuit.cxx:638
 TMinuit.cxx:639
 TMinuit.cxx:640
 TMinuit.cxx:641
 TMinuit.cxx:642
 TMinuit.cxx:643
 TMinuit.cxx:644
 TMinuit.cxx:645
 TMinuit.cxx:646
 TMinuit.cxx:647
 TMinuit.cxx:648
 TMinuit.cxx:649
 TMinuit.cxx:650
 TMinuit.cxx:651
 TMinuit.cxx:652
 TMinuit.cxx:653
 TMinuit.cxx:654
 TMinuit.cxx:655
 TMinuit.cxx:656
 TMinuit.cxx:657
 TMinuit.cxx:658
 TMinuit.cxx:659
 TMinuit.cxx:660
 TMinuit.cxx:661
 TMinuit.cxx:662
 TMinuit.cxx:663
 TMinuit.cxx:664
 TMinuit.cxx:665
 TMinuit.cxx:666
 TMinuit.cxx:667
 TMinuit.cxx:668
 TMinuit.cxx:669
 TMinuit.cxx:670
 TMinuit.cxx:671
 TMinuit.cxx:672
 TMinuit.cxx:673
 TMinuit.cxx:674
 TMinuit.cxx:675
 TMinuit.cxx:676
 TMinuit.cxx:677
 TMinuit.cxx:678
 TMinuit.cxx:679
 TMinuit.cxx:680
 TMinuit.cxx:681
 TMinuit.cxx:682
 TMinuit.cxx:683
 TMinuit.cxx:684
 TMinuit.cxx:685
 TMinuit.cxx:686
 TMinuit.cxx:687
 TMinuit.cxx:688
 TMinuit.cxx:689
 TMinuit.cxx:690
 TMinuit.cxx:691
 TMinuit.cxx:692
 TMinuit.cxx:693
 TMinuit.cxx:694
 TMinuit.cxx:695
 TMinuit.cxx:696
 TMinuit.cxx:697
 TMinuit.cxx:698
 TMinuit.cxx:699
 TMinuit.cxx:700
 TMinuit.cxx:701
 TMinuit.cxx:702
 TMinuit.cxx:703
 TMinuit.cxx:704
 TMinuit.cxx:705
 TMinuit.cxx:706
 TMinuit.cxx:707
 TMinuit.cxx:708
 TMinuit.cxx:709
 TMinuit.cxx:710
 TMinuit.cxx:711
 TMinuit.cxx:712
 TMinuit.cxx:713
 TMinuit.cxx:714
 TMinuit.cxx:715
 TMinuit.cxx:716
 TMinuit.cxx:717
 TMinuit.cxx:718
 TMinuit.cxx:719
 TMinuit.cxx:720
 TMinuit.cxx:721
 TMinuit.cxx:722
 TMinuit.cxx:723
 TMinuit.cxx:724
 TMinuit.cxx:725
 TMinuit.cxx:726
 TMinuit.cxx:727
 TMinuit.cxx:728
 TMinuit.cxx:729
 TMinuit.cxx:730
 TMinuit.cxx:731
 TMinuit.cxx:732
 TMinuit.cxx:733
 TMinuit.cxx:734
 TMinuit.cxx:735
 TMinuit.cxx:736
 TMinuit.cxx:737
 TMinuit.cxx:738
 TMinuit.cxx:739
 TMinuit.cxx:740
 TMinuit.cxx:741
 TMinuit.cxx:742
 TMinuit.cxx:743
 TMinuit.cxx:744
 TMinuit.cxx:745
 TMinuit.cxx:746
 TMinuit.cxx:747
 TMinuit.cxx:748
 TMinuit.cxx:749
 TMinuit.cxx:750
 TMinuit.cxx:751
 TMinuit.cxx:752
 TMinuit.cxx:753
 TMinuit.cxx:754
 TMinuit.cxx:755
 TMinuit.cxx:756
 TMinuit.cxx:757
 TMinuit.cxx:758
 TMinuit.cxx:759
 TMinuit.cxx:760
 TMinuit.cxx:761
 TMinuit.cxx:762
 TMinuit.cxx:763
 TMinuit.cxx:764
 TMinuit.cxx:765
 TMinuit.cxx:766
 TMinuit.cxx:767
 TMinuit.cxx:768
 TMinuit.cxx:769
 TMinuit.cxx:770
 TMinuit.cxx:771
 TMinuit.cxx:772
 TMinuit.cxx:773
 TMinuit.cxx:774
 TMinuit.cxx:775
 TMinuit.cxx:776
 TMinuit.cxx:777
 TMinuit.cxx:778
 TMinuit.cxx:779
 TMinuit.cxx:780
 TMinuit.cxx:781
 TMinuit.cxx:782
 TMinuit.cxx:783
 TMinuit.cxx:784
 TMinuit.cxx:785
 TMinuit.cxx:786
 TMinuit.cxx:787
 TMinuit.cxx:788
 TMinuit.cxx:789
 TMinuit.cxx:790
 TMinuit.cxx:791
 TMinuit.cxx:792
 TMinuit.cxx:793
 TMinuit.cxx:794
 TMinuit.cxx:795
 TMinuit.cxx:796
 TMinuit.cxx:797
 TMinuit.cxx:798
 TMinuit.cxx:799
 TMinuit.cxx:800
 TMinuit.cxx:801
 TMinuit.cxx:802
 TMinuit.cxx:803
 TMinuit.cxx:804
 TMinuit.cxx:805
 TMinuit.cxx:806
 TMinuit.cxx:807
 TMinuit.cxx:808
 TMinuit.cxx:809
 TMinuit.cxx:810
 TMinuit.cxx:811
 TMinuit.cxx:812
 TMinuit.cxx:813
 TMinuit.cxx:814
 TMinuit.cxx:815
 TMinuit.cxx:816
 TMinuit.cxx:817
 TMinuit.cxx:818
 TMinuit.cxx:819
 TMinuit.cxx:820
 TMinuit.cxx:821
 TMinuit.cxx:822
 TMinuit.cxx:823
 TMinuit.cxx:824
 TMinuit.cxx:825
 TMinuit.cxx:826
 TMinuit.cxx:827
 TMinuit.cxx:828
 TMinuit.cxx:829
 TMinuit.cxx:830
 TMinuit.cxx:831
 TMinuit.cxx:832
 TMinuit.cxx:833
 TMinuit.cxx:834
 TMinuit.cxx:835
 TMinuit.cxx:836
 TMinuit.cxx:837
 TMinuit.cxx:838
 TMinuit.cxx:839
 TMinuit.cxx:840
 TMinuit.cxx:841
 TMinuit.cxx:842
 TMinuit.cxx:843
 TMinuit.cxx:844
 TMinuit.cxx:845
 TMinuit.cxx:846
 TMinuit.cxx:847
 TMinuit.cxx:848
 TMinuit.cxx:849
 TMinuit.cxx:850
 TMinuit.cxx:851
 TMinuit.cxx:852
 TMinuit.cxx:853
 TMinuit.cxx:854
 TMinuit.cxx:855
 TMinuit.cxx:856
 TMinuit.cxx:857
 TMinuit.cxx:858
 TMinuit.cxx:859
 TMinuit.cxx:860
 TMinuit.cxx:861
 TMinuit.cxx:862
 TMinuit.cxx:863
 TMinuit.cxx:864
 TMinuit.cxx:865
 TMinuit.cxx:866
 TMinuit.cxx:867
 TMinuit.cxx:868
 TMinuit.cxx:869
 TMinuit.cxx:870
 TMinuit.cxx:871
 TMinuit.cxx:872
 TMinuit.cxx:873
 TMinuit.cxx:874
 TMinuit.cxx:875
 TMinuit.cxx:876
 TMinuit.cxx:877
 TMinuit.cxx:878
 TMinuit.cxx:879
 TMinuit.cxx:880
 TMinuit.cxx:881
 TMinuit.cxx:882
 TMinuit.cxx:883
 TMinuit.cxx:884
 TMinuit.cxx:885
 TMinuit.cxx:886
 TMinuit.cxx:887
 TMinuit.cxx:888
 TMinuit.cxx:889
 TMinuit.cxx:890
 TMinuit.cxx:891
 TMinuit.cxx:892
 TMinuit.cxx:893
 TMinuit.cxx:894
 TMinuit.cxx:895
 TMinuit.cxx:896
 TMinuit.cxx:897
 TMinuit.cxx:898
 TMinuit.cxx:899
 TMinuit.cxx:900
 TMinuit.cxx:901
 TMinuit.cxx:902
 TMinuit.cxx:903
 TMinuit.cxx:904
 TMinuit.cxx:905
 TMinuit.cxx:906
 TMinuit.cxx:907
 TMinuit.cxx:908
 TMinuit.cxx:909
 TMinuit.cxx:910
 TMinuit.cxx:911
 TMinuit.cxx:912
 TMinuit.cxx:913
 TMinuit.cxx:914
 TMinuit.cxx:915
 TMinuit.cxx:916
 TMinuit.cxx:917
 TMinuit.cxx:918
 TMinuit.cxx:919
 TMinuit.cxx:920
 TMinuit.cxx:921
 TMinuit.cxx:922
 TMinuit.cxx:923
 TMinuit.cxx:924
 TMinuit.cxx:925
 TMinuit.cxx:926
 TMinuit.cxx:927
 TMinuit.cxx:928
 TMinuit.cxx:929
 TMinuit.cxx:930
 TMinuit.cxx:931
 TMinuit.cxx:932
 TMinuit.cxx:933
 TMinuit.cxx:934
 TMinuit.cxx:935
 TMinuit.cxx:936
 TMinuit.cxx:937
 TMinuit.cxx:938
 TMinuit.cxx:939
 TMinuit.cxx:940
 TMinuit.cxx:941
 TMinuit.cxx:942
 TMinuit.cxx:943
 TMinuit.cxx:944
 TMinuit.cxx:945
 TMinuit.cxx:946
 TMinuit.cxx:947
 TMinuit.cxx:948
 TMinuit.cxx:949
 TMinuit.cxx:950
 TMinuit.cxx:951
 TMinuit.cxx:952
 TMinuit.cxx:953
 TMinuit.cxx:954
 TMinuit.cxx:955
 TMinuit.cxx:956
 TMinuit.cxx:957
 TMinuit.cxx:958
 TMinuit.cxx:959
 TMinuit.cxx:960
 TMinuit.cxx:961
 TMinuit.cxx:962
 TMinuit.cxx:963
 TMinuit.cxx:964
 TMinuit.cxx:965
 TMinuit.cxx:966
 TMinuit.cxx:967
 TMinuit.cxx:968
 TMinuit.cxx:969
 TMinuit.cxx:970
 TMinuit.cxx:971
 TMinuit.cxx:972
 TMinuit.cxx:973
 TMinuit.cxx:974
 TMinuit.cxx:975
 TMinuit.cxx:976
 TMinuit.cxx:977
 TMinuit.cxx:978
 TMinuit.cxx:979
 TMinuit.cxx:980
 TMinuit.cxx:981
 TMinuit.cxx:982
 TMinuit.cxx:983
 TMinuit.cxx:984
 TMinuit.cxx:985
 TMinuit.cxx:986
 TMinuit.cxx:987
 TMinuit.cxx:988
 TMinuit.cxx:989
 TMinuit.cxx:990
 TMinuit.cxx:991
 TMinuit.cxx:992
 TMinuit.cxx:993
 TMinuit.cxx:994
 TMinuit.cxx:995
 TMinuit.cxx:996
 TMinuit.cxx:997
 TMinuit.cxx:998
 TMinuit.cxx:999
 TMinuit.cxx:1000
 TMinuit.cxx:1001
 TMinuit.cxx:1002
 TMinuit.cxx:1003
 TMinuit.cxx:1004
 TMinuit.cxx:1005
 TMinuit.cxx:1006
 TMinuit.cxx:1007
 TMinuit.cxx:1008
 TMinuit.cxx:1009
 TMinuit.cxx:1010
 TMinuit.cxx:1011
 TMinuit.cxx:1012
 TMinuit.cxx:1013
 TMinuit.cxx:1014
 TMinuit.cxx:1015
 TMinuit.cxx:1016
 TMinuit.cxx:1017
 TMinuit.cxx:1018
 TMinuit.cxx:1019
 TMinuit.cxx:1020
 TMinuit.cxx:1021
 TMinuit.cxx:1022
 TMinuit.cxx:1023
 TMinuit.cxx:1024
 TMinuit.cxx:1025
 TMinuit.cxx:1026
 TMinuit.cxx:1027
 TMinuit.cxx:1028
 TMinuit.cxx:1029
 TMinuit.cxx:1030
 TMinuit.cxx:1031
 TMinuit.cxx:1032
 TMinuit.cxx:1033
 TMinuit.cxx:1034
 TMinuit.cxx:1035
 TMinuit.cxx:1036
 TMinuit.cxx:1037
 TMinuit.cxx:1038
 TMinuit.cxx:1039
 TMinuit.cxx:1040
 TMinuit.cxx:1041
 TMinuit.cxx:1042
 TMinuit.cxx:1043
 TMinuit.cxx:1044
 TMinuit.cxx:1045
 TMinuit.cxx:1046
 TMinuit.cxx:1047
 TMinuit.cxx:1048
 TMinuit.cxx:1049
 TMinuit.cxx:1050
 TMinuit.cxx:1051
 TMinuit.cxx:1052
 TMinuit.cxx:1053
 TMinuit.cxx:1054
 TMinuit.cxx:1055
 TMinuit.cxx:1056
 TMinuit.cxx:1057
 TMinuit.cxx:1058
 TMinuit.cxx:1059
 TMinuit.cxx:1060
 TMinuit.cxx:1061
 TMinuit.cxx:1062
 TMinuit.cxx:1063
 TMinuit.cxx:1064
 TMinuit.cxx:1065
 TMinuit.cxx:1066
 TMinuit.cxx:1067
 TMinuit.cxx:1068
 TMinuit.cxx:1069
 TMinuit.cxx:1070
 TMinuit.cxx:1071
 TMinuit.cxx:1072
 TMinuit.cxx:1073
 TMinuit.cxx:1074
 TMinuit.cxx:1075
 TMinuit.cxx:1076
 TMinuit.cxx:1077
 TMinuit.cxx:1078
 TMinuit.cxx:1079
 TMinuit.cxx:1080
 TMinuit.cxx:1081
 TMinuit.cxx:1082
 TMinuit.cxx:1083
 TMinuit.cxx:1084
 TMinuit.cxx:1085
 TMinuit.cxx:1086
 TMinuit.cxx:1087
 TMinuit.cxx:1088
 TMinuit.cxx:1089
 TMinuit.cxx:1090
 TMinuit.cxx:1091
 TMinuit.cxx:1092
 TMinuit.cxx:1093
 TMinuit.cxx:1094
 TMinuit.cxx:1095
 TMinuit.cxx:1096
 TMinuit.cxx:1097
 TMinuit.cxx:1098
 TMinuit.cxx:1099
 TMinuit.cxx:1100
 TMinuit.cxx:1101
 TMinuit.cxx:1102
 TMinuit.cxx:1103
 TMinuit.cxx:1104
 TMinuit.cxx:1105
 TMinuit.cxx:1106
 TMinuit.cxx:1107
 TMinuit.cxx:1108
 TMinuit.cxx:1109
 TMinuit.cxx:1110
 TMinuit.cxx:1111
 TMinuit.cxx:1112
 TMinuit.cxx:1113
 TMinuit.cxx:1114
 TMinuit.cxx:1115
 TMinuit.cxx:1116
 TMinuit.cxx:1117
 TMinuit.cxx:1118
 TMinuit.cxx:1119
 TMinuit.cxx:1120
 TMinuit.cxx:1121
 TMinuit.cxx:1122
 TMinuit.cxx:1123
 TMinuit.cxx:1124
 TMinuit.cxx:1125
 TMinuit.cxx:1126
 TMinuit.cxx:1127
 TMinuit.cxx:1128
 TMinuit.cxx:1129
 TMinuit.cxx:1130
 TMinuit.cxx:1131
 TMinuit.cxx:1132
 TMinuit.cxx:1133
 TMinuit.cxx:1134
 TMinuit.cxx:1135
 TMinuit.cxx:1136
 TMinuit.cxx:1137
 TMinuit.cxx:1138
 TMinuit.cxx:1139
 TMinuit.cxx:1140
 TMinuit.cxx:1141
 TMinuit.cxx:1142
 TMinuit.cxx:1143
 TMinuit.cxx:1144
 TMinuit.cxx:1145
 TMinuit.cxx:1146
 TMinuit.cxx:1147
 TMinuit.cxx:1148
 TMinuit.cxx:1149
 TMinuit.cxx:1150
 TMinuit.cxx:1151
 TMinuit.cxx:1152
 TMinuit.cxx:1153
 TMinuit.cxx:1154
 TMinuit.cxx:1155
 TMinuit.cxx:1156
 TMinuit.cxx:1157
 TMinuit.cxx:1158
 TMinuit.cxx:1159
 TMinuit.cxx:1160
 TMinuit.cxx:1161
 TMinuit.cxx:1162
 TMinuit.cxx:1163
 TMinuit.cxx:1164
 TMinuit.cxx:1165
 TMinuit.cxx:1166
 TMinuit.cxx:1167
 TMinuit.cxx:1168
 TMinuit.cxx:1169
 TMinuit.cxx:1170
 TMinuit.cxx:1171
 TMinuit.cxx:1172
 TMinuit.cxx:1173
 TMinuit.cxx:1174
 TMinuit.cxx:1175
 TMinuit.cxx:1176
 TMinuit.cxx:1177
 TMinuit.cxx:1178
 TMinuit.cxx:1179
 TMinuit.cxx:1180
 TMinuit.cxx:1181
 TMinuit.cxx:1182
 TMinuit.cxx:1183
 TMinuit.cxx:1184
 TMinuit.cxx:1185
 TMinuit.cxx:1186
 TMinuit.cxx:1187
 TMinuit.cxx:1188
 TMinuit.cxx:1189
 TMinuit.cxx:1190
 TMinuit.cxx:1191
 TMinuit.cxx:1192
 TMinuit.cxx:1193
 TMinuit.cxx:1194
 TMinuit.cxx:1195
 TMinuit.cxx:1196
 TMinuit.cxx:1197
 TMinuit.cxx:1198
 TMinuit.cxx:1199
 TMinuit.cxx:1200
 TMinuit.cxx:1201
 TMinuit.cxx:1202
 TMinuit.cxx:1203
 TMinuit.cxx:1204
 TMinuit.cxx:1205
 TMinuit.cxx:1206
 TMinuit.cxx:1207
 TMinuit.cxx:1208
 TMinuit.cxx:1209
 TMinuit.cxx:1210
 TMinuit.cxx:1211
 TMinuit.cxx:1212
 TMinuit.cxx:1213
 TMinuit.cxx:1214
 TMinuit.cxx:1215
 TMinuit.cxx:1216
 TMinuit.cxx:1217
 TMinuit.cxx:1218
 TMinuit.cxx:1219
 TMinuit.cxx:1220
 TMinuit.cxx:1221
 TMinuit.cxx:1222
 TMinuit.cxx:1223
 TMinuit.cxx:1224
 TMinuit.cxx:1225
 TMinuit.cxx:1226
 TMinuit.cxx:1227
 TMinuit.cxx:1228
 TMinuit.cxx:1229
 TMinuit.cxx:1230
 TMinuit.cxx:1231
 TMinuit.cxx:1232
 TMinuit.cxx:1233
 TMinuit.cxx:1234
 TMinuit.cxx:1235
 TMinuit.cxx:1236
 TMinuit.cxx:1237
 TMinuit.cxx:1238
 TMinuit.cxx:1239
 TMinuit.cxx:1240
 TMinuit.cxx:1241
 TMinuit.cxx:1242
 TMinuit.cxx:1243
 TMinuit.cxx:1244
 TMinuit.cxx:1245
 TMinuit.cxx:1246
 TMinuit.cxx:1247
 TMinuit.cxx:1248
 TMinuit.cxx:1249
 TMinuit.cxx:1250
 TMinuit.cxx:1251
 TMinuit.cxx:1252
 TMinuit.cxx:1253
 TMinuit.cxx:1254
 TMinuit.cxx:1255
 TMinuit.cxx:1256
 TMinuit.cxx:1257
 TMinuit.cxx:1258
 TMinuit.cxx:1259
 TMinuit.cxx:1260
 TMinuit.cxx:1261
 TMinuit.cxx:1262
 TMinuit.cxx:1263
 TMinuit.cxx:1264
 TMinuit.cxx:1265
 TMinuit.cxx:1266
 TMinuit.cxx:1267
 TMinuit.cxx:1268
 TMinuit.cxx:1269
 TMinuit.cxx:1270
 TMinuit.cxx:1271
 TMinuit.cxx:1272
 TMinuit.cxx:1273
 TMinuit.cxx:1274
 TMinuit.cxx:1275
 TMinuit.cxx:1276
 TMinuit.cxx:1277
 TMinuit.cxx:1278
 TMinuit.cxx:1279
 TMinuit.cxx:1280
 TMinuit.cxx:1281
 TMinuit.cxx:1282
 TMinuit.cxx:1283
 TMinuit.cxx:1284
 TMinuit.cxx:1285
 TMinuit.cxx:1286
 TMinuit.cxx:1287
 TMinuit.cxx:1288
 TMinuit.cxx:1289
 TMinuit.cxx:1290
 TMinuit.cxx:1291
 TMinuit.cxx:1292
 TMinuit.cxx:1293
 TMinuit.cxx:1294
 TMinuit.cxx:1295
 TMinuit.cxx:1296
 TMinuit.cxx:1297
 TMinuit.cxx:1298
 TMinuit.cxx:1299
 TMinuit.cxx:1300
 TMinuit.cxx:1301
 TMinuit.cxx:1302
 TMinuit.cxx:1303
 TMinuit.cxx:1304
 TMinuit.cxx:1305
 TMinuit.cxx:1306
 TMinuit.cxx:1307
 TMinuit.cxx:1308
 TMinuit.cxx:1309
 TMinuit.cxx:1310
 TMinuit.cxx:1311
 TMinuit.cxx:1312
 TMinuit.cxx:1313
 TMinuit.cxx:1314
 TMinuit.cxx:1315
 TMinuit.cxx:1316
 TMinuit.cxx:1317
 TMinuit.cxx:1318
 TMinuit.cxx:1319
 TMinuit.cxx:1320
 TMinuit.cxx:1321
 TMinuit.cxx:1322
 TMinuit.cxx:1323
 TMinuit.cxx:1324
 TMinuit.cxx:1325
 TMinuit.cxx:1326
 TMinuit.cxx:1327
 TMinuit.cxx:1328
 TMinuit.cxx:1329
 TMinuit.cxx:1330
 TMinuit.cxx:1331
 TMinuit.cxx:1332
 TMinuit.cxx:1333
 TMinuit.cxx:1334
 TMinuit.cxx:1335
 TMinuit.cxx:1336
 TMinuit.cxx:1337
 TMinuit.cxx:1338
 TMinuit.cxx:1339
 TMinuit.cxx:1340
 TMinuit.cxx:1341
 TMinuit.cxx:1342
 TMinuit.cxx:1343
 TMinuit.cxx:1344
 TMinuit.cxx:1345
 TMinuit.cxx:1346
 TMinuit.cxx:1347
 TMinuit.cxx:1348
 TMinuit.cxx:1349
 TMinuit.cxx:1350
 TMinuit.cxx:1351
 TMinuit.cxx:1352
 TMinuit.cxx:1353
 TMinuit.cxx:1354
 TMinuit.cxx:1355
 TMinuit.cxx:1356
 TMinuit.cxx:1357
 TMinuit.cxx:1358
 TMinuit.cxx:1359
 TMinuit.cxx:1360
 TMinuit.cxx:1361
 TMinuit.cxx:1362
 TMinuit.cxx:1363
 TMinuit.cxx:1364
 TMinuit.cxx:1365
 TMinuit.cxx:1366
 TMinuit.cxx:1367
 TMinuit.cxx:1368
 TMinuit.cxx:1369
 TMinuit.cxx:1370
 TMinuit.cxx:1371
 TMinuit.cxx:1372
 TMinuit.cxx:1373
 TMinuit.cxx:1374
 TMinuit.cxx:1375
 TMinuit.cxx:1376
 TMinuit.cxx:1377
 TMinuit.cxx:1378
 TMinuit.cxx:1379
 TMinuit.cxx:1380
 TMinuit.cxx:1381
 TMinuit.cxx:1382
 TMinuit.cxx:1383
 TMinuit.cxx:1384
 TMinuit.cxx:1385
 TMinuit.cxx:1386
 TMinuit.cxx:1387
 TMinuit.cxx:1388
 TMinuit.cxx:1389
 TMinuit.cxx:1390
 TMinuit.cxx:1391
 TMinuit.cxx:1392
 TMinuit.cxx:1393
 TMinuit.cxx:1394
 TMinuit.cxx:1395
 TMinuit.cxx:1396
 TMinuit.cxx:1397
 TMinuit.cxx:1398
 TMinuit.cxx:1399
 TMinuit.cxx:1400
 TMinuit.cxx:1401
 TMinuit.cxx:1402
 TMinuit.cxx:1403
 TMinuit.cxx:1404
 TMinuit.cxx:1405
 TMinuit.cxx:1406
 TMinuit.cxx:1407
 TMinuit.cxx:1408
 TMinuit.cxx:1409
 TMinuit.cxx:1410
 TMinuit.cxx:1411
 TMinuit.cxx:1412
 TMinuit.cxx:1413
 TMinuit.cxx:1414
 TMinuit.cxx:1415
 TMinuit.cxx:1416
 TMinuit.cxx:1417
 TMinuit.cxx:1418
 TMinuit.cxx:1419
 TMinuit.cxx:1420
 TMinuit.cxx:1421
 TMinuit.cxx:1422
 TMinuit.cxx:1423
 TMinuit.cxx:1424
 TMinuit.cxx:1425
 TMinuit.cxx:1426
 TMinuit.cxx:1427
 TMinuit.cxx:1428
 TMinuit.cxx:1429
 TMinuit.cxx:1430
 TMinuit.cxx:1431
 TMinuit.cxx:1432
 TMinuit.cxx:1433
 TMinuit.cxx:1434
 TMinuit.cxx:1435
 TMinuit.cxx:1436
 TMinuit.cxx:1437
 TMinuit.cxx:1438
 TMinuit.cxx:1439
 TMinuit.cxx:1440
 TMinuit.cxx:1441
 TMinuit.cxx:1442
 TMinuit.cxx:1443
 TMinuit.cxx:1444
 TMinuit.cxx:1445
 TMinuit.cxx:1446
 TMinuit.cxx:1447
 TMinuit.cxx:1448
 TMinuit.cxx:1449
 TMinuit.cxx:1450
 TMinuit.cxx:1451
 TMinuit.cxx:1452
 TMinuit.cxx:1453
 TMinuit.cxx:1454
 TMinuit.cxx:1455
 TMinuit.cxx:1456
 TMinuit.cxx:1457
 TMinuit.cxx:1458
 TMinuit.cxx:1459
 TMinuit.cxx:1460
 TMinuit.cxx:1461
 TMinuit.cxx:1462
 TMinuit.cxx:1463
 TMinuit.cxx:1464
 TMinuit.cxx:1465
 TMinuit.cxx:1466
 TMinuit.cxx:1467
 TMinuit.cxx:1468
 TMinuit.cxx:1469
 TMinuit.cxx:1470
 TMinuit.cxx:1471
 TMinuit.cxx:1472
 TMinuit.cxx:1473
 TMinuit.cxx:1474
 TMinuit.cxx:1475
 TMinuit.cxx:1476
 TMinuit.cxx:1477
 TMinuit.cxx:1478
 TMinuit.cxx:1479
 TMinuit.cxx:1480
 TMinuit.cxx:1481
 TMinuit.cxx:1482
 TMinuit.cxx:1483
 TMinuit.cxx:1484
 TMinuit.cxx:1485
 TMinuit.cxx:1486
 TMinuit.cxx:1487
 TMinuit.cxx:1488
 TMinuit.cxx:1489
 TMinuit.cxx:1490
 TMinuit.cxx:1491
 TMinuit.cxx:1492
 TMinuit.cxx:1493
 TMinuit.cxx:1494
 TMinuit.cxx:1495
 TMinuit.cxx:1496
 TMinuit.cxx:1497
 TMinuit.cxx:1498
 TMinuit.cxx:1499
 TMinuit.cxx:1500
 TMinuit.cxx:1501
 TMinuit.cxx:1502
 TMinuit.cxx:1503
 TMinuit.cxx:1504
 TMinuit.cxx:1505
 TMinuit.cxx:1506
 TMinuit.cxx:1507
 TMinuit.cxx:1508
 TMinuit.cxx:1509
 TMinuit.cxx:1510
 TMinuit.cxx:1511
 TMinuit.cxx:1512
 TMinuit.cxx:1513
 TMinuit.cxx:1514
 TMinuit.cxx:1515
 TMinuit.cxx:1516
 TMinuit.cxx:1517
 TMinuit.cxx:1518
 TMinuit.cxx:1519
 TMinuit.cxx:1520
 TMinuit.cxx:1521
 TMinuit.cxx:1522
 TMinuit.cxx:1523
 TMinuit.cxx:1524
 TMinuit.cxx:1525
 TMinuit.cxx:1526
 TMinuit.cxx:1527
 TMinuit.cxx:1528
 TMinuit.cxx:1529
 TMinuit.cxx:1530
 TMinuit.cxx:1531
 TMinuit.cxx:1532
 TMinuit.cxx:1533
 TMinuit.cxx:1534
 TMinuit.cxx:1535
 TMinuit.cxx:1536
 TMinuit.cxx:1537
 TMinuit.cxx:1538
 TMinuit.cxx:1539
 TMinuit.cxx:1540
 TMinuit.cxx:1541
 TMinuit.cxx:1542
 TMinuit.cxx:1543
 TMinuit.cxx:1544
 TMinuit.cxx:1545
 TMinuit.cxx:1546
 TMinuit.cxx:1547
 TMinuit.cxx:1548
 TMinuit.cxx:1549
 TMinuit.cxx:1550
 TMinuit.cxx:1551
 TMinuit.cxx:1552
 TMinuit.cxx:1553
 TMinuit.cxx:1554
 TMinuit.cxx:1555
 TMinuit.cxx:1556
 TMinuit.cxx:1557
 TMinuit.cxx:1558
 TMinuit.cxx:1559
 TMinuit.cxx:1560
 TMinuit.cxx:1561
 TMinuit.cxx:1562
 TMinuit.cxx:1563
 TMinuit.cxx:1564
 TMinuit.cxx:1565
 TMinuit.cxx:1566
 TMinuit.cxx:1567
 TMinuit.cxx:1568
 TMinuit.cxx:1569
 TMinuit.cxx:1570
 TMinuit.cxx:1571
 TMinuit.cxx:1572
 TMinuit.cxx:1573
 TMinuit.cxx:1574
 TMinuit.cxx:1575
 TMinuit.cxx:1576
 TMinuit.cxx:1577
 TMinuit.cxx:1578
 TMinuit.cxx:1579
 TMinuit.cxx:1580
 TMinuit.cxx:1581
 TMinuit.cxx:1582
 TMinuit.cxx:1583
 TMinuit.cxx:1584
 TMinuit.cxx:1585
 TMinuit.cxx:1586
 TMinuit.cxx:1587
 TMinuit.cxx:1588
 TMinuit.cxx:1589
 TMinuit.cxx:1590
 TMinuit.cxx:1591
 TMinuit.cxx:1592
 TMinuit.cxx:1593
 TMinuit.cxx:1594
 TMinuit.cxx:1595
 TMinuit.cxx:1596
 TMinuit.cxx:1597
 TMinuit.cxx:1598
 TMinuit.cxx:1599
 TMinuit.cxx:1600
 TMinuit.cxx:1601
 TMinuit.cxx:1602
 TMinuit.cxx:1603
 TMinuit.cxx:1604
 TMinuit.cxx:1605
 TMinuit.cxx:1606
 TMinuit.cxx:1607
 TMinuit.cxx:1608
 TMinuit.cxx:1609
 TMinuit.cxx:1610
 TMinuit.cxx:1611
 TMinuit.cxx:1612
 TMinuit.cxx:1613
 TMinuit.cxx:1614
 TMinuit.cxx:1615
 TMinuit.cxx:1616
 TMinuit.cxx:1617
 TMinuit.cxx:1618
 TMinuit.cxx:1619
 TMinuit.cxx:1620
 TMinuit.cxx:1621
 TMinuit.cxx:1622
 TMinuit.cxx:1623
 TMinuit.cxx:1624
 TMinuit.cxx:1625
 TMinuit.cxx:1626
 TMinuit.cxx:1627
 TMinuit.cxx:1628
 TMinuit.cxx:1629
 TMinuit.cxx:1630
 TMinuit.cxx:1631
 TMinuit.cxx:1632
 TMinuit.cxx:1633
 TMinuit.cxx:1634
 TMinuit.cxx:1635
 TMinuit.cxx:1636
 TMinuit.cxx:1637
 TMinuit.cxx:1638
 TMinuit.cxx:1639
 TMinuit.cxx:1640
 TMinuit.cxx:1641
 TMinuit.cxx:1642
 TMinuit.cxx:1643
 TMinuit.cxx:1644
 TMinuit.cxx:1645
 TMinuit.cxx:1646
 TMinuit.cxx:1647
 TMinuit.cxx:1648
 TMinuit.cxx:1649
 TMinuit.cxx:1650
 TMinuit.cxx:1651
 TMinuit.cxx:1652
 TMinuit.cxx:1653
 TMinuit.cxx:1654
 TMinuit.cxx:1655
 TMinuit.cxx:1656
 TMinuit.cxx:1657
 TMinuit.cxx:1658
 TMinuit.cxx:1659
 TMinuit.cxx:1660
 TMinuit.cxx:1661
 TMinuit.cxx:1662
 TMinuit.cxx:1663
 TMinuit.cxx:1664
 TMinuit.cxx:1665
 TMinuit.cxx:1666
 TMinuit.cxx:1667
 TMinuit.cxx:1668
 TMinuit.cxx:1669
 TMinuit.cxx:1670
 TMinuit.cxx:1671
 TMinuit.cxx:1672
 TMinuit.cxx:1673
 TMinuit.cxx:1674
 TMinuit.cxx:1675
 TMinuit.cxx:1676
 TMinuit.cxx:1677
 TMinuit.cxx:1678
 TMinuit.cxx:1679
 TMinuit.cxx:1680
 TMinuit.cxx:1681
 TMinuit.cxx:1682
 TMinuit.cxx:1683
 TMinuit.cxx:1684
 TMinuit.cxx:1685
 TMinuit.cxx:1686
 TMinuit.cxx:1687
 TMinuit.cxx:1688
 TMinuit.cxx:1689
 TMinuit.cxx:1690
 TMinuit.cxx:1691
 TMinuit.cxx:1692
 TMinuit.cxx:1693
 TMinuit.cxx:1694
 TMinuit.cxx:1695
 TMinuit.cxx:1696
 TMinuit.cxx:1697
 TMinuit.cxx:1698
 TMinuit.cxx:1699
 TMinuit.cxx:1700
 TMinuit.cxx:1701
 TMinuit.cxx:1702
 TMinuit.cxx:1703
 TMinuit.cxx:1704
 TMinuit.cxx:1705
 TMinuit.cxx:1706
 TMinuit.cxx:1707
 TMinuit.cxx:1708
 TMinuit.cxx:1709
 TMinuit.cxx:1710
 TMinuit.cxx:1711
 TMinuit.cxx:1712
 TMinuit.cxx:1713
 TMinuit.cxx:1714
 TMinuit.cxx:1715
 TMinuit.cxx:1716
 TMinuit.cxx:1717
 TMinuit.cxx:1718
 TMinuit.cxx:1719
 TMinuit.cxx:1720
 TMinuit.cxx:1721
 TMinuit.cxx:1722
 TMinuit.cxx:1723
 TMinuit.cxx:1724
 TMinuit.cxx:1725
 TMinuit.cxx:1726
 TMinuit.cxx:1727
 TMinuit.cxx:1728
 TMinuit.cxx:1729
 TMinuit.cxx:1730
 TMinuit.cxx:1731
 TMinuit.cxx:1732
 TMinuit.cxx:1733
 TMinuit.cxx:1734
 TMinuit.cxx:1735
 TMinuit.cxx:1736
 TMinuit.cxx:1737
 TMinuit.cxx:1738
 TMinuit.cxx:1739
 TMinuit.cxx:1740
 TMinuit.cxx:1741
 TMinuit.cxx:1742
 TMinuit.cxx:1743
 TMinuit.cxx:1744
 TMinuit.cxx:1745
 TMinuit.cxx:1746
 TMinuit.cxx:1747
 TMinuit.cxx:1748
 TMinuit.cxx:1749
 TMinuit.cxx:1750
 TMinuit.cxx:1751
 TMinuit.cxx:1752
 TMinuit.cxx:1753
 TMinuit.cxx:1754
 TMinuit.cxx:1755
 TMinuit.cxx:1756
 TMinuit.cxx:1757
 TMinuit.cxx:1758
 TMinuit.cxx:1759
 TMinuit.cxx:1760
 TMinuit.cxx:1761
 TMinuit.cxx:1762
 TMinuit.cxx:1763
 TMinuit.cxx:1764
 TMinuit.cxx:1765
 TMinuit.cxx:1766
 TMinuit.cxx:1767
 TMinuit.cxx:1768
 TMinuit.cxx:1769
 TMinuit.cxx:1770
 TMinuit.cxx:1771
 TMinuit.cxx:1772
 TMinuit.cxx:1773
 TMinuit.cxx:1774
 TMinuit.cxx:1775
 TMinuit.cxx:1776
 TMinuit.cxx:1777
 TMinuit.cxx:1778
 TMinuit.cxx:1779
 TMinuit.cxx:1780
 TMinuit.cxx:1781
 TMinuit.cxx:1782
 TMinuit.cxx:1783
 TMinuit.cxx:1784
 TMinuit.cxx:1785
 TMinuit.cxx:1786
 TMinuit.cxx:1787
 TMinuit.cxx:1788
 TMinuit.cxx:1789
 TMinuit.cxx:1790
 TMinuit.cxx:1791
 TMinuit.cxx:1792
 TMinuit.cxx:1793
 TMinuit.cxx:1794
 TMinuit.cxx:1795
 TMinuit.cxx:1796
 TMinuit.cxx:1797
 TMinuit.cxx:1798
 TMinuit.cxx:1799
 TMinuit.cxx:1800
 TMinuit.cxx:1801
 TMinuit.cxx:1802
 TMinuit.cxx:1803
 TMinuit.cxx:1804
 TMinuit.cxx:1805
 TMinuit.cxx:1806
 TMinuit.cxx:1807
 TMinuit.cxx:1808
 TMinuit.cxx:1809
 TMinuit.cxx:1810
 TMinuit.cxx:1811
 TMinuit.cxx:1812
 TMinuit.cxx:1813
 TMinuit.cxx:1814
 TMinuit.cxx:1815
 TMinuit.cxx:1816
 TMinuit.cxx:1817
 TMinuit.cxx:1818
 TMinuit.cxx:1819
 TMinuit.cxx:1820
 TMinuit.cxx:1821
 TMinuit.cxx:1822
 TMinuit.cxx:1823
 TMinuit.cxx:1824
 TMinuit.cxx:1825
 TMinuit.cxx:1826
 TMinuit.cxx:1827
 TMinuit.cxx:1828
 TMinuit.cxx:1829
 TMinuit.cxx:1830
 TMinuit.cxx:1831
 TMinuit.cxx:1832
 TMinuit.cxx:1833
 TMinuit.cxx:1834
 TMinuit.cxx:1835
 TMinuit.cxx:1836
 TMinuit.cxx:1837
 TMinuit.cxx:1838
 TMinuit.cxx:1839
 TMinuit.cxx:1840
 TMinuit.cxx:1841
 TMinuit.cxx:1842
 TMinuit.cxx:1843
 TMinuit.cxx:1844
 TMinuit.cxx:1845
 TMinuit.cxx:1846
 TMinuit.cxx:1847
 TMinuit.cxx:1848
 TMinuit.cxx:1849
 TMinuit.cxx:1850
 TMinuit.cxx:1851
 TMinuit.cxx:1852
 TMinuit.cxx:1853
 TMinuit.cxx:1854
 TMinuit.cxx:1855
 TMinuit.cxx:1856
 TMinuit.cxx:1857
 TMinuit.cxx:1858
 TMinuit.cxx:1859
 TMinuit.cxx:1860
 TMinuit.cxx:1861
 TMinuit.cxx:1862
 TMinuit.cxx:1863
 TMinuit.cxx:1864
 TMinuit.cxx:1865
 TMinuit.cxx:1866
 TMinuit.cxx:1867
 TMinuit.cxx:1868
 TMinuit.cxx:1869
 TMinuit.cxx:1870
 TMinuit.cxx:1871
 TMinuit.cxx:1872
 TMinuit.cxx:1873
 TMinuit.cxx:1874
 TMinuit.cxx:1875
 TMinuit.cxx:1876
 TMinuit.cxx:1877
 TMinuit.cxx:1878
 TMinuit.cxx:1879
 TMinuit.cxx:1880
 TMinuit.cxx:1881
 TMinuit.cxx:1882
 TMinuit.cxx:1883
 TMinuit.cxx:1884
 TMinuit.cxx:1885
 TMinuit.cxx:1886
 TMinuit.cxx:1887
 TMinuit.cxx:1888
 TMinuit.cxx:1889
 TMinuit.cxx:1890
 TMinuit.cxx:1891
 TMinuit.cxx:1892
 TMinuit.cxx:1893
 TMinuit.cxx:1894
 TMinuit.cxx:1895
 TMinuit.cxx:1896
 TMinuit.cxx:1897
 TMinuit.cxx:1898
 TMinuit.cxx:1899
 TMinuit.cxx:1900
 TMinuit.cxx:1901
 TMinuit.cxx:1902
 TMinuit.cxx:1903
 TMinuit.cxx:1904
 TMinuit.cxx:1905
 TMinuit.cxx:1906
 TMinuit.cxx:1907
 TMinuit.cxx:1908
 TMinuit.cxx:1909
 TMinuit.cxx:1910
 TMinuit.cxx:1911
 TMinuit.cxx:1912
 TMinuit.cxx:1913
 TMinuit.cxx:1914
 TMinuit.cxx:1915
 TMinuit.cxx:1916
 TMinuit.cxx:1917
 TMinuit.cxx:1918
 TMinuit.cxx:1919
 TMinuit.cxx:1920
 TMinuit.cxx:1921
 TMinuit.cxx:1922
 TMinuit.cxx:1923
 TMinuit.cxx:1924
 TMinuit.cxx:1925
 TMinuit.cxx:1926
 TMinuit.cxx:1927
 TMinuit.cxx:1928
 TMinuit.cxx:1929
 TMinuit.cxx:1930
 TMinuit.cxx:1931
 TMinuit.cxx:1932
 TMinuit.cxx:1933
 TMinuit.cxx:1934
 TMinuit.cxx:1935
 TMinuit.cxx:1936
 TMinuit.cxx:1937
 TMinuit.cxx:1938
 TMinuit.cxx:1939
 TMinuit.cxx:1940
 TMinuit.cxx:1941
 TMinuit.cxx:1942
 TMinuit.cxx:1943
 TMinuit.cxx:1944
 TMinuit.cxx:1945
 TMinuit.cxx:1946
 TMinuit.cxx:1947
 TMinuit.cxx:1948
 TMinuit.cxx:1949
 TMinuit.cxx:1950
 TMinuit.cxx:1951
 TMinuit.cxx:1952
 TMinuit.cxx:1953
 TMinuit.cxx:1954
 TMinuit.cxx:1955
 TMinuit.cxx:1956
 TMinuit.cxx:1957
 TMinuit.cxx:1958
 TMinuit.cxx:1959
 TMinuit.cxx:1960
 TMinuit.cxx:1961
 TMinuit.cxx:1962
 TMinuit.cxx:1963
 TMinuit.cxx:1964
 TMinuit.cxx:1965
 TMinuit.cxx:1966
 TMinuit.cxx:1967
 TMinuit.cxx:1968
 TMinuit.cxx:1969
 TMinuit.cxx:1970
 TMinuit.cxx:1971
 TMinuit.cxx:1972
 TMinuit.cxx:1973
 TMinuit.cxx:1974
 TMinuit.cxx:1975
 TMinuit.cxx:1976
 TMinuit.cxx:1977
 TMinuit.cxx:1978
 TMinuit.cxx:1979
 TMinuit.cxx:1980
 TMinuit.cxx:1981
 TMinuit.cxx:1982
 TMinuit.cxx:1983
 TMinuit.cxx:1984
 TMinuit.cxx:1985
 TMinuit.cxx:1986
 TMinuit.cxx:1987
 TMinuit.cxx:1988
 TMinuit.cxx:1989
 TMinuit.cxx:1990
 TMinuit.cxx:1991
 TMinuit.cxx:1992
 TMinuit.cxx:1993
 TMinuit.cxx:1994
 TMinuit.cxx:1995
 TMinuit.cxx:1996
 TMinuit.cxx:1997
 TMinuit.cxx:1998
 TMinuit.cxx:1999
 TMinuit.cxx:2000
 TMinuit.cxx:2001
 TMinuit.cxx:2002
 TMinuit.cxx:2003
 TMinuit.cxx:2004
 TMinuit.cxx:2005
 TMinuit.cxx:2006
 TMinuit.cxx:2007
 TMinuit.cxx:2008
 TMinuit.cxx:2009
 TMinuit.cxx:2010
 TMinuit.cxx:2011
 TMinuit.cxx:2012
 TMinuit.cxx:2013
 TMinuit.cxx:2014
 TMinuit.cxx:2015
 TMinuit.cxx:2016
 TMinuit.cxx:2017
 TMinuit.cxx:2018
 TMinuit.cxx:2019
 TMinuit.cxx:2020
 TMinuit.cxx:2021
 TMinuit.cxx:2022
 TMinuit.cxx:2023
 TMinuit.cxx:2024
 TMinuit.cxx:2025
 TMinuit.cxx:2026
 TMinuit.cxx:2027
 TMinuit.cxx:2028
 TMinuit.cxx:2029
 TMinuit.cxx:2030
 TMinuit.cxx:2031
 TMinuit.cxx:2032
 TMinuit.cxx:2033
 TMinuit.cxx:2034
 TMinuit.cxx:2035
 TMinuit.cxx:2036
 TMinuit.cxx:2037
 TMinuit.cxx:2038
 TMinuit.cxx:2039
 TMinuit.cxx:2040
 TMinuit.cxx:2041
 TMinuit.cxx:2042
 TMinuit.cxx:2043
 TMinuit.cxx:2044
 TMinuit.cxx:2045
 TMinuit.cxx:2046
 TMinuit.cxx:2047
 TMinuit.cxx:2048
 TMinuit.cxx:2049
 TMinuit.cxx:2050
 TMinuit.cxx:2051
 TMinuit.cxx:2052
 TMinuit.cxx:2053
 TMinuit.cxx:2054
 TMinuit.cxx:2055
 TMinuit.cxx:2056
 TMinuit.cxx:2057
 TMinuit.cxx:2058
 TMinuit.cxx:2059
 TMinuit.cxx:2060
 TMinuit.cxx:2061
 TMinuit.cxx:2062
 TMinuit.cxx:2063
 TMinuit.cxx:2064
 TMinuit.cxx:2065
 TMinuit.cxx:2066
 TMinuit.cxx:2067
 TMinuit.cxx:2068
 TMinuit.cxx:2069
 TMinuit.cxx:2070
 TMinuit.cxx:2071
 TMinuit.cxx:2072
 TMinuit.cxx:2073
 TMinuit.cxx:2074
 TMinuit.cxx:2075
 TMinuit.cxx:2076
 TMinuit.cxx:2077
 TMinuit.cxx:2078
 TMinuit.cxx:2079
 TMinuit.cxx:2080
 TMinuit.cxx:2081
 TMinuit.cxx:2082
 TMinuit.cxx:2083
 TMinuit.cxx:2084
 TMinuit.cxx:2085
 TMinuit.cxx:2086
 TMinuit.cxx:2087
 TMinuit.cxx:2088
 TMinuit.cxx:2089
 TMinuit.cxx:2090
 TMinuit.cxx:2091
 TMinuit.cxx:2092
 TMinuit.cxx:2093
 TMinuit.cxx:2094
 TMinuit.cxx:2095
 TMinuit.cxx:2096
 TMinuit.cxx:2097
 TMinuit.cxx:2098
 TMinuit.cxx:2099
 TMinuit.cxx:2100
 TMinuit.cxx:2101
 TMinuit.cxx:2102
 TMinuit.cxx:2103
 TMinuit.cxx:2104
 TMinuit.cxx:2105
 TMinuit.cxx:2106
 TMinuit.cxx:2107
 TMinuit.cxx:2108
 TMinuit.cxx:2109
 TMinuit.cxx:2110
 TMinuit.cxx:2111
 TMinuit.cxx:2112
 TMinuit.cxx:2113
 TMinuit.cxx:2114
 TMinuit.cxx:2115
 TMinuit.cxx:2116
 TMinuit.cxx:2117
 TMinuit.cxx:2118
 TMinuit.cxx:2119
 TMinuit.cxx:2120
 TMinuit.cxx:2121
 TMinuit.cxx:2122
 TMinuit.cxx:2123
 TMinuit.cxx:2124
 TMinuit.cxx:2125
 TMinuit.cxx:2126
 TMinuit.cxx:2127
 TMinuit.cxx:2128
 TMinuit.cxx:2129
 TMinuit.cxx:2130
 TMinuit.cxx:2131
 TMinuit.cxx:2132
 TMinuit.cxx:2133
 TMinuit.cxx:2134
 TMinuit.cxx:2135
 TMinuit.cxx:2136
 TMinuit.cxx:2137
 TMinuit.cxx:2138
 TMinuit.cxx:2139
 TMinuit.cxx:2140
 TMinuit.cxx:2141
 TMinuit.cxx:2142
 TMinuit.cxx:2143
 TMinuit.cxx:2144
 TMinuit.cxx:2145
 TMinuit.cxx:2146
 TMinuit.cxx:2147
 TMinuit.cxx:2148
 TMinuit.cxx:2149
 TMinuit.cxx:2150
 TMinuit.cxx:2151
 TMinuit.cxx:2152
 TMinuit.cxx:2153
 TMinuit.cxx:2154
 TMinuit.cxx:2155
 TMinuit.cxx:2156
 TMinuit.cxx:2157
 TMinuit.cxx:2158
 TMinuit.cxx:2159
 TMinuit.cxx:2160
 TMinuit.cxx:2161
 TMinuit.cxx:2162
 TMinuit.cxx:2163
 TMinuit.cxx:2164
 TMinuit.cxx:2165
 TMinuit.cxx:2166
 TMinuit.cxx:2167
 TMinuit.cxx:2168
 TMinuit.cxx:2169
 TMinuit.cxx:2170
 TMinuit.cxx:2171
 TMinuit.cxx:2172
 TMinuit.cxx:2173
 TMinuit.cxx:2174
 TMinuit.cxx:2175
 TMinuit.cxx:2176
 TMinuit.cxx:2177
 TMinuit.cxx:2178
 TMinuit.cxx:2179
 TMinuit.cxx:2180
 TMinuit.cxx:2181
 TMinuit.cxx:2182
 TMinuit.cxx:2183
 TMinuit.cxx:2184
 TMinuit.cxx:2185
 TMinuit.cxx:2186
 TMinuit.cxx:2187
 TMinuit.cxx:2188
 TMinuit.cxx:2189
 TMinuit.cxx:2190
 TMinuit.cxx:2191
 TMinuit.cxx:2192
 TMinuit.cxx:2193
 TMinuit.cxx:2194
 TMinuit.cxx:2195
 TMinuit.cxx:2196
 TMinuit.cxx:2197
 TMinuit.cxx:2198
 TMinuit.cxx:2199
 TMinuit.cxx:2200
 TMinuit.cxx:2201
 TMinuit.cxx:2202
 TMinuit.cxx:2203
 TMinuit.cxx:2204
 TMinuit.cxx:2205
 TMinuit.cxx:2206
 TMinuit.cxx:2207
 TMinuit.cxx:2208
 TMinuit.cxx:2209
 TMinuit.cxx:2210
 TMinuit.cxx:2211
 TMinuit.cxx:2212
 TMinuit.cxx:2213
 TMinuit.cxx:2214
 TMinuit.cxx:2215
 TMinuit.cxx:2216
 TMinuit.cxx:2217
 TMinuit.cxx:2218
 TMinuit.cxx:2219
 TMinuit.cxx:2220
 TMinuit.cxx:2221
 TMinuit.cxx:2222
 TMinuit.cxx:2223
 TMinuit.cxx:2224
 TMinuit.cxx:2225
 TMinuit.cxx:2226
 TMinuit.cxx:2227
 TMinuit.cxx:2228
 TMinuit.cxx:2229
 TMinuit.cxx:2230
 TMinuit.cxx:2231
 TMinuit.cxx:2232
 TMinuit.cxx:2233
 TMinuit.cxx:2234
 TMinuit.cxx:2235
 TMinuit.cxx:2236
 TMinuit.cxx:2237
 TMinuit.cxx:2238
 TMinuit.cxx:2239
 TMinuit.cxx:2240
 TMinuit.cxx:2241
 TMinuit.cxx:2242
 TMinuit.cxx:2243
 TMinuit.cxx:2244
 TMinuit.cxx:2245
 TMinuit.cxx:2246
 TMinuit.cxx:2247
 TMinuit.cxx:2248
 TMinuit.cxx:2249
 TMinuit.cxx:2250
 TMinuit.cxx:2251
 TMinuit.cxx:2252
 TMinuit.cxx:2253
 TMinuit.cxx:2254
 TMinuit.cxx:2255
 TMinuit.cxx:2256
 TMinuit.cxx:2257
 TMinuit.cxx:2258
 TMinuit.cxx:2259
 TMinuit.cxx:2260
 TMinuit.cxx:2261
 TMinuit.cxx:2262
 TMinuit.cxx:2263
 TMinuit.cxx:2264
 TMinuit.cxx:2265
 TMinuit.cxx:2266
 TMinuit.cxx:2267
 TMinuit.cxx:2268
 TMinuit.cxx:2269
 TMinuit.cxx:2270
 TMinuit.cxx:2271
 TMinuit.cxx:2272
 TMinuit.cxx:2273
 TMinuit.cxx:2274
 TMinuit.cxx:2275
 TMinuit.cxx:2276
 TMinuit.cxx:2277
 TMinuit.cxx:2278
 TMinuit.cxx:2279
 TMinuit.cxx:2280
 TMinuit.cxx:2281
 TMinuit.cxx:2282
 TMinuit.cxx:2283
 TMinuit.cxx:2284
 TMinuit.cxx:2285
 TMinuit.cxx:2286
 TMinuit.cxx:2287
 TMinuit.cxx:2288
 TMinuit.cxx:2289
 TMinuit.cxx:2290
 TMinuit.cxx:2291
 TMinuit.cxx:2292
 TMinuit.cxx:2293
 TMinuit.cxx:2294
 TMinuit.cxx:2295
 TMinuit.cxx:2296
 TMinuit.cxx:2297
 TMinuit.cxx:2298
 TMinuit.cxx:2299
 TMinuit.cxx:2300
 TMinuit.cxx:2301
 TMinuit.cxx:2302
 TMinuit.cxx:2303
 TMinuit.cxx:2304
 TMinuit.cxx:2305
 TMinuit.cxx:2306
 TMinuit.cxx:2307
 TMinuit.cxx:2308
 TMinuit.cxx:2309
 TMinuit.cxx:2310
 TMinuit.cxx:2311
 TMinuit.cxx:2312
 TMinuit.cxx:2313
 TMinuit.cxx:2314
 TMinuit.cxx:2315
 TMinuit.cxx:2316
 TMinuit.cxx:2317
 TMinuit.cxx:2318
 TMinuit.cxx:2319
 TMinuit.cxx:2320
 TMinuit.cxx:2321
 TMinuit.cxx:2322
 TMinuit.cxx:2323
 TMinuit.cxx:2324
 TMinuit.cxx:2325
 TMinuit.cxx:2326
 TMinuit.cxx:2327
 TMinuit.cxx:2328
 TMinuit.cxx:2329
 TMinuit.cxx:2330
 TMinuit.cxx:2331
 TMinuit.cxx:2332
 TMinuit.cxx:2333
 TMinuit.cxx:2334
 TMinuit.cxx:2335
 TMinuit.cxx:2336
 TMinuit.cxx:2337
 TMinuit.cxx:2338
 TMinuit.cxx:2339
 TMinuit.cxx:2340
 TMinuit.cxx:2341
 TMinuit.cxx:2342
 TMinuit.cxx:2343
 TMinuit.cxx:2344
 TMinuit.cxx:2345
 TMinuit.cxx:2346
 TMinuit.cxx:2347
 TMinuit.cxx:2348
 TMinuit.cxx:2349
 TMinuit.cxx:2350
 TMinuit.cxx:2351
 TMinuit.cxx:2352
 TMinuit.cxx:2353
 TMinuit.cxx:2354
 TMinuit.cxx:2355
 TMinuit.cxx:2356
 TMinuit.cxx:2357
 TMinuit.cxx:2358
 TMinuit.cxx:2359
 TMinuit.cxx:2360
 TMinuit.cxx:2361
 TMinuit.cxx:2362
 TMinuit.cxx:2363
 TMinuit.cxx:2364
 TMinuit.cxx:2365
 TMinuit.cxx:2366
 TMinuit.cxx:2367
 TMinuit.cxx:2368
 TMinuit.cxx:2369
 TMinuit.cxx:2370
 TMinuit.cxx:2371
 TMinuit.cxx:2372
 TMinuit.cxx:2373
 TMinuit.cxx:2374
 TMinuit.cxx:2375
 TMinuit.cxx:2376
 TMinuit.cxx:2377
 TMinuit.cxx:2378
 TMinuit.cxx:2379
 TMinuit.cxx:2380
 TMinuit.cxx:2381
 TMinuit.cxx:2382
 TMinuit.cxx:2383
 TMinuit.cxx:2384
 TMinuit.cxx:2385
 TMinuit.cxx:2386
 TMinuit.cxx:2387
 TMinuit.cxx:2388
 TMinuit.cxx:2389
 TMinuit.cxx:2390
 TMinuit.cxx:2391
 TMinuit.cxx:2392
 TMinuit.cxx:2393
 TMinuit.cxx:2394
 TMinuit.cxx:2395
 TMinuit.cxx:2396
 TMinuit.cxx:2397
 TMinuit.cxx:2398
 TMinuit.cxx:2399
 TMinuit.cxx:2400
 TMinuit.cxx:2401
 TMinuit.cxx:2402
 TMinuit.cxx:2403
 TMinuit.cxx:2404
 TMinuit.cxx:2405
 TMinuit.cxx:2406
 TMinuit.cxx:2407
 TMinuit.cxx:2408
 TMinuit.cxx:2409
 TMinuit.cxx:2410
 TMinuit.cxx:2411
 TMinuit.cxx:2412
 TMinuit.cxx:2413
 TMinuit.cxx:2414
 TMinuit.cxx:2415
 TMinuit.cxx:2416
 TMinuit.cxx:2417
 TMinuit.cxx:2418
 TMinuit.cxx:2419
 TMinuit.cxx:2420
 TMinuit.cxx:2421
 TMinuit.cxx:2422
 TMinuit.cxx:2423
 TMinuit.cxx:2424
 TMinuit.cxx:2425
 TMinuit.cxx:2426
 TMinuit.cxx:2427
 TMinuit.cxx:2428
 TMinuit.cxx:2429
 TMinuit.cxx:2430
 TMinuit.cxx:2431
 TMinuit.cxx:2432
 TMinuit.cxx:2433
 TMinuit.cxx:2434
 TMinuit.cxx:2435
 TMinuit.cxx:2436
 TMinuit.cxx:2437
 TMinuit.cxx:2438
 TMinuit.cxx:2439
 TMinuit.cxx:2440
 TMinuit.cxx:2441
 TMinuit.cxx:2442
 TMinuit.cxx:2443
 TMinuit.cxx:2444
 TMinuit.cxx:2445
 TMinuit.cxx:2446
 TMinuit.cxx:2447
 TMinuit.cxx:2448
 TMinuit.cxx:2449
 TMinuit.cxx:2450
 TMinuit.cxx:2451
 TMinuit.cxx:2452
 TMinuit.cxx:2453
 TMinuit.cxx:2454
 TMinuit.cxx:2455
 TMinuit.cxx:2456
 TMinuit.cxx:2457
 TMinuit.cxx:2458
 TMinuit.cxx:2459
 TMinuit.cxx:2460
 TMinuit.cxx:2461
 TMinuit.cxx:2462
 TMinuit.cxx:2463
 TMinuit.cxx:2464
 TMinuit.cxx:2465
 TMinuit.cxx:2466
 TMinuit.cxx:2467
 TMinuit.cxx:2468
 TMinuit.cxx:2469
 TMinuit.cxx:2470
 TMinuit.cxx:2471
 TMinuit.cxx:2472
 TMinuit.cxx:2473
 TMinuit.cxx:2474
 TMinuit.cxx:2475
 TMinuit.cxx:2476
 TMinuit.cxx:2477
 TMinuit.cxx:2478
 TMinuit.cxx:2479
 TMinuit.cxx:2480
 TMinuit.cxx:2481
 TMinuit.cxx:2482
 TMinuit.cxx:2483
 TMinuit.cxx:2484
 TMinuit.cxx:2485
 TMinuit.cxx:2486
 TMinuit.cxx:2487
 TMinuit.cxx:2488
 TMinuit.cxx:2489
 TMinuit.cxx:2490
 TMinuit.cxx:2491
 TMinuit.cxx:2492
 TMinuit.cxx:2493
 TMinuit.cxx:2494
 TMinuit.cxx:2495
 TMinuit.cxx:2496
 TMinuit.cxx:2497
 TMinuit.cxx:2498
 TMinuit.cxx:2499
 TMinuit.cxx:2500
 TMinuit.cxx:2501
 TMinuit.cxx:2502
 TMinuit.cxx:2503
 TMinuit.cxx:2504
 TMinuit.cxx:2505
 TMinuit.cxx:2506
 TMinuit.cxx:2507
 TMinuit.cxx:2508
 TMinuit.cxx:2509
 TMinuit.cxx:2510
 TMinuit.cxx:2511
 TMinuit.cxx:2512
 TMinuit.cxx:2513
 TMinuit.cxx:2514
 TMinuit.cxx:2515
 TMinuit.cxx:2516
 TMinuit.cxx:2517
 TMinuit.cxx:2518
 TMinuit.cxx:2519
 TMinuit.cxx:2520
 TMinuit.cxx:2521
 TMinuit.cxx:2522
 TMinuit.cxx:2523
 TMinuit.cxx:2524
 TMinuit.cxx:2525
 TMinuit.cxx:2526
 TMinuit.cxx:2527
 TMinuit.cxx:2528
 TMinuit.cxx:2529
 TMinuit.cxx:2530
 TMinuit.cxx:2531
 TMinuit.cxx:2532
 TMinuit.cxx:2533
 TMinuit.cxx:2534
 TMinuit.cxx:2535
 TMinuit.cxx:2536
 TMinuit.cxx:2537
 TMinuit.cxx:2538
 TMinuit.cxx:2539
 TMinuit.cxx:2540
 TMinuit.cxx:2541
 TMinuit.cxx:2542
 TMinuit.cxx:2543
 TMinuit.cxx:2544
 TMinuit.cxx:2545
 TMinuit.cxx:2546
 TMinuit.cxx:2547
 TMinuit.cxx:2548
 TMinuit.cxx:2549
 TMinuit.cxx:2550
 TMinuit.cxx:2551
 TMinuit.cxx:2552
 TMinuit.cxx:2553
 TMinuit.cxx:2554
 TMinuit.cxx:2555
 TMinuit.cxx:2556
 TMinuit.cxx:2557
 TMinuit.cxx:2558
 TMinuit.cxx:2559
 TMinuit.cxx:2560
 TMinuit.cxx:2561
 TMinuit.cxx:2562
 TMinuit.cxx:2563
 TMinuit.cxx:2564
 TMinuit.cxx:2565
 TMinuit.cxx:2566
 TMinuit.cxx:2567
 TMinuit.cxx:2568
 TMinuit.cxx:2569
 TMinuit.cxx:2570
 TMinuit.cxx:2571
 TMinuit.cxx:2572
 TMinuit.cxx:2573
 TMinuit.cxx:2574
 TMinuit.cxx:2575
 TMinuit.cxx:2576
 TMinuit.cxx:2577
 TMinuit.cxx:2578
 TMinuit.cxx:2579
 TMinuit.cxx:2580
 TMinuit.cxx:2581
 TMinuit.cxx:2582
 TMinuit.cxx:2583
 TMinuit.cxx:2584
 TMinuit.cxx:2585
 TMinuit.cxx:2586
 TMinuit.cxx:2587
 TMinuit.cxx:2588
 TMinuit.cxx:2589
 TMinuit.cxx:2590
 TMinuit.cxx:2591
 TMinuit.cxx:2592
 TMinuit.cxx:2593
 TMinuit.cxx:2594
 TMinuit.cxx:2595
 TMinuit.cxx:2596
 TMinuit.cxx:2597
 TMinuit.cxx:2598
 TMinuit.cxx:2599
 TMinuit.cxx:2600
 TMinuit.cxx:2601
 TMinuit.cxx:2602
 TMinuit.cxx:2603
 TMinuit.cxx:2604
 TMinuit.cxx:2605
 TMinuit.cxx:2606
 TMinuit.cxx:2607
 TMinuit.cxx:2608
 TMinuit.cxx:2609
 TMinuit.cxx:2610
 TMinuit.cxx:2611
 TMinuit.cxx:2612
 TMinuit.cxx:2613
 TMinuit.cxx:2614
 TMinuit.cxx:2615
 TMinuit.cxx:2616
 TMinuit.cxx:2617
 TMinuit.cxx:2618
 TMinuit.cxx:2619
 TMinuit.cxx:2620
 TMinuit.cxx:2621
 TMinuit.cxx:2622
 TMinuit.cxx:2623
 TMinuit.cxx:2624
 TMinuit.cxx:2625
 TMinuit.cxx:2626
 TMinuit.cxx:2627
 TMinuit.cxx:2628
 TMinuit.cxx:2629
 TMinuit.cxx:2630
 TMinuit.cxx:2631
 TMinuit.cxx:2632
 TMinuit.cxx:2633
 TMinuit.cxx:2634
 TMinuit.cxx:2635
 TMinuit.cxx:2636
 TMinuit.cxx:2637
 TMinuit.cxx:2638
 TMinuit.cxx:2639
 TMinuit.cxx:2640
 TMinuit.cxx:2641
 TMinuit.cxx:2642
 TMinuit.cxx:2643
 TMinuit.cxx:2644
 TMinuit.cxx:2645
 TMinuit.cxx:2646
 TMinuit.cxx:2647
 TMinuit.cxx:2648
 TMinuit.cxx:2649
 TMinuit.cxx:2650
 TMinuit.cxx:2651
 TMinuit.cxx:2652
 TMinuit.cxx:2653
 TMinuit.cxx:2654
 TMinuit.cxx:2655
 TMinuit.cxx:2656
 TMinuit.cxx:2657
 TMinuit.cxx:2658
 TMinuit.cxx:2659
 TMinuit.cxx:2660
 TMinuit.cxx:2661
 TMinuit.cxx:2662
 TMinuit.cxx:2663
 TMinuit.cxx:2664
 TMinuit.cxx:2665
 TMinuit.cxx:2666
 TMinuit.cxx:2667
 TMinuit.cxx:2668
 TMinuit.cxx:2669
 TMinuit.cxx:2670
 TMinuit.cxx:2671
 TMinuit.cxx:2672
 TMinuit.cxx:2673
 TMinuit.cxx:2674
 TMinuit.cxx:2675
 TMinuit.cxx:2676
 TMinuit.cxx:2677
 TMinuit.cxx:2678
 TMinuit.cxx:2679
 TMinuit.cxx:2680
 TMinuit.cxx:2681
 TMinuit.cxx:2682
 TMinuit.cxx:2683
 TMinuit.cxx:2684
 TMinuit.cxx:2685
 TMinuit.cxx:2686
 TMinuit.cxx:2687
 TMinuit.cxx:2688
 TMinuit.cxx:2689
 TMinuit.cxx:2690
 TMinuit.cxx:2691
 TMinuit.cxx:2692
 TMinuit.cxx:2693
 TMinuit.cxx:2694
 TMinuit.cxx:2695
 TMinuit.cxx:2696
 TMinuit.cxx:2697
 TMinuit.cxx:2698
 TMinuit.cxx:2699
 TMinuit.cxx:2700
 TMinuit.cxx:2701
 TMinuit.cxx:2702
 TMinuit.cxx:2703
 TMinuit.cxx:2704
 TMinuit.cxx:2705
 TMinuit.cxx:2706
 TMinuit.cxx:2707
 TMinuit.cxx:2708
 TMinuit.cxx:2709
 TMinuit.cxx:2710
 TMinuit.cxx:2711
 TMinuit.cxx:2712
 TMinuit.cxx:2713
 TMinuit.cxx:2714
 TMinuit.cxx:2715
 TMinuit.cxx:2716
 TMinuit.cxx:2717
 TMinuit.cxx:2718
 TMinuit.cxx:2719
 TMinuit.cxx:2720
 TMinuit.cxx:2721
 TMinuit.cxx:2722
 TMinuit.cxx:2723
 TMinuit.cxx:2724
 TMinuit.cxx:2725
 TMinuit.cxx:2726
 TMinuit.cxx:2727
 TMinuit.cxx:2728
 TMinuit.cxx:2729
 TMinuit.cxx:2730
 TMinuit.cxx:2731
 TMinuit.cxx:2732
 TMinuit.cxx:2733
 TMinuit.cxx:2734
 TMinuit.cxx:2735
 TMinuit.cxx:2736
 TMinuit.cxx:2737
 TMinuit.cxx:2738
 TMinuit.cxx:2739
 TMinuit.cxx:2740
 TMinuit.cxx:2741
 TMinuit.cxx:2742
 TMinuit.cxx:2743
 TMinuit.cxx:2744
 TMinuit.cxx:2745
 TMinuit.cxx:2746
 TMinuit.cxx:2747
 TMinuit.cxx:2748
 TMinuit.cxx:2749
 TMinuit.cxx:2750
 TMinuit.cxx:2751
 TMinuit.cxx:2752
 TMinuit.cxx:2753
 TMinuit.cxx:2754
 TMinuit.cxx:2755
 TMinuit.cxx:2756
 TMinuit.cxx:2757
 TMinuit.cxx:2758
 TMinuit.cxx:2759
 TMinuit.cxx:2760
 TMinuit.cxx:2761
 TMinuit.cxx:2762
 TMinuit.cxx:2763
 TMinuit.cxx:2764
 TMinuit.cxx:2765
 TMinuit.cxx:2766
 TMinuit.cxx:2767
 TMinuit.cxx:2768
 TMinuit.cxx:2769
 TMinuit.cxx:2770
 TMinuit.cxx:2771
 TMinuit.cxx:2772
 TMinuit.cxx:2773
 TMinuit.cxx:2774
 TMinuit.cxx:2775
 TMinuit.cxx:2776
 TMinuit.cxx:2777
 TMinuit.cxx:2778
 TMinuit.cxx:2779
 TMinuit.cxx:2780
 TMinuit.cxx:2781
 TMinuit.cxx:2782
 TMinuit.cxx:2783
 TMinuit.cxx:2784
 TMinuit.cxx:2785
 TMinuit.cxx:2786
 TMinuit.cxx:2787
 TMinuit.cxx:2788
 TMinuit.cxx:2789
 TMinuit.cxx:2790
 TMinuit.cxx:2791
 TMinuit.cxx:2792
 TMinuit.cxx:2793
 TMinuit.cxx:2794
 TMinuit.cxx:2795
 TMinuit.cxx:2796
 TMinuit.cxx:2797
 TMinuit.cxx:2798
 TMinuit.cxx:2799
 TMinuit.cxx:2800
 TMinuit.cxx:2801
 TMinuit.cxx:2802
 TMinuit.cxx:2803
 TMinuit.cxx:2804
 TMinuit.cxx:2805
 TMinuit.cxx:2806
 TMinuit.cxx:2807
 TMinuit.cxx:2808
 TMinuit.cxx:2809
 TMinuit.cxx:2810
 TMinuit.cxx:2811
 TMinuit.cxx:2812
 TMinuit.cxx:2813
 TMinuit.cxx:2814
 TMinuit.cxx:2815
 TMinuit.cxx:2816
 TMinuit.cxx:2817
 TMinuit.cxx:2818
 TMinuit.cxx:2819
 TMinuit.cxx:2820
 TMinuit.cxx:2821
 TMinuit.cxx:2822
 TMinuit.cxx:2823
 TMinuit.cxx:2824
 TMinuit.cxx:2825
 TMinuit.cxx:2826
 TMinuit.cxx:2827
 TMinuit.cxx:2828
 TMinuit.cxx:2829
 TMinuit.cxx:2830
 TMinuit.cxx:2831
 TMinuit.cxx:2832
 TMinuit.cxx:2833
 TMinuit.cxx:2834
 TMinuit.cxx:2835
 TMinuit.cxx:2836
 TMinuit.cxx:2837
 TMinuit.cxx:2838
 TMinuit.cxx:2839
 TMinuit.cxx:2840
 TMinuit.cxx:2841
 TMinuit.cxx:2842
 TMinuit.cxx:2843
 TMinuit.cxx:2844
 TMinuit.cxx:2845
 TMinuit.cxx:2846
 TMinuit.cxx:2847
 TMinuit.cxx:2848
 TMinuit.cxx:2849
 TMinuit.cxx:2850
 TMinuit.cxx:2851
 TMinuit.cxx:2852
 TMinuit.cxx:2853
 TMinuit.cxx:2854
 TMinuit.cxx:2855
 TMinuit.cxx:2856
 TMinuit.cxx:2857
 TMinuit.cxx:2858
 TMinuit.cxx:2859
 TMinuit.cxx:2860
 TMinuit.cxx:2861
 TMinuit.cxx:2862
 TMinuit.cxx:2863
 TMinuit.cxx:2864
 TMinuit.cxx:2865
 TMinuit.cxx:2866
 TMinuit.cxx:2867
 TMinuit.cxx:2868
 TMinuit.cxx:2869
 TMinuit.cxx:2870
 TMinuit.cxx:2871
 TMinuit.cxx:2872
 TMinuit.cxx:2873
 TMinuit.cxx:2874
 TMinuit.cxx:2875
 TMinuit.cxx:2876
 TMinuit.cxx:2877
 TMinuit.cxx:2878
 TMinuit.cxx:2879
 TMinuit.cxx:2880
 TMinuit.cxx:2881
 TMinuit.cxx:2882
 TMinuit.cxx:2883
 TMinuit.cxx:2884
 TMinuit.cxx:2885
 TMinuit.cxx:2886
 TMinuit.cxx:2887
 TMinuit.cxx:2888
 TMinuit.cxx:2889
 TMinuit.cxx:2890
 TMinuit.cxx:2891
 TMinuit.cxx:2892
 TMinuit.cxx:2893
 TMinuit.cxx:2894
 TMinuit.cxx:2895
 TMinuit.cxx:2896
 TMinuit.cxx:2897
 TMinuit.cxx:2898
 TMinuit.cxx:2899
 TMinuit.cxx:2900
 TMinuit.cxx:2901
 TMinuit.cxx:2902
 TMinuit.cxx:2903
 TMinuit.cxx:2904
 TMinuit.cxx:2905
 TMinuit.cxx:2906
 TMinuit.cxx:2907
 TMinuit.cxx:2908
 TMinuit.cxx:2909
 TMinuit.cxx:2910
 TMinuit.cxx:2911
 TMinuit.cxx:2912
 TMinuit.cxx:2913
 TMinuit.cxx:2914
 TMinuit.cxx:2915
 TMinuit.cxx:2916
 TMinuit.cxx:2917
 TMinuit.cxx:2918
 TMinuit.cxx:2919
 TMinuit.cxx:2920
 TMinuit.cxx:2921
 TMinuit.cxx:2922
 TMinuit.cxx:2923
 TMinuit.cxx:2924
 TMinuit.cxx:2925
 TMinuit.cxx:2926
 TMinuit.cxx:2927
 TMinuit.cxx:2928
 TMinuit.cxx:2929
 TMinuit.cxx:2930
 TMinuit.cxx:2931
 TMinuit.cxx:2932
 TMinuit.cxx:2933
 TMinuit.cxx:2934
 TMinuit.cxx:2935
 TMinuit.cxx:2936
 TMinuit.cxx:2937
 TMinuit.cxx:2938
 TMinuit.cxx:2939
 TMinuit.cxx:2940
 TMinuit.cxx:2941
 TMinuit.cxx:2942
 TMinuit.cxx:2943
 TMinuit.cxx:2944
 TMinuit.cxx:2945
 TMinuit.cxx:2946
 TMinuit.cxx:2947
 TMinuit.cxx:2948
 TMinuit.cxx:2949
 TMinuit.cxx:2950
 TMinuit.cxx:2951
 TMinuit.cxx:2952
 TMinuit.cxx:2953
 TMinuit.cxx:2954
 TMinuit.cxx:2955
 TMinuit.cxx:2956
 TMinuit.cxx:2957
 TMinuit.cxx:2958
 TMinuit.cxx:2959
 TMinuit.cxx:2960
 TMinuit.cxx:2961
 TMinuit.cxx:2962
 TMinuit.cxx:2963
 TMinuit.cxx:2964
 TMinuit.cxx:2965
 TMinuit.cxx:2966
 TMinuit.cxx:2967
 TMinuit.cxx:2968
 TMinuit.cxx:2969
 TMinuit.cxx:2970
 TMinuit.cxx:2971
 TMinuit.cxx:2972
 TMinuit.cxx:2973
 TMinuit.cxx:2974
 TMinuit.cxx:2975
 TMinuit.cxx:2976
 TMinuit.cxx:2977
 TMinuit.cxx:2978
 TMinuit.cxx:2979
 TMinuit.cxx:2980
 TMinuit.cxx:2981
 TMinuit.cxx:2982
 TMinuit.cxx:2983
 TMinuit.cxx:2984
 TMinuit.cxx:2985
 TMinuit.cxx:2986
 TMinuit.cxx:2987
 TMinuit.cxx:2988
 TMinuit.cxx:2989
 TMinuit.cxx:2990
 TMinuit.cxx:2991
 TMinuit.cxx:2992
 TMinuit.cxx:2993
 TMinuit.cxx:2994
 TMinuit.cxx:2995
 TMinuit.cxx:2996
 TMinuit.cxx:2997
 TMinuit.cxx:2998
 TMinuit.cxx:2999
 TMinuit.cxx:3000
 TMinuit.cxx:3001
 TMinuit.cxx:3002
 TMinuit.cxx:3003
 TMinuit.cxx:3004
 TMinuit.cxx:3005
 TMinuit.cxx:3006
 TMinuit.cxx:3007
 TMinuit.cxx:3008
 TMinuit.cxx:3009
 TMinuit.cxx:3010
 TMinuit.cxx:3011
 TMinuit.cxx:3012
 TMinuit.cxx:3013
 TMinuit.cxx:3014
 TMinuit.cxx:3015
 TMinuit.cxx:3016
 TMinuit.cxx:3017
 TMinuit.cxx:3018
 TMinuit.cxx:3019
 TMinuit.cxx:3020
 TMinuit.cxx:3021
 TMinuit.cxx:3022
 TMinuit.cxx:3023
 TMinuit.cxx:3024
 TMinuit.cxx:3025
 TMinuit.cxx:3026
 TMinuit.cxx:3027
 TMinuit.cxx:3028
 TMinuit.cxx:3029
 TMinuit.cxx:3030
 TMinuit.cxx:3031
 TMinuit.cxx:3032
 TMinuit.cxx:3033
 TMinuit.cxx:3034
 TMinuit.cxx:3035
 TMinuit.cxx:3036
 TMinuit.cxx:3037
 TMinuit.cxx:3038
 TMinuit.cxx:3039
 TMinuit.cxx:3040
 TMinuit.cxx:3041
 TMinuit.cxx:3042
 TMinuit.cxx:3043
 TMinuit.cxx:3044
 TMinuit.cxx:3045
 TMinuit.cxx:3046
 TMinuit.cxx:3047
 TMinuit.cxx:3048
 TMinuit.cxx:3049
 TMinuit.cxx:3050
 TMinuit.cxx:3051
 TMinuit.cxx:3052
 TMinuit.cxx:3053
 TMinuit.cxx:3054
 TMinuit.cxx:3055
 TMinuit.cxx:3056
 TMinuit.cxx:3057
 TMinuit.cxx:3058
 TMinuit.cxx:3059
 TMinuit.cxx:3060
 TMinuit.cxx:3061
 TMinuit.cxx:3062
 TMinuit.cxx:3063
 TMinuit.cxx:3064
 TMinuit.cxx:3065
 TMinuit.cxx:3066
 TMinuit.cxx:3067
 TMinuit.cxx:3068
 TMinuit.cxx:3069
 TMinuit.cxx:3070
 TMinuit.cxx:3071
 TMinuit.cxx:3072
 TMinuit.cxx:3073
 TMinuit.cxx:3074
 TMinuit.cxx:3075
 TMinuit.cxx:3076
 TMinuit.cxx:3077
 TMinuit.cxx:3078
 TMinuit.cxx:3079
 TMinuit.cxx:3080
 TMinuit.cxx:3081
 TMinuit.cxx:3082
 TMinuit.cxx:3083
 TMinuit.cxx:3084
 TMinuit.cxx:3085
 TMinuit.cxx:3086
 TMinuit.cxx:3087
 TMinuit.cxx:3088
 TMinuit.cxx:3089
 TMinuit.cxx:3090
 TMinuit.cxx:3091
 TMinuit.cxx:3092
 TMinuit.cxx:3093
 TMinuit.cxx:3094
 TMinuit.cxx:3095
 TMinuit.cxx:3096
 TMinuit.cxx:3097
 TMinuit.cxx:3098
 TMinuit.cxx:3099
 TMinuit.cxx:3100
 TMinuit.cxx:3101
 TMinuit.cxx:3102
 TMinuit.cxx:3103
 TMinuit.cxx:3104
 TMinuit.cxx:3105
 TMinuit.cxx:3106
 TMinuit.cxx:3107
 TMinuit.cxx:3108
 TMinuit.cxx:3109
 TMinuit.cxx:3110
 TMinuit.cxx:3111
 TMinuit.cxx:3112
 TMinuit.cxx:3113
 TMinuit.cxx:3114
 TMinuit.cxx:3115
 TMinuit.cxx:3116
 TMinuit.cxx:3117
 TMinuit.cxx:3118
 TMinuit.cxx:3119
 TMinuit.cxx:3120
 TMinuit.cxx:3121
 TMinuit.cxx:3122
 TMinuit.cxx:3123
 TMinuit.cxx:3124
 TMinuit.cxx:3125
 TMinuit.cxx:3126
 TMinuit.cxx:3127
 TMinuit.cxx:3128
 TMinuit.cxx:3129
 TMinuit.cxx:3130
 TMinuit.cxx:3131
 TMinuit.cxx:3132
 TMinuit.cxx:3133
 TMinuit.cxx:3134
 TMinuit.cxx:3135
 TMinuit.cxx:3136
 TMinuit.cxx:3137
 TMinuit.cxx:3138
 TMinuit.cxx:3139
 TMinuit.cxx:3140
 TMinuit.cxx:3141
 TMinuit.cxx:3142
 TMinuit.cxx:3143
 TMinuit.cxx:3144
 TMinuit.cxx:3145
 TMinuit.cxx:3146
 TMinuit.cxx:3147
 TMinuit.cxx:3148
 TMinuit.cxx:3149
 TMinuit.cxx:3150
 TMinuit.cxx:3151
 TMinuit.cxx:3152
 TMinuit.cxx:3153
 TMinuit.cxx:3154
 TMinuit.cxx:3155
 TMinuit.cxx:3156
 TMinuit.cxx:3157
 TMinuit.cxx:3158
 TMinuit.cxx:3159
 TMinuit.cxx:3160
 TMinuit.cxx:3161
 TMinuit.cxx:3162
 TMinuit.cxx:3163
 TMinuit.cxx:3164
 TMinuit.cxx:3165
 TMinuit.cxx:3166
 TMinuit.cxx:3167
 TMinuit.cxx:3168
 TMinuit.cxx:3169
 TMinuit.cxx:3170
 TMinuit.cxx:3171
 TMinuit.cxx:3172
 TMinuit.cxx:3173
 TMinuit.cxx:3174
 TMinuit.cxx:3175
 TMinuit.cxx:3176
 TMinuit.cxx:3177
 TMinuit.cxx:3178
 TMinuit.cxx:3179
 TMinuit.cxx:3180
 TMinuit.cxx:3181
 TMinuit.cxx:3182
 TMinuit.cxx:3183
 TMinuit.cxx:3184
 TMinuit.cxx:3185
 TMinuit.cxx:3186
 TMinuit.cxx:3187
 TMinuit.cxx:3188
 TMinuit.cxx:3189
 TMinuit.cxx:3190
 TMinuit.cxx:3191
 TMinuit.cxx:3192
 TMinuit.cxx:3193
 TMinuit.cxx:3194
 TMinuit.cxx:3195
 TMinuit.cxx:3196
 TMinuit.cxx:3197
 TMinuit.cxx:3198
 TMinuit.cxx:3199
 TMinuit.cxx:3200
 TMinuit.cxx:3201
 TMinuit.cxx:3202
 TMinuit.cxx:3203
 TMinuit.cxx:3204
 TMinuit.cxx:3205
 TMinuit.cxx:3206
 TMinuit.cxx:3207
 TMinuit.cxx:3208
 TMinuit.cxx:3209
 TMinuit.cxx:3210
 TMinuit.cxx:3211
 TMinuit.cxx:3212
 TMinuit.cxx:3213
 TMinuit.cxx:3214
 TMinuit.cxx:3215
 TMinuit.cxx:3216
 TMinuit.cxx:3217
 TMinuit.cxx:3218
 TMinuit.cxx:3219
 TMinuit.cxx:3220
 TMinuit.cxx:3221
 TMinuit.cxx:3222
 TMinuit.cxx:3223
 TMinuit.cxx:3224
 TMinuit.cxx:3225
 TMinuit.cxx:3226
 TMinuit.cxx:3227
 TMinuit.cxx:3228
 TMinuit.cxx:3229
 TMinuit.cxx:3230
 TMinuit.cxx:3231
 TMinuit.cxx:3232
 TMinuit.cxx:3233
 TMinuit.cxx:3234
 TMinuit.cxx:3235
 TMinuit.cxx:3236
 TMinuit.cxx:3237
 TMinuit.cxx:3238
 TMinuit.cxx:3239
 TMinuit.cxx:3240
 TMinuit.cxx:3241
 TMinuit.cxx:3242
 TMinuit.cxx:3243
 TMinuit.cxx:3244
 TMinuit.cxx:3245
 TMinuit.cxx:3246
 TMinuit.cxx:3247
 TMinuit.cxx:3248
 TMinuit.cxx:3249
 TMinuit.cxx:3250
 TMinuit.cxx:3251
 TMinuit.cxx:3252
 TMinuit.cxx:3253
 TMinuit.cxx:3254
 TMinuit.cxx:3255
 TMinuit.cxx:3256
 TMinuit.cxx:3257
 TMinuit.cxx:3258
 TMinuit.cxx:3259
 TMinuit.cxx:3260
 TMinuit.cxx:3261
 TMinuit.cxx:3262
 TMinuit.cxx:3263
 TMinuit.cxx:3264
 TMinuit.cxx:3265
 TMinuit.cxx:3266
 TMinuit.cxx:3267
 TMinuit.cxx:3268
 TMinuit.cxx:3269
 TMinuit.cxx:3270
 TMinuit.cxx:3271
 TMinuit.cxx:3272
 TMinuit.cxx:3273
 TMinuit.cxx:3274
 TMinuit.cxx:3275
 TMinuit.cxx:3276
 TMinuit.cxx:3277
 TMinuit.cxx:3278
 TMinuit.cxx:3279
 TMinuit.cxx:3280
 TMinuit.cxx:3281
 TMinuit.cxx:3282
 TMinuit.cxx:3283
 TMinuit.cxx:3284
 TMinuit.cxx:3285
 TMinuit.cxx:3286
 TMinuit.cxx:3287
 TMinuit.cxx:3288
 TMinuit.cxx:3289
 TMinuit.cxx:3290
 TMinuit.cxx:3291
 TMinuit.cxx:3292
 TMinuit.cxx:3293
 TMinuit.cxx:3294
 TMinuit.cxx:3295
 TMinuit.cxx:3296
 TMinuit.cxx:3297
 TMinuit.cxx:3298
 TMinuit.cxx:3299
 TMinuit.cxx:3300
 TMinuit.cxx:3301
 TMinuit.cxx:3302
 TMinuit.cxx:3303
 TMinuit.cxx:3304
 TMinuit.cxx:3305
 TMinuit.cxx:3306
 TMinuit.cxx:3307
 TMinuit.cxx:3308
 TMinuit.cxx:3309
 TMinuit.cxx:3310
 TMinuit.cxx:3311
 TMinuit.cxx:3312
 TMinuit.cxx:3313
 TMinuit.cxx:3314
 TMinuit.cxx:3315
 TMinuit.cxx:3316
 TMinuit.cxx:3317
 TMinuit.cxx:3318
 TMinuit.cxx:3319
 TMinuit.cxx:3320
 TMinuit.cxx:3321
 TMinuit.cxx:3322
 TMinuit.cxx:3323
 TMinuit.cxx:3324
 TMinuit.cxx:3325
 TMinuit.cxx:3326
 TMinuit.cxx:3327
 TMinuit.cxx:3328
 TMinuit.cxx:3329
 TMinuit.cxx:3330
 TMinuit.cxx:3331
 TMinuit.cxx:3332
 TMinuit.cxx:3333
 TMinuit.cxx:3334
 TMinuit.cxx:3335
 TMinuit.cxx:3336
 TMinuit.cxx:3337
 TMinuit.cxx:3338
 TMinuit.cxx:3339
 TMinuit.cxx:3340
 TMinuit.cxx:3341
 TMinuit.cxx:3342
 TMinuit.cxx:3343
 TMinuit.cxx:3344
 TMinuit.cxx:3345
 TMinuit.cxx:3346
 TMinuit.cxx:3347
 TMinuit.cxx:3348
 TMinuit.cxx:3349
 TMinuit.cxx:3350
 TMinuit.cxx:3351
 TMinuit.cxx:3352
 TMinuit.cxx:3353
 TMinuit.cxx:3354
 TMinuit.cxx:3355
 TMinuit.cxx:3356
 TMinuit.cxx:3357
 TMinuit.cxx:3358
 TMinuit.cxx:3359
 TMinuit.cxx:3360
 TMinuit.cxx:3361
 TMinuit.cxx:3362
 TMinuit.cxx:3363
 TMinuit.cxx:3364
 TMinuit.cxx:3365
 TMinuit.cxx:3366
 TMinuit.cxx:3367
 TMinuit.cxx:3368
 TMinuit.cxx:3369
 TMinuit.cxx:3370
 TMinuit.cxx:3371
 TMinuit.cxx:3372
 TMinuit.cxx:3373
 TMinuit.cxx:3374
 TMinuit.cxx:3375
 TMinuit.cxx:3376
 TMinuit.cxx:3377
 TMinuit.cxx:3378
 TMinuit.cxx:3379
 TMinuit.cxx:3380
 TMinuit.cxx:3381
 TMinuit.cxx:3382
 TMinuit.cxx:3383
 TMinuit.cxx:3384
 TMinuit.cxx:3385
 TMinuit.cxx:3386
 TMinuit.cxx:3387
 TMinuit.cxx:3388
 TMinuit.cxx:3389
 TMinuit.cxx:3390
 TMinuit.cxx:3391
 TMinuit.cxx:3392
 TMinuit.cxx:3393
 TMinuit.cxx:3394
 TMinuit.cxx:3395
 TMinuit.cxx:3396
 TMinuit.cxx:3397
 TMinuit.cxx:3398
 TMinuit.cxx:3399
 TMinuit.cxx:3400
 TMinuit.cxx:3401
 TMinuit.cxx:3402
 TMinuit.cxx:3403
 TMinuit.cxx:3404
 TMinuit.cxx:3405
 TMinuit.cxx:3406
 TMinuit.cxx:3407
 TMinuit.cxx:3408
 TMinuit.cxx:3409
 TMinuit.cxx:3410
 TMinuit.cxx:3411
 TMinuit.cxx:3412
 TMinuit.cxx:3413
 TMinuit.cxx:3414
 TMinuit.cxx:3415
 TMinuit.cxx:3416
 TMinuit.cxx:3417
 TMinuit.cxx:3418
 TMinuit.cxx:3419
 TMinuit.cxx:3420
 TMinuit.cxx:3421
 TMinuit.cxx:3422
 TMinuit.cxx:3423
 TMinuit.cxx:3424
 TMinuit.cxx:3425
 TMinuit.cxx:3426
 TMinuit.cxx:3427
 TMinuit.cxx:3428
 TMinuit.cxx:3429
 TMinuit.cxx:3430
 TMinuit.cxx:3431
 TMinuit.cxx:3432
 TMinuit.cxx:3433
 TMinuit.cxx:3434
 TMinuit.cxx:3435
 TMinuit.cxx:3436
 TMinuit.cxx:3437
 TMinuit.cxx:3438
 TMinuit.cxx:3439
 TMinuit.cxx:3440
 TMinuit.cxx:3441
 TMinuit.cxx:3442
 TMinuit.cxx:3443
 TMinuit.cxx:3444
 TMinuit.cxx:3445
 TMinuit.cxx:3446
 TMinuit.cxx:3447
 TMinuit.cxx:3448
 TMinuit.cxx:3449
 TMinuit.cxx:3450
 TMinuit.cxx:3451
 TMinuit.cxx:3452
 TMinuit.cxx:3453
 TMinuit.cxx:3454
 TMinuit.cxx:3455
 TMinuit.cxx:3456
 TMinuit.cxx:3457
 TMinuit.cxx:3458
 TMinuit.cxx:3459
 TMinuit.cxx:3460
 TMinuit.cxx:3461
 TMinuit.cxx:3462
 TMinuit.cxx:3463
 TMinuit.cxx:3464
 TMinuit.cxx:3465
 TMinuit.cxx:3466
 TMinuit.cxx:3467
 TMinuit.cxx:3468
 TMinuit.cxx:3469
 TMinuit.cxx:3470
 TMinuit.cxx:3471
 TMinuit.cxx:3472
 TMinuit.cxx:3473
 TMinuit.cxx:3474
 TMinuit.cxx:3475
 TMinuit.cxx:3476
 TMinuit.cxx:3477
 TMinuit.cxx:3478
 TMinuit.cxx:3479
 TMinuit.cxx:3480
 TMinuit.cxx:3481
 TMinuit.cxx:3482
 TMinuit.cxx:3483
 TMinuit.cxx:3484
 TMinuit.cxx:3485
 TMinuit.cxx:3486
 TMinuit.cxx:3487
 TMinuit.cxx:3488
 TMinuit.cxx:3489
 TMinuit.cxx:3490
 TMinuit.cxx:3491
 TMinuit.cxx:3492
 TMinuit.cxx:3493
 TMinuit.cxx:3494
 TMinuit.cxx:3495
 TMinuit.cxx:3496
 TMinuit.cxx:3497
 TMinuit.cxx:3498
 TMinuit.cxx:3499
 TMinuit.cxx:3500
 TMinuit.cxx:3501
 TMinuit.cxx:3502
 TMinuit.cxx:3503
 TMinuit.cxx:3504
 TMinuit.cxx:3505
 TMinuit.cxx:3506
 TMinuit.cxx:3507
 TMinuit.cxx:3508
 TMinuit.cxx:3509
 TMinuit.cxx:3510
 TMinuit.cxx:3511
 TMinuit.cxx:3512
 TMinuit.cxx:3513
 TMinuit.cxx:3514
 TMinuit.cxx:3515
 TMinuit.cxx:3516
 TMinuit.cxx:3517
 TMinuit.cxx:3518
 TMinuit.cxx:3519
 TMinuit.cxx:3520
 TMinuit.cxx:3521
 TMinuit.cxx:3522
 TMinuit.cxx:3523
 TMinuit.cxx:3524
 TMinuit.cxx:3525
 TMinuit.cxx:3526
 TMinuit.cxx:3527
 TMinuit.cxx:3528
 TMinuit.cxx:3529
 TMinuit.cxx:3530
 TMinuit.cxx:3531
 TMinuit.cxx:3532
 TMinuit.cxx:3533
 TMinuit.cxx:3534
 TMinuit.cxx:3535
 TMinuit.cxx:3536
 TMinuit.cxx:3537
 TMinuit.cxx:3538
 TMinuit.cxx:3539
 TMinuit.cxx:3540
 TMinuit.cxx:3541
 TMinuit.cxx:3542
 TMinuit.cxx:3543
 TMinuit.cxx:3544
 TMinuit.cxx:3545
 TMinuit.cxx:3546
 TMinuit.cxx:3547
 TMinuit.cxx:3548
 TMinuit.cxx:3549
 TMinuit.cxx:3550
 TMinuit.cxx:3551
 TMinuit.cxx:3552
 TMinuit.cxx:3553
 TMinuit.cxx:3554
 TMinuit.cxx:3555
 TMinuit.cxx:3556
 TMinuit.cxx:3557
 TMinuit.cxx:3558
 TMinuit.cxx:3559
 TMinuit.cxx:3560
 TMinuit.cxx:3561
 TMinuit.cxx:3562
 TMinuit.cxx:3563
 TMinuit.cxx:3564
 TMinuit.cxx:3565
 TMinuit.cxx:3566
 TMinuit.cxx:3567
 TMinuit.cxx:3568
 TMinuit.cxx:3569
 TMinuit.cxx:3570
 TMinuit.cxx:3571
 TMinuit.cxx:3572
 TMinuit.cxx:3573
 TMinuit.cxx:3574
 TMinuit.cxx:3575
 TMinuit.cxx:3576
 TMinuit.cxx:3577
 TMinuit.cxx:3578
 TMinuit.cxx:3579
 TMinuit.cxx:3580
 TMinuit.cxx:3581
 TMinuit.cxx:3582
 TMinuit.cxx:3583
 TMinuit.cxx:3584
 TMinuit.cxx:3585
 TMinuit.cxx:3586
 TMinuit.cxx:3587
 TMinuit.cxx:3588
 TMinuit.cxx:3589
 TMinuit.cxx:3590
 TMinuit.cxx:3591
 TMinuit.cxx:3592
 TMinuit.cxx:3593
 TMinuit.cxx:3594
 TMinuit.cxx:3595
 TMinuit.cxx:3596
 TMinuit.cxx:3597
 TMinuit.cxx:3598
 TMinuit.cxx:3599
 TMinuit.cxx:3600
 TMinuit.cxx:3601
 TMinuit.cxx:3602
 TMinuit.cxx:3603
 TMinuit.cxx:3604
 TMinuit.cxx:3605
 TMinuit.cxx:3606
 TMinuit.cxx:3607
 TMinuit.cxx:3608
 TMinuit.cxx:3609
 TMinuit.cxx:3610
 TMinuit.cxx:3611
 TMinuit.cxx:3612
 TMinuit.cxx:3613
 TMinuit.cxx:3614
 TMinuit.cxx:3615
 TMinuit.cxx:3616
 TMinuit.cxx:3617
 TMinuit.cxx:3618
 TMinuit.cxx:3619
 TMinuit.cxx:3620
 TMinuit.cxx:3621
 TMinuit.cxx:3622
 TMinuit.cxx:3623
 TMinuit.cxx:3624
 TMinuit.cxx:3625
 TMinuit.cxx:3626
 TMinuit.cxx:3627
 TMinuit.cxx:3628
 TMinuit.cxx:3629
 TMinuit.cxx:3630
 TMinuit.cxx:3631
 TMinuit.cxx:3632
 TMinuit.cxx:3633
 TMinuit.cxx:3634
 TMinuit.cxx:3635
 TMinuit.cxx:3636
 TMinuit.cxx:3637
 TMinuit.cxx:3638
 TMinuit.cxx:3639
 TMinuit.cxx:3640
 TMinuit.cxx:3641
 TMinuit.cxx:3642
 TMinuit.cxx:3643
 TMinuit.cxx:3644
 TMinuit.cxx:3645
 TMinuit.cxx:3646
 TMinuit.cxx:3647
 TMinuit.cxx:3648
 TMinuit.cxx:3649
 TMinuit.cxx:3650
 TMinuit.cxx:3651
 TMinuit.cxx:3652
 TMinuit.cxx:3653
 TMinuit.cxx:3654
 TMinuit.cxx:3655
 TMinuit.cxx:3656
 TMinuit.cxx:3657
 TMinuit.cxx:3658
 TMinuit.cxx:3659
 TMinuit.cxx:3660
 TMinuit.cxx:3661
 TMinuit.cxx:3662
 TMinuit.cxx:3663
 TMinuit.cxx:3664
 TMinuit.cxx:3665
 TMinuit.cxx:3666
 TMinuit.cxx:3667
 TMinuit.cxx:3668
 TMinuit.cxx:3669
 TMinuit.cxx:3670
 TMinuit.cxx:3671
 TMinuit.cxx:3672
 TMinuit.cxx:3673
 TMinuit.cxx:3674
 TMinuit.cxx:3675
 TMinuit.cxx:3676
 TMinuit.cxx:3677
 TMinuit.cxx:3678
 TMinuit.cxx:3679
 TMinuit.cxx:3680
 TMinuit.cxx:3681
 TMinuit.cxx:3682
 TMinuit.cxx:3683
 TMinuit.cxx:3684
 TMinuit.cxx:3685
 TMinuit.cxx:3686
 TMinuit.cxx:3687
 TMinuit.cxx:3688
 TMinuit.cxx:3689
 TMinuit.cxx:3690
 TMinuit.cxx:3691
 TMinuit.cxx:3692
 TMinuit.cxx:3693
 TMinuit.cxx:3694
 TMinuit.cxx:3695
 TMinuit.cxx:3696
 TMinuit.cxx:3697
 TMinuit.cxx:3698
 TMinuit.cxx:3699
 TMinuit.cxx:3700
 TMinuit.cxx:3701
 TMinuit.cxx:3702
 TMinuit.cxx:3703
 TMinuit.cxx:3704
 TMinuit.cxx:3705
 TMinuit.cxx:3706
 TMinuit.cxx:3707
 TMinuit.cxx:3708
 TMinuit.cxx:3709
 TMinuit.cxx:3710
 TMinuit.cxx:3711
 TMinuit.cxx:3712
 TMinuit.cxx:3713
 TMinuit.cxx:3714
 TMinuit.cxx:3715
 TMinuit.cxx:3716
 TMinuit.cxx:3717
 TMinuit.cxx:3718
 TMinuit.cxx:3719
 TMinuit.cxx:3720
 TMinuit.cxx:3721
 TMinuit.cxx:3722
 TMinuit.cxx:3723
 TMinuit.cxx:3724
 TMinuit.cxx:3725
 TMinuit.cxx:3726
 TMinuit.cxx:3727
 TMinuit.cxx:3728
 TMinuit.cxx:3729
 TMinuit.cxx:3730
 TMinuit.cxx:3731
 TMinuit.cxx:3732
 TMinuit.cxx:3733
 TMinuit.cxx:3734
 TMinuit.cxx:3735
 TMinuit.cxx:3736
 TMinuit.cxx:3737
 TMinuit.cxx:3738
 TMinuit.cxx:3739
 TMinuit.cxx:3740
 TMinuit.cxx:3741
 TMinuit.cxx:3742
 TMinuit.cxx:3743
 TMinuit.cxx:3744
 TMinuit.cxx:3745
 TMinuit.cxx:3746
 TMinuit.cxx:3747
 TMinuit.cxx:3748
 TMinuit.cxx:3749
 TMinuit.cxx:3750
 TMinuit.cxx:3751
 TMinuit.cxx:3752
 TMinuit.cxx:3753
 TMinuit.cxx:3754
 TMinuit.cxx:3755
 TMinuit.cxx:3756
 TMinuit.cxx:3757
 TMinuit.cxx:3758
 TMinuit.cxx:3759
 TMinuit.cxx:3760
 TMinuit.cxx:3761
 TMinuit.cxx:3762
 TMinuit.cxx:3763
 TMinuit.cxx:3764
 TMinuit.cxx:3765
 TMinuit.cxx:3766
 TMinuit.cxx:3767
 TMinuit.cxx:3768
 TMinuit.cxx:3769
 TMinuit.cxx:3770
 TMinuit.cxx:3771
 TMinuit.cxx:3772
 TMinuit.cxx:3773
 TMinuit.cxx:3774
 TMinuit.cxx:3775
 TMinuit.cxx:3776
 TMinuit.cxx:3777
 TMinuit.cxx:3778
 TMinuit.cxx:3779
 TMinuit.cxx:3780
 TMinuit.cxx:3781
 TMinuit.cxx:3782
 TMinuit.cxx:3783
 TMinuit.cxx:3784
 TMinuit.cxx:3785
 TMinuit.cxx:3786
 TMinuit.cxx:3787
 TMinuit.cxx:3788
 TMinuit.cxx:3789
 TMinuit.cxx:3790
 TMinuit.cxx:3791
 TMinuit.cxx:3792
 TMinuit.cxx:3793
 TMinuit.cxx:3794
 TMinuit.cxx:3795
 TMinuit.cxx:3796
 TMinuit.cxx:3797
 TMinuit.cxx:3798
 TMinuit.cxx:3799
 TMinuit.cxx:3800
 TMinuit.cxx:3801
 TMinuit.cxx:3802
 TMinuit.cxx:3803
 TMinuit.cxx:3804
 TMinuit.cxx:3805
 TMinuit.cxx:3806
 TMinuit.cxx:3807
 TMinuit.cxx:3808
 TMinuit.cxx:3809
 TMinuit.cxx:3810
 TMinuit.cxx:3811
 TMinuit.cxx:3812
 TMinuit.cxx:3813
 TMinuit.cxx:3814
 TMinuit.cxx:3815
 TMinuit.cxx:3816
 TMinuit.cxx:3817
 TMinuit.cxx:3818
 TMinuit.cxx:3819
 TMinuit.cxx:3820
 TMinuit.cxx:3821
 TMinuit.cxx:3822
 TMinuit.cxx:3823
 TMinuit.cxx:3824
 TMinuit.cxx:3825
 TMinuit.cxx:3826
 TMinuit.cxx:3827
 TMinuit.cxx:3828
 TMinuit.cxx:3829
 TMinuit.cxx:3830
 TMinuit.cxx:3831
 TMinuit.cxx:3832
 TMinuit.cxx:3833
 TMinuit.cxx:3834
 TMinuit.cxx:3835
 TMinuit.cxx:3836
 TMinuit.cxx:3837
 TMinuit.cxx:3838
 TMinuit.cxx:3839
 TMinuit.cxx:3840
 TMinuit.cxx:3841
 TMinuit.cxx:3842
 TMinuit.cxx:3843
 TMinuit.cxx:3844
 TMinuit.cxx:3845
 TMinuit.cxx:3846
 TMinuit.cxx:3847
 TMinuit.cxx:3848
 TMinuit.cxx:3849
 TMinuit.cxx:3850
 TMinuit.cxx:3851
 TMinuit.cxx:3852
 TMinuit.cxx:3853
 TMinuit.cxx:3854
 TMinuit.cxx:3855
 TMinuit.cxx:3856
 TMinuit.cxx:3857
 TMinuit.cxx:3858
 TMinuit.cxx:3859
 TMinuit.cxx:3860
 TMinuit.cxx:3861
 TMinuit.cxx:3862
 TMinuit.cxx:3863
 TMinuit.cxx:3864
 TMinuit.cxx:3865
 TMinuit.cxx:3866
 TMinuit.cxx:3867
 TMinuit.cxx:3868
 TMinuit.cxx:3869
 TMinuit.cxx:3870
 TMinuit.cxx:3871
 TMinuit.cxx:3872
 TMinuit.cxx:3873
 TMinuit.cxx:3874
 TMinuit.cxx:3875
 TMinuit.cxx:3876
 TMinuit.cxx:3877
 TMinuit.cxx:3878
 TMinuit.cxx:3879
 TMinuit.cxx:3880
 TMinuit.cxx:3881
 TMinuit.cxx:3882
 TMinuit.cxx:3883
 TMinuit.cxx:3884
 TMinuit.cxx:3885
 TMinuit.cxx:3886
 TMinuit.cxx:3887
 TMinuit.cxx:3888
 TMinuit.cxx:3889
 TMinuit.cxx:3890
 TMinuit.cxx:3891
 TMinuit.cxx:3892
 TMinuit.cxx:3893
 TMinuit.cxx:3894
 TMinuit.cxx:3895
 TMinuit.cxx:3896
 TMinuit.cxx:3897
 TMinuit.cxx:3898
 TMinuit.cxx:3899
 TMinuit.cxx:3900
 TMinuit.cxx:3901
 TMinuit.cxx:3902
 TMinuit.cxx:3903
 TMinuit.cxx:3904
 TMinuit.cxx:3905
 TMinuit.cxx:3906
 TMinuit.cxx:3907
 TMinuit.cxx:3908
 TMinuit.cxx:3909
 TMinuit.cxx:3910
 TMinuit.cxx:3911
 TMinuit.cxx:3912
 TMinuit.cxx:3913
 TMinuit.cxx:3914
 TMinuit.cxx:3915
 TMinuit.cxx:3916
 TMinuit.cxx:3917
 TMinuit.cxx:3918
 TMinuit.cxx:3919
 TMinuit.cxx:3920
 TMinuit.cxx:3921
 TMinuit.cxx:3922
 TMinuit.cxx:3923
 TMinuit.cxx:3924
 TMinuit.cxx:3925
 TMinuit.cxx:3926
 TMinuit.cxx:3927
 TMinuit.cxx:3928
 TMinuit.cxx:3929
 TMinuit.cxx:3930
 TMinuit.cxx:3931
 TMinuit.cxx:3932
 TMinuit.cxx:3933
 TMinuit.cxx:3934
 TMinuit.cxx:3935
 TMinuit.cxx:3936
 TMinuit.cxx:3937
 TMinuit.cxx:3938
 TMinuit.cxx:3939
 TMinuit.cxx:3940
 TMinuit.cxx:3941
 TMinuit.cxx:3942
 TMinuit.cxx:3943
 TMinuit.cxx:3944
 TMinuit.cxx:3945
 TMinuit.cxx:3946
 TMinuit.cxx:3947
 TMinuit.cxx:3948
 TMinuit.cxx:3949
 TMinuit.cxx:3950
 TMinuit.cxx:3951
 TMinuit.cxx:3952
 TMinuit.cxx:3953
 TMinuit.cxx:3954
 TMinuit.cxx:3955
 TMinuit.cxx:3956
 TMinuit.cxx:3957
 TMinuit.cxx:3958
 TMinuit.cxx:3959
 TMinuit.cxx:3960
 TMinuit.cxx:3961
 TMinuit.cxx:3962
 TMinuit.cxx:3963
 TMinuit.cxx:3964
 TMinuit.cxx:3965
 TMinuit.cxx:3966
 TMinuit.cxx:3967
 TMinuit.cxx:3968
 TMinuit.cxx:3969
 TMinuit.cxx:3970
 TMinuit.cxx:3971
 TMinuit.cxx:3972
 TMinuit.cxx:3973
 TMinuit.cxx:3974
 TMinuit.cxx:3975
 TMinuit.cxx:3976
 TMinuit.cxx:3977
 TMinuit.cxx:3978
 TMinuit.cxx:3979
 TMinuit.cxx:3980
 TMinuit.cxx:3981
 TMinuit.cxx:3982
 TMinuit.cxx:3983
 TMinuit.cxx:3984
 TMinuit.cxx:3985
 TMinuit.cxx:3986
 TMinuit.cxx:3987
 TMinuit.cxx:3988
 TMinuit.cxx:3989
 TMinuit.cxx:3990
 TMinuit.cxx:3991
 TMinuit.cxx:3992
 TMinuit.cxx:3993
 TMinuit.cxx:3994
 TMinuit.cxx:3995
 TMinuit.cxx:3996
 TMinuit.cxx:3997
 TMinuit.cxx:3998
 TMinuit.cxx:3999
 TMinuit.cxx:4000
 TMinuit.cxx:4001
 TMinuit.cxx:4002
 TMinuit.cxx:4003
 TMinuit.cxx:4004
 TMinuit.cxx:4005
 TMinuit.cxx:4006
 TMinuit.cxx:4007
 TMinuit.cxx:4008
 TMinuit.cxx:4009
 TMinuit.cxx:4010
 TMinuit.cxx:4011
 TMinuit.cxx:4012
 TMinuit.cxx:4013
 TMinuit.cxx:4014
 TMinuit.cxx:4015
 TMinuit.cxx:4016
 TMinuit.cxx:4017
 TMinuit.cxx:4018
 TMinuit.cxx:4019
 TMinuit.cxx:4020
 TMinuit.cxx:4021
 TMinuit.cxx:4022
 TMinuit.cxx:4023
 TMinuit.cxx:4024
 TMinuit.cxx:4025
 TMinuit.cxx:4026
 TMinuit.cxx:4027
 TMinuit.cxx:4028
 TMinuit.cxx:4029
 TMinuit.cxx:4030
 TMinuit.cxx:4031
 TMinuit.cxx:4032
 TMinuit.cxx:4033
 TMinuit.cxx:4034
 TMinuit.cxx:4035
 TMinuit.cxx:4036
 TMinuit.cxx:4037
 TMinuit.cxx:4038
 TMinuit.cxx:4039
 TMinuit.cxx:4040
 TMinuit.cxx:4041
 TMinuit.cxx:4042
 TMinuit.cxx:4043
 TMinuit.cxx:4044
 TMinuit.cxx:4045
 TMinuit.cxx:4046
 TMinuit.cxx:4047
 TMinuit.cxx:4048
 TMinuit.cxx:4049
 TMinuit.cxx:4050
 TMinuit.cxx:4051
 TMinuit.cxx:4052
 TMinuit.cxx:4053
 TMinuit.cxx:4054
 TMinuit.cxx:4055
 TMinuit.cxx:4056
 TMinuit.cxx:4057
 TMinuit.cxx:4058
 TMinuit.cxx:4059
 TMinuit.cxx:4060
 TMinuit.cxx:4061
 TMinuit.cxx:4062
 TMinuit.cxx:4063
 TMinuit.cxx:4064
 TMinuit.cxx:4065
 TMinuit.cxx:4066
 TMinuit.cxx:4067
 TMinuit.cxx:4068
 TMinuit.cxx:4069
 TMinuit.cxx:4070
 TMinuit.cxx:4071
 TMinuit.cxx:4072
 TMinuit.cxx:4073
 TMinuit.cxx:4074
 TMinuit.cxx:4075
 TMinuit.cxx:4076
 TMinuit.cxx:4077
 TMinuit.cxx:4078
 TMinuit.cxx:4079
 TMinuit.cxx:4080
 TMinuit.cxx:4081
 TMinuit.cxx:4082
 TMinuit.cxx:4083
 TMinuit.cxx:4084
 TMinuit.cxx:4085
 TMinuit.cxx:4086
 TMinuit.cxx:4087
 TMinuit.cxx:4088
 TMinuit.cxx:4089
 TMinuit.cxx:4090
 TMinuit.cxx:4091
 TMinuit.cxx:4092
 TMinuit.cxx:4093
 TMinuit.cxx:4094
 TMinuit.cxx:4095
 TMinuit.cxx:4096
 TMinuit.cxx:4097
 TMinuit.cxx:4098
 TMinuit.cxx:4099
 TMinuit.cxx:4100
 TMinuit.cxx:4101
 TMinuit.cxx:4102
 TMinuit.cxx:4103
 TMinuit.cxx:4104
 TMinuit.cxx:4105
 TMinuit.cxx:4106
 TMinuit.cxx:4107
 TMinuit.cxx:4108
 TMinuit.cxx:4109
 TMinuit.cxx:4110
 TMinuit.cxx:4111
 TMinuit.cxx:4112
 TMinuit.cxx:4113
 TMinuit.cxx:4114
 TMinuit.cxx:4115
 TMinuit.cxx:4116
 TMinuit.cxx:4117
 TMinuit.cxx:4118
 TMinuit.cxx:4119
 TMinuit.cxx:4120
 TMinuit.cxx:4121
 TMinuit.cxx:4122
 TMinuit.cxx:4123
 TMinuit.cxx:4124
 TMinuit.cxx:4125
 TMinuit.cxx:4126
 TMinuit.cxx:4127
 TMinuit.cxx:4128
 TMinuit.cxx:4129
 TMinuit.cxx:4130
 TMinuit.cxx:4131
 TMinuit.cxx:4132
 TMinuit.cxx:4133
 TMinuit.cxx:4134
 TMinuit.cxx:4135
 TMinuit.cxx:4136
 TMinuit.cxx:4137
 TMinuit.cxx:4138
 TMinuit.cxx:4139
 TMinuit.cxx:4140
 TMinuit.cxx:4141
 TMinuit.cxx:4142
 TMinuit.cxx:4143
 TMinuit.cxx:4144
 TMinuit.cxx:4145
 TMinuit.cxx:4146
 TMinuit.cxx:4147
 TMinuit.cxx:4148
 TMinuit.cxx:4149
 TMinuit.cxx:4150
 TMinuit.cxx:4151
 TMinuit.cxx:4152
 TMinuit.cxx:4153
 TMinuit.cxx:4154
 TMinuit.cxx:4155
 TMinuit.cxx:4156
 TMinuit.cxx:4157
 TMinuit.cxx:4158
 TMinuit.cxx:4159
 TMinuit.cxx:4160
 TMinuit.cxx:4161
 TMinuit.cxx:4162
 TMinuit.cxx:4163
 TMinuit.cxx:4164
 TMinuit.cxx:4165
 TMinuit.cxx:4166
 TMinuit.cxx:4167
 TMinuit.cxx:4168
 TMinuit.cxx:4169
 TMinuit.cxx:4170
 TMinuit.cxx:4171
 TMinuit.cxx:4172
 TMinuit.cxx:4173
 TMinuit.cxx:4174
 TMinuit.cxx:4175
 TMinuit.cxx:4176
 TMinuit.cxx:4177
 TMinuit.cxx:4178
 TMinuit.cxx:4179
 TMinuit.cxx:4180
 TMinuit.cxx:4181
 TMinuit.cxx:4182
 TMinuit.cxx:4183
 TMinuit.cxx:4184
 TMinuit.cxx:4185
 TMinuit.cxx:4186
 TMinuit.cxx:4187
 TMinuit.cxx:4188
 TMinuit.cxx:4189
 TMinuit.cxx:4190
 TMinuit.cxx:4191
 TMinuit.cxx:4192
 TMinuit.cxx:4193
 TMinuit.cxx:4194
 TMinuit.cxx:4195
 TMinuit.cxx:4196
 TMinuit.cxx:4197
 TMinuit.cxx:4198
 TMinuit.cxx:4199
 TMinuit.cxx:4200
 TMinuit.cxx:4201
 TMinuit.cxx:4202
 TMinuit.cxx:4203
 TMinuit.cxx:4204
 TMinuit.cxx:4205
 TMinuit.cxx:4206
 TMinuit.cxx:4207
 TMinuit.cxx:4208
 TMinuit.cxx:4209
 TMinuit.cxx:4210
 TMinuit.cxx:4211
 TMinuit.cxx:4212
 TMinuit.cxx:4213
 TMinuit.cxx:4214
 TMinuit.cxx:4215
 TMinuit.cxx:4216
 TMinuit.cxx:4217
 TMinuit.cxx:4218
 TMinuit.cxx:4219
 TMinuit.cxx:4220
 TMinuit.cxx:4221
 TMinuit.cxx:4222
 TMinuit.cxx:4223
 TMinuit.cxx:4224
 TMinuit.cxx:4225
 TMinuit.cxx:4226
 TMinuit.cxx:4227
 TMinuit.cxx:4228
 TMinuit.cxx:4229
 TMinuit.cxx:4230
 TMinuit.cxx:4231
 TMinuit.cxx:4232
 TMinuit.cxx:4233
 TMinuit.cxx:4234
 TMinuit.cxx:4235
 TMinuit.cxx:4236
 TMinuit.cxx:4237
 TMinuit.cxx:4238
 TMinuit.cxx:4239
 TMinuit.cxx:4240
 TMinuit.cxx:4241
 TMinuit.cxx:4242
 TMinuit.cxx:4243
 TMinuit.cxx:4244
 TMinuit.cxx:4245
 TMinuit.cxx:4246
 TMinuit.cxx:4247
 TMinuit.cxx:4248
 TMinuit.cxx:4249
 TMinuit.cxx:4250
 TMinuit.cxx:4251
 TMinuit.cxx:4252
 TMinuit.cxx:4253
 TMinuit.cxx:4254
 TMinuit.cxx:4255
 TMinuit.cxx:4256
 TMinuit.cxx:4257
 TMinuit.cxx:4258
 TMinuit.cxx:4259
 TMinuit.cxx:4260
 TMinuit.cxx:4261
 TMinuit.cxx:4262
 TMinuit.cxx:4263
 TMinuit.cxx:4264
 TMinuit.cxx:4265
 TMinuit.cxx:4266
 TMinuit.cxx:4267
 TMinuit.cxx:4268
 TMinuit.cxx:4269
 TMinuit.cxx:4270
 TMinuit.cxx:4271
 TMinuit.cxx:4272
 TMinuit.cxx:4273
 TMinuit.cxx:4274
 TMinuit.cxx:4275
 TMinuit.cxx:4276
 TMinuit.cxx:4277
 TMinuit.cxx:4278
 TMinuit.cxx:4279
 TMinuit.cxx:4280
 TMinuit.cxx:4281
 TMinuit.cxx:4282
 TMinuit.cxx:4283
 TMinuit.cxx:4284
 TMinuit.cxx:4285
 TMinuit.cxx:4286
 TMinuit.cxx:4287
 TMinuit.cxx:4288
 TMinuit.cxx:4289
 TMinuit.cxx:4290
 TMinuit.cxx:4291
 TMinuit.cxx:4292
 TMinuit.cxx:4293
 TMinuit.cxx:4294
 TMinuit.cxx:4295
 TMinuit.cxx:4296
 TMinuit.cxx:4297
 TMinuit.cxx:4298
 TMinuit.cxx:4299
 TMinuit.cxx:4300
 TMinuit.cxx:4301
 TMinuit.cxx:4302
 TMinuit.cxx:4303
 TMinuit.cxx:4304
 TMinuit.cxx:4305
 TMinuit.cxx:4306
 TMinuit.cxx:4307
 TMinuit.cxx:4308
 TMinuit.cxx:4309
 TMinuit.cxx:4310
 TMinuit.cxx:4311
 TMinuit.cxx:4312
 TMinuit.cxx:4313
 TMinuit.cxx:4314
 TMinuit.cxx:4315
 TMinuit.cxx:4316
 TMinuit.cxx:4317
 TMinuit.cxx:4318
 TMinuit.cxx:4319
 TMinuit.cxx:4320
 TMinuit.cxx:4321
 TMinuit.cxx:4322
 TMinuit.cxx:4323
 TMinuit.cxx:4324
 TMinuit.cxx:4325
 TMinuit.cxx:4326
 TMinuit.cxx:4327
 TMinuit.cxx:4328
 TMinuit.cxx:4329
 TMinuit.cxx:4330
 TMinuit.cxx:4331
 TMinuit.cxx:4332
 TMinuit.cxx:4333
 TMinuit.cxx:4334
 TMinuit.cxx:4335
 TMinuit.cxx:4336
 TMinuit.cxx:4337
 TMinuit.cxx:4338
 TMinuit.cxx:4339
 TMinuit.cxx:4340
 TMinuit.cxx:4341
 TMinuit.cxx:4342
 TMinuit.cxx:4343
 TMinuit.cxx:4344
 TMinuit.cxx:4345
 TMinuit.cxx:4346
 TMinuit.cxx:4347
 TMinuit.cxx:4348
 TMinuit.cxx:4349
 TMinuit.cxx:4350
 TMinuit.cxx:4351
 TMinuit.cxx:4352
 TMinuit.cxx:4353
 TMinuit.cxx:4354
 TMinuit.cxx:4355
 TMinuit.cxx:4356
 TMinuit.cxx:4357
 TMinuit.cxx:4358
 TMinuit.cxx:4359
 TMinuit.cxx:4360
 TMinuit.cxx:4361
 TMinuit.cxx:4362
 TMinuit.cxx:4363
 TMinuit.cxx:4364
 TMinuit.cxx:4365
 TMinuit.cxx:4366
 TMinuit.cxx:4367
 TMinuit.cxx:4368
 TMinuit.cxx:4369
 TMinuit.cxx:4370
 TMinuit.cxx:4371
 TMinuit.cxx:4372
 TMinuit.cxx:4373
 TMinuit.cxx:4374
 TMinuit.cxx:4375
 TMinuit.cxx:4376
 TMinuit.cxx:4377
 TMinuit.cxx:4378
 TMinuit.cxx:4379
 TMinuit.cxx:4380
 TMinuit.cxx:4381
 TMinuit.cxx:4382
 TMinuit.cxx:4383
 TMinuit.cxx:4384
 TMinuit.cxx:4385
 TMinuit.cxx:4386
 TMinuit.cxx:4387
 TMinuit.cxx:4388
 TMinuit.cxx:4389
 TMinuit.cxx:4390
 TMinuit.cxx:4391
 TMinuit.cxx:4392
 TMinuit.cxx:4393
 TMinuit.cxx:4394
 TMinuit.cxx:4395
 TMinuit.cxx:4396
 TMinuit.cxx:4397
 TMinuit.cxx:4398
 TMinuit.cxx:4399
 TMinuit.cxx:4400
 TMinuit.cxx:4401
 TMinuit.cxx:4402
 TMinuit.cxx:4403
 TMinuit.cxx:4404
 TMinuit.cxx:4405
 TMinuit.cxx:4406
 TMinuit.cxx:4407
 TMinuit.cxx:4408
 TMinuit.cxx:4409
 TMinuit.cxx:4410
 TMinuit.cxx:4411
 TMinuit.cxx:4412
 TMinuit.cxx:4413
 TMinuit.cxx:4414
 TMinuit.cxx:4415
 TMinuit.cxx:4416
 TMinuit.cxx:4417
 TMinuit.cxx:4418
 TMinuit.cxx:4419
 TMinuit.cxx:4420
 TMinuit.cxx:4421
 TMinuit.cxx:4422
 TMinuit.cxx:4423
 TMinuit.cxx:4424
 TMinuit.cxx:4425
 TMinuit.cxx:4426
 TMinuit.cxx:4427
 TMinuit.cxx:4428
 TMinuit.cxx:4429
 TMinuit.cxx:4430
 TMinuit.cxx:4431
 TMinuit.cxx:4432
 TMinuit.cxx:4433
 TMinuit.cxx:4434
 TMinuit.cxx:4435
 TMinuit.cxx:4436
 TMinuit.cxx:4437
 TMinuit.cxx:4438
 TMinuit.cxx:4439
 TMinuit.cxx:4440
 TMinuit.cxx:4441
 TMinuit.cxx:4442
 TMinuit.cxx:4443
 TMinuit.cxx:4444
 TMinuit.cxx:4445
 TMinuit.cxx:4446
 TMinuit.cxx:4447
 TMinuit.cxx:4448
 TMinuit.cxx:4449
 TMinuit.cxx:4450
 TMinuit.cxx:4451
 TMinuit.cxx:4452
 TMinuit.cxx:4453
 TMinuit.cxx:4454
 TMinuit.cxx:4455
 TMinuit.cxx:4456
 TMinuit.cxx:4457
 TMinuit.cxx:4458
 TMinuit.cxx:4459
 TMinuit.cxx:4460
 TMinuit.cxx:4461
 TMinuit.cxx:4462
 TMinuit.cxx:4463
 TMinuit.cxx:4464
 TMinuit.cxx:4465
 TMinuit.cxx:4466
 TMinuit.cxx:4467
 TMinuit.cxx:4468
 TMinuit.cxx:4469
 TMinuit.cxx:4470
 TMinuit.cxx:4471
 TMinuit.cxx:4472
 TMinuit.cxx:4473
 TMinuit.cxx:4474
 TMinuit.cxx:4475
 TMinuit.cxx:4476
 TMinuit.cxx:4477
 TMinuit.cxx:4478
 TMinuit.cxx:4479
 TMinuit.cxx:4480
 TMinuit.cxx:4481
 TMinuit.cxx:4482
 TMinuit.cxx:4483
 TMinuit.cxx:4484
 TMinuit.cxx:4485
 TMinuit.cxx:4486
 TMinuit.cxx:4487
 TMinuit.cxx:4488
 TMinuit.cxx:4489
 TMinuit.cxx:4490
 TMinuit.cxx:4491
 TMinuit.cxx:4492
 TMinuit.cxx:4493
 TMinuit.cxx:4494
 TMinuit.cxx:4495
 TMinuit.cxx:4496
 TMinuit.cxx:4497
 TMinuit.cxx:4498
 TMinuit.cxx:4499
 TMinuit.cxx:4500
 TMinuit.cxx:4501
 TMinuit.cxx:4502
 TMinuit.cxx:4503
 TMinuit.cxx:4504
 TMinuit.cxx:4505
 TMinuit.cxx:4506
 TMinuit.cxx:4507
 TMinuit.cxx:4508
 TMinuit.cxx:4509
 TMinuit.cxx:4510
 TMinuit.cxx:4511
 TMinuit.cxx:4512
 TMinuit.cxx:4513
 TMinuit.cxx:4514
 TMinuit.cxx:4515
 TMinuit.cxx:4516
 TMinuit.cxx:4517
 TMinuit.cxx:4518
 TMinuit.cxx:4519
 TMinuit.cxx:4520
 TMinuit.cxx:4521
 TMinuit.cxx:4522
 TMinuit.cxx:4523
 TMinuit.cxx:4524
 TMinuit.cxx:4525
 TMinuit.cxx:4526
 TMinuit.cxx:4527
 TMinuit.cxx:4528
 TMinuit.cxx:4529
 TMinuit.cxx:4530
 TMinuit.cxx:4531
 TMinuit.cxx:4532
 TMinuit.cxx:4533
 TMinuit.cxx:4534
 TMinuit.cxx:4535
 TMinuit.cxx:4536
 TMinuit.cxx:4537
 TMinuit.cxx:4538
 TMinuit.cxx:4539
 TMinuit.cxx:4540
 TMinuit.cxx:4541
 TMinuit.cxx:4542
 TMinuit.cxx:4543
 TMinuit.cxx:4544
 TMinuit.cxx:4545
 TMinuit.cxx:4546
 TMinuit.cxx:4547
 TMinuit.cxx:4548
 TMinuit.cxx:4549
 TMinuit.cxx:4550
 TMinuit.cxx:4551
 TMinuit.cxx:4552
 TMinuit.cxx:4553
 TMinuit.cxx:4554
 TMinuit.cxx:4555
 TMinuit.cxx:4556
 TMinuit.cxx:4557
 TMinuit.cxx:4558
 TMinuit.cxx:4559
 TMinuit.cxx:4560
 TMinuit.cxx:4561
 TMinuit.cxx:4562
 TMinuit.cxx:4563
 TMinuit.cxx:4564
 TMinuit.cxx:4565
 TMinuit.cxx:4566
 TMinuit.cxx:4567
 TMinuit.cxx:4568
 TMinuit.cxx:4569
 TMinuit.cxx:4570
 TMinuit.cxx:4571
 TMinuit.cxx:4572
 TMinuit.cxx:4573
 TMinuit.cxx:4574
 TMinuit.cxx:4575
 TMinuit.cxx:4576
 TMinuit.cxx:4577
 TMinuit.cxx:4578
 TMinuit.cxx:4579
 TMinuit.cxx:4580
 TMinuit.cxx:4581
 TMinuit.cxx:4582
 TMinuit.cxx:4583
 TMinuit.cxx:4584
 TMinuit.cxx:4585
 TMinuit.cxx:4586
 TMinuit.cxx:4587
 TMinuit.cxx:4588
 TMinuit.cxx:4589
 TMinuit.cxx:4590
 TMinuit.cxx:4591
 TMinuit.cxx:4592
 TMinuit.cxx:4593
 TMinuit.cxx:4594
 TMinuit.cxx:4595
 TMinuit.cxx:4596
 TMinuit.cxx:4597
 TMinuit.cxx:4598
 TMinuit.cxx:4599
 TMinuit.cxx:4600
 TMinuit.cxx:4601
 TMinuit.cxx:4602
 TMinuit.cxx:4603
 TMinuit.cxx:4604
 TMinuit.cxx:4605
 TMinuit.cxx:4606
 TMinuit.cxx:4607
 TMinuit.cxx:4608
 TMinuit.cxx:4609
 TMinuit.cxx:4610
 TMinuit.cxx:4611
 TMinuit.cxx:4612
 TMinuit.cxx:4613
 TMinuit.cxx:4614
 TMinuit.cxx:4615
 TMinuit.cxx:4616
 TMinuit.cxx:4617
 TMinuit.cxx:4618
 TMinuit.cxx:4619
 TMinuit.cxx:4620
 TMinuit.cxx:4621
 TMinuit.cxx:4622
 TMinuit.cxx:4623
 TMinuit.cxx:4624
 TMinuit.cxx:4625
 TMinuit.cxx:4626
 TMinuit.cxx:4627
 TMinuit.cxx:4628
 TMinuit.cxx:4629
 TMinuit.cxx:4630
 TMinuit.cxx:4631
 TMinuit.cxx:4632
 TMinuit.cxx:4633
 TMinuit.cxx:4634
 TMinuit.cxx:4635
 TMinuit.cxx:4636
 TMinuit.cxx:4637
 TMinuit.cxx:4638
 TMinuit.cxx:4639
 TMinuit.cxx:4640
 TMinuit.cxx:4641
 TMinuit.cxx:4642
 TMinuit.cxx:4643
 TMinuit.cxx:4644
 TMinuit.cxx:4645
 TMinuit.cxx:4646
 TMinuit.cxx:4647
 TMinuit.cxx:4648
 TMinuit.cxx:4649
 TMinuit.cxx:4650
 TMinuit.cxx:4651
 TMinuit.cxx:4652
 TMinuit.cxx:4653
 TMinuit.cxx:4654
 TMinuit.cxx:4655
 TMinuit.cxx:4656
 TMinuit.cxx:4657
 TMinuit.cxx:4658
 TMinuit.cxx:4659
 TMinuit.cxx:4660
 TMinuit.cxx:4661
 TMinuit.cxx:4662
 TMinuit.cxx:4663
 TMinuit.cxx:4664
 TMinuit.cxx:4665
 TMinuit.cxx:4666
 TMinuit.cxx:4667
 TMinuit.cxx:4668
 TMinuit.cxx:4669
 TMinuit.cxx:4670
 TMinuit.cxx:4671
 TMinuit.cxx:4672
 TMinuit.cxx:4673
 TMinuit.cxx:4674
 TMinuit.cxx:4675
 TMinuit.cxx:4676
 TMinuit.cxx:4677
 TMinuit.cxx:4678
 TMinuit.cxx:4679
 TMinuit.cxx:4680
 TMinuit.cxx:4681
 TMinuit.cxx:4682
 TMinuit.cxx:4683
 TMinuit.cxx:4684
 TMinuit.cxx:4685
 TMinuit.cxx:4686
 TMinuit.cxx:4687
 TMinuit.cxx:4688
 TMinuit.cxx:4689
 TMinuit.cxx:4690
 TMinuit.cxx:4691
 TMinuit.cxx:4692
 TMinuit.cxx:4693
 TMinuit.cxx:4694
 TMinuit.cxx:4695
 TMinuit.cxx:4696
 TMinuit.cxx:4697
 TMinuit.cxx:4698
 TMinuit.cxx:4699
 TMinuit.cxx:4700
 TMinuit.cxx:4701
 TMinuit.cxx:4702
 TMinuit.cxx:4703
 TMinuit.cxx:4704
 TMinuit.cxx:4705
 TMinuit.cxx:4706
 TMinuit.cxx:4707
 TMinuit.cxx:4708
 TMinuit.cxx:4709
 TMinuit.cxx:4710
 TMinuit.cxx:4711
 TMinuit.cxx:4712
 TMinuit.cxx:4713
 TMinuit.cxx:4714
 TMinuit.cxx:4715
 TMinuit.cxx:4716
 TMinuit.cxx:4717
 TMinuit.cxx:4718
 TMinuit.cxx:4719
 TMinuit.cxx:4720
 TMinuit.cxx:4721
 TMinuit.cxx:4722
 TMinuit.cxx:4723
 TMinuit.cxx:4724
 TMinuit.cxx:4725
 TMinuit.cxx:4726
 TMinuit.cxx:4727
 TMinuit.cxx:4728
 TMinuit.cxx:4729
 TMinuit.cxx:4730
 TMinuit.cxx:4731
 TMinuit.cxx:4732
 TMinuit.cxx:4733
 TMinuit.cxx:4734
 TMinuit.cxx:4735
 TMinuit.cxx:4736
 TMinuit.cxx:4737
 TMinuit.cxx:4738
 TMinuit.cxx:4739
 TMinuit.cxx:4740
 TMinuit.cxx:4741
 TMinuit.cxx:4742
 TMinuit.cxx:4743
 TMinuit.cxx:4744
 TMinuit.cxx:4745
 TMinuit.cxx:4746
 TMinuit.cxx:4747
 TMinuit.cxx:4748
 TMinuit.cxx:4749
 TMinuit.cxx:4750
 TMinuit.cxx:4751
 TMinuit.cxx:4752
 TMinuit.cxx:4753
 TMinuit.cxx:4754
 TMinuit.cxx:4755
 TMinuit.cxx:4756
 TMinuit.cxx:4757
 TMinuit.cxx:4758
 TMinuit.cxx:4759
 TMinuit.cxx:4760
 TMinuit.cxx:4761
 TMinuit.cxx:4762
 TMinuit.cxx:4763
 TMinuit.cxx:4764
 TMinuit.cxx:4765
 TMinuit.cxx:4766
 TMinuit.cxx:4767
 TMinuit.cxx:4768
 TMinuit.cxx:4769
 TMinuit.cxx:4770
 TMinuit.cxx:4771
 TMinuit.cxx:4772
 TMinuit.cxx:4773
 TMinuit.cxx:4774
 TMinuit.cxx:4775
 TMinuit.cxx:4776
 TMinuit.cxx:4777
 TMinuit.cxx:4778
 TMinuit.cxx:4779
 TMinuit.cxx:4780
 TMinuit.cxx:4781
 TMinuit.cxx:4782
 TMinuit.cxx:4783
 TMinuit.cxx:4784
 TMinuit.cxx:4785
 TMinuit.cxx:4786
 TMinuit.cxx:4787
 TMinuit.cxx:4788
 TMinuit.cxx:4789
 TMinuit.cxx:4790
 TMinuit.cxx:4791
 TMinuit.cxx:4792
 TMinuit.cxx:4793
 TMinuit.cxx:4794
 TMinuit.cxx:4795
 TMinuit.cxx:4796
 TMinuit.cxx:4797
 TMinuit.cxx:4798
 TMinuit.cxx:4799
 TMinuit.cxx:4800
 TMinuit.cxx:4801
 TMinuit.cxx:4802
 TMinuit.cxx:4803
 TMinuit.cxx:4804
 TMinuit.cxx:4805
 TMinuit.cxx:4806
 TMinuit.cxx:4807
 TMinuit.cxx:4808
 TMinuit.cxx:4809
 TMinuit.cxx:4810
 TMinuit.cxx:4811
 TMinuit.cxx:4812
 TMinuit.cxx:4813
 TMinuit.cxx:4814
 TMinuit.cxx:4815
 TMinuit.cxx:4816
 TMinuit.cxx:4817
 TMinuit.cxx:4818
 TMinuit.cxx:4819
 TMinuit.cxx:4820
 TMinuit.cxx:4821
 TMinuit.cxx:4822
 TMinuit.cxx:4823
 TMinuit.cxx:4824
 TMinuit.cxx:4825
 TMinuit.cxx:4826
 TMinuit.cxx:4827
 TMinuit.cxx:4828
 TMinuit.cxx:4829
 TMinuit.cxx:4830
 TMinuit.cxx:4831
 TMinuit.cxx:4832
 TMinuit.cxx:4833
 TMinuit.cxx:4834
 TMinuit.cxx:4835
 TMinuit.cxx:4836
 TMinuit.cxx:4837
 TMinuit.cxx:4838
 TMinuit.cxx:4839
 TMinuit.cxx:4840
 TMinuit.cxx:4841
 TMinuit.cxx:4842
 TMinuit.cxx:4843
 TMinuit.cxx:4844
 TMinuit.cxx:4845
 TMinuit.cxx:4846
 TMinuit.cxx:4847
 TMinuit.cxx:4848
 TMinuit.cxx:4849
 TMinuit.cxx:4850
 TMinuit.cxx:4851
 TMinuit.cxx:4852
 TMinuit.cxx:4853
 TMinuit.cxx:4854
 TMinuit.cxx:4855
 TMinuit.cxx:4856
 TMinuit.cxx:4857
 TMinuit.cxx:4858
 TMinuit.cxx:4859
 TMinuit.cxx:4860
 TMinuit.cxx:4861
 TMinuit.cxx:4862
 TMinuit.cxx:4863
 TMinuit.cxx:4864
 TMinuit.cxx:4865
 TMinuit.cxx:4866
 TMinuit.cxx:4867
 TMinuit.cxx:4868
 TMinuit.cxx:4869
 TMinuit.cxx:4870
 TMinuit.cxx:4871
 TMinuit.cxx:4872
 TMinuit.cxx:4873
 TMinuit.cxx:4874
 TMinuit.cxx:4875
 TMinuit.cxx:4876
 TMinuit.cxx:4877
 TMinuit.cxx:4878
 TMinuit.cxx:4879
 TMinuit.cxx:4880
 TMinuit.cxx:4881
 TMinuit.cxx:4882
 TMinuit.cxx:4883
 TMinuit.cxx:4884
 TMinuit.cxx:4885
 TMinuit.cxx:4886
 TMinuit.cxx:4887
 TMinuit.cxx:4888
 TMinuit.cxx:4889
 TMinuit.cxx:4890
 TMinuit.cxx:4891
 TMinuit.cxx:4892
 TMinuit.cxx:4893
 TMinuit.cxx:4894
 TMinuit.cxx:4895
 TMinuit.cxx:4896
 TMinuit.cxx:4897
 TMinuit.cxx:4898
 TMinuit.cxx:4899
 TMinuit.cxx:4900
 TMinuit.cxx:4901
 TMinuit.cxx:4902
 TMinuit.cxx:4903
 TMinuit.cxx:4904
 TMinuit.cxx:4905
 TMinuit.cxx:4906
 TMinuit.cxx:4907
 TMinuit.cxx:4908
 TMinuit.cxx:4909
 TMinuit.cxx:4910
 TMinuit.cxx:4911
 TMinuit.cxx:4912
 TMinuit.cxx:4913
 TMinuit.cxx:4914
 TMinuit.cxx:4915
 TMinuit.cxx:4916
 TMinuit.cxx:4917
 TMinuit.cxx:4918
 TMinuit.cxx:4919
 TMinuit.cxx:4920
 TMinuit.cxx:4921
 TMinuit.cxx:4922
 TMinuit.cxx:4923
 TMinuit.cxx:4924
 TMinuit.cxx:4925
 TMinuit.cxx:4926
 TMinuit.cxx:4927
 TMinuit.cxx:4928
 TMinuit.cxx:4929
 TMinuit.cxx:4930
 TMinuit.cxx:4931
 TMinuit.cxx:4932
 TMinuit.cxx:4933
 TMinuit.cxx:4934
 TMinuit.cxx:4935
 TMinuit.cxx:4936
 TMinuit.cxx:4937
 TMinuit.cxx:4938
 TMinuit.cxx:4939
 TMinuit.cxx:4940
 TMinuit.cxx:4941
 TMinuit.cxx:4942
 TMinuit.cxx:4943
 TMinuit.cxx:4944
 TMinuit.cxx:4945
 TMinuit.cxx:4946
 TMinuit.cxx:4947
 TMinuit.cxx:4948
 TMinuit.cxx:4949
 TMinuit.cxx:4950
 TMinuit.cxx:4951
 TMinuit.cxx:4952
 TMinuit.cxx:4953
 TMinuit.cxx:4954
 TMinuit.cxx:4955
 TMinuit.cxx:4956
 TMinuit.cxx:4957
 TMinuit.cxx:4958
 TMinuit.cxx:4959
 TMinuit.cxx:4960
 TMinuit.cxx:4961
 TMinuit.cxx:4962
 TMinuit.cxx:4963
 TMinuit.cxx:4964
 TMinuit.cxx:4965
 TMinuit.cxx:4966
 TMinuit.cxx:4967
 TMinuit.cxx:4968
 TMinuit.cxx:4969
 TMinuit.cxx:4970
 TMinuit.cxx:4971
 TMinuit.cxx:4972
 TMinuit.cxx:4973
 TMinuit.cxx:4974
 TMinuit.cxx:4975
 TMinuit.cxx:4976
 TMinuit.cxx:4977
 TMinuit.cxx:4978
 TMinuit.cxx:4979
 TMinuit.cxx:4980
 TMinuit.cxx:4981
 TMinuit.cxx:4982
 TMinuit.cxx:4983
 TMinuit.cxx:4984
 TMinuit.cxx:4985
 TMinuit.cxx:4986
 TMinuit.cxx:4987
 TMinuit.cxx:4988
 TMinuit.cxx:4989
 TMinuit.cxx:4990
 TMinuit.cxx:4991
 TMinuit.cxx:4992
 TMinuit.cxx:4993
 TMinuit.cxx:4994
 TMinuit.cxx:4995
 TMinuit.cxx:4996
 TMinuit.cxx:4997
 TMinuit.cxx:4998
 TMinuit.cxx:4999
 TMinuit.cxx:5000
 TMinuit.cxx:5001
 TMinuit.cxx:5002
 TMinuit.cxx:5003
 TMinuit.cxx:5004
 TMinuit.cxx:5005
 TMinuit.cxx:5006
 TMinuit.cxx:5007
 TMinuit.cxx:5008
 TMinuit.cxx:5009
 TMinuit.cxx:5010
 TMinuit.cxx:5011
 TMinuit.cxx:5012
 TMinuit.cxx:5013
 TMinuit.cxx:5014
 TMinuit.cxx:5015
 TMinuit.cxx:5016
 TMinuit.cxx:5017
 TMinuit.cxx:5018
 TMinuit.cxx:5019
 TMinuit.cxx:5020
 TMinuit.cxx:5021
 TMinuit.cxx:5022
 TMinuit.cxx:5023
 TMinuit.cxx:5024
 TMinuit.cxx:5025
 TMinuit.cxx:5026
 TMinuit.cxx:5027
 TMinuit.cxx:5028
 TMinuit.cxx:5029
 TMinuit.cxx:5030
 TMinuit.cxx:5031
 TMinuit.cxx:5032
 TMinuit.cxx:5033
 TMinuit.cxx:5034
 TMinuit.cxx:5035
 TMinuit.cxx:5036
 TMinuit.cxx:5037
 TMinuit.cxx:5038
 TMinuit.cxx:5039
 TMinuit.cxx:5040
 TMinuit.cxx:5041
 TMinuit.cxx:5042
 TMinuit.cxx:5043
 TMinuit.cxx:5044
 TMinuit.cxx:5045
 TMinuit.cxx:5046
 TMinuit.cxx:5047
 TMinuit.cxx:5048
 TMinuit.cxx:5049
 TMinuit.cxx:5050
 TMinuit.cxx:5051
 TMinuit.cxx:5052
 TMinuit.cxx:5053
 TMinuit.cxx:5054
 TMinuit.cxx:5055
 TMinuit.cxx:5056
 TMinuit.cxx:5057
 TMinuit.cxx:5058
 TMinuit.cxx:5059
 TMinuit.cxx:5060
 TMinuit.cxx:5061
 TMinuit.cxx:5062
 TMinuit.cxx:5063
 TMinuit.cxx:5064
 TMinuit.cxx:5065
 TMinuit.cxx:5066
 TMinuit.cxx:5067
 TMinuit.cxx:5068
 TMinuit.cxx:5069
 TMinuit.cxx:5070
 TMinuit.cxx:5071
 TMinuit.cxx:5072
 TMinuit.cxx:5073
 TMinuit.cxx:5074
 TMinuit.cxx:5075
 TMinuit.cxx:5076
 TMinuit.cxx:5077
 TMinuit.cxx:5078
 TMinuit.cxx:5079
 TMinuit.cxx:5080
 TMinuit.cxx:5081
 TMinuit.cxx:5082
 TMinuit.cxx:5083
 TMinuit.cxx:5084
 TMinuit.cxx:5085
 TMinuit.cxx:5086
 TMinuit.cxx:5087
 TMinuit.cxx:5088
 TMinuit.cxx:5089
 TMinuit.cxx:5090
 TMinuit.cxx:5091
 TMinuit.cxx:5092
 TMinuit.cxx:5093
 TMinuit.cxx:5094
 TMinuit.cxx:5095
 TMinuit.cxx:5096
 TMinuit.cxx:5097
 TMinuit.cxx:5098
 TMinuit.cxx:5099
 TMinuit.cxx:5100
 TMinuit.cxx:5101
 TMinuit.cxx:5102
 TMinuit.cxx:5103
 TMinuit.cxx:5104
 TMinuit.cxx:5105
 TMinuit.cxx:5106
 TMinuit.cxx:5107
 TMinuit.cxx:5108
 TMinuit.cxx:5109
 TMinuit.cxx:5110
 TMinuit.cxx:5111
 TMinuit.cxx:5112
 TMinuit.cxx:5113
 TMinuit.cxx:5114
 TMinuit.cxx:5115
 TMinuit.cxx:5116
 TMinuit.cxx:5117
 TMinuit.cxx:5118
 TMinuit.cxx:5119
 TMinuit.cxx:5120
 TMinuit.cxx:5121
 TMinuit.cxx:5122
 TMinuit.cxx:5123
 TMinuit.cxx:5124
 TMinuit.cxx:5125
 TMinuit.cxx:5126
 TMinuit.cxx:5127
 TMinuit.cxx:5128
 TMinuit.cxx:5129
 TMinuit.cxx:5130
 TMinuit.cxx:5131
 TMinuit.cxx:5132
 TMinuit.cxx:5133
 TMinuit.cxx:5134
 TMinuit.cxx:5135
 TMinuit.cxx:5136
 TMinuit.cxx:5137
 TMinuit.cxx:5138
 TMinuit.cxx:5139
 TMinuit.cxx:5140
 TMinuit.cxx:5141
 TMinuit.cxx:5142
 TMinuit.cxx:5143
 TMinuit.cxx:5144
 TMinuit.cxx:5145
 TMinuit.cxx:5146
 TMinuit.cxx:5147
 TMinuit.cxx:5148
 TMinuit.cxx:5149
 TMinuit.cxx:5150
 TMinuit.cxx:5151
 TMinuit.cxx:5152
 TMinuit.cxx:5153
 TMinuit.cxx:5154
 TMinuit.cxx:5155
 TMinuit.cxx:5156
 TMinuit.cxx:5157
 TMinuit.cxx:5158
 TMinuit.cxx:5159
 TMinuit.cxx:5160
 TMinuit.cxx:5161
 TMinuit.cxx:5162
 TMinuit.cxx:5163
 TMinuit.cxx:5164
 TMinuit.cxx:5165
 TMinuit.cxx:5166
 TMinuit.cxx:5167
 TMinuit.cxx:5168
 TMinuit.cxx:5169
 TMinuit.cxx:5170
 TMinuit.cxx:5171
 TMinuit.cxx:5172
 TMinuit.cxx:5173
 TMinuit.cxx:5174
 TMinuit.cxx:5175
 TMinuit.cxx:5176
 TMinuit.cxx:5177
 TMinuit.cxx:5178
 TMinuit.cxx:5179
 TMinuit.cxx:5180
 TMinuit.cxx:5181
 TMinuit.cxx:5182
 TMinuit.cxx:5183
 TMinuit.cxx:5184
 TMinuit.cxx:5185
 TMinuit.cxx:5186
 TMinuit.cxx:5187
 TMinuit.cxx:5188
 TMinuit.cxx:5189
 TMinuit.cxx:5190
 TMinuit.cxx:5191
 TMinuit.cxx:5192
 TMinuit.cxx:5193
 TMinuit.cxx:5194
 TMinuit.cxx:5195
 TMinuit.cxx:5196
 TMinuit.cxx:5197
 TMinuit.cxx:5198
 TMinuit.cxx:5199
 TMinuit.cxx:5200
 TMinuit.cxx:5201
 TMinuit.cxx:5202
 TMinuit.cxx:5203
 TMinuit.cxx:5204
 TMinuit.cxx:5205
 TMinuit.cxx:5206
 TMinuit.cxx:5207
 TMinuit.cxx:5208
 TMinuit.cxx:5209
 TMinuit.cxx:5210
 TMinuit.cxx:5211
 TMinuit.cxx:5212
 TMinuit.cxx:5213
 TMinuit.cxx:5214
 TMinuit.cxx:5215
 TMinuit.cxx:5216
 TMinuit.cxx:5217
 TMinuit.cxx:5218
 TMinuit.cxx:5219
 TMinuit.cxx:5220
 TMinuit.cxx:5221
 TMinuit.cxx:5222
 TMinuit.cxx:5223
 TMinuit.cxx:5224
 TMinuit.cxx:5225
 TMinuit.cxx:5226
 TMinuit.cxx:5227
 TMinuit.cxx:5228
 TMinuit.cxx:5229
 TMinuit.cxx:5230
 TMinuit.cxx:5231
 TMinuit.cxx:5232
 TMinuit.cxx:5233
 TMinuit.cxx:5234
 TMinuit.cxx:5235
 TMinuit.cxx:5236
 TMinuit.cxx:5237
 TMinuit.cxx:5238
 TMinuit.cxx:5239
 TMinuit.cxx:5240
 TMinuit.cxx:5241
 TMinuit.cxx:5242
 TMinuit.cxx:5243
 TMinuit.cxx:5244
 TMinuit.cxx:5245
 TMinuit.cxx:5246
 TMinuit.cxx:5247
 TMinuit.cxx:5248
 TMinuit.cxx:5249
 TMinuit.cxx:5250
 TMinuit.cxx:5251
 TMinuit.cxx:5252
 TMinuit.cxx:5253
 TMinuit.cxx:5254
 TMinuit.cxx:5255
 TMinuit.cxx:5256
 TMinuit.cxx:5257
 TMinuit.cxx:5258
 TMinuit.cxx:5259
 TMinuit.cxx:5260
 TMinuit.cxx:5261
 TMinuit.cxx:5262
 TMinuit.cxx:5263
 TMinuit.cxx:5264
 TMinuit.cxx:5265
 TMinuit.cxx:5266
 TMinuit.cxx:5267
 TMinuit.cxx:5268
 TMinuit.cxx:5269
 TMinuit.cxx:5270
 TMinuit.cxx:5271
 TMinuit.cxx:5272
 TMinuit.cxx:5273
 TMinuit.cxx:5274
 TMinuit.cxx:5275
 TMinuit.cxx:5276
 TMinuit.cxx:5277
 TMinuit.cxx:5278
 TMinuit.cxx:5279
 TMinuit.cxx:5280
 TMinuit.cxx:5281
 TMinuit.cxx:5282
 TMinuit.cxx:5283
 TMinuit.cxx:5284
 TMinuit.cxx:5285
 TMinuit.cxx:5286
 TMinuit.cxx:5287
 TMinuit.cxx:5288
 TMinuit.cxx:5289
 TMinuit.cxx:5290
 TMinuit.cxx:5291
 TMinuit.cxx:5292
 TMinuit.cxx:5293
 TMinuit.cxx:5294
 TMinuit.cxx:5295
 TMinuit.cxx:5296
 TMinuit.cxx:5297
 TMinuit.cxx:5298
 TMinuit.cxx:5299
 TMinuit.cxx:5300
 TMinuit.cxx:5301
 TMinuit.cxx:5302
 TMinuit.cxx:5303
 TMinuit.cxx:5304
 TMinuit.cxx:5305
 TMinuit.cxx:5306
 TMinuit.cxx:5307
 TMinuit.cxx:5308
 TMinuit.cxx:5309
 TMinuit.cxx:5310
 TMinuit.cxx:5311
 TMinuit.cxx:5312
 TMinuit.cxx:5313
 TMinuit.cxx:5314
 TMinuit.cxx:5315
 TMinuit.cxx:5316
 TMinuit.cxx:5317
 TMinuit.cxx:5318
 TMinuit.cxx:5319
 TMinuit.cxx:5320
 TMinuit.cxx:5321
 TMinuit.cxx:5322
 TMinuit.cxx:5323
 TMinuit.cxx:5324
 TMinuit.cxx:5325
 TMinuit.cxx:5326
 TMinuit.cxx:5327
 TMinuit.cxx:5328
 TMinuit.cxx:5329
 TMinuit.cxx:5330
 TMinuit.cxx:5331
 TMinuit.cxx:5332
 TMinuit.cxx:5333
 TMinuit.cxx:5334
 TMinuit.cxx:5335
 TMinuit.cxx:5336
 TMinuit.cxx:5337
 TMinuit.cxx:5338
 TMinuit.cxx:5339
 TMinuit.cxx:5340
 TMinuit.cxx:5341
 TMinuit.cxx:5342
 TMinuit.cxx:5343
 TMinuit.cxx:5344
 TMinuit.cxx:5345
 TMinuit.cxx:5346
 TMinuit.cxx:5347
 TMinuit.cxx:5348
 TMinuit.cxx:5349
 TMinuit.cxx:5350
 TMinuit.cxx:5351
 TMinuit.cxx:5352
 TMinuit.cxx:5353
 TMinuit.cxx:5354
 TMinuit.cxx:5355
 TMinuit.cxx:5356
 TMinuit.cxx:5357
 TMinuit.cxx:5358
 TMinuit.cxx:5359
 TMinuit.cxx:5360
 TMinuit.cxx:5361
 TMinuit.cxx:5362
 TMinuit.cxx:5363
 TMinuit.cxx:5364
 TMinuit.cxx:5365
 TMinuit.cxx:5366
 TMinuit.cxx:5367
 TMinuit.cxx:5368
 TMinuit.cxx:5369
 TMinuit.cxx:5370
 TMinuit.cxx:5371
 TMinuit.cxx:5372
 TMinuit.cxx:5373
 TMinuit.cxx:5374
 TMinuit.cxx:5375
 TMinuit.cxx:5376
 TMinuit.cxx:5377
 TMinuit.cxx:5378
 TMinuit.cxx:5379
 TMinuit.cxx:5380
 TMinuit.cxx:5381
 TMinuit.cxx:5382
 TMinuit.cxx:5383
 TMinuit.cxx:5384
 TMinuit.cxx:5385
 TMinuit.cxx:5386
 TMinuit.cxx:5387
 TMinuit.cxx:5388
 TMinuit.cxx:5389
 TMinuit.cxx:5390
 TMinuit.cxx:5391
 TMinuit.cxx:5392
 TMinuit.cxx:5393
 TMinuit.cxx:5394
 TMinuit.cxx:5395
 TMinuit.cxx:5396
 TMinuit.cxx:5397
 TMinuit.cxx:5398
 TMinuit.cxx:5399
 TMinuit.cxx:5400
 TMinuit.cxx:5401
 TMinuit.cxx:5402
 TMinuit.cxx:5403
 TMinuit.cxx:5404
 TMinuit.cxx:5405
 TMinuit.cxx:5406
 TMinuit.cxx:5407
 TMinuit.cxx:5408
 TMinuit.cxx:5409
 TMinuit.cxx:5410
 TMinuit.cxx:5411
 TMinuit.cxx:5412
 TMinuit.cxx:5413
 TMinuit.cxx:5414
 TMinuit.cxx:5415
 TMinuit.cxx:5416
 TMinuit.cxx:5417
 TMinuit.cxx:5418
 TMinuit.cxx:5419
 TMinuit.cxx:5420
 TMinuit.cxx:5421
 TMinuit.cxx:5422
 TMinuit.cxx:5423
 TMinuit.cxx:5424
 TMinuit.cxx:5425
 TMinuit.cxx:5426
 TMinuit.cxx:5427
 TMinuit.cxx:5428
 TMinuit.cxx:5429
 TMinuit.cxx:5430
 TMinuit.cxx:5431
 TMinuit.cxx:5432
 TMinuit.cxx:5433
 TMinuit.cxx:5434
 TMinuit.cxx:5435
 TMinuit.cxx:5436
 TMinuit.cxx:5437
 TMinuit.cxx:5438
 TMinuit.cxx:5439
 TMinuit.cxx:5440
 TMinuit.cxx:5441
 TMinuit.cxx:5442
 TMinuit.cxx:5443
 TMinuit.cxx:5444
 TMinuit.cxx:5445
 TMinuit.cxx:5446
 TMinuit.cxx:5447
 TMinuit.cxx:5448
 TMinuit.cxx:5449
 TMinuit.cxx:5450
 TMinuit.cxx:5451
 TMinuit.cxx:5452
 TMinuit.cxx:5453
 TMinuit.cxx:5454
 TMinuit.cxx:5455
 TMinuit.cxx:5456
 TMinuit.cxx:5457
 TMinuit.cxx:5458
 TMinuit.cxx:5459
 TMinuit.cxx:5460
 TMinuit.cxx:5461
 TMinuit.cxx:5462
 TMinuit.cxx:5463
 TMinuit.cxx:5464
 TMinuit.cxx:5465
 TMinuit.cxx:5466
 TMinuit.cxx:5467
 TMinuit.cxx:5468
 TMinuit.cxx:5469
 TMinuit.cxx:5470
 TMinuit.cxx:5471
 TMinuit.cxx:5472
 TMinuit.cxx:5473
 TMinuit.cxx:5474
 TMinuit.cxx:5475
 TMinuit.cxx:5476
 TMinuit.cxx:5477
 TMinuit.cxx:5478
 TMinuit.cxx:5479
 TMinuit.cxx:5480
 TMinuit.cxx:5481
 TMinuit.cxx:5482
 TMinuit.cxx:5483
 TMinuit.cxx:5484
 TMinuit.cxx:5485
 TMinuit.cxx:5486
 TMinuit.cxx:5487
 TMinuit.cxx:5488
 TMinuit.cxx:5489
 TMinuit.cxx:5490
 TMinuit.cxx:5491
 TMinuit.cxx:5492
 TMinuit.cxx:5493
 TMinuit.cxx:5494
 TMinuit.cxx:5495
 TMinuit.cxx:5496
 TMinuit.cxx:5497
 TMinuit.cxx:5498
 TMinuit.cxx:5499
 TMinuit.cxx:5500
 TMinuit.cxx:5501
 TMinuit.cxx:5502
 TMinuit.cxx:5503
 TMinuit.cxx:5504
 TMinuit.cxx:5505
 TMinuit.cxx:5506
 TMinuit.cxx:5507
 TMinuit.cxx:5508
 TMinuit.cxx:5509
 TMinuit.cxx:5510
 TMinuit.cxx:5511
 TMinuit.cxx:5512
 TMinuit.cxx:5513
 TMinuit.cxx:5514
 TMinuit.cxx:5515
 TMinuit.cxx:5516
 TMinuit.cxx:5517
 TMinuit.cxx:5518
 TMinuit.cxx:5519
 TMinuit.cxx:5520
 TMinuit.cxx:5521
 TMinuit.cxx:5522
 TMinuit.cxx:5523
 TMinuit.cxx:5524
 TMinuit.cxx:5525
 TMinuit.cxx:5526
 TMinuit.cxx:5527
 TMinuit.cxx:5528
 TMinuit.cxx:5529
 TMinuit.cxx:5530
 TMinuit.cxx:5531
 TMinuit.cxx:5532
 TMinuit.cxx:5533
 TMinuit.cxx:5534
 TMinuit.cxx:5535
 TMinuit.cxx:5536
 TMinuit.cxx:5537
 TMinuit.cxx:5538
 TMinuit.cxx:5539
 TMinuit.cxx:5540
 TMinuit.cxx:5541
 TMinuit.cxx:5542
 TMinuit.cxx:5543
 TMinuit.cxx:5544
 TMinuit.cxx:5545
 TMinuit.cxx:5546
 TMinuit.cxx:5547
 TMinuit.cxx:5548
 TMinuit.cxx:5549
 TMinuit.cxx:5550
 TMinuit.cxx:5551
 TMinuit.cxx:5552
 TMinuit.cxx:5553
 TMinuit.cxx:5554
 TMinuit.cxx:5555
 TMinuit.cxx:5556
 TMinuit.cxx:5557
 TMinuit.cxx:5558
 TMinuit.cxx:5559
 TMinuit.cxx:5560
 TMinuit.cxx:5561
 TMinuit.cxx:5562
 TMinuit.cxx:5563
 TMinuit.cxx:5564
 TMinuit.cxx:5565
 TMinuit.cxx:5566
 TMinuit.cxx:5567
 TMinuit.cxx:5568
 TMinuit.cxx:5569
 TMinuit.cxx:5570
 TMinuit.cxx:5571
 TMinuit.cxx:5572
 TMinuit.cxx:5573
 TMinuit.cxx:5574
 TMinuit.cxx:5575
 TMinuit.cxx:5576
 TMinuit.cxx:5577
 TMinuit.cxx:5578
 TMinuit.cxx:5579
 TMinuit.cxx:5580
 TMinuit.cxx:5581
 TMinuit.cxx:5582
 TMinuit.cxx:5583
 TMinuit.cxx:5584
 TMinuit.cxx:5585
 TMinuit.cxx:5586
 TMinuit.cxx:5587
 TMinuit.cxx:5588
 TMinuit.cxx:5589
 TMinuit.cxx:5590
 TMinuit.cxx:5591
 TMinuit.cxx:5592
 TMinuit.cxx:5593
 TMinuit.cxx:5594
 TMinuit.cxx:5595
 TMinuit.cxx:5596
 TMinuit.cxx:5597
 TMinuit.cxx:5598
 TMinuit.cxx:5599
 TMinuit.cxx:5600
 TMinuit.cxx:5601
 TMinuit.cxx:5602
 TMinuit.cxx:5603
 TMinuit.cxx:5604
 TMinuit.cxx:5605
 TMinuit.cxx:5606
 TMinuit.cxx:5607
 TMinuit.cxx:5608
 TMinuit.cxx:5609
 TMinuit.cxx:5610
 TMinuit.cxx:5611
 TMinuit.cxx:5612
 TMinuit.cxx:5613
 TMinuit.cxx:5614
 TMinuit.cxx:5615
 TMinuit.cxx:5616
 TMinuit.cxx:5617
 TMinuit.cxx:5618
 TMinuit.cxx:5619
 TMinuit.cxx:5620
 TMinuit.cxx:5621
 TMinuit.cxx:5622
 TMinuit.cxx:5623
 TMinuit.cxx:5624
 TMinuit.cxx:5625
 TMinuit.cxx:5626
 TMinuit.cxx:5627
 TMinuit.cxx:5628
 TMinuit.cxx:5629
 TMinuit.cxx:5630
 TMinuit.cxx:5631
 TMinuit.cxx:5632
 TMinuit.cxx:5633
 TMinuit.cxx:5634
 TMinuit.cxx:5635
 TMinuit.cxx:5636
 TMinuit.cxx:5637
 TMinuit.cxx:5638
 TMinuit.cxx:5639
 TMinuit.cxx:5640
 TMinuit.cxx:5641
 TMinuit.cxx:5642
 TMinuit.cxx:5643
 TMinuit.cxx:5644
 TMinuit.cxx:5645
 TMinuit.cxx:5646
 TMinuit.cxx:5647
 TMinuit.cxx:5648
 TMinuit.cxx:5649
 TMinuit.cxx:5650
 TMinuit.cxx:5651
 TMinuit.cxx:5652
 TMinuit.cxx:5653
 TMinuit.cxx:5654
 TMinuit.cxx:5655
 TMinuit.cxx:5656
 TMinuit.cxx:5657
 TMinuit.cxx:5658
 TMinuit.cxx:5659
 TMinuit.cxx:5660
 TMinuit.cxx:5661
 TMinuit.cxx:5662
 TMinuit.cxx:5663
 TMinuit.cxx:5664
 TMinuit.cxx:5665
 TMinuit.cxx:5666
 TMinuit.cxx:5667
 TMinuit.cxx:5668
 TMinuit.cxx:5669
 TMinuit.cxx:5670
 TMinuit.cxx:5671
 TMinuit.cxx:5672
 TMinuit.cxx:5673
 TMinuit.cxx:5674
 TMinuit.cxx:5675
 TMinuit.cxx:5676
 TMinuit.cxx:5677
 TMinuit.cxx:5678
 TMinuit.cxx:5679
 TMinuit.cxx:5680
 TMinuit.cxx:5681
 TMinuit.cxx:5682
 TMinuit.cxx:5683
 TMinuit.cxx:5684
 TMinuit.cxx:5685
 TMinuit.cxx:5686
 TMinuit.cxx:5687
 TMinuit.cxx:5688
 TMinuit.cxx:5689
 TMinuit.cxx:5690
 TMinuit.cxx:5691
 TMinuit.cxx:5692
 TMinuit.cxx:5693
 TMinuit.cxx:5694
 TMinuit.cxx:5695
 TMinuit.cxx:5696
 TMinuit.cxx:5697
 TMinuit.cxx:5698
 TMinuit.cxx:5699
 TMinuit.cxx:5700
 TMinuit.cxx:5701
 TMinuit.cxx:5702
 TMinuit.cxx:5703
 TMinuit.cxx:5704
 TMinuit.cxx:5705
 TMinuit.cxx:5706
 TMinuit.cxx:5707
 TMinuit.cxx:5708
 TMinuit.cxx:5709
 TMinuit.cxx:5710
 TMinuit.cxx:5711
 TMinuit.cxx:5712
 TMinuit.cxx:5713
 TMinuit.cxx:5714
 TMinuit.cxx:5715
 TMinuit.cxx:5716
 TMinuit.cxx:5717
 TMinuit.cxx:5718
 TMinuit.cxx:5719
 TMinuit.cxx:5720
 TMinuit.cxx:5721
 TMinuit.cxx:5722
 TMinuit.cxx:5723
 TMinuit.cxx:5724
 TMinuit.cxx:5725
 TMinuit.cxx:5726
 TMinuit.cxx:5727
 TMinuit.cxx:5728
 TMinuit.cxx:5729
 TMinuit.cxx:5730
 TMinuit.cxx:5731
 TMinuit.cxx:5732
 TMinuit.cxx:5733
 TMinuit.cxx:5734
 TMinuit.cxx:5735
 TMinuit.cxx:5736
 TMinuit.cxx:5737
 TMinuit.cxx:5738
 TMinuit.cxx:5739
 TMinuit.cxx:5740
 TMinuit.cxx:5741
 TMinuit.cxx:5742
 TMinuit.cxx:5743
 TMinuit.cxx:5744
 TMinuit.cxx:5745
 TMinuit.cxx:5746
 TMinuit.cxx:5747
 TMinuit.cxx:5748
 TMinuit.cxx:5749
 TMinuit.cxx:5750
 TMinuit.cxx:5751
 TMinuit.cxx:5752
 TMinuit.cxx:5753
 TMinuit.cxx:5754
 TMinuit.cxx:5755
 TMinuit.cxx:5756
 TMinuit.cxx:5757
 TMinuit.cxx:5758
 TMinuit.cxx:5759
 TMinuit.cxx:5760
 TMinuit.cxx:5761
 TMinuit.cxx:5762
 TMinuit.cxx:5763
 TMinuit.cxx:5764
 TMinuit.cxx:5765
 TMinuit.cxx:5766
 TMinuit.cxx:5767
 TMinuit.cxx:5768
 TMinuit.cxx:5769
 TMinuit.cxx:5770
 TMinuit.cxx:5771
 TMinuit.cxx:5772
 TMinuit.cxx:5773
 TMinuit.cxx:5774
 TMinuit.cxx:5775
 TMinuit.cxx:5776
 TMinuit.cxx:5777
 TMinuit.cxx:5778
 TMinuit.cxx:5779
 TMinuit.cxx:5780
 TMinuit.cxx:5781
 TMinuit.cxx:5782
 TMinuit.cxx:5783
 TMinuit.cxx:5784
 TMinuit.cxx:5785
 TMinuit.cxx:5786
 TMinuit.cxx:5787
 TMinuit.cxx:5788
 TMinuit.cxx:5789
 TMinuit.cxx:5790
 TMinuit.cxx:5791
 TMinuit.cxx:5792
 TMinuit.cxx:5793
 TMinuit.cxx:5794
 TMinuit.cxx:5795
 TMinuit.cxx:5796
 TMinuit.cxx:5797
 TMinuit.cxx:5798
 TMinuit.cxx:5799
 TMinuit.cxx:5800
 TMinuit.cxx:5801
 TMinuit.cxx:5802
 TMinuit.cxx:5803
 TMinuit.cxx:5804
 TMinuit.cxx:5805
 TMinuit.cxx:5806
 TMinuit.cxx:5807
 TMinuit.cxx:5808
 TMinuit.cxx:5809
 TMinuit.cxx:5810
 TMinuit.cxx:5811
 TMinuit.cxx:5812
 TMinuit.cxx:5813
 TMinuit.cxx:5814
 TMinuit.cxx:5815
 TMinuit.cxx:5816
 TMinuit.cxx:5817
 TMinuit.cxx:5818
 TMinuit.cxx:5819
 TMinuit.cxx:5820
 TMinuit.cxx:5821
 TMinuit.cxx:5822
 TMinuit.cxx:5823
 TMinuit.cxx:5824
 TMinuit.cxx:5825
 TMinuit.cxx:5826
 TMinuit.cxx:5827
 TMinuit.cxx:5828
 TMinuit.cxx:5829
 TMinuit.cxx:5830
 TMinuit.cxx:5831
 TMinuit.cxx:5832
 TMinuit.cxx:5833
 TMinuit.cxx:5834
 TMinuit.cxx:5835
 TMinuit.cxx:5836
 TMinuit.cxx:5837
 TMinuit.cxx:5838
 TMinuit.cxx:5839
 TMinuit.cxx:5840
 TMinuit.cxx:5841
 TMinuit.cxx:5842
 TMinuit.cxx:5843
 TMinuit.cxx:5844
 TMinuit.cxx:5845
 TMinuit.cxx:5846
 TMinuit.cxx:5847
 TMinuit.cxx:5848
 TMinuit.cxx:5849
 TMinuit.cxx:5850
 TMinuit.cxx:5851
 TMinuit.cxx:5852
 TMinuit.cxx:5853
 TMinuit.cxx:5854
 TMinuit.cxx:5855
 TMinuit.cxx:5856
 TMinuit.cxx:5857
 TMinuit.cxx:5858
 TMinuit.cxx:5859
 TMinuit.cxx:5860
 TMinuit.cxx:5861
 TMinuit.cxx:5862
 TMinuit.cxx:5863
 TMinuit.cxx:5864
 TMinuit.cxx:5865
 TMinuit.cxx:5866
 TMinuit.cxx:5867
 TMinuit.cxx:5868
 TMinuit.cxx:5869
 TMinuit.cxx:5870
 TMinuit.cxx:5871
 TMinuit.cxx:5872
 TMinuit.cxx:5873
 TMinuit.cxx:5874
 TMinuit.cxx:5875
 TMinuit.cxx:5876
 TMinuit.cxx:5877
 TMinuit.cxx:5878
 TMinuit.cxx:5879
 TMinuit.cxx:5880
 TMinuit.cxx:5881
 TMinuit.cxx:5882
 TMinuit.cxx:5883
 TMinuit.cxx:5884
 TMinuit.cxx:5885
 TMinuit.cxx:5886
 TMinuit.cxx:5887
 TMinuit.cxx:5888
 TMinuit.cxx:5889
 TMinuit.cxx:5890
 TMinuit.cxx:5891
 TMinuit.cxx:5892
 TMinuit.cxx:5893
 TMinuit.cxx:5894
 TMinuit.cxx:5895
 TMinuit.cxx:5896
 TMinuit.cxx:5897
 TMinuit.cxx:5898
 TMinuit.cxx:5899
 TMinuit.cxx:5900
 TMinuit.cxx:5901
 TMinuit.cxx:5902
 TMinuit.cxx:5903
 TMinuit.cxx:5904
 TMinuit.cxx:5905
 TMinuit.cxx:5906
 TMinuit.cxx:5907
 TMinuit.cxx:5908
 TMinuit.cxx:5909
 TMinuit.cxx:5910
 TMinuit.cxx:5911
 TMinuit.cxx:5912
 TMinuit.cxx:5913
 TMinuit.cxx:5914
 TMinuit.cxx:5915
 TMinuit.cxx:5916
 TMinuit.cxx:5917
 TMinuit.cxx:5918
 TMinuit.cxx:5919
 TMinuit.cxx:5920
 TMinuit.cxx:5921
 TMinuit.cxx:5922
 TMinuit.cxx:5923
 TMinuit.cxx:5924
 TMinuit.cxx:5925
 TMinuit.cxx:5926
 TMinuit.cxx:5927
 TMinuit.cxx:5928
 TMinuit.cxx:5929
 TMinuit.cxx:5930
 TMinuit.cxx:5931
 TMinuit.cxx:5932
 TMinuit.cxx:5933
 TMinuit.cxx:5934
 TMinuit.cxx:5935
 TMinuit.cxx:5936
 TMinuit.cxx:5937
 TMinuit.cxx:5938
 TMinuit.cxx:5939
 TMinuit.cxx:5940
 TMinuit.cxx:5941
 TMinuit.cxx:5942
 TMinuit.cxx:5943
 TMinuit.cxx:5944
 TMinuit.cxx:5945
 TMinuit.cxx:5946
 TMinuit.cxx:5947
 TMinuit.cxx:5948
 TMinuit.cxx:5949
 TMinuit.cxx:5950
 TMinuit.cxx:5951
 TMinuit.cxx:5952
 TMinuit.cxx:5953
 TMinuit.cxx:5954
 TMinuit.cxx:5955
 TMinuit.cxx:5956
 TMinuit.cxx:5957
 TMinuit.cxx:5958
 TMinuit.cxx:5959
 TMinuit.cxx:5960
 TMinuit.cxx:5961
 TMinuit.cxx:5962
 TMinuit.cxx:5963
 TMinuit.cxx:5964
 TMinuit.cxx:5965
 TMinuit.cxx:5966
 TMinuit.cxx:5967
 TMinuit.cxx:5968
 TMinuit.cxx:5969
 TMinuit.cxx:5970
 TMinuit.cxx:5971
 TMinuit.cxx:5972
 TMinuit.cxx:5973
 TMinuit.cxx:5974
 TMinuit.cxx:5975
 TMinuit.cxx:5976
 TMinuit.cxx:5977
 TMinuit.cxx:5978
 TMinuit.cxx:5979
 TMinuit.cxx:5980
 TMinuit.cxx:5981
 TMinuit.cxx:5982
 TMinuit.cxx:5983
 TMinuit.cxx:5984
 TMinuit.cxx:5985
 TMinuit.cxx:5986
 TMinuit.cxx:5987
 TMinuit.cxx:5988
 TMinuit.cxx:5989
 TMinuit.cxx:5990
 TMinuit.cxx:5991
 TMinuit.cxx:5992
 TMinuit.cxx:5993
 TMinuit.cxx:5994
 TMinuit.cxx:5995
 TMinuit.cxx:5996
 TMinuit.cxx:5997
 TMinuit.cxx:5998
 TMinuit.cxx:5999
 TMinuit.cxx:6000
 TMinuit.cxx:6001
 TMinuit.cxx:6002
 TMinuit.cxx:6003
 TMinuit.cxx:6004
 TMinuit.cxx:6005
 TMinuit.cxx:6006
 TMinuit.cxx:6007
 TMinuit.cxx:6008
 TMinuit.cxx:6009
 TMinuit.cxx:6010
 TMinuit.cxx:6011
 TMinuit.cxx:6012
 TMinuit.cxx:6013
 TMinuit.cxx:6014
 TMinuit.cxx:6015
 TMinuit.cxx:6016
 TMinuit.cxx:6017
 TMinuit.cxx:6018
 TMinuit.cxx:6019
 TMinuit.cxx:6020
 TMinuit.cxx:6021
 TMinuit.cxx:6022
 TMinuit.cxx:6023
 TMinuit.cxx:6024
 TMinuit.cxx:6025
 TMinuit.cxx:6026
 TMinuit.cxx:6027
 TMinuit.cxx:6028
 TMinuit.cxx:6029
 TMinuit.cxx:6030
 TMinuit.cxx:6031
 TMinuit.cxx:6032
 TMinuit.cxx:6033
 TMinuit.cxx:6034
 TMinuit.cxx:6035
 TMinuit.cxx:6036
 TMinuit.cxx:6037
 TMinuit.cxx:6038
 TMinuit.cxx:6039
 TMinuit.cxx:6040
 TMinuit.cxx:6041
 TMinuit.cxx:6042
 TMinuit.cxx:6043
 TMinuit.cxx:6044
 TMinuit.cxx:6045
 TMinuit.cxx:6046
 TMinuit.cxx:6047
 TMinuit.cxx:6048
 TMinuit.cxx:6049
 TMinuit.cxx:6050
 TMinuit.cxx:6051
 TMinuit.cxx:6052
 TMinuit.cxx:6053
 TMinuit.cxx:6054
 TMinuit.cxx:6055
 TMinuit.cxx:6056
 TMinuit.cxx:6057
 TMinuit.cxx:6058
 TMinuit.cxx:6059
 TMinuit.cxx:6060
 TMinuit.cxx:6061
 TMinuit.cxx:6062
 TMinuit.cxx:6063
 TMinuit.cxx:6064
 TMinuit.cxx:6065
 TMinuit.cxx:6066
 TMinuit.cxx:6067
 TMinuit.cxx:6068
 TMinuit.cxx:6069
 TMinuit.cxx:6070
 TMinuit.cxx:6071
 TMinuit.cxx:6072
 TMinuit.cxx:6073
 TMinuit.cxx:6074
 TMinuit.cxx:6075
 TMinuit.cxx:6076
 TMinuit.cxx:6077
 TMinuit.cxx:6078
 TMinuit.cxx:6079
 TMinuit.cxx:6080
 TMinuit.cxx:6081
 TMinuit.cxx:6082
 TMinuit.cxx:6083
 TMinuit.cxx:6084
 TMinuit.cxx:6085
 TMinuit.cxx:6086
 TMinuit.cxx:6087
 TMinuit.cxx:6088
 TMinuit.cxx:6089
 TMinuit.cxx:6090
 TMinuit.cxx:6091
 TMinuit.cxx:6092
 TMinuit.cxx:6093
 TMinuit.cxx:6094
 TMinuit.cxx:6095
 TMinuit.cxx:6096
 TMinuit.cxx:6097
 TMinuit.cxx:6098
 TMinuit.cxx:6099
 TMinuit.cxx:6100
 TMinuit.cxx:6101
 TMinuit.cxx:6102
 TMinuit.cxx:6103
 TMinuit.cxx:6104
 TMinuit.cxx:6105
 TMinuit.cxx:6106
 TMinuit.cxx:6107
 TMinuit.cxx:6108
 TMinuit.cxx:6109
 TMinuit.cxx:6110
 TMinuit.cxx:6111
 TMinuit.cxx:6112
 TMinuit.cxx:6113
 TMinuit.cxx:6114
 TMinuit.cxx:6115
 TMinuit.cxx:6116
 TMinuit.cxx:6117
 TMinuit.cxx:6118
 TMinuit.cxx:6119
 TMinuit.cxx:6120
 TMinuit.cxx:6121
 TMinuit.cxx:6122
 TMinuit.cxx:6123
 TMinuit.cxx:6124
 TMinuit.cxx:6125
 TMinuit.cxx:6126
 TMinuit.cxx:6127
 TMinuit.cxx:6128
 TMinuit.cxx:6129
 TMinuit.cxx:6130
 TMinuit.cxx:6131
 TMinuit.cxx:6132
 TMinuit.cxx:6133
 TMinuit.cxx:6134
 TMinuit.cxx:6135
 TMinuit.cxx:6136
 TMinuit.cxx:6137
 TMinuit.cxx:6138
 TMinuit.cxx:6139
 TMinuit.cxx:6140
 TMinuit.cxx:6141
 TMinuit.cxx:6142
 TMinuit.cxx:6143
 TMinuit.cxx:6144
 TMinuit.cxx:6145
 TMinuit.cxx:6146
 TMinuit.cxx:6147
 TMinuit.cxx:6148
 TMinuit.cxx:6149
 TMinuit.cxx:6150
 TMinuit.cxx:6151
 TMinuit.cxx:6152
 TMinuit.cxx:6153
 TMinuit.cxx:6154
 TMinuit.cxx:6155
 TMinuit.cxx:6156
 TMinuit.cxx:6157
 TMinuit.cxx:6158
 TMinuit.cxx:6159
 TMinuit.cxx:6160
 TMinuit.cxx:6161
 TMinuit.cxx:6162
 TMinuit.cxx:6163
 TMinuit.cxx:6164
 TMinuit.cxx:6165
 TMinuit.cxx:6166
 TMinuit.cxx:6167
 TMinuit.cxx:6168
 TMinuit.cxx:6169
 TMinuit.cxx:6170
 TMinuit.cxx:6171
 TMinuit.cxx:6172
 TMinuit.cxx:6173
 TMinuit.cxx:6174
 TMinuit.cxx:6175
 TMinuit.cxx:6176
 TMinuit.cxx:6177
 TMinuit.cxx:6178
 TMinuit.cxx:6179
 TMinuit.cxx:6180
 TMinuit.cxx:6181
 TMinuit.cxx:6182
 TMinuit.cxx:6183
 TMinuit.cxx:6184
 TMinuit.cxx:6185
 TMinuit.cxx:6186
 TMinuit.cxx:6187
 TMinuit.cxx:6188
 TMinuit.cxx:6189
 TMinuit.cxx:6190
 TMinuit.cxx:6191
 TMinuit.cxx:6192
 TMinuit.cxx:6193
 TMinuit.cxx:6194
 TMinuit.cxx:6195
 TMinuit.cxx:6196
 TMinuit.cxx:6197
 TMinuit.cxx:6198
 TMinuit.cxx:6199
 TMinuit.cxx:6200
 TMinuit.cxx:6201
 TMinuit.cxx:6202
 TMinuit.cxx:6203
 TMinuit.cxx:6204
 TMinuit.cxx:6205
 TMinuit.cxx:6206
 TMinuit.cxx:6207
 TMinuit.cxx:6208
 TMinuit.cxx:6209
 TMinuit.cxx:6210
 TMinuit.cxx:6211
 TMinuit.cxx:6212
 TMinuit.cxx:6213
 TMinuit.cxx:6214
 TMinuit.cxx:6215
 TMinuit.cxx:6216
 TMinuit.cxx:6217
 TMinuit.cxx:6218
 TMinuit.cxx:6219
 TMinuit.cxx:6220
 TMinuit.cxx:6221
 TMinuit.cxx:6222
 TMinuit.cxx:6223
 TMinuit.cxx:6224
 TMinuit.cxx:6225
 TMinuit.cxx:6226
 TMinuit.cxx:6227
 TMinuit.cxx:6228
 TMinuit.cxx:6229
 TMinuit.cxx:6230
 TMinuit.cxx:6231
 TMinuit.cxx:6232
 TMinuit.cxx:6233
 TMinuit.cxx:6234
 TMinuit.cxx:6235
 TMinuit.cxx:6236
 TMinuit.cxx:6237
 TMinuit.cxx:6238
 TMinuit.cxx:6239
 TMinuit.cxx:6240
 TMinuit.cxx:6241
 TMinuit.cxx:6242
 TMinuit.cxx:6243
 TMinuit.cxx:6244
 TMinuit.cxx:6245
 TMinuit.cxx:6246
 TMinuit.cxx:6247
 TMinuit.cxx:6248
 TMinuit.cxx:6249
 TMinuit.cxx:6250
 TMinuit.cxx:6251
 TMinuit.cxx:6252
 TMinuit.cxx:6253
 TMinuit.cxx:6254
 TMinuit.cxx:6255
 TMinuit.cxx:6256
 TMinuit.cxx:6257
 TMinuit.cxx:6258
 TMinuit.cxx:6259
 TMinuit.cxx:6260
 TMinuit.cxx:6261
 TMinuit.cxx:6262
 TMinuit.cxx:6263
 TMinuit.cxx:6264
 TMinuit.cxx:6265
 TMinuit.cxx:6266
 TMinuit.cxx:6267
 TMinuit.cxx:6268
 TMinuit.cxx:6269
 TMinuit.cxx:6270
 TMinuit.cxx:6271
 TMinuit.cxx:6272
 TMinuit.cxx:6273
 TMinuit.cxx:6274
 TMinuit.cxx:6275
 TMinuit.cxx:6276
 TMinuit.cxx:6277
 TMinuit.cxx:6278
 TMinuit.cxx:6279
 TMinuit.cxx:6280
 TMinuit.cxx:6281
 TMinuit.cxx:6282
 TMinuit.cxx:6283
 TMinuit.cxx:6284
 TMinuit.cxx:6285
 TMinuit.cxx:6286
 TMinuit.cxx:6287
 TMinuit.cxx:6288
 TMinuit.cxx:6289
 TMinuit.cxx:6290
 TMinuit.cxx:6291
 TMinuit.cxx:6292
 TMinuit.cxx:6293
 TMinuit.cxx:6294
 TMinuit.cxx:6295
 TMinuit.cxx:6296
 TMinuit.cxx:6297
 TMinuit.cxx:6298
 TMinuit.cxx:6299
 TMinuit.cxx:6300
 TMinuit.cxx:6301
 TMinuit.cxx:6302
 TMinuit.cxx:6303
 TMinuit.cxx:6304
 TMinuit.cxx:6305
 TMinuit.cxx:6306
 TMinuit.cxx:6307
 TMinuit.cxx:6308
 TMinuit.cxx:6309
 TMinuit.cxx:6310
 TMinuit.cxx:6311
 TMinuit.cxx:6312
 TMinuit.cxx:6313
 TMinuit.cxx:6314
 TMinuit.cxx:6315
 TMinuit.cxx:6316
 TMinuit.cxx:6317
 TMinuit.cxx:6318
 TMinuit.cxx:6319
 TMinuit.cxx:6320
 TMinuit.cxx:6321
 TMinuit.cxx:6322
 TMinuit.cxx:6323
 TMinuit.cxx:6324
 TMinuit.cxx:6325
 TMinuit.cxx:6326
 TMinuit.cxx:6327
 TMinuit.cxx:6328
 TMinuit.cxx:6329
 TMinuit.cxx:6330
 TMinuit.cxx:6331
 TMinuit.cxx:6332
 TMinuit.cxx:6333
 TMinuit.cxx:6334
 TMinuit.cxx:6335
 TMinuit.cxx:6336
 TMinuit.cxx:6337
 TMinuit.cxx:6338
 TMinuit.cxx:6339
 TMinuit.cxx:6340
 TMinuit.cxx:6341
 TMinuit.cxx:6342
 TMinuit.cxx:6343
 TMinuit.cxx:6344
 TMinuit.cxx:6345
 TMinuit.cxx:6346
 TMinuit.cxx:6347
 TMinuit.cxx:6348
 TMinuit.cxx:6349
 TMinuit.cxx:6350
 TMinuit.cxx:6351
 TMinuit.cxx:6352
 TMinuit.cxx:6353
 TMinuit.cxx:6354
 TMinuit.cxx:6355
 TMinuit.cxx:6356
 TMinuit.cxx:6357
 TMinuit.cxx:6358
 TMinuit.cxx:6359
 TMinuit.cxx:6360
 TMinuit.cxx:6361
 TMinuit.cxx:6362
 TMinuit.cxx:6363
 TMinuit.cxx:6364
 TMinuit.cxx:6365
 TMinuit.cxx:6366
 TMinuit.cxx:6367
 TMinuit.cxx:6368
 TMinuit.cxx:6369
 TMinuit.cxx:6370
 TMinuit.cxx:6371
 TMinuit.cxx:6372
 TMinuit.cxx:6373
 TMinuit.cxx:6374
 TMinuit.cxx:6375
 TMinuit.cxx:6376
 TMinuit.cxx:6377
 TMinuit.cxx:6378
 TMinuit.cxx:6379
 TMinuit.cxx:6380
 TMinuit.cxx:6381
 TMinuit.cxx:6382
 TMinuit.cxx:6383
 TMinuit.cxx:6384
 TMinuit.cxx:6385
 TMinuit.cxx:6386
 TMinuit.cxx:6387
 TMinuit.cxx:6388
 TMinuit.cxx:6389
 TMinuit.cxx:6390
 TMinuit.cxx:6391
 TMinuit.cxx:6392
 TMinuit.cxx:6393
 TMinuit.cxx:6394
 TMinuit.cxx:6395
 TMinuit.cxx:6396
 TMinuit.cxx:6397
 TMinuit.cxx:6398
 TMinuit.cxx:6399
 TMinuit.cxx:6400
 TMinuit.cxx:6401
 TMinuit.cxx:6402
 TMinuit.cxx:6403
 TMinuit.cxx:6404
 TMinuit.cxx:6405
 TMinuit.cxx:6406
 TMinuit.cxx:6407
 TMinuit.cxx:6408
 TMinuit.cxx:6409
 TMinuit.cxx:6410
 TMinuit.cxx:6411
 TMinuit.cxx:6412
 TMinuit.cxx:6413
 TMinuit.cxx:6414
 TMinuit.cxx:6415
 TMinuit.cxx:6416
 TMinuit.cxx:6417
 TMinuit.cxx:6418
 TMinuit.cxx:6419
 TMinuit.cxx:6420
 TMinuit.cxx:6421
 TMinuit.cxx:6422
 TMinuit.cxx:6423
 TMinuit.cxx:6424
 TMinuit.cxx:6425
 TMinuit.cxx:6426
 TMinuit.cxx:6427
 TMinuit.cxx:6428
 TMinuit.cxx:6429
 TMinuit.cxx:6430
 TMinuit.cxx:6431
 TMinuit.cxx:6432
 TMinuit.cxx:6433
 TMinuit.cxx:6434
 TMinuit.cxx:6435
 TMinuit.cxx:6436
 TMinuit.cxx:6437
 TMinuit.cxx:6438
 TMinuit.cxx:6439
 TMinuit.cxx:6440
 TMinuit.cxx:6441
 TMinuit.cxx:6442
 TMinuit.cxx:6443
 TMinuit.cxx:6444
 TMinuit.cxx:6445
 TMinuit.cxx:6446
 TMinuit.cxx:6447
 TMinuit.cxx:6448
 TMinuit.cxx:6449
 TMinuit.cxx:6450
 TMinuit.cxx:6451
 TMinuit.cxx:6452
 TMinuit.cxx:6453
 TMinuit.cxx:6454
 TMinuit.cxx:6455
 TMinuit.cxx:6456
 TMinuit.cxx:6457
 TMinuit.cxx:6458
 TMinuit.cxx:6459
 TMinuit.cxx:6460
 TMinuit.cxx:6461
 TMinuit.cxx:6462
 TMinuit.cxx:6463
 TMinuit.cxx:6464
 TMinuit.cxx:6465
 TMinuit.cxx:6466
 TMinuit.cxx:6467
 TMinuit.cxx:6468
 TMinuit.cxx:6469
 TMinuit.cxx:6470
 TMinuit.cxx:6471
 TMinuit.cxx:6472
 TMinuit.cxx:6473
 TMinuit.cxx:6474
 TMinuit.cxx:6475
 TMinuit.cxx:6476
 TMinuit.cxx:6477
 TMinuit.cxx:6478
 TMinuit.cxx:6479
 TMinuit.cxx:6480
 TMinuit.cxx:6481
 TMinuit.cxx:6482
 TMinuit.cxx:6483
 TMinuit.cxx:6484
 TMinuit.cxx:6485
 TMinuit.cxx:6486
 TMinuit.cxx:6487
 TMinuit.cxx:6488
 TMinuit.cxx:6489
 TMinuit.cxx:6490
 TMinuit.cxx:6491
 TMinuit.cxx:6492
 TMinuit.cxx:6493
 TMinuit.cxx:6494
 TMinuit.cxx:6495
 TMinuit.cxx:6496
 TMinuit.cxx:6497
 TMinuit.cxx:6498
 TMinuit.cxx:6499
 TMinuit.cxx:6500
 TMinuit.cxx:6501
 TMinuit.cxx:6502
 TMinuit.cxx:6503
 TMinuit.cxx:6504
 TMinuit.cxx:6505
 TMinuit.cxx:6506
 TMinuit.cxx:6507
 TMinuit.cxx:6508
 TMinuit.cxx:6509
 TMinuit.cxx:6510
 TMinuit.cxx:6511
 TMinuit.cxx:6512
 TMinuit.cxx:6513
 TMinuit.cxx:6514
 TMinuit.cxx:6515
 TMinuit.cxx:6516
 TMinuit.cxx:6517
 TMinuit.cxx:6518
 TMinuit.cxx:6519
 TMinuit.cxx:6520
 TMinuit.cxx:6521
 TMinuit.cxx:6522
 TMinuit.cxx:6523
 TMinuit.cxx:6524
 TMinuit.cxx:6525
 TMinuit.cxx:6526
 TMinuit.cxx:6527
 TMinuit.cxx:6528
 TMinuit.cxx:6529
 TMinuit.cxx:6530
 TMinuit.cxx:6531
 TMinuit.cxx:6532
 TMinuit.cxx:6533
 TMinuit.cxx:6534
 TMinuit.cxx:6535
 TMinuit.cxx:6536
 TMinuit.cxx:6537
 TMinuit.cxx:6538
 TMinuit.cxx:6539
 TMinuit.cxx:6540
 TMinuit.cxx:6541
 TMinuit.cxx:6542
 TMinuit.cxx:6543
 TMinuit.cxx:6544
 TMinuit.cxx:6545
 TMinuit.cxx:6546
 TMinuit.cxx:6547
 TMinuit.cxx:6548
 TMinuit.cxx:6549
 TMinuit.cxx:6550
 TMinuit.cxx:6551
 TMinuit.cxx:6552
 TMinuit.cxx:6553
 TMinuit.cxx:6554
 TMinuit.cxx:6555
 TMinuit.cxx:6556
 TMinuit.cxx:6557
 TMinuit.cxx:6558
 TMinuit.cxx:6559
 TMinuit.cxx:6560
 TMinuit.cxx:6561
 TMinuit.cxx:6562
 TMinuit.cxx:6563
 TMinuit.cxx:6564
 TMinuit.cxx:6565
 TMinuit.cxx:6566
 TMinuit.cxx:6567
 TMinuit.cxx:6568
 TMinuit.cxx:6569
 TMinuit.cxx:6570
 TMinuit.cxx:6571
 TMinuit.cxx:6572
 TMinuit.cxx:6573
 TMinuit.cxx:6574
 TMinuit.cxx:6575
 TMinuit.cxx:6576
 TMinuit.cxx:6577
 TMinuit.cxx:6578
 TMinuit.cxx:6579
 TMinuit.cxx:6580
 TMinuit.cxx:6581
 TMinuit.cxx:6582
 TMinuit.cxx:6583
 TMinuit.cxx:6584
 TMinuit.cxx:6585
 TMinuit.cxx:6586
 TMinuit.cxx:6587
 TMinuit.cxx:6588
 TMinuit.cxx:6589
 TMinuit.cxx:6590
 TMinuit.cxx:6591
 TMinuit.cxx:6592
 TMinuit.cxx:6593
 TMinuit.cxx:6594
 TMinuit.cxx:6595
 TMinuit.cxx:6596
 TMinuit.cxx:6597
 TMinuit.cxx:6598
 TMinuit.cxx:6599
 TMinuit.cxx:6600
 TMinuit.cxx:6601
 TMinuit.cxx:6602
 TMinuit.cxx:6603
 TMinuit.cxx:6604
 TMinuit.cxx:6605
 TMinuit.cxx:6606
 TMinuit.cxx:6607
 TMinuit.cxx:6608
 TMinuit.cxx:6609
 TMinuit.cxx:6610
 TMinuit.cxx:6611
 TMinuit.cxx:6612
 TMinuit.cxx:6613
 TMinuit.cxx:6614
 TMinuit.cxx:6615
 TMinuit.cxx:6616
 TMinuit.cxx:6617
 TMinuit.cxx:6618
 TMinuit.cxx:6619
 TMinuit.cxx:6620
 TMinuit.cxx:6621
 TMinuit.cxx:6622
 TMinuit.cxx:6623
 TMinuit.cxx:6624
 TMinuit.cxx:6625
 TMinuit.cxx:6626
 TMinuit.cxx:6627
 TMinuit.cxx:6628
 TMinuit.cxx:6629
 TMinuit.cxx:6630
 TMinuit.cxx:6631
 TMinuit.cxx:6632
 TMinuit.cxx:6633
 TMinuit.cxx:6634
 TMinuit.cxx:6635
 TMinuit.cxx:6636
 TMinuit.cxx:6637
 TMinuit.cxx:6638
 TMinuit.cxx:6639
 TMinuit.cxx:6640
 TMinuit.cxx:6641
 TMinuit.cxx:6642
 TMinuit.cxx:6643
 TMinuit.cxx:6644
 TMinuit.cxx:6645
 TMinuit.cxx:6646
 TMinuit.cxx:6647
 TMinuit.cxx:6648
 TMinuit.cxx:6649
 TMinuit.cxx:6650
 TMinuit.cxx:6651
 TMinuit.cxx:6652
 TMinuit.cxx:6653
 TMinuit.cxx:6654
 TMinuit.cxx:6655
 TMinuit.cxx:6656
 TMinuit.cxx:6657
 TMinuit.cxx:6658
 TMinuit.cxx:6659
 TMinuit.cxx:6660
 TMinuit.cxx:6661
 TMinuit.cxx:6662
 TMinuit.cxx:6663
 TMinuit.cxx:6664
 TMinuit.cxx:6665
 TMinuit.cxx:6666
 TMinuit.cxx:6667
 TMinuit.cxx:6668
 TMinuit.cxx:6669
 TMinuit.cxx:6670
 TMinuit.cxx:6671
 TMinuit.cxx:6672
 TMinuit.cxx:6673
 TMinuit.cxx:6674
 TMinuit.cxx:6675
 TMinuit.cxx:6676
 TMinuit.cxx:6677
 TMinuit.cxx:6678
 TMinuit.cxx:6679
 TMinuit.cxx:6680
 TMinuit.cxx:6681
 TMinuit.cxx:6682
 TMinuit.cxx:6683
 TMinuit.cxx:6684
 TMinuit.cxx:6685
 TMinuit.cxx:6686
 TMinuit.cxx:6687
 TMinuit.cxx:6688
 TMinuit.cxx:6689
 TMinuit.cxx:6690
 TMinuit.cxx:6691
 TMinuit.cxx:6692
 TMinuit.cxx:6693
 TMinuit.cxx:6694
 TMinuit.cxx:6695
 TMinuit.cxx:6696
 TMinuit.cxx:6697
 TMinuit.cxx:6698
 TMinuit.cxx:6699
 TMinuit.cxx:6700
 TMinuit.cxx:6701
 TMinuit.cxx:6702
 TMinuit.cxx:6703
 TMinuit.cxx:6704
 TMinuit.cxx:6705
 TMinuit.cxx:6706
 TMinuit.cxx:6707
 TMinuit.cxx:6708
 TMinuit.cxx:6709
 TMinuit.cxx:6710
 TMinuit.cxx:6711
 TMinuit.cxx:6712
 TMinuit.cxx:6713
 TMinuit.cxx:6714
 TMinuit.cxx:6715
 TMinuit.cxx:6716
 TMinuit.cxx:6717
 TMinuit.cxx:6718
 TMinuit.cxx:6719
 TMinuit.cxx:6720
 TMinuit.cxx:6721
 TMinuit.cxx:6722
 TMinuit.cxx:6723
 TMinuit.cxx:6724
 TMinuit.cxx:6725
 TMinuit.cxx:6726
 TMinuit.cxx:6727
 TMinuit.cxx:6728
 TMinuit.cxx:6729
 TMinuit.cxx:6730
 TMinuit.cxx:6731
 TMinuit.cxx:6732
 TMinuit.cxx:6733
 TMinuit.cxx:6734
 TMinuit.cxx:6735
 TMinuit.cxx:6736
 TMinuit.cxx:6737
 TMinuit.cxx:6738
 TMinuit.cxx:6739
 TMinuit.cxx:6740
 TMinuit.cxx:6741
 TMinuit.cxx:6742
 TMinuit.cxx:6743
 TMinuit.cxx:6744
 TMinuit.cxx:6745
 TMinuit.cxx:6746
 TMinuit.cxx:6747
 TMinuit.cxx:6748
 TMinuit.cxx:6749
 TMinuit.cxx:6750
 TMinuit.cxx:6751
 TMinuit.cxx:6752
 TMinuit.cxx:6753
 TMinuit.cxx:6754
 TMinuit.cxx:6755
 TMinuit.cxx:6756
 TMinuit.cxx:6757
 TMinuit.cxx:6758
 TMinuit.cxx:6759
 TMinuit.cxx:6760
 TMinuit.cxx:6761
 TMinuit.cxx:6762
 TMinuit.cxx:6763
 TMinuit.cxx:6764
 TMinuit.cxx:6765
 TMinuit.cxx:6766
 TMinuit.cxx:6767
 TMinuit.cxx:6768
 TMinuit.cxx:6769
 TMinuit.cxx:6770
 TMinuit.cxx:6771
 TMinuit.cxx:6772
 TMinuit.cxx:6773
 TMinuit.cxx:6774
 TMinuit.cxx:6775
 TMinuit.cxx:6776
 TMinuit.cxx:6777
 TMinuit.cxx:6778
 TMinuit.cxx:6779
 TMinuit.cxx:6780
 TMinuit.cxx:6781
 TMinuit.cxx:6782
 TMinuit.cxx:6783
 TMinuit.cxx:6784
 TMinuit.cxx:6785
 TMinuit.cxx:6786
 TMinuit.cxx:6787
 TMinuit.cxx:6788
 TMinuit.cxx:6789
 TMinuit.cxx:6790
 TMinuit.cxx:6791
 TMinuit.cxx:6792
 TMinuit.cxx:6793
 TMinuit.cxx:6794
 TMinuit.cxx:6795
 TMinuit.cxx:6796
 TMinuit.cxx:6797
 TMinuit.cxx:6798
 TMinuit.cxx:6799
 TMinuit.cxx:6800
 TMinuit.cxx:6801
 TMinuit.cxx:6802
 TMinuit.cxx:6803
 TMinuit.cxx:6804
 TMinuit.cxx:6805
 TMinuit.cxx:6806
 TMinuit.cxx:6807
 TMinuit.cxx:6808
 TMinuit.cxx:6809
 TMinuit.cxx:6810
 TMinuit.cxx:6811
 TMinuit.cxx:6812
 TMinuit.cxx:6813
 TMinuit.cxx:6814
 TMinuit.cxx:6815
 TMinuit.cxx:6816
 TMinuit.cxx:6817
 TMinuit.cxx:6818
 TMinuit.cxx:6819
 TMinuit.cxx:6820
 TMinuit.cxx:6821
 TMinuit.cxx:6822
 TMinuit.cxx:6823
 TMinuit.cxx:6824
 TMinuit.cxx:6825
 TMinuit.cxx:6826
 TMinuit.cxx:6827
 TMinuit.cxx:6828
 TMinuit.cxx:6829
 TMinuit.cxx:6830
 TMinuit.cxx:6831
 TMinuit.cxx:6832
 TMinuit.cxx:6833
 TMinuit.cxx:6834
 TMinuit.cxx:6835
 TMinuit.cxx:6836
 TMinuit.cxx:6837
 TMinuit.cxx:6838
 TMinuit.cxx:6839
 TMinuit.cxx:6840
 TMinuit.cxx:6841
 TMinuit.cxx:6842
 TMinuit.cxx:6843
 TMinuit.cxx:6844
 TMinuit.cxx:6845
 TMinuit.cxx:6846
 TMinuit.cxx:6847
 TMinuit.cxx:6848
 TMinuit.cxx:6849
 TMinuit.cxx:6850
 TMinuit.cxx:6851
 TMinuit.cxx:6852
 TMinuit.cxx:6853
 TMinuit.cxx:6854
 TMinuit.cxx:6855
 TMinuit.cxx:6856
 TMinuit.cxx:6857
 TMinuit.cxx:6858
 TMinuit.cxx:6859
 TMinuit.cxx:6860
 TMinuit.cxx:6861
 TMinuit.cxx:6862
 TMinuit.cxx:6863
 TMinuit.cxx:6864
 TMinuit.cxx:6865
 TMinuit.cxx:6866
 TMinuit.cxx:6867
 TMinuit.cxx:6868
 TMinuit.cxx:6869
 TMinuit.cxx:6870
 TMinuit.cxx:6871
 TMinuit.cxx:6872
 TMinuit.cxx:6873
 TMinuit.cxx:6874
 TMinuit.cxx:6875
 TMinuit.cxx:6876
 TMinuit.cxx:6877
 TMinuit.cxx:6878
 TMinuit.cxx:6879
 TMinuit.cxx:6880
 TMinuit.cxx:6881
 TMinuit.cxx:6882
 TMinuit.cxx:6883
 TMinuit.cxx:6884
 TMinuit.cxx:6885
 TMinuit.cxx:6886
 TMinuit.cxx:6887
 TMinuit.cxx:6888
 TMinuit.cxx:6889
 TMinuit.cxx:6890
 TMinuit.cxx:6891
 TMinuit.cxx:6892
 TMinuit.cxx:6893
 TMinuit.cxx:6894
 TMinuit.cxx:6895
 TMinuit.cxx:6896
 TMinuit.cxx:6897
 TMinuit.cxx:6898
 TMinuit.cxx:6899
 TMinuit.cxx:6900
 TMinuit.cxx:6901
 TMinuit.cxx:6902
 TMinuit.cxx:6903
 TMinuit.cxx:6904
 TMinuit.cxx:6905
 TMinuit.cxx:6906
 TMinuit.cxx:6907
 TMinuit.cxx:6908
 TMinuit.cxx:6909
 TMinuit.cxx:6910
 TMinuit.cxx:6911
 TMinuit.cxx:6912
 TMinuit.cxx:6913
 TMinuit.cxx:6914
 TMinuit.cxx:6915
 TMinuit.cxx:6916
 TMinuit.cxx:6917
 TMinuit.cxx:6918
 TMinuit.cxx:6919
 TMinuit.cxx:6920
 TMinuit.cxx:6921
 TMinuit.cxx:6922
 TMinuit.cxx:6923
 TMinuit.cxx:6924
 TMinuit.cxx:6925
 TMinuit.cxx:6926
 TMinuit.cxx:6927
 TMinuit.cxx:6928
 TMinuit.cxx:6929
 TMinuit.cxx:6930
 TMinuit.cxx:6931
 TMinuit.cxx:6932
 TMinuit.cxx:6933
 TMinuit.cxx:6934
 TMinuit.cxx:6935
 TMinuit.cxx:6936
 TMinuit.cxx:6937
 TMinuit.cxx:6938
 TMinuit.cxx:6939
 TMinuit.cxx:6940
 TMinuit.cxx:6941
 TMinuit.cxx:6942
 TMinuit.cxx:6943
 TMinuit.cxx:6944
 TMinuit.cxx:6945
 TMinuit.cxx:6946
 TMinuit.cxx:6947
 TMinuit.cxx:6948
 TMinuit.cxx:6949
 TMinuit.cxx:6950
 TMinuit.cxx:6951
 TMinuit.cxx:6952
 TMinuit.cxx:6953
 TMinuit.cxx:6954
 TMinuit.cxx:6955
 TMinuit.cxx:6956
 TMinuit.cxx:6957
 TMinuit.cxx:6958
 TMinuit.cxx:6959
 TMinuit.cxx:6960
 TMinuit.cxx:6961
 TMinuit.cxx:6962
 TMinuit.cxx:6963
 TMinuit.cxx:6964
 TMinuit.cxx:6965
 TMinuit.cxx:6966
 TMinuit.cxx:6967
 TMinuit.cxx:6968
 TMinuit.cxx:6969
 TMinuit.cxx:6970
 TMinuit.cxx:6971
 TMinuit.cxx:6972
 TMinuit.cxx:6973
 TMinuit.cxx:6974
 TMinuit.cxx:6975
 TMinuit.cxx:6976
 TMinuit.cxx:6977
 TMinuit.cxx:6978
 TMinuit.cxx:6979
 TMinuit.cxx:6980
 TMinuit.cxx:6981
 TMinuit.cxx:6982
 TMinuit.cxx:6983
 TMinuit.cxx:6984
 TMinuit.cxx:6985
 TMinuit.cxx:6986
 TMinuit.cxx:6987
 TMinuit.cxx:6988
 TMinuit.cxx:6989
 TMinuit.cxx:6990
 TMinuit.cxx:6991
 TMinuit.cxx:6992
 TMinuit.cxx:6993
 TMinuit.cxx:6994
 TMinuit.cxx:6995
 TMinuit.cxx:6996
 TMinuit.cxx:6997
 TMinuit.cxx:6998
 TMinuit.cxx:6999
 TMinuit.cxx:7000
 TMinuit.cxx:7001
 TMinuit.cxx:7002
 TMinuit.cxx:7003
 TMinuit.cxx:7004
 TMinuit.cxx:7005
 TMinuit.cxx:7006
 TMinuit.cxx:7007
 TMinuit.cxx:7008
 TMinuit.cxx:7009
 TMinuit.cxx:7010
 TMinuit.cxx:7011
 TMinuit.cxx:7012
 TMinuit.cxx:7013
 TMinuit.cxx:7014
 TMinuit.cxx:7015
 TMinuit.cxx:7016
 TMinuit.cxx:7017
 TMinuit.cxx:7018
 TMinuit.cxx:7019
 TMinuit.cxx:7020
 TMinuit.cxx:7021
 TMinuit.cxx:7022
 TMinuit.cxx:7023
 TMinuit.cxx:7024
 TMinuit.cxx:7025
 TMinuit.cxx:7026
 TMinuit.cxx:7027
 TMinuit.cxx:7028
 TMinuit.cxx:7029
 TMinuit.cxx:7030
 TMinuit.cxx:7031
 TMinuit.cxx:7032
 TMinuit.cxx:7033
 TMinuit.cxx:7034
 TMinuit.cxx:7035
 TMinuit.cxx:7036
 TMinuit.cxx:7037
 TMinuit.cxx:7038
 TMinuit.cxx:7039
 TMinuit.cxx:7040
 TMinuit.cxx:7041
 TMinuit.cxx:7042
 TMinuit.cxx:7043
 TMinuit.cxx:7044
 TMinuit.cxx:7045
 TMinuit.cxx:7046
 TMinuit.cxx:7047
 TMinuit.cxx:7048
 TMinuit.cxx:7049
 TMinuit.cxx:7050
 TMinuit.cxx:7051
 TMinuit.cxx:7052
 TMinuit.cxx:7053
 TMinuit.cxx:7054
 TMinuit.cxx:7055
 TMinuit.cxx:7056
 TMinuit.cxx:7057
 TMinuit.cxx:7058
 TMinuit.cxx:7059
 TMinuit.cxx:7060
 TMinuit.cxx:7061
 TMinuit.cxx:7062
 TMinuit.cxx:7063
 TMinuit.cxx:7064
 TMinuit.cxx:7065
 TMinuit.cxx:7066
 TMinuit.cxx:7067
 TMinuit.cxx:7068
 TMinuit.cxx:7069
 TMinuit.cxx:7070
 TMinuit.cxx:7071
 TMinuit.cxx:7072
 TMinuit.cxx:7073
 TMinuit.cxx:7074
 TMinuit.cxx:7075
 TMinuit.cxx:7076
 TMinuit.cxx:7077
 TMinuit.cxx:7078
 TMinuit.cxx:7079
 TMinuit.cxx:7080
 TMinuit.cxx:7081
 TMinuit.cxx:7082
 TMinuit.cxx:7083
 TMinuit.cxx:7084
 TMinuit.cxx:7085
 TMinuit.cxx:7086
 TMinuit.cxx:7087
 TMinuit.cxx:7088
 TMinuit.cxx:7089
 TMinuit.cxx:7090
 TMinuit.cxx:7091
 TMinuit.cxx:7092
 TMinuit.cxx:7093
 TMinuit.cxx:7094
 TMinuit.cxx:7095
 TMinuit.cxx:7096
 TMinuit.cxx:7097
 TMinuit.cxx:7098
 TMinuit.cxx:7099
 TMinuit.cxx:7100
 TMinuit.cxx:7101
 TMinuit.cxx:7102
 TMinuit.cxx:7103
 TMinuit.cxx:7104
 TMinuit.cxx:7105
 TMinuit.cxx:7106
 TMinuit.cxx:7107
 TMinuit.cxx:7108
 TMinuit.cxx:7109
 TMinuit.cxx:7110
 TMinuit.cxx:7111
 TMinuit.cxx:7112
 TMinuit.cxx:7113
 TMinuit.cxx:7114
 TMinuit.cxx:7115
 TMinuit.cxx:7116
 TMinuit.cxx:7117
 TMinuit.cxx:7118
 TMinuit.cxx:7119
 TMinuit.cxx:7120
 TMinuit.cxx:7121
 TMinuit.cxx:7122
 TMinuit.cxx:7123
 TMinuit.cxx:7124
 TMinuit.cxx:7125
 TMinuit.cxx:7126
 TMinuit.cxx:7127
 TMinuit.cxx:7128
 TMinuit.cxx:7129
 TMinuit.cxx:7130
 TMinuit.cxx:7131
 TMinuit.cxx:7132
 TMinuit.cxx:7133
 TMinuit.cxx:7134
 TMinuit.cxx:7135
 TMinuit.cxx:7136
 TMinuit.cxx:7137
 TMinuit.cxx:7138
 TMinuit.cxx:7139
 TMinuit.cxx:7140
 TMinuit.cxx:7141
 TMinuit.cxx:7142
 TMinuit.cxx:7143
 TMinuit.cxx:7144
 TMinuit.cxx:7145
 TMinuit.cxx:7146
 TMinuit.cxx:7147
 TMinuit.cxx:7148
 TMinuit.cxx:7149
 TMinuit.cxx:7150
 TMinuit.cxx:7151
 TMinuit.cxx:7152
 TMinuit.cxx:7153
 TMinuit.cxx:7154
 TMinuit.cxx:7155
 TMinuit.cxx:7156
 TMinuit.cxx:7157
 TMinuit.cxx:7158
 TMinuit.cxx:7159
 TMinuit.cxx:7160
 TMinuit.cxx:7161
 TMinuit.cxx:7162
 TMinuit.cxx:7163
 TMinuit.cxx:7164
 TMinuit.cxx:7165
 TMinuit.cxx:7166
 TMinuit.cxx:7167
 TMinuit.cxx:7168
 TMinuit.cxx:7169
 TMinuit.cxx:7170
 TMinuit.cxx:7171
 TMinuit.cxx:7172
 TMinuit.cxx:7173
 TMinuit.cxx:7174
 TMinuit.cxx:7175
 TMinuit.cxx:7176
 TMinuit.cxx:7177
 TMinuit.cxx:7178
 TMinuit.cxx:7179
 TMinuit.cxx:7180
 TMinuit.cxx:7181
 TMinuit.cxx:7182
 TMinuit.cxx:7183
 TMinuit.cxx:7184
 TMinuit.cxx:7185
 TMinuit.cxx:7186
 TMinuit.cxx:7187
 TMinuit.cxx:7188
 TMinuit.cxx:7189
 TMinuit.cxx:7190
 TMinuit.cxx:7191
 TMinuit.cxx:7192
 TMinuit.cxx:7193
 TMinuit.cxx:7194
 TMinuit.cxx:7195
 TMinuit.cxx:7196
 TMinuit.cxx:7197
 TMinuit.cxx:7198
 TMinuit.cxx:7199
 TMinuit.cxx:7200
 TMinuit.cxx:7201
 TMinuit.cxx:7202
 TMinuit.cxx:7203
 TMinuit.cxx:7204
 TMinuit.cxx:7205
 TMinuit.cxx:7206
 TMinuit.cxx:7207
 TMinuit.cxx:7208
 TMinuit.cxx:7209
 TMinuit.cxx:7210
 TMinuit.cxx:7211
 TMinuit.cxx:7212
 TMinuit.cxx:7213
 TMinuit.cxx:7214
 TMinuit.cxx:7215
 TMinuit.cxx:7216
 TMinuit.cxx:7217
 TMinuit.cxx:7218
 TMinuit.cxx:7219
 TMinuit.cxx:7220
 TMinuit.cxx:7221
 TMinuit.cxx:7222
 TMinuit.cxx:7223
 TMinuit.cxx:7224
 TMinuit.cxx:7225
 TMinuit.cxx:7226
 TMinuit.cxx:7227
 TMinuit.cxx:7228
 TMinuit.cxx:7229
 TMinuit.cxx:7230
 TMinuit.cxx:7231
 TMinuit.cxx:7232
 TMinuit.cxx:7233
 TMinuit.cxx:7234
 TMinuit.cxx:7235
 TMinuit.cxx:7236
 TMinuit.cxx:7237
 TMinuit.cxx:7238
 TMinuit.cxx:7239
 TMinuit.cxx:7240
 TMinuit.cxx:7241
 TMinuit.cxx:7242
 TMinuit.cxx:7243
 TMinuit.cxx:7244
 TMinuit.cxx:7245
 TMinuit.cxx:7246
 TMinuit.cxx:7247
 TMinuit.cxx:7248
 TMinuit.cxx:7249
 TMinuit.cxx:7250
 TMinuit.cxx:7251
 TMinuit.cxx:7252
 TMinuit.cxx:7253
 TMinuit.cxx:7254
 TMinuit.cxx:7255
 TMinuit.cxx:7256
 TMinuit.cxx:7257
 TMinuit.cxx:7258
 TMinuit.cxx:7259
 TMinuit.cxx:7260
 TMinuit.cxx:7261
 TMinuit.cxx:7262
 TMinuit.cxx:7263
 TMinuit.cxx:7264
 TMinuit.cxx:7265
 TMinuit.cxx:7266
 TMinuit.cxx:7267
 TMinuit.cxx:7268
 TMinuit.cxx:7269
 TMinuit.cxx:7270
 TMinuit.cxx:7271
 TMinuit.cxx:7272
 TMinuit.cxx:7273
 TMinuit.cxx:7274
 TMinuit.cxx:7275
 TMinuit.cxx:7276
 TMinuit.cxx:7277
 TMinuit.cxx:7278
 TMinuit.cxx:7279
 TMinuit.cxx:7280
 TMinuit.cxx:7281
 TMinuit.cxx:7282
 TMinuit.cxx:7283
 TMinuit.cxx:7284
 TMinuit.cxx:7285
 TMinuit.cxx:7286
 TMinuit.cxx:7287
 TMinuit.cxx:7288
 TMinuit.cxx:7289
 TMinuit.cxx:7290
 TMinuit.cxx:7291
 TMinuit.cxx:7292
 TMinuit.cxx:7293
 TMinuit.cxx:7294
 TMinuit.cxx:7295
 TMinuit.cxx:7296
 TMinuit.cxx:7297
 TMinuit.cxx:7298
 TMinuit.cxx:7299
 TMinuit.cxx:7300
 TMinuit.cxx:7301
 TMinuit.cxx:7302
 TMinuit.cxx:7303
 TMinuit.cxx:7304
 TMinuit.cxx:7305
 TMinuit.cxx:7306
 TMinuit.cxx:7307
 TMinuit.cxx:7308
 TMinuit.cxx:7309
 TMinuit.cxx:7310
 TMinuit.cxx:7311
 TMinuit.cxx:7312
 TMinuit.cxx:7313
 TMinuit.cxx:7314
 TMinuit.cxx:7315
 TMinuit.cxx:7316
 TMinuit.cxx:7317
 TMinuit.cxx:7318
 TMinuit.cxx:7319
 TMinuit.cxx:7320
 TMinuit.cxx:7321
 TMinuit.cxx:7322
 TMinuit.cxx:7323
 TMinuit.cxx:7324
 TMinuit.cxx:7325
 TMinuit.cxx:7326
 TMinuit.cxx:7327
 TMinuit.cxx:7328
 TMinuit.cxx:7329
 TMinuit.cxx:7330
 TMinuit.cxx:7331
 TMinuit.cxx:7332
 TMinuit.cxx:7333
 TMinuit.cxx:7334
 TMinuit.cxx:7335
 TMinuit.cxx:7336
 TMinuit.cxx:7337
 TMinuit.cxx:7338
 TMinuit.cxx:7339
 TMinuit.cxx:7340
 TMinuit.cxx:7341
 TMinuit.cxx:7342
 TMinuit.cxx:7343
 TMinuit.cxx:7344
 TMinuit.cxx:7345
 TMinuit.cxx:7346
 TMinuit.cxx:7347
 TMinuit.cxx:7348
 TMinuit.cxx:7349
 TMinuit.cxx:7350
 TMinuit.cxx:7351
 TMinuit.cxx:7352
 TMinuit.cxx:7353
 TMinuit.cxx:7354
 TMinuit.cxx:7355
 TMinuit.cxx:7356
 TMinuit.cxx:7357
 TMinuit.cxx:7358
 TMinuit.cxx:7359
 TMinuit.cxx:7360
 TMinuit.cxx:7361
 TMinuit.cxx:7362
 TMinuit.cxx:7363
 TMinuit.cxx:7364
 TMinuit.cxx:7365
 TMinuit.cxx:7366
 TMinuit.cxx:7367
 TMinuit.cxx:7368
 TMinuit.cxx:7369
 TMinuit.cxx:7370
 TMinuit.cxx:7371
 TMinuit.cxx:7372
 TMinuit.cxx:7373
 TMinuit.cxx:7374
 TMinuit.cxx:7375
 TMinuit.cxx:7376
 TMinuit.cxx:7377
 TMinuit.cxx:7378
 TMinuit.cxx:7379
 TMinuit.cxx:7380
 TMinuit.cxx:7381
 TMinuit.cxx:7382
 TMinuit.cxx:7383
 TMinuit.cxx:7384
 TMinuit.cxx:7385
 TMinuit.cxx:7386
 TMinuit.cxx:7387
 TMinuit.cxx:7388
 TMinuit.cxx:7389
 TMinuit.cxx:7390
 TMinuit.cxx:7391
 TMinuit.cxx:7392
 TMinuit.cxx:7393
 TMinuit.cxx:7394
 TMinuit.cxx:7395
 TMinuit.cxx:7396
 TMinuit.cxx:7397
 TMinuit.cxx:7398
 TMinuit.cxx:7399
 TMinuit.cxx:7400
 TMinuit.cxx:7401
 TMinuit.cxx:7402
 TMinuit.cxx:7403
 TMinuit.cxx:7404
 TMinuit.cxx:7405
 TMinuit.cxx:7406
 TMinuit.cxx:7407
 TMinuit.cxx:7408
 TMinuit.cxx:7409
 TMinuit.cxx:7410
 TMinuit.cxx:7411
 TMinuit.cxx:7412
 TMinuit.cxx:7413
 TMinuit.cxx:7414
 TMinuit.cxx:7415
 TMinuit.cxx:7416
 TMinuit.cxx:7417
 TMinuit.cxx:7418
 TMinuit.cxx:7419
 TMinuit.cxx:7420
 TMinuit.cxx:7421
 TMinuit.cxx:7422
 TMinuit.cxx:7423
 TMinuit.cxx:7424
 TMinuit.cxx:7425
 TMinuit.cxx:7426
 TMinuit.cxx:7427
 TMinuit.cxx:7428
 TMinuit.cxx:7429
 TMinuit.cxx:7430
 TMinuit.cxx:7431
 TMinuit.cxx:7432
 TMinuit.cxx:7433
 TMinuit.cxx:7434
 TMinuit.cxx:7435
 TMinuit.cxx:7436
 TMinuit.cxx:7437
 TMinuit.cxx:7438
 TMinuit.cxx:7439
 TMinuit.cxx:7440
 TMinuit.cxx:7441
 TMinuit.cxx:7442
 TMinuit.cxx:7443
 TMinuit.cxx:7444
 TMinuit.cxx:7445
 TMinuit.cxx:7446
 TMinuit.cxx:7447
 TMinuit.cxx:7448
 TMinuit.cxx:7449
 TMinuit.cxx:7450
 TMinuit.cxx:7451
 TMinuit.cxx:7452
 TMinuit.cxx:7453
 TMinuit.cxx:7454
 TMinuit.cxx:7455
 TMinuit.cxx:7456
 TMinuit.cxx:7457
 TMinuit.cxx:7458
 TMinuit.cxx:7459
 TMinuit.cxx:7460
 TMinuit.cxx:7461
 TMinuit.cxx:7462
 TMinuit.cxx:7463
 TMinuit.cxx:7464
 TMinuit.cxx:7465
 TMinuit.cxx:7466
 TMinuit.cxx:7467
 TMinuit.cxx:7468
 TMinuit.cxx:7469
 TMinuit.cxx:7470
 TMinuit.cxx:7471
 TMinuit.cxx:7472
 TMinuit.cxx:7473
 TMinuit.cxx:7474
 TMinuit.cxx:7475
 TMinuit.cxx:7476
 TMinuit.cxx:7477
 TMinuit.cxx:7478
 TMinuit.cxx:7479
 TMinuit.cxx:7480
 TMinuit.cxx:7481
 TMinuit.cxx:7482
 TMinuit.cxx:7483
 TMinuit.cxx:7484
 TMinuit.cxx:7485
 TMinuit.cxx:7486
 TMinuit.cxx:7487
 TMinuit.cxx:7488
 TMinuit.cxx:7489
 TMinuit.cxx:7490
 TMinuit.cxx:7491
 TMinuit.cxx:7492
 TMinuit.cxx:7493
 TMinuit.cxx:7494
 TMinuit.cxx:7495
 TMinuit.cxx:7496
 TMinuit.cxx:7497
 TMinuit.cxx:7498
 TMinuit.cxx:7499
 TMinuit.cxx:7500
 TMinuit.cxx:7501
 TMinuit.cxx:7502
 TMinuit.cxx:7503
 TMinuit.cxx:7504
 TMinuit.cxx:7505
 TMinuit.cxx:7506
 TMinuit.cxx:7507
 TMinuit.cxx:7508
 TMinuit.cxx:7509
 TMinuit.cxx:7510
 TMinuit.cxx:7511
 TMinuit.cxx:7512
 TMinuit.cxx:7513
 TMinuit.cxx:7514
 TMinuit.cxx:7515
 TMinuit.cxx:7516
 TMinuit.cxx:7517
 TMinuit.cxx:7518
 TMinuit.cxx:7519
 TMinuit.cxx:7520
 TMinuit.cxx:7521
 TMinuit.cxx:7522
 TMinuit.cxx:7523
 TMinuit.cxx:7524
 TMinuit.cxx:7525
 TMinuit.cxx:7526
 TMinuit.cxx:7527
 TMinuit.cxx:7528
 TMinuit.cxx:7529
 TMinuit.cxx:7530
 TMinuit.cxx:7531
 TMinuit.cxx:7532
 TMinuit.cxx:7533
 TMinuit.cxx:7534
 TMinuit.cxx:7535
 TMinuit.cxx:7536
 TMinuit.cxx:7537
 TMinuit.cxx:7538
 TMinuit.cxx:7539
 TMinuit.cxx:7540
 TMinuit.cxx:7541
 TMinuit.cxx:7542
 TMinuit.cxx:7543
 TMinuit.cxx:7544
 TMinuit.cxx:7545
 TMinuit.cxx:7546
 TMinuit.cxx:7547
 TMinuit.cxx:7548
 TMinuit.cxx:7549
 TMinuit.cxx:7550
 TMinuit.cxx:7551
 TMinuit.cxx:7552
 TMinuit.cxx:7553
 TMinuit.cxx:7554
 TMinuit.cxx:7555
 TMinuit.cxx:7556
 TMinuit.cxx:7557
 TMinuit.cxx:7558
 TMinuit.cxx:7559
 TMinuit.cxx:7560
 TMinuit.cxx:7561
 TMinuit.cxx:7562
 TMinuit.cxx:7563
 TMinuit.cxx:7564
 TMinuit.cxx:7565
 TMinuit.cxx:7566
 TMinuit.cxx:7567
 TMinuit.cxx:7568
 TMinuit.cxx:7569
 TMinuit.cxx:7570
 TMinuit.cxx:7571
 TMinuit.cxx:7572
 TMinuit.cxx:7573
 TMinuit.cxx:7574
 TMinuit.cxx:7575
 TMinuit.cxx:7576
 TMinuit.cxx:7577
 TMinuit.cxx:7578
 TMinuit.cxx:7579
 TMinuit.cxx:7580
 TMinuit.cxx:7581
 TMinuit.cxx:7582
 TMinuit.cxx:7583
 TMinuit.cxx:7584
 TMinuit.cxx:7585
 TMinuit.cxx:7586
 TMinuit.cxx:7587
 TMinuit.cxx:7588
 TMinuit.cxx:7589
 TMinuit.cxx:7590
 TMinuit.cxx:7591
 TMinuit.cxx:7592
 TMinuit.cxx:7593
 TMinuit.cxx:7594
 TMinuit.cxx:7595
 TMinuit.cxx:7596
 TMinuit.cxx:7597
 TMinuit.cxx:7598
 TMinuit.cxx:7599
 TMinuit.cxx:7600
 TMinuit.cxx:7601
 TMinuit.cxx:7602
 TMinuit.cxx:7603
 TMinuit.cxx:7604
 TMinuit.cxx:7605
 TMinuit.cxx:7606
 TMinuit.cxx:7607
 TMinuit.cxx:7608
 TMinuit.cxx:7609
 TMinuit.cxx:7610
 TMinuit.cxx:7611
 TMinuit.cxx:7612
 TMinuit.cxx:7613
 TMinuit.cxx:7614
 TMinuit.cxx:7615
 TMinuit.cxx:7616
 TMinuit.cxx:7617
 TMinuit.cxx:7618
 TMinuit.cxx:7619
 TMinuit.cxx:7620
 TMinuit.cxx:7621
 TMinuit.cxx:7622
 TMinuit.cxx:7623
 TMinuit.cxx:7624
 TMinuit.cxx:7625
 TMinuit.cxx:7626
 TMinuit.cxx:7627
 TMinuit.cxx:7628
 TMinuit.cxx:7629
 TMinuit.cxx:7630
 TMinuit.cxx:7631
 TMinuit.cxx:7632
 TMinuit.cxx:7633
 TMinuit.cxx:7634
 TMinuit.cxx:7635
 TMinuit.cxx:7636
 TMinuit.cxx:7637
 TMinuit.cxx:7638
 TMinuit.cxx:7639
 TMinuit.cxx:7640
 TMinuit.cxx:7641
 TMinuit.cxx:7642
 TMinuit.cxx:7643
 TMinuit.cxx:7644
 TMinuit.cxx:7645
 TMinuit.cxx:7646
 TMinuit.cxx:7647
 TMinuit.cxx:7648
 TMinuit.cxx:7649
 TMinuit.cxx:7650
 TMinuit.cxx:7651
 TMinuit.cxx:7652
 TMinuit.cxx:7653
 TMinuit.cxx:7654
 TMinuit.cxx:7655
 TMinuit.cxx:7656
 TMinuit.cxx:7657
 TMinuit.cxx:7658
 TMinuit.cxx:7659
 TMinuit.cxx:7660
 TMinuit.cxx:7661
 TMinuit.cxx:7662
 TMinuit.cxx:7663
 TMinuit.cxx:7664
 TMinuit.cxx:7665
 TMinuit.cxx:7666
 TMinuit.cxx:7667
 TMinuit.cxx:7668
 TMinuit.cxx:7669
 TMinuit.cxx:7670
 TMinuit.cxx:7671
 TMinuit.cxx:7672
 TMinuit.cxx:7673
 TMinuit.cxx:7674
 TMinuit.cxx:7675
 TMinuit.cxx:7676
 TMinuit.cxx:7677
 TMinuit.cxx:7678
 TMinuit.cxx:7679
 TMinuit.cxx:7680
 TMinuit.cxx:7681
 TMinuit.cxx:7682
 TMinuit.cxx:7683
 TMinuit.cxx:7684
 TMinuit.cxx:7685
 TMinuit.cxx:7686
 TMinuit.cxx:7687
 TMinuit.cxx:7688
 TMinuit.cxx:7689
 TMinuit.cxx:7690
 TMinuit.cxx:7691
 TMinuit.cxx:7692
 TMinuit.cxx:7693
 TMinuit.cxx:7694
 TMinuit.cxx:7695
 TMinuit.cxx:7696
 TMinuit.cxx:7697
 TMinuit.cxx:7698
 TMinuit.cxx:7699
 TMinuit.cxx:7700
 TMinuit.cxx:7701
 TMinuit.cxx:7702
 TMinuit.cxx:7703
 TMinuit.cxx:7704
 TMinuit.cxx:7705
 TMinuit.cxx:7706
 TMinuit.cxx:7707
 TMinuit.cxx:7708
 TMinuit.cxx:7709
 TMinuit.cxx:7710
 TMinuit.cxx:7711
 TMinuit.cxx:7712
 TMinuit.cxx:7713
 TMinuit.cxx:7714
 TMinuit.cxx:7715
 TMinuit.cxx:7716
 TMinuit.cxx:7717
 TMinuit.cxx:7718
 TMinuit.cxx:7719
 TMinuit.cxx:7720
 TMinuit.cxx:7721
 TMinuit.cxx:7722
 TMinuit.cxx:7723
 TMinuit.cxx:7724
 TMinuit.cxx:7725
 TMinuit.cxx:7726
 TMinuit.cxx:7727
 TMinuit.cxx:7728
 TMinuit.cxx:7729
 TMinuit.cxx:7730
 TMinuit.cxx:7731
 TMinuit.cxx:7732
 TMinuit.cxx:7733
 TMinuit.cxx:7734
 TMinuit.cxx:7735
 TMinuit.cxx:7736
 TMinuit.cxx:7737
 TMinuit.cxx:7738
 TMinuit.cxx:7739
 TMinuit.cxx:7740
 TMinuit.cxx:7741
 TMinuit.cxx:7742
 TMinuit.cxx:7743
 TMinuit.cxx:7744
 TMinuit.cxx:7745
 TMinuit.cxx:7746
 TMinuit.cxx:7747
 TMinuit.cxx:7748
 TMinuit.cxx:7749
 TMinuit.cxx:7750
 TMinuit.cxx:7751
 TMinuit.cxx:7752
 TMinuit.cxx:7753
 TMinuit.cxx:7754
 TMinuit.cxx:7755
 TMinuit.cxx:7756
 TMinuit.cxx:7757
 TMinuit.cxx:7758
 TMinuit.cxx:7759
 TMinuit.cxx:7760
 TMinuit.cxx:7761
 TMinuit.cxx:7762
 TMinuit.cxx:7763
 TMinuit.cxx:7764
 TMinuit.cxx:7765
 TMinuit.cxx:7766
 TMinuit.cxx:7767
 TMinuit.cxx:7768
 TMinuit.cxx:7769
 TMinuit.cxx:7770
 TMinuit.cxx:7771
 TMinuit.cxx:7772
 TMinuit.cxx:7773
 TMinuit.cxx:7774
 TMinuit.cxx:7775
 TMinuit.cxx:7776
 TMinuit.cxx:7777
 TMinuit.cxx:7778
 TMinuit.cxx:7779
 TMinuit.cxx:7780
 TMinuit.cxx:7781
 TMinuit.cxx:7782
 TMinuit.cxx:7783
 TMinuit.cxx:7784
 TMinuit.cxx:7785
 TMinuit.cxx:7786
 TMinuit.cxx:7787
 TMinuit.cxx:7788
 TMinuit.cxx:7789
 TMinuit.cxx:7790
 TMinuit.cxx:7791
 TMinuit.cxx:7792
 TMinuit.cxx:7793
 TMinuit.cxx:7794
 TMinuit.cxx:7795
 TMinuit.cxx:7796
 TMinuit.cxx:7797
 TMinuit.cxx:7798
 TMinuit.cxx:7799
 TMinuit.cxx:7800
 TMinuit.cxx:7801
 TMinuit.cxx:7802
 TMinuit.cxx:7803
 TMinuit.cxx:7804
 TMinuit.cxx:7805
 TMinuit.cxx:7806
 TMinuit.cxx:7807
 TMinuit.cxx:7808
 TMinuit.cxx:7809
 TMinuit.cxx:7810
 TMinuit.cxx:7811
 TMinuit.cxx:7812
 TMinuit.cxx:7813
 TMinuit.cxx:7814
 TMinuit.cxx:7815
 TMinuit.cxx:7816
 TMinuit.cxx:7817
 TMinuit.cxx:7818
 TMinuit.cxx:7819
 TMinuit.cxx:7820
 TMinuit.cxx:7821
 TMinuit.cxx:7822
 TMinuit.cxx:7823
 TMinuit.cxx:7824
 TMinuit.cxx:7825
 TMinuit.cxx:7826
 TMinuit.cxx:7827
 TMinuit.cxx:7828
 TMinuit.cxx:7829
 TMinuit.cxx:7830
 TMinuit.cxx:7831
 TMinuit.cxx:7832
 TMinuit.cxx:7833
 TMinuit.cxx:7834
 TMinuit.cxx:7835
 TMinuit.cxx:7836
 TMinuit.cxx:7837
 TMinuit.cxx:7838
 TMinuit.cxx:7839
 TMinuit.cxx:7840
 TMinuit.cxx:7841
 TMinuit.cxx:7842
 TMinuit.cxx:7843
 TMinuit.cxx:7844
 TMinuit.cxx:7845
 TMinuit.cxx:7846
 TMinuit.cxx:7847
 TMinuit.cxx:7848
 TMinuit.cxx:7849
 TMinuit.cxx:7850
 TMinuit.cxx:7851
 TMinuit.cxx:7852
 TMinuit.cxx:7853
 TMinuit.cxx:7854
 TMinuit.cxx:7855
 TMinuit.cxx:7856
 TMinuit.cxx:7857
 TMinuit.cxx:7858
 TMinuit.cxx:7859
 TMinuit.cxx:7860
 TMinuit.cxx:7861
 TMinuit.cxx:7862
 TMinuit.cxx:7863
 TMinuit.cxx:7864
 TMinuit.cxx:7865
 TMinuit.cxx:7866
 TMinuit.cxx:7867
 TMinuit.cxx:7868
 TMinuit.cxx:7869
 TMinuit.cxx:7870
 TMinuit.cxx:7871
 TMinuit.cxx:7872
 TMinuit.cxx:7873
 TMinuit.cxx:7874
 TMinuit.cxx:7875
 TMinuit.cxx:7876
 TMinuit.cxx:7877
 TMinuit.cxx:7878
 TMinuit.cxx:7879
 TMinuit.cxx:7880
 TMinuit.cxx:7881
 TMinuit.cxx:7882
 TMinuit.cxx:7883
 TMinuit.cxx:7884
 TMinuit.cxx:7885
 TMinuit.cxx:7886
 TMinuit.cxx:7887
 TMinuit.cxx:7888
 TMinuit.cxx:7889
 TMinuit.cxx:7890
 TMinuit.cxx:7891
 TMinuit.cxx:7892
 TMinuit.cxx:7893
 TMinuit.cxx:7894
 TMinuit.cxx:7895
 TMinuit.cxx:7896
 TMinuit.cxx:7897
 TMinuit.cxx:7898
 TMinuit.cxx:7899
 TMinuit.cxx:7900
 TMinuit.cxx:7901
 TMinuit.cxx:7902
 TMinuit.cxx:7903
 TMinuit.cxx:7904
 TMinuit.cxx:7905
 TMinuit.cxx:7906
 TMinuit.cxx:7907
 TMinuit.cxx:7908
 TMinuit.cxx:7909
 TMinuit.cxx:7910
 TMinuit.cxx:7911
 TMinuit.cxx:7912
 TMinuit.cxx:7913
 TMinuit.cxx:7914
 TMinuit.cxx:7915
 TMinuit.cxx:7916
 TMinuit.cxx:7917
 TMinuit.cxx:7918
 TMinuit.cxx:7919
 TMinuit.cxx:7920
 TMinuit.cxx:7921
 TMinuit.cxx:7922
 TMinuit.cxx:7923
 TMinuit.cxx:7924
 TMinuit.cxx:7925
 TMinuit.cxx:7926
 TMinuit.cxx:7927
 TMinuit.cxx:7928
 TMinuit.cxx:7929
 TMinuit.cxx:7930
 TMinuit.cxx:7931
 TMinuit.cxx:7932
 TMinuit.cxx:7933
 TMinuit.cxx:7934
 TMinuit.cxx:7935
 TMinuit.cxx:7936
 TMinuit.cxx:7937
 TMinuit.cxx:7938