// @(#)root/hist:$Id$
// Author: Christian Holm Christensen 07/11/2000

//____________________________________________________________________
//
//
// Begin_Html
/*
 </pre>
 <H1><A NAME="SECTION00010000000000000000">
 Multidimensional Fits in ROOT</A>
 </H1>

 <H1><A NAME="SECTION00020000000000000000"></A>
 <A NAME="sec:overview"></A><BR>
 Overview
 </H1>

 <P>
 A common problem encountered in different fields of applied science is
 to find an expression for one physical quantity in terms of several
 others, which are directly measurable.

 <P>
 An example in high energy physics is the evaluation of the momentum of
 a charged particle from the observation of its trajectory in a magnetic
 field.  The problem is to relate the momentum of the particle to the
 observations, which may consists of of positional measurements at
 intervals along the particle trajectory.

 <P>
 The exact functional relationship between the measured quantities
 (e.g., the space-points) and the dependent quantity (e.g., the
 momentum) is in general not known, but one possible way of solving the
 problem, is to find an expression which reliably approximates the
 dependence of the momentum on the observations.

 <P>
 This explicit function of the observations can be obtained by a
 <I>least squares</I> fitting procedure applied to a representive
 sample of the data, for which the dependent quantity (e.g., momentum)
 and the independent observations are known. The function can then be
 used to compute the quantity of interest for new observations of the
 independent variables.

 <P>
 This class <TT>TMultiDimFit</TT> implements such a procedure in
 ROOT. It is largely based on the CERNLIB MUDIFI package
 [<A
 HREF="TMultiFimFit.html#mudifi">2</A>]. Though the basic concepts are still sound, and
 therefore kept, a few implementation details have changed, and this
 class can take advantage of MINUIT [<A
 HREF="TMultiFimFit.html#minuit">4</A>] to improve the errors
 of the fitting, thanks to the class <TT>TMinuit</TT>.

 <P>
 In [<A
 HREF="TMultiFimFit.html#wind72">5</A>] and [<A
 HREF="TMultiFimFit.html#wind81">6</A>] H. Wind demonstrates the utility
 of this procedure in the context of tracking, magnetic field
 parameterisation, and so on. The outline of the method used in this
 class is based on Winds discussion, and I refer these two excellents
 text for more information.

 <P>
 And example of usage is given in
 <A NAME="tex2html1"
 HREF="
 ./examples/multidimfit.C"><TT>$ROOTSYS/tutorials/fit/multidimfit.C</TT></A>.

 <P>

 <H1><A NAME="SECTION00030000000000000000"></A>
 <A NAME="sec:method"></A><BR>
 The Method
 </H1>

 <P>
 Let <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img7.gif"
 ALT="$ D$"> by the dependent quantity of interest, which depends smoothly
 on the observable quantities <!-- MATH
 $x_1, \ldots, x_N$
 -->
 <IMG
 WIDTH="80" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img8.gif"
 ALT="$ x_1, \ldots, x_N$">, which we'll denote by
 <!-- MATH
 $\mathbf{x}$
 -->
 <IMG
 WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img9.gif"
 ALT="$ \mathbf{x}$">. Given a training sample of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img10.gif"
 ALT="$ M$"> tuples of the form,
 (<A NAME="tex2html2"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:AddRow"><TT>TMultiDimFit::AddRow</TT></A>)
 <!-- MATH
 \begin{displaymath}
 \left(\mathbf{x}_j, D_j, E_j\right)\quad,
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="108" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img11.gif"
 ALT="$\displaystyle \left(\mathbf{x}_j, D_j, E_j\right)\quad,
 $">
 </DIV><P></P>
 where <!-- MATH
 $\mathbf{x}_j = (x_{1,j},\ldots,x_{N,j})$
 -->
 <IMG
 WIDTH="148" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img12.gif"
 ALT="$ \mathbf{x}_j = (x_{1,j},\ldots,x_{N,j})$"> are <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img13.gif"
 ALT="$ N$"> independent
 variables, <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img14.gif"
 ALT="$ D_j$"> is the known, quantity dependent at <!-- MATH
 $\mathbf{x}_j$
 -->
 <IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img15.gif"
 ALT="$ \mathbf{x}_j$">,
 and <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img16.gif"
 ALT="$ E_j$"> is the square error in <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img14.gif"
 ALT="$ D_j$">, the class
 <A NAME="tex2html3"
 HREF="../TMultiDimFit.html"><TT>TMultiDimFit</TT></A>
 will
 try to find the parameterization
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="Dp"></A><!-- MATH
 \begin{equation}
 D_p(\mathbf{x}) = \sum_{l=1}^{L} c_l \prod_{i=1}^{N} p_{li}\left(x_i\right)
 = \sum_{l=1}^{L} c_l F_l(\mathbf{x})
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="274" HEIGHT="65" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img17.gif"
 ALT="$\displaystyle D_p(\mathbf{x}) = \sum_{l=1}^{L} c_l \prod_{i=1}^{N} p_{li}\left(x_i\right) = \sum_{l=1}^{L} c_l F_l(\mathbf{x})$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (1)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 such that
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="S"></A><!-- MATH
 \begin{equation}
 S \equiv \sum_{j=1}^{M} \left(D_j - D_p\left(\mathbf{x}_j\right)\right)^2
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="172" HEIGHT="65" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img18.gif"
 ALT="$\displaystyle S \equiv \sum_{j=1}^{M} \left(D_j - D_p\left(\mathbf{x}_j\right)\right)^2$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (2)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 is minimal. Here <!-- MATH
 $p_{li}(x_i)$
 -->
 <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img19.gif"
 ALT="$ p_{li}(x_i)$"> are monomials, or Chebyshev or Legendre
 polynomials, labelled <!-- MATH
 $l = 1, \ldots, L$
 -->
 <IMG
 WIDTH="87" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img20.gif"
 ALT="$ l = 1, \ldots, L$">, in each variable
 <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img21.gif"
 ALT="$ x_i$">, <!-- MATH
 $i=1, \ldots, N$
 -->
 <IMG
 WIDTH="91" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img22.gif"
 ALT="$ i=1, \ldots, N$">.

 <P>
 So what <TT>TMultiDimFit</TT> does, is to determine the number of
 terms <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$">, and then <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$"> terms (or functions) <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">, and the <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$">
 coefficients <IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img25.gif"
 ALT="$ c_l$">, so that <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> is minimal
 (<A NAME="tex2html4"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:FindParameterization"><TT>TMultiDimFit::FindParameterization</TT></A>).

 <P>
 Of course it's more than a little unlikely that <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> will ever become
 exact zero as a result of the procedure outlined below. Therefore, the
 user is asked to provide a minimum relative error <IMG
 WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img27.gif"
 ALT="$ \epsilon$">
 (<A NAME="tex2html5"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetMinRelativeError"><TT>TMultiDimFit::SetMinRelativeError</TT></A>), and <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$">
 will be considered minimized when
 <!-- MATH
 \begin{displaymath}
 R = \frac{S}{\sum_{j=1}^M D_j^2} < \epsilon
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="132" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img28.gif"
 ALT="$\displaystyle R = \frac{S}{\sum_{j=1}^M D_j^2} &lt; \epsilon
 $">
 </DIV><P></P>

 <P>
 Optionally, the user may impose a functional expression by specifying
 the powers of each variable in <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$"> specified functions <!-- MATH
 $F_1, \ldots,
 F_L$
 -->
 <IMG
 WIDTH="79" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img29.gif"
 ALT="$ F_1, \ldots,
 F_L$"> (<A NAME="tex2html6"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetPowers"><TT>TMultiDimFit::SetPowers</TT></A>). In that case, only the
 coefficients <IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img25.gif"
 ALT="$ c_l$"> is calculated by the class.

 <P>

 <H2><A NAME="SECTION00031000000000000000"></A>
 <A NAME="sec:selection"></A><BR>
 Limiting the Number of Terms
 </H2>

 <P>
 As always when dealing with fits, there's a real chance of
 <I>over fitting</I>. As is well-known, it's always possible to fit an
 <IMG
 WIDTH="46" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img30.gif"
 ALT="$ N-1$"> polynomial in <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img31.gif"
 ALT="$ x$"> to <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img13.gif"
 ALT="$ N$"> points <IMG
 WIDTH="41" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img32.gif"
 ALT="$ (x,y)$"> with <!-- MATH
 $\chi^2 = 0$
 -->
 <IMG
 WIDTH="50" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img33.gif"
 ALT="$ \chi^2 = 0$">, but
 the polynomial is not likely to fit new data at all
 [<A
 HREF="TMultiFimFit.html#bevington">1</A>]. Therefore, the user is asked to provide an upper
 limit, <IMG
 WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img34.gif"
 ALT="$ L_{max}$"> to the number of terms in <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img35.gif"
 ALT="$ D_p$">
 (<A NAME="tex2html7"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetMaxTerms"><TT>TMultiDimFit::SetMaxTerms</TT></A>).

 <P>
 However, since there's an infinite number of <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$"> to choose from, the
 user is asked to give the maximum power. <IMG
 WIDTH="49" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img36.gif"
 ALT="$ P_{max,i}$">, of each variable
 <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img21.gif"
 ALT="$ x_i$"> to be considered in the minimization of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$">
 (<A NAME="tex2html8"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetMaxPowers"><TT>TMultiDimFit::SetMaxPowers</TT></A>).

 <P>
 One way of obtaining values for the maximum power in variable <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img37.gif"
 ALT="$ i$">, is
 to perform a regular fit to the dependent quantity <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img7.gif"
 ALT="$ D$">, using a
 polynomial only in <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img21.gif"
 ALT="$ x_i$">. The maximum power is <IMG
 WIDTH="49" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img36.gif"
 ALT="$ P_{max,i}$"> is then the
 power that does not significantly improve the one-dimensional
 least-square fit over <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img21.gif"
 ALT="$ x_i$"> to <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img7.gif"
 ALT="$ D$"> [<A
 HREF="TMultiFimFit.html#wind72">5</A>].

 <P>
 There are still a huge amount of possible choices for <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">; in fact
 there are <!-- MATH
 $\prod_{i=1}^{N} (P_{max,i} + 1)$
 -->
 <IMG
 WIDTH="125" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img38.gif"
 ALT="$ \prod_{i=1}^{N} (P_{max,i} + 1)$"> possible
 choices. Obviously we need to limit this. To this end, the user is
 asked to set a <I>power control limit</I>, <IMG
 WIDTH="17" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img39.gif"
 ALT="$ Q$">
 (<A NAME="tex2html9"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetPowerLimit"><TT>TMultiDimFit::SetPowerLimit</TT></A>), and a function
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$"> is only accepted if
 <!-- MATH
 \begin{displaymath}
 Q_l = \sum_{i=1}^{N} \frac{P_{li}}{P_{max,i}} < Q
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="151" HEIGHT="65" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img40.gif"
 ALT="$\displaystyle Q_l = \sum_{i=1}^{N} \frac{P_{li}}{P_{max,i}} &lt; Q
 $">
 </DIV><P></P>
 where <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img41.gif"
 ALT="$ P_{li}$"> is the leading power of variable <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img21.gif"
 ALT="$ x_i$"> in function
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">. (<A NAME="tex2html10"
 HREF="

 ./TMultiDimFit.html#TMultiDimFit:MakeCandidates"><TT>TMultiDimFit::MakeCandidates</TT></A>). So the number of
 functions increase with <IMG
 WIDTH="17" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img39.gif"
 ALT="$ Q$"> (1, 2 is fine, 5 is way out).

 <P>

 <H2><A NAME="SECTION00032000000000000000">
 Gram-Schmidt Orthogonalisation</A>
 </H2>

 <P>
 To further reduce the number of functions in the final expression,
 only those functions that significantly reduce <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> is chosen. What
 `significant' means, is chosen by the user, and will be
 discussed below (see&nbsp;<A HREF="TMultiFimFit.html#sec:selectiondetail">2.3</A>).

 <P>
 The functions <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$"> are generally not orthogonal, which means one will
 have to evaluate all possible <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">'s over all data-points before
 finding the most significant [<A
 HREF="TMultiFimFit.html#bevington">1</A>]. We can, however, do
 better then that. By applying the <I>modified Gram-Schmidt
 orthogonalisation</I> algorithm [<A
 HREF="TMultiFimFit.html#wind72">5</A>] [<A
 HREF="TMultiFimFit.html#golub">3</A>] to the
 functions <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">, we can evaluate the contribution to the reduction of
 <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> from each function in turn, and we may delay the actual inversion
 of the curvature-matrix
 (<A NAME="tex2html11"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:MakeGramSchmidt"><TT>TMultiDimFit::MakeGramSchmidt</TT></A>).

 <P>
 So we are let to consider an <IMG
 WIDTH="52" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img42.gif"
 ALT="$ M\times L$"> matrix <!-- MATH
 $\mathsf{F}$
 -->
 <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img43.gif"
 ALT="$ \mathsf{F}$">, an
 element of which is given by
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:Felem"></A><!-- MATH
 \begin{equation}
 f_{jl} = F_j\left(x_{1j} , x_{2j}, \ldots, x_{Nj}\right)
 = F_l(\mathbf{x}_j)\,  \quad\mbox{with}~j=1,2,\ldots,M,
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="260" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img44.gif"
 ALT="$\displaystyle f_{jl} = F_j\left(x_{1j} , x_{2j}, \ldots, x_{Nj}\right) = F_l(\mathbf{x}_j) $">&nbsp; &nbsp;with<IMG
 WIDTH="120" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img45.gif"
 ALT="$\displaystyle &nbsp;j=1,2,\ldots,M,$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (3)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 where <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img46.gif"
 ALT="$ j$"> labels the <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img10.gif"
 ALT="$ M$"> rows in the training sample and <IMG
 WIDTH="9" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img47.gif"
 ALT="$ l$"> labels
 <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$"> functions of <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img13.gif"
 ALT="$ N$"> variables, and <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img48.gif"
 ALT="$ L \leq M$">. That is, <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img49.gif"
 ALT="$ f_{jl}$"> is
 the term (or function) numbered <IMG
 WIDTH="9" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img47.gif"
 ALT="$ l$"> evaluated at the data point
 <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img46.gif"
 ALT="$ j$">. We have to normalise <!-- MATH
 $\mathbf{x}_j$
 -->
 <IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img15.gif"
 ALT="$ \mathbf{x}_j$"> to <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img50.gif"
 ALT="$ [-1,1]$"> for this to
 succeed [<A
 HREF="TMultiFimFit.html#wind72">5</A>]
 (<A NAME="tex2html12"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:MakeNormalized"><TT>TMultiDimFit::MakeNormalized</TT></A>). We then define a
 matrix <!-- MATH
 $\mathsf{W}$
 -->
 <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img51.gif"
 ALT="$ \mathsf{W}$"> of which the columns <!-- MATH
 $\mathbf{w}_j$
 -->
 <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img52.gif"
 ALT="$ \mathbf{w}_j$"> are given by
 <BR>
 <DIV ALIGN="CENTER"><A NAME="eq:wj"></A><!-- MATH
 \begin{eqnarray}
 \mathbf{w}_1 &=& \mathbf{f}_1 = F_1\left(\mathbf x_1\right)\\
 \mathbf{w}_l &=& \mathbf{f}_l - \sum^{l-1}_{k=1} \frac{\mathbf{f}_l \bullet
 \mathbf{w}_k}{\mathbf{w}_k^2}\mathbf{w}_k\,.
 \end{eqnarray}
 -->
 <TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
 <TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
 WIDTH="25" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img53.gif"
 ALT="$\displaystyle \mathbf{w}_1$"></TD>
 <TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img54.gif"
 ALT="$\displaystyle =$"></TD>
 <TD ALIGN="LEFT" NOWRAP><IMG
 WIDTH="87" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img55.gif"
 ALT="$\displaystyle \mathbf{f}_1 = F_1\left(\mathbf x_1\right)$"></TD>
 <TD WIDTH=10 ALIGN="RIGHT">
 (4)</TD></TR>
 <TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img56.gif"
 ALT="$\displaystyle \mathbf{w}_l$"></TD>
 <TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img54.gif"
 ALT="$\displaystyle =$"></TD>
 <TD ALIGN="LEFT" NOWRAP><IMG
 WIDTH="138" HEIGHT="66" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img57.gif"
 ALT="$\displaystyle \mathbf{f}_l - \sum^{l-1}_{k=1} \frac{\mathbf{f}_l \bullet
 \mathbf{w}_k}{\mathbf{w}_k^2}\mathbf{w}_k .$"></TD>
 <TD WIDTH=10 ALIGN="RIGHT">
 (5)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 and <!-- MATH
 $\mathbf{w}_{l}$
 -->
 <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img58.gif"
 ALT="$ \mathbf{w}_{l}$"> is the component of <!-- MATH
 $\mathbf{f}_{l}$
 -->
 <IMG
 WIDTH="15" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img59.gif"
 ALT="$ \mathbf{f}_{l}$"> orthogonal
 to <!-- MATH
 $\mathbf{w}_{1}, \ldots, \mathbf{w}_{l-1}$
 -->
 <IMG
 WIDTH="97" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img60.gif"
 ALT="$ \mathbf{w}_{1}, \ldots, \mathbf{w}_{l-1}$">. Hence we obtain
 [<A
 HREF="TMultiFimFit.html#golub">3</A>],
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:worto"></A><!-- MATH
 \begin{equation}
 \mathbf{w}_k\bullet\mathbf{w}_l = 0\quad\mbox{if}~k \neq l\quad.
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="87" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img61.gif"
 ALT="$\displaystyle \mathbf{w}_k\bullet\mathbf{w}_l = 0$">&nbsp; &nbsp;if<IMG
 WIDTH="65" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img62.gif"
 ALT="$\displaystyle &nbsp;k \neq l\quad.$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (6)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>

 <P>
 We now take as a new model <!-- MATH
 $\mathsf{W}\mathbf{a}$
 -->
 <IMG
 WIDTH="28" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img63.gif"
 ALT="$ \mathsf{W}\mathbf{a}$">. We thus want to
 minimize
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:S"></A><!-- MATH
 \begin{equation}
 S\equiv \left(\mathbf{D} - \mathsf{W}\mathbf{a}\right)^2\quad,
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="136" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img64.gif"
 ALT="$\displaystyle S\equiv \left(\mathbf{D} - \mathsf{W}\mathbf{a}\right)^2\quad,$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (7)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 where <!-- MATH
 $\mathbf{D} = \left(D_1,\ldots,D_M\right)$
 -->
 <IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img65.gif"
 ALT="$ \mathbf{D} = \left(D_1,\ldots,D_M\right)$"> is a vector of the
 dependent quantity in the sample. Differentiation with respect to
 <IMG
 WIDTH="19" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img66.gif"
 ALT="$ a_j$"> gives, using&nbsp;(<A HREF="TMultiFimFit.html#eq:worto">6</A>),
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:dS"></A><!-- MATH
 \begin{equation}
 \mathbf{D}\bullet\mathbf{w}_l - a_l\mathbf{w}_l^2 = 0
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="134" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img67.gif"
 ALT="$\displaystyle \mathbf{D}\bullet\mathbf{w}_l - a_l\mathbf{w}_l^2 = 0$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (8)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 or
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:dS2"></A><!-- MATH
 \begin{equation}
 a_l = \frac{\mathbf{D}_l\bullet\mathbf{w}_l}{\mathbf{w}_l^2}
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="95" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img68.gif"
 ALT="$\displaystyle a_l = \frac{\mathbf{D}_l\bullet\mathbf{w}_l}{\mathbf{w}_l^2}$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (9)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 Let <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img69.gif"
 ALT="$ S_j$"> be the sum of squares of residuals when taking <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img46.gif"
 ALT="$ j$"> functions
 into account. Then
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:Sj"></A><!-- MATH
 \begin{equation}
 S_l = \left[\mathbf{D} - \sum^l_{k=1} a_k\mathbf{w}_k\right]^2
 = \mathbf{D}^2 - 2\mathbf{D} \sum^l_{k=1} a_k\mathbf{w}_k
 + \sum^l_{k=1} a_k^2\mathbf{w}_k^2
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="394" HEIGHT="72" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img70.gif"
 ALT="$\displaystyle S_l = \left[\mathbf{D} - \sum^l_{k=1} a_k\mathbf{w}_k\right]^2 = ...
 ...2 - 2\mathbf{D} \sum^l_{k=1} a_k\mathbf{w}_k + \sum^l_{k=1} a_k^2\mathbf{w}_k^2$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (10)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 Using (<A HREF="TMultiFimFit.html#eq:dS2">9</A>), we see that
 <BR>
 <DIV ALIGN="CENTER"><A NAME="eq:sj2"></A><!-- MATH
 \begin{eqnarray}
 S_l &=& \mathbf{D}^2 - 2 \sum^l_{k=1} a_k^2\mathbf{w}_k^2 +
 \sum^j_{k=1} a_k^2\mathbf{w}_k^2\nonumber\\
 &=& \mathbf{D}^2 - \sum^l_{k=1} a_k^2\mathbf{w}_k^2\nonumber\\
 &=& \mathbf{D}^2 - \sum^l_{k=1} \frac{\left(\mathbf D\bullet \mathbf
 w_k\right)}{\mathbf w_k^2}
 \end{eqnarray}
 -->
 <TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
 <TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img71.gif"
 ALT="$\displaystyle S_l$"></TD>
 <TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img54.gif"
 ALT="$\displaystyle =$"></TD>
 <TD ALIGN="LEFT" NOWRAP><IMG
 WIDTH="201" HEIGHT="67" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img72.gif"
 ALT="$\displaystyle \mathbf{D}^2 - 2 \sum^l_{k=1} a_k^2\mathbf{w}_k^2 +
 \sum^j_{k=1} a_k^2\mathbf{w}_k^2$"></TD>
 <TD WIDTH=10 ALIGN="RIGHT">
 &nbsp;</TD></TR>
 <TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
 <TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img54.gif"
 ALT="$\displaystyle =$"></TD>
 <TD ALIGN="LEFT" NOWRAP><IMG
 WIDTH="108" HEIGHT="66" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img73.gif"
 ALT="$\displaystyle \mathbf{D}^2 - \sum^l_{k=1} a_k^2\mathbf{w}_k^2$"></TD>
 <TD WIDTH=10 ALIGN="RIGHT">
 &nbsp;</TD></TR>
 <TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
 <TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img54.gif"
 ALT="$\displaystyle =$"></TD>
 <TD ALIGN="LEFT" NOWRAP><IMG
 WIDTH="137" HEIGHT="66" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img74.gif"
 ALT="$\displaystyle \mathbf{D}^2 - \sum^l_{k=1} \frac{\left(\mathbf D\bullet \mathbf
 w_k\right)}{\mathbf w_k^2}$"></TD>
 <TD WIDTH=10 ALIGN="RIGHT">
 (11)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>

 <P>
 So for each new function <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$"> included in the model, we get a
 reduction of the sum of squares of residuals of <!-- MATH
 $a_l^2\mathbf{w}_l^2$
 -->
 <IMG
 WIDTH="40" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img75.gif"
 ALT="$ a_l^2\mathbf{w}_l^2$">,
 where <!-- MATH
 $\mathbf{w}_l$
 -->
 <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img76.gif"
 ALT="$ \mathbf{w}_l$"> is given by (<A HREF="TMultiFimFit.html#eq:wj">4</A>) and <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img77.gif"
 ALT="$ a_l$"> by
 (<A HREF="TMultiFimFit.html#eq:dS2">9</A>). Thus, using the Gram-Schmidt orthogonalisation, we
 can decide if we want to include this function in the final model,
 <I>before</I> the matrix inversion.

 <P>

 <H2><A NAME="SECTION00033000000000000000"></A>
 <A NAME="sec:selectiondetail"></A><BR>
 Function Selection Based on Residual
 </H2>

 <P>
 Supposing that <IMG
 WIDTH="42" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img78.gif"
 ALT="$ L-1$"> steps of the procedure have been performed, the
 problem now is to consider the <!-- MATH
 $L^{\mbox{th}}$
 -->
 <IMG
 WIDTH="31" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img79.gif"
 ALT="$ L^{\mbox{th}}$"> function.

 <P>
 The sum of squares of residuals can be written as
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:sums"></A><!-- MATH
 \begin{equation}
 S_L = \textbf{D}^T\bullet\textbf{D} -
 \sum^L_{l=1}a^2_l\left(\textbf{w}_l^T\bullet\textbf{w}_l\right)
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="232" HEIGHT="65" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img80.gif"
 ALT="$\displaystyle S_L = \textbf{D}^T\bullet\textbf{D} - \sum^L_{l=1}a^2_l\left(\textbf{w}_l^T\bullet\textbf{w}_l\right)$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (12)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 where the relation (<A HREF="TMultiFimFit.html#eq:dS2">9</A>) have been taken into account. The
 contribution of the <!-- MATH
 $L^{\mbox{th}}$
 -->
 <IMG
 WIDTH="31" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img79.gif"
 ALT="$ L^{\mbox{th}}$"> function to the reduction of S, is
 given by
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:dSN"></A><!-- MATH
 \begin{equation}
 \Delta S_L = a^2_L\left(\textbf{w}_L^T\bullet\textbf{w}_L\right)
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="154" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img81.gif"
 ALT="$\displaystyle \Delta S_L = a^2_L\left(\textbf{w}_L^T\bullet\textbf{w}_L\right)$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (13)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>

 <P>
 Two test are now applied to decide whether this <!-- MATH
 $L^{\mbox{th}}$
 -->
 <IMG
 WIDTH="31" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img79.gif"
 ALT="$ L^{\mbox{th}}$">
 function is to be included in the final expression, or not.

 <P>

 <H3><A NAME="SECTION00033100000000000000"></A>
 <A NAME="testone"></A><BR>
 Test 1
 </H3>

 <P>
 Denoting by <IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img82.gif"
 ALT="$ H_{L-1}$"> the subspace spanned by
 <!-- MATH
 $\textbf{w}_1,\ldots,\textbf{w}_{L-1}$
 -->
 <IMG
 WIDTH="102" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img83.gif"
 ALT="$ \textbf{w}_1,\ldots,\textbf{w}_{L-1}$"> the function <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$"> is
 by construction (see (<A HREF="TMultiFimFit.html#eq:wj">4</A>)) the projection of the function
 <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img84.gif"
 ALT="$ F_L$"> onto the direction perpendicular to <IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img82.gif"
 ALT="$ H_{L-1}$">. Now, if the
 length of <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$"> (given by <!-- MATH
 $\textbf{w}_L\bullet\textbf{w}_L$
 -->
 <IMG
 WIDTH="65" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img85.gif"
 ALT="$ \textbf{w}_L\bullet\textbf{w}_L$">)
 is very small compared to the length of <!-- MATH
 $\textbf{f}_L$
 -->
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img3.gif"
 ALT="$ \textbf {f}_L$"> this new
 function can not contribute much to the reduction of the sum of
 squares of residuals. The test consists then in calculating the angle
 <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img1.gif"
 ALT="$ \theta $"> between the two vectors <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$"> and <!-- MATH
 $\textbf{f}_L$
 -->
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img3.gif"
 ALT="$ \textbf {f}_L$">
 (see also figure&nbsp;<A HREF="TMultiFimFit.html#fig:thetaphi">1</A>) and requiring that it's
 <I>greater</I> then a threshold value which the user must set
 (<A NAME="tex2html14"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetMinAngle"><TT>TMultiDimFit::SetMinAngle</TT></A>).

 <P>

 <P></P>
 <DIV ALIGN="CENTER"><A NAME="fig:thetaphi"></A><A NAME="519"></A>
 <TABLE>
 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
 (a) Angle <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img1.gif"
 ALT="$ \theta $"> between <!-- MATH
 $\textbf{w}_l$
 -->
 <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img2.gif"
 ALT="$ \textbf {w}_l$"> and
 <!-- MATH
 $\textbf{f}_L$
 -->
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img3.gif"
 ALT="$ \textbf {f}_L$">, (b) angle <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img4.gif"
 ALT="$ \phi $"> between <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$"> and
 <!-- MATH
 $\textbf{D}$
 -->
 <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img6.gif"
 ALT="$ \textbf {D}$"></CAPTION>
 <TR><TD><IMG
 WIDTH="466" HEIGHT="172" BORDER="0"
 SRC="gif/multidimfit_img86.gif"
 ALT="\begin{figure}\begin{center}
 \begin{tabular}{p{.4\textwidth}p{.4\textwidth}}
 \...
 ... \put(80,100){$\mathbf{D}$}
 \end{picture} \end{tabular} \end{center}\end{figure}"></TD></TR>
 </TABLE>
 </DIV><P></P>

 <P>

 <H3><A NAME="SECTION00033200000000000000"></A> <A NAME="testtwo"></A><BR>
 Test 2
 </H3>

 <P>
 Let <!-- MATH
 $\textbf{D}$
 -->
 <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img6.gif"
 ALT="$ \textbf {D}$"> be the data vector to be fitted. As illustrated in
 figure&nbsp;<A HREF="TMultiFimFit.html#fig:thetaphi">1</A>, the <!-- MATH
 $L^{\mbox{th}}$
 -->
 <IMG
 WIDTH="31" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img79.gif"
 ALT="$ L^{\mbox{th}}$"> function <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$">
 will contribute significantly to the reduction of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$">, if the angle
 <!-- MATH
 $\phi^\prime$
 -->
 <IMG
 WIDTH="18" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img87.gif"
 ALT="$ \phi^\prime$"> between <!-- MATH
 $\textbf{w}_L$
 -->
 <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img5.gif"
 ALT="$ \textbf {w}_L$"> and <!-- MATH
 $\textbf{D}$
 -->
 <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img6.gif"
 ALT="$ \textbf {D}$"> is smaller than
 an upper limit <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img4.gif"
 ALT="$ \phi $">, defined by the user
 (<A NAME="tex2html15"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:SetMaxAngle"><TT>TMultiDimFit::SetMaxAngle</TT></A>)

 <P>
 However, the method automatically readjusts the value of this angle
 while fitting is in progress, in order to make the selection criteria
 less and less difficult to be fulfilled. The result is that the
 functions contributing most to the reduction of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> are chosen first
 (<A NAME="tex2html16"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:TestFunction"><TT>TMultiDimFit::TestFunction</TT></A>).

 <P>
 In case <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img4.gif"
 ALT="$ \phi $"> isn't defined, an alternative method of
 performing this second test is used: The <!-- MATH
 $L^{\mbox{th}}$
 -->
 <IMG
 WIDTH="31" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img79.gif"
 ALT="$ L^{\mbox{th}}$"> function
 <!-- MATH
 $\textbf{f}_L$
 -->
 <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img3.gif"
 ALT="$ \textbf {f}_L$"> is accepted if (refer also to equation&nbsp;(<A HREF="TMultiFimFit.html#eq:dSN">13</A>))
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:dSN2"></A><!-- MATH
 \begin{equation}
 \Delta S_L > \frac{S_{L-1}}{L_{max}-L}
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="129" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img88.gif"
 ALT="$\displaystyle \Delta S_L &gt; \frac{S_{L-1}}{L_{max}-L}$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (14)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 where  <IMG
 WIDTH="40" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img89.gif"
 ALT="$ S_{L-1}$"> is the sum of the <IMG
 WIDTH="42" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img78.gif"
 ALT="$ L-1$"> first residuals from the
 <IMG
 WIDTH="42" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img78.gif"
 ALT="$ L-1$"> functions previously accepted; and <IMG
 WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img34.gif"
 ALT="$ L_{max}$"> is the total number
 of functions allowed in the final expression of the fit (defined by
 user).

 <P>
 >From this we see, that by restricting <IMG
 WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img34.gif"
 ALT="$ L_{max}$"> -- the number of
 terms in the final model -- the fit is more difficult to perform,
 since the above selection criteria is more limiting.

 <P>
 The more coefficients we evaluate, the more the sum of squares of
 residuals <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> will be reduced. We can evaluate <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$"> before inverting
 <!-- MATH
 $\mathsf{B}$
 -->
 <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img90.gif"
 ALT="$ \mathsf{B}$"> as shown below.

 <P>

 <H2><A NAME="SECTION00034000000000000000">
 Coefficients and Coefficient Errors</A>
 </H2>

 <P>
 Having found a parameterization, that is the <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img24.gif"
 ALT="$ F_l$">'s and <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img23.gif"
 ALT="$ L$">, that
 minimizes <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img26.gif"
 ALT="$ S$">, we still need to determine the coefficients
 <IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img25.gif"
 ALT="$ c_l$">. However, it's a feature of how we choose the significant
 functions, that the evaluation of the <IMG
 WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img25.gif"
 ALT="$ c_l$">'s becomes trivial
 [<A
 HREF="TMultiFimFit.html#wind72">5</A>]. To derive <!-- MATH
 $\mathbf{c}$
 -->
 <IMG
 WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img91.gif"
 ALT="$ \mathbf{c}$">, we first note that
 equation&nbsp;(<A HREF="TMultiFimFit.html#eq:wj">4</A>) can be written as
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:FF"></A><!-- MATH
 \begin{equation}
 \mathsf{F} = \mathsf{W}\mathsf{B}
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="60" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img92.gif"
 ALT="$\displaystyle \mathsf{F} = \mathsf{W}\mathsf{B}$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (15)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 where
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:bij"></A><!-- MATH
 \begin{equation}
 b_{ij} = \left\{\begin{array}{rcl}
 \frac{\mathbf{f}_j \bullet \mathbf{w}_i}{\mathbf{w}_i^2}
 & \mbox{if} & i < j\\
 1 & \mbox{if} & i = j\\
 0 & \mbox{if} & i > j
 \end{array}\right.
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="187" HEIGHT="79" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img93.gif"
 ALT="$\displaystyle b_{ij} = \left\{\begin{array}{rcl} \frac{\mathbf{f}_j \bullet \ma...
 ...f} &amp; i &lt; j\  1 &amp; \mbox{if} &amp; i = j\  0 &amp; \mbox{if} &amp; i &gt; j \end{array}\right.$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (16)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 Consequently, <!-- MATH
 $\mathsf{B}$
 -->
 <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img90.gif"
 ALT="$ \mathsf{B}$"> is an upper triangle matrix, which can be
 readily inverted. So we now evaluate
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:FFF"></A><!-- MATH
 \begin{equation}
 \mathsf{F}\mathsf{B}^{-1} = \mathsf{W}
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="77" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img94.gif"
 ALT="$\displaystyle \mathsf{F}\mathsf{B}^{-1} = \mathsf{W}$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (17)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 The model <!-- MATH
 $\mathsf{W}\mathbf{a}$
 -->
 <IMG
 WIDTH="28" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img63.gif"
 ALT="$ \mathsf{W}\mathbf{a}$"> can therefore be written as
 <!-- MATH
 \begin{displaymath}
 (\mathsf{F}\mathsf{B}^{-1})\mathbf{a} =
 \mathsf{F}(\mathsf{B}^{-1}\mathbf{a})\,.
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="148" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img95.gif"
 ALT="$\displaystyle (\mathsf{F}\mathsf{B}^{-1})\mathbf{a} =
 \mathsf{F}(\mathsf{B}^{-1}\mathbf{a}) .
 $">
 </DIV><P></P>
 The original model <!-- MATH
 $\mathsf{F}\mathbf{c}$
 -->
 <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img96.gif"
 ALT="$ \mathsf{F}\mathbf{c}$"> is therefore identical with
 this if
 <P></P>
 <DIV ALIGN="CENTER"><A NAME="eq:id:cond"></A><!-- MATH
 \begin{equation}
 \mathbf{c} = \left(\mathsf{B}^{-1}\mathbf{a}\right) =
 \left[\mathbf{a}^T\left(\mathsf{B}^{-1}\right)^T\right]^T\,.
 \end{equation}
 -->
 <TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
 <TR VALIGN="MIDDLE">
 <TD NOWRAP ALIGN="CENTER"><IMG
 WIDTH="214" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img97.gif"
 ALT="$\displaystyle \mathbf{c} = \left(\mathsf{B}^{-1}\mathbf{a}\right) = \left[\mathbf{a}^T\left(\mathsf{B}^{-1}\right)^T\right]^T .$"></TD>
 <TD NOWRAP WIDTH="10" ALIGN="RIGHT">
 (18)</TD></TR>
 </TABLE></DIV>
 <BR CLEAR="ALL"><P></P>
 The reason we use <!-- MATH
 $\left(\mathsf{B}^{-1}\right)^T$
 -->
 <IMG
 WIDTH="56" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img98.gif"
 ALT="$ \left(\mathsf{B}^{-1}\right)^T$"> rather then
 <!-- MATH
 $\mathsf{B}^{-1}$
 -->
 <IMG
 WIDTH="32" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img99.gif"
 ALT="$ \mathsf{B}^{-1}$"> is to save storage, since
 <!-- MATH
 $\left(\mathsf{B}^{-1}\right)^T$
 -->
 <IMG
 WIDTH="56" HEIGHT="42" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img98.gif"
 ALT="$ \left(\mathsf{B}^{-1}\right)^T$"> can be stored in the same matrix as
 <!-- MATH
 $\mathsf{B}$
 -->
 <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img90.gif"
 ALT="$ \mathsf{B}$">
 (<A NAME="tex2html17"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:MakeCoefficients"><TT>TMultiDimFit::MakeCoefficients</TT></A>). The errors in
 the coefficients is calculated by inverting the curvature matrix
 of the non-orthogonal functions <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img100.gif"
 ALT="$ f_{lj}$"> [<A
 HREF="TMultiFimFit.html#bevington">1</A>]
 (<A NAME="tex2html18"
 HREF="

 ./TMultiDimFit.html#TMultiDimFit:MakeCoefficientErrors"><TT>TMultiDimFit::MakeCoefficientErrors</TT></A>).

 <P>

 <H2><A NAME="SECTION00035000000000000000"></A>
 <A NAME="sec:considerations"></A><BR>
 Considerations
 </H2>

 <P>
 It's important to realize that the training sample should be
 representive of the problem at hand, in particular along the borders
 of the region of interest. This is because the algorithm presented
 here, is a <I>interpolation</I>, rahter then a <I>extrapolation</I>
 [<A
 HREF="TMultiFimFit.html#wind72">5</A>].

 <P>
 Also, the independent variables <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img101.gif"
 ALT="$ x_{i}$"> need to be linear
 independent, since the procedure will perform poorly if they are not
 [<A
 HREF="TMultiFimFit.html#wind72">5</A>]. One can find an linear transformation from ones
 original variables <IMG
 WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img102.gif"
 ALT="$ \xi_{i}$"> to a set of linear independent variables
 <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img101.gif"
 ALT="$ x_{i}$">, using a <I>Principal Components Analysis</I>
 <A NAME="tex2html19"
 HREF="../TPrincipal.html">(see <TT>TPrincipal</TT>)</A>, and
 then use the transformed variable as input to this class [<A
 HREF="TMultiFimFit.html#wind72">5</A>]
 [<A
 HREF="TMultiFimFit.html#wind81">6</A>].

 <P>
 H. Wind also outlines a method for parameterising a multidimensional
 dependence over a multidimensional set of variables. An example
 of the method from [<A
 HREF="TMultiFimFit.html#wind72">5</A>], is a follows (please refer to
 [<A
 HREF="TMultiFimFit.html#wind72">5</A>] for a full discussion):

 <P>

 <OL>
 <LI>Define <!-- MATH
 $\mathbf{P} = (P_1, \ldots, P_5)$
 -->
 <IMG
 WIDTH="123" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img103.gif"
 ALT="$ \mathbf{P} = (P_1, \ldots, P_5)$"> are the 5 dependent
 quantities that define a track.
 </LI>
 <LI>Compute, for <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img10.gif"
 ALT="$ M$"> different values of <!-- MATH
 $\mathbf{P}$
 -->
 <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img104.gif"
 ALT="$ \mathbf{P}$">, the tracks
 through the magnetic field, and determine the corresponding
 <!-- MATH
 $\mathbf{x} = (x_1, \ldots, x_N)$
 -->
 <IMG
 WIDTH="123" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img105.gif"
 ALT="$ \mathbf{x} = (x_1, \ldots, x_N)$">.
 </LI>
 <LI>Use the simulated observations to determine, with a simple
 approximation, the values of <!-- MATH
 $\mathbf{P}_j$
 -->
 <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img106.gif"
 ALT="$ \mathbf{P}_j$">. We call these values
 <!-- MATH
 $\mathbf{P}^\prime_j, j = 1, \ldots, M$
 -->
 <IMG
 WIDTH="122" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img107.gif"
 ALT="$ \mathbf{P}^\prime_j, j = 1, \ldots, M$">.
 </LI>
 <LI>Determine from <!-- MATH
 $\mathbf{x}$
 -->
 <IMG
 WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img9.gif"
 ALT="$ \mathbf{x}$"> a set of at least five relevant
 coordinates <!-- MATH
 $\mathbf{x}^\prime$
 -->
 <IMG
 WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img108.gif"
 ALT="$ \mathbf{x}^\prime$">, using contrains, <I>or
 alternative:</I>
 </LI>
 <LI>Perform a Principal Component Analysis (using
 <A NAME="tex2html20"
 HREF="../TPrincipal.html"><TT>TPrincipal</TT></A>), and use

 to get a linear transformation
 <!-- MATH
 $\mathbf{x} \rightarrow \mathbf{x}^\prime$
 -->
 <IMG
 WIDTH="53" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img109.gif"
 ALT="$ \mathbf{x} \rightarrow \mathbf{x}^\prime$">, so that
 <!-- MATH
 $\mathbf{x}^\prime$
 -->
 <IMG
 WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img108.gif"
 ALT="$ \mathbf{x}^\prime$"> are constrained and linear independent.
 </LI>
 <LI>Perform a Principal Component Analysis on
 <!-- MATH
 $Q_i = P_i / P^\prime_i\, i = 1, \ldots, 5$
 -->
 <IMG
 WIDTH="210" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img110.gif"
 ALT="$ Q_i = P_i / P^prime_i  i = 1, \ldots, 5$">, to get linear
 indenpendent (among themselves, but not independent of
 <!-- MATH
 $\mathbf{x}$
 -->
 <IMG
 WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img9.gif"
 ALT="$ \mathbf{x}$">) quantities <!-- MATH
 $\mathbf{Q}^\prime$
 -->
 <IMG
 WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img111.gif"
 ALT="$ \mathbf{Q}^\prime$">
 </LI>
 <LI>For each component <!-- MATH
 $Q^\prime_i$
 -->
 <IMG
 WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img112.gif"
 ALT="$ Q^\prime_i$"> make a mutlidimensional fit,
 using <!-- MATH
 $\mathbf{x}^\prime$
 -->
 <IMG
 WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img108.gif"
 ALT="$ \mathbf{x}^\prime$"> as the variables, thus determing a set of
 coefficents <!-- MATH
 $\mathbf{c}_i$
 -->
 <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img113.gif"
 ALT="$ \mathbf{c}_i$">.
 </LI>
 </OL>

 <P>
 To process data, using this parameterisation, do

 <OL>
 <LI>Test wether the observation <!-- MATH
 $\mathbf{x}$
 -->
 <IMG
 WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img9.gif"
 ALT="$ \mathbf{x}$"> within the domain of
 the parameterization, using the result from the Principal Component
 Analysis.
 </LI>
 <LI>Determine <!-- MATH
 $\mathbf{P}^\prime$
 -->
 <IMG
 WIDTH="21" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img114.gif"
 ALT="$ \mathbf{P}^\prime$"> as before.
 </LI>
 <LI>Detetmine <!-- MATH
 $\mathbf{x}^\prime$
 -->
 <IMG
 WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img108.gif"
 ALT="$ \mathbf{x}^\prime$"> as before.
 </LI>
 <LI>Use the result of the fit to determind <!-- MATH
 $\mathbf{Q}^\prime$
 -->
 <IMG
 WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img111.gif"
 ALT="$ \mathbf{Q}^\prime$">.
 </LI>
 <LI>Transform back to <!-- MATH
 $\mathbf{P}$
 -->
 <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img104.gif"
 ALT="$ \mathbf{P}$"> from <!-- MATH
 $\mathbf{Q}^\prime$
 -->
 <IMG
 WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img111.gif"
 ALT="$ \mathbf{Q}^\prime$">, using
 the result from the Principal Component Analysis.
 </LI>
 </OL>

 <P>

 <H2><A NAME="SECTION00036000000000000000"></A>
 <A NAME="sec:testing"></A><BR>
 Testing the parameterization
 </H2>

 <P>
 The class also provides functionality for testing the, over the
 training sample, found parameterization
 (<A NAME="tex2html21"
 HREF="
 ./TMultiDimFit.html#TMultiDimFit:Fit"><TT>TMultiDimFit::Fit</TT></A>). This is done by passing
 the class a test sample of <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img115.gif"
 ALT="$ M_t$"> tuples of the form <!-- MATH
 $(\mathbf{x}_{t,j},
 D_{t,j}, E_{t,j})$
 -->
 <IMG
 WIDTH="111" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img116.gif"
 ALT="$ (\mathbf{x}_{t,j},
 D_{t,j}, E_{t,j})$">, where <!-- MATH
 $\mathbf{x}_{t,j}$
 -->
 <IMG
 WIDTH="29" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img117.gif"
 ALT="$ \mathbf{x}_{t,j}$"> are the independent
 variables, <IMG
 WIDTH="33" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img118.gif"
 ALT="$ D_{t,j}$"> the known, dependent quantity, and <IMG
 WIDTH="31" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img119.gif"
 ALT="$ E_{t,j}$"> is
 the square error in <IMG
 WIDTH="33" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img118.gif"
 ALT="$ D_{t,j}$">
 (<A NAME="tex2html22"
 HREF="

 ./TMultiDimFit.html#TMultiDimFit:AddTestRow"><TT>TMultiDimFit::AddTestRow</TT></A>).

 <P>
 The parameterization is then evaluated at every <!-- MATH
 $\mathbf{x}_t$
 -->
 <IMG
 WIDTH="19" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img120.gif"
 ALT="$ \mathbf{x}_t$"> in the
 test sample, and
 <!-- MATH
 \begin{displaymath}
 S_t \equiv \sum_{j=1}^{M_t} \left(D_{t,j} -
 D_p\left(\mathbf{x}_{t,j}\right)\right)^2
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="194" HEIGHT="66" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img121.gif"
 ALT="$\displaystyle S_t \equiv \sum_{j=1}^{M_t} \left(D_{t,j} -
 D_p\left(\mathbf{x}_{t,j}\right)\right)^2
 $">
 </DIV><P></P>
 is evaluated. The relative error over the test sample
 <!-- MATH
 \begin{displaymath}
 R_t = \frac{S_t}{\sum_{j=1}^{M_t} D_{t,j}^2}
 \end{displaymath}
 -->
 <P></P><DIV ALIGN="CENTER">
 <IMG
 WIDTH="118" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img122.gif"
 ALT="$\displaystyle R_t = \frac{S_t}{\sum_{j=1}^{M_t} D_{t,j}^2}
 $">
 </DIV><P></P>
 should not be to low or high compared to <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="gif/multidimfit_img123.gif"
 ALT="$ R$"> from the training
 sample. Also, multiple correlation coefficient from both samples should
 be fairly close, otherwise one of the samples is not representive of
 the problem. A large difference in the reduced <IMG
 WIDTH="21" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="gif/multidimfit_img124.gif"
 ALT="$ \chi^2$"> over the two
 samples indicate an over fit, and the maximum number of terms in the
 parameterisation should be reduced.

 <P>
 It's possible to use <A NAME="tex2html23"
 HREF="../TMinuit.html"><I>Minuit</I></A>
 [<A
 HREF="TMultiFimFit.html#minuit">4</A>] to further improve the fit, using the test sample.

 <P>
 <DIV ALIGN="RIGHT">
 Christian Holm
 <BR>  November 2000, NBI

 </DIV>

 <P>

 <H2><A NAME="SECTION00040000000000000000">
 Bibliography</A>
 </H2><DL COMPACT><DD><P></P><DT><A NAME="bevington">1</A>
 <DD>
 Philip&nbsp;R. Bevington and D.&nbsp;Keith Robinson.
 <BR><EM>Data Reduction and Error Analysis for the Physical Sciences</EM>.
 <BR>McGraw-Hill, 2 edition, 1992.

 <P></P><DT><A NAME="mudifi">2</A>
 <DD>
 Ren&#233; Brun et&nbsp;al.
 <BR>Mudifi.
 <BR>Long writeup DD/75-23, CERN, 1980.

 <P></P><DT><A NAME="golub">3</A>
 <DD>
 Gene&nbsp;H. Golub and Charles&nbsp;F. van Loan.
 <BR><EM>Matrix Computations</EM>.
 <BR>John Hopkins Univeristy Press, Baltimore, 3 edition, 1996.

 <P></P><DT><A NAME="minuit">4</A>
 <DD>
 F.&nbsp;James.
 <BR>Minuit.
 <BR>Long writeup D506, CERN, 1998.

 <P></P><DT><A NAME="wind72">5</A>
 <DD>
 H.&nbsp;Wind.
 <BR>Function parameterization.
 <BR>In <EM>Proceedings of the 1972 CERN Computing and Data Processing
 School</EM>, volume 72-21 of <EM>Yellow report</EM>. CERN, 1972.

 <P></P><DT><A NAME="wind81">6</A>
 <DD>
 H.&nbsp;Wind.
 <BR>1. principal component analysis, 2. pattern recognition for track
 finding, 3. interpolation and functional representation.
 <BR>Yellow report EP/81-12, CERN, 1981.
 </DL>
 <pre>
 */
//End_Html
//

#include "Riostream.h"
#include "TMultiDimFit.h"
#include "TMath.h"
#include "TH1.h"
#include "TH2.h"
#include "TROOT.h"
#include "TBrowser.h"
#include "TDecompChol.h"

#define RADDEG (180. / TMath::Pi())
#define DEGRAD (TMath::Pi() / 180.)
#define HIST_XORIG     0
#define HIST_DORIG     1
#define HIST_XNORM     2
#define HIST_DSHIF     3
#define HIST_RX        4
#define HIST_RD        5
#define HIST_RTRAI     6
#define HIST_RTEST     7
#define PARAM_MAXSTUDY 1
#define PARAM_SEVERAL  2
#define PARAM_RELERR   3
#define PARAM_MAXTERMS 4


//____________________________________________________________________
static void mdfHelper(int&, double*, double&, double*, int);

//____________________________________________________________________
ClassImp(TMultiDimFit);

//____________________________________________________________________
// Static instance. Used with mdfHelper and TMinuit
TMultiDimFit* TMultiDimFit::fgInstance = 0;


//____________________________________________________________________
TMultiDimFit::TMultiDimFit()
{
   // Empty CTOR. Do not use
   fMeanQuantity           = 0;
   fMaxQuantity            = 0;
   fMinQuantity            = 0;
   fSumSqQuantity          = 0;
   fSumSqAvgQuantity       = 0;

   fNVariables             = 0;
   fSampleSize             = 0;
   fTestSampleSize         = 0;

   fMinAngle               = 1;
   fMaxAngle               = 0;
   fMaxTerms               = 0;
   fMinRelativeError       = 0;
   fMaxPowers              = 0;
   fPowerLimit             = 0;

   fMaxFunctions           = 0;
   fFunctionCodes          = 0;
   fMaxStudy               = 0;
   fMaxFuncNV              = 0;

   fMaxPowersFinal         = 0;
   fPowers                 = 0;
   fPowerIndex             = 0;

   fMaxResidual            = 0;
   fMinResidual            = 0;
   fMaxResidualRow         = 0;
   fMinResidualRow         = 0;
   fSumSqResidual          = 0;

   fNCoefficients          = 0;
   fRMS                    = 0;
   fChi2                   = 0;
   fParameterisationCode   = 0;

   fError                  = 0;
   fTestError              = 0;
   fPrecision              = 0;
   fTestPrecision          = 0;
   fCorrelationCoeff       = 0;
   fTestCorrelationCoeff   = 0;

   fHistograms             = 0;
   fHistogramMask          = 0;
   fBinVarX                = 100;
   fBinVarY                = 100;

   fFitter                 = 0;
   fPolyType               = kMonomials;
   fShowCorrelation        = kFALSE;
   fIsUserFunction         = kFALSE;
   fIsVerbose              = kFALSE;

}


//____________________________________________________________________
TMultiDimFit::TMultiDimFit(Int_t dimension,
                           EMDFPolyType type,
                           Option_t *option)
: TNamed("multidimfit","Multi-dimensional fit object"),
fQuantity(dimension),
fSqError(dimension),
fVariables(dimension*100),
fMeanVariables(dimension),
fMaxVariables(dimension),
fMinVariables(dimension)
{
   // Constructor
   // Second argument is the type of polynomials to use in
   // parameterisation, one of:
   //      TMultiDimFit::kMonomials
   //      TMultiDimFit::kChebyshev
   //      TMultiDimFit::kLegendre
   //
   // Options:
   //   K      Compute (k)correlation matrix
   //   V      Be verbose
   //
   // Default is no options.
   //

   fgInstance = this;

   fMeanQuantity           = 0;
   fMaxQuantity            = 0;
   fMinQuantity            = 0;
   fSumSqQuantity          = 0;
   fSumSqAvgQuantity       = 0;

   fNVariables             = dimension;
   fSampleSize             = 0;
   fTestSampleSize         = 0;

   fMinAngle               = 1;
   fMaxAngle               = 0;
   fMaxTerms               = 0;
   fMinRelativeError       = 0.01;
   fMaxPowers              = new Int_t[dimension];
   fPowerLimit             = 1;

   fMaxFunctions           = 0;
   fFunctionCodes          = 0;
   fMaxStudy               = 0;
   fMaxFuncNV              = 0;

   fMaxPowersFinal         = new Int_t[dimension];
   fPowers                 = 0;
   fPowerIndex             = 0;

   fMaxResidual            = 0;
   fMinResidual            = 0;
   fMaxResidualRow         = 0;
   fMinResidualRow         = 0;
   fSumSqResidual          = 0;

   fNCoefficients          = 0;
   fRMS                    = 0;
   fChi2                   = 0;
   fParameterisationCode   = 0;

   fError                  = 0;
   fTestError              = 0;
   fPrecision              = 0;
   fTestPrecision          = 0;
   fCorrelationCoeff       = 0;
   fTestCorrelationCoeff   = 0;

   fHistograms             = 0;
   fHistogramMask          = 0;
   fBinVarX                = 100;
   fBinVarY                = 100;

   fFitter                 = 0;
   fPolyType               = type;
   fShowCorrelation        = kFALSE;
   fIsUserFunction         = kFALSE;
   fIsVerbose              = kFALSE;
   TString opt             = option;
   opt.ToLower();

   if (opt.Contains("k")) fShowCorrelation = kTRUE;
   if (opt.Contains("v")) fIsVerbose       = kTRUE;
}


//____________________________________________________________________
TMultiDimFit::~TMultiDimFit()
{
   // Destructor
   delete [] fPowers;
   delete [] fMaxPowers;
   delete [] fMaxPowersFinal;
   delete [] fPowerIndex;
   delete [] fFunctionCodes;
   if (fHistograms) fHistograms->Clear("nodelete");
   delete fHistograms;
}


//____________________________________________________________________
void TMultiDimFit::AddRow(const Double_t *x, Double_t D, Double_t E)
{
   // Add a row consisting of fNVariables independent variables, the
   // known, dependent quantity, and optionally, the square error in
   // the dependent quantity, to the training sample to be used for the
   // parameterization.
   // The mean of the variables and quantity is calculated on the fly,
   // as outlined in TPrincipal::AddRow.
   // This sample should be representive of the problem at hand.
   // Please note, that if no error is given Poisson statistics is
   // assumed and the square error is set to the value of dependent
   // quantity.  See also the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   if (!x)
      return;

   if (++fSampleSize == 1) {
      fMeanQuantity  = D;
      fMaxQuantity   = D;
      fMinQuantity   = D;
      fSumSqQuantity = D * D;// G.Q. erratum on August 15th, 2008
   }
   else {
      fMeanQuantity  *= 1 - 1./Double_t(fSampleSize);
      fMeanQuantity  += D / Double_t(fSampleSize);
      fSumSqQuantity += D * D;

      if (D >= fMaxQuantity) fMaxQuantity = D;
      if (D <= fMinQuantity) fMinQuantity = D;
   }


   // If the vector isn't big enough to hold the new data, then
   // expand the vector by half it's size.
   Int_t size = fQuantity.GetNrows();
   if (fSampleSize > size) {
      fQuantity.ResizeTo(size + size/2);
      fSqError.ResizeTo(size + size/2);
   }

   // Store the value
   fQuantity(fSampleSize-1) = D;
   fSqError(fSampleSize-1) = (E == 0 ? D : E);

   // Store data point in internal vector
   // If the vector isn't big enough to hold the new data, then
   // expand the vector by half it's size
   size = fVariables.GetNrows();
   if (fSampleSize * fNVariables > size)
      fVariables.ResizeTo(size + size/2);


   // Increment the data point counter
   Int_t i,j;
   for (i = 0; i < fNVariables; i++) {
      if (fSampleSize == 1) {
         fMeanVariables(i) = x[i];
         fMaxVariables(i)  = x[i];
         fMinVariables(i)  = x[i];
      }
      else {
         fMeanVariables(i) *= 1 - 1./Double_t(fSampleSize);
         fMeanVariables(i) += x[i] / Double_t(fSampleSize);

         // Update the maximum value for this component
         if (x[i] >= fMaxVariables(i)) fMaxVariables(i)  = x[i];

         // Update the minimum value for this component
         if (x[i] <= fMinVariables(i)) fMinVariables(i)  = x[i];

      }

      // Store the data.
      j = (fSampleSize-1) * fNVariables + i;
      fVariables(j) = x[i];
   }
}


//____________________________________________________________________
void TMultiDimFit::AddTestRow(const Double_t *x, Double_t D, Double_t E)
{
   // Add a row consisting of fNVariables independent variables, the
   // known, dependent quantity, and optionally, the square error in
   // the dependent quantity, to the test sample to be used for the
   // test of the parameterization.
   // This sample needn't be representive of the problem at hand.
   // Please note, that if no error is given Poisson statistics is
   // assumed and the square error is set to the value of dependent
   // quantity.  See also the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   if (fTestSampleSize++ == 0) {
      fTestQuantity.ResizeTo(fNVariables);
      fTestSqError.ResizeTo(fNVariables);
      fTestVariables.ResizeTo(fNVariables * 100);
   }

   // If the vector isn't big enough to hold the new data, then
   // expand the vector by half it's size.
   Int_t size = fTestQuantity.GetNrows();
   if (fTestSampleSize > size) {
      fTestQuantity.ResizeTo(size + size/2);
      fTestSqError.ResizeTo(size + size/2);
   }

   // Store the value
   fTestQuantity(fTestSampleSize-1) = D;
   fTestSqError(fTestSampleSize-1) = (E == 0 ? D : E);

   // Store data point in internal vector
   // If the vector isn't big enough to hold the new data, then
   // expand the vector by half it's size
   size = fTestVariables.GetNrows();
   if (fTestSampleSize * fNVariables > size)
      fTestVariables.ResizeTo(size + size/2);


   // Increment the data point counter
   Int_t i,j;
   for (i = 0; i < fNVariables; i++) {
      j = fNVariables * (fTestSampleSize - 1) + i;
      fTestVariables(j) = x[i];

      if (x[i] > fMaxVariables(i))
         Warning("AddTestRow", "variable %d (row: %d) too large: %f > %f",
                 i, fTestSampleSize, x[i], fMaxVariables(i));
      if (x[i] < fMinVariables(i))
         Warning("AddTestRow", "variable %d (row: %d) too small: %f < %f",
                 i, fTestSampleSize, x[i], fMinVariables(i));
   }
}


//____________________________________________________________________
void TMultiDimFit::Browse(TBrowser* b)
{
   // Browse the TMultiDimFit object in the TBrowser.
   if (fHistograms) {
      TIter next(fHistograms);
      TH1* h = 0;
      while ((h = (TH1*)next()))
         b->Add(h,h->GetName());
   }
   if (fVariables.IsValid())
      b->Add(&fVariables, "Variables (Training)");
   if (fQuantity.IsValid())
      b->Add(&fQuantity, "Quantity (Training)");
   if (fSqError.IsValid())
      b->Add(&fSqError, "Error (Training)");
   if (fMeanVariables.IsValid())
      b->Add(&fMeanVariables, "Mean of Variables (Training)");
   if (fMaxVariables.IsValid())
      b->Add(&fMaxVariables, "Mean of Variables (Training)");
   if (fMinVariables.IsValid())
      b->Add(&fMinVariables, "Min of Variables (Training)");
   if (fTestVariables.IsValid())
      b->Add(&fTestVariables, "Variables (Test)");
   if (fTestQuantity.IsValid())
      b->Add(&fTestQuantity, "Quantity (Test)");
   if (fTestSqError.IsValid())
      b->Add(&fTestSqError, "Error (Test)");
   if (fFunctions.IsValid())
      b->Add(&fFunctions, "Functions");
   if(fCoefficients.IsValid())
      b->Add(&fCoefficients,"Coefficients");
   if(fCoefficientsRMS.IsValid())
      b->Add(&fCoefficientsRMS,"Coefficients Errors");
   if (fOrthFunctions.IsValid())
      b->Add(&fOrthFunctions, "Orthogonal Functions");
   if (fOrthFunctionNorms.IsValid())
      b->Add(&fOrthFunctionNorms, "Orthogonal Functions Norms");
   if (fResiduals.IsValid())
      b->Add(&fResiduals, "Residuals");
   if(fOrthCoefficients.IsValid())
      b->Add(&fOrthCoefficients,"Orthogonal Coefficients");
   if (fOrthCurvatureMatrix.IsValid())
      b->Add(&fOrthCurvatureMatrix,"Orthogonal curvature matrix");
   if(fCorrelationMatrix.IsValid())
      b->Add(&fCorrelationMatrix,"Correlation Matrix");
   if (fFitter)
      b->Add(fFitter, fFitter->GetName());
}


//____________________________________________________________________
void TMultiDimFit::Clear(Option_t *option)
{
   // Clear internal structures and variables
   Int_t i, j, n = fNVariables, m = fMaxFunctions;

   // Training sample, dependent quantity
   fQuantity.Zero();
   fSqError.Zero();
   fMeanQuantity                 = 0;
   fMaxQuantity                  = 0;
   fMinQuantity                  = 0;
   fSumSqQuantity                = 0;
   fSumSqAvgQuantity             = 0;

   // Training sample, independent variables
   fVariables.Zero();
   fNVariables                   = 0;
   fSampleSize                   = 0;
   fMeanVariables.Zero();
   fMaxVariables.Zero();
   fMinVariables.Zero();

   // Test sample
   fTestQuantity.Zero();
   fTestSqError.Zero();
   fTestVariables.Zero();
   fTestSampleSize               = 0;

   // Functions
   fFunctions.Zero();
   //for (i = 0; i < fMaxTerms; i++)  fPowerIndex[i]    = 0;
   //for (i = 0; i < fMaxTerms; i++)  fFunctionCodes[i] = 0;
   fMaxFunctions                 = 0;
   fMaxStudy                     = 0;
   fOrthFunctions.Zero();
   fOrthFunctionNorms.Zero();

   // Control parameters
   fMinRelativeError             = 0;
   fMinAngle                     = 0;
   fMaxAngle                     = 0;
   fMaxTerms                     = 0;

   // Powers
   for (i = 0; i < n; i++) {
      fMaxPowers[i]               = 0;
      fMaxPowersFinal[i]          = 0;
      for (j = 0; j < m; j++)
         fPowers[i * n + j]        = 0;
   }
   fPowerLimit                   = 0;

   // Residuals
   fMaxResidual                  = 0;
   fMinResidual                  = 0;
   fMaxResidualRow               = 0;
   fMinResidualRow               = 0;
   fSumSqResidual                = 0;

   // Fit
   fNCoefficients                = 0;
   fOrthCoefficients             = 0;
   fOrthCurvatureMatrix          = 0;
   fRMS                          = 0;
   fCorrelationMatrix.Zero();
   fError                        = 0;
   fTestError                    = 0;
   fPrecision                    = 0;
   fTestPrecision                = 0;

   // Coefficients
   fCoefficients.Zero();
   fCoefficientsRMS.Zero();
   fResiduals.Zero();
   fHistograms->Clear(option);

   // Options
   fPolyType                     = kMonomials;
   fShowCorrelation              = kFALSE;
   fIsUserFunction               = kFALSE;
}


//____________________________________________________________________
Double_t TMultiDimFit::Eval(const Double_t *x, const Double_t* coeff) const
{
   // Evaluate parameterization at point x. Optional argument coeff is
   // a vector of coefficients for the parameterisation, fNCoefficients
   // elements long.
   Double_t returnValue = fMeanQuantity;
   Double_t term        = 0;
   Int_t    i, j;

   for (i = 0; i < fNCoefficients; i++) {
      // Evaluate the ith term in the expansion
      term = (coeff ? coeff[i] : fCoefficients(i));
      for (j = 0; j < fNVariables; j++) {
         // Evaluate the factor (polynomial) in the j-th variable.
         Int_t    p  =  fPowers[fPowerIndex[i] * fNVariables + j];
         Double_t y  =  1 + 2. / (fMaxVariables(j) - fMinVariables(j))
         * (x[j] - fMaxVariables(j));
         term        *= EvalFactor(p,y);
      }
      // Add this term to the final result
      returnValue += term;
   }
   return returnValue;
}


//____________________________________________________________________
Double_t TMultiDimFit::EvalError(const Double_t *x, const Double_t* coeff) const
{
   // Evaluate parameterization error at point x. Optional argument coeff is
   // a vector of coefficients for the parameterisation, fNCoefficients
   // elements long.
   Double_t returnValue = 0;
   Double_t term        = 0;
   Int_t    i, j;

   for (i = 0; i < fNCoefficients; i++) {
      //     std::cout << "Error coef " << i << " -> " << fCoefficientsRMS(i) << std::endl;
   }
   for (i = 0; i < fNCoefficients; i++) {
      // Evaluate the ith term in the expansion
      term = (coeff ? coeff[i] : fCoefficientsRMS(i));
      for (j = 0; j < fNVariables; j++) {
         // Evaluate the factor (polynomial) in the j-th variable.
         Int_t    p  =  fPowers[fPowerIndex[i] * fNVariables + j];
         Double_t y  =  1 + 2. / (fMaxVariables(j) - fMinVariables(j))
         * (x[j] - fMaxVariables(j));
         term        *= EvalFactor(p,y);
         //   std::cout << "i,j " << i << ", " << j << "  "  << p << "  " << y << "  " << EvalFactor(p,y) << "  " << term << std::endl;
      }
      // Add this term to the final result
      returnValue += term*term;
      //      std::cout << " i = " << i << " value = " << returnValue << std::endl;
   }
   returnValue = sqrt(returnValue);
   return returnValue;
}


//____________________________________________________________________
Double_t TMultiDimFit::EvalControl(const Int_t *iv) const
{
   // PRIVATE METHOD:
   // Calculate the control parameter from the passed powers
   Double_t s = 0;
   Double_t epsilon = 1e-6; // a small number
   for (Int_t i = 0; i < fNVariables; i++) {
      if (fMaxPowers[i] != 1)
         s += (epsilon + iv[i] - 1) / (epsilon + fMaxPowers[i] - 1);
   }
   return s;
}

//____________________________________________________________________
Double_t TMultiDimFit::EvalFactor(Int_t p, Double_t x) const
{
   // PRIVATE METHOD:
   // Evaluate function with power p at variable value x
   Int_t    i   = 0;
   Double_t p1  = 1;
   Double_t p2  = 0;
   Double_t p3  = 0;
   Double_t r   = 0;

   switch(p) {
      case 1:
         r = 1;
         break;
      case 2:
         r =  x;
         break;
      default:
         p2 = x;
         for (i = 3; i <= p; i++) {
            p3 = p2 * x;
            if (fPolyType == kLegendre)
               p3 = ((2 * i - 3) * p2 * x - (i - 2) * p1) / (i - 1);
            else if (fPolyType == kChebyshev)
               p3 = 2 * x * p2 - p1;
            p1 = p2;
            p2 = p3;
         }
         r = p3;
   }

   return r;
}


//____________________________________________________________________
void TMultiDimFit::FindParameterization(Option_t *)
{
   // Find the parameterization
   //
   // Options:
   //     None so far
   //
   // For detailed description of what this entails, please refer to the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   MakeNormalized();
   MakeCandidates();
   MakeParameterization();
   MakeCoefficients();
   MakeCoefficientErrors();
   MakeCorrelation();
}

//____________________________________________________________________
void TMultiDimFit::Fit(Option_t *option)
{
   // Try to fit the found parameterisation to the test sample.
   //
   // Options
   //     M     use Minuit to improve coefficients
   //
   // Also, refer to
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   Int_t i, j;
   Double_t*      x    = new Double_t[fNVariables];
   Double_t  sumSqD    = 0;
   Double_t    sumD    = 0;
   Double_t  sumSqR    = 0;
   Double_t    sumR    = 0;

   // Calculate the residuals over the test sample
   for (i = 0; i < fTestSampleSize; i++) {
      for (j = 0; j < fNVariables; j++)
         x[j] = fTestVariables(i * fNVariables + j);
      Double_t res =  fTestQuantity(i) - Eval(x);
      sumD         += fTestQuantity(i);
      sumSqD       += fTestQuantity(i) * fTestQuantity(i);
      sumR         += res;
      sumSqR       += res * res;
      if (TESTBIT(fHistogramMask,HIST_RTEST))
         ((TH1D*)fHistograms->FindObject("res_test"))->Fill(res);
   }
   Double_t dAvg         = sumSqD - (sumD * sumD) / fTestSampleSize;
   Double_t rAvg         = sumSqR - (sumR * sumR) / fTestSampleSize;
   fTestCorrelationCoeff = (dAvg - rAvg) / dAvg;
   fTestError            = sumSqR;
   fTestPrecision        = sumSqR / sumSqD;

   TString opt(option);
   opt.ToLower();

   if (!opt.Contains("m"))
      MakeChi2();

   if (fNCoefficients * 50 > fTestSampleSize)
      Warning("Fit", "test sample is very small");

   if (!opt.Contains("m")) {
      Error("Fit", "invalid option");
      delete [] x;
      return;
   }

   fFitter = TVirtualFitter::Fitter(0,fNCoefficients);
   if (!fFitter) {
      Error("Fit", "Vannot create Fitter");
      delete [] x;
      return;
   }
   fFitter->SetFCN(mdfHelper);

   const Int_t  maxArgs = 16;
   Int_t           args = 1;
   Double_t*   arglist  = new Double_t[maxArgs];
   arglist[0]           = -1;
   fFitter->ExecuteCommand("SET PRINT",arglist,args);

   for (i = 0; i < fNCoefficients; i++) {
      Double_t startVal = fCoefficients(i);
      Double_t startErr = fCoefficientsRMS(i);
      fFitter->SetParameter(i, Form("coeff%02d",i),
                            startVal, startErr, 0, 0);
   }

   // arglist[0]           = 0;
   args                 = 1;
   // fFitter->ExecuteCommand("SET PRINT",arglist,args);
   fFitter->ExecuteCommand("MIGRAD",arglist,args);

   for (i = 0; i < fNCoefficients; i++) {
      Double_t val = 0, err = 0, low = 0, high = 0;
      fFitter->GetParameter(i, Form("coeff%02d",i),
                            val, err, low, high);
      fCoefficients(i)    = val;
      fCoefficientsRMS(i) = err;
   }
   delete [] x;
}

//____________________________________________________________________
TMultiDimFit* TMultiDimFit::Instance()
{
   // Return the static instance.
   return fgInstance;
}

//____________________________________________________________________
void TMultiDimFit::MakeCandidates()
{
   // PRIVATE METHOD:
   // Create list of candidate functions for the parameterisation. See
   // also
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   Int_t i = 0;
   Int_t j = 0;
   Int_t k = 0;

   // The temporary array to store the powers in. We don't need to
   // initialize this array however.
   fMaxFuncNV = fNVariables * fMaxFunctions;
   Int_t *powers = new Int_t[fMaxFuncNV];

   // store of `control variables'
   Double_t* control  = new Double_t[fMaxFunctions];

   // We've better initialize the variables
   Int_t *iv = new Int_t[fNVariables];
   for (i = 0; i < fNVariables; i++)
      iv[i] = 1;

   if (!fIsUserFunction) {

      // Number of funcs selected
      Int_t     numberFunctions = 0;

      // Absolute max number of functions
      Int_t maxNumberFunctions = 1;
      for (i = 0; i < fNVariables; i++)
         maxNumberFunctions *= fMaxPowers[i];

      while (kTRUE) {
         // Get the control value for this function
         Double_t s = EvalControl(iv);

         if (s <= fPowerLimit) {

            // Call over-loadable method Select, as to allow the user to
            // interfere with the selection of functions.
            if (Select(iv)) {
               numberFunctions++;

               // If we've reached the user defined limit of how many
               // functions we can consider, break out of the loop
               if (numberFunctions > fMaxFunctions)
                  break;

               // Store the control value, so we can sort array of powers
               // later on
               control[numberFunctions-1] = Int_t(1.0e+6*s);

               // Store the powers in powers array.
               for (i = 0; i < fNVariables; i++) {
                  j = (numberFunctions - 1) * fNVariables + i;
                  powers[j] = iv[i];
               }
            } // if (Select())
         } // if (s <= fPowerLimit)

         for (i = 0; i < fNVariables; i++)
            if (iv[i] < fMaxPowers[i])
               break;

         // If all variables have reached their maximum power, then we
         // break out of the loop
         if (i == fNVariables) {
            fMaxFunctions = numberFunctions;
            break;
         }

         // Next power in variable i
         if (i < fNVariables) iv[i]++;

         for (j = 0; j < i; j++)
            iv[j] = 1;
      } // while (kTRUE)
   }
   else {
      // In case the user gave an explicit function
      for (i = 0; i < fMaxFunctions; i++) {
         // Copy the powers to working arrays
         for (j = 0; j < fNVariables; j++) {
            powers[i * fNVariables + j] = fPowers[i * fNVariables + j];
            iv[j]                 = fPowers[i * fNVariables + j];
         }

         control[i] = Int_t(1.0e+6*EvalControl(iv));
      }
   }

   // Now we need to sort the powers according to least `control
   // variable'
   Int_t *order = new Int_t[fMaxFunctions];
   for (i = 0; i < fMaxFunctions; i++)
      order[i] = i;
   fMaxFuncNV = fMaxFunctions * fNVariables;
   fPowers = new Int_t[fMaxFuncNV];

   for (i = 0; i < fMaxFunctions; i++) {
      Double_t x = control[i];
      Int_t    l = order[i];
      k = i;

      for (j = i; j < fMaxFunctions; j++) {
         if (control[j] <= x) {
            x = control[j];
            l = order[j];
            k = j;
         }
      }

      if (k != i) {
         control[k] = control[i];
         control[i] = x;
         order[k]   = order[i];
         order[i]   = l;
      }
   }

   for (i = 0; i < fMaxFunctions; i++)
      for (j = 0; j < fNVariables; j++)
         fPowers[i * fNVariables + j] = powers[order[i] * fNVariables + j];

   delete [] control;
   delete [] powers;
   delete [] order;
   delete [] iv;
}


//____________________________________________________________________
Double_t TMultiDimFit::MakeChi2(const Double_t* coeff)
{
   // Calculate Chi square over either the test sample. The optional
   // argument coeff is a vector of coefficients to use in the
   // evaluation of the parameterisation. If coeff == 0, then the found
   // coefficients is used.
   // Used my MINUIT for fit (see TMultDimFit::Fit)
   fChi2 = 0;
   Int_t i, j;
   Double_t* x = new Double_t[fNVariables];
   for (i = 0; i < fTestSampleSize; i++) {
      // Get the stored point
      for (j = 0; j < fNVariables; j++)
         x[j] = fTestVariables(i * fNVariables + j);

      // Evaluate function. Scale to shifted values
      Double_t f = Eval(x,coeff);

      // Calculate contribution to Chic square
      fChi2 += 1. / TMath::Max(fTestSqError(i),1e-20)
      * (fTestQuantity(i) - f) * (fTestQuantity(i) - f);
   }

   // Clean up
   delete [] x;

   return fChi2;
}


//____________________________________________________________________
void TMultiDimFit::MakeCode(const char* filename, Option_t *option)
{
   // Generate the file <filename> with .C appended if argument doesn't
   // end in .cxx or .C. The contains the implementation of the
   // function:
   //
   //   Double_t <funcname>(Double_t *x)
   //
   // which does the same as TMultiDimFit::Eval. Please refer to this
   // method.
   //
   // Further, the static variables:
   //
   //     Int_t    gNVariables
   //     Int_t    gNCoefficients
   //     Double_t gDMean
   //     Double_t gXMean[]
   //     Double_t gXMin[]
   //     Double_t gXMax[]
   //     Double_t gCoefficient[]
   //     Int_t    gPower[]
   //
   // are initialized. The only ROOT header file needed is Rtypes.h
   //
   // See TMultiDimFit::MakeRealCode for a list of options


   TString outName(filename);
   if (!outName.EndsWith(".C") && !outName.EndsWith(".cxx"))
      outName += ".C";

   MakeRealCode(outName.Data(),"",option);
}



//____________________________________________________________________
void TMultiDimFit::MakeCoefficientErrors()
{
   // PRIVATE METHOD:
   // Compute the errors on the coefficients. For this to be done, the
   // curvature matrix of the non-orthogonal functions, is computed.
   Int_t    i = 0;
   Int_t    j = 0;
   Int_t    k = 0;
   TVectorD iF(fSampleSize);
   TVectorD jF(fSampleSize);
   fCoefficientsRMS.ResizeTo(fNCoefficients);

   TMatrixDSym curvatureMatrix(fNCoefficients);

   // Build the curvature matrix
   for (i = 0; i < fNCoefficients; i++) {
      iF = TMatrixDRow(fFunctions,i);
      for (j = 0; j <= i; j++) {
         jF = TMatrixDRow(fFunctions,j);
         for (k = 0; k < fSampleSize; k++)
            curvatureMatrix(i,j) +=
            1 / TMath::Max(fSqError(k), 1e-20) * iF(k) * jF(k);
         curvatureMatrix(j,i) = curvatureMatrix(i,j);
      }
   }

   // Calculate Chi Square
   fChi2 = 0;
   for (i = 0; i < fSampleSize; i++) {
      Double_t f = 0;
      for (j = 0; j < fNCoefficients; j++)
         f += fCoefficients(j) * fFunctions(j,i);
      fChi2 += 1. / TMath::Max(fSqError(i),1e-20) * (fQuantity(i) - f)
      * (fQuantity(i) - f);
   }

   // Invert the curvature matrix
   const TVectorD diag = TMatrixDDiag_const(curvatureMatrix);
   curvatureMatrix.NormByDiag(diag);

   TDecompChol chol(curvatureMatrix);
   if (!chol.Decompose())
      Error("MakeCoefficientErrors", "curvature matrix is singular");
   chol.Invert(curvatureMatrix);

   curvatureMatrix.NormByDiag(diag);

   for (i = 0; i < fNCoefficients; i++)
      fCoefficientsRMS(i) = TMath::Sqrt(curvatureMatrix(i,i));
}


//____________________________________________________________________
void TMultiDimFit::MakeCoefficients()
{
   // PRIVATE METHOD:
   // Invert the model matrix B, and compute final coefficients. For a
   // more thorough discussion of what this means, please refer to the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   //
   // First we invert the lower triangle matrix fOrthCurvatureMatrix
   // and store the inverted matrix in the upper triangle.

   Int_t i = 0, j = 0;
   Int_t col = 0, row = 0;

   // Invert the B matrix
   for (col = 1; col < fNCoefficients; col++) {
      for (row = col - 1; row > -1; row--) {
         fOrthCurvatureMatrix(row,col) = 0;
         for (i = row; i <= col ; i++)
            fOrthCurvatureMatrix(row,col) -=
            fOrthCurvatureMatrix(i,row)
            * fOrthCurvatureMatrix(i,col);
      }
   }

   // Compute the final coefficients
   fCoefficients.ResizeTo(fNCoefficients);

   for (i = 0; i < fNCoefficients; i++) {
      Double_t sum = 0;
      for (j = i; j < fNCoefficients; j++)
         sum += fOrthCurvatureMatrix(i,j) * fOrthCoefficients(j);
      fCoefficients(i) = sum;
   }

   // Compute the final residuals
   fResiduals.ResizeTo(fSampleSize);
   for (i = 0; i < fSampleSize; i++)
      fResiduals(i) = fQuantity(i);

   for (i = 0; i < fNCoefficients; i++)
      for (j = 0; j < fSampleSize; j++)
         fResiduals(j) -= fCoefficients(i) * fFunctions(i,j);

   // Compute the max and minimum, and squared sum of the evaluated
   // residuals
   fMinResidual = 10e10;
   fMaxResidual = -10e10;
   Double_t sqRes  = 0;
   for (i = 0; i < fSampleSize; i++){
      sqRes += fResiduals(i) * fResiduals(i);
      if (fResiduals(i) <= fMinResidual) {
         fMinResidual     = fResiduals(i);
         fMinResidualRow  = i;
      }
      if (fResiduals(i) >= fMaxResidual) {
         fMaxResidual     = fResiduals(i);
         fMaxResidualRow  = i;
      }
   }

   fCorrelationCoeff = fSumSqResidual / fSumSqAvgQuantity;
   fPrecision        = TMath::Sqrt(sqRes / fSumSqQuantity);

   // If we use histograms, fill some more
   if (TESTBIT(fHistogramMask,HIST_RD) ||
       TESTBIT(fHistogramMask,HIST_RTRAI) ||
       TESTBIT(fHistogramMask,HIST_RX)) {
      for (i = 0; i < fSampleSize; i++) {
         if (TESTBIT(fHistogramMask,HIST_RD))
            ((TH2D*)fHistograms->FindObject("res_d"))->Fill(fQuantity(i),
                                                            fResiduals(i));
         if (TESTBIT(fHistogramMask,HIST_RTRAI))
            ((TH1D*)fHistograms->FindObject("res_train"))->Fill(fResiduals(i));

         if (TESTBIT(fHistogramMask,HIST_RX))
            for (j = 0; j < fNVariables; j++)
               ((TH2D*)fHistograms->FindObject(Form("res_x_%d",j)))
               ->Fill(fVariables(i * fNVariables + j),fResiduals(i));
      }
   } // If histograms

}


//____________________________________________________________________
void TMultiDimFit::MakeCorrelation()
{
   // PRIVATE METHOD:
   // Compute the correlation matrix
   if (!fShowCorrelation)
      return;

   fCorrelationMatrix.ResizeTo(fNVariables,fNVariables+1);

   Double_t d2      = 0;
   Double_t ddotXi  = 0; // G.Q. needs to be reinitialized in the loop over i fNVariables
   Double_t xiNorm  = 0; // G.Q. needs to be reinitialized in the loop over i fNVariables
   Double_t xidotXj = 0; // G.Q. needs to be reinitialized in the loop over j fNVariables
   Double_t xjNorm  = 0; // G.Q. needs to be reinitialized in the loop over j fNVariables

   Int_t i, j, k, l, m;  // G.Q. added m variable
   for (i = 0; i < fSampleSize; i++)
      d2 += fQuantity(i) * fQuantity(i);

   for (i = 0; i < fNVariables; i++) {
      ddotXi = 0.; // G.Q. reinitialisation
      xiNorm = 0.; // G.Q. reinitialisation
      for (j = 0; j< fSampleSize; j++) {
         // Index of sample j of variable i
         k =  j * fNVariables + i;
         ddotXi += fQuantity(j) * (fVariables(k) - fMeanVariables(i));
         xiNorm += (fVariables(k) - fMeanVariables(i))
         * (fVariables(k) - fMeanVariables(i));
      }
      fCorrelationMatrix(i,0) = ddotXi / TMath::Sqrt(d2 * xiNorm);

      for (j = 0; j < i; j++) {
         xidotXj = 0.; // G.Q. reinitialisation
         xjNorm = 0.; // G.Q. reinitialisation
         for (k = 0; k < fSampleSize; k++) {
            // Index of sample j of variable i
            // l =  j * fNVariables + k;  // G.Q.
            l =  k * fNVariables + j; // G.Q.
            m =  k * fNVariables + i; // G.Q.
                                      // G.Q.        xidotXj += (fVariables(i) - fMeanVariables(i))
                                      // G.Q.          * (fVariables(l) - fMeanVariables(j));
            xidotXj += (fVariables(m) - fMeanVariables(i))
            * (fVariables(l) - fMeanVariables(j));  // G.Q. modified index for Xi
            xjNorm  += (fVariables(l) - fMeanVariables(j))
            * (fVariables(l) - fMeanVariables(j));
         }
         //fCorrelationMatrix(i+1,j) = xidotXj / TMath::Sqrt(xiNorm * xjNorm);
         fCorrelationMatrix(i,j+1) = xidotXj / TMath::Sqrt(xiNorm * xjNorm);
      }
   }
}



//____________________________________________________________________
Double_t TMultiDimFit::MakeGramSchmidt(Int_t function)
{
   // PRIVATE METHOD:
   // Make Gram-Schmidt orthogonalisation. The class description gives
   // a thorough account of this algorithm, as well as
   // references. Please refer to the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html


   // calculate w_i, that is, evaluate the current function at data
   // point i
   Double_t f2                        = 0;
   fOrthCoefficients(fNCoefficients)      = 0;
   fOrthFunctionNorms(fNCoefficients)  = 0;
   Int_t j        = 0;
   Int_t k        = 0;

   for (j = 0; j < fSampleSize; j++) {
      fFunctions(fNCoefficients, j) = 1;
      fOrthFunctions(fNCoefficients, j) = 0;
      // First, however, we need to calculate f_fNCoefficients
      for (k = 0; k < fNVariables; k++) {
         Int_t    p   =  fPowers[function * fNVariables + k];
         Double_t x   =  fVariables(j * fNVariables + k);
         fFunctions(fNCoefficients, j) *= EvalFactor(p,x);
      }

      // Calculate f dot f in f2
      f2 += fFunctions(fNCoefficients,j) *  fFunctions(fNCoefficients,j);
      // Assign to w_fNCoefficients f_fNCoefficients
      fOrthFunctions(fNCoefficients, j) = fFunctions(fNCoefficients, j);
   }

   // the first column of w is equal to f
   for (j = 0; j < fNCoefficients; j++) {
      Double_t fdw = 0;
      // Calculate (f_fNCoefficients dot w_j) / w_j^2
      for (k = 0; k < fSampleSize; k++) {
         fdw += fFunctions(fNCoefficients, k) * fOrthFunctions(j,k)
         / fOrthFunctionNorms(j);
      }

      fOrthCurvatureMatrix(fNCoefficients,j) = fdw;
      // and subtract it from the current value of w_ij
      for (k = 0; k < fSampleSize; k++)
         fOrthFunctions(fNCoefficients,k) -= fdw * fOrthFunctions(j,k);
   }

   for (j = 0; j < fSampleSize; j++) {
      // calculate squared length of w_fNCoefficients
      fOrthFunctionNorms(fNCoefficients) +=
      fOrthFunctions(fNCoefficients,j)
      * fOrthFunctions(fNCoefficients,j);

      // calculate D dot w_fNCoefficients in A
      fOrthCoefficients(fNCoefficients) += fQuantity(j)
      * fOrthFunctions(fNCoefficients, j);
   }

   // First test, but only if didn't user specify
   if (!fIsUserFunction)
      if (TMath::Sqrt(fOrthFunctionNorms(fNCoefficients) / (f2 + 1e-10))
          < TMath::Sin(fMinAngle*DEGRAD))
         return 0;

   // The result found by this code for the first residual is always
   // much less then the one found be MUDIFI. That's because it's
   // supposed to be. The cause is the improved precision of Double_t
   // over DOUBLE PRECISION!
   fOrthCurvatureMatrix(fNCoefficients,fNCoefficients) = 1;
   Double_t b = fOrthCoefficients(fNCoefficients);
   fOrthCoefficients(fNCoefficients) /= fOrthFunctionNorms(fNCoefficients);

   // Calculate the residual from including this fNCoefficients.
   Double_t dResidur = fOrthCoefficients(fNCoefficients) * b;

   return dResidur;
}


//____________________________________________________________________
void TMultiDimFit::MakeHistograms(Option_t *option)
{
   // Make histograms of the result of the analysis. This message
   // should be sent after having read all data points, but before
   // finding the parameterization
   //
   // Options:
   //     A         All the below
   //     X         Original independent variables
   //     D         Original dependent variables
   //     N         Normalised independent variables
   //     S         Shifted dependent variables
   //     R1        Residuals versus normalised independent variables
   //     R2        Residuals versus dependent variable
   //     R3        Residuals computed on training sample
   //     R4        Residuals computed on test sample
   //
   // For a description of these quantities, refer to
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   TString opt(option);
   opt.ToLower();

   if (opt.Length() < 1)
      return;

   if (!fHistograms)
      fHistograms = new TList;

   // Counter variable
   Int_t i = 0;

   // Histogram of original variables
   if (opt.Contains("x") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_XORIG);
      for (i = 0; i < fNVariables; i++)
         if (!fHistograms->FindObject(Form("x_%d_orig",i)))
            fHistograms->Add(new TH1D(Form("x_%d_orig",i),
                                      Form("Original variable # %d",i),
                                      fBinVarX, fMinVariables(i),
                                      fMaxVariables(i)));
   }

   // Histogram of original dependent variable
   if (opt.Contains("d") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_DORIG);
      if (!fHistograms->FindObject("d_orig"))
         fHistograms->Add(new TH1D("d_orig", "Original Quantity",
                                   fBinVarX, fMinQuantity, fMaxQuantity));
   }

   // Histograms of normalized variables
   if (opt.Contains("n") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_XNORM);
      for (i = 0; i < fNVariables; i++)
         if (!fHistograms->FindObject(Form("x_%d_norm",i)))
            fHistograms->Add(new TH1D(Form("x_%d_norm",i),
                                      Form("Normalized variable # %d",i),
                                      fBinVarX, -1,1));
   }

   // Histogram of shifted dependent variable
   if (opt.Contains("s") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_DSHIF);
      if (!fHistograms->FindObject("d_shifted"))
         fHistograms->Add(new TH1D("d_shifted", "Shifted Quantity",
                                   fBinVarX, fMinQuantity - fMeanQuantity,
                                   fMaxQuantity - fMeanQuantity));
   }

   // Residual from training sample versus independent variables
   if (opt.Contains("r1") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_RX);
      for (i = 0; i < fNVariables; i++)
         if (!fHistograms->FindObject(Form("res_x_%d",i)))
            fHistograms->Add(new TH2D(Form("res_x_%d",i),
                                      Form("Computed residual versus x_%d", i),
                                      fBinVarX, -1,    1,
                                      fBinVarY,
                                      fMinQuantity - fMeanQuantity,
                                      fMaxQuantity - fMeanQuantity));
   }

   // Residual from training sample versus. dependent variable
   if (opt.Contains("r2") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_RD);
      if (!fHistograms->FindObject("res_d"))
         fHistograms->Add(new TH2D("res_d",
                                   "Computed residuals vs Quantity",
                                   fBinVarX,
                                   fMinQuantity - fMeanQuantity,
                                   fMaxQuantity - fMeanQuantity,
                                   fBinVarY,
                                   fMinQuantity - fMeanQuantity,
                                   fMaxQuantity - fMeanQuantity));
   }

   // Residual from training sample
   if (opt.Contains("r3") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_RTRAI);
      if (!fHistograms->FindObject("res_train"))
         fHistograms->Add(new TH1D("res_train",
                                   "Computed residuals over training sample",
                                   fBinVarX, fMinQuantity - fMeanQuantity,
                                   fMaxQuantity - fMeanQuantity));

   }
   if (opt.Contains("r4") || opt.Contains("a")) {
      SETBIT(fHistogramMask,HIST_RTEST);
      if (!fHistograms->FindObject("res_test"))
         fHistograms->Add(new TH1D("res_test",
                                   "Distribution of residuals from test",
                                   fBinVarX,fMinQuantity - fMeanQuantity,
                                   fMaxQuantity - fMeanQuantity));
   }
}


//____________________________________________________________________
void TMultiDimFit::MakeMethod(const Char_t* classname, Option_t* option)
{
   // Generate the file <classname>MDF.cxx which contains the
   // implementation of the method:
   //
   //   Double_t <classname>::MDF(Double_t *x)
   //
   // which does the same as  TMultiDimFit::Eval. Please refer to this
   // method.
   //
   // Further, the public static members:
   //
   //   Int_t    <classname>::fgNVariables
   //   Int_t    <classname>::fgNCoefficients
   //   Double_t <classname>::fgDMean
   //   Double_t <classname>::fgXMean[]       //[fgNVariables]
   //   Double_t <classname>::fgXMin[]        //[fgNVariables]
   //   Double_t <classname>::fgXMax[]        //[fgNVariables]
   //   Double_t <classname>::fgCoefficient[] //[fgNCoeffficents]
   //   Int_t    <classname>::fgPower[]       //[fgNCoeffficents*fgNVariables]
   //
   // are initialized, and assumed to exist. The class declaration is
   // assumed to be in <classname>.h and assumed to be provided by the
   // user.
   //
   // See TMultiDimFit::MakeRealCode for a list of options
   //
   // The minimal class definition is:
   //
   //   class <classname> {
   //   public:
   //     Int_t    <classname>::fgNVariables;     // Number of variables
   //     Int_t    <classname>::fgNCoefficients;  // Number of terms
   //     Double_t <classname>::fgDMean;          // Mean from training sample
   //     Double_t <classname>::fgXMean[];        // Mean from training sample
   //     Double_t <classname>::fgXMin[];         // Min from training sample
   //     Double_t <classname>::fgXMax[];         // Max from training sample
   //     Double_t <classname>::fgCoefficient[];  // Coefficients
   //     Int_t    <classname>::fgPower[];        // Function powers
   //
   //     Double_t Eval(Double_t *x);
   //   };
   //
   // Whether the method <classname>::Eval should be static or not, is
   // up to the user.

   MakeRealCode(Form("%sMDF.cxx", classname), classname, option);
}



//____________________________________________________________________
void TMultiDimFit::MakeNormalized()
{
   // PRIVATE METHOD:
   // Normalize data to the interval [-1;1]. This is needed for the
   // classes method to work.

   Int_t i = 0;
   Int_t j = 0;
   Int_t k = 0;

   for (i = 0; i < fSampleSize; i++) {
      if (TESTBIT(fHistogramMask,HIST_DORIG))
         ((TH1D*)fHistograms->FindObject("d_orig"))->Fill(fQuantity(i));

      fQuantity(i) -= fMeanQuantity;
      fSumSqAvgQuantity  += fQuantity(i) * fQuantity(i);

      if (TESTBIT(fHistogramMask,HIST_DSHIF))
         ((TH1D*)fHistograms->FindObject("d_shifted"))->Fill(fQuantity(i));

      for (j = 0; j < fNVariables; j++) {
         Double_t range = 1. / (fMaxVariables(j) - fMinVariables(j));
         k              = i * fNVariables + j;

         // Fill histograms of original independent variables
         if (TESTBIT(fHistogramMask,HIST_XORIG))
            ((TH1D*)fHistograms->FindObject(Form("x_%d_orig",j)))
            ->Fill(fVariables(k));

         // Normalise independent variables
         fVariables(k) = 1 + 2 * range * (fVariables(k) - fMaxVariables(j));

         // Fill histograms of normalised independent variables
         if (TESTBIT(fHistogramMask,HIST_XNORM))
            ((TH1D*)fHistograms->FindObject(Form("x_%d_norm",j)))
            ->Fill(fVariables(k));

      }
   }
   // Shift min and max of dependent variable
   fMaxQuantity -= fMeanQuantity;
   fMinQuantity -= fMeanQuantity;

   // Shift mean of independent variables
   for (i = 0; i < fNVariables; i++) {
      Double_t range = 1. / (fMaxVariables(i) - fMinVariables(i));
      fMeanVariables(i) = 1 + 2 * range * (fMeanVariables(i)
                                           - fMaxVariables(i));
   }
}


//____________________________________________________________________
void TMultiDimFit::MakeParameterization()
{
   // PRIVATE METHOD:
   // Find the parameterization over the training sample. A full account
   // of the algorithm is given in the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html

   Int_t     i              = -1;
   Int_t     j              = 0;
   Int_t     k              = 0;
   Int_t     maxPass        = 3;
   Int_t     studied        = 0;
   Double_t  squareResidual = fSumSqAvgQuantity;
   fNCoefficients            = 0;
   fSumSqResidual           = fSumSqAvgQuantity;
   fFunctions.ResizeTo(fMaxTerms,fSampleSize);
   fOrthFunctions.ResizeTo(fMaxTerms,fSampleSize);
   fOrthFunctionNorms.ResizeTo(fMaxTerms);
   fOrthCoefficients.ResizeTo(fMaxTerms);
   fOrthCurvatureMatrix.ResizeTo(fMaxTerms,fMaxTerms);
   fFunctions = 1;

   fFunctionCodes = new Int_t[fMaxFunctions];
   fPowerIndex    = new Int_t[fMaxTerms];
   Int_t l;
   for (l=0;l<fMaxFunctions;l++) fFunctionCodes[l] = 0;
   for (l=0;l<fMaxTerms;l++)     fPowerIndex[l]    = 0;

   if (fMaxAngle != 0)  maxPass = 100;
   if (fIsUserFunction) maxPass = 1;

   // Loop over the number of functions we want to study.
   // increment inspection counter
   while(kTRUE) {

      // Reach user defined limit of studies
      if (studied++ >= fMaxStudy) {
         fParameterisationCode = PARAM_MAXSTUDY;
         break;
      }

      // Considered all functions several times
      if (k >= maxPass) {
         fParameterisationCode = PARAM_SEVERAL;
         break;
      }

      // increment function counter
      i++;

      // If we've reached the end of the functions, restart pass
      if (i == fMaxFunctions) {
         if (fMaxAngle != 0)
            fMaxAngle += (90 - fMaxAngle) / 2;
         i = 0;
         studied--;
         k++;
         continue;
      }
      if (studied == 1)
         fFunctionCodes[i] = 0;
      else if (fFunctionCodes[i] >= 2)
         continue;

      // Print a happy message
      if (fIsVerbose && studied == 1)
         std::cout << "Coeff   SumSqRes    Contrib   Angle      QM   Func"
         << "     Value        W^2  Powers" << std::endl;

      // Make the Gram-Schmidt
      Double_t dResidur = MakeGramSchmidt(i);

      if (dResidur == 0) {
         // This function is no good!
         // First test is in MakeGramSchmidt
         fFunctionCodes[i] = 1;
         continue;
      }

      // If user specified function, assume they know what they are doing
      if (!fIsUserFunction) {
         // Flag this function as considered
         fFunctionCodes[i] = 2;

         // Test if this function contributes to the fit
         if (!TestFunction(squareResidual, dResidur)) {
            fFunctionCodes[i] = 1;
            continue;
         }
      }

      // If we get to here, the function currently considered is
      // fNCoefficients, so we increment the counter
      // Flag this function as OK, and store and the number in the
      // index.
      fFunctionCodes[i]          = 3;
      fPowerIndex[fNCoefficients] = i;
      fNCoefficients++;

      // We add the current contribution to the sum of square of
      // residuals;
      squareResidual -= dResidur;


      // Calculate control parameter from this function
      for (j = 0; j < fNVariables; j++) {
         if (fNCoefficients == 1
             || fMaxPowersFinal[j] <= fPowers[i * fNVariables + j] - 1)
            fMaxPowersFinal[j] = fPowers[i * fNVariables + j] - 1;
      }
      Double_t s = EvalControl(&fPowers[i * fNVariables]);

      // Print the statistics about this function
      if (fIsVerbose) {
         std::cout << std::setw(5)  << fNCoefficients << " "
         << std::setw(10) << std::setprecision(4) << squareResidual << " "
         << std::setw(10) << std::setprecision(4) << dResidur << " "
         << std::setw(7)  << std::setprecision(3) << fMaxAngle << " "
         << std::setw(7)  << std::setprecision(3) << s << " "
         << std::setw(5)  << i << " "
         << std::setw(10) << std::setprecision(4)
         << fOrthCoefficients(fNCoefficients-1) << " "
         << std::setw(10) << std::setprecision(4)
         << fOrthFunctionNorms(fNCoefficients-1) << " "
         << std::flush;
         for (j = 0; j < fNVariables; j++)
            std::cout << " " << fPowers[i * fNVariables + j] - 1 << std::flush;
         std::cout << std::endl;
      }

      if (fNCoefficients >= fMaxTerms /* && fIsVerbose */) {
         fParameterisationCode = PARAM_MAXTERMS;
         break;
      }

      Double_t err  = TMath::Sqrt(TMath::Max(1e-20,squareResidual) /
                                  fSumSqAvgQuantity);
      if (err < fMinRelativeError) {
         fParameterisationCode = PARAM_RELERR;
         break;
      }

   }

   fError          = TMath::Max(1e-20,squareResidual);
   fSumSqResidual -= fError;
   fRMS = TMath::Sqrt(fError / fSampleSize);
}


//____________________________________________________________________
void TMultiDimFit::MakeRealCode(const char *filename,
                                const char *classname,
                                Option_t *)
{
   // PRIVATE METHOD:
   // This is the method that actually generates the code for the
   // evaluation the parameterization on some point.
   // It's called by TMultiDimFit::MakeCode and TMultiDimFit::MakeMethod.
   //
   // The options are: NONE so far
   Int_t i, j;

   Bool_t  isMethod     = (classname[0] == '\0' ? kFALSE : kTRUE);
   const char *prefix   = (isMethod ? Form("%s::", classname) : "");
   const char *cv_qual  = (isMethod ? "" : "static ");

   std::ofstream outFile(filename,std::ios::out|std::ios::trunc);
   if (!outFile) {
      Error("MakeRealCode","couldn't open output file '%s'",filename);
      return;
   }

   if (fIsVerbose)
      std::cout << "Writing on file \"" << filename << "\" ... " << std::flush;
   //
   // Write header of file
   //
   // Emacs mode line ;-)
   outFile << "// -*- mode: c++ -*-" << std::endl;
   // Info about creator
   outFile << "// " << std::endl
   << "// File " << filename
   << " generated by TMultiDimFit::MakeRealCode" << std::endl;
   // Time stamp
   TDatime date;
   outFile << "// on " << date.AsString() << std::endl;
   // ROOT version info
   outFile << "// ROOT version " << gROOT->GetVersion()
   << std::endl << "//" << std::endl;
   // General information on the code
   outFile << "// This file contains the function " << std::endl
   << "//" << std::endl
   << "//    double  " << prefix << "MDF(double *x); " << std::endl
   << "//" << std::endl
   << "// For evaluating the parameterization obtained" << std::endl
   << "// from TMultiDimFit and the point x" << std::endl
   << "// " << std::endl
   << "// See TMultiDimFit class documentation for more "
   << "information " << std::endl << "// " << std::endl;
   // Header files
   if (isMethod)
      // If these are methods, we need the class header
      outFile << "#include \"" << classname << ".h\"" << std::endl;

   //
   // Now for the data
   //
   outFile << "//" << std::endl
   << "// Static data variables"  << std::endl
   << "//" << std::endl;
   outFile << cv_qual << "int    " << prefix << "gNVariables    = "
   << fNVariables << ";" << std::endl;
   outFile << cv_qual << "int    " << prefix << "gNCoefficients = "
   << fNCoefficients << ";" << std::endl;
   outFile << cv_qual << "double " << prefix << "gDMean         = "
   << fMeanQuantity << ";" << std::endl;

   // Assignment to mean vector.
   outFile << "// Assignment to mean vector." << std::endl;
   outFile << cv_qual << "double " << prefix
   << "gXMean[] = {" << std::endl;
   for (i = 0; i < fNVariables; i++)
      outFile << (i != 0 ? ", " : "  ") << fMeanVariables(i) << std::flush;
   outFile << " };" << std::endl << std::endl;

   // Assignment to minimum vector.
   outFile << "// Assignment to minimum vector." << std::endl;
   outFile << cv_qual << "double " << prefix
   << "gXMin[] = {" << std::endl;
   for (i = 0; i < fNVariables; i++)
      outFile << (i != 0 ? ", " : "  ") << fMinVariables(i) << std::flush;
   outFile << " };" << std::endl << std::endl;

   // Assignment to maximum vector.
   outFile << "// Assignment to maximum vector." << std::endl;
   outFile << cv_qual << "double " << prefix
   << "gXMax[] = {" << std::endl;
   for (i = 0; i < fNVariables; i++)
      outFile << (i != 0 ? ", " : "  ") << fMaxVariables(i) << std::flush;
   outFile << " };" << std::endl << std::endl;

   // Assignment to coefficients vector.
   outFile << "// Assignment to coefficients vector." << std::endl;
   outFile << cv_qual << "double " << prefix
   << "gCoefficient[] = {" << std::flush;
   for (i = 0; i < fNCoefficients; i++)
      outFile << (i != 0 ? "," : "") << std::endl
      << "  " << fCoefficients(i) << std::flush;
   outFile << std::endl << " };" << std::endl << std::endl;

   // Assignment to error coefficients vector.
   outFile << "// Assignment to error coefficients vector." << std::endl;
   outFile << cv_qual << "double " << prefix
   << "gCoefficientRMS[] = {" << std::flush;
   for (i = 0; i < fNCoefficients; i++)
      outFile << (i != 0 ? "," : "") << std::endl
      << "  " << fCoefficientsRMS(i) << std::flush;
   outFile << std::endl << " };" << std::endl << std::endl;

   // Assignment to powers vector.
   outFile << "// Assignment to powers vector." << std::endl
   << "// The powers are stored row-wise, that is" << std::endl
   << "//  p_ij = " << prefix
   << "gPower[i * NVariables + j];" << std::endl;
   outFile << cv_qual << "int    " << prefix
   << "gPower[] = {" << std::flush;
   for (i = 0; i < fNCoefficients; i++) {
      for (j = 0; j < fNVariables; j++) {
         if (j != 0) outFile << std::flush << "  ";
         else        outFile << std::endl << "  ";
         outFile << fPowers[fPowerIndex[i] * fNVariables + j]
         << (i == fNCoefficients - 1 && j == fNVariables - 1 ? "" : ",")
         << std::flush;
      }
   }
   outFile << std::endl << "};" << std::endl << std::endl;


   //
   // Finally we reach the function itself
   //
   outFile << "// " << std::endl
   << "// The "
   << (isMethod ? "method " : "function ")
   << "  double " << prefix
   << "MDF(double *x)"
   << std::endl << "// " << std::endl;
   outFile << "double " << prefix
   << "MDF(double *x) {" << std::endl
   << "  double returnValue = " << prefix << "gDMean;" << std::endl
   << "  int    i = 0, j = 0, k = 0;" << std::endl
   << "  for (i = 0; i < " << prefix << "gNCoefficients ; i++) {"
   << std::endl
   << "    // Evaluate the ith term in the expansion" << std::endl
   << "    double term = " << prefix << "gCoefficient[i];"
   << std::endl
   << "    for (j = 0; j < " << prefix << "gNVariables; j++) {"
   << std::endl
   << "      // Evaluate the polynomial in the jth variable." << std::endl
   << "      int power = "<< prefix << "gPower["
   << prefix << "gNVariables * i + j]; " << std::endl
   << "      double p1 = 1, p2 = 0, p3 = 0, r = 0;" << std::endl
   << "      double v =  1 + 2. / ("
   << prefix << "gXMax[j] - " << prefix
   << "gXMin[j]) * (x[j] - " << prefix << "gXMax[j]);" << std::endl
   << "      // what is the power to use!" << std::endl
   << "      switch(power) {" << std::endl
   << "      case 1: r = 1; break; " << std::endl
   << "      case 2: r = v; break; " << std::endl
   << "      default: " << std::endl
   << "        p2 = v; " << std::endl
   << "        for (k = 3; k <= power; k++) { " << std::endl
   << "          p3 = p2 * v;" << std::endl;
   if (fPolyType == kLegendre)
      outFile << "          p3 = ((2 * i - 3) * p2 * v - (i - 2) * p1)"
      << " / (i - 1);" << std::endl;
   if (fPolyType == kChebyshev)
      outFile << "          p3 = 2 * v * p2 - p1; " << std::endl;
   outFile << "          p1 = p2; p2 = p3; " << std::endl << "        }" << std::endl
   << "        r = p3;" << std::endl << "      }" << std::endl
   << "      // multiply this term by the poly in the jth var" << std::endl
   << "      term *= r; " << std::endl << "    }" << std::endl
   << "    // Add this term to the final result" << std::endl
   << "    returnValue += term;" << std::endl << "  }" << std::endl
   << "  return returnValue;" << std::endl << "}" << std::endl << std::endl;

   // EOF
   outFile << "// EOF for " << filename << std::endl;

   // Close the file
   outFile.close();

   if (fIsVerbose)
      std::cout << "done" << std::endl;
}


//____________________________________________________________________
void TMultiDimFit::Print(Option_t *option) const
{
   // Print statistics etc.
   // Options are
   //   P        Parameters
   //   S        Statistics
   //   C        Coefficients
   //   R        Result of parameterisation
   //   F        Result of fit
   //   K        Correlation Matrix
   //   M        Pretty print formula
   //
   Int_t i = 0;
   Int_t j = 0;

   TString opt(option);
   opt.ToLower();

   if (opt.Contains("p")) {
      // Print basic parameters for this object
      std::cout << "User parameters:" << std::endl
      << "----------------" << std::endl
      << " Variables:                    " << fNVariables << std::endl
      << " Data points:                  " << fSampleSize << std::endl
      << " Max Terms:                    " << fMaxTerms << std::endl
      << " Power Limit Parameter:        " << fPowerLimit << std::endl
      << " Max functions:                " << fMaxFunctions << std::endl
      << " Max functions to study:       " << fMaxStudy << std::endl
      << " Max angle (optional):         " << fMaxAngle << std::endl
      << " Min angle:                    " << fMinAngle << std::endl
      << " Relative Error accepted:      " << fMinRelativeError << std::endl
      << " Maximum Powers:               " << std::flush;
      for (i = 0; i < fNVariables; i++)
         std::cout << " " << fMaxPowers[i] - 1 << std::flush;
      std::cout << std::endl << std::endl
      << " Parameterisation will be done using " << std::flush;
      if (fPolyType == kChebyshev)
         std::cout << "Chebyshev polynomials" << std::endl;
      else if (fPolyType == kLegendre)
         std::cout << "Legendre polynomials" << std::endl;
      else
         std::cout << "Monomials" << std::endl;
      std::cout << std::endl;
   }

   if (opt.Contains("s")) {
      // Print statistics for read data
      std::cout << "Sample statistics:" << std::endl
      << "------------------" << std::endl
      << "                 D"  << std::flush;
      for (i = 0; i < fNVariables; i++)
         std::cout << " " << std::setw(10) << i+1 << std::flush;
      std::cout << std::endl << " Max:   " << std::setw(10) << std::setprecision(7)
      << fMaxQuantity << std::flush;
      for (i = 0; i < fNVariables; i++)
         std::cout << " " << std::setw(10) << std::setprecision(4)
         << fMaxVariables(i) << std::flush;
      std::cout << std::endl << " Min:   " << std::setw(10) << std::setprecision(7)
      << fMinQuantity << std::flush;
      for (i = 0; i < fNVariables; i++)
         std::cout << " " << std::setw(10) << std::setprecision(4)
         << fMinVariables(i) << std::flush;
      std::cout << std::endl << " Mean:  " << std::setw(10) << std::setprecision(7)
      << fMeanQuantity << std::flush;
      for (i = 0; i < fNVariables; i++)
         std::cout << " " << std::setw(10) << std::setprecision(4)
         << fMeanVariables(i) << std::flush;
      std::cout << std::endl << " Function Sum Squares:         " << fSumSqQuantity
      << std::endl << std::endl;
   }

   if (opt.Contains("r")) {
      std::cout << "Results of Parameterisation:" << std::endl
      << "----------------------------" << std::endl
      << " Total reduction of square residuals    "
      << fSumSqResidual << std::endl
      << " Relative precision obtained:           "
      << fPrecision   << std::endl
      << " Error obtained:                        "
      << fError << std::endl
      << " Multiple correlation coefficient:      "
      << fCorrelationCoeff   << std::endl
      << " Reduced Chi square over sample:        "
      << fChi2 / (fSampleSize - fNCoefficients) << std::endl
      << " Maximum residual value:                "
      << fMaxResidual << std::endl
      << " Minimum residual value:                "
      << fMinResidual << std::endl
      << " Estimated root mean square:            "
      << fRMS << std::endl
      << " Maximum powers used:                   " << std::flush;
      for (j = 0; j < fNVariables; j++)
         std::cout << fMaxPowersFinal[j] << " " << std::flush;
      std::cout << std::endl
      << " Function codes of candidate functions." << std::endl
      << "  1: considered,"
      << "  2: too little contribution,"
      << "  3: accepted." << std::flush;
      for (i = 0; i < fMaxFunctions; i++) {
         if (i % 60 == 0)
            std::cout << std::endl << " " << std::flush;
         else if (i % 10 == 0)
            std::cout << " " << std::flush;
         std::cout << fFunctionCodes[i];
      }
      std::cout << std::endl << " Loop over candidates stopped because " << std::flush;
      switch(fParameterisationCode){
         case PARAM_MAXSTUDY:
            std::cout << "max allowed studies reached" << std::endl; break;
         case PARAM_SEVERAL:
            std::cout << "all candidates considered several times" << std::endl; break;
         case PARAM_RELERR:
            std::cout << "wanted relative error obtained" << std::endl; break;
         case PARAM_MAXTERMS:
            std::cout << "max number of terms reached" << std::endl; break;
         default:
            std::cout << "some unknown reason" << std::endl;
            break;
      }
      std::cout << std::endl;
   }

   if (opt.Contains("f")) {
      std::cout << "Results of Fit:" << std::endl
      << "---------------" << std::endl
      << " Test sample size:                      "
      << fTestSampleSize << std::endl
      << " Multiple correlation coefficient:      "
      << fTestCorrelationCoeff << std::endl
      << " Relative precision obtained:           "
      << fTestPrecision   << std::endl
      << " Error obtained:                        "
      << fTestError << std::endl
      << " Reduced Chi square over sample:        "
      << fChi2 / (fSampleSize - fNCoefficients) << std::endl
      << std::endl;
      if (fFitter) {
         fFitter->PrintResults(1,1);
         std::cout << std::endl;
      }
   }

   if (opt.Contains("c")){
      std::cout << "Coefficients:" << std::endl
      << "-------------" << std::endl
      << "   #         Value        Error   Powers" << std::endl
      << " ---------------------------------------" << std::endl;
      for (i = 0; i < fNCoefficients; i++) {
         std::cout << " " << std::setw(3) << i << "  "
         << std::setw(12) << fCoefficients(i) << "  "
         << std::setw(12) << fCoefficientsRMS(i) << "  " << std::flush;
         for (j = 0; j < fNVariables; j++)
            std::cout << " " << std::setw(3)
            << fPowers[fPowerIndex[i] * fNVariables + j] - 1 << std::flush;
         std::cout << std::endl;
      }
      std::cout << std::endl;
   }
   if (opt.Contains("k") && fCorrelationMatrix.IsValid()) {
      std::cout << "Correlation Matrix:" << std::endl
      << "-------------------";
      fCorrelationMatrix.Print();
   }

   if (opt.Contains("m")) {
      std::cout << "Parameterization:" << std::endl
      << "-----------------" << std::endl
      << "  Normalised variables: " << std::endl;
      for (i = 0; i < fNVariables; i++)
         std::cout << "\ty_" << i << "\t= 1 + 2 * (x_" << i << " - "
         << fMaxVariables(i) << ") / ("
         << fMaxVariables(i) << " - " << fMinVariables(i) << ")"
         << std::endl;
      std::cout << std::endl
      << "  f(";
      for (i = 0; i < fNVariables; i++) {
         std::cout << "y_" << i;
         if (i != fNVariables-1) std::cout << ", ";
      }
      std::cout << ") = ";
      for (i = 0; i < fNCoefficients; i++) {
         if (i != 0)
            std::cout << std::endl << "\t" << (fCoefficients(i) < 0 ? "- " : "+ ")
            << TMath::Abs(fCoefficients(i));
         else
            std::cout << fCoefficients(i);
         for (j = 0; j < fNVariables; j++) {
            Int_t p = fPowers[fPowerIndex[i] * fNVariables + j];
            switch (p) {
               case 1: break;
               case 2: std::cout << " * y_" << j; break;
               default:
                  switch(fPolyType) {
                     case kLegendre:  std::cout << " * L_" << p-1 << "(y_" << j << ")"; break;
                     case kChebyshev: std::cout << " * C_" << p-1 << "(y_" << j << ")"; break;
                     default:         std::cout << " * y_" << j << "^" << p-1; break;
                  }
            }

         }
      }
      std::cout << std::endl;
   }
}


//____________________________________________________________________
Bool_t TMultiDimFit::Select(const Int_t *)
{
   // Selection method. User can override this method for specialized
   // selection of acceptable functions in fit. Default is to select
   // all. This message is sent during the build-up of the function
   // candidates table once for each set of powers in
   // variables. Notice, that the argument array contains the powers
   // PLUS ONE. For example, to De select the function
   //     f = x1^2 * x2^4 * x3^5,
   // this method should return kFALSE if given the argument
   //     { 3, 4, 6 }
   return kTRUE;
}

//____________________________________________________________________
void TMultiDimFit::SetMaxAngle(Double_t ang)
{
   // Set the max angle (in degrees) between the initial data vector to
   // be fitted, and the new candidate function to be included in the
   // fit.  By default it is 0, which automatically chooses another
   // selection criteria. See also
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   if (ang >= 90 || ang < 0) {
      Warning("SetMaxAngle", "angle must be in [0,90)");
      return;
   }

   fMaxAngle = ang;
}

//____________________________________________________________________
void TMultiDimFit::SetMinAngle(Double_t ang)
{
   // Set the min angle (in degrees) between a new candidate function
   // and the subspace spanned by the previously accepted
   // functions. See also
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   if (ang > 90 || ang <= 0) {
      Warning("SetMinAngle", "angle must be in [0,90)");
      return;
   }

   fMinAngle = ang;

}


//____________________________________________________________________
void TMultiDimFit::SetPowers(const Int_t* powers, Int_t terms)
{
   // Define a user function. The input array must be of the form
   // (p11, ..., p1N, ... ,pL1, ..., pLN)
   // Where N is the dimension of the data sample, L is the number of
   // terms (given in terms) and the first number, labels the term, the
   // second the variable.  More information is given in the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   fIsUserFunction = kTRUE;
   fMaxFunctions   = terms;
   fMaxTerms       = terms;
   fMaxStudy       = terms;
   fMaxFuncNV      = fMaxFunctions * fNVariables;
   fPowers         = new Int_t[fMaxFuncNV];
   Int_t i, j;
   for (i = 0; i < fMaxFunctions; i++)
      for(j = 0; j < fNVariables; j++)
         fPowers[i * fNVariables + j] = powers[i * fNVariables + j]  + 1;
}

//____________________________________________________________________
void TMultiDimFit::SetPowerLimit(Double_t limit)
{
   // Set the user parameter for the function selection. The bigger the
   // limit, the more functions are used. The meaning of this variable
   // is defined in the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   fPowerLimit = limit;
}

//____________________________________________________________________
void TMultiDimFit::SetMaxPowers(const Int_t* powers)
{
   // Set the maximum power to be considered in the fit for each
   // variable. See also
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   if (!powers)
      return;

   for (Int_t i = 0; i < fNVariables; i++)
      fMaxPowers[i] = powers[i]+1;
}

//____________________________________________________________________
void TMultiDimFit::SetMinRelativeError(Double_t error)
{
   // Set the acceptable relative error for when sum of square
   // residuals is considered minimized. For a full account, refer to
   // the
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html
   fMinRelativeError = error;
}


//____________________________________________________________________
Bool_t TMultiDimFit::TestFunction(Double_t squareResidual,
                                  Double_t dResidur)
{
   // PRIVATE METHOD:
   // Test whether the currently considered function contributes to the
   // fit. See also
   // Begin_Html<a href="#TMultiDimFit:description">class description</a>End_Html

   if (fNCoefficients != 0) {
      // Now for the second test:
      if (fMaxAngle == 0) {
         // If the user hasn't supplied a max angle do the test as,
         if (dResidur <
             squareResidual / (fMaxTerms - fNCoefficients + 1 + 1E-10)) {
            return kFALSE;
         }
      }
      else {
         // If the user has provided a max angle, test if the calculated
         // angle is less then the max angle.
         if (TMath::Sqrt(dResidur/fSumSqAvgQuantity) <
             TMath::Cos(fMaxAngle*DEGRAD)) {
            return kFALSE;
         }
      }
   }
   // If we get here, the function is OK
   return kTRUE;
}


//____________________________________________________________________
void mdfHelper(int& /*npar*/, double* /*divs*/, double& chi2,
               double* coeffs, int /*flag*/)
{
   // Helper function for doing the minimisation of Chi2 using Minuit

   // Get pointer  to current TMultiDimFit object.
   TMultiDimFit* mdf = TMultiDimFit::Instance();
   chi2     = mdf->MakeChi2(coeffs);
}
 TMultiDimFit.cxx:1
 TMultiDimFit.cxx:2
 TMultiDimFit.cxx:3
 TMultiDimFit.cxx:4
 TMultiDimFit.cxx:5
 TMultiDimFit.cxx:6
 TMultiDimFit.cxx:7
 TMultiDimFit.cxx:8
 TMultiDimFit.cxx:9
 TMultiDimFit.cxx:10
 TMultiDimFit.cxx:11
 TMultiDimFit.cxx:12
 TMultiDimFit.cxx:13
 TMultiDimFit.cxx:14
 TMultiDimFit.cxx:15
 TMultiDimFit.cxx:16
 TMultiDimFit.cxx:17
 TMultiDimFit.cxx:18
 TMultiDimFit.cxx:19
 TMultiDimFit.cxx:20
 TMultiDimFit.cxx:21
 TMultiDimFit.cxx:22
 TMultiDimFit.cxx:23
 TMultiDimFit.cxx:24
 TMultiDimFit.cxx:25
 TMultiDimFit.cxx:26
 TMultiDimFit.cxx:27
 TMultiDimFit.cxx:28
 TMultiDimFit.cxx:29
 TMultiDimFit.cxx:30
 TMultiDimFit.cxx:31
 TMultiDimFit.cxx:32
 TMultiDimFit.cxx:33
 TMultiDimFit.cxx:34
 TMultiDimFit.cxx:35
 TMultiDimFit.cxx:36
 TMultiDimFit.cxx:37
 TMultiDimFit.cxx:38
 TMultiDimFit.cxx:39
 TMultiDimFit.cxx:40
 TMultiDimFit.cxx:41
 TMultiDimFit.cxx:42
 TMultiDimFit.cxx:43
 TMultiDimFit.cxx:44
 TMultiDimFit.cxx:45
 TMultiDimFit.cxx:46
 TMultiDimFit.cxx:47
 TMultiDimFit.cxx:48
 TMultiDimFit.cxx:49
 TMultiDimFit.cxx:50
 TMultiDimFit.cxx:51
 TMultiDimFit.cxx:52
 TMultiDimFit.cxx:53
 TMultiDimFit.cxx:54
 TMultiDimFit.cxx:55
 TMultiDimFit.cxx:56
 TMultiDimFit.cxx:57
 TMultiDimFit.cxx:58
 TMultiDimFit.cxx:59
 TMultiDimFit.cxx:60
 TMultiDimFit.cxx:61
 TMultiDimFit.cxx:62
 TMultiDimFit.cxx:63
 TMultiDimFit.cxx:64
 TMultiDimFit.cxx:65
 TMultiDimFit.cxx:66
 TMultiDimFit.cxx:67
 TMultiDimFit.cxx:68
 TMultiDimFit.cxx:69
 TMultiDimFit.cxx:70
 TMultiDimFit.cxx:71
 TMultiDimFit.cxx:72
 TMultiDimFit.cxx:73
 TMultiDimFit.cxx:74
 TMultiDimFit.cxx:75
 TMultiDimFit.cxx:76
 TMultiDimFit.cxx:77
 TMultiDimFit.cxx:78
 TMultiDimFit.cxx:79
 TMultiDimFit.cxx:80
 TMultiDimFit.cxx:81
 TMultiDimFit.cxx:82
 TMultiDimFit.cxx:83
 TMultiDimFit.cxx:84
 TMultiDimFit.cxx:85
 TMultiDimFit.cxx:86
 TMultiDimFit.cxx:87
 TMultiDimFit.cxx:88
 TMultiDimFit.cxx:89
 TMultiDimFit.cxx:90
 TMultiDimFit.cxx:91
 TMultiDimFit.cxx:92
 TMultiDimFit.cxx:93
 TMultiDimFit.cxx:94
 TMultiDimFit.cxx:95
 TMultiDimFit.cxx:96
 TMultiDimFit.cxx:97
 TMultiDimFit.cxx:98
 TMultiDimFit.cxx:99
 TMultiDimFit.cxx:100
 TMultiDimFit.cxx:101
 TMultiDimFit.cxx:102
 TMultiDimFit.cxx:103
 TMultiDimFit.cxx:104
 TMultiDimFit.cxx:105
 TMultiDimFit.cxx:106
 TMultiDimFit.cxx:107
 TMultiDimFit.cxx:108
 TMultiDimFit.cxx:109
 TMultiDimFit.cxx:110
 TMultiDimFit.cxx:111
 TMultiDimFit.cxx:112
 TMultiDimFit.cxx:113
 TMultiDimFit.cxx:114
 TMultiDimFit.cxx:115
 TMultiDimFit.cxx:116
 TMultiDimFit.cxx:117
 TMultiDimFit.cxx:118
 TMultiDimFit.cxx:119
 TMultiDimFit.cxx:120
 TMultiDimFit.cxx:121
 TMultiDimFit.cxx:122
 TMultiDimFit.cxx:123
 TMultiDimFit.cxx:124
 TMultiDimFit.cxx:125
 TMultiDimFit.cxx:126
 TMultiDimFit.cxx:127
 TMultiDimFit.cxx:128
 TMultiDimFit.cxx:129
 TMultiDimFit.cxx:130
 TMultiDimFit.cxx:131
 TMultiDimFit.cxx:132
 TMultiDimFit.cxx:133
 TMultiDimFit.cxx:134
 TMultiDimFit.cxx:135
 TMultiDimFit.cxx:136
 TMultiDimFit.cxx:137
 TMultiDimFit.cxx:138
 TMultiDimFit.cxx:139
 TMultiDimFit.cxx:140
 TMultiDimFit.cxx:141
 TMultiDimFit.cxx:142
 TMultiDimFit.cxx:143
 TMultiDimFit.cxx:144
 TMultiDimFit.cxx:145
 TMultiDimFit.cxx:146
 TMultiDimFit.cxx:147
 TMultiDimFit.cxx:148
 TMultiDimFit.cxx:149
 TMultiDimFit.cxx:150
 TMultiDimFit.cxx:151
 TMultiDimFit.cxx:152
 TMultiDimFit.cxx:153
 TMultiDimFit.cxx:154
 TMultiDimFit.cxx:155
 TMultiDimFit.cxx:156
 TMultiDimFit.cxx:157
 TMultiDimFit.cxx:158
 TMultiDimFit.cxx:159
 TMultiDimFit.cxx:160
 TMultiDimFit.cxx:161
 TMultiDimFit.cxx:162
 TMultiDimFit.cxx:163
 TMultiDimFit.cxx:164
 TMultiDimFit.cxx:165
 TMultiDimFit.cxx:166
 TMultiDimFit.cxx:167
 TMultiDimFit.cxx:168
 TMultiDimFit.cxx:169
 TMultiDimFit.cxx:170
 TMultiDimFit.cxx:171
 TMultiDimFit.cxx:172
 TMultiDimFit.cxx:173
 TMultiDimFit.cxx:174
 TMultiDimFit.cxx:175
 TMultiDimFit.cxx:176
 TMultiDimFit.cxx:177
 TMultiDimFit.cxx:178
 TMultiDimFit.cxx:179
 TMultiDimFit.cxx:180
 TMultiDimFit.cxx:181
 TMultiDimFit.cxx:182
 TMultiDimFit.cxx:183
 TMultiDimFit.cxx:184
 TMultiDimFit.cxx:185
 TMultiDimFit.cxx:186
 TMultiDimFit.cxx:187
 TMultiDimFit.cxx:188
 TMultiDimFit.cxx:189
 TMultiDimFit.cxx:190
 TMultiDimFit.cxx:191
 TMultiDimFit.cxx:192
 TMultiDimFit.cxx:193
 TMultiDimFit.cxx:194
 TMultiDimFit.cxx:195
 TMultiDimFit.cxx:196
 TMultiDimFit.cxx:197
 TMultiDimFit.cxx:198
 TMultiDimFit.cxx:199
 TMultiDimFit.cxx:200
 TMultiDimFit.cxx:201
 TMultiDimFit.cxx:202
 TMultiDimFit.cxx:203
 TMultiDimFit.cxx:204
 TMultiDimFit.cxx:205
 TMultiDimFit.cxx:206
 TMultiDimFit.cxx:207
 TMultiDimFit.cxx:208
 TMultiDimFit.cxx:209
 TMultiDimFit.cxx:210
 TMultiDimFit.cxx:211
 TMultiDimFit.cxx:212
 TMultiDimFit.cxx:213
 TMultiDimFit.cxx:214
 TMultiDimFit.cxx:215
 TMultiDimFit.cxx:216
 TMultiDimFit.cxx:217
 TMultiDimFit.cxx:218
 TMultiDimFit.cxx:219
 TMultiDimFit.cxx:220
 TMultiDimFit.cxx:221
 TMultiDimFit.cxx:222
 TMultiDimFit.cxx:223
 TMultiDimFit.cxx:224
 TMultiDimFit.cxx:225
 TMultiDimFit.cxx:226
 TMultiDimFit.cxx:227
 TMultiDimFit.cxx:228
 TMultiDimFit.cxx:229
 TMultiDimFit.cxx:230
 TMultiDimFit.cxx:231
 TMultiDimFit.cxx:232
 TMultiDimFit.cxx:233
 TMultiDimFit.cxx:234
 TMultiDimFit.cxx:235
 TMultiDimFit.cxx:236
 TMultiDimFit.cxx:237
 TMultiDimFit.cxx:238
 TMultiDimFit.cxx:239
 TMultiDimFit.cxx:240
 TMultiDimFit.cxx:241
 TMultiDimFit.cxx:242
 TMultiDimFit.cxx:243
 TMultiDimFit.cxx:244
 TMultiDimFit.cxx:245
 TMultiDimFit.cxx:246
 TMultiDimFit.cxx:247
 TMultiDimFit.cxx:248
 TMultiDimFit.cxx:249
 TMultiDimFit.cxx:250
 TMultiDimFit.cxx:251
 TMultiDimFit.cxx:252
 TMultiDimFit.cxx:253
 TMultiDimFit.cxx:254
 TMultiDimFit.cxx:255
 TMultiDimFit.cxx:256
 TMultiDimFit.cxx:257
 TMultiDimFit.cxx:258
 TMultiDimFit.cxx:259
 TMultiDimFit.cxx:260
 TMultiDimFit.cxx:261
 TMultiDimFit.cxx:262
 TMultiDimFit.cxx:263
 TMultiDimFit.cxx:264
 TMultiDimFit.cxx:265
 TMultiDimFit.cxx:266
 TMultiDimFit.cxx:267
 TMultiDimFit.cxx:268
 TMultiDimFit.cxx:269
 TMultiDimFit.cxx:270
 TMultiDimFit.cxx:271
 TMultiDimFit.cxx:272
 TMultiDimFit.cxx:273
 TMultiDimFit.cxx:274
 TMultiDimFit.cxx:275
 TMultiDimFit.cxx:276
 TMultiDimFit.cxx:277
 TMultiDimFit.cxx:278
 TMultiDimFit.cxx:279
 TMultiDimFit.cxx:280
 TMultiDimFit.cxx:281
 TMultiDimFit.cxx:282
 TMultiDimFit.cxx:283
 TMultiDimFit.cxx:284
 TMultiDimFit.cxx:285
 TMultiDimFit.cxx:286
 TMultiDimFit.cxx:287
 TMultiDimFit.cxx:288
 TMultiDimFit.cxx:289
 TMultiDimFit.cxx:290
 TMultiDimFit.cxx:291
 TMultiDimFit.cxx:292
 TMultiDimFit.cxx:293
 TMultiDimFit.cxx:294
 TMultiDimFit.cxx:295
 TMultiDimFit.cxx:296
 TMultiDimFit.cxx:297
 TMultiDimFit.cxx:298
 TMultiDimFit.cxx:299
 TMultiDimFit.cxx:300
 TMultiDimFit.cxx:301
 TMultiDimFit.cxx:302
 TMultiDimFit.cxx:303
 TMultiDimFit.cxx:304
 TMultiDimFit.cxx:305
 TMultiDimFit.cxx:306
 TMultiDimFit.cxx:307
 TMultiDimFit.cxx:308
 TMultiDimFit.cxx:309
 TMultiDimFit.cxx:310
 TMultiDimFit.cxx:311
 TMultiDimFit.cxx:312
 TMultiDimFit.cxx:313
 TMultiDimFit.cxx:314
 TMultiDimFit.cxx:315
 TMultiDimFit.cxx:316
 TMultiDimFit.cxx:317
 TMultiDimFit.cxx:318
 TMultiDimFit.cxx:319
 TMultiDimFit.cxx:320
 TMultiDimFit.cxx:321
 TMultiDimFit.cxx:322
 TMultiDimFit.cxx:323
 TMultiDimFit.cxx:324
 TMultiDimFit.cxx:325
 TMultiDimFit.cxx:326
 TMultiDimFit.cxx:327
 TMultiDimFit.cxx:328
 TMultiDimFit.cxx:329
 TMultiDimFit.cxx:330
 TMultiDimFit.cxx:331
 TMultiDimFit.cxx:332
 TMultiDimFit.cxx:333
 TMultiDimFit.cxx:334
 TMultiDimFit.cxx:335
 TMultiDimFit.cxx:336
 TMultiDimFit.cxx:337
 TMultiDimFit.cxx:338
 TMultiDimFit.cxx:339
 TMultiDimFit.cxx:340
 TMultiDimFit.cxx:341
 TMultiDimFit.cxx:342
 TMultiDimFit.cxx:343
 TMultiDimFit.cxx:344
 TMultiDimFit.cxx:345
 TMultiDimFit.cxx:346
 TMultiDimFit.cxx:347
 TMultiDimFit.cxx:348
 TMultiDimFit.cxx:349
 TMultiDimFit.cxx:350
 TMultiDimFit.cxx:351
 TMultiDimFit.cxx:352
 TMultiDimFit.cxx:353
 TMultiDimFit.cxx:354
 TMultiDimFit.cxx:355
 TMultiDimFit.cxx:356
 TMultiDimFit.cxx:357
 TMultiDimFit.cxx:358
 TMultiDimFit.cxx:359
 TMultiDimFit.cxx:360
 TMultiDimFit.cxx:361
 TMultiDimFit.cxx:362
 TMultiDimFit.cxx:363
 TMultiDimFit.cxx:364
 TMultiDimFit.cxx:365
 TMultiDimFit.cxx:366
 TMultiDimFit.cxx:367
 TMultiDimFit.cxx:368
 TMultiDimFit.cxx:369
 TMultiDimFit.cxx:370
 TMultiDimFit.cxx:371
 TMultiDimFit.cxx:372
 TMultiDimFit.cxx:373
 TMultiDimFit.cxx:374
 TMultiDimFit.cxx:375
 TMultiDimFit.cxx:376
 TMultiDimFit.cxx:377
 TMultiDimFit.cxx:378
 TMultiDimFit.cxx:379
 TMultiDimFit.cxx:380
 TMultiDimFit.cxx:381
 TMultiDimFit.cxx:382
 TMultiDimFit.cxx:383
 TMultiDimFit.cxx:384
 TMultiDimFit.cxx:385
 TMultiDimFit.cxx:386
 TMultiDimFit.cxx:387
 TMultiDimFit.cxx:388
 TMultiDimFit.cxx:389
 TMultiDimFit.cxx:390
 TMultiDimFit.cxx:391
 TMultiDimFit.cxx:392
 TMultiDimFit.cxx:393
 TMultiDimFit.cxx:394
 TMultiDimFit.cxx:395
 TMultiDimFit.cxx:396
 TMultiDimFit.cxx:397
 TMultiDimFit.cxx:398
 TMultiDimFit.cxx:399
 TMultiDimFit.cxx:400
 TMultiDimFit.cxx:401
 TMultiDimFit.cxx:402
 TMultiDimFit.cxx:403
 TMultiDimFit.cxx:404
 TMultiDimFit.cxx:405
 TMultiDimFit.cxx:406
 TMultiDimFit.cxx:407
 TMultiDimFit.cxx:408
 TMultiDimFit.cxx:409
 TMultiDimFit.cxx:410
 TMultiDimFit.cxx:411
 TMultiDimFit.cxx:412
 TMultiDimFit.cxx:413
 TMultiDimFit.cxx:414
 TMultiDimFit.cxx:415
 TMultiDimFit.cxx:416
 TMultiDimFit.cxx:417
 TMultiDimFit.cxx:418
 TMultiDimFit.cxx:419
 TMultiDimFit.cxx:420
 TMultiDimFit.cxx:421
 TMultiDimFit.cxx:422
 TMultiDimFit.cxx:423
 TMultiDimFit.cxx:424
 TMultiDimFit.cxx:425
 TMultiDimFit.cxx:426
 TMultiDimFit.cxx:427
 TMultiDimFit.cxx:428
 TMultiDimFit.cxx:429
 TMultiDimFit.cxx:430
 TMultiDimFit.cxx:431
 TMultiDimFit.cxx:432
 TMultiDimFit.cxx:433
 TMultiDimFit.cxx:434
 TMultiDimFit.cxx:435
 TMultiDimFit.cxx:436
 TMultiDimFit.cxx:437
 TMultiDimFit.cxx:438
 TMultiDimFit.cxx:439
 TMultiDimFit.cxx:440
 TMultiDimFit.cxx:441
 TMultiDimFit.cxx:442
 TMultiDimFit.cxx:443
 TMultiDimFit.cxx:444
 TMultiDimFit.cxx:445
 TMultiDimFit.cxx:446
 TMultiDimFit.cxx:447
 TMultiDimFit.cxx:448
 TMultiDimFit.cxx:449
 TMultiDimFit.cxx:450
 TMultiDimFit.cxx:451
 TMultiDimFit.cxx:452
 TMultiDimFit.cxx:453
 TMultiDimFit.cxx:454
 TMultiDimFit.cxx:455
 TMultiDimFit.cxx:456
 TMultiDimFit.cxx:457
 TMultiDimFit.cxx:458
 TMultiDimFit.cxx:459
 TMultiDimFit.cxx:460
 TMultiDimFit.cxx:461
 TMultiDimFit.cxx:462
 TMultiDimFit.cxx:463
 TMultiDimFit.cxx:464
 TMultiDimFit.cxx:465
 TMultiDimFit.cxx:466
 TMultiDimFit.cxx:467
 TMultiDimFit.cxx:468
 TMultiDimFit.cxx:469
 TMultiDimFit.cxx:470
 TMultiDimFit.cxx:471
 TMultiDimFit.cxx:472
 TMultiDimFit.cxx:473
 TMultiDimFit.cxx:474
 TMultiDimFit.cxx:475
 TMultiDimFit.cxx:476
 TMultiDimFit.cxx:477
 TMultiDimFit.cxx:478
 TMultiDimFit.cxx:479
 TMultiDimFit.cxx:480
 TMultiDimFit.cxx:481
 TMultiDimFit.cxx:482
 TMultiDimFit.cxx:483
 TMultiDimFit.cxx:484
 TMultiDimFit.cxx:485
 TMultiDimFit.cxx:486
 TMultiDimFit.cxx:487
 TMultiDimFit.cxx:488
 TMultiDimFit.cxx:489
 TMultiDimFit.cxx:490
 TMultiDimFit.cxx:491
 TMultiDimFit.cxx:492
 TMultiDimFit.cxx:493
 TMultiDimFit.cxx:494
 TMultiDimFit.cxx:495
 TMultiDimFit.cxx:496
 TMultiDimFit.cxx:497
 TMultiDimFit.cxx:498
 TMultiDimFit.cxx:499
 TMultiDimFit.cxx:500
 TMultiDimFit.cxx:501
 TMultiDimFit.cxx:502
 TMultiDimFit.cxx:503
 TMultiDimFit.cxx:504
 TMultiDimFit.cxx:505
 TMultiDimFit.cxx:506
 TMultiDimFit.cxx:507
 TMultiDimFit.cxx:508
 TMultiDimFit.cxx:509
 TMultiDimFit.cxx:510
 TMultiDimFit.cxx:511
 TMultiDimFit.cxx:512
 TMultiDimFit.cxx:513
 TMultiDimFit.cxx:514
 TMultiDimFit.cxx:515
 TMultiDimFit.cxx:516
 TMultiDimFit.cxx:517
 TMultiDimFit.cxx:518
 TMultiDimFit.cxx:519
 TMultiDimFit.cxx:520
 TMultiDimFit.cxx:521
 TMultiDimFit.cxx:522
 TMultiDimFit.cxx:523
 TMultiDimFit.cxx:524
 TMultiDimFit.cxx:525
 TMultiDimFit.cxx:526
 TMultiDimFit.cxx:527
 TMultiDimFit.cxx:528
 TMultiDimFit.cxx:529
 TMultiDimFit.cxx:530
 TMultiDimFit.cxx:531
 TMultiDimFit.cxx:532
 TMultiDimFit.cxx:533
 TMultiDimFit.cxx:534
 TMultiDimFit.cxx:535
 TMultiDimFit.cxx:536
 TMultiDimFit.cxx:537
 TMultiDimFit.cxx:538
 TMultiDimFit.cxx:539
 TMultiDimFit.cxx:540
 TMultiDimFit.cxx:541
 TMultiDimFit.cxx:542
 TMultiDimFit.cxx:543
 TMultiDimFit.cxx:544
 TMultiDimFit.cxx:545
 TMultiDimFit.cxx:546
 TMultiDimFit.cxx:547
 TMultiDimFit.cxx:548
 TMultiDimFit.cxx:549
 TMultiDimFit.cxx:550
 TMultiDimFit.cxx:551
 TMultiDimFit.cxx:552
 TMultiDimFit.cxx:553
 TMultiDimFit.cxx:554
 TMultiDimFit.cxx:555
 TMultiDimFit.cxx:556
 TMultiDimFit.cxx:557
 TMultiDimFit.cxx:558
 TMultiDimFit.cxx:559
 TMultiDimFit.cxx:560
 TMultiDimFit.cxx:561
 TMultiDimFit.cxx:562
 TMultiDimFit.cxx:563
 TMultiDimFit.cxx:564
 TMultiDimFit.cxx:565
 TMultiDimFit.cxx:566
 TMultiDimFit.cxx:567
 TMultiDimFit.cxx:568
 TMultiDimFit.cxx:569
 TMultiDimFit.cxx:570
 TMultiDimFit.cxx:571
 TMultiDimFit.cxx:572
 TMultiDimFit.cxx:573
 TMultiDimFit.cxx:574
 TMultiDimFit.cxx:575
 TMultiDimFit.cxx:576
 TMultiDimFit.cxx:577
 TMultiDimFit.cxx:578
 TMultiDimFit.cxx:579
 TMultiDimFit.cxx:580
 TMultiDimFit.cxx:581
 TMultiDimFit.cxx:582
 TMultiDimFit.cxx:583
 TMultiDimFit.cxx:584
 TMultiDimFit.cxx:585
 TMultiDimFit.cxx:586
 TMultiDimFit.cxx:587
 TMultiDimFit.cxx:588
 TMultiDimFit.cxx:589
 TMultiDimFit.cxx:590
 TMultiDimFit.cxx:591
 TMultiDimFit.cxx:592
 TMultiDimFit.cxx:593
 TMultiDimFit.cxx:594
 TMultiDimFit.cxx:595
 TMultiDimFit.cxx:596
 TMultiDimFit.cxx:597
 TMultiDimFit.cxx:598
 TMultiDimFit.cxx:599
 TMultiDimFit.cxx:600
 TMultiDimFit.cxx:601
 TMultiDimFit.cxx:602
 TMultiDimFit.cxx:603
 TMultiDimFit.cxx:604
 TMultiDimFit.cxx:605
 TMultiDimFit.cxx:606
 TMultiDimFit.cxx:607
 TMultiDimFit.cxx:608
 TMultiDimFit.cxx:609
 TMultiDimFit.cxx:610
 TMultiDimFit.cxx:611
 TMultiDimFit.cxx:612
 TMultiDimFit.cxx:613
 TMultiDimFit.cxx:614
 TMultiDimFit.cxx:615
 TMultiDimFit.cxx:616
 TMultiDimFit.cxx:617
 TMultiDimFit.cxx:618
 TMultiDimFit.cxx:619
 TMultiDimFit.cxx:620
 TMultiDimFit.cxx:621
 TMultiDimFit.cxx:622
 TMultiDimFit.cxx:623
 TMultiDimFit.cxx:624
 TMultiDimFit.cxx:625
 TMultiDimFit.cxx:626
 TMultiDimFit.cxx:627
 TMultiDimFit.cxx:628
 TMultiDimFit.cxx:629
 TMultiDimFit.cxx:630
 TMultiDimFit.cxx:631
 TMultiDimFit.cxx:632
 TMultiDimFit.cxx:633
 TMultiDimFit.cxx:634
 TMultiDimFit.cxx:635
 TMultiDimFit.cxx:636
 TMultiDimFit.cxx:637
 TMultiDimFit.cxx:638
 TMultiDimFit.cxx:639
 TMultiDimFit.cxx:640
 TMultiDimFit.cxx:641
 TMultiDimFit.cxx:642
 TMultiDimFit.cxx:643
 TMultiDimFit.cxx:644
 TMultiDimFit.cxx:645
 TMultiDimFit.cxx:646
 TMultiDimFit.cxx:647
 TMultiDimFit.cxx:648
 TMultiDimFit.cxx:649
 TMultiDimFit.cxx:650
 TMultiDimFit.cxx:651
 TMultiDimFit.cxx:652
 TMultiDimFit.cxx:653
 TMultiDimFit.cxx:654
 TMultiDimFit.cxx:655
 TMultiDimFit.cxx:656
 TMultiDimFit.cxx:657
 TMultiDimFit.cxx:658
 TMultiDimFit.cxx:659
 TMultiDimFit.cxx:660
 TMultiDimFit.cxx:661
 TMultiDimFit.cxx:662
 TMultiDimFit.cxx:663
 TMultiDimFit.cxx:664
 TMultiDimFit.cxx:665
 TMultiDimFit.cxx:666
 TMultiDimFit.cxx:667
 TMultiDimFit.cxx:668
 TMultiDimFit.cxx:669
 TMultiDimFit.cxx:670
 TMultiDimFit.cxx:671
 TMultiDimFit.cxx:672
 TMultiDimFit.cxx:673
 TMultiDimFit.cxx:674
 TMultiDimFit.cxx:675
 TMultiDimFit.cxx:676
 TMultiDimFit.cxx:677
 TMultiDimFit.cxx:678
 TMultiDimFit.cxx:679
 TMultiDimFit.cxx:680
 TMultiDimFit.cxx:681
 TMultiDimFit.cxx:682
 TMultiDimFit.cxx:683
 TMultiDimFit.cxx:684
 TMultiDimFit.cxx:685
 TMultiDimFit.cxx:686
 TMultiDimFit.cxx:687
 TMultiDimFit.cxx:688
 TMultiDimFit.cxx:689
 TMultiDimFit.cxx:690
 TMultiDimFit.cxx:691
 TMultiDimFit.cxx:692
 TMultiDimFit.cxx:693
 TMultiDimFit.cxx:694
 TMultiDimFit.cxx:695
 TMultiDimFit.cxx:696
 TMultiDimFit.cxx:697
 TMultiDimFit.cxx:698
 TMultiDimFit.cxx:699
 TMultiDimFit.cxx:700
 TMultiDimFit.cxx:701
 TMultiDimFit.cxx:702
 TMultiDimFit.cxx:703
 TMultiDimFit.cxx:704
 TMultiDimFit.cxx:705
 TMultiDimFit.cxx:706
 TMultiDimFit.cxx:707
 TMultiDimFit.cxx:708
 TMultiDimFit.cxx:709
 TMultiDimFit.cxx:710
 TMultiDimFit.cxx:711
 TMultiDimFit.cxx:712
 TMultiDimFit.cxx:713
 TMultiDimFit.cxx:714
 TMultiDimFit.cxx:715
 TMultiDimFit.cxx:716
 TMultiDimFit.cxx:717
 TMultiDimFit.cxx:718
 TMultiDimFit.cxx:719
 TMultiDimFit.cxx:720
 TMultiDimFit.cxx:721
 TMultiDimFit.cxx:722
 TMultiDimFit.cxx:723
 TMultiDimFit.cxx:724
 TMultiDimFit.cxx:725
 TMultiDimFit.cxx:726
 TMultiDimFit.cxx:727
 TMultiDimFit.cxx:728
 TMultiDimFit.cxx:729
 TMultiDimFit.cxx:730
 TMultiDimFit.cxx:731
 TMultiDimFit.cxx:732
 TMultiDimFit.cxx:733
 TMultiDimFit.cxx:734
 TMultiDimFit.cxx:735
 TMultiDimFit.cxx:736
 TMultiDimFit.cxx:737
 TMultiDimFit.cxx:738
 TMultiDimFit.cxx:739
 TMultiDimFit.cxx:740
 TMultiDimFit.cxx:741
 TMultiDimFit.cxx:742
 TMultiDimFit.cxx:743
 TMultiDimFit.cxx:744
 TMultiDimFit.cxx:745
 TMultiDimFit.cxx:746
 TMultiDimFit.cxx:747
 TMultiDimFit.cxx:748
 TMultiDimFit.cxx:749
 TMultiDimFit.cxx:750
 TMultiDimFit.cxx:751
 TMultiDimFit.cxx:752
 TMultiDimFit.cxx:753
 TMultiDimFit.cxx:754
 TMultiDimFit.cxx:755
 TMultiDimFit.cxx:756
 TMultiDimFit.cxx:757
 TMultiDimFit.cxx:758
 TMultiDimFit.cxx:759
 TMultiDimFit.cxx:760
 TMultiDimFit.cxx:761
 TMultiDimFit.cxx:762
 TMultiDimFit.cxx:763
 TMultiDimFit.cxx:764
 TMultiDimFit.cxx:765
 TMultiDimFit.cxx:766
 TMultiDimFit.cxx:767
 TMultiDimFit.cxx:768
 TMultiDimFit.cxx:769
 TMultiDimFit.cxx:770
 TMultiDimFit.cxx:771
 TMultiDimFit.cxx:772
 TMultiDimFit.cxx:773
 TMultiDimFit.cxx:774
 TMultiDimFit.cxx:775
 TMultiDimFit.cxx:776
 TMultiDimFit.cxx:777
 TMultiDimFit.cxx:778
 TMultiDimFit.cxx:779
 TMultiDimFit.cxx:780
 TMultiDimFit.cxx:781
 TMultiDimFit.cxx:782
 TMultiDimFit.cxx:783
 TMultiDimFit.cxx:784
 TMultiDimFit.cxx:785
 TMultiDimFit.cxx:786
 TMultiDimFit.cxx:787
 TMultiDimFit.cxx:788
 TMultiDimFit.cxx:789
 TMultiDimFit.cxx:790
 TMultiDimFit.cxx:791
 TMultiDimFit.cxx:792
 TMultiDimFit.cxx:793
 TMultiDimFit.cxx:794
 TMultiDimFit.cxx:795
 TMultiDimFit.cxx:796
 TMultiDimFit.cxx:797
 TMultiDimFit.cxx:798
 TMultiDimFit.cxx:799
 TMultiDimFit.cxx:800
 TMultiDimFit.cxx:801
 TMultiDimFit.cxx:802
 TMultiDimFit.cxx:803
 TMultiDimFit.cxx:804
 TMultiDimFit.cxx:805
 TMultiDimFit.cxx:806
 TMultiDimFit.cxx:807
 TMultiDimFit.cxx:808
 TMultiDimFit.cxx:809
 TMultiDimFit.cxx:810
 TMultiDimFit.cxx:811
 TMultiDimFit.cxx:812
 TMultiDimFit.cxx:813
 TMultiDimFit.cxx:814
 TMultiDimFit.cxx:815
 TMultiDimFit.cxx:816
 TMultiDimFit.cxx:817
 TMultiDimFit.cxx:818
 TMultiDimFit.cxx:819
 TMultiDimFit.cxx:820
 TMultiDimFit.cxx:821
 TMultiDimFit.cxx:822
 TMultiDimFit.cxx:823
 TMultiDimFit.cxx:824
 TMultiDimFit.cxx:825
 TMultiDimFit.cxx:826
 TMultiDimFit.cxx:827
 TMultiDimFit.cxx:828
 TMultiDimFit.cxx:829
 TMultiDimFit.cxx:830
 TMultiDimFit.cxx:831
 TMultiDimFit.cxx:832
 TMultiDimFit.cxx:833
 TMultiDimFit.cxx:834
 TMultiDimFit.cxx:835
 TMultiDimFit.cxx:836
 TMultiDimFit.cxx:837
 TMultiDimFit.cxx:838
 TMultiDimFit.cxx:839
 TMultiDimFit.cxx:840
 TMultiDimFit.cxx:841
 TMultiDimFit.cxx:842
 TMultiDimFit.cxx:843
 TMultiDimFit.cxx:844
 TMultiDimFit.cxx:845
 TMultiDimFit.cxx:846
 TMultiDimFit.cxx:847
 TMultiDimFit.cxx:848
 TMultiDimFit.cxx:849
 TMultiDimFit.cxx:850
 TMultiDimFit.cxx:851
 TMultiDimFit.cxx:852
 TMultiDimFit.cxx:853
 TMultiDimFit.cxx:854
 TMultiDimFit.cxx:855
 TMultiDimFit.cxx:856
 TMultiDimFit.cxx:857
 TMultiDimFit.cxx:858
 TMultiDimFit.cxx:859
 TMultiDimFit.cxx:860
 TMultiDimFit.cxx:861
 TMultiDimFit.cxx:862
 TMultiDimFit.cxx:863
 TMultiDimFit.cxx:864
 TMultiDimFit.cxx:865
 TMultiDimFit.cxx:866
 TMultiDimFit.cxx:867
 TMultiDimFit.cxx:868
 TMultiDimFit.cxx:869
 TMultiDimFit.cxx:870
 TMultiDimFit.cxx:871
 TMultiDimFit.cxx:872
 TMultiDimFit.cxx:873
 TMultiDimFit.cxx:874
 TMultiDimFit.cxx:875
 TMultiDimFit.cxx:876
 TMultiDimFit.cxx:877
 TMultiDimFit.cxx:878
 TMultiDimFit.cxx:879
 TMultiDimFit.cxx:880
 TMultiDimFit.cxx:881
 TMultiDimFit.cxx:882
 TMultiDimFit.cxx:883
 TMultiDimFit.cxx:884
 TMultiDimFit.cxx:885
 TMultiDimFit.cxx:886
 TMultiDimFit.cxx:887
 TMultiDimFit.cxx:888
 TMultiDimFit.cxx:889
 TMultiDimFit.cxx:890
 TMultiDimFit.cxx:891
 TMultiDimFit.cxx:892
 TMultiDimFit.cxx:893
 TMultiDimFit.cxx:894
 TMultiDimFit.cxx:895
 TMultiDimFit.cxx:896
 TMultiDimFit.cxx:897
 TMultiDimFit.cxx:898
 TMultiDimFit.cxx:899
 TMultiDimFit.cxx:900
 TMultiDimFit.cxx:901
 TMultiDimFit.cxx:902
 TMultiDimFit.cxx:903
 TMultiDimFit.cxx:904
 TMultiDimFit.cxx:905
 TMultiDimFit.cxx:906
 TMultiDimFit.cxx:907
 TMultiDimFit.cxx:908
 TMultiDimFit.cxx:909
 TMultiDimFit.cxx:910
 TMultiDimFit.cxx:911
 TMultiDimFit.cxx:912
 TMultiDimFit.cxx:913
 TMultiDimFit.cxx:914
 TMultiDimFit.cxx:915
 TMultiDimFit.cxx:916
 TMultiDimFit.cxx:917
 TMultiDimFit.cxx:918
 TMultiDimFit.cxx:919
 TMultiDimFit.cxx:920
 TMultiDimFit.cxx:921
 TMultiDimFit.cxx:922
 TMultiDimFit.cxx:923
 TMultiDimFit.cxx:924
 TMultiDimFit.cxx:925
 TMultiDimFit.cxx:926
 TMultiDimFit.cxx:927
 TMultiDimFit.cxx:928
 TMultiDimFit.cxx:929
 TMultiDimFit.cxx:930
 TMultiDimFit.cxx:931
 TMultiDimFit.cxx:932
 TMultiDimFit.cxx:933
 TMultiDimFit.cxx:934
 TMultiDimFit.cxx:935
 TMultiDimFit.cxx:936
 TMultiDimFit.cxx:937
 TMultiDimFit.cxx:938
 TMultiDimFit.cxx:939
 TMultiDimFit.cxx:940
 TMultiDimFit.cxx:941
 TMultiDimFit.cxx:942
 TMultiDimFit.cxx:943
 TMultiDimFit.cxx:944
 TMultiDimFit.cxx:945
 TMultiDimFit.cxx:946
 TMultiDimFit.cxx:947
 TMultiDimFit.cxx:948
 TMultiDimFit.cxx:949
 TMultiDimFit.cxx:950
 TMultiDimFit.cxx:951
 TMultiDimFit.cxx:952
 TMultiDimFit.cxx:953
 TMultiDimFit.cxx:954
 TMultiDimFit.cxx:955
 TMultiDimFit.cxx:956
 TMultiDimFit.cxx:957
 TMultiDimFit.cxx:958
 TMultiDimFit.cxx:959
 TMultiDimFit.cxx:960
 TMultiDimFit.cxx:961
 TMultiDimFit.cxx:962
 TMultiDimFit.cxx:963
 TMultiDimFit.cxx:964
 TMultiDimFit.cxx:965
 TMultiDimFit.cxx:966
 TMultiDimFit.cxx:967
 TMultiDimFit.cxx:968
 TMultiDimFit.cxx:969
 TMultiDimFit.cxx:970
 TMultiDimFit.cxx:971
 TMultiDimFit.cxx:972
 TMultiDimFit.cxx:973
 TMultiDimFit.cxx:974
 TMultiDimFit.cxx:975
 TMultiDimFit.cxx:976
 TMultiDimFit.cxx:977
 TMultiDimFit.cxx:978
 TMultiDimFit.cxx:979
 TMultiDimFit.cxx:980
 TMultiDimFit.cxx:981
 TMultiDimFit.cxx:982
 TMultiDimFit.cxx:983
 TMultiDimFit.cxx:984
 TMultiDimFit.cxx:985
 TMultiDimFit.cxx:986
 TMultiDimFit.cxx:987
 TMultiDimFit.cxx:988
 TMultiDimFit.cxx:989
 TMultiDimFit.cxx:990
 TMultiDimFit.cxx:991
 TMultiDimFit.cxx:992
 TMultiDimFit.cxx:993
 TMultiDimFit.cxx:994
 TMultiDimFit.cxx:995
 TMultiDimFit.cxx:996
 TMultiDimFit.cxx:997
 TMultiDimFit.cxx:998
 TMultiDimFit.cxx:999
 TMultiDimFit.cxx:1000
 TMultiDimFit.cxx:1001
 TMultiDimFit.cxx:1002
 TMultiDimFit.cxx:1003
 TMultiDimFit.cxx:1004
 TMultiDimFit.cxx:1005
 TMultiDimFit.cxx:1006
 TMultiDimFit.cxx:1007
 TMultiDimFit.cxx:1008
 TMultiDimFit.cxx:1009
 TMultiDimFit.cxx:1010
 TMultiDimFit.cxx:1011
 TMultiDimFit.cxx:1012
 TMultiDimFit.cxx:1013
 TMultiDimFit.cxx:1014
 TMultiDimFit.cxx:1015
 TMultiDimFit.cxx:1016
 TMultiDimFit.cxx:1017
 TMultiDimFit.cxx:1018
 TMultiDimFit.cxx:1019
 TMultiDimFit.cxx:1020
 TMultiDimFit.cxx:1021
 TMultiDimFit.cxx:1022
 TMultiDimFit.cxx:1023
 TMultiDimFit.cxx:1024
 TMultiDimFit.cxx:1025
 TMultiDimFit.cxx:1026
 TMultiDimFit.cxx:1027
 TMultiDimFit.cxx:1028
 TMultiDimFit.cxx:1029
 TMultiDimFit.cxx:1030
 TMultiDimFit.cxx:1031
 TMultiDimFit.cxx:1032
 TMultiDimFit.cxx:1033
 TMultiDimFit.cxx:1034
 TMultiDimFit.cxx:1035
 TMultiDimFit.cxx:1036
 TMultiDimFit.cxx:1037
 TMultiDimFit.cxx:1038
 TMultiDimFit.cxx:1039
 TMultiDimFit.cxx:1040
 TMultiDimFit.cxx:1041
 TMultiDimFit.cxx:1042
 TMultiDimFit.cxx:1043
 TMultiDimFit.cxx:1044
 TMultiDimFit.cxx:1045
 TMultiDimFit.cxx:1046
 TMultiDimFit.cxx:1047
 TMultiDimFit.cxx:1048
 TMultiDimFit.cxx:1049
 TMultiDimFit.cxx:1050
 TMultiDimFit.cxx:1051
 TMultiDimFit.cxx:1052
 TMultiDimFit.cxx:1053
 TMultiDimFit.cxx:1054
 TMultiDimFit.cxx:1055
 TMultiDimFit.cxx:1056
 TMultiDimFit.cxx:1057
 TMultiDimFit.cxx:1058
 TMultiDimFit.cxx:1059
 TMultiDimFit.cxx:1060
 TMultiDimFit.cxx:1061
 TMultiDimFit.cxx:1062
 TMultiDimFit.cxx:1063
 TMultiDimFit.cxx:1064
 TMultiDimFit.cxx:1065
 TMultiDimFit.cxx:1066
 TMultiDimFit.cxx:1067
 TMultiDimFit.cxx:1068
 TMultiDimFit.cxx:1069
 TMultiDimFit.cxx:1070
 TMultiDimFit.cxx:1071
 TMultiDimFit.cxx:1072
 TMultiDimFit.cxx:1073
 TMultiDimFit.cxx:1074
 TMultiDimFit.cxx:1075
 TMultiDimFit.cxx:1076
 TMultiDimFit.cxx:1077
 TMultiDimFit.cxx:1078
 TMultiDimFit.cxx:1079
 TMultiDimFit.cxx:1080
 TMultiDimFit.cxx:1081
 TMultiDimFit.cxx:1082
 TMultiDimFit.cxx:1083
 TMultiDimFit.cxx:1084
 TMultiDimFit.cxx:1085
 TMultiDimFit.cxx:1086
 TMultiDimFit.cxx:1087
 TMultiDimFit.cxx:1088
 TMultiDimFit.cxx:1089
 TMultiDimFit.cxx:1090
 TMultiDimFit.cxx:1091
 TMultiDimFit.cxx:1092
 TMultiDimFit.cxx:1093
 TMultiDimFit.cxx:1094
 TMultiDimFit.cxx:1095
 TMultiDimFit.cxx:1096
 TMultiDimFit.cxx:1097
 TMultiDimFit.cxx:1098
 TMultiDimFit.cxx:1099
 TMultiDimFit.cxx:1100
 TMultiDimFit.cxx:1101
 TMultiDimFit.cxx:1102
 TMultiDimFit.cxx:1103
 TMultiDimFit.cxx:1104
 TMultiDimFit.cxx:1105
 TMultiDimFit.cxx:1106
 TMultiDimFit.cxx:1107
 TMultiDimFit.cxx:1108
 TMultiDimFit.cxx:1109
 TMultiDimFit.cxx:1110
 TMultiDimFit.cxx:1111
 TMultiDimFit.cxx:1112
 TMultiDimFit.cxx:1113
 TMultiDimFit.cxx:1114
 TMultiDimFit.cxx:1115
 TMultiDimFit.cxx:1116
 TMultiDimFit.cxx:1117
 TMultiDimFit.cxx:1118
 TMultiDimFit.cxx:1119
 TMultiDimFit.cxx:1120
 TMultiDimFit.cxx:1121
 TMultiDimFit.cxx:1122
 TMultiDimFit.cxx:1123
 TMultiDimFit.cxx:1124
 TMultiDimFit.cxx:1125
 TMultiDimFit.cxx:1126
 TMultiDimFit.cxx:1127
 TMultiDimFit.cxx:1128
 TMultiDimFit.cxx:1129
 TMultiDimFit.cxx:1130
 TMultiDimFit.cxx:1131
 TMultiDimFit.cxx:1132
 TMultiDimFit.cxx:1133
 TMultiDimFit.cxx:1134
 TMultiDimFit.cxx:1135
 TMultiDimFit.cxx:1136
 TMultiDimFit.cxx:1137
 TMultiDimFit.cxx:1138
 TMultiDimFit.cxx:1139
 TMultiDimFit.cxx:1140
 TMultiDimFit.cxx:1141
 TMultiDimFit.cxx:1142
 TMultiDimFit.cxx:1143
 TMultiDimFit.cxx:1144
 TMultiDimFit.cxx:1145
 TMultiDimFit.cxx:1146
 TMultiDimFit.cxx:1147
 TMultiDimFit.cxx:1148
 TMultiDimFit.cxx:1149
 TMultiDimFit.cxx:1150
 TMultiDimFit.cxx:1151
 TMultiDimFit.cxx:1152
 TMultiDimFit.cxx:1153
 TMultiDimFit.cxx:1154
 TMultiDimFit.cxx:1155
 TMultiDimFit.cxx:1156
 TMultiDimFit.cxx:1157
 TMultiDimFit.cxx:1158
 TMultiDimFit.cxx:1159
 TMultiDimFit.cxx:1160
 TMultiDimFit.cxx:1161
 TMultiDimFit.cxx:1162
 TMultiDimFit.cxx:1163
 TMultiDimFit.cxx:1164
 TMultiDimFit.cxx:1165
 TMultiDimFit.cxx:1166
 TMultiDimFit.cxx:1167
 TMultiDimFit.cxx:1168
 TMultiDimFit.cxx:1169
 TMultiDimFit.cxx:1170
 TMultiDimFit.cxx:1171
 TMultiDimFit.cxx:1172
 TMultiDimFit.cxx:1173
 TMultiDimFit.cxx:1174
 TMultiDimFit.cxx:1175
 TMultiDimFit.cxx:1176
 TMultiDimFit.cxx:1177
 TMultiDimFit.cxx:1178
 TMultiDimFit.cxx:1179
 TMultiDimFit.cxx:1180
 TMultiDimFit.cxx:1181
 TMultiDimFit.cxx:1182
 TMultiDimFit.cxx:1183
 TMultiDimFit.cxx:1184
 TMultiDimFit.cxx:1185
 TMultiDimFit.cxx:1186
 TMultiDimFit.cxx:1187
 TMultiDimFit.cxx:1188
 TMultiDimFit.cxx:1189
 TMultiDimFit.cxx:1190
 TMultiDimFit.cxx:1191
 TMultiDimFit.cxx:1192
 TMultiDimFit.cxx:1193
 TMultiDimFit.cxx:1194
 TMultiDimFit.cxx:1195
 TMultiDimFit.cxx:1196
 TMultiDimFit.cxx:1197
 TMultiDimFit.cxx:1198
 TMultiDimFit.cxx:1199
 TMultiDimFit.cxx:1200
 TMultiDimFit.cxx:1201
 TMultiDimFit.cxx:1202
 TMultiDimFit.cxx:1203
 TMultiDimFit.cxx:1204
 TMultiDimFit.cxx:1205
 TMultiDimFit.cxx:1206
 TMultiDimFit.cxx:1207
 TMultiDimFit.cxx:1208
 TMultiDimFit.cxx:1209
 TMultiDimFit.cxx:1210
 TMultiDimFit.cxx:1211
 TMultiDimFit.cxx:1212
 TMultiDimFit.cxx:1213
 TMultiDimFit.cxx:1214
 TMultiDimFit.cxx:1215
 TMultiDimFit.cxx:1216
 TMultiDimFit.cxx:1217
 TMultiDimFit.cxx:1218
 TMultiDimFit.cxx:1219
 TMultiDimFit.cxx:1220
 TMultiDimFit.cxx:1221
 TMultiDimFit.cxx:1222
 TMultiDimFit.cxx:1223
 TMultiDimFit.cxx:1224
 TMultiDimFit.cxx:1225
 TMultiDimFit.cxx:1226
 TMultiDimFit.cxx:1227
 TMultiDimFit.cxx:1228
 TMultiDimFit.cxx:1229
 TMultiDimFit.cxx:1230
 TMultiDimFit.cxx:1231
 TMultiDimFit.cxx:1232
 TMultiDimFit.cxx:1233
 TMultiDimFit.cxx:1234
 TMultiDimFit.cxx:1235
 TMultiDimFit.cxx:1236
 TMultiDimFit.cxx:1237
 TMultiDimFit.cxx:1238
 TMultiDimFit.cxx:1239
 TMultiDimFit.cxx:1240
 TMultiDimFit.cxx:1241
 TMultiDimFit.cxx:1242
 TMultiDimFit.cxx:1243
 TMultiDimFit.cxx:1244
 TMultiDimFit.cxx:1245
 TMultiDimFit.cxx:1246
 TMultiDimFit.cxx:1247
 TMultiDimFit.cxx:1248
 TMultiDimFit.cxx:1249
 TMultiDimFit.cxx:1250
 TMultiDimFit.cxx:1251
 TMultiDimFit.cxx:1252
 TMultiDimFit.cxx:1253
 TMultiDimFit.cxx:1254
 TMultiDimFit.cxx:1255
 TMultiDimFit.cxx:1256
 TMultiDimFit.cxx:1257
 TMultiDimFit.cxx:1258
 TMultiDimFit.cxx:1259
 TMultiDimFit.cxx:1260
 TMultiDimFit.cxx:1261
 TMultiDimFit.cxx:1262
 TMultiDimFit.cxx:1263
 TMultiDimFit.cxx:1264
 TMultiDimFit.cxx:1265
 TMultiDimFit.cxx:1266
 TMultiDimFit.cxx:1267
 TMultiDimFit.cxx:1268
 TMultiDimFit.cxx:1269
 TMultiDimFit.cxx:1270
 TMultiDimFit.cxx:1271
 TMultiDimFit.cxx:1272
 TMultiDimFit.cxx:1273
 TMultiDimFit.cxx:1274
 TMultiDimFit.cxx:1275
 TMultiDimFit.cxx:1276
 TMultiDimFit.cxx:1277
 TMultiDimFit.cxx:1278
 TMultiDimFit.cxx:1279
 TMultiDimFit.cxx:1280
 TMultiDimFit.cxx:1281
 TMultiDimFit.cxx:1282
 TMultiDimFit.cxx:1283
 TMultiDimFit.cxx:1284
 TMultiDimFit.cxx:1285
 TMultiDimFit.cxx:1286
 TMultiDimFit.cxx:1287
 TMultiDimFit.cxx:1288
 TMultiDimFit.cxx:1289
 TMultiDimFit.cxx:1290
 TMultiDimFit.cxx:1291
 TMultiDimFit.cxx:1292
 TMultiDimFit.cxx:1293
 TMultiDimFit.cxx:1294
 TMultiDimFit.cxx:1295
 TMultiDimFit.cxx:1296
 TMultiDimFit.cxx:1297
 TMultiDimFit.cxx:1298
 TMultiDimFit.cxx:1299
 TMultiDimFit.cxx:1300
 TMultiDimFit.cxx:1301
 TMultiDimFit.cxx:1302
 TMultiDimFit.cxx:1303
 TMultiDimFit.cxx:1304
 TMultiDimFit.cxx:1305
 TMultiDimFit.cxx:1306
 TMultiDimFit.cxx:1307
 TMultiDimFit.cxx:1308
 TMultiDimFit.cxx:1309
 TMultiDimFit.cxx:1310
 TMultiDimFit.cxx:1311
 TMultiDimFit.cxx:1312
 TMultiDimFit.cxx:1313
 TMultiDimFit.cxx:1314
 TMultiDimFit.cxx:1315
 TMultiDimFit.cxx:1316
 TMultiDimFit.cxx:1317
 TMultiDimFit.cxx:1318
 TMultiDimFit.cxx:1319
 TMultiDimFit.cxx:1320
 TMultiDimFit.cxx:1321
 TMultiDimFit.cxx:1322
 TMultiDimFit.cxx:1323
 TMultiDimFit.cxx:1324
 TMultiDimFit.cxx:1325
 TMultiDimFit.cxx:1326
 TMultiDimFit.cxx:1327
 TMultiDimFit.cxx:1328
 TMultiDimFit.cxx:1329
 TMultiDimFit.cxx:1330
 TMultiDimFit.cxx:1331
 TMultiDimFit.cxx:1332
 TMultiDimFit.cxx:1333
 TMultiDimFit.cxx:1334
 TMultiDimFit.cxx:1335
 TMultiDimFit.cxx:1336
 TMultiDimFit.cxx:1337
 TMultiDimFit.cxx:1338
 TMultiDimFit.cxx:1339
 TMultiDimFit.cxx:1340
 TMultiDimFit.cxx:1341
 TMultiDimFit.cxx:1342
 TMultiDimFit.cxx:1343
 TMultiDimFit.cxx:1344
 TMultiDimFit.cxx:1345
 TMultiDimFit.cxx:1346
 TMultiDimFit.cxx:1347
 TMultiDimFit.cxx:1348
 TMultiDimFit.cxx:1349
 TMultiDimFit.cxx:1350
 TMultiDimFit.cxx:1351
 TMultiDimFit.cxx:1352
 TMultiDimFit.cxx:1353
 TMultiDimFit.cxx:1354
 TMultiDimFit.cxx:1355
 TMultiDimFit.cxx:1356
 TMultiDimFit.cxx:1357
 TMultiDimFit.cxx:1358
 TMultiDimFit.cxx:1359
 TMultiDimFit.cxx:1360
 TMultiDimFit.cxx:1361
 TMultiDimFit.cxx:1362
 TMultiDimFit.cxx:1363
 TMultiDimFit.cxx:1364
 TMultiDimFit.cxx:1365
 TMultiDimFit.cxx:1366
 TMultiDimFit.cxx:1367
 TMultiDimFit.cxx:1368
 TMultiDimFit.cxx:1369
 TMultiDimFit.cxx:1370
 TMultiDimFit.cxx:1371
 TMultiDimFit.cxx:1372
 TMultiDimFit.cxx:1373
 TMultiDimFit.cxx:1374
 TMultiDimFit.cxx:1375
 TMultiDimFit.cxx:1376
 TMultiDimFit.cxx:1377
 TMultiDimFit.cxx:1378
 TMultiDimFit.cxx:1379
 TMultiDimFit.cxx:1380
 TMultiDimFit.cxx:1381
 TMultiDimFit.cxx:1382
 TMultiDimFit.cxx:1383
 TMultiDimFit.cxx:1384
 TMultiDimFit.cxx:1385
 TMultiDimFit.cxx:1386
 TMultiDimFit.cxx:1387
 TMultiDimFit.cxx:1388
 TMultiDimFit.cxx:1389
 TMultiDimFit.cxx:1390
 TMultiDimFit.cxx:1391
 TMultiDimFit.cxx:1392
 TMultiDimFit.cxx:1393
 TMultiDimFit.cxx:1394
 TMultiDimFit.cxx:1395
 TMultiDimFit.cxx:1396
 TMultiDimFit.cxx:1397
 TMultiDimFit.cxx:1398
 TMultiDimFit.cxx:1399
 TMultiDimFit.cxx:1400
 TMultiDimFit.cxx:1401
 TMultiDimFit.cxx:1402
 TMultiDimFit.cxx:1403
 TMultiDimFit.cxx:1404
 TMultiDimFit.cxx:1405
 TMultiDimFit.cxx:1406
 TMultiDimFit.cxx:1407
 TMultiDimFit.cxx:1408
 TMultiDimFit.cxx:1409
 TMultiDimFit.cxx:1410
 TMultiDimFit.cxx:1411
 TMultiDimFit.cxx:1412
 TMultiDimFit.cxx:1413
 TMultiDimFit.cxx:1414
 TMultiDimFit.cxx:1415
 TMultiDimFit.cxx:1416
 TMultiDimFit.cxx:1417
 TMultiDimFit.cxx:1418
 TMultiDimFit.cxx:1419
 TMultiDimFit.cxx:1420
 TMultiDimFit.cxx:1421
 TMultiDimFit.cxx:1422
 TMultiDimFit.cxx:1423
 TMultiDimFit.cxx:1424
 TMultiDimFit.cxx:1425
 TMultiDimFit.cxx:1426
 TMultiDimFit.cxx:1427
 TMultiDimFit.cxx:1428
 TMultiDimFit.cxx:1429
 TMultiDimFit.cxx:1430
 TMultiDimFit.cxx:1431
 TMultiDimFit.cxx:1432
 TMultiDimFit.cxx:1433
 TMultiDimFit.cxx:1434
 TMultiDimFit.cxx:1435
 TMultiDimFit.cxx:1436
 TMultiDimFit.cxx:1437
 TMultiDimFit.cxx:1438
 TMultiDimFit.cxx:1439
 TMultiDimFit.cxx:1440
 TMultiDimFit.cxx:1441
 TMultiDimFit.cxx:1442
 TMultiDimFit.cxx:1443
 TMultiDimFit.cxx:1444
 TMultiDimFit.cxx:1445
 TMultiDimFit.cxx:1446
 TMultiDimFit.cxx:1447
 TMultiDimFit.cxx:1448
 TMultiDimFit.cxx:1449
 TMultiDimFit.cxx:1450
 TMultiDimFit.cxx:1451
 TMultiDimFit.cxx:1452
 TMultiDimFit.cxx:1453
 TMultiDimFit.cxx:1454
 TMultiDimFit.cxx:1455
 TMultiDimFit.cxx:1456
 TMultiDimFit.cxx:1457
 TMultiDimFit.cxx:1458
 TMultiDimFit.cxx:1459
 TMultiDimFit.cxx:1460
 TMultiDimFit.cxx:1461
 TMultiDimFit.cxx:1462
 TMultiDimFit.cxx:1463
 TMultiDimFit.cxx:1464
 TMultiDimFit.cxx:1465
 TMultiDimFit.cxx:1466
 TMultiDimFit.cxx:1467
 TMultiDimFit.cxx:1468
 TMultiDimFit.cxx:1469
 TMultiDimFit.cxx:1470
 TMultiDimFit.cxx:1471
 TMultiDimFit.cxx:1472
 TMultiDimFit.cxx:1473
 TMultiDimFit.cxx:1474
 TMultiDimFit.cxx:1475
 TMultiDimFit.cxx:1476
 TMultiDimFit.cxx:1477
 TMultiDimFit.cxx:1478
 TMultiDimFit.cxx:1479
 TMultiDimFit.cxx:1480
 TMultiDimFit.cxx:1481
 TMultiDimFit.cxx:1482
 TMultiDimFit.cxx:1483
 TMultiDimFit.cxx:1484
 TMultiDimFit.cxx:1485
 TMultiDimFit.cxx:1486
 TMultiDimFit.cxx:1487
 TMultiDimFit.cxx:1488
 TMultiDimFit.cxx:1489
 TMultiDimFit.cxx:1490
 TMultiDimFit.cxx:1491
 TMultiDimFit.cxx:1492
 TMultiDimFit.cxx:1493
 TMultiDimFit.cxx:1494
 TMultiDimFit.cxx:1495
 TMultiDimFit.cxx:1496
 TMultiDimFit.cxx:1497
 TMultiDimFit.cxx:1498
 TMultiDimFit.cxx:1499
 TMultiDimFit.cxx:1500
 TMultiDimFit.cxx:1501
 TMultiDimFit.cxx:1502
 TMultiDimFit.cxx:1503
 TMultiDimFit.cxx:1504
 TMultiDimFit.cxx:1505
 TMultiDimFit.cxx:1506
 TMultiDimFit.cxx:1507
 TMultiDimFit.cxx:1508
 TMultiDimFit.cxx:1509
 TMultiDimFit.cxx:1510
 TMultiDimFit.cxx:1511
 TMultiDimFit.cxx:1512
 TMultiDimFit.cxx:1513
 TMultiDimFit.cxx:1514
 TMultiDimFit.cxx:1515
 TMultiDimFit.cxx:1516
 TMultiDimFit.cxx:1517
 TMultiDimFit.cxx:1518
 TMultiDimFit.cxx:1519
 TMultiDimFit.cxx:1520
 TMultiDimFit.cxx:1521
 TMultiDimFit.cxx:1522
 TMultiDimFit.cxx:1523
 TMultiDimFit.cxx:1524
 TMultiDimFit.cxx:1525
 TMultiDimFit.cxx:1526
 TMultiDimFit.cxx:1527
 TMultiDimFit.cxx:1528
 TMultiDimFit.cxx:1529
 TMultiDimFit.cxx:1530
 TMultiDimFit.cxx:1531
 TMultiDimFit.cxx:1532
 TMultiDimFit.cxx:1533
 TMultiDimFit.cxx:1534
 TMultiDimFit.cxx:1535
 TMultiDimFit.cxx:1536
 TMultiDimFit.cxx:1537
 TMultiDimFit.cxx:1538
 TMultiDimFit.cxx:1539
 TMultiDimFit.cxx:1540
 TMultiDimFit.cxx:1541
 TMultiDimFit.cxx:1542
 TMultiDimFit.cxx:1543
 TMultiDimFit.cxx:1544
 TMultiDimFit.cxx:1545
 TMultiDimFit.cxx:1546
 TMultiDimFit.cxx:1547
 TMultiDimFit.cxx:1548
 TMultiDimFit.cxx:1549
 TMultiDimFit.cxx:1550
 TMultiDimFit.cxx:1551
 TMultiDimFit.cxx:1552
 TMultiDimFit.cxx:1553
 TMultiDimFit.cxx:1554
 TMultiDimFit.cxx:1555
 TMultiDimFit.cxx:1556
 TMultiDimFit.cxx:1557
 TMultiDimFit.cxx:1558
 TMultiDimFit.cxx:1559
 TMultiDimFit.cxx:1560
 TMultiDimFit.cxx:1561
 TMultiDimFit.cxx:1562
 TMultiDimFit.cxx:1563
 TMultiDimFit.cxx:1564
 TMultiDimFit.cxx:1565
 TMultiDimFit.cxx:1566
 TMultiDimFit.cxx:1567
 TMultiDimFit.cxx:1568
 TMultiDimFit.cxx:1569
 TMultiDimFit.cxx:1570
 TMultiDimFit.cxx:1571
 TMultiDimFit.cxx:1572
 TMultiDimFit.cxx:1573
 TMultiDimFit.cxx:1574
 TMultiDimFit.cxx:1575
 TMultiDimFit.cxx:1576
 TMultiDimFit.cxx:1577
 TMultiDimFit.cxx:1578
 TMultiDimFit.cxx:1579
 TMultiDimFit.cxx:1580
 TMultiDimFit.cxx:1581
 TMultiDimFit.cxx:1582
 TMultiDimFit.cxx:1583
 TMultiDimFit.cxx:1584
 TMultiDimFit.cxx:1585
 TMultiDimFit.cxx:1586
 TMultiDimFit.cxx:1587
 TMultiDimFit.cxx:1588
 TMultiDimFit.cxx:1589
 TMultiDimFit.cxx:1590
 TMultiDimFit.cxx:1591
 TMultiDimFit.cxx:1592
 TMultiDimFit.cxx:1593
 TMultiDimFit.cxx:1594
 TMultiDimFit.cxx:1595
 TMultiDimFit.cxx:1596
 TMultiDimFit.cxx:1597
 TMultiDimFit.cxx:1598
 TMultiDimFit.cxx:1599
 TMultiDimFit.cxx:1600
 TMultiDimFit.cxx:1601
 TMultiDimFit.cxx:1602
 TMultiDimFit.cxx:1603
 TMultiDimFit.cxx:1604
 TMultiDimFit.cxx:1605
 TMultiDimFit.cxx:1606
 TMultiDimFit.cxx:1607
 TMultiDimFit.cxx:1608
 TMultiDimFit.cxx:1609
 TMultiDimFit.cxx:1610
 TMultiDimFit.cxx:1611
 TMultiDimFit.cxx:1612
 TMultiDimFit.cxx:1613
 TMultiDimFit.cxx:1614
 TMultiDimFit.cxx:1615
 TMultiDimFit.cxx:1616
 TMultiDimFit.cxx:1617
 TMultiDimFit.cxx:1618
 TMultiDimFit.cxx:1619
 TMultiDimFit.cxx:1620
 TMultiDimFit.cxx:1621
 TMultiDimFit.cxx:1622
 TMultiDimFit.cxx:1623
 TMultiDimFit.cxx:1624
 TMultiDimFit.cxx:1625
 TMultiDimFit.cxx:1626
 TMultiDimFit.cxx:1627
 TMultiDimFit.cxx:1628
 TMultiDimFit.cxx:1629
 TMultiDimFit.cxx:1630
 TMultiDimFit.cxx:1631
 TMultiDimFit.cxx:1632
 TMultiDimFit.cxx:1633
 TMultiDimFit.cxx:1634
 TMultiDimFit.cxx:1635
 TMultiDimFit.cxx:1636
 TMultiDimFit.cxx:1637
 TMultiDimFit.cxx:1638
 TMultiDimFit.cxx:1639
 TMultiDimFit.cxx:1640
 TMultiDimFit.cxx:1641
 TMultiDimFit.cxx:1642
 TMultiDimFit.cxx:1643
 TMultiDimFit.cxx:1644
 TMultiDimFit.cxx:1645
 TMultiDimFit.cxx:1646
 TMultiDimFit.cxx:1647
 TMultiDimFit.cxx:1648
 TMultiDimFit.cxx:1649
 TMultiDimFit.cxx:1650
 TMultiDimFit.cxx:1651
 TMultiDimFit.cxx:1652
 TMultiDimFit.cxx:1653
 TMultiDimFit.cxx:1654
 TMultiDimFit.cxx:1655
 TMultiDimFit.cxx:1656
 TMultiDimFit.cxx:1657
 TMultiDimFit.cxx:1658
 TMultiDimFit.cxx:1659
 TMultiDimFit.cxx:1660
 TMultiDimFit.cxx:1661
 TMultiDimFit.cxx:1662
 TMultiDimFit.cxx:1663
 TMultiDimFit.cxx:1664
 TMultiDimFit.cxx:1665
 TMultiDimFit.cxx:1666
 TMultiDimFit.cxx:1667
 TMultiDimFit.cxx:1668
 TMultiDimFit.cxx:1669
 TMultiDimFit.cxx:1670
 TMultiDimFit.cxx:1671
 TMultiDimFit.cxx:1672
 TMultiDimFit.cxx:1673
 TMultiDimFit.cxx:1674
 TMultiDimFit.cxx:1675
 TMultiDimFit.cxx:1676
 TMultiDimFit.cxx:1677
 TMultiDimFit.cxx:1678
 TMultiDimFit.cxx:1679
 TMultiDimFit.cxx:1680
 TMultiDimFit.cxx:1681
 TMultiDimFit.cxx:1682
 TMultiDimFit.cxx:1683
 TMultiDimFit.cxx:1684
 TMultiDimFit.cxx:1685
 TMultiDimFit.cxx:1686
 TMultiDimFit.cxx:1687
 TMultiDimFit.cxx:1688
 TMultiDimFit.cxx:1689
 TMultiDimFit.cxx:1690
 TMultiDimFit.cxx:1691
 TMultiDimFit.cxx:1692
 TMultiDimFit.cxx:1693
 TMultiDimFit.cxx:1694
 TMultiDimFit.cxx:1695
 TMultiDimFit.cxx:1696
 TMultiDimFit.cxx:1697
 TMultiDimFit.cxx:1698
 TMultiDimFit.cxx:1699
 TMultiDimFit.cxx:1700
 TMultiDimFit.cxx:1701
 TMultiDimFit.cxx:1702
 TMultiDimFit.cxx:1703
 TMultiDimFit.cxx:1704
 TMultiDimFit.cxx:1705
 TMultiDimFit.cxx:1706
 TMultiDimFit.cxx:1707
 TMultiDimFit.cxx:1708
 TMultiDimFit.cxx:1709
 TMultiDimFit.cxx:1710
 TMultiDimFit.cxx:1711
 TMultiDimFit.cxx:1712
 TMultiDimFit.cxx:1713
 TMultiDimFit.cxx:1714
 TMultiDimFit.cxx:1715
 TMultiDimFit.cxx:1716
 TMultiDimFit.cxx:1717
 TMultiDimFit.cxx:1718
 TMultiDimFit.cxx:1719
 TMultiDimFit.cxx:1720
 TMultiDimFit.cxx:1721
 TMultiDimFit.cxx:1722
 TMultiDimFit.cxx:1723
 TMultiDimFit.cxx:1724
 TMultiDimFit.cxx:1725
 TMultiDimFit.cxx:1726
 TMultiDimFit.cxx:1727
 TMultiDimFit.cxx:1728
 TMultiDimFit.cxx:1729
 TMultiDimFit.cxx:1730
 TMultiDimFit.cxx:1731
 TMultiDimFit.cxx:1732
 TMultiDimFit.cxx:1733
 TMultiDimFit.cxx:1734
 TMultiDimFit.cxx:1735
 TMultiDimFit.cxx:1736
 TMultiDimFit.cxx:1737
 TMultiDimFit.cxx:1738
 TMultiDimFit.cxx:1739
 TMultiDimFit.cxx:1740
 TMultiDimFit.cxx:1741
 TMultiDimFit.cxx:1742
 TMultiDimFit.cxx:1743
 TMultiDimFit.cxx:1744
 TMultiDimFit.cxx:1745
 TMultiDimFit.cxx:1746
 TMultiDimFit.cxx:1747
 TMultiDimFit.cxx:1748
 TMultiDimFit.cxx:1749
 TMultiDimFit.cxx:1750
 TMultiDimFit.cxx:1751
 TMultiDimFit.cxx:1752
 TMultiDimFit.cxx:1753
 TMultiDimFit.cxx:1754
 TMultiDimFit.cxx:1755
 TMultiDimFit.cxx:1756
 TMultiDimFit.cxx:1757
 TMultiDimFit.cxx:1758
 TMultiDimFit.cxx:1759
 TMultiDimFit.cxx:1760
 TMultiDimFit.cxx:1761
 TMultiDimFit.cxx:1762
 TMultiDimFit.cxx:1763
 TMultiDimFit.cxx:1764
 TMultiDimFit.cxx:1765
 TMultiDimFit.cxx:1766
 TMultiDimFit.cxx:1767
 TMultiDimFit.cxx:1768
 TMultiDimFit.cxx:1769
 TMultiDimFit.cxx:1770
 TMultiDimFit.cxx:1771
 TMultiDimFit.cxx:1772
 TMultiDimFit.cxx:1773
 TMultiDimFit.cxx:1774
 TMultiDimFit.cxx:1775
 TMultiDimFit.cxx:1776
 TMultiDimFit.cxx:1777
 TMultiDimFit.cxx:1778
 TMultiDimFit.cxx:1779
 TMultiDimFit.cxx:1780
 TMultiDimFit.cxx:1781
 TMultiDimFit.cxx:1782
 TMultiDimFit.cxx:1783
 TMultiDimFit.cxx:1784
 TMultiDimFit.cxx:1785
 TMultiDimFit.cxx:1786
 TMultiDimFit.cxx:1787
 TMultiDimFit.cxx:1788
 TMultiDimFit.cxx:1789
 TMultiDimFit.cxx:1790
 TMultiDimFit.cxx:1791
 TMultiDimFit.cxx:1792
 TMultiDimFit.cxx:1793
 TMultiDimFit.cxx:1794
 TMultiDimFit.cxx:1795
 TMultiDimFit.cxx:1796
 TMultiDimFit.cxx:1797
 TMultiDimFit.cxx:1798
 TMultiDimFit.cxx:1799
 TMultiDimFit.cxx:1800
 TMultiDimFit.cxx:1801
 TMultiDimFit.cxx:1802
 TMultiDimFit.cxx:1803
 TMultiDimFit.cxx:1804
 TMultiDimFit.cxx:1805
 TMultiDimFit.cxx:1806
 TMultiDimFit.cxx:1807
 TMultiDimFit.cxx:1808
 TMultiDimFit.cxx:1809
 TMultiDimFit.cxx:1810
 TMultiDimFit.cxx:1811
 TMultiDimFit.cxx:1812
 TMultiDimFit.cxx:1813
 TMultiDimFit.cxx:1814
 TMultiDimFit.cxx:1815
 TMultiDimFit.cxx:1816
 TMultiDimFit.cxx:1817
 TMultiDimFit.cxx:1818
 TMultiDimFit.cxx:1819
 TMultiDimFit.cxx:1820
 TMultiDimFit.cxx:1821
 TMultiDimFit.cxx:1822
 TMultiDimFit.cxx:1823
 TMultiDimFit.cxx:1824
 TMultiDimFit.cxx:1825
 TMultiDimFit.cxx:1826
 TMultiDimFit.cxx:1827
 TMultiDimFit.cxx:1828
 TMultiDimFit.cxx:1829
 TMultiDimFit.cxx:1830
 TMultiDimFit.cxx:1831
 TMultiDimFit.cxx:1832
 TMultiDimFit.cxx:1833
 TMultiDimFit.cxx:1834
 TMultiDimFit.cxx:1835
 TMultiDimFit.cxx:1836
 TMultiDimFit.cxx:1837
 TMultiDimFit.cxx:1838
 TMultiDimFit.cxx:1839
 TMultiDimFit.cxx:1840
 TMultiDimFit.cxx:1841
 TMultiDimFit.cxx:1842
 TMultiDimFit.cxx:1843
 TMultiDimFit.cxx:1844
 TMultiDimFit.cxx:1845
 TMultiDimFit.cxx:1846
 TMultiDimFit.cxx:1847
 TMultiDimFit.cxx:1848
 TMultiDimFit.cxx:1849
 TMultiDimFit.cxx:1850
 TMultiDimFit.cxx:1851
 TMultiDimFit.cxx:1852
 TMultiDimFit.cxx:1853
 TMultiDimFit.cxx:1854
 TMultiDimFit.cxx:1855
 TMultiDimFit.cxx:1856
 TMultiDimFit.cxx:1857
 TMultiDimFit.cxx:1858
 TMultiDimFit.cxx:1859
 TMultiDimFit.cxx:1860
 TMultiDimFit.cxx:1861
 TMultiDimFit.cxx:1862
 TMultiDimFit.cxx:1863
 TMultiDimFit.cxx:1864
 TMultiDimFit.cxx:1865
 TMultiDimFit.cxx:1866
 TMultiDimFit.cxx:1867
 TMultiDimFit.cxx:1868
 TMultiDimFit.cxx:1869
 TMultiDimFit.cxx:1870
 TMultiDimFit.cxx:1871
 TMultiDimFit.cxx:1872
 TMultiDimFit.cxx:1873
 TMultiDimFit.cxx:1874
 TMultiDimFit.cxx:1875
 TMultiDimFit.cxx:1876
 TMultiDimFit.cxx:1877
 TMultiDimFit.cxx:1878
 TMultiDimFit.cxx:1879
 TMultiDimFit.cxx:1880
 TMultiDimFit.cxx:1881
 TMultiDimFit.cxx:1882
 TMultiDimFit.cxx:1883
 TMultiDimFit.cxx:1884
 TMultiDimFit.cxx:1885
 TMultiDimFit.cxx:1886
 TMultiDimFit.cxx:1887
 TMultiDimFit.cxx:1888
 TMultiDimFit.cxx:1889
 TMultiDimFit.cxx:1890
 TMultiDimFit.cxx:1891
 TMultiDimFit.cxx:1892
 TMultiDimFit.cxx:1893
 TMultiDimFit.cxx:1894
 TMultiDimFit.cxx:1895
 TMultiDimFit.cxx:1896
 TMultiDimFit.cxx:1897
 TMultiDimFit.cxx:1898
 TMultiDimFit.cxx:1899
 TMultiDimFit.cxx:1900
 TMultiDimFit.cxx:1901
 TMultiDimFit.cxx:1902
 TMultiDimFit.cxx:1903
 TMultiDimFit.cxx:1904
 TMultiDimFit.cxx:1905
 TMultiDimFit.cxx:1906
 TMultiDimFit.cxx:1907
 TMultiDimFit.cxx:1908
 TMultiDimFit.cxx:1909
 TMultiDimFit.cxx:1910
 TMultiDimFit.cxx:1911
 TMultiDimFit.cxx:1912
 TMultiDimFit.cxx:1913
 TMultiDimFit.cxx:1914
 TMultiDimFit.cxx:1915
 TMultiDimFit.cxx:1916
 TMultiDimFit.cxx:1917
 TMultiDimFit.cxx:1918
 TMultiDimFit.cxx:1919
 TMultiDimFit.cxx:1920
 TMultiDimFit.cxx:1921
 TMultiDimFit.cxx:1922
 TMultiDimFit.cxx:1923
 TMultiDimFit.cxx:1924
 TMultiDimFit.cxx:1925
 TMultiDimFit.cxx:1926
 TMultiDimFit.cxx:1927
 TMultiDimFit.cxx:1928
 TMultiDimFit.cxx:1929
 TMultiDimFit.cxx:1930
 TMultiDimFit.cxx:1931
 TMultiDimFit.cxx:1932
 TMultiDimFit.cxx:1933
 TMultiDimFit.cxx:1934
 TMultiDimFit.cxx:1935
 TMultiDimFit.cxx:1936
 TMultiDimFit.cxx:1937
 TMultiDimFit.cxx:1938
 TMultiDimFit.cxx:1939
 TMultiDimFit.cxx:1940
 TMultiDimFit.cxx:1941
 TMultiDimFit.cxx:1942
 TMultiDimFit.cxx:1943
 TMultiDimFit.cxx:1944
 TMultiDimFit.cxx:1945
 TMultiDimFit.cxx:1946
 TMultiDimFit.cxx:1947
 TMultiDimFit.cxx:1948
 TMultiDimFit.cxx:1949
 TMultiDimFit.cxx:1950
 TMultiDimFit.cxx:1951
 TMultiDimFit.cxx:1952
 TMultiDimFit.cxx:1953
 TMultiDimFit.cxx:1954
 TMultiDimFit.cxx:1955
 TMultiDimFit.cxx:1956
 TMultiDimFit.cxx:1957
 TMultiDimFit.cxx:1958
 TMultiDimFit.cxx:1959
 TMultiDimFit.cxx:1960
 TMultiDimFit.cxx:1961
 TMultiDimFit.cxx:1962
 TMultiDimFit.cxx:1963
 TMultiDimFit.cxx:1964
 TMultiDimFit.cxx:1965
 TMultiDimFit.cxx:1966
 TMultiDimFit.cxx:1967
 TMultiDimFit.cxx:1968
 TMultiDimFit.cxx:1969
 TMultiDimFit.cxx:1970
 TMultiDimFit.cxx:1971
 TMultiDimFit.cxx:1972
 TMultiDimFit.cxx:1973
 TMultiDimFit.cxx:1974
 TMultiDimFit.cxx:1975
 TMultiDimFit.cxx:1976
 TMultiDimFit.cxx:1977
 TMultiDimFit.cxx:1978
 TMultiDimFit.cxx:1979
 TMultiDimFit.cxx:1980
 TMultiDimFit.cxx:1981
 TMultiDimFit.cxx:1982
 TMultiDimFit.cxx:1983
 TMultiDimFit.cxx:1984
 TMultiDimFit.cxx:1985
 TMultiDimFit.cxx:1986
 TMultiDimFit.cxx:1987
 TMultiDimFit.cxx:1988
 TMultiDimFit.cxx:1989
 TMultiDimFit.cxx:1990
 TMultiDimFit.cxx:1991
 TMultiDimFit.cxx:1992
 TMultiDimFit.cxx:1993
 TMultiDimFit.cxx:1994
 TMultiDimFit.cxx:1995
 TMultiDimFit.cxx:1996
 TMultiDimFit.cxx:1997
 TMultiDimFit.cxx:1998
 TMultiDimFit.cxx:1999
 TMultiDimFit.cxx:2000
 TMultiDimFit.cxx:2001
 TMultiDimFit.cxx:2002
 TMultiDimFit.cxx:2003
 TMultiDimFit.cxx:2004
 TMultiDimFit.cxx:2005
 TMultiDimFit.cxx:2006
 TMultiDimFit.cxx:2007
 TMultiDimFit.cxx:2008
 TMultiDimFit.cxx:2009
 TMultiDimFit.cxx:2010
 TMultiDimFit.cxx:2011
 TMultiDimFit.cxx:2012
 TMultiDimFit.cxx:2013
 TMultiDimFit.cxx:2014
 TMultiDimFit.cxx:2015
 TMultiDimFit.cxx:2016
 TMultiDimFit.cxx:2017
 TMultiDimFit.cxx:2018
 TMultiDimFit.cxx:2019
 TMultiDimFit.cxx:2020
 TMultiDimFit.cxx:2021
 TMultiDimFit.cxx:2022
 TMultiDimFit.cxx:2023
 TMultiDimFit.cxx:2024
 TMultiDimFit.cxx:2025
 TMultiDimFit.cxx:2026
 TMultiDimFit.cxx:2027
 TMultiDimFit.cxx:2028
 TMultiDimFit.cxx:2029
 TMultiDimFit.cxx:2030
 TMultiDimFit.cxx:2031
 TMultiDimFit.cxx:2032
 TMultiDimFit.cxx:2033
 TMultiDimFit.cxx:2034
 TMultiDimFit.cxx:2035
 TMultiDimFit.cxx:2036
 TMultiDimFit.cxx:2037
 TMultiDimFit.cxx:2038
 TMultiDimFit.cxx:2039
 TMultiDimFit.cxx:2040
 TMultiDimFit.cxx:2041
 TMultiDimFit.cxx:2042
 TMultiDimFit.cxx:2043
 TMultiDimFit.cxx:2044
 TMultiDimFit.cxx:2045
 TMultiDimFit.cxx:2046
 TMultiDimFit.cxx:2047
 TMultiDimFit.cxx:2048
 TMultiDimFit.cxx:2049
 TMultiDimFit.cxx:2050
 TMultiDimFit.cxx:2051
 TMultiDimFit.cxx:2052
 TMultiDimFit.cxx:2053
 TMultiDimFit.cxx:2054
 TMultiDimFit.cxx:2055
 TMultiDimFit.cxx:2056
 TMultiDimFit.cxx:2057
 TMultiDimFit.cxx:2058
 TMultiDimFit.cxx:2059
 TMultiDimFit.cxx:2060
 TMultiDimFit.cxx:2061
 TMultiDimFit.cxx:2062
 TMultiDimFit.cxx:2063
 TMultiDimFit.cxx:2064
 TMultiDimFit.cxx:2065
 TMultiDimFit.cxx:2066
 TMultiDimFit.cxx:2067
 TMultiDimFit.cxx:2068
 TMultiDimFit.cxx:2069
 TMultiDimFit.cxx:2070
 TMultiDimFit.cxx:2071
 TMultiDimFit.cxx:2072
 TMultiDimFit.cxx:2073
 TMultiDimFit.cxx:2074
 TMultiDimFit.cxx:2075
 TMultiDimFit.cxx:2076
 TMultiDimFit.cxx:2077
 TMultiDimFit.cxx:2078
 TMultiDimFit.cxx:2079
 TMultiDimFit.cxx:2080
 TMultiDimFit.cxx:2081
 TMultiDimFit.cxx:2082
 TMultiDimFit.cxx:2083
 TMultiDimFit.cxx:2084
 TMultiDimFit.cxx:2085
 TMultiDimFit.cxx:2086
 TMultiDimFit.cxx:2087
 TMultiDimFit.cxx:2088
 TMultiDimFit.cxx:2089
 TMultiDimFit.cxx:2090
 TMultiDimFit.cxx:2091
 TMultiDimFit.cxx:2092
 TMultiDimFit.cxx:2093
 TMultiDimFit.cxx:2094
 TMultiDimFit.cxx:2095
 TMultiDimFit.cxx:2096
 TMultiDimFit.cxx:2097
 TMultiDimFit.cxx:2098
 TMultiDimFit.cxx:2099
 TMultiDimFit.cxx:2100
 TMultiDimFit.cxx:2101
 TMultiDimFit.cxx:2102
 TMultiDimFit.cxx:2103
 TMultiDimFit.cxx:2104
 TMultiDimFit.cxx:2105
 TMultiDimFit.cxx:2106
 TMultiDimFit.cxx:2107
 TMultiDimFit.cxx:2108
 TMultiDimFit.cxx:2109
 TMultiDimFit.cxx:2110
 TMultiDimFit.cxx:2111
 TMultiDimFit.cxx:2112
 TMultiDimFit.cxx:2113
 TMultiDimFit.cxx:2114
 TMultiDimFit.cxx:2115
 TMultiDimFit.cxx:2116
 TMultiDimFit.cxx:2117
 TMultiDimFit.cxx:2118
 TMultiDimFit.cxx:2119
 TMultiDimFit.cxx:2120
 TMultiDimFit.cxx:2121
 TMultiDimFit.cxx:2122
 TMultiDimFit.cxx:2123
 TMultiDimFit.cxx:2124
 TMultiDimFit.cxx:2125
 TMultiDimFit.cxx:2126
 TMultiDimFit.cxx:2127
 TMultiDimFit.cxx:2128
 TMultiDimFit.cxx:2129
 TMultiDimFit.cxx:2130
 TMultiDimFit.cxx:2131
 TMultiDimFit.cxx:2132
 TMultiDimFit.cxx:2133
 TMultiDimFit.cxx:2134
 TMultiDimFit.cxx:2135
 TMultiDimFit.cxx:2136
 TMultiDimFit.cxx:2137
 TMultiDimFit.cxx:2138
 TMultiDimFit.cxx:2139
 TMultiDimFit.cxx:2140
 TMultiDimFit.cxx:2141
 TMultiDimFit.cxx:2142
 TMultiDimFit.cxx:2143
 TMultiDimFit.cxx:2144
 TMultiDimFit.cxx:2145
 TMultiDimFit.cxx:2146
 TMultiDimFit.cxx:2147
 TMultiDimFit.cxx:2148
 TMultiDimFit.cxx:2149
 TMultiDimFit.cxx:2150
 TMultiDimFit.cxx:2151
 TMultiDimFit.cxx:2152
 TMultiDimFit.cxx:2153
 TMultiDimFit.cxx:2154
 TMultiDimFit.cxx:2155
 TMultiDimFit.cxx:2156
 TMultiDimFit.cxx:2157
 TMultiDimFit.cxx:2158
 TMultiDimFit.cxx:2159
 TMultiDimFit.cxx:2160
 TMultiDimFit.cxx:2161
 TMultiDimFit.cxx:2162
 TMultiDimFit.cxx:2163
 TMultiDimFit.cxx:2164
 TMultiDimFit.cxx:2165
 TMultiDimFit.cxx:2166
 TMultiDimFit.cxx:2167
 TMultiDimFit.cxx:2168
 TMultiDimFit.cxx:2169
 TMultiDimFit.cxx:2170
 TMultiDimFit.cxx:2171
 TMultiDimFit.cxx:2172
 TMultiDimFit.cxx:2173
 TMultiDimFit.cxx:2174
 TMultiDimFit.cxx:2175
 TMultiDimFit.cxx:2176
 TMultiDimFit.cxx:2177
 TMultiDimFit.cxx:2178
 TMultiDimFit.cxx:2179
 TMultiDimFit.cxx:2180
 TMultiDimFit.cxx:2181
 TMultiDimFit.cxx:2182
 TMultiDimFit.cxx:2183
 TMultiDimFit.cxx:2184
 TMultiDimFit.cxx:2185
 TMultiDimFit.cxx:2186
 TMultiDimFit.cxx:2187
 TMultiDimFit.cxx:2188
 TMultiDimFit.cxx:2189
 TMultiDimFit.cxx:2190
 TMultiDimFit.cxx:2191
 TMultiDimFit.cxx:2192
 TMultiDimFit.cxx:2193
 TMultiDimFit.cxx:2194
 TMultiDimFit.cxx:2195
 TMultiDimFit.cxx:2196
 TMultiDimFit.cxx:2197
 TMultiDimFit.cxx:2198
 TMultiDimFit.cxx:2199
 TMultiDimFit.cxx:2200
 TMultiDimFit.cxx:2201
 TMultiDimFit.cxx:2202
 TMultiDimFit.cxx:2203
 TMultiDimFit.cxx:2204
 TMultiDimFit.cxx:2205
 TMultiDimFit.cxx:2206
 TMultiDimFit.cxx:2207
 TMultiDimFit.cxx:2208
 TMultiDimFit.cxx:2209
 TMultiDimFit.cxx:2210
 TMultiDimFit.cxx:2211
 TMultiDimFit.cxx:2212
 TMultiDimFit.cxx:2213
 TMultiDimFit.cxx:2214
 TMultiDimFit.cxx:2215
 TMultiDimFit.cxx:2216
 TMultiDimFit.cxx:2217
 TMultiDimFit.cxx:2218
 TMultiDimFit.cxx:2219
 TMultiDimFit.cxx:2220
 TMultiDimFit.cxx:2221
 TMultiDimFit.cxx:2222
 TMultiDimFit.cxx:2223
 TMultiDimFit.cxx:2224
 TMultiDimFit.cxx:2225
 TMultiDimFit.cxx:2226
 TMultiDimFit.cxx:2227
 TMultiDimFit.cxx:2228
 TMultiDimFit.cxx:2229
 TMultiDimFit.cxx:2230
 TMultiDimFit.cxx:2231
 TMultiDimFit.cxx:2232
 TMultiDimFit.cxx:2233
 TMultiDimFit.cxx:2234
 TMultiDimFit.cxx:2235
 TMultiDimFit.cxx:2236
 TMultiDimFit.cxx:2237
 TMultiDimFit.cxx:2238
 TMultiDimFit.cxx:2239
 TMultiDimFit.cxx:2240
 TMultiDimFit.cxx:2241
 TMultiDimFit.cxx:2242
 TMultiDimFit.cxx:2243
 TMultiDimFit.cxx:2244
 TMultiDimFit.cxx:2245
 TMultiDimFit.cxx:2246
 TMultiDimFit.cxx:2247
 TMultiDimFit.cxx:2248
 TMultiDimFit.cxx:2249
 TMultiDimFit.cxx:2250
 TMultiDimFit.cxx:2251
 TMultiDimFit.cxx:2252
 TMultiDimFit.cxx:2253
 TMultiDimFit.cxx:2254
 TMultiDimFit.cxx:2255
 TMultiDimFit.cxx:2256
 TMultiDimFit.cxx:2257
 TMultiDimFit.cxx:2258
 TMultiDimFit.cxx:2259
 TMultiDimFit.cxx:2260
 TMultiDimFit.cxx:2261
 TMultiDimFit.cxx:2262
 TMultiDimFit.cxx:2263
 TMultiDimFit.cxx:2264
 TMultiDimFit.cxx:2265
 TMultiDimFit.cxx:2266
 TMultiDimFit.cxx:2267
 TMultiDimFit.cxx:2268
 TMultiDimFit.cxx:2269
 TMultiDimFit.cxx:2270
 TMultiDimFit.cxx:2271
 TMultiDimFit.cxx:2272
 TMultiDimFit.cxx:2273
 TMultiDimFit.cxx:2274
 TMultiDimFit.cxx:2275
 TMultiDimFit.cxx:2276
 TMultiDimFit.cxx:2277
 TMultiDimFit.cxx:2278
 TMultiDimFit.cxx:2279
 TMultiDimFit.cxx:2280
 TMultiDimFit.cxx:2281
 TMultiDimFit.cxx:2282
 TMultiDimFit.cxx:2283
 TMultiDimFit.cxx:2284
 TMultiDimFit.cxx:2285
 TMultiDimFit.cxx:2286
 TMultiDimFit.cxx:2287
 TMultiDimFit.cxx:2288
 TMultiDimFit.cxx:2289
 TMultiDimFit.cxx:2290
 TMultiDimFit.cxx:2291
 TMultiDimFit.cxx:2292
 TMultiDimFit.cxx:2293
 TMultiDimFit.cxx:2294
 TMultiDimFit.cxx:2295
 TMultiDimFit.cxx:2296
 TMultiDimFit.cxx:2297
 TMultiDimFit.cxx:2298
 TMultiDimFit.cxx:2299
 TMultiDimFit.cxx:2300
 TMultiDimFit.cxx:2301
 TMultiDimFit.cxx:2302
 TMultiDimFit.cxx:2303
 TMultiDimFit.cxx:2304
 TMultiDimFit.cxx:2305
 TMultiDimFit.cxx:2306
 TMultiDimFit.cxx:2307
 TMultiDimFit.cxx:2308
 TMultiDimFit.cxx:2309
 TMultiDimFit.cxx:2310
 TMultiDimFit.cxx:2311
 TMultiDimFit.cxx:2312
 TMultiDimFit.cxx:2313
 TMultiDimFit.cxx:2314
 TMultiDimFit.cxx:2315
 TMultiDimFit.cxx:2316
 TMultiDimFit.cxx:2317
 TMultiDimFit.cxx:2318
 TMultiDimFit.cxx:2319
 TMultiDimFit.cxx:2320
 TMultiDimFit.cxx:2321
 TMultiDimFit.cxx:2322
 TMultiDimFit.cxx:2323
 TMultiDimFit.cxx:2324
 TMultiDimFit.cxx:2325
 TMultiDimFit.cxx:2326
 TMultiDimFit.cxx:2327
 TMultiDimFit.cxx:2328
 TMultiDimFit.cxx:2329
 TMultiDimFit.cxx:2330
 TMultiDimFit.cxx:2331
 TMultiDimFit.cxx:2332
 TMultiDimFit.cxx:2333
 TMultiDimFit.cxx:2334
 TMultiDimFit.cxx:2335
 TMultiDimFit.cxx:2336
 TMultiDimFit.cxx:2337
 TMultiDimFit.cxx:2338
 TMultiDimFit.cxx:2339
 TMultiDimFit.cxx:2340
 TMultiDimFit.cxx:2341
 TMultiDimFit.cxx:2342
 TMultiDimFit.cxx:2343
 TMultiDimFit.cxx:2344
 TMultiDimFit.cxx:2345
 TMultiDimFit.cxx:2346
 TMultiDimFit.cxx:2347
 TMultiDimFit.cxx:2348
 TMultiDimFit.cxx:2349
 TMultiDimFit.cxx:2350
 TMultiDimFit.cxx:2351
 TMultiDimFit.cxx:2352
 TMultiDimFit.cxx:2353
 TMultiDimFit.cxx:2354
 TMultiDimFit.cxx:2355
 TMultiDimFit.cxx:2356
 TMultiDimFit.cxx:2357
 TMultiDimFit.cxx:2358
 TMultiDimFit.cxx:2359
 TMultiDimFit.cxx:2360
 TMultiDimFit.cxx:2361
 TMultiDimFit.cxx:2362
 TMultiDimFit.cxx:2363
 TMultiDimFit.cxx:2364
 TMultiDimFit.cxx:2365
 TMultiDimFit.cxx:2366
 TMultiDimFit.cxx:2367
 TMultiDimFit.cxx:2368
 TMultiDimFit.cxx:2369
 TMultiDimFit.cxx:2370
 TMultiDimFit.cxx:2371
 TMultiDimFit.cxx:2372
 TMultiDimFit.cxx:2373
 TMultiDimFit.cxx:2374
 TMultiDimFit.cxx:2375
 TMultiDimFit.cxx:2376
 TMultiDimFit.cxx:2377
 TMultiDimFit.cxx:2378
 TMultiDimFit.cxx:2379
 TMultiDimFit.cxx:2380
 TMultiDimFit.cxx:2381
 TMultiDimFit.cxx:2382
 TMultiDimFit.cxx:2383
 TMultiDimFit.cxx:2384
 TMultiDimFit.cxx:2385
 TMultiDimFit.cxx:2386
 TMultiDimFit.cxx:2387
 TMultiDimFit.cxx:2388
 TMultiDimFit.cxx:2389
 TMultiDimFit.cxx:2390
 TMultiDimFit.cxx:2391
 TMultiDimFit.cxx:2392
 TMultiDimFit.cxx:2393
 TMultiDimFit.cxx:2394
 TMultiDimFit.cxx:2395
 TMultiDimFit.cxx:2396
 TMultiDimFit.cxx:2397
 TMultiDimFit.cxx:2398
 TMultiDimFit.cxx:2399
 TMultiDimFit.cxx:2400
 TMultiDimFit.cxx:2401
 TMultiDimFit.cxx:2402
 TMultiDimFit.cxx:2403
 TMultiDimFit.cxx:2404
 TMultiDimFit.cxx:2405
 TMultiDimFit.cxx:2406
 TMultiDimFit.cxx:2407
 TMultiDimFit.cxx:2408
 TMultiDimFit.cxx:2409
 TMultiDimFit.cxx:2410
 TMultiDimFit.cxx:2411
 TMultiDimFit.cxx:2412
 TMultiDimFit.cxx:2413
 TMultiDimFit.cxx:2414
 TMultiDimFit.cxx:2415
 TMultiDimFit.cxx:2416
 TMultiDimFit.cxx:2417
 TMultiDimFit.cxx:2418
 TMultiDimFit.cxx:2419
 TMultiDimFit.cxx:2420
 TMultiDimFit.cxx:2421
 TMultiDimFit.cxx:2422
 TMultiDimFit.cxx:2423
 TMultiDimFit.cxx:2424
 TMultiDimFit.cxx:2425
 TMultiDimFit.cxx:2426
 TMultiDimFit.cxx:2427
 TMultiDimFit.cxx:2428
 TMultiDimFit.cxx:2429
 TMultiDimFit.cxx:2430
 TMultiDimFit.cxx:2431
 TMultiDimFit.cxx:2432
 TMultiDimFit.cxx:2433
 TMultiDimFit.cxx:2434
 TMultiDimFit.cxx:2435
 TMultiDimFit.cxx:2436
 TMultiDimFit.cxx:2437
 TMultiDimFit.cxx:2438
 TMultiDimFit.cxx:2439
 TMultiDimFit.cxx:2440
 TMultiDimFit.cxx:2441
 TMultiDimFit.cxx:2442
 TMultiDimFit.cxx:2443
 TMultiDimFit.cxx:2444
 TMultiDimFit.cxx:2445
 TMultiDimFit.cxx:2446
 TMultiDimFit.cxx:2447
 TMultiDimFit.cxx:2448
 TMultiDimFit.cxx:2449
 TMultiDimFit.cxx:2450
 TMultiDimFit.cxx:2451
 TMultiDimFit.cxx:2452
 TMultiDimFit.cxx:2453
 TMultiDimFit.cxx:2454
 TMultiDimFit.cxx:2455
 TMultiDimFit.cxx:2456
 TMultiDimFit.cxx:2457
 TMultiDimFit.cxx:2458
 TMultiDimFit.cxx:2459
 TMultiDimFit.cxx:2460
 TMultiDimFit.cxx:2461
 TMultiDimFit.cxx:2462
 TMultiDimFit.cxx:2463
 TMultiDimFit.cxx:2464
 TMultiDimFit.cxx:2465
 TMultiDimFit.cxx:2466
 TMultiDimFit.cxx:2467
 TMultiDimFit.cxx:2468
 TMultiDimFit.cxx:2469
 TMultiDimFit.cxx:2470
 TMultiDimFit.cxx:2471
 TMultiDimFit.cxx:2472
 TMultiDimFit.cxx:2473
 TMultiDimFit.cxx:2474
 TMultiDimFit.cxx:2475
 TMultiDimFit.cxx:2476
 TMultiDimFit.cxx:2477
 TMultiDimFit.cxx:2478
 TMultiDimFit.cxx:2479
 TMultiDimFit.cxx:2480
 TMultiDimFit.cxx:2481
 TMultiDimFit.cxx:2482
 TMultiDimFit.cxx:2483
 TMultiDimFit.cxx:2484
 TMultiDimFit.cxx:2485
 TMultiDimFit.cxx:2486
 TMultiDimFit.cxx:2487
 TMultiDimFit.cxx:2488
 TMultiDimFit.cxx:2489
 TMultiDimFit.cxx:2490
 TMultiDimFit.cxx:2491
 TMultiDimFit.cxx:2492
 TMultiDimFit.cxx:2493
 TMultiDimFit.cxx:2494
 TMultiDimFit.cxx:2495
 TMultiDimFit.cxx:2496
 TMultiDimFit.cxx:2497
 TMultiDimFit.cxx:2498
 TMultiDimFit.cxx:2499
 TMultiDimFit.cxx:2500
 TMultiDimFit.cxx:2501
 TMultiDimFit.cxx:2502
 TMultiDimFit.cxx:2503
 TMultiDimFit.cxx:2504
 TMultiDimFit.cxx:2505
 TMultiDimFit.cxx:2506
 TMultiDimFit.cxx:2507
 TMultiDimFit.cxx:2508
 TMultiDimFit.cxx:2509
 TMultiDimFit.cxx:2510
 TMultiDimFit.cxx:2511
 TMultiDimFit.cxx:2512
 TMultiDimFit.cxx:2513
 TMultiDimFit.cxx:2514
 TMultiDimFit.cxx:2515
 TMultiDimFit.cxx:2516
 TMultiDimFit.cxx:2517
 TMultiDimFit.cxx:2518
 TMultiDimFit.cxx:2519
 TMultiDimFit.cxx:2520
 TMultiDimFit.cxx:2521
 TMultiDimFit.cxx:2522
 TMultiDimFit.cxx:2523
 TMultiDimFit.cxx:2524
 TMultiDimFit.cxx:2525
 TMultiDimFit.cxx:2526
 TMultiDimFit.cxx:2527
 TMultiDimFit.cxx:2528
 TMultiDimFit.cxx:2529
 TMultiDimFit.cxx:2530
 TMultiDimFit.cxx:2531
 TMultiDimFit.cxx:2532
 TMultiDimFit.cxx:2533
 TMultiDimFit.cxx:2534
 TMultiDimFit.cxx:2535
 TMultiDimFit.cxx:2536
 TMultiDimFit.cxx:2537
 TMultiDimFit.cxx:2538
 TMultiDimFit.cxx:2539
 TMultiDimFit.cxx:2540
 TMultiDimFit.cxx:2541
 TMultiDimFit.cxx:2542
 TMultiDimFit.cxx:2543
 TMultiDimFit.cxx:2544
 TMultiDimFit.cxx:2545
 TMultiDimFit.cxx:2546
 TMultiDimFit.cxx:2547
 TMultiDimFit.cxx:2548
 TMultiDimFit.cxx:2549
 TMultiDimFit.cxx:2550
 TMultiDimFit.cxx:2551
 TMultiDimFit.cxx:2552
 TMultiDimFit.cxx:2553
 TMultiDimFit.cxx:2554
 TMultiDimFit.cxx:2555
 TMultiDimFit.cxx:2556
 TMultiDimFit.cxx:2557
 TMultiDimFit.cxx:2558
 TMultiDimFit.cxx:2559
 TMultiDimFit.cxx:2560
 TMultiDimFit.cxx:2561
 TMultiDimFit.cxx:2562
 TMultiDimFit.cxx:2563
 TMultiDimFit.cxx:2564
 TMultiDimFit.cxx:2565
 TMultiDimFit.cxx:2566
 TMultiDimFit.cxx:2567
 TMultiDimFit.cxx:2568
 TMultiDimFit.cxx:2569
 TMultiDimFit.cxx:2570
 TMultiDimFit.cxx:2571
 TMultiDimFit.cxx:2572
 TMultiDimFit.cxx:2573
 TMultiDimFit.cxx:2574
 TMultiDimFit.cxx:2575
 TMultiDimFit.cxx:2576
 TMultiDimFit.cxx:2577
 TMultiDimFit.cxx:2578
 TMultiDimFit.cxx:2579
 TMultiDimFit.cxx:2580
 TMultiDimFit.cxx:2581
 TMultiDimFit.cxx:2582
 TMultiDimFit.cxx:2583
 TMultiDimFit.cxx:2584
 TMultiDimFit.cxx:2585
 TMultiDimFit.cxx:2586
 TMultiDimFit.cxx:2587
 TMultiDimFit.cxx:2588
 TMultiDimFit.cxx:2589
 TMultiDimFit.cxx:2590
 TMultiDimFit.cxx:2591
 TMultiDimFit.cxx:2592
 TMultiDimFit.cxx:2593
 TMultiDimFit.cxx:2594
 TMultiDimFit.cxx:2595
 TMultiDimFit.cxx:2596
 TMultiDimFit.cxx:2597
 TMultiDimFit.cxx:2598
 TMultiDimFit.cxx:2599
 TMultiDimFit.cxx:2600
 TMultiDimFit.cxx:2601
 TMultiDimFit.cxx:2602
 TMultiDimFit.cxx:2603
 TMultiDimFit.cxx:2604
 TMultiDimFit.cxx:2605
 TMultiDimFit.cxx:2606
 TMultiDimFit.cxx:2607
 TMultiDimFit.cxx:2608
 TMultiDimFit.cxx:2609
 TMultiDimFit.cxx:2610
 TMultiDimFit.cxx:2611
 TMultiDimFit.cxx:2612
 TMultiDimFit.cxx:2613
 TMultiDimFit.cxx:2614
 TMultiDimFit.cxx:2615
 TMultiDimFit.cxx:2616
 TMultiDimFit.cxx:2617
 TMultiDimFit.cxx:2618
 TMultiDimFit.cxx:2619
 TMultiDimFit.cxx:2620
 TMultiDimFit.cxx:2621
 TMultiDimFit.cxx:2622
 TMultiDimFit.cxx:2623
 TMultiDimFit.cxx:2624
 TMultiDimFit.cxx:2625
 TMultiDimFit.cxx:2626
 TMultiDimFit.cxx:2627
 TMultiDimFit.cxx:2628
 TMultiDimFit.cxx:2629
 TMultiDimFit.cxx:2630
 TMultiDimFit.cxx:2631
 TMultiDimFit.cxx:2632
 TMultiDimFit.cxx:2633
 TMultiDimFit.cxx:2634
 TMultiDimFit.cxx:2635
 TMultiDimFit.cxx:2636
 TMultiDimFit.cxx:2637
 TMultiDimFit.cxx:2638
 TMultiDimFit.cxx:2639
 TMultiDimFit.cxx:2640
 TMultiDimFit.cxx:2641
 TMultiDimFit.cxx:2642
 TMultiDimFit.cxx:2643
 TMultiDimFit.cxx:2644
 TMultiDimFit.cxx:2645
 TMultiDimFit.cxx:2646
 TMultiDimFit.cxx:2647
 TMultiDimFit.cxx:2648
 TMultiDimFit.cxx:2649
 TMultiDimFit.cxx:2650
 TMultiDimFit.cxx:2651
 TMultiDimFit.cxx:2652
 TMultiDimFit.cxx:2653
 TMultiDimFit.cxx:2654
 TMultiDimFit.cxx:2655
 TMultiDimFit.cxx:2656
 TMultiDimFit.cxx:2657
 TMultiDimFit.cxx:2658
 TMultiDimFit.cxx:2659
 TMultiDimFit.cxx:2660
 TMultiDimFit.cxx:2661
 TMultiDimFit.cxx:2662
 TMultiDimFit.cxx:2663
 TMultiDimFit.cxx:2664
 TMultiDimFit.cxx:2665
 TMultiDimFit.cxx:2666
 TMultiDimFit.cxx:2667
 TMultiDimFit.cxx:2668
 TMultiDimFit.cxx:2669
 TMultiDimFit.cxx:2670
 TMultiDimFit.cxx:2671
 TMultiDimFit.cxx:2672
 TMultiDimFit.cxx:2673
 TMultiDimFit.cxx:2674
 TMultiDimFit.cxx:2675
 TMultiDimFit.cxx:2676
 TMultiDimFit.cxx:2677
 TMultiDimFit.cxx:2678
 TMultiDimFit.cxx:2679
 TMultiDimFit.cxx:2680
 TMultiDimFit.cxx:2681
 TMultiDimFit.cxx:2682
 TMultiDimFit.cxx:2683
 TMultiDimFit.cxx:2684
 TMultiDimFit.cxx:2685
 TMultiDimFit.cxx:2686
 TMultiDimFit.cxx:2687
 TMultiDimFit.cxx:2688
 TMultiDimFit.cxx:2689
 TMultiDimFit.cxx:2690
 TMultiDimFit.cxx:2691
 TMultiDimFit.cxx:2692
 TMultiDimFit.cxx:2693
 TMultiDimFit.cxx:2694
 TMultiDimFit.cxx:2695
 TMultiDimFit.cxx:2696
 TMultiDimFit.cxx:2697
 TMultiDimFit.cxx:2698
 TMultiDimFit.cxx:2699
 TMultiDimFit.cxx:2700
 TMultiDimFit.cxx:2701
 TMultiDimFit.cxx:2702
 TMultiDimFit.cxx:2703
 TMultiDimFit.cxx:2704
 TMultiDimFit.cxx:2705
 TMultiDimFit.cxx:2706
 TMultiDimFit.cxx:2707
 TMultiDimFit.cxx:2708
 TMultiDimFit.cxx:2709
 TMultiDimFit.cxx:2710
 TMultiDimFit.cxx:2711
 TMultiDimFit.cxx:2712
 TMultiDimFit.cxx:2713
 TMultiDimFit.cxx:2714
 TMultiDimFit.cxx:2715
 TMultiDimFit.cxx:2716
 TMultiDimFit.cxx:2717
 TMultiDimFit.cxx:2718
 TMultiDimFit.cxx:2719
 TMultiDimFit.cxx:2720
 TMultiDimFit.cxx:2721
 TMultiDimFit.cxx:2722
 TMultiDimFit.cxx:2723
 TMultiDimFit.cxx:2724
 TMultiDimFit.cxx:2725
 TMultiDimFit.cxx:2726
 TMultiDimFit.cxx:2727
 TMultiDimFit.cxx:2728
 TMultiDimFit.cxx:2729
 TMultiDimFit.cxx:2730
 TMultiDimFit.cxx:2731
 TMultiDimFit.cxx:2732
 TMultiDimFit.cxx:2733
 TMultiDimFit.cxx:2734
 TMultiDimFit.cxx:2735
 TMultiDimFit.cxx:2736
 TMultiDimFit.cxx:2737
 TMultiDimFit.cxx:2738
 TMultiDimFit.cxx:2739
 TMultiDimFit.cxx:2740
 TMultiDimFit.cxx:2741
 TMultiDimFit.cxx:2742
 TMultiDimFit.cxx:2743
 TMultiDimFit.cxx:2744
 TMultiDimFit.cxx:2745
 TMultiDimFit.cxx:2746
 TMultiDimFit.cxx:2747
 TMultiDimFit.cxx:2748
 TMultiDimFit.cxx:2749
 TMultiDimFit.cxx:2750
 TMultiDimFit.cxx:2751
 TMultiDimFit.cxx:2752
 TMultiDimFit.cxx:2753
 TMultiDimFit.cxx:2754
 TMultiDimFit.cxx:2755
 TMultiDimFit.cxx:2756
 TMultiDimFit.cxx:2757
 TMultiDimFit.cxx:2758
 TMultiDimFit.cxx:2759
 TMultiDimFit.cxx:2760
 TMultiDimFit.cxx:2761
 TMultiDimFit.cxx:2762
 TMultiDimFit.cxx:2763
 TMultiDimFit.cxx:2764
 TMultiDimFit.cxx:2765
 TMultiDimFit.cxx:2766
 TMultiDimFit.cxx:2767
 TMultiDimFit.cxx:2768
 TMultiDimFit.cxx:2769
 TMultiDimFit.cxx:2770
 TMultiDimFit.cxx:2771
 TMultiDimFit.cxx:2772
 TMultiDimFit.cxx:2773
 TMultiDimFit.cxx:2774
 TMultiDimFit.cxx:2775
 TMultiDimFit.cxx:2776
 TMultiDimFit.cxx:2777
 TMultiDimFit.cxx:2778
 TMultiDimFit.cxx:2779
 TMultiDimFit.cxx:2780
 TMultiDimFit.cxx:2781
 TMultiDimFit.cxx:2782
 TMultiDimFit.cxx:2783
 TMultiDimFit.cxx:2784
 TMultiDimFit.cxx:2785
 TMultiDimFit.cxx:2786
 TMultiDimFit.cxx:2787
 TMultiDimFit.cxx:2788
 TMultiDimFit.cxx:2789
 TMultiDimFit.cxx:2790
 TMultiDimFit.cxx:2791
 TMultiDimFit.cxx:2792
 TMultiDimFit.cxx:2793
 TMultiDimFit.cxx:2794
 TMultiDimFit.cxx:2795
 TMultiDimFit.cxx:2796
 TMultiDimFit.cxx:2797
 TMultiDimFit.cxx:2798
 TMultiDimFit.cxx:2799
 TMultiDimFit.cxx:2800
 TMultiDimFit.cxx:2801
 TMultiDimFit.cxx:2802
 TMultiDimFit.cxx:2803
 TMultiDimFit.cxx:2804
 TMultiDimFit.cxx:2805
 TMultiDimFit.cxx:2806
 TMultiDimFit.cxx:2807
 TMultiDimFit.cxx:2808
 TMultiDimFit.cxx:2809
 TMultiDimFit.cxx:2810
 TMultiDimFit.cxx:2811
 TMultiDimFit.cxx:2812
 TMultiDimFit.cxx:2813
 TMultiDimFit.cxx:2814
 TMultiDimFit.cxx:2815
 TMultiDimFit.cxx:2816
 TMultiDimFit.cxx:2817
 TMultiDimFit.cxx:2818
 TMultiDimFit.cxx:2819
 TMultiDimFit.cxx:2820
 TMultiDimFit.cxx:2821
 TMultiDimFit.cxx:2822
 TMultiDimFit.cxx:2823
 TMultiDimFit.cxx:2824
 TMultiDimFit.cxx:2825
 TMultiDimFit.cxx:2826
 TMultiDimFit.cxx:2827
 TMultiDimFit.cxx:2828
 TMultiDimFit.cxx:2829
 TMultiDimFit.cxx:2830
 TMultiDimFit.cxx:2831
 TMultiDimFit.cxx:2832
 TMultiDimFit.cxx:2833
 TMultiDimFit.cxx:2834
 TMultiDimFit.cxx:2835
 TMultiDimFit.cxx:2836
 TMultiDimFit.cxx:2837
 TMultiDimFit.cxx:2838
 TMultiDimFit.cxx:2839
 TMultiDimFit.cxx:2840
 TMultiDimFit.cxx:2841
 TMultiDimFit.cxx:2842
 TMultiDimFit.cxx:2843
 TMultiDimFit.cxx:2844
 TMultiDimFit.cxx:2845
 TMultiDimFit.cxx:2846
 TMultiDimFit.cxx:2847
 TMultiDimFit.cxx:2848
 TMultiDimFit.cxx:2849
 TMultiDimFit.cxx:2850
 TMultiDimFit.cxx:2851
 TMultiDimFit.cxx:2852
 TMultiDimFit.cxx:2853
 TMultiDimFit.cxx:2854
 TMultiDimFit.cxx:2855
 TMultiDimFit.cxx:2856
 TMultiDimFit.cxx:2857
 TMultiDimFit.cxx:2858
 TMultiDimFit.cxx:2859
 TMultiDimFit.cxx:2860
 TMultiDimFit.cxx:2861
 TMultiDimFit.cxx:2862
 TMultiDimFit.cxx:2863
 TMultiDimFit.cxx:2864
 TMultiDimFit.cxx:2865
 TMultiDimFit.cxx:2866
 TMultiDimFit.cxx:2867
 TMultiDimFit.cxx:2868
 TMultiDimFit.cxx:2869
 TMultiDimFit.cxx:2870
 TMultiDimFit.cxx:2871
 TMultiDimFit.cxx:2872
 TMultiDimFit.cxx:2873
 TMultiDimFit.cxx:2874
 TMultiDimFit.cxx:2875
 TMultiDimFit.cxx:2876
 TMultiDimFit.cxx:2877
 TMultiDimFit.cxx:2878
 TMultiDimFit.cxx:2879
 TMultiDimFit.cxx:2880
 TMultiDimFit.cxx:2881
 TMultiDimFit.cxx:2882
 TMultiDimFit.cxx:2883
 TMultiDimFit.cxx:2884
 TMultiDimFit.cxx:2885
 TMultiDimFit.cxx:2886
 TMultiDimFit.cxx:2887
 TMultiDimFit.cxx:2888
 TMultiDimFit.cxx:2889
 TMultiDimFit.cxx:2890
 TMultiDimFit.cxx:2891
 TMultiDimFit.cxx:2892
 TMultiDimFit.cxx:2893
 TMultiDimFit.cxx:2894
 TMultiDimFit.cxx:2895
 TMultiDimFit.cxx:2896
 TMultiDimFit.cxx:2897
 TMultiDimFit.cxx:2898
 TMultiDimFit.cxx:2899
 TMultiDimFit.cxx:2900
 TMultiDimFit.cxx:2901
 TMultiDimFit.cxx:2902
 TMultiDimFit.cxx:2903
 TMultiDimFit.cxx:2904
 TMultiDimFit.cxx:2905
 TMultiDimFit.cxx:2906
 TMultiDimFit.cxx:2907
 TMultiDimFit.cxx:2908
 TMultiDimFit.cxx:2909
 TMultiDimFit.cxx:2910
 TMultiDimFit.cxx:2911
 TMultiDimFit.cxx:2912
 TMultiDimFit.cxx:2913
 TMultiDimFit.cxx:2914
 TMultiDimFit.cxx:2915
 TMultiDimFit.cxx:2916
 TMultiDimFit.cxx:2917
 TMultiDimFit.cxx:2918
 TMultiDimFit.cxx:2919
 TMultiDimFit.cxx:2920
 TMultiDimFit.cxx:2921
 TMultiDimFit.cxx:2922
 TMultiDimFit.cxx:2923
 TMultiDimFit.cxx:2924
 TMultiDimFit.cxx:2925
 TMultiDimFit.cxx:2926
 TMultiDimFit.cxx:2927
 TMultiDimFit.cxx:2928
 TMultiDimFit.cxx:2929
 TMultiDimFit.cxx:2930
 TMultiDimFit.cxx:2931
 TMultiDimFit.cxx:2932
 TMultiDimFit.cxx:2933
 TMultiDimFit.cxx:2934
 TMultiDimFit.cxx:2935
 TMultiDimFit.cxx:2936
 TMultiDimFit.cxx:2937
 TMultiDimFit.cxx:2938
 TMultiDimFit.cxx:2939
 TMultiDimFit.cxx:2940
 TMultiDimFit.cxx:2941
 TMultiDimFit.cxx:2942
 TMultiDimFit.cxx:2943
 TMultiDimFit.cxx:2944
 TMultiDimFit.cxx:2945
 TMultiDimFit.cxx:2946
 TMultiDimFit.cxx:2947
 TMultiDimFit.cxx:2948
 TMultiDimFit.cxx:2949
 TMultiDimFit.cxx:2950
 TMultiDimFit.cxx:2951
 TMultiDimFit.cxx:2952
 TMultiDimFit.cxx:2953
 TMultiDimFit.cxx:2954
 TMultiDimFit.cxx:2955
 TMultiDimFit.cxx:2956
 TMultiDimFit.cxx:2957
 TMultiDimFit.cxx:2958
 TMultiDimFit.cxx:2959
 TMultiDimFit.cxx:2960
 TMultiDimFit.cxx:2961
 TMultiDimFit.cxx:2962
 TMultiDimFit.cxx:2963
 TMultiDimFit.cxx:2964
 TMultiDimFit.cxx:2965
 TMultiDimFit.cxx:2966
 TMultiDimFit.cxx:2967
 TMultiDimFit.cxx:2968
 TMultiDimFit.cxx:2969
 TMultiDimFit.cxx:2970
 TMultiDimFit.cxx:2971
 TMultiDimFit.cxx:2972
 TMultiDimFit.cxx:2973
 TMultiDimFit.cxx:2974
 TMultiDimFit.cxx:2975
 TMultiDimFit.cxx:2976
 TMultiDimFit.cxx:2977
 TMultiDimFit.cxx:2978
 TMultiDimFit.cxx:2979
 TMultiDimFit.cxx:2980
 TMultiDimFit.cxx:2981
 TMultiDimFit.cxx:2982
 TMultiDimFit.cxx:2983
 TMultiDimFit.cxx:2984
 TMultiDimFit.cxx:2985
 TMultiDimFit.cxx:2986
 TMultiDimFit.cxx:2987
 TMultiDimFit.cxx:2988
 TMultiDimFit.cxx:2989
 TMultiDimFit.cxx:2990
 TMultiDimFit.cxx:2991
 TMultiDimFit.cxx:2992
 TMultiDimFit.cxx:2993
 TMultiDimFit.cxx:2994
 TMultiDimFit.cxx:2995
 TMultiDimFit.cxx:2996
 TMultiDimFit.cxx:2997
 TMultiDimFit.cxx:2998
 TMultiDimFit.cxx:2999
 TMultiDimFit.cxx:3000
 TMultiDimFit.cxx:3001
 TMultiDimFit.cxx:3002
 TMultiDimFit.cxx:3003
 TMultiDimFit.cxx:3004
 TMultiDimFit.cxx:3005
 TMultiDimFit.cxx:3006
 TMultiDimFit.cxx:3007
 TMultiDimFit.cxx:3008
 TMultiDimFit.cxx:3009
 TMultiDimFit.cxx:3010
 TMultiDimFit.cxx:3011
 TMultiDimFit.cxx:3012
 TMultiDimFit.cxx:3013
 TMultiDimFit.cxx:3014
 TMultiDimFit.cxx:3015
 TMultiDimFit.cxx:3016
 TMultiDimFit.cxx:3017
 TMultiDimFit.cxx:3018
 TMultiDimFit.cxx:3019
 TMultiDimFit.cxx:3020
 TMultiDimFit.cxx:3021
 TMultiDimFit.cxx:3022
 TMultiDimFit.cxx:3023
 TMultiDimFit.cxx:3024
 TMultiDimFit.cxx:3025
 TMultiDimFit.cxx:3026
 TMultiDimFit.cxx:3027
 TMultiDimFit.cxx:3028
 TMultiDimFit.cxx:3029
 TMultiDimFit.cxx:3030
 TMultiDimFit.cxx:3031
 TMultiDimFit.cxx:3032
 TMultiDimFit.cxx:3033
 TMultiDimFit.cxx:3034
 TMultiDimFit.cxx:3035
 TMultiDimFit.cxx:3036
 TMultiDimFit.cxx:3037
 TMultiDimFit.cxx:3038
 TMultiDimFit.cxx:3039
 TMultiDimFit.cxx:3040
 TMultiDimFit.cxx:3041
 TMultiDimFit.cxx:3042
 TMultiDimFit.cxx:3043
 TMultiDimFit.cxx:3044
 TMultiDimFit.cxx:3045
 TMultiDimFit.cxx:3046
 TMultiDimFit.cxx:3047
 TMultiDimFit.cxx:3048
 TMultiDimFit.cxx:3049
 TMultiDimFit.cxx:3050
 TMultiDimFit.cxx:3051
 TMultiDimFit.cxx:3052
 TMultiDimFit.cxx:3053
 TMultiDimFit.cxx:3054
 TMultiDimFit.cxx:3055
 TMultiDimFit.cxx:3056
 TMultiDimFit.cxx:3057
 TMultiDimFit.cxx:3058
 TMultiDimFit.cxx:3059
 TMultiDimFit.cxx:3060
 TMultiDimFit.cxx:3061
 TMultiDimFit.cxx:3062
 TMultiDimFit.cxx:3063
 TMultiDimFit.cxx:3064
 TMultiDimFit.cxx:3065
 TMultiDimFit.cxx:3066
 TMultiDimFit.cxx:3067
 TMultiDimFit.cxx:3068
 TMultiDimFit.cxx:3069
 TMultiDimFit.cxx:3070
 TMultiDimFit.cxx:3071
 TMultiDimFit.cxx:3072
 TMultiDimFit.cxx:3073
 TMultiDimFit.cxx:3074
 TMultiDimFit.cxx:3075
 TMultiDimFit.cxx:3076
 TMultiDimFit.cxx:3077
 TMultiDimFit.cxx:3078
 TMultiDimFit.cxx:3079
 TMultiDimFit.cxx:3080
 TMultiDimFit.cxx:3081
 TMultiDimFit.cxx:3082
 TMultiDimFit.cxx:3083
 TMultiDimFit.cxx:3084
 TMultiDimFit.cxx:3085
 TMultiDimFit.cxx:3086
 TMultiDimFit.cxx:3087
 TMultiDimFit.cxx:3088
 TMultiDimFit.cxx:3089
 TMultiDimFit.cxx:3090
 TMultiDimFit.cxx:3091
 TMultiDimFit.cxx:3092
 TMultiDimFit.cxx:3093
 TMultiDimFit.cxx:3094
 TMultiDimFit.cxx:3095
 TMultiDimFit.cxx:3096
 TMultiDimFit.cxx:3097
 TMultiDimFit.cxx:3098
 TMultiDimFit.cxx:3099
 TMultiDimFit.cxx:3100
 TMultiDimFit.cxx:3101
 TMultiDimFit.cxx:3102
 TMultiDimFit.cxx:3103
 TMultiDimFit.cxx:3104
 TMultiDimFit.cxx:3105
 TMultiDimFit.cxx:3106
 TMultiDimFit.cxx:3107
 TMultiDimFit.cxx:3108
 TMultiDimFit.cxx:3109
 TMultiDimFit.cxx:3110
 TMultiDimFit.cxx:3111
 TMultiDimFit.cxx:3112
 TMultiDimFit.cxx:3113
 TMultiDimFit.cxx:3114
 TMultiDimFit.cxx:3115
 TMultiDimFit.cxx:3116
 TMultiDimFit.cxx:3117
 TMultiDimFit.cxx:3118
 TMultiDimFit.cxx:3119
 TMultiDimFit.cxx:3120
 TMultiDimFit.cxx:3121
 TMultiDimFit.cxx:3122
 TMultiDimFit.cxx:3123
 TMultiDimFit.cxx:3124
 TMultiDimFit.cxx:3125
 TMultiDimFit.cxx:3126
 TMultiDimFit.cxx:3127
 TMultiDimFit.cxx:3128
 TMultiDimFit.cxx:3129
 TMultiDimFit.cxx:3130
 TMultiDimFit.cxx:3131
 TMultiDimFit.cxx:3132
 TMultiDimFit.cxx:3133
 TMultiDimFit.cxx:3134
 TMultiDimFit.cxx:3135
 TMultiDimFit.cxx:3136
 TMultiDimFit.cxx:3137
 TMultiDimFit.cxx:3138
 TMultiDimFit.cxx:3139
 TMultiDimFit.cxx:3140
 TMultiDimFit.cxx:3141
 TMultiDimFit.cxx:3142
 TMultiDimFit.cxx:3143
 TMultiDimFit.cxx:3144
 TMultiDimFit.cxx:3145
 TMultiDimFit.cxx:3146
 TMultiDimFit.cxx:3147
 TMultiDimFit.cxx:3148
 TMultiDimFit.cxx:3149
 TMultiDimFit.cxx:3150
 TMultiDimFit.cxx:3151
 TMultiDimFit.cxx:3152
 TMultiDimFit.cxx:3153
 TMultiDimFit.cxx:3154
 TMultiDimFit.cxx:3155
 TMultiDimFit.cxx:3156
 TMultiDimFit.cxx:3157
 TMultiDimFit.cxx:3158
 TMultiDimFit.cxx:3159
 TMultiDimFit.cxx:3160
 TMultiDimFit.cxx:3161
 TMultiDimFit.cxx:3162
 TMultiDimFit.cxx:3163
 TMultiDimFit.cxx:3164
 TMultiDimFit.cxx:3165
 TMultiDimFit.cxx:3166
 TMultiDimFit.cxx:3167
 TMultiDimFit.cxx:3168
 TMultiDimFit.cxx:3169
 TMultiDimFit.cxx:3170
 TMultiDimFit.cxx:3171
 TMultiDimFit.cxx:3172
 TMultiDimFit.cxx:3173
 TMultiDimFit.cxx:3174
 TMultiDimFit.cxx:3175
 TMultiDimFit.cxx:3176
 TMultiDimFit.cxx:3177
 TMultiDimFit.cxx:3178
 TMultiDimFit.cxx:3179
 TMultiDimFit.cxx:3180
 TMultiDimFit.cxx:3181
 TMultiDimFit.cxx:3182
 TMultiDimFit.cxx:3183
 TMultiDimFit.cxx:3184
 TMultiDimFit.cxx:3185
 TMultiDimFit.cxx:3186
 TMultiDimFit.cxx:3187
 TMultiDimFit.cxx:3188
 TMultiDimFit.cxx:3189
 TMultiDimFit.cxx:3190
 TMultiDimFit.cxx:3191
 TMultiDimFit.cxx:3192
 TMultiDimFit.cxx:3193
 TMultiDimFit.cxx:3194
 TMultiDimFit.cxx:3195
 TMultiDimFit.cxx:3196
 TMultiDimFit.cxx:3197
 TMultiDimFit.cxx:3198
 TMultiDimFit.cxx:3199
 TMultiDimFit.cxx:3200
 TMultiDimFit.cxx:3201
 TMultiDimFit.cxx:3202
 TMultiDimFit.cxx:3203
 TMultiDimFit.cxx:3204
 TMultiDimFit.cxx:3205
 TMultiDimFit.cxx:3206
 TMultiDimFit.cxx:3207
 TMultiDimFit.cxx:3208
 TMultiDimFit.cxx:3209
 TMultiDimFit.cxx:3210
 TMultiDimFit.cxx:3211
 TMultiDimFit.cxx:3212
 TMultiDimFit.cxx:3213
 TMultiDimFit.cxx:3214
 TMultiDimFit.cxx:3215
 TMultiDimFit.cxx:3216
 TMultiDimFit.cxx:3217
 TMultiDimFit.cxx:3218
 TMultiDimFit.cxx:3219
 TMultiDimFit.cxx:3220
 TMultiDimFit.cxx:3221
 TMultiDimFit.cxx:3222
 TMultiDimFit.cxx:3223
 TMultiDimFit.cxx:3224
 TMultiDimFit.cxx:3225
 TMultiDimFit.cxx:3226
 TMultiDimFit.cxx:3227
 TMultiDimFit.cxx:3228
 TMultiDimFit.cxx:3229
 TMultiDimFit.cxx:3230
 TMultiDimFit.cxx:3231
 TMultiDimFit.cxx:3232
 TMultiDimFit.cxx:3233
 TMultiDimFit.cxx:3234
 TMultiDimFit.cxx:3235
 TMultiDimFit.cxx:3236
 TMultiDimFit.cxx:3237
 TMultiDimFit.cxx:3238
 TMultiDimFit.cxx:3239
 TMultiDimFit.cxx:3240
 TMultiDimFit.cxx:3241
 TMultiDimFit.cxx:3242
 TMultiDimFit.cxx:3243
 TMultiDimFit.cxx:3244
 TMultiDimFit.cxx:3245
 TMultiDimFit.cxx:3246
 TMultiDimFit.cxx:3247
 TMultiDimFit.cxx:3248
 TMultiDimFit.cxx:3249
 TMultiDimFit.cxx:3250
 TMultiDimFit.cxx:3251
 TMultiDimFit.cxx:3252
 TMultiDimFit.cxx:3253
 TMultiDimFit.cxx:3254
 TMultiDimFit.cxx:3255
 TMultiDimFit.cxx:3256
 TMultiDimFit.cxx:3257
 TMultiDimFit.cxx:3258
 TMultiDimFit.cxx:3259
 TMultiDimFit.cxx:3260
 TMultiDimFit.cxx:3261
 TMultiDimFit.cxx:3262
 TMultiDimFit.cxx:3263
 TMultiDimFit.cxx:3264
 TMultiDimFit.cxx:3265
 TMultiDimFit.cxx:3266
 TMultiDimFit.cxx:3267
 TMultiDimFit.cxx:3268
 TMultiDimFit.cxx:3269
 TMultiDimFit.cxx:3270
 TMultiDimFit.cxx:3271
 TMultiDimFit.cxx:3272
 TMultiDimFit.cxx:3273
 TMultiDimFit.cxx:3274
 TMultiDimFit.cxx:3275
 TMultiDimFit.cxx:3276
 TMultiDimFit.cxx:3277
 TMultiDimFit.cxx:3278
 TMultiDimFit.cxx:3279
 TMultiDimFit.cxx:3280
 TMultiDimFit.cxx:3281
 TMultiDimFit.cxx:3282
 TMultiDimFit.cxx:3283
 TMultiDimFit.cxx:3284
 TMultiDimFit.cxx:3285
 TMultiDimFit.cxx:3286
 TMultiDimFit.cxx:3287
 TMultiDimFit.cxx:3288
 TMultiDimFit.cxx:3289
 TMultiDimFit.cxx:3290
 TMultiDimFit.cxx:3291
 TMultiDimFit.cxx:3292
 TMultiDimFit.cxx:3293
 TMultiDimFit.cxx:3294
 TMultiDimFit.cxx:3295
 TMultiDimFit.cxx:3296
 TMultiDimFit.cxx:3297
 TMultiDimFit.cxx:3298
 TMultiDimFit.cxx:3299
 TMultiDimFit.cxx:3300
 TMultiDimFit.cxx:3301
 TMultiDimFit.cxx:3302
 TMultiDimFit.cxx:3303
 TMultiDimFit.cxx:3304
 TMultiDimFit.cxx:3305
 TMultiDimFit.cxx:3306
 TMultiDimFit.cxx:3307
 TMultiDimFit.cxx:3308
 TMultiDimFit.cxx:3309
 TMultiDimFit.cxx:3310
 TMultiDimFit.cxx:3311
 TMultiDimFit.cxx:3312
 TMultiDimFit.cxx:3313
 TMultiDimFit.cxx:3314
 TMultiDimFit.cxx:3315
 TMultiDimFit.cxx:3316
 TMultiDimFit.cxx:3317
 TMultiDimFit.cxx:3318
 TMultiDimFit.cxx:3319
 TMultiDimFit.cxx:3320
 TMultiDimFit.cxx:3321
 TMultiDimFit.cxx:3322
 TMultiDimFit.cxx:3323
 TMultiDimFit.cxx:3324
 TMultiDimFit.cxx:3325
 TMultiDimFit.cxx:3326
 TMultiDimFit.cxx:3327
 TMultiDimFit.cxx:3328
 TMultiDimFit.cxx:3329
 TMultiDimFit.cxx:3330
 TMultiDimFit.cxx:3331
 TMultiDimFit.cxx:3332
 TMultiDimFit.cxx:3333
 TMultiDimFit.cxx:3334
 TMultiDimFit.cxx:3335
 TMultiDimFit.cxx:3336
 TMultiDimFit.cxx:3337
 TMultiDimFit.cxx:3338
 TMultiDimFit.cxx:3339
 TMultiDimFit.cxx:3340
 TMultiDimFit.cxx:3341
 TMultiDimFit.cxx:3342
 TMultiDimFit.cxx:3343
 TMultiDimFit.cxx:3344
 TMultiDimFit.cxx:3345
 TMultiDimFit.cxx:3346
 TMultiDimFit.cxx:3347
 TMultiDimFit.cxx:3348
 TMultiDimFit.cxx:3349
 TMultiDimFit.cxx:3350
 TMultiDimFit.cxx:3351
 TMultiDimFit.cxx:3352
 TMultiDimFit.cxx:3353
 TMultiDimFit.cxx:3354
 TMultiDimFit.cxx:3355
 TMultiDimFit.cxx:3356
 TMultiDimFit.cxx:3357
 TMultiDimFit.cxx:3358
 TMultiDimFit.cxx:3359
 TMultiDimFit.cxx:3360
 TMultiDimFit.cxx:3361
 TMultiDimFit.cxx:3362
 TMultiDimFit.cxx:3363
 TMultiDimFit.cxx:3364
 TMultiDimFit.cxx:3365
 TMultiDimFit.cxx:3366
 TMultiDimFit.cxx:3367
 TMultiDimFit.cxx:3368
 TMultiDimFit.cxx:3369
 TMultiDimFit.cxx:3370
 TMultiDimFit.cxx:3371
 TMultiDimFit.cxx:3372
 TMultiDimFit.cxx:3373
 TMultiDimFit.cxx:3374
 TMultiDimFit.cxx:3375
 TMultiDimFit.cxx:3376
 TMultiDimFit.cxx:3377
 TMultiDimFit.cxx:3378
 TMultiDimFit.cxx:3379
 TMultiDimFit.cxx:3380
 TMultiDimFit.cxx:3381
 TMultiDimFit.cxx:3382
 TMultiDimFit.cxx:3383
 TMultiDimFit.cxx:3384
 TMultiDimFit.cxx:3385
 TMultiDimFit.cxx:3386
 TMultiDimFit.cxx:3387
 TMultiDimFit.cxx:3388
 TMultiDimFit.cxx:3389
 TMultiDimFit.cxx:3390
 TMultiDimFit.cxx:3391
 TMultiDimFit.cxx:3392
 TMultiDimFit.cxx:3393
 TMultiDimFit.cxx:3394
 TMultiDimFit.cxx:3395
 TMultiDimFit.cxx:3396
 TMultiDimFit.cxx:3397
 TMultiDimFit.cxx:3398
 TMultiDimFit.cxx:3399
 TMultiDimFit.cxx:3400
 TMultiDimFit.cxx:3401
 TMultiDimFit.cxx:3402
 TMultiDimFit.cxx:3403
 TMultiDimFit.cxx:3404
 TMultiDimFit.cxx:3405
 TMultiDimFit.cxx:3406
 TMultiDimFit.cxx:3407
 TMultiDimFit.cxx:3408
 TMultiDimFit.cxx:3409
 TMultiDimFit.cxx:3410
 TMultiDimFit.cxx:3411
 TMultiDimFit.cxx:3412
 TMultiDimFit.cxx:3413
 TMultiDimFit.cxx:3414
 TMultiDimFit.cxx:3415
 TMultiDimFit.cxx:3416
 TMultiDimFit.cxx:3417
 TMultiDimFit.cxx:3418
 TMultiDimFit.cxx:3419
 TMultiDimFit.cxx:3420
 TMultiDimFit.cxx:3421
 TMultiDimFit.cxx:3422
 TMultiDimFit.cxx:3423
 TMultiDimFit.cxx:3424
 TMultiDimFit.cxx:3425
 TMultiDimFit.cxx:3426
 TMultiDimFit.cxx:3427
 TMultiDimFit.cxx:3428
 TMultiDimFit.cxx:3429
 TMultiDimFit.cxx:3430
 TMultiDimFit.cxx:3431
 TMultiDimFit.cxx:3432
 TMultiDimFit.cxx:3433
 TMultiDimFit.cxx:3434
 TMultiDimFit.cxx:3435
 TMultiDimFit.cxx:3436
 TMultiDimFit.cxx:3437
 TMultiDimFit.cxx:3438
 TMultiDimFit.cxx:3439
 TMultiDimFit.cxx:3440
 TMultiDimFit.cxx:3441
 TMultiDimFit.cxx:3442
 TMultiDimFit.cxx:3443
 TMultiDimFit.cxx:3444
 TMultiDimFit.cxx:3445
 TMultiDimFit.cxx:3446
 TMultiDimFit.cxx:3447
 TMultiDimFit.cxx:3448
 TMultiDimFit.cxx:3449
 TMultiDimFit.cxx:3450
 TMultiDimFit.cxx:3451
 TMultiDimFit.cxx:3452
 TMultiDimFit.cxx:3453
 TMultiDimFit.cxx:3454
 TMultiDimFit.cxx:3455
 TMultiDimFit.cxx:3456
 TMultiDimFit.cxx:3457
 TMultiDimFit.cxx:3458
 TMultiDimFit.cxx:3459
 TMultiDimFit.cxx:3460
 TMultiDimFit.cxx:3461
 TMultiDimFit.cxx:3462
 TMultiDimFit.cxx:3463
 TMultiDimFit.cxx:3464
 TMultiDimFit.cxx:3465
 TMultiDimFit.cxx:3466
 TMultiDimFit.cxx:3467
 TMultiDimFit.cxx:3468
 TMultiDimFit.cxx:3469
 TMultiDimFit.cxx:3470
 TMultiDimFit.cxx:3471
 TMultiDimFit.cxx:3472
 TMultiDimFit.cxx:3473
 TMultiDimFit.cxx:3474
 TMultiDimFit.cxx:3475
 TMultiDimFit.cxx:3476
 TMultiDimFit.cxx:3477
 TMultiDimFit.cxx:3478
 TMultiDimFit.cxx:3479
 TMultiDimFit.cxx:3480
 TMultiDimFit.cxx:3481
 TMultiDimFit.cxx:3482
 TMultiDimFit.cxx:3483
 TMultiDimFit.cxx:3484
 TMultiDimFit.cxx:3485
 TMultiDimFit.cxx:3486
 TMultiDimFit.cxx:3487
 TMultiDimFit.cxx:3488
 TMultiDimFit.cxx:3489
 TMultiDimFit.cxx:3490
 TMultiDimFit.cxx:3491
 TMultiDimFit.cxx:3492
 TMultiDimFit.cxx:3493
 TMultiDimFit.cxx:3494
 TMultiDimFit.cxx:3495
 TMultiDimFit.cxx:3496
 TMultiDimFit.cxx:3497
 TMultiDimFit.cxx:3498
 TMultiDimFit.cxx:3499
 TMultiDimFit.cxx:3500
 TMultiDimFit.cxx:3501
 TMultiDimFit.cxx:3502
 TMultiDimFit.cxx:3503
 TMultiDimFit.cxx:3504
 TMultiDimFit.cxx:3505
 TMultiDimFit.cxx:3506
 TMultiDimFit.cxx:3507
 TMultiDimFit.cxx:3508
 TMultiDimFit.cxx:3509
 TMultiDimFit.cxx:3510
 TMultiDimFit.cxx:3511
 TMultiDimFit.cxx:3512
 TMultiDimFit.cxx:3513
 TMultiDimFit.cxx:3514
 TMultiDimFit.cxx:3515
 TMultiDimFit.cxx:3516
 TMultiDimFit.cxx:3517
 TMultiDimFit.cxx:3518
 TMultiDimFit.cxx:3519
 TMultiDimFit.cxx:3520
 TMultiDimFit.cxx:3521
 TMultiDimFit.cxx:3522
 TMultiDimFit.cxx:3523
 TMultiDimFit.cxx:3524
 TMultiDimFit.cxx:3525
 TMultiDimFit.cxx:3526
 TMultiDimFit.cxx:3527
 TMultiDimFit.cxx:3528
 TMultiDimFit.cxx:3529
 TMultiDimFit.cxx:3530
 TMultiDimFit.cxx:3531
 TMultiDimFit.cxx:3532
 TMultiDimFit.cxx:3533
 TMultiDimFit.cxx:3534
 TMultiDimFit.cxx:3535
 TMultiDimFit.cxx:3536
 TMultiDimFit.cxx:3537
 TMultiDimFit.cxx:3538
 TMultiDimFit.cxx:3539
 TMultiDimFit.cxx:3540
 TMultiDimFit.cxx:3541
 TMultiDimFit.cxx:3542
 TMultiDimFit.cxx:3543
 TMultiDimFit.cxx:3544
 TMultiDimFit.cxx:3545
 TMultiDimFit.cxx:3546
 TMultiDimFit.cxx:3547
 TMultiDimFit.cxx:3548
 TMultiDimFit.cxx:3549
 TMultiDimFit.cxx:3550
 TMultiDimFit.cxx:3551
 TMultiDimFit.cxx:3552
 TMultiDimFit.cxx:3553
 TMultiDimFit.cxx:3554
 TMultiDimFit.cxx:3555
 TMultiDimFit.cxx:3556
 TMultiDimFit.cxx:3557
 TMultiDimFit.cxx:3558
 TMultiDimFit.cxx:3559
 TMultiDimFit.cxx:3560
 TMultiDimFit.cxx:3561
 TMultiDimFit.cxx:3562
 TMultiDimFit.cxx:3563
 TMultiDimFit.cxx:3564
 TMultiDimFit.cxx:3565
 TMultiDimFit.cxx:3566
 TMultiDimFit.cxx:3567
 TMultiDimFit.cxx:3568
 TMultiDimFit.cxx:3569
 TMultiDimFit.cxx:3570
 TMultiDimFit.cxx:3571
 TMultiDimFit.cxx:3572
 TMultiDimFit.cxx:3573
 TMultiDimFit.cxx:3574
 TMultiDimFit.cxx:3575
 TMultiDimFit.cxx:3576
 TMultiDimFit.cxx:3577
 TMultiDimFit.cxx:3578
 TMultiDimFit.cxx:3579
 TMultiDimFit.cxx:3580
 TMultiDimFit.cxx:3581
 TMultiDimFit.cxx:3582
 TMultiDimFit.cxx:3583
 TMultiDimFit.cxx:3584
 TMultiDimFit.cxx:3585
 TMultiDimFit.cxx:3586
 TMultiDimFit.cxx:3587
 TMultiDimFit.cxx:3588
 TMultiDimFit.cxx:3589
 TMultiDimFit.cxx:3590
 TMultiDimFit.cxx:3591
 TMultiDimFit.cxx:3592
 TMultiDimFit.cxx:3593
 TMultiDimFit.cxx:3594
 TMultiDimFit.cxx:3595
 TMultiDimFit.cxx:3596
 TMultiDimFit.cxx:3597
 TMultiDimFit.cxx:3598
 TMultiDimFit.cxx:3599
 TMultiDimFit.cxx:3600
 TMultiDimFit.cxx:3601
 TMultiDimFit.cxx:3602
 TMultiDimFit.cxx:3603
 TMultiDimFit.cxx:3604
 TMultiDimFit.cxx:3605
 TMultiDimFit.cxx:3606
 TMultiDimFit.cxx:3607
 TMultiDimFit.cxx:3608
 TMultiDimFit.cxx:3609
 TMultiDimFit.cxx:3610
 TMultiDimFit.cxx:3611
 TMultiDimFit.cxx:3612
 TMultiDimFit.cxx:3613
 TMultiDimFit.cxx:3614
 TMultiDimFit.cxx:3615
 TMultiDimFit.cxx:3616
 TMultiDimFit.cxx:3617
 TMultiDimFit.cxx:3618
 TMultiDimFit.cxx:3619
 TMultiDimFit.cxx:3620
 TMultiDimFit.cxx:3621
 TMultiDimFit.cxx:3622
 TMultiDimFit.cxx:3623
 TMultiDimFit.cxx:3624
 TMultiDimFit.cxx:3625
 TMultiDimFit.cxx:3626
 TMultiDimFit.cxx:3627
 TMultiDimFit.cxx:3628
 TMultiDimFit.cxx:3629
 TMultiDimFit.cxx:3630
 TMultiDimFit.cxx:3631
 TMultiDimFit.cxx:3632
 TMultiDimFit.cxx:3633
 TMultiDimFit.cxx:3634
 TMultiDimFit.cxx:3635
 TMultiDimFit.cxx:3636
 TMultiDimFit.cxx:3637
 TMultiDimFit.cxx:3638
 TMultiDimFit.cxx:3639
 TMultiDimFit.cxx:3640
 TMultiDimFit.cxx:3641
 TMultiDimFit.cxx:3642
 TMultiDimFit.cxx:3643
 TMultiDimFit.cxx:3644
 TMultiDimFit.cxx:3645
 TMultiDimFit.cxx:3646
 TMultiDimFit.cxx:3647
 TMultiDimFit.cxx:3648
 TMultiDimFit.cxx:3649
 TMultiDimFit.cxx:3650
 TMultiDimFit.cxx:3651
 TMultiDimFit.cxx:3652
 TMultiDimFit.cxx:3653
 TMultiDimFit.cxx:3654
 TMultiDimFit.cxx:3655
 TMultiDimFit.cxx:3656
 TMultiDimFit.cxx:3657
 TMultiDimFit.cxx:3658
 TMultiDimFit.cxx:3659
 TMultiDimFit.cxx:3660
 TMultiDimFit.cxx:3661
 TMultiDimFit.cxx:3662
 TMultiDimFit.cxx:3663
 TMultiDimFit.cxx:3664
 TMultiDimFit.cxx:3665
 TMultiDimFit.cxx:3666
 TMultiDimFit.cxx:3667
 TMultiDimFit.cxx:3668
 TMultiDimFit.cxx:3669
 TMultiDimFit.cxx:3670
 TMultiDimFit.cxx:3671
 TMultiDimFit.cxx:3672
 TMultiDimFit.cxx:3673
 TMultiDimFit.cxx:3674
 TMultiDimFit.cxx:3675
 TMultiDimFit.cxx:3676
 TMultiDimFit.cxx:3677
 TMultiDimFit.cxx:3678
 TMultiDimFit.cxx:3679
 TMultiDimFit.cxx:3680
 TMultiDimFit.cxx:3681
 TMultiDimFit.cxx:3682
 TMultiDimFit.cxx:3683
 TMultiDimFit.cxx:3684
 TMultiDimFit.cxx:3685
 TMultiDimFit.cxx:3686
 TMultiDimFit.cxx:3687
 TMultiDimFit.cxx:3688
 TMultiDimFit.cxx:3689
 TMultiDimFit.cxx:3690
 TMultiDimFit.cxx:3691
 TMultiDimFit.cxx:3692
 TMultiDimFit.cxx:3693
 TMultiDimFit.cxx:3694
 TMultiDimFit.cxx:3695
 TMultiDimFit.cxx:3696
 TMultiDimFit.cxx:3697
 TMultiDimFit.cxx:3698
 TMultiDimFit.cxx:3699
 TMultiDimFit.cxx:3700
 TMultiDimFit.cxx:3701
 TMultiDimFit.cxx:3702
 TMultiDimFit.cxx:3703
 TMultiDimFit.cxx:3704
 TMultiDimFit.cxx:3705
 TMultiDimFit.cxx:3706
 TMultiDimFit.cxx:3707
 TMultiDimFit.cxx:3708
 TMultiDimFit.cxx:3709
 TMultiDimFit.cxx:3710
 TMultiDimFit.cxx:3711
 TMultiDimFit.cxx:3712
 TMultiDimFit.cxx:3713
 TMultiDimFit.cxx:3714
 TMultiDimFit.cxx:3715
 TMultiDimFit.cxx:3716
 TMultiDimFit.cxx:3717
 TMultiDimFit.cxx:3718
 TMultiDimFit.cxx:3719
 TMultiDimFit.cxx:3720
 TMultiDimFit.cxx:3721
 TMultiDimFit.cxx:3722
 TMultiDimFit.cxx:3723
 TMultiDimFit.cxx:3724
 TMultiDimFit.cxx:3725
 TMultiDimFit.cxx:3726
 TMultiDimFit.cxx:3727
 TMultiDimFit.cxx:3728
 TMultiDimFit.cxx:3729
 TMultiDimFit.cxx:3730
 TMultiDimFit.cxx:3731
 TMultiDimFit.cxx:3732
 TMultiDimFit.cxx:3733
 TMultiDimFit.cxx:3734
 TMultiDimFit.cxx:3735
 TMultiDimFit.cxx:3736
 TMultiDimFit.cxx:3737
 TMultiDimFit.cxx:3738
 TMultiDimFit.cxx:3739
 TMultiDimFit.cxx:3740
 TMultiDimFit.cxx:3741
 TMultiDimFit.cxx:3742
 TMultiDimFit.cxx:3743
 TMultiDimFit.cxx:3744
 TMultiDimFit.cxx:3745
 TMultiDimFit.cxx:3746
 TMultiDimFit.cxx:3747
 TMultiDimFit.cxx:3748
 TMultiDimFit.cxx:3749
 TMultiDimFit.cxx:3750
 TMultiDimFit.cxx:3751
 TMultiDimFit.cxx:3752
 TMultiDimFit.cxx:3753
 TMultiDimFit.cxx:3754
 TMultiDimFit.cxx:3755
 TMultiDimFit.cxx:3756
 TMultiDimFit.cxx:3757
 TMultiDimFit.cxx:3758
 TMultiDimFit.cxx:3759
 TMultiDimFit.cxx:3760
 TMultiDimFit.cxx:3761
 TMultiDimFit.cxx:3762
 TMultiDimFit.cxx:3763
 TMultiDimFit.cxx:3764
 TMultiDimFit.cxx:3765
 TMultiDimFit.cxx:3766
 TMultiDimFit.cxx:3767
 TMultiDimFit.cxx:3768
 TMultiDimFit.cxx:3769
 TMultiDimFit.cxx:3770
 TMultiDimFit.cxx:3771
 TMultiDimFit.cxx:3772
 TMultiDimFit.cxx:3773
 TMultiDimFit.cxx:3774
 TMultiDimFit.cxx:3775
 TMultiDimFit.cxx:3776
 TMultiDimFit.cxx:3777
 TMultiDimFit.cxx:3778
 TMultiDimFit.cxx:3779
 TMultiDimFit.cxx:3780
 TMultiDimFit.cxx:3781
 TMultiDimFit.cxx:3782
 TMultiDimFit.cxx:3783
 TMultiDimFit.cxx:3784
 TMultiDimFit.cxx:3785
 TMultiDimFit.cxx:3786
 TMultiDimFit.cxx:3787
 TMultiDimFit.cxx:3788
 TMultiDimFit.cxx:3789
 TMultiDimFit.cxx:3790
 TMultiDimFit.cxx:3791
 TMultiDimFit.cxx:3792
 TMultiDimFit.cxx:3793
 TMultiDimFit.cxx:3794
 TMultiDimFit.cxx:3795
 TMultiDimFit.cxx:3796
 TMultiDimFit.cxx:3797
 TMultiDimFit.cxx:3798
 TMultiDimFit.cxx:3799
 TMultiDimFit.cxx:3800
 TMultiDimFit.cxx:3801
 TMultiDimFit.cxx:3802
 TMultiDimFit.cxx:3803
 TMultiDimFit.cxx:3804
 TMultiDimFit.cxx:3805
 TMultiDimFit.cxx:3806
 TMultiDimFit.cxx:3807
 TMultiDimFit.cxx:3808
 TMultiDimFit.cxx:3809
 TMultiDimFit.cxx:3810
 TMultiDimFit.cxx:3811
 TMultiDimFit.cxx:3812
 TMultiDimFit.cxx:3813
 TMultiDimFit.cxx:3814
 TMultiDimFit.cxx:3815
 TMultiDimFit.cxx:3816
 TMultiDimFit.cxx:3817
 TMultiDimFit.cxx:3818
 TMultiDimFit.cxx:3819