// @(#)root/hist:$Id$
// Author: Nicolas Brun   19/08/95

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

#include <math.h>

#include "Riostream.h"
#include "TROOT.h"
#include "TClass.h"
#include "TFormula.h"
#include "TMath.h"
#include "TRandom.h"
#include "TFunction.h"
#include "TMethodCall.h"
#include "TObjString.h"
#include "TError.h"
#include "TFormulaPrimitive.h"
#include "TInterpreter.h"
#include "TVirtualMutex.h"

#ifdef WIN32
#pragma optimize("",off)
#endif

static Int_t gMAXOP=1000,gMAXPAR=1000,gMAXCONST=1000;
const Int_t  gMAXSTRINGFOUND = 10;
const UInt_t kOptimizationError = BIT(19);

ClassImp(TFormula)


//______________________________________________________________________________
// The FORMULA class
//
//Begin_Html
/*
<img src="gif/tformula_classtree.gif">
*/
//End_Html
//
//  Example of valid expressions:
//     -  sin(x)/x
//     -  [0]*sin(x) + [1]*exp(-[2]*x)
//     -  x + y**2
//     -  x^2 + y^2
//     -  [0]*pow([1],4)
//     -  2*pi*sqrt(x/y)
//     -  gaus(0)*expo(3)  + ypol3(5)*x
//     -  gausn(0)*expo(3) + ypol3(5)*x
//
//  In the last example above:
//     gaus(0) is a substitute for [0]*exp(-0.5*((x-[1])/[2])**2)
//        and (0) means start numbering parameters at 0
//     gausn(0) is a substitute for [0]*exp(-0.5*((x-[1])/[2])**2)/(sqrt(2*pi)*[2]))
//        and (0) means start numbering parameters at 0
//     expo(3) is a substitute for exp([3]+[4]*x)
//     pol3(5) is a substitute for par[5]+par[6]*x+par[7]*x**2+par[8]*x**3
//         (here Pol3 stands for Polynomial of degree 3)
//
//   TMath functions can be part of the expression, eg:
//     -  TMath::Landau(x)*sin(x)
//     -  TMath::Erf(x)
//
//   Comparisons operators are also supported (&&, ||, ==, <=, >=, !)
//   Examples:
//      sin(x*(x<0.5 || x>1))
//   If the result of a comparison is TRUE, the result is 1, otherwise 0.
//
//   Already predefined names can be given. For example, if the formula
//     TFormula old(sin(x*(x<0.5 || x>1))) one can assign a name to the formula. By default
//     the name of the object = title = formula itself.
//     old.SetName("old").
//     then, old can be reused in a new expression.
//     TFormula new("x*old") is equivalent to:
//     TFormula new("x*sin(x*(x<0.5 || x>1))")
//
//   Up to 4 dimensions are supported (indicated by x, y, z, t)
//   An expression may have 0 parameters or a list of parameters
//   indicated by the sequence [par_number]
//
//   A graph showing the logic to compile and analyze a formula
//   is shown in TFormula::Compile and TFormula::Analyze.
//   Once a formula has been compiled, it can be evaluated for a given
//   set of parameters. see graph in TFormula::EvalPar.
//
//   This class is the base class for the function classes TF1,TF2 and TF3.
//   It is also used by the ntuple selection mechanism TNtupleFormula.
//
//   In version 7 of TFormula, the usage of fOper has been changed
//   to improve the performance of TFormula::EvalPar.
//   Conceptually, fOper was changed from a simple array of Int_t
//   to an array of composite values.
//   For example a 'ylandau(5)' operation used to be encoded as 4105;
//   it is now encoded as (klandau >> kTFOperShit) + 5
//   Any class inheriting from TFormula and using directly fOper (which
//   is now a private data member), needs to be updated to take this
//   in consideration.  The member functions recommended to set and
//   access fOper are:  SetAction, GetAction, GetActionParam
//   For more performant access to the information, see the implementation
//   TFormula::EvalPar
//
//   CHANGING DEFAULT SETTINGS
//   =========================
//   When creating complex formula , it may be necessary to increase
//   some default parameters. see static function TFormula::SetMaxima
//
//   WHY TFormula CANNOT ACCEPT A CLASS MEMBER FUNCTION ?
//   ====================================================
//   This is a frequently asked question.
//   C++ is a strongly typed language. There is no way for TFormula (without
//   recompiling this class) to know about all possible user defined data types.
//   This also apply to the case of a static class function.
//   Because TMath is a special and frequent case, TFormula is aware
//   of all TMath functions.


//______________________________________________________________________________
TFormula::TFormula(): TNamed()
{
   // Formula default constructor.

   fNdim   = 0;
   fNpar   = 0;
   fNoper  = 0;
   fNconst = 0;
   fNumber = 0;
   fExpr   = 0;
   fOper   = 0;
   fConst  = 0;
   fParams = 0;
   fNstring= 0;
   fNames  = 0;
   fNval   = 0;
   //
   //MI change
   fNOperOptimized = 0;
   fExprOptimized  = 0;
   fOperOptimized  = 0;
   fOperOffset     = 0;
   fPredefined     = 0;
   fOptimal        = (TFormulaPrimitive::TFuncG)&TFormula::EvalParOld;
}

//______________________________________________________________________________
static bool IsReservedName(const char* name){
   if (strlen(name)!=1) return false;
   for (auto const & specialName : {"x","y","z","t"}){
      if (strcmp(name,specialName)==0) return true;
   }
   return false;
}

//______________________________________________________________________________
TFormula::TFormula(const char *name,const char *expression) :
   TNamed(name,expression)
{
   // Normal Formula constructor.

   fNdim   = 0;
   fNpar   = 0;
   fNoper  = 0;
   fNconst = 0;
   fNumber = 0;
   fExpr   = 0;
   fOper   = 0;
   fConst  = 0;
   fParams = 0;
   fNstring= 0;
   fNames  = 0;
   fNval   = 0;
   //
   //MI change
   fNOperOptimized = 0;
   fExprOptimized  = 0;
   fOperOptimized  = 0;
   fOperOffset     = 0;
   fPredefined     = 0;
   fOptimal        = (TFormulaPrimitive::TFuncG)&TFormula::EvalParOld;

   if (!expression || !*expression) {
      Error("TFormula", "expression may not be 0 or have 0 length");
      return;
   }

   //eliminate blanks in expression
   Int_t i,j,nch;
   nch = strlen(expression);
   char *expr = new char[nch+1];
   j = 0;
   for (i=0;i<nch;i++) {
      if (expression[i] == ' ') continue;
      if (i > 0 && (expression[i] == '*') && (expression[i-1] == '*')) {
         expr[j-1] = '^';
         continue;
      }
      expr[j] = expression[i]; j++;
   }
   expr[j] = 0;
   Bool_t gausNorm   = kFALSE;
   Bool_t landauNorm = kFALSE;
   Bool_t linear = kFALSE;

   if (j) {
      TString chaine = expr;
      //special case for functions for linear fitting
      if (chaine.Contains("++"))
         linear = kTRUE;
      // special case for normalized gaus
      if (chaine.Contains("gausn")) {
         gausNorm = kTRUE;
         TString tmp = chaine;
         tmp.ReplaceAll("gausn","");
         tmp.ReplaceAll("landaun","");
         if ( tmp.Contains("gaus")  )
            Warning("TFormula","Cannot use both gaus and gausn - gaus will be treated as gausn");
         if ( tmp.Contains("landau")  )
            Warning("TFormula","Cannot use both gausn and landau - landau will be treated as landaun");
      }
      // special case for normalized landau
      if (chaine.Contains("landaun")) {
         landauNorm = kTRUE;
         TString tmp = chaine;
         tmp.ReplaceAll("landaun","");
         tmp.ReplaceAll("gausn","");
         if ( tmp.Contains("gaus")  ) {
            Warning("TFormula","Cannot use both gaus and landaun - gaus will be treated as gausn");
         }
         if ( tmp.Contains("landau") )
            Warning("TFormula","Cannot use both landau and landaun - landau will be treated as landaun");
      }
      // need to the replacement here for the error message before
      if (gausNorm)
         chaine.ReplaceAll("gausn","gaus");
      if (landauNorm)
         chaine.ReplaceAll("landaun","landau");

      SetTitle(chaine.Data());
   }
   delete [] expr;

   if (linear)    SetBit(kLinear);

   if (Compile()) return;

   if (gausNorm)   SetBit(kNormalized);
   if (landauNorm) SetBit(kNormalized);

   // Store formula in linked list of formula in ROOT


   if (IsReservedName(name))
   {
      Error("TFormula","The name \'%s\' is reserved as a TFormula variable name.\n"
         "\tThis function will not be registered in the list of functions",name);
   } else {
      R__LOCKGUARD2(gROOTMutex);
      TFormula *old = (TFormula*)gROOT->GetListOfFunctions()->FindObject(name);
      if (old) {
         gROOT->GetListOfFunctions()->Remove(old);
      }
      gROOT->GetListOfFunctions()->Add(this);
   }
}


//______________________________________________________________________________
TFormula::TFormula(const TFormula &formula) : TNamed()
{
   // Default constructor.

   fNdim   = 0;
   fNpar   = 0;
   fNoper  = 0;
   fNconst = 0;
   fNumber = 0;
   fExpr   = 0;
   fOper   = 0;
   fConst  = 0;
   fParams = 0;
   fNstring= 0;
   fNames  = 0;
   fNval   = 0;
   fNOperOptimized = 0;
   fPredefined     = 0;
   fOperOffset     = 0;
   fExprOptimized  = 0;
   fOperOptimized  = 0;

   ((TFormula&)formula).TFormula::Copy(*this);
}


//______________________________________________________________________________
TFormula& TFormula::operator=(const TFormula &rhs)
{
   // Operator =

   if (this != &rhs) {
      rhs.Copy(*this);
   }
   return *this;
}


//______________________________________________________________________________
TFormula::~TFormula()
{
   // Formula default destructor.

   if (gROOT) {
      R__LOCKGUARD2(gROOTMutex);
      gROOT->GetListOfFunctions()->Remove(this);
   }

   ClearFormula();
}


//______________________________________________________________________________
Bool_t TFormula::AnalyzeFunction(TString &chaine, Int_t &err, Int_t offset)
{
   // Check if the chain as function call.
   //
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.

   int i;

   // We have to decompose the chain is 3 potential components:
   //   namespace::functionName( args )

   Ssiz_t argStart = chaine.First('(');
   if (argStart<0) return false;

   TString functionName = chaine(0,argStart);

   // This does not support template yet (where the scope operator might be in
   // one of the template arguments
   Ssiz_t scopeEnd = functionName.Last(':');
   TString spaceName;
   if (scopeEnd>0 && functionName[scopeEnd-1]==':') {
      spaceName = functionName(0,scopeEnd-1);
      functionName.Remove(0,scopeEnd+1);
   }

   // Now we need to count and decompose the actual arguments, we could also check the type
   // of the arguments
   if (chaine[chaine.Length()-1] != ')') {
      Error("AnalyzeFunction","We thought we had a function but we dont (in %s)\n",chaine.Data());
   }

   TString args = chaine(argStart+1,chaine.Length()-2-argStart);
   TObjArray argArr;
   argArr.SetOwner(kTRUE);
   //fprintf(stderr,"args are '%s'\n",args.Data());

   Bool_t inString = false;
   int paran = 0;
   int brack = 0;
   int prevComma = 0;
   int nargs = 0;
   for(i=0; i<args.Length(); i++) {
      if (args[i]=='"') inString = !inString;
      if (inString) continue;

      Bool_t foundArg = false;
      switch(args[i]) {

         case '(': paran++; break;
         case ')': paran--; break;
         case '[': brack++; break;
         case ']': brack--; break;

         case ',': if (paran==0 && brack==0) { foundArg = true; } break;
      }
      if ((i+1)==args.Length()) {
         foundArg = true; i++;
      }
      if (foundArg) {
         TString arg = args(prevComma,i-prevComma);

         // Here we could
         //   a) check the type
         //fprintf(stderr,"found #%d arg %s\n",nargs,arg.Data());

         // We register the arg for later usage
         argArr.Add(new TObjString(arg));
         nargs++;

         prevComma = i+1;
      };
   }

   if (nargs>999) {
      err = 7;
      return false;
   }

   // Now we need to lookup the function and check its arguments.
   TClass *ns = (spaceName.Length()) ? TClass::GetClass(spaceName) : 0;
   ClassInfo_t *cinfo = 0;
   if (ns) {
      cinfo = ns->GetClassInfo();
   } else {
      cinfo = gInterpreter->ClassInfo_Factory();
   }

   // ROOT does yet have a complete TType class, but TCling does,
   // so let's use that for now.
   static TypeInfo_t * const doubletype{ gInterpreter->TypeInfo_Factory("double") };
   std::vector<TypeInfo_t*> proto(nargs,doubletype);

   CallFunc_t *callfunc = gInterpreter->CallFunc_Factory();
   Long_t func_offset;
   gInterpreter->CallFunc_SetFuncProto(callfunc,cinfo,functionName,proto,false,&func_offset,ROOT::kConversionMatch);

   TMethodCall *method = new TMethodCall(ns,callfunc,func_offset);

   if (!ns) gInterpreter->ClassInfo_Delete(cinfo);
   gInterpreter->CallFunc_Delete(callfunc);

   if (method->IsValid()) {
      if (method->ReturnType() == TMethodCall::kOther) {
         /*
           Error("Compile",
               "TFormula can only call interpreted and compiled function that returns a numerical type %s returns a %s\n",
               method->GetMethodName(), method->GetMethod()->GetReturnTypeName());
         */
         err=29;

      } else {

         // Analyze the arguments
         TIter next(&argArr);
         TObjString *objstr;
         while ( (objstr=(TObjString*)next()) ) {
            Analyze(objstr->String(),err,offset);
         }

         fFunctions.Add(method);
         fExpr[fNoper] = method->GetMethod()->GetPrototype();
         SetAction(fNoper, kFunctionCall, fFunctions.GetLast()*1000 + nargs);
         fNoper++;
         return true;
      }
   }

   delete method;
   //
   // MI change - extended space of functions
   // not forward compatible change
   //
   TString cbase(chaine);
   Int_t args_paran = cbase.First("(");
   if (args_paran>0){
      cbase[args_paran]=0;
   }

   TFormulaPrimitive *prim = TFormulaPrimitive::FindFormula(cbase, args_paran>0 ? cbase.Data() + args_paran + 1 : (const char*)0);
   if (prim &&   (!IsA()->GetBaseClass("TTreeFormula"))) {
      // TO BE DONE ALSO IN TTREFORMULA - temporary fix MI
      // Analyze the arguments
      TIter next(&argArr);
      TObjString *objstr;
      while ( (objstr=(TObjString*)next()) ) {
         Analyze(objstr->String(),err,offset); if (err) return kFALSE;
      }
      if (nargs!=prim->fNArguments) {
         Error("Compile",        "%s requires %d arguments",
            prim->GetName(), prim->fNArguments);
         return kFALSE;
      }
      fExpr[fNoper] = prim->GetName();
      if (prim->fType==10){
         SetAction(fNoper, kFD1);
      }
      if (prim->fType==110){
         SetAction(fNoper, kFD2);
      }
      if (prim->fType==1110){
         SetAction(fNoper, kFD3);
      }
      if (prim->fType==-1){
         SetAction(fNoper, kFDM);
         if (fNpar<prim->fNParameters) fNpar+=prim->fNParameters;
      }

      fNoper++;
      return kTRUE;
   }

   return kFALSE;
}


//______________________________________________________________________________
void TFormula::Analyze(const char *schain, Int_t &err, Int_t offset)
{
   // Analyze a sub-expression in one formula.
   //
   //   Expressions in one formula are recursively analyzed.
   //   Result of analysis is stored in the object tables.
   //
   //                  Table of function codes and errors
   //                  ==================================
   //
   //   * functions :
   //
   //     +           1                   pow          20
   //     -           2                   sq           21
   //     *           3                   sqrt         22
   //     /           4                   strstr       23
   //     %           5                   min          24
   //                                     max          25
   //                                     log          30
   //     cos         10                  exp          31
   //     sin         11                  log10        32
   //     tan         12
   //     acos        13                  abs          41
   //     asin        14                  sign         42
   //     atan        15                  int          43
   //     atan2       16
   //     fmod        17                  rndm         50
   //
   //     cosh        70                  acosh        73
   //     sinh        71                  asinh        74
   //     tanh        72                  atanh        75
   //
   //     expo       100                  gaus        110     gausn  (see note below)
   //     expo(0)    100 0                gaus(0)     110 0   gausn(0)
   //     expo(1)    100 1                gaus(1)     110 1   gausn(1)
   //     xexpo      100 x                xgaus       110 x   xgausn
   //     yexpo      101 x                ygaus       111 x   ygausn
   //     zexpo      102 x                zgaus       112 x   zgausn
   //     xyexpo     105 x                xygaus      115 x   xygausn
   //     yexpo(5)   102 5                ygaus(5)    111 5   ygausn(5)
   //     xyexpo(2)  105 2                xygaus(2)   115 2   xygausn(2)
   //
   //     landau      120 x   landaun (see note below)
   //     landau(0)   120 0   landaun(0)
   //     landau(1)   120 1   landaun(1)
   //     xlandau     120 x   xlandaun
   //     ylandau     121 x   ylandaun
   //     zlandau     122 x   zlandaun
   //     xylandau    125 x   xylandaun
   //     ylandau(5)  121 5   ylandaun(5)
   //     xylandau(2) 125 2   xylandaun(2)
   //
   //     pol0        130 x               pol1        130 1xx
   //     pol0(0)     130 0               pol1(0)     130 100
   //     pol0(1)     130 1               pol1(1)     130 101
   //     xpol0       130 x               xpol1       130 101
   //     ypol0       131 x               ypol1       131 101
   //     zpol0       132 x               zpol1       132 1xx
   //     ypol0(5)    131 5               ypol1(5)    131 105
   //
   //     pi          40
   //
   //     &&          60                  <            64
   //     ||          61                  >            65
   //     ==          62                  <=           66
   //     !=          63                  =>           67
   //     !           68
   //     ==(string)  76                  &            78
   //     !=(string)  77                  |            79
   //     <<(shift)   80                  >>(shift)    81
   //     ? :         82
   //
   //   * constants (kConstants) :
   //
   //    c0  141 1      c1  141 2  etc..
   //
   //   * strings (kStringConst):
   //
   //    sX  143 x
   //
   //   * variables (kFormulaVar) :
   //
   //     x    144 0      y    144 1      z    144 2      t    144 3
   //
   //   * parameters :
   //
   //     [1]        140 1
   //     [2]        140 2
   //     etc.
   //
   //   Special cases for normalized gaussian or landau distributions
   //   =============================================================
   //   the expression "gaus" is a substitute for
   //     [0]*exp(-0.5*((x-[1])/[2])**2)
   //   to obtain a standard normalized gaussian, use "gausn" instead of "gaus"
   //   the expression "gausn" is a substitute for
   //     [0]*exp(-0.5*((x-[1])/[2])**2)/(sqrt(2*pi)*[2]))
   //   WARNING: gaus and gausn are mutually exclusive in the same expression.
   //
   //   In the same way the expression "landau" is a substitute for
   //     [0]*TMath::Landau(x,[1],[2],kFALSE)
   //   to obtain a standard normalized landau, use "landaun" instead of "landau"
   //   the expression "landaun" is a substitute for
   //     [0]*TMath::Landau(x,[1],[2],kTRUE)
   //   WARNING: landau and landaun are mutually exclusive in the same expression.
   //
   //   Boolean optimization (kBoolOptmize) :
   //   =====================================
   //
   //     Those pseudo operation are used to implement lazy evaluation of
   //     && and ||.  When the left hand of the expression if false
   //     (respectively true), the evaluation of the right is entirely skipped
   //     (since it would not change the value of the expreession).
   //
   //     &&   142 11 (one operation on right) 142 21 (2 operations on right)
   //     ||   142 12 (one operation on right) 142 22 (2 operations on right)
   //
   //   * functions calls (kFunctionCall) :
   //
   //    f0 145  0  f1 145  1  etc..
   //
   //   Errors :
   //   ========
   //
   //     1  : Division By Zero
   //     2  : Invalid Floating Point Operation
   //     4  : Empty String
   //     5  : invalid syntax
   //     6  : Too many operators
   //     7  : Too many parameters
   //    10  : z specified but not x and y
   //    11  : z and y specified but not x
   //    12  : y specified but not x
   //    13  : z and x specified but not y
   //    20  : non integer value for parameter number
   //    21  : atan2 requires two arguments
   //    22  : pow requires two arguments
   //    23  : degree of polynomial not specified
   //    24  : Degree of polynomial must be positive
   //    25  : Degree of polynomial must be less than 20
   //    26  : Unknown name
   //    27  : Too many constants in expression
   //    28  : strstr requires two arguments
   //    29  : interpreted or compiled function have to return a numerical type
   //    30  : Bad numerical expression
   //    31  : Part of the variable exist but some of it is not accessible or useable
   //    40  : '(' is expected
   //    41  : ')' is expected
   //    42  : '[' is expected
   //    43  : ']' is expected
   //Begin_Html
   /*
   <img src="gif/analyze.gif">
   */
   //End_Html
   //
   //  Special functions
   //  -----------------
   //  By default, the formula is assigned fNumber=0. However, the following
   //  formula built with simple functions are assigned  fNumber:
   //    "gaus"      100  (or gausn)
   //    "xygaus"    110
   //    "expo"      200
   //    "polN"      300+N
   //    "landau"    400
   //    "xylandau"  410
   //  Note that expressions like gaus(0), expo(1) will force fNumber=0
   //
   //  Warning when deriving a class from TFormula
   //  -------------------------------------------
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.

   Int_t valeur,find,n,i,j,k,lchain,nomb,virgule,inter,nest;
   Int_t compt,compt2,compt3,compt4;
   Bool_t inString;
   Double_t vafConst;
   ULong_t vafConst2;
   Bool_t parenthese;
   TString s,chaine_error,chaine1ST;
   TString s1,s2,s3,ctemp;

   TString chaine = schain;
   const TFormula *oldformula;
   Int_t modulo,plus,puiss10,puiss10bis,moins,multi,divi,puiss,et,ou,petit,grand,egal,diff,peteg,grdeg,etx,oux,rshift,lshift,tercond,terelse;
   char t;
   TString slash("/"), escapedSlash("\\/");
   Int_t inter2 = 0;
   SetNumber(0);
   Int_t actionCode,actionParam;
   Int_t err_hint = 0;

   // Verify correct matching of parenthesis and remove unnecessary parenthesis.
   lchain = chaine.Length();
   //if (chaine(lchain-2,2) == "^2") chaine = "sq(" + chaine(0,lchain-2) + ")";
   parenthese = kTRUE;
   lchain = chaine.Length();
   while (parenthese && lchain>0 && err==0){
      compt  = 0;
      compt2 = 0;
      inString = false;
      lchain = chaine.Length();
      if (lchain==0) err=4;
      else {
         for (i=1; i<=lchain; ++i) {
            if (chaine(i-1,1) == "\"") inString = !inString;
            if (!inString) {
               if (chaine(i-1,1) == "[") compt2++;
               if (chaine(i-1,1) == "]") compt2--;
               if (chaine(i-1,1) == "(") compt++;
               if (chaine(i-1,1) == ")") compt--;
            }
            if (compt < 0) err = 40; // more open parentheses than close parentheses
            if (compt2< 0) err = 42; // more ] than [
            if (compt==0 && (i!=lchain || lchain==1)) parenthese = kFALSE;
            // if (lchain<3 && chaine(0,1)!="(" && chaine(lchain-1,1)!=")") parenthese = kFALSE;
         }
         if (compt > 0) err = 41; // more ( than )
         if (compt2> 0) err = 43; // more [ than ]
         if (parenthese) chaine = chaine(1,lchain-2);
      }
   } // while parantheses

   if (lchain==0) err=4; // empty string
   modulo=plus=moins=multi=divi=puiss=et=ou=petit=grand=egal=diff=peteg=grdeg=etx=oux=rshift=lshift=tercond=terelse=0;

   // Look for simple operators

   if (err==0) {
      compt = compt2 = compt3 = compt4 = 0;puiss10=0;puiss10bis = 0;
      inString = false;
      j = lchain;
      Bool_t isdecimal = 1; // indicates whether the left part is decimal.

      for (i=1;i<=lchain; i++) {

         puiss10=puiss10bis=0;
         if (i>2) {
            t = chaine[i-3];
            isdecimal = isdecimal && (strchr("0123456789.",t)!=0);
            if (isdecimal) {
               if ( chaine[i-2] == 'e' || chaine[i-2] == 'E' ) puiss10 = 1;
            } else if ( strchr("+-/[]()&|><=!*/%^\\",t) ) {
               isdecimal = 1; // reset after delimiter
            }
         }
         if (j>2) {
            if (chaine[j-2] == 'e' || chaine[j-2] == 'E') {
               Bool_t isrightdecimal = 1;

               for(k=j-3; k>=0 && isrightdecimal; --k) {
                  t = chaine[k];
                  isrightdecimal = isrightdecimal && (strchr("0123456789.",t)!=0);
                  if (!isrightdecimal) {
                     if (strchr("+-/[]()&|><=!*/%^\\",t)!=0) {
                        puiss10bis = 1;
                     }
                  }
               }
               if (k<0 && isrightdecimal)  puiss10bis = 1;
            }
         }
         if (puiss10 && (i<=lchain)) {
            t = chaine[i];
            puiss10 = (strchr("0123456789.",t)!=0);
         }
         if (puiss10bis && (j<=lchain)) {
            t = chaine[j];
            puiss10bis = (strchr("0123456789.",t)!=0);
         }

         if (chaine(i-1,1) == "\"") inString = !inString;
         if (inString) continue;
         if (chaine(i-1,1) == "[") compt2++;
         if (chaine(i-1,1) == "]") compt2--;
         if (chaine(i-1,1) == "(") compt++;
         if (chaine(i-1,1) == ")") compt--;
         if (chaine(j-1,1) == "[") compt3++;
         if (chaine(j-1,1) == "]") compt3--;
         if (chaine(j-1,1) == "(") compt4++;
         if (chaine(j-1,1) == ")") compt4--;
         if (chaine(i-1,2)=="&&" && !inString && compt==0 && compt2==0 && et==0) {et=i;puiss=0;}
         if (chaine(i-1,2)=="||" && compt==0 && compt2==0 && ou==0) {puiss10=0; ou=i;}
         if (chaine(i-1,1)=="&"  && compt==0 && compt2==0 && etx==0) {etx=i;puiss=0;}
         if (chaine(i-1,1)=="|"  && compt==0 && compt2==0 && oux==0) {puiss10=0; oux=i;}
         if (chaine(i-1,2)==">>" && compt==0 && compt2==0 && rshift==0) {puiss10=0; rshift=i;}
         if (chaine(i-1,1)==">"  && compt==0 && compt2==0 && rshift==0 && grand==0)
            {puiss10=0; grand=i;}
         if (chaine(i-1,2)=="<<" && compt==0 && compt2==0 && lshift==0) {puiss10=0; lshift=i;}
         if (chaine(i-1,1)=="<"  && compt==0 && compt2==0 && lshift==0 && petit==0)
            {puiss10=0; petit=i;
            // Check whether or not we have a template names! (actually this can
            // only happen in TTreeFormula.
            for(int ip = i,depth=0; ip < lchain; ++ip) {
               char c = chaine(ip);
               // The characteres allowed in the template parameter are alpha-numerical characters,
               // underscores, comma, <, > and scope operator.
               if (isalnum(c) || c=='_' || c==',') continue;
               if (c==':' && chaine(ip+1)==':') { ++ip; continue; }
               if (c=='<') { ++depth; continue; }
               if (c=='>') {
                  if (depth) { --depth; continue; }
                  else {
                     // We reach the end of the template parameter.
                     petit = 0;
                     i = ip+1;
                     break;
                  }
               }
               // Character not authorized within a template parameter
               break;
            }
            if (petit==0) {
               // We found a template parameter and modified i
               continue; // the for(int i ,...)
            }
         }
         if ((chaine(i-1,2)=="<=" || chaine(i-1,2)=="=<") && compt==0 && compt2==0
            && peteg==0) {peteg=i; puiss10=0; petit=0;}
         if ((chaine(i-1,2)=="=>" || chaine(i-1,2)==">=") && compt==0 && compt2==0
            && grdeg==0) {puiss10=0; grdeg=i; grand=0;}
         if (chaine(i-1,2) == "==" && compt == 0 && compt2 == 0 && egal == 0) {puiss10=0; egal=i;}
         if (chaine(i-1,2) == "!=" && compt == 0 && compt2 == 0 && diff == 0) {puiss10=0; diff=i;}
         if (i>1 && chaine(i-1,1) == "+" && compt == 0 && compt2 == 0 && puiss10==0) plus=i;
         if (chaine(j-1,1) == "-" && chaine(j-2,1) != "*" && chaine(j-2,1) != "/"
            && chaine(j-2,1)!="^" && compt3==0 && compt4==0 && moins==0 && puiss10bis==0) moins=j;
         if (chaine(i-1,1)=="%" && compt==0 && compt2==0 && modulo==0) {puiss10=0; modulo=i;}
         if (chaine(i-1,1)=="*" && compt==0 && compt2==0 && multi==0)  {puiss10=0; multi=i;}
         if (chaine(j-1,1)=="/" && chaine(j-2,1)!="\\"
            && compt4==0 && compt3==0 && divi==0)
         {
            puiss10=0; divi=j;
         }
         if (chaine(j-1)=='^' && compt4==0 && compt3==0 && puiss==0) {puiss10=0; puiss=j;}
         if (chaine(i-1)=='?' && compt == 0 && compt2 == 0 && tercond == 0) {puiss10=0; tercond=i;}
         if (chaine(i-1)==':' && tercond && compt == 0 && compt2 == 0 && terelse == 0) {
            if (i>2 && chaine(i-2)!=':' && chaine(i)!=':') {
               puiss10=0; terelse=i;
            }
         }

         j--;
      }

   // If operator found, analyze left and right part of the statement

      actionParam = 0;
      if (tercond && terelse) {
         if (tercond == 1 || terelse == lchain || tercond == (terelse-1) ) {
            err = 5;
            chaine_error = "?:";
         } else {
            // Condition
            ctemp = chaine(0,tercond-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;

            fExpr[fNoper] = "?: condition jump";
            actionCode = kJumpIf;
            actionParam = 0;
            SetAction(fNoper,actionCode, actionParam);
            Int_t optloc = fNoper++;

            // Expression executed if condition is true.
            ctemp = chaine(tercond,terelse-tercond-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            actionParam = fNoper; // We want to skip the next instruction ('else jump'), so we set the param to the current cursor and the next instruction will be skip by the ++i in the eval loop
            SetAction(optloc, actionCode, actionParam);

            fExpr[fNoper] = "?: else jump";
            actionCode = kJump;
            actionParam = 0;
            // Set jump target.
            SetAction(fNoper,actionCode, actionParam);
            optloc = fNoper++;

            // Expression executed if condition is false.
            ctemp = chaine(terelse,lchain-terelse);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            // Set jump target.
            actionParam = fNoper - 1; // We need to not skip the next instruction, so we compensate for the ++i in the eval loop
            SetAction(optloc, actionCode, actionParam);

            if (IsString(optloc-1) != IsString(fNoper-1)) {
               err = 45;
               chaine_error = "?:";
            }
         }
      } else if (ou != 0) {    //check for ||
         if (ou==1 || ou==lchain-1) {
            err=5;
            chaine_error="||";
         }
         else {
            ctemp = chaine(0,ou-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;

            fExpr[fNoper] = "|| checkpoint";
            actionCode = kBoolOptimize;
            actionParam = 2;
            SetAction(fNoper,actionCode, actionParam);
            Int_t optloc = fNoper++;

            ctemp = chaine(ou+1,lchain-ou-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "||";
            actionCode = kOr;
            SetAction(fNoper,actionCode, 0);

            SetAction( optloc, GetAction(optloc), GetActionParam(optloc) + (fNoper-optloc) * 10);
            fNoper++;
            if (!CheckOperands(optloc-1,fNoper-1,err)) return;
         }
      } else if (et!=0) {
         if (et==1 || et==lchain-1) {
            err=5;
            chaine_error="&&";
         }
         else {
            ctemp = chaine(0,et-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;

            fExpr[fNoper] = "&& checkpoint";
            actionCode = kBoolOptimize;
            actionParam = 1;
            SetAction(fNoper,actionCode,actionParam);

            Int_t optloc = fNoper++;

            ctemp = chaine(et+1,lchain-et-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "&&";
            actionCode = kAnd;
            SetAction(fNoper,actionCode,0);

            SetAction(optloc, GetAction(optloc), GetActionParam(optloc) + (fNoper-optloc) * 10);
            fNoper++;
            if (!CheckOperands(optloc-1,fNoper-1,err)) return;
         }
      } else if (oux!=0) {
         if (oux==1 || oux==lchain) {
            err=5;
            chaine_error="|";
         }
         else {
            ctemp = chaine(0,oux-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(oux,lchain-oux);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "|";
            actionCode = kBitOr;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (etx!=0) {
         if (etx==1 || etx==lchain) {
            err=5;
            chaine_error="&";
         }
         else {
            ctemp = chaine(0,etx-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(etx,lchain-etx);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "&";
            actionCode = kBitAnd;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (petit != 0) {
         if (petit==1 || petit==lchain) {
            err=5;
            chaine_error="<";
         }
         else {
            ctemp = chaine(0,petit-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(petit,lchain-petit);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "<";
            actionCode = kLess;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (grand != 0) {
         if (grand==1 || grand==lchain) {
            err=5;
            chaine_error=">";
         }
         else {
            ctemp = chaine(0,grand-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(grand,lchain-grand);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = ">";
            actionCode = kGreater;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (peteg != 0) {
         if (peteg==1 || peteg==lchain-1) {
            err=5;
            chaine_error="<=";
         }
         else {
            ctemp = chaine(0,peteg-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            ctemp = chaine(peteg+1,lchain-peteg-1);
            UInt_t leftopr = fNoper-1;
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "<=";
            actionCode = kLessThan;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (grdeg != 0) {
         if (grdeg==1 || grdeg==lchain-1) {
            err=5;
            chaine_error="=>";
         }
         else {
            ctemp = chaine(0,grdeg-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(grdeg+1,lchain-grdeg-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = ">=";
            actionCode = kGreaterThan;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else if (egal != 0) {
         if (egal==1 || egal==lchain-1) {
            err=5;
            chaine_error="==";
         }
         else {
            ctemp = chaine(0,egal-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            Int_t optloc = fNoper-1;

            ctemp = chaine(egal+1,lchain-egal-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "==";
            actionCode = kEqual;

            Bool_t isstring = IsString(fNoper-1);
            if (IsString(optloc) != isstring) {
               err = 45;
               chaine_error = "==";
            } else if (isstring) {
               actionCode = kStringEqual;
            }
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
         }
      } else if (diff != 0) {
         if (diff==1 || diff==lchain-1) {
            err=5;
            chaine_error = "!=";
         }
         else {
            ctemp = chaine(0,diff-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            Int_t optloc = fNoper-1;

            ctemp = chaine(diff+1,lchain-diff-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "!=";
            actionCode = kNotEqual;

            Bool_t isstring = IsString(fNoper-1);
            if (IsString(optloc) != isstring) {
               err = 45;
               chaine_error = "!=";
            } else if (isstring) {
               actionCode = kStringNotEqual;
            }
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
         }
      } else if (plus != 0) {
         if (plus==lchain) {
            err=5;
            chaine_error = "+";
         }
         else {
            ctemp = chaine(0,plus-1);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            UInt_t leftopr = fNoper-1;
            ctemp = chaine(plus,lchain-plus);
            Analyze(ctemp.Data(),err,offset); if (err) return;
            fExpr[fNoper] = "+";
            actionCode = kAdd;
            SetAction(fNoper,actionCode,actionParam);
            fNoper++;
            if (!CheckOperands(leftopr,fNoper-1,err)) return;
         }
      } else {
         if (moins != 0) {
            if (moins == 1) {
               ctemp = chaine(moins,lchain-moins);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               fExpr[fNoper] = "-";
               actionCode = kSignInv;
               SetAction(fNoper,actionCode,actionParam);
               ++fNoper;
               if (!CheckOperands(fNoper-1,err)) return;
            } else {
               if (moins == lchain) {
                  err=5;
                  chaine_error = "-";
               } else {
                  ctemp = chaine(0,moins-1);
                  Analyze(ctemp.Data(),err,offset); if (err) return;
                  UInt_t leftopr = fNoper-1;
                  ctemp = chaine(moins,lchain-moins);
                  Analyze(ctemp.Data(),err,offset); if (err) return;
                  fExpr[fNoper] = "-";
                  actionCode = kSubstract;
                  SetAction(fNoper,actionCode,actionParam);
                  fNoper++;
                  if (!CheckOperands(leftopr,fNoper-1,err)) return;
               }
            }
         } else if (modulo != 0) {
            if (modulo == 1 || modulo == lchain) {
               err=5;
               chaine_error="%";
            } else {
               ctemp = chaine(0,modulo-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               UInt_t leftopr = fNoper-1;
               ctemp = chaine(modulo,lchain-modulo);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               fExpr[fNoper] = "%";
               actionCode = kModulo;
               SetAction(fNoper,actionCode,actionParam);
               fNoper++;
               if (!CheckOperands(leftopr,fNoper-1,err)) return;
            }
         } else if (rshift != 0) {
            if (rshift == 1 || rshift == lchain) {
               err=5;
               chaine_error=">>";
            } else {
               ctemp = chaine(0,rshift-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               UInt_t leftopr = fNoper-1;
               ctemp = chaine(rshift+1,lchain-rshift-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               fExpr[fNoper] = ">>";
               actionCode = kRightShift;
               SetAction(fNoper,actionCode,actionParam);
               fNoper++;
               if (!CheckOperands(leftopr,fNoper-1,err)) return;
            }
         } else if (lshift != 0) {
            if (lshift == 1 || lshift == lchain) {
               err=5;
               chaine_error=">>";
            } else {
               ctemp = chaine(0,lshift-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               UInt_t leftopr = fNoper-1;
               ctemp = chaine(lshift+1,lchain-lshift-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               fExpr[fNoper] = ">>";
               actionCode = kLeftShift;
               SetAction(fNoper,actionCode,actionParam);
               fNoper++;
               if (!CheckOperands(leftopr,fNoper-1,err)) return;
            }
         } else {
            if (multi != 0) {
               if (multi == 1 || multi == lchain) {
               err=5;
               chaine_error="*";
            }
            else {
               ctemp = chaine(0,multi-1);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               UInt_t leftopr = fNoper-1;
               ctemp = chaine(multi,lchain-multi);
               Analyze(ctemp.Data(),err,offset); if (err) return;
               fExpr[fNoper] = "*";
               actionCode = kMultiply;
               SetAction(fNoper,actionCode,actionParam);
               fNoper++;
               if (!CheckOperands(leftopr,fNoper-1,err)) return;
            }
         } else {
            if (divi != 0) {
               if (divi == 1 || divi == lchain) {
                  err=5;
                  chaine_error = "/";
               }
               else {
                  ctemp = chaine(0,divi-1);
                  Analyze(ctemp.Data(),err,offset); if (err) return;
                  UInt_t leftopr = fNoper-1;
                  ctemp = chaine(divi,lchain-divi);
                  Analyze(ctemp.Data(),err,offset); if (err) return;
                  fExpr[fNoper] = "/";
                  actionCode = kDivide;
                  SetAction(fNoper,actionCode,actionParam);
                  fNoper++;
                  if (!CheckOperands(leftopr,fNoper-1,err)) return;
               }
            } else {
               if (puiss != 0) {
                  if (puiss == 1 || puiss == lchain) {
                     err = 5;
                     chaine_error = "**";
                  }
                  else {
                     if (chaine(lchain-2,2) == "^2") {
                        ctemp = "sq(" + chaine(0,lchain-2) + ")";
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                     } else {
                        ctemp = chaine(0,puiss-1);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        UInt_t leftopr = fNoper-1;
                        ctemp = chaine(puiss,lchain-puiss);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "^";
                        actionCode = kpow;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(leftopr,fNoper-1,err)) return;
                     }
                  }
               } else {

                  find=0;

   // Check for a numerical expression
                  {
                     Bool_t hasDot = kFALSE;
                     Bool_t isHexa = kFALSE;
                     Bool_t hasExpo= kFALSE;
                     if ((chaine(0,2)=="0x")||(chaine(0,2)=="0X")) isHexa=kTRUE;
                     for (j=0; j<chaine.Length() && err==0; j++) {
                        t=chaine[j];
                        if (!isHexa) {
                           if (j>0 && (chaine(j,1)=="e" || chaine(j,2)=="e+" || chaine(j,2)=="e-" || chaine(j,1)=="E" || chaine(j,2)=="E+" || chaine(j,2)=="E-")) {
                              if (hasExpo) {
                                 err=26;
                                 chaine_error=chaine;
                              }
                              hasExpo = kTRUE;
                              // The previous implementation allowed a '.' in the exponent.
                              // That information was ignored (by sscanf), we now make it an error
                              // hasDot = kFALSE;
                              hasDot = kTRUE;  // forbid any additional '.'
                              if (chaine(j,2)=="e+" || chaine(j,2)=="e-" || chaine(j,2)=="E+" || chaine(j,2)=="E-") j++;
                           }
                           else {
                              if (chaine(j,1) == "." && !hasDot) hasDot = kTRUE; // accept only one '.' in the number
                              else {
                                 // The previous implementation was allowing ANYTHING after the '.' and thus
                                 // made legal code like '2.3 and fpx' and was just silently ignoring the
                                 // 'and fpx'.
                                 if (!strchr("0123456789",t) && (chaine(j,1)!="+" || j!=0)) {
                                    err = 30;
                                    chaine_error=chaine;
                                 }
                              }
                           }
                        }
                        else {
                           if (!strchr("0123456789abcdefABCDEF",t) && (j>1)) {
                              err = 30;
                              chaine_error=chaine;
                           }
                        }
                     }
                     if (fNconst >= gMAXCONST) err = 27;
                     if (!err) {
                        if (!isHexa) {if (sscanf((const char*)chaine,"%lg",&vafConst) > 0) err = 0; else err =1;}
                        else {if (sscanf((const char*)chaine,"%lx",&vafConst2) > 0) err = 0; else err=1;
                        vafConst = (Double_t) vafConst2;}
                        fExpr[fNoper] = chaine;
                        k = -1;
                        for (j=0;j<fNconst;j++) {
                           if (vafConst == fConst[j] ) k= j;
                        }
                        if ( k < 0) {  k = fNconst; fNconst++; fConst[k] = vafConst; }
                        actionCode = kConstant;
                        actionParam = k;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                     }
                     if (err==30) err=0;
                     else find = kTRUE;
                  }

                  // Look for an already defined expression

                  if (find==0) {
                     {
                        R__LOCKGUARD2(gROOTMutex);
                        oldformula = (const TFormula*)gROOT->GetListOfFunctions()->FindObject((const char*)chaine);
                     }
                     if (oldformula && strcmp(schain,oldformula->GetTitle())) {
                        Int_t nprior = fNpar;
                        Analyze(oldformula->GetExpFormula(),err,fNpar);
                        // if the oldformula was using a normalized function (gausn or landaun) set also in this one
                        if (oldformula->IsNormalized()) SetBit(kNormalized);
                        if (err) return; // changes fNpar
                        fNpar = nprior;
                        find=1;
                        if (!err) {
                           Int_t npold = oldformula->GetNpar();
                           fNpar += npold;
                           for (Int_t ipar=0;ipar<npold;ipar++) {
                              fParams[ipar+fNpar-npold] = oldformula->GetParameter(ipar);
                           }
                        }
                     }
                  }
                  if (find == 0) {

   // Check if chaine is a defined variable.
   // Note that DefinedVariable can be overloaded

                     ctemp = chaine;
                     ctemp.ReplaceAll(escapedSlash, slash);
                     Int_t action;
                     k = DefinedVariable(ctemp,action);
                     if (k==-3) {
                        // Error message already issued
                        err = 1;
                     } if (k==-2) {
                        err = 31;
                        chaine_error = ctemp;
                     } else if ( k >= 0 ) {
                        fExpr[fNoper] = ctemp;
                        actionCode = action;
                        actionParam = k;
                        SetAction(fNoper,actionCode,actionParam);
                        if (action==kDefinedString) fNstring++;
                        else if (k <kMAXFOUND && !fAlreadyFound.TestBitNumber(k)) {
                           fAlreadyFound.SetBitNumber(k);
                           fNval++;
                        }
                        fNoper++;
                     } else if (chaine(0,1) == "!") {
                        ctemp = chaine(1,lchain-1);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "!";
                        actionCode = kNot;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,1)=="\"" && chaine(chaine.Length()-1,1)=="\"") {
                        // It is a string !!!
                        fExpr[fNoper] = chaine(1,chaine.Length()-2);
                        actionCode = kStringConst;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                     } else if (chaine(0,4) == "cos(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "cos";
                        actionCode = kcos;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "sin(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "sin";
                        actionCode = ksin;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "tan(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "tan";
                        actionCode = ktan;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "acos(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "acos";
                        actionCode = kacos;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "asin(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "asin";
                        actionCode = kasin;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "atan(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "atan";
                        actionCode = katan;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "cosh(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "cosh";
                        actionCode = kcosh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "sinh(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "sinh";
                        actionCode = ksinh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "tanh(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "tanh";
                        actionCode = ktanh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,6) == "acosh(") {
                        ctemp = chaine(5,lchain-5);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "acosh";
                        actionCode = kacosh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,6) == "asinh(") {
                        ctemp = chaine(5,lchain-5);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "asinh";
                        actionCode = kasinh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,6) == "atanh(") {
                        ctemp = chaine(5,lchain-5);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "atanh";
                        actionCode = katanh;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,3) == "sq(") {
                        ctemp = chaine(2,lchain-2);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "sq";
                        actionCode = ksq;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "log(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "log";
                        actionCode = klog;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,6) == "log10(") {
                        ctemp = chaine(5,lchain-5);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "log10";
                        actionCode = klog10;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "exp(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "exp";
                        actionCode = kexp;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "abs(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "abs";
                        actionCode = kabs;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,5) == "sign(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "sign";
                        actionCode = ksign;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine(0,4) == "int(") {
                        ctemp = chaine(3,lchain-3);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "int";
                        actionCode = kint;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;
                     } else if (chaine == "rndm" || chaine(0,5) == "rndm(") {
                        fExpr[fNoper] = "rndm";
                        actionCode = krndm;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                     } else if (chaine(0,5) == "sqrt(") {
                        ctemp = chaine(4,lchain-4);
                        Analyze(ctemp.Data(),err,offset); if (err) return;
                        fExpr[fNoper] = "sqrt";
                        actionCode = ksqrt;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;;
                        if (!CheckOperands(fNoper-1,err)) return;

   // Look for an exponential

                     } else if ( chaine == "expo" || chaine(0,5)=="expo("
                            || (lchain==5 && chaine(1,4)=="expo")
                            || (lchain==6 && chaine(2,4)=="expo")
                            || chaine(1,5)=="expo(" || chaine(2,5)=="expo(" ) {
                        chaine1ST=chaine;
                        if (chaine(1,4) == "expo") {
                           ctemp=chaine(0,1);
                           if (ctemp=="x") {
                              inter2=0;
                              if (fNdim < 1) fNdim = 1; }
                           else if (ctemp=="y") {
                              inter2=1;
                              if (fNdim < 2) fNdim = 2; }
                           else if (ctemp=="z") {
                              inter2=2;
                              if (fNdim < 3) fNdim = 3; }
                           else if (ctemp=="t") {
                              inter2=3;
                              if (fNdim < 4) fNdim = 4; }
                           else {
                              err=26; // unknown name;
                              chaine_error=chaine1ST;
                           }
                           chaine=chaine(1,lchain-1);
                           lchain=chaine.Length();
                        } else inter2=0;
                        if (chaine(2,4) == "expo") {
                           if (chaine(0,2) != "xy") {
                              err=26; // unknown name
                              chaine_error=chaine1ST;
                           }
                           else {
                              inter2=5;
                              if (fNdim < 2) fNdim = 2;
                              chaine=chaine(2,lchain-2);
                              lchain=chaine.Length();
                           }
                        }
                        if (lchain == 4) {
                           if (fNpar>=gMAXPAR) err=7; // too many parameters
                           if (!err) {
                              fExpr[fNoper] = chaine1ST;
                              actionCode = kexpo + inter2;
                              actionParam = offset;
                              SetAction(fNoper,actionCode,actionParam);
                              if (inter2 == 5+offset && fNpar < 3+offset) fNpar = 3+offset;
                              if (fNpar < 2+offset) fNpar = 2+offset;
                              if (fNpar>=gMAXPAR) err=7; // too many parameters
                              if (!err) {
                                 fNoper++;
                                 if (fNdim < 1) fNdim = 1;
                                 if (fNpar == 2) SetNumber(200);
                              }
                           }
                        } else if (chaine(4,1) == "(") {
                           ctemp = chaine(5,lchain-6);
                           fExpr[fNoper] = chaine1ST;
                           for (j=0; j<ctemp.Length(); j++) {
                              t=ctemp[j];
                              if (strchr("0123456789",t)==0 && (ctemp(j,1)!="+" || j!=0)) {
                                 err=20;
                                 chaine_error=chaine1ST;
                              }
                           }
                           if (err==0) {
                              sscanf(ctemp.Data(),"%d",&inter);
                              if (inter>=0) {
                                 inter += offset;
                                 actionCode = kexpo + inter2;
                                 actionParam = inter;
                                 SetAction(fNoper,actionCode,actionParam);
                                 if (inter2 == 5) inter++;
                                 if (inter+2>fNpar) fNpar = inter+2;
                                 if (fNpar>=gMAXPAR) err=7; // too many parameters
                                 if (!err) fNoper++;
                                 if (fNpar == 2) SetNumber(200);
                              } else err=20;
                           } else err = 20; // non integer value for parameter number
                        } else {
                           err=26; // unknown name
                           chaine_error=chaine;
                        }

   // Look for gaus, xgaus,ygaus,xygaus

                     } else if (chaine=="gaus"
                            || (lchain==5 && chaine(1,4)=="gaus")
                            || (lchain==6 && chaine(2,4)=="gaus")
                            || chaine(0,5)=="gaus(" || chaine(1,5)=="gaus(" || chaine(2,5)=="gaus(") {
                        chaine1ST=chaine;
                        if (chaine(1,4) == "gaus") {
                           ctemp=chaine(0,1);
                           if (ctemp=="x") {
                              inter2=0;
                              if (fNdim < 1) fNdim = 1; }
                           else if (ctemp=="y") {
                              inter2=1;
                              if (fNdim < 2) fNdim = 2; }
                           else if (ctemp=="z") {
                              inter2=2;
                              if (fNdim < 3) fNdim = 3; }
                           else if (ctemp=="t") {
                              inter2=3;
                              if (fNdim < 4) fNdim = 4; }
                           else {
                              err=26; // unknown name
                              chaine_error=chaine1ST;
                           }
                           chaine=chaine(1,lchain-1);
                           lchain=chaine.Length();
                        } else inter2=0;
                        if (chaine(2,4) == "gaus") {
                           if (chaine(0,2) != "xy") {
                              err=26; // unknown name
                              chaine_error=chaine1ST;
                           }
                           else {
                              inter2=5;
                              if (fNdim < 2) fNdim = 2;
                              chaine=chaine(2,lchain-2);
                              lchain=chaine.Length();
                              SetNumber(110); // xygaus
                           }
                        }
                        if (lchain == 4 && err==0) {
                           if (fNpar>=gMAXPAR) err=7; // too many parameters
                           if (!err) {
                              fExpr[fNoper] = chaine1ST;
                              actionCode = kgaus + inter2;
                              actionParam = offset;
                              SetAction(fNoper,actionCode,actionParam);
                              if (inter2 == 5+offset && fNpar < 5+offset) fNpar = 5+offset;
                              if (3+offset>fNpar) fNpar = 3+offset;
                              if (fNpar>=gMAXPAR) err=7; // too many parameters
                              if (!err) {
                                 fNoper++;
                                 if (fNdim < 1) fNdim = 1;
                                 if (fNpar == 3) SetNumber(100);
                              }
                           }
                        } else if (chaine(4,1) == "(" && err==0) {
                           ctemp = chaine(5,lchain-6);
                           fExpr[fNoper] = chaine1ST;
                           for (j=0; j<ctemp.Length(); j++) {
                              t=ctemp[j];
                              if (strchr("0123456789",t)==0 && (ctemp(j,1)!="+" || j!=0)) {
                                 err=20;
                                 chaine_error=chaine1ST;
                              }
                           }
                           if (err==0) {
                              sscanf(ctemp.Data(),"%d",&inter);
                              if (inter >= 0) {
                                 inter += offset;
                                 actionCode = kgaus + inter2;
                                 actionParam = inter;
                                 SetAction(fNoper,actionCode,actionParam);
                                 if (inter2 == 5) inter += 2;
                                 if (inter+3>fNpar) fNpar = inter+3;
                                 if (fNpar>=gMAXPAR) err=7; // too many parameters
                                 if (!err) fNoper++;
                                 if(fNpar == 3) SetNumber(100);
                              } else err = 20; // non integer value for parameter number
                           }
                        } else if (err==0) {
                           err=26; // unknown name
                           chaine_error=chaine1ST;
                        }

   // Look for landau, xlandau,ylandau,xylandau

                     } else if (chaine=="landau" || (lchain==7 && chaine(1,6)=="landau")
                            || (lchain==8 && chaine(2,6)=="landau")
                            || chaine(0,7)=="landau(" || chaine(1,7)=="landau(" || chaine(2,7)=="landau(") {
                        chaine1ST=chaine;
                        if (chaine(1,6) == "landau") {
                           ctemp=chaine(0,1);
                           if (ctemp=="x") {
                              inter2=0;
                              if (fNdim < 1) fNdim = 1; }
                           else if (ctemp=="y") {
                              inter2=1;
                              if (fNdim < 2) fNdim = 2; }
                           else if (ctemp=="z") {
                              inter2=2;
                              if (fNdim < 3) fNdim = 3; }
                           else if (ctemp=="t") {
                              inter2=3;
                              if (fNdim < 4) fNdim = 4; }
                           else {
                              err=26; // unknown name
                              chaine_error=chaine1ST;
                           }
                           chaine=chaine(1,lchain-1);
                           lchain=chaine.Length();
                        } else inter2=0;
                        if (chaine(2,6) == "landau") {
                           if (chaine(0,2) != "xy") {
                              err=26; // unknown name
                              chaine_error=chaine1ST;
                           }
                           else {
                              inter2=5;
                              if (fNdim < 2) fNdim = 2;
                              chaine=chaine(2,lchain-2);
                              lchain=chaine.Length();
                              SetNumber(410);
                           }
                        }
                        if (lchain == 6 && err==0) {
                           if (fNpar>=gMAXPAR) err=7; // too many parameters
                           if (!err) {
                              fExpr[fNoper] = chaine1ST;
                              actionCode = klandau + inter2;
                              actionParam = offset;
                              SetAction(fNoper,actionCode,actionParam);
                              if (inter2 == 5+offset && fNpar < 5+offset) fNpar = 5+offset;
                              if (3+offset>fNpar) fNpar = 3+offset;
                              if (fNpar>=gMAXPAR) err=7; // too many parameters
                              if (!err) {
                                 fNoper++;
                                 if (fNdim < 1) fNdim = 1;
                                 if (fNpar == 3) SetNumber(400);
                              }
                           }
                        } else if (chaine(6,1) == "(" && err==0) {
                           ctemp = chaine(7,lchain-8);
                           fExpr[fNoper] = chaine1ST;
                           for (j=0; j<ctemp.Length(); j++) {
                              t=ctemp[j];
                              if (strchr("0123456789",t)==0 && (ctemp(j,1)!="+" || j!=0)) {
                                 err=20;
                                 chaine_error=chaine1ST;
                              }
                           }
                           if (err==0) {
                              sscanf(ctemp.Data(),"%d",&inter);
                              if (inter >= 0) {
                                 inter += offset;
                                 actionCode = klandau + inter2;
                                 actionParam = inter;
                                 SetAction(fNoper,actionCode,actionParam);
                                 if (inter2 == 5) inter += 2;
                                 if (inter+3>fNpar) fNpar = inter+3;
                                 if (fNpar>=gMAXPAR) err=7; // too many parameters
                                 if (!err) fNoper++;
                                 if (fNpar == 3) SetNumber(400);
                              } else err = 20; // non integer value for parameter number
                           }
                        } else if (err==0) {
                           err=26; // unknown name
                           chaine_error=chaine1ST;
                        }

   // Look for a polynomial

                     } else if (chaine(0,3) == "pol" || chaine(1,3) == "pol") {
                        chaine1ST=chaine;
                        if (chaine(1,3) == "pol") {
                           ctemp=chaine(0,1);
                           if (ctemp=="x") {
                              inter2=1;
                              if (fNdim < 1) fNdim = 1; }
                           else if (ctemp=="y") {
                              inter2=2;
                              if (fNdim < 2) fNdim = 2; }
                           else if (ctemp=="z") {
                              inter2=3;
                              if (fNdim < 3) fNdim = 3; }
                           else if (ctemp=="t") {
                              inter2=4;
                              if (fNdim < 4) fNdim = 4; }
                           else {
                              err=26; // unknown name;
                              chaine_error=chaine1ST;
                           }
                           chaine=chaine(1,lchain-1);
                           lchain=chaine.Length();
                        } else inter2=1;
                        if (chaine(lchain-1,1) == ")") {
                           nomb = 0;
                           for (j=3;j<lchain;j++) if (chaine(j,1)=="(" && nomb == 0) nomb = j;
                           if (nomb == 3) err = 23; // degree of polynomial not specified
                           if (nomb == 0) err = 40; // '(' is expected
                           ctemp = chaine(nomb+1,lchain-nomb-2);
                           for (j=0; j<ctemp.Length(); j++) {
                              t=ctemp[j];
                              if (strchr("0123456789",t)==0 && (ctemp(j,1)!="+" || j!=0)) {
                                 err=20;
                                 chaine_error=chaine1ST;
                              }
                           }
                           if (!err) {
                              sscanf(ctemp.Data(),"%d",&inter);
                              if (inter < 0) err = 20;
                           }
                        }
                        else {
                           nomb = lchain;
                           inter = 0;
                        }
                        if (!err) {
                           inter--;
                           ctemp = chaine(3,nomb-3);
                           if (sscanf(ctemp.Data(),"%d",&n) > 0) {
                              if (n < 0  ) err = 24; //Degree of polynomial must be positive
                              if (n >= 20) err = 25; //Degree of polynomial must be less than 20
                           } else err = 20;
                        }
                        if (!err) {
                           fExpr[fNoper] = chaine1ST;
                           actionCode = kpol+(inter2-1);
                           actionParam = n*100+inter+2;
                           SetAction(fNoper,actionCode,actionParam);
                           if (inter+n+1>=fNpar) fNpar = inter + n + 2;
                           if (fNpar>=gMAXPAR) err=7; // too many parameters
                           if (!err) {
                              fNoper++;
                              if (fNdim < 1) fNdim = 1;
                              SetNumber(300+n);
                           }
                        }

   // Look for pow,atan2,etc

                     } else if (chaine(0,4) == "pow(") {
                        compt = 4; nomb = 0; virgule = 0; nest=0;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "(") nest++;
                           else if (chaine(compt-1,1) == ")") nest--;
                           else if (chaine(compt-1,1) == "," && nest==0) {
                              nomb++;
                              if (nomb == 1 && virgule == 0) virgule = compt;
                           }
                        }
                        if (nomb != 1) err = 22; // There are plus or minus than 2 arguments for pow
                        else {
                           ctemp = chaine(4,virgule-5);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           UInt_t leftopr = fNoper-1;
                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "^";
                           actionCode = kpow;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;
                           if (!CheckOperands(leftopr,fNoper-1,err)) return;
                        }
                     } else if (chaine(0,7) == "strstr(") {
                        compt = 7; nomb = 0; virgule = 0; nest=0;
                        inString = false;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "\"") {
                              inString = !inString;
                           }  else if (!inString) {
                              if (chaine(compt-1,1) == "(") nest++;
                              else if (chaine(compt-1,1) == ")") nest--;
                              else if (chaine(compt-1,1) == "," && nest==0) {
                                 nomb++;
                                 if (nomb == 1 && virgule == 0) virgule = compt;
                              }
                           }
                        }
                        if (nomb != 1) err = 28; // There are plus or minus than 2 arguments for strstr
                        else {
                           ctemp = chaine(7,virgule-8);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           Int_t optloc = fNoper-1;

                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "strstr";
                           actionCode = kstrstr;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;

                           if ( !IsString(optloc) || !IsString(fNoper-2) ) {
                              err = 46;
                              chaine_error = "strstr";
                           }
                        }
                     } else if (chaine(0,4) == "min(") {
                        compt = 4; nomb = 0; virgule = 0; nest=0;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "(") nest++;
                           else if (chaine(compt-1,1) == ")") nest--;
                           else if (chaine(compt-1,1) == "," && nest==0) {
                              nomb++;
                              if (nomb == 1 && virgule == 0) virgule = compt;
                           }
                        }
                        if (nomb != 1) {
                           err = 44; // There are plus or minus than 2 arguments for min
                           err_hint = 3;
                        }
                        else {
                           ctemp = chaine(4,virgule-5);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           UInt_t leftopr = fNoper-1;
                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "min";
                           actionCode = kmin;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;
                           if (!CheckOperands(leftopr,fNoper-1,err)) return;
                        }
                     } else if (chaine(0,4) == "max(") {
                        compt = 4; nomb = 0; virgule = 0; nest=0;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "(") nest++;
                           else if (chaine(compt-1,1) == ")") nest--;
                           else if (chaine(compt-1,1) == "," && nest==0) {
                              nomb++;
                              if (nomb == 1 && virgule == 0) virgule = compt;
                           }
                        }
                        if (nomb != 1) {
                           err = 44; // There are plus or minus than 2 arguments for min
                           err_hint = 3;
                        }
                        else {
                           ctemp = chaine(4,virgule-5);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           UInt_t leftopr = fNoper-1;
                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "max";
                           actionCode = kmax;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;
                           if (!CheckOperands(leftopr,fNoper-1,err)) return;
                        }

                     } else if (chaine(0,6) == "atan2(") {
                        compt = 6; nomb = 0; virgule = 0; nest=0;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "(") nest++;
                           else if (chaine(compt-1,1) == ")") nest--;
                           else if (chaine(compt-1,1) == "," && nest==0) {
                              nomb++;
                              if (nomb == 1 && virgule == 0) virgule = compt;
                           }
                        }
                        if (nomb != 1) err = 21;  //{ There are plus or minus than 2 arguments for atan2
                        else {
                           ctemp = chaine(6,virgule-7);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           UInt_t leftopr = fNoper-1;
                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "atan2";
                           actionCode = katan2;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;
                           if (!CheckOperands(leftopr,fNoper-1,err)) return;
                        }
                     } else if (chaine(0,5) == "fmod(") {
                        compt = 5; nomb = 0; virgule = 0; nest=0;
                        while(compt != lchain) {
                           compt++;
                           if (chaine(compt-1,1) == "(") nest++;
                           else if (chaine(compt-1,1) == ")") nest--;
                           else if (chaine(compt-1,1) == "," && nest==0) {
                              nomb++;
                              if (nomb == 1 && virgule == 0) virgule = compt;
                           }
                        }
                        if (nomb != 1) {
                           err = 44; // There are plus or minus than 2 arguments for fmod
                           err_hint = 4;
                        }
                        else {
                           ctemp = chaine(5,virgule-6);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           UInt_t leftopr = fNoper-1;
                           ctemp = chaine(virgule,lchain-virgule-1);
                           Analyze(ctemp.Data(),err,offset); if (err) return;
                           fExpr[fNoper] = "fmod";
                           actionCode = kfmod;
                           SetAction(fNoper,actionCode,actionParam);
                           fNoper++;
                           if (!CheckOperands(leftopr,fNoper-1,err)) return;
                        }
                     } else if (AnalyzeFunction(chaine,err,offset) || err) { // The '||err' is to grab an error coming from AnalyzeFunction
                        if (err) {
                           chaine_error = chaine;
                        } else {
                           // We have a function call. Note that all the work was already,
                           // eventually done in AnalyzeFunction
                           //fprintf(stderr,"We found a foreign function in %s\n",chaine.Data());
                        }
                     } else if (chaine(0,1) == "[" && chaine(lchain-1,1) == "]") {
                        fExpr[fNoper] = chaine;
                        fNoper++;
                        ctemp = chaine(1,lchain-2);
                        for (j=0; j<ctemp.Length(); j++) {
                           t=ctemp[j];
                           if (strchr("0123456789",t)==0 && (ctemp(j,1)!="+" || j!=0)) {
                              err=20;
                              chaine_error=chaine1ST; // le numero ? de par[?] n'est pas un entier }
                           }
                        }
                        if (!err) {
                           sscanf(ctemp.Data(),"%d",&valeur);
                           actionCode = kParameter;
                           actionParam = offset + valeur;
                           SetAction(fNoper-1, actionCode, actionParam);
                           fExpr[fNoper-1] = "[";
                           fExpr[fNoper-1] = (fExpr[fNoper-1] + (long int)(valeur+offset)) + "]";
                        }
                     } else if (chaine == "pi") {
                        fExpr[fNoper] = "pi";
                        actionCode = kpi;
                        SetAction(fNoper,actionCode,actionParam);
                        fNoper++;
                     }
                     else {

   // None of the above.

                        err = 30;
                     }
                  }
               }
            }
         }
      }
   }

   // Overflows
   if (fNoper>=gMAXOP) err=6; // too many operators

   }

   // errors!
   if (err>1) {
      TString er = "";
      chaine_error = "\""+chaine_error+"\"";
      switch(err) {
         case  2 : er = " Invalid Floating Point Operation"; break;
         case  4 : er = " Empty String"; break;
         case  5 : er = " Invalid Syntax " + chaine_error; break;
         case  6 : er = " Too many operators !"; break;
         case  7 : er = " Too many parameters !"; break;
         case 10 : er = " z specified but not x and y"; break;
         case 11 : er = " z and y specified but not x"; break;
         case 12 : er = " y specified but not x"; break;
         case 13 : er = " z and x specified but not y"; break;
         case 20 : er = " Non integer value for parameter number : " + chaine_error; break;
         case 21 : er = " ATAN2 requires two arguments"; break;
         case 22 : er = " POW requires two arguments"; break;
         case 23 : er = " Degree of polynomial not specified"; break;
         case 24 : er = " Degree of polynomial must be positive"; break;
         case 25 : er = " Degree of polynomial must be less than 20"; break;
         case 26 : er = " Unknown name : " + chaine_error; break;
         case 27 : er = " Too many constants in expression"; break;
         case 28 : er = " strstr requires two arguments"; break;
         case 29 : er = " TFormula can only call interpreted and compiled functions that return a numerical type: " + chaine_error; break;
         case 30 : er = " Bad numerical expression : " + chaine_error; break;
         case 31 : er = " Part of the Variable " + chaine_error; er += " exists but some of it is not accessible or useable"; break;
         case 40 : er = " '(' is expected"; break;
         case 41 : er = " ')' is expected"; break;
         case 42 : er = " '[' is expected"; break;
         case 43 : er = " ']' is expected"; break;
         case 44 : er = " The function '" + chaine(0,err_hint) + "' requires two arguments."; break;
         case 45 : er = "The operator " + chaine_error + " requires a numerical operand."; break;
         case 46 : er = "Both operands of the operator " + chaine_error + " have to be either numbers or strings."; break;
         case 47 : er = chaine_error + " requires 2 string arguments"; break;
      }
      Error("Compile", "%s", er.Data());
      err=1;
   }

}


//______________________________________________________________________________
Bool_t TFormula::CheckOperands(Int_t oper, Int_t &err)
{
   // Check whether the operand at 'oper-1' is compatible with the operation
   // at 'oper'.

   if ( IsString(oper-1) && !StringToNumber(oper-1) ) {
      Error("Compile","\"%s\" requires a numerical operand.",fExpr[oper].Data());
      err = 45;
      return kFALSE;
   }
   return kTRUE;
}


//______________________________________________________________________________
Bool_t TFormula::CheckOperands(Int_t leftoper, Int_t oper, Int_t &err)
{
   // Check whether the operands at 'leftoper' and 'oper-1' are compatible with
   // the operation at 'oper'.

   if ( IsString(oper-1) || IsString(leftoper) ) {
      if (IsString(oper-1) && StringToNumber(oper-1)) {
          return kTRUE;
      }
      if (IsString(leftoper) && StringToNumber(leftoper)) {
         return kTRUE;
      }
      Error("Compile","\"%s\" requires two numerical operands.",fExpr[oper].Data());
      err = 46;
      return kFALSE;
   }
   return kTRUE;
}


//______________________________________________________________________________
Bool_t TFormula::StringToNumber(Int_t /* code */)
{
   // Try to 'demote' a string into an array bytes.  If this is not possible,
   // return false.

   // In TFormula proper, we can not handle array of bytes ...
   return kFALSE;
}


//______________________________________________________________________________
void TFormula::Clear(Option_t * /*option*/ )
{
   // Resets the objects.
   //
   // Resets the object to its state before compilation.

   ClearFormula();
}


//______________________________________________________________________________
void TFormula::ClearFormula(Option_t * /*option*/ )
{
   // Resets the objects.
   //
   // Resets the object to its state before compilation.

   fNdim   = 0;
   fNpar   = 0;
   fNoper  = 0;
   fNconst = 0;
   fNumber = 0;
   fNstring= 0;
   fNval   = 0;

   if (fExpr)   { delete [] fExpr;   fExpr   = 0;}
   if (fNames)  { delete [] fNames;  fNames  = 0;}
   if (fOper)   { delete [] fOper;   fOper   = 0;}
   if (fConst)  { delete [] fConst;  fConst  = 0;}
   if (fParams) { delete [] fParams; fParams = 0;}
   fFunctions.Delete();
   fLinearParts.Delete();
   //
   //MI change
   if (fPredefined)    { delete [] fPredefined;    fPredefined    = 0;}
   if (fOperOffset)    { delete [] fOperOffset;    fOperOffset    = 0;}
   if (fExprOptimized) { delete [] fExprOptimized; fExprOptimized = 0;}
   if (fOperOptimized) { delete [] fOperOptimized; fOperOptimized = 0;}
   // should we also remove the object from the list?
   // gROOT->GetListOfFunctions()->Remove(this);
   // if we don't, what happens if it fails the new compilation?
}

namespace {
   template <class T>
   inline static void ResizeArrayIfAllocated(T*& oldArray, int newSize){

      // Don't do anything in this case.
      if (!oldArray || newSize <=0) return;

      T* newArray = new T[newSize];
      std::copy(oldArray, oldArray+newSize, newArray);
      delete [] oldArray;
      oldArray = newArray;
   }
}

//______________________________________________________________________________
Int_t TFormula::Compile(const char *expression)
{
   // Compile expression already stored in fTitle.
   //
   //   Loop on all subexpressions of formula stored in fTitle
   //
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.
   //
   //Begin_Html
   /*
   <img src="gif/compile.gif">
   */
   //End_Html

   Int_t i,j,lc,valeur,err;
   TString ctemp;

   ClearFormula();

   // If expression is not empty, take it, otherwise take the title
   if (strlen(expression)) SetTitle(expression);

   TString chaine = GetTitle();

   if (chaine.Contains(";")) {
      char *sctemp = new char[chaine.Length()+1];
      strlcpy(sctemp,chaine.Data(),chaine.Length()+1);
      char *semicol = (char*)strstr(sctemp,";");
      if (semicol) *semicol = 0;
      chaine = sctemp;
      delete [] sctemp;
   }

   // if the function is linear, process it and fill the array of linear parts
   if (TestBit(kLinear)){
      ProcessLinear(chaine);
   }

     // see static function SetMaxima to change the gMAX.. default values
   fExpr   = new TString[gMAXOP];
   fConst  = new Double_t[gMAXCONST];
   fParams = new Double_t[gMAXPAR];
   fNames  = new TString[gMAXPAR];
   fOper   = new Int_t[gMAXOP];
   for (i=0; i<gMAXPAR; i++) {
      fParams[i] = 0;
      fNames[i] = "";
   }
   for (i=0; i<gMAXOP; i++) {
      fExpr[i] = "";
      fOper[i] = 0;
   }
   for (i=0; i<gMAXCONST; i++)
      fConst[i] = 0;

   // Substitution of some operators to C++ style
   Bool_t inString = false;
   for (i=1; i<=chaine.Length(); i++) {
      lc =chaine.Length();
      if (chaine(i-1,1) == "\"") inString = !inString;
      if (inString) continue;
      if (chaine(i-1,2) == "**") {
         chaine = chaine(0,i-1) + "^" + chaine(i+1,lc-i-1);
         i=0;
      } else if (chaine(i-1,2) == "++") {
         chaine = chaine(0,i) + chaine(i+1,lc-i-1);
         i=0;
      } else if (chaine(i-1,2) == "+-" || chaine(i-1,2) == "-+") {
         chaine = chaine(0,i-1) + "-" + chaine(i+1,lc-i-1);
         i=0;
      } else if (chaine(i-1,2) == "--") {
         chaine = chaine(0,i-1) + "+" + chaine(i+1,lc-i-1);
         i=0;
      } else if (chaine(i-1,2) == "->") {
         chaine = chaine(0,i-1) + "." + chaine(i+1,lc-i-1);
         i=0;
      } else if (chaine(i-1,1) == "[") {
         for (j=1;j<=chaine.Length()-i;j++) {
            if (chaine(j+i-1,1) == "]" || j+i > chaine.Length()) break;
         }
         ctemp = chaine(i,j-1);
         valeur=0;
         sscanf(ctemp.Data(),"%d",&valeur);
         if (valeur >= fNpar) fNpar = valeur+1;
      } else if (chaine(i-1,1) == " ") {
         chaine = chaine(0,i-1)+chaine(i,lc-i);
         i=0;
      }
   }
   err = 0;
   Analyze((const char*)chaine,err);

   // if no parameters delete arrays fParams and fNames
   if (!fNpar) {
      delete [] fParams; fParams = 0;
      delete [] fNames;  fNames = 0;
   }

   // if no errors, copy local parameters to formula objects
   if (!err) {
      if (fNdim <= 0) fNdim = 1;
      if (chaine.Length() > 4)
      {
         if ( GetNumber() != 400 &&
              GetNumber() != 410 &&
              GetNumber() != 110 )
            SetNumber(0);
         else if ( GetNumber() == 110 && chaine.Length() > 6 )
            SetNumber(0);
         else if ( GetNumber() == 410 && chaine.Length() > 8 )
            SetNumber(0);
      }
      // if formula is a gaussian, set parameter names
      if (GetNumber() == 100) {
         SetParName(0,"Constant");
         SetParName(1,"Mean");
         SetParName(2,"Sigma");
      }
      // if formula is a 2D gaussian, set parameter names
      if (GetNumber() == 110){
         SetParName(0,"Constant");
         SetParName(1,"MeanX");
         SetParName(2,"SigmaX");
         SetParName(3,"MeanY");
         SetParName(4,"SigmaY");
      }
      // if formula is an exponential, set parameter names
      if (GetNumber() == 200) {
         SetParName(0,"Constant");
         SetParName(1,"Slope");
      }
      // if formula is a polynome, set parameter names
      if (GetNumber() == 300+fNpar) {
         for (i=0;i<fNpar;i++) SetParName(i,Form("p%d",i));
      }
      // if formula is a landau, set parameter names
      if (GetNumber() == 400) {
         SetParName(0,"Constant");
         SetParName(1,"MPV");
         SetParName(2,"Sigma");
      }
      // if formula is a 2D landau, set parameter names
      if (GetNumber() == 410) {
         SetParName(0,"Constant");
         SetParName(1,"MPVX");
         SetParName(2,"SigmaX");
         SetParName(3,"MPVY");
         SetParName(4,"SigmaY");
      }
   }

   // Here we shrink the arrays allocated like this:
   //    fExpr   = new TString[gMAXOP];
   //    fConst  = new Double_t[gMAXCONST];
   //    fParams = new Double_t[gMAXPAR];
   //    fNames  = new TString[gMAXPAR];
   //    fOper   = new Int_t[gMAXOP];
   // fParams and fNames may be already 0, so we have to check.
   if (!err){
      ResizeArrayIfAllocated(fExpr, fNoper);
      ResizeArrayIfAllocated(fConst, fNconst);
      ResizeArrayIfAllocated(fParams, fNpar);
      ResizeArrayIfAllocated(fNames, fNpar);
      ResizeArrayIfAllocated(fOper, fNoper);
      }


   if (err) { fNdim = 0; return 1; }
   //   Convert(5);
   //
   //MI change
   if (!IsA()->GetBaseClass("TTreeFormula")) {
      Optimize();
   }
   //
   return 0;
}


//______________________________________________________________________________
void TFormula::Copy(TObject &obj) const
{
   // Copy this formula.

   Int_t i;
   ((TFormula&)obj).ClearFormula();
   TNamed::Copy(obj);
   ((TFormula&)obj).fNdim   = fNdim;
   ((TFormula&)obj).fNpar   = fNpar;
   ((TFormula&)obj).fNoper  = fNoper;
   ((TFormula&)obj).fNconst = fNconst;
   ((TFormula&)obj).fNumber = fNumber;
   ((TFormula&)obj).fNval   = fNval;
   ((TFormula&)obj).fExpr   = 0;
   ((TFormula&)obj).fConst  = 0;
   ((TFormula&)obj).fParams = 0;
   ((TFormula&)obj).fNames  = 0;
   if (fExpr && fNoper) {
      ((TFormula&)obj).fExpr = new TString[fNoper];
      for (i=0;i<fNoper;i++)  ((TFormula&)obj).fExpr[i]   = fExpr[i];
   }
   if (fOper && fNoper) {
     ((TFormula&)obj).fOper = new Int_t[fNoper];
      for (i=0;i<fNoper;i++)  ((TFormula&)obj).fOper[i]   = fOper[i];
   }
   if (fConst && fNconst) {
      ((TFormula&)obj).fConst = new Double_t[fNconst];
      for (i=0;i<fNconst;i++) ((TFormula&)obj).fConst[i]  = fConst[i];
   }
   if (fParams && fNpar) {
      ((TFormula&)obj).fParams = new Double_t[fNpar];
      for (i=0;i<fNpar;i++)   ((TFormula&)obj).fParams[i] = fParams[i];
   }
   if (fNames && fNpar) {
      ((TFormula&)obj).fNames = new TString[fNpar];
      for (i=0;i<fNpar;i++)   ((TFormula&)obj).fNames[i]  = fNames[i];
   }

   TIter next(&fFunctions);
   TObject *fobj;
   while ( (fobj = next()) ) {
      ((TFormula&)obj).fFunctions.Add( fobj->Clone() );
   }
   //
   // MI change
   //
   //
   if (fNoper) {
      if(fExprOptimized) {
         ((TFormula&)obj).fExprOptimized   = new TString[fNoper];
         for (i=0;i<fNoper;i++)  ((TFormula&)obj).fExprOptimized[i]   = fExprOptimized[i];
      }
      if (fOperOptimized) {
         ((TFormula&)obj).fOperOptimized   = new Int_t[fNoper];
         for (i=0;i<fNoper;i++)  ((TFormula&)obj).fOperOptimized[i]   = fOperOptimized[i];
      }
      if (fPredefined) {
         ((TFormula&)obj).fPredefined      = new TFormulaPrimitive*[fNoper];
         for (i=0;i<fNoper;i++) {((TFormula&)obj).fPredefined[i] = fPredefined[i];}
      }
      if (fOperOffset) {
         ((TFormula&)obj).fOperOffset         = new TOperOffset[fNoper];
         for (i=0;i<fNoper;i++) {((TFormula&)obj).fOperOffset[i] = fOperOffset[i];}
      }
   }
   ((TFormula&)obj).fNOperOptimized = fNOperOptimized;
   ((TFormula&)obj).fOptimal = fOptimal;

}


//______________________________________________________________________________
char *TFormula::DefinedString(Int_t)
{
   // Return address of string corresponding to special code.
   //
   //   This member function is inactive in the TFormula class.
   //   It may be redefined in derived classes.
   //
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.

   return 0;
}


//______________________________________________________________________________
Double_t TFormula::DefinedValue(Int_t)
{
   // Return value corresponding to special code.
   //
   //   This member function is inactive in the TFormula class.
   //   It may be redefined in derived classes.
   //
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.

   return 0;
}


//______________________________________________________________________________
Int_t TFormula::DefinedVariable(TString &chaine,Int_t &action)
{
   // Check if expression is in the list of defined variables.
   //
   //   This member function can be overloaded in derived classes
   //
   //   If you overload this member function, you also HAVE TO
   //   never call the constructor:
   //
   //     TFormula::TFormula(const char *name,const char *expression)
   //
   //   and write your own constructor
   //
   //     MyClass::MyClass(const char *name,const char *expression) : TFormula()
   //
   //   which has to call the TFormula default constructor and whose implementation
   //   should be similar to the implementation of the normal TFormula constructor
   //
   //   This is necessary because the normal TFormula constructor call indirectly
   //   the virtual member functions Analyze, DefaultString, DefaultValue
   //   and DefaultVariable.
   //
   //   The expected returns values are
   //     -2 :  the name has been recognized but won't be usable
   //     -1 :  the name has not been recognized
   //    >=0 :  the name has been recognized, return the action parameter.

   action = kVariable;
   if (chaine == "x") {
      if (fNdim < 1) fNdim = 1;
      return 0;
   } else if (chaine == "y") {
      if (fNdim < 2) fNdim = 2;
      return 1;
   } else if (chaine == "z") {
      if (fNdim < 3) fNdim = 3;
      return 2;
   } else if (chaine == "t") {
      if (fNdim < 4) fNdim = 4;
      return 3;
   }
   // MI change
   // extended defined variable (MI)
   //
   if (chaine.Data()[0]=='x'){
      if (chaine.Data()[1]=='[' && chaine.Data()[3]==']'){
         const char ch0 = '0';
         Int_t dim = chaine.Data()[2]-ch0;
         if (dim<0) return -1;
         if (dim>9) return -1;
         if (fNdim<=dim) fNdim = dim+1;
         return dim;
      }
      if (chaine.Data()[1]=='[' && chaine.Data()[4]==']'){
         const char ch0 = '0';
         Int_t dim = (chaine.Data()[2]-ch0)*10+(chaine.Data()[3]-ch0);
         if (dim<0) return -1;
         if (dim>99) return -1;
         if (fNdim<=dim) fNdim = dim+1;
         return dim;
      }
   }
   return -1;
}


//______________________________________________________________________________
Double_t TFormula::Eval(Double_t x, Double_t y, Double_t z, Double_t t) const
{
   // Evaluate this formula.
   //
   //   The current value of variables x,y,z,t is passed through x, y, z and t.
   //   The parameters used will be the ones in the array params if params is given
   //    otherwise parameters will be taken from the stored data members fParams

   Double_t xx[4];
   xx[0] = x;
   xx[1] = y;
   xx[2] = z;
   xx[3] = t;
   return ((TFormula*)this)->EvalPar(xx);
}


//______________________________________________________________________________
Double_t TFormula::EvalParOld(const Double_t *x, const Double_t *uparams)
{
   // Evaluate this formula.
   //
   //   The current value of variables x,y,z,t is passed through the pointer x.
   //   The parameters used will be the ones in the array params if params is given
   //    otherwise parameters will be taken from the stored data members fParams
   //Begin_Html
   /*
   <img src="gif/eval.gif">
   */
   //End_Html

   Int_t i,j;
   // coverity[uninit] the tab value of tab is guaranteed to be set properly by the control flow.
   Double_t tab[kMAXFOUND];
   const char *stringStack[gMAXSTRINGFOUND];
   Double_t param_calc[kMAXFOUND];
   char *string_calc[gMAXSTRINGFOUND];
   Int_t precalculated = 0;
   Int_t precalculated_str = 0;
   Double_t *params;

   if (uparams) {
      params = const_cast<Double_t*>(uparams);
   } else {
      params = fParams;
   }
   UInt_t pos    = 0;
   UInt_t strpos = 0;

   for (i=0; i<fNoper; ++i) {

      const int oper = fOper[i];
      const int opcode = oper >> kTFOperShift;

      switch(opcode) {

         case kParameter  : { pos++; tab[pos-1] = params[ oper & kTFOperMask ]; continue; }
         case kConstant   : { pos++; tab[pos-1] = fConst[ oper & kTFOperMask ]; continue; }
         case kVariable   : { pos++; tab[pos-1] = x[ oper & kTFOperMask ]; continue; }
         case kStringConst: { strpos++; stringStack[strpos-1] = (char*)fExpr[i].Data(); pos++; tab[pos-1] = 0; continue; }

         case kAdd        : pos--; tab[pos-1] += tab[pos]; continue;
         case kSubstract  : pos--; tab[pos-1] -= tab[pos]; continue;
         case kMultiply   : pos--; tab[pos-1] *= tab[pos]; continue;
         case kDivide     : pos--; if (tab[pos] == 0) tab[pos-1] = 0; //  division by 0
                           else               tab[pos-1] /= tab[pos];
                           continue;
         case kModulo     : {pos--;
                              Long64_t int1((Long64_t)tab[pos-1]);
                              Long64_t int2((Long64_t)tab[pos]);
                              tab[pos-1] = Double_t(int1%int2);
                              continue;}

         case kcos  : tab[pos-1] = TMath::Cos(tab[pos-1]); continue;
         case ksin  : tab[pos-1] = TMath::Sin(tab[pos-1]); continue;
         case ktan  : if (TMath::Cos(tab[pos-1]) == 0) {tab[pos-1] = 0;} // { tangente indeterminee }
                        else tab[pos-1] = TMath::Tan(tab[pos-1]);
                        continue;
         case kacos : if (TMath::Abs(tab[pos-1]) > 1) {tab[pos-1] = 0;} //  indetermination
                        else tab[pos-1] = TMath::ACos(tab[pos-1]);
                        continue;
         case kasin : if (TMath::Abs(tab[pos-1]) > 1) {tab[pos-1] = 0;} //  indetermination
                        else tab[pos-1] = TMath::ASin(tab[pos-1]);
                        continue;
         case katan : tab[pos-1] = TMath::ATan(tab[pos-1]); continue;
         case kcosh : tab[pos-1] = TMath::CosH(tab[pos-1]); continue;
         case ksinh : tab[pos-1] = TMath::SinH(tab[pos-1]); continue;
         case ktanh : if (TMath::CosH(tab[pos-1]) == 0) {tab[pos-1] = 0;} // { tangente indeterminee }
                        else tab[pos-1] = TMath::TanH(tab[pos-1]);
                        continue;
         case kacosh: if (tab[pos-1] < 1) {tab[pos-1] = 0;} //  indetermination
                        else tab[pos-1] = TMath::ACosH(tab[pos-1]);
                        continue;
         case kasinh: tab[pos-1] = TMath::ASinH(tab[pos-1]); continue;
         case katanh: if (TMath::Abs(tab[pos-1]) > 1) {tab[pos-1] = 0;} // indetermination
                        else tab[pos-1] = TMath::ATanH(tab[pos-1]); continue;
         case katan2: pos--; tab[pos-1] = TMath::ATan2(tab[pos-1],tab[pos]); continue;

         case kfmod : pos--; tab[pos-1] = fmod(tab[pos-1],tab[pos]); continue;
         case kpow  : pos--; tab[pos-1] = TMath::Power(tab[pos-1],tab[pos]); continue;
         case ksq   : tab[pos-1] = tab[pos-1]*tab[pos-1]; continue;
         case ksqrt : tab[pos-1] = TMath::Sqrt(TMath::Abs(tab[pos-1])); continue;

         case kstrstr : strpos -= 2; pos-=2; pos++;
                        if (strstr(stringStack[strpos],stringStack[strpos+1])) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;

         case kmin : pos--; tab[pos-1] = TMath::Min(tab[pos-1],tab[pos]); continue;
         case kmax : pos--; tab[pos-1] = TMath::Max(tab[pos-1],tab[pos]); continue;

         case klog  : if (tab[pos-1] > 0) tab[pos-1] = TMath::Log(tab[pos-1]);
                        else {tab[pos-1] = 0;} //{indetermination }
                        continue;
         case kexp  : { Double_t dexp = tab[pos-1];
                        if (dexp < -700) {tab[pos-1] = 0; continue;}
                        if (dexp >  700) {tab[pos-1] = TMath::Exp(700); continue;}
                        tab[pos-1] = TMath::Exp(dexp); continue;  }
         case klog10: if (tab[pos-1] > 0) tab[pos-1] = TMath::Log10(tab[pos-1]);
                        else {tab[pos-1] = 0;} //{indetermination }
                        continue;

         case kpi   : pos++; tab[pos-1] = TMath::ACos(-1); continue;

         case kabs  : tab[pos-1] = TMath::Abs(tab[pos-1]); continue;
         case ksign : if (tab[pos-1] < 0) tab[pos-1] = -1; else tab[pos-1] = 1; continue;
         case kint  : tab[pos-1] = Double_t(Int_t(tab[pos-1])); continue;

         case kSignInv: tab[pos-1] = -1 * tab[pos-1]; continue;

         case krndm : pos++; tab[pos-1] = gRandom->Rndm(1); continue;

         case kAnd  : pos--; if (tab[pos-1]!=0 && tab[pos]!=0) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kOr   : pos--; if (tab[pos-1]!=0 || tab[pos]!=0) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kEqual: pos--; if (tab[pos-1] == tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kNotEqual : pos--; if (tab[pos-1] != tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kLess     : pos--; if (tab[pos-1] < tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kGreater  : pos--; if (tab[pos-1] > tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;

         case kLessThan: pos--; if (tab[pos-1]<=tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kGreaterThan: pos--; if (tab[pos-1]>=tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kNot : if (tab[pos-1]!=0) tab[pos-1] = 0; else tab[pos-1] = 1; continue;

         case kStringEqual : strpos -= 2; pos -=2 ; pos++;
                        if (!strcmp(stringStack[strpos+1],stringStack[strpos])) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kStringNotEqual: strpos -= 2; pos -= 2; pos++;
                        if (strcmp(stringStack[strpos+1],stringStack[strpos])) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;

         case kBitAnd : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) & ((Int_t) tab[pos]); continue;
         case kBitOr  : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) | ((Int_t) tab[pos]); continue;
         case kLeftShift : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) <<((Int_t) tab[pos]); continue;
         case kRightShift: pos--; tab[pos-1]= ((Int_t) tab[pos-1]) >>((Int_t) tab[pos]); continue;

         case kJump   : i = (oper & kTFOperMask); continue;
         case kJumpIf : pos--; if (!tab[pos]) i = (oper & kTFOperMask); continue;

         case kBoolOptimize: {
            // boolean operation optimizer

            int param = (oper & kTFOperMask);
            Bool_t skip = kFALSE;
            int op = param % 10; // 1 is && , 2 is ||

            if (op == 1 && (!tab[pos-1]) ) {
               // &&: skip the right part if the left part is already false

               skip = kTRUE;

               // Preserve the existing behavior (i.e. the result of a&&b is
               // either 0 or 1)
               tab[pos-1] = 0;

            } else if (op == 2 && tab[pos-1] ) {
               // ||: skip the right part if the left part is already true

               skip = kTRUE;

               // Preserve the existing behavior (i.e. the result of a||b is
               // either 0 or 1)
               tab[pos-1] = 1;

            }

            if (skip) {
               int toskip = param / 10;
               i += toskip;
            }
            continue;
         }

      }

      switch(opcode) {

         #define R__EXPO(var)                                                 \
         {                                                                    \
            pos++; int param = (oper & kTFOperMask);                          \
            tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]);  \
            continue;                                                         \
         }
         // case kexpo:
         case kxexpo: R__EXPO(0);
         case kyexpo: R__EXPO(1);
         case kzexpo: R__EXPO(2);
         case kxyexpo:{ pos++; int param = (oper & kTFOperMask);
                        tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[0]+params[param+2]*x[1]);
                        continue;  }

         #define R__GAUS(var)                                                    \
         {                                                                       \
            pos++; int param = (oper & kTFOperMask);                             \
            tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1],params[param+2],IsNormalized()); \
            continue;                                                            \
         }

         // case kgaus:
         case kxgaus: R__GAUS(0);
         case kygaus: R__GAUS(1);
         case kzgaus: R__GAUS(2);
         case kxygaus: {pos++; int param = (oper & kTFOperMask);
                        Double_t intermede1;
                        if (params[param+2] == 0) {
                           intermede1=1e10;
                        } else {
                           intermede1=Double_t((x[0]-params[param+1])/params[param+2]);
                        }
                        Double_t intermede2;
                        if (params[param+4] == 0) {
                           intermede2=1e10;
                        } else {
                           intermede2=Double_t((x[1]-params[param+3])/params[param+4]);
                        }
                        tab[pos-1] = params[param]*TMath::Exp(-0.5*(intermede1*intermede1+intermede2*intermede2));
                        continue; }

         #define R__LANDAU(var)                                                                  \
         {                                                                                       \
            pos++; const int param = (oper & kTFOperMask);                                       \
            tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
            continue;                                                                            \
         }
         // case klandau:
         case kxlandau: R__LANDAU(0);
         case kylandau: R__LANDAU(1);
         case kzlandau: R__LANDAU(2);
         case kxylandau: { pos++; int param = oper&0x7fffff /* ActionParams[i] */ ;
                           Double_t intermede1=TMath::Landau(x[0], params[param+1], params[param+2],IsNormalized());
                           Double_t intermede2=TMath::Landau(x[1], params[param+3], params[param+4],IsNormalized());
                           tab[pos-1] = params[param]*intermede1*intermede2;
                           continue;
         }

         #define R__POLY(var)                                                  \
         {                                                                     \
            pos++; int param = (oper & kTFOperMask);                           \
            tab[pos-1] = 0; Double_t intermede = 1;                            \
            Int_t inter = param/100; /* arrondit */                            \
            Int_t int1= param-inter*100-1; /* aucune simplification ! (sic) */ \
            for (j=0 ;j<inter+1;j++) {                                         \
               tab[pos-1] += intermede*params[j+int1];                        \
               intermede *= x[var];                                            \
            }                                                                  \
            continue;                                                          \
         }
         // case kpol:
         case kxpol: R__POLY(0);
         case kypol: R__POLY(1);
         case kzpol: R__POLY(2);

         case kDefinedVariable : {
            if (!precalculated) {
               precalculated = 1;
               for(j=0;j<fNval;j++) param_calc[j]=DefinedValue(j);
            }
            pos++; tab[pos-1] = param_calc[(oper & kTFOperMask)];
            continue;
         }

         case kDefinedString : {
            int param = (oper & kTFOperMask);
            if (!precalculated_str) {
               precalculated_str=1;
               for (j=0;j<fNstring;j++) string_calc[j]=DefinedString(j);
            }
            strpos++; stringStack[strpos-1] = string_calc[param];
            pos++; tab[pos-1] = 0;
            continue;
         }

         case kFunctionCall: {
            // an external function call

            int param = (oper & kTFOperMask);
            int fno   = param / 1000;
            int nargs = param % 1000;

            // Retrieve the function
            TMethodCall *method = (TMethodCall*)fFunctions.At(fno);

            // Set the arguments
            method->ResetParam();
            if (nargs) {
               UInt_t argloc = pos-nargs;
               for(j=0;j<nargs;j++,argloc++,pos--) {
                  method->SetParam(tab[argloc]);
               }
            }
            pos++;
            Double_t ret;
            method->Execute(ret);
            tab[pos-1] = ret; // check for the correct conversion!

            continue;
         };
      }
      if (!TestBit(kOptimizationError)) {
         SetBit(kOptimizationError);
         Warning("EvalParOld","Found an unsupported opcode (%d)",oper >> kTFOperShift);
      }
   }
   Double_t result0 = tab[0];
   return result0;

}

//------------------------------------------------------------------------------
TString TFormula::GetExpFormula(Option_t *option) const
{
   // Reconstruct the formula expression from the internal TFormula member variables
   //
   //   This function uses the internal member variables of TFormula to
   //   construct the mathematical expression associated with the TFormula
   //   instance. This function can be used to get an expanded version of the
   //   expression originally assigned to the TFormula instance, i.e. that
   //   the string returned by GetExpFormula() doesn't depend on other
   //   TFormula object names.
   //
   //  if option contains "p" the returned string will contain the formula
   //  expression with symbolic parameters, eg [0] replaced by the actual value
   //  of the parameter. Example:
   //  if expression in formula is: "[0]*(x>-[1])+[2]*exp(-[3]*x)"
   //  and parameters are 3.25,-4.01,4.44,-0.04, GetExpFormula("p") will return:
   //   "(3.25*(x>+4.01))+(4.44*exp(+0.04*x))"

   if (fNoper>0) {
      TString* tab=new TString[fNoper];
      Bool_t* ismulti=new Bool_t[fNoper];
      Int_t spos=0;

      ismulti[0]=kFALSE;
      Int_t optype;
      Int_t j;
      Int_t ternaryend = -1;
      for(Int_t i=0;i<fNoper;i++){
         optype = GetAction(i);

         if (ternaryend==i) {
            // The ? and : have been added to tab[spos-2]
            if(ismulti[spos-1]){
               tab[spos-2]=tab[spos-2]+"("+tab[spos-1]+")";
            } else {
               tab[spos-2]=tab[spos-2]+tab[spos-1];
            }
            spos--;
            // Do not call continue since we need to
            // do the rest of the loop.
         }

         // Boolean optimization breakpoint
         if (optype==kBoolOptimize) { // -3) {
            continue;
         }

         //Sign inversion
         if (optype==kSignInv) { // -1) {
            tab[spos-1]="-("+tab[spos-1]+")";
            // i++;
            continue;
         }

         //Simple name (parameter,pol0,landau, etc)
         if (kexpo<=optype && optype<=kzpol) { // >=0) {
            tab[spos]=fExpr[i];
            ismulti[spos]=kFALSE;
            spos++;
            continue;
         }

         //constants, variables x,y,z,t, pi
         if ((optype<=151 && optype>=140 && optype!=145) || (optype == 40)) {
            tab[spos]=fExpr[i];
            ismulti[spos]=kFALSE;
            spos++;
            continue;
         }

         //Basic operators (+,-,*,/,==,^,etc)
         if(((optype>0 && optype<6) || optype==20 ||
             (((optype>59 && optype<69) || (optype >75 && optype<82)) && spos>=2))) {
             // if(optype==-20 && spos>=2){
            if(ismulti[spos-2]){
               tab[spos-2]="("+tab[spos-2]+")";
            }
            if(ismulti[spos-1]){
               tab[spos-2]+=fExpr[i]+("("+tab[spos-1]+")");
            }else{
               tab[spos-2]+=fExpr[i]+tab[spos-1];
            }
            ismulti[spos-2]=kTRUE;
            spos--;
            continue;
         }
         //Ternary condition
         if (optype==kJumpIf) {
            if(ismulti[spos-1]){
               tab[spos-1]="("+tab[spos-1]+")?";
            } else {
               tab[spos-1]=tab[spos-1]+"?";
            }
            continue;
         }
         if (optype==kJump) {
            if(ismulti[spos-1]){
               tab[spos-2]=tab[spos-2]+"("+tab[spos-1]+"):";
            } else {
               tab[spos-2]=tab[spos-2]+tab[spos-1]+":";
            }
            ternaryend = GetActionParam(i) + 1;
            spos--;
            continue;
         }

         //Functions
         int offset = 0;
         TString funcname = fExpr[i];
         if((optype>9  && optype<16) ||
            (optype>20 && optype<23) ||
            (optype>29 && optype<34) ||
            (optype>40 && optype<44) ||
            (optype>69 && optype<76) ||
            (optype==145)) {
            //Functions with the format func(x)
            offset = -1;
         }

         if((optype>15 && optype<20) ||
            (optype>22 && optype<26)) {
            //Functions with the format func(x,y)
            offset = -2;
         }
         if(optype==145) {
            int param = (fOper[i] & kTFOperMask);
            //int fno   = param / 1000;
            int nargs = param % 1000;
            offset = -nargs;
            // The function name contains return type and parameters types we need
            // to trim them.
            int depth;
            for(j=0, depth=0;j<funcname.Length();++j) {
               switch (funcname[j]) {
                  case '<':
                     ++depth; break;
                  case '>':
                     --depth; break;
                  case ' ':
                     if (depth==0) {
                        funcname.Remove(0,j+1);
                        j = funcname.Length();
                        break;
                     }
               }
            }
            Ssiz_t ind = funcname.First('(');
            funcname.Remove(ind);
         }
         if (offset > 0) {
            Error("GetExpFormula","Internal error, number of argument found is %d",-offset);
         } else if (offset == 0) {
            tab[spos]=funcname+"()";
            ismulti[spos]=kFALSE;
            spos += 1;
            continue;
         } else if (offset<=0 && (spos+offset>=0)) {
            tab[spos+offset]=funcname+("("+tab[spos+offset]);
            for (j=offset+1; j<0; j++){
               tab[spos+offset]+=","+tab[spos+j];
            }
            tab[spos+offset]+=")";
            ismulti[spos+offset]=kFALSE;
            spos += offset+1;
            continue;
         }
      }
      if (ternaryend==fNoper) {
         // The ? and : have been added to tab[spos-2]
         if(ismulti[spos-1]){
            tab[spos-2]=tab[spos-2]+"("+tab[spos-1]+")";
         } else {
            tab[spos-2]=tab[spos-2]+tab[spos-1];
         }
         spos--;
      }

      TString ret = "";
      if (spos > 0) ret = tab[spos-1];
      delete[] tab;
      delete[] ismulti;

      //if option "p" is specified, return the real values of parameters instead of [0]
      TString opt = option;
      opt.ToLower();
      if (opt.Contains("p")) {
         char pb[10];
         char pbv[100];
         for (j=0;j<fNpar;j++) {
            snprintf(pb,10,"[%d]",j);
            snprintf(pbv,100,"%g",fParams[j]);
            ret.ReplaceAll(pb,pbv);
         }
         ret.ReplaceAll("--","+");
         ret.ReplaceAll("+-","-");
      }
      return ret;
   } else{
      TString ret="";
      return ret;
   }
}


//______________________________________________________________________________
const TObject* TFormula::GetLinearPart(Int_t i)
{
   // Return linear part.

   if (!fLinearParts.IsEmpty())
      return fLinearParts.UncheckedAt(i);
   return 0;
}


//______________________________________________________________________________
Double_t TFormula::GetParameter(Int_t ipar) const
{
   // Return value of parameter number ipar.

   if (ipar <0 || ipar >= fNpar) return 0;
   return fParams[ipar];
}


//______________________________________________________________________________
Double_t TFormula::GetParameter(const char *parName) const
{
   // Return value of parameter named parName.

   const Double_t kNaN = 1e-300;
   Int_t index = GetParNumber(parName);
   if (index==-1) {
      Error("TFormula", "Parameter %s not found", parName);
      return kNaN;
   }
   return GetParameter(index);
}


//______________________________________________________________________________
const char *TFormula::GetParName(Int_t ipar) const
{
   // Return name of one parameter.

   if (ipar <0 || ipar >= fNpar) return "";
   if (fNames[ipar].Length() > 0) return (const char*)fNames[ipar];
   return Form("p%d",ipar);
}


//______________________________________________________________________________
Int_t TFormula::GetParNumber(const char *parName) const
{
   // Return parameter number by name.

   if (!parName)
      return -1;

   for (Int_t i=0; i<fNpar; i++) {
      if (!strcmp(GetParName(i),parName)) return i;
   }
   return -1;
}


//______________________________________________________________________________
Bool_t TFormula::IsString(Int_t oper) const
{
   // Return true if the expression at the index 'oper' has to be treated as a string

   return GetAction(oper) == kStringConst;
}


//______________________________________________________________________________
void TFormula::Print(Option_t *) const
{
   // Dump this formula with its attributes.

   Int_t i;
   Printf(" %20s : %s Ndim= %d, Npar= %d, Noper= %d",GetName(),GetTitle(), fNdim,fNpar,fNoper);
   for (i=0;i<fNoper;i++) {
      Printf(" fExpr[%d] = %s  action = %d action param = %d ",
             i,(const char*)fExpr[i],GetAction(i),GetActionParam(i));
   }
   //MI change
   //
   if (fNOperOptimized>0){
      Printf("Optimized expression");
      for (i=0;i<fNOperOptimized;i++) {
         Printf(" fExpr[%d] = %s\t\t  action = %d action param = %d ",
            i,(const char*)fExprOptimized[i],GetActionOptimized(i),GetActionParamOptimized(i));
      }
   }

   if (!fNames) return;
   if (!fParams) return;
   for (i=0;i<fNpar;i++) {
      Printf(" Par%3d  %20s = %g",i,GetParName(i),fParams[i]);
   }
}


//______________________________________________________________________________
void TFormula::ProcessLinear(TString &formula)
{
   // If the formula is for linear fitting, change the title to
   // normal and fill the LinearParts array

   TString formula2(formula);
   char repl[20];
   char *pch;
   Int_t nf, offset, replsize;
   //replace "++" with "+[i]*"
   pch= (char*)strstr(formula.Data(), "++");
   if (pch)
      formula.Insert(0, "[0]*(");
   pch= (char*)strstr(formula.Data(), "++");
   if (pch){
      //if there are "++", replaces them with +[i]*
      nf = 1;
      while (pch){
         snprintf(repl,20, ")+[%d]*(", nf);
         offset = pch-formula.Data();
         if (nf<10) replsize = 7;
         else if (nf<100) replsize = 8;
         else replsize = 9;
         formula.Replace(pch-formula.Data(), 2, repl, replsize);
         pch = (char*)strstr(formula.Data()+offset, "++");
         nf++;
      }
      formula.Append(')', 1);
   } else {
      //if there are no ++, create a new string with ++ instead of +[i]*
      formula2=formula2(4, formula2.Length()-4);
      pch= (char*)strchr(formula2.Data(), '[');
      snprintf(repl,20, "++");
      nf = 1;
      while (pch){
         offset = pch-formula2.Data()-1;
         if (nf<10) replsize = 5;
         else replsize = 6;
         formula2.Replace(pch-formula2.Data()-1, replsize, repl, 2);
         pch = (char*)strchr(formula2.Data()+offset, '[');
         nf++;
      }
   }

   fLinearParts.Expand(nf);
   //break up the formula and fill the array of linear parts
   TString replaceformula;
   formula2 = formula2.ReplaceAll("++", 2, "|", 1);
   TObjArray *oa = formula2.Tokenize("|");
   TString replaceformula_name;
   for (Int_t i=0; i<nf; i++) {
      replaceformula = ((TObjString *)oa->UncheckedAt(i))->GetString();
      replaceformula_name = "f_linear_";
      replaceformula_name.Append(replaceformula);
      TFormula *f = new TFormula(replaceformula_name.Data(), replaceformula.Data());
      if (!f) {
         Error("TFormula", "f_linear not allocated");
         return;
      }
      {
         R__LOCKGUARD2(gROOTMutex);
         gROOT->GetListOfFunctions()->Remove(f);
      }
      f->SetBit(kNotGlobal, 1);
      fLinearParts.Add(f);
   }
   oa->Delete();
}

//______________________________________________________________________________
void TFormula::SetName(const char* name)
{
   // Set the name of the formula. We need to allow the list of function to
   // properly handle the hashes.
   if (IsReservedName(name)) {
      Error("SetName","The name \'%s\' is reserved as a TFormula variable name.\n"
         "\tThis function will not be renamed.",name);
   } else {
      // Here we need to remove and re-add to keep the hashes consistent with
      // the underlying names.
      auto listOfFunctions = gROOT->GetListOfFunctions();
      TObject* thisAsFunctionInList = nullptr;
      R__LOCKGUARD2(gROOTMutex);
      if (listOfFunctions){
         thisAsFunctionInList = listOfFunctions->FindObject(this);
         if (thisAsFunctionInList) listOfFunctions->Remove(thisAsFunctionInList);
      }
      TNamed::SetName(name);
      if (thisAsFunctionInList) listOfFunctions->Add(thisAsFunctionInList);
   }
}

//______________________________________________________________________________
void TFormula::SetParameter(const char *name, Double_t value)
{
   // Initialize parameter number ipar.

   Int_t ipar = GetParNumber(name);
   if (ipar <0 || ipar >= fNpar) return;
   fParams[ipar] = value;
   Update();
}


//______________________________________________________________________________
void TFormula::SetParameter(Int_t ipar, Double_t value)
{
   // Initialize parameter number ipar.

   if (ipar <0 || ipar >= fNpar) return;
   fParams[ipar] = value;
   Update();
}


//______________________________________________________________________________
void TFormula::SetParameters(const Double_t *params)
{
   // Initialize array of all parameters.
   // See also the next function with the same name.

   for (Int_t i=0; i<fNpar;i++) {
      fParams[i] = params[i];
   }
   Update();
}


//______________________________________________________________________________
void TFormula::SetParameters(Double_t p0,Double_t p1,Double_t p2,Double_t p3,Double_t p4
                       ,Double_t p5,Double_t p6,Double_t p7,Double_t p8,Double_t p9,Double_t p10)
{
   // Initialize up to 11 parameters
   // All arguments except THE FIRST TWO are optional
   // In case of a function with only one parameter, call this function with p1=0.
   // Minimum two arguments are required to differentiate this function
   // from the SetParameters(cont Double_t *params)

   if (fNpar > 0) fParams[0] = p0;
   if (fNpar > 1) fParams[1] = p1;
   if (fNpar > 2) fParams[2] = p2;
   if (fNpar > 3) fParams[3] = p3;
   if (fNpar > 4) fParams[4] = p4;
   if (fNpar > 5) fParams[5] = p5;
   if (fNpar > 6) fParams[6] = p6;
   if (fNpar > 7) fParams[7] = p7;
   if (fNpar > 8) fParams[8] = p8;
   if (fNpar > 9) fParams[9] = p9;
   if (fNpar >10) fParams[10]= p10;
   Update();
}


//______________________________________________________________________________
void TFormula::SetParName(Int_t ipar, const char *name)
{
   // Set name of parameter number ipar

   if (ipar <0 || ipar >= fNpar) return;
   fNames[ipar] = name;
}


//______________________________________________________________________________
void TFormula::SetParNames(const char*name0,const char*name1,const char*name2,const char*name3,const char*name4,
                     const char*name5,const char*name6,const char*name7,const char*name8,const char*name9,const char*name10)
{
   // Set up to 11 parameter names.

   if (fNpar > 0) fNames[0] = name0;
   if (fNpar > 1) fNames[1] = name1;
   if (fNpar > 2) fNames[2] = name2;
   if (fNpar > 3) fNames[3] = name3;
   if (fNpar > 4) fNames[4] = name4;
   if (fNpar > 5) fNames[5] = name5;
   if (fNpar > 6) fNames[6] = name6;
   if (fNpar > 7) fNames[7] = name7;
   if (fNpar > 8) fNames[8] = name8;
   if (fNpar > 9) fNames[9] = name9;
   if (fNpar >10) fNames[10]= name10;
}


//______________________________________________________________________________
void TFormula::Streamer(TBuffer &b)
{
   // Stream a class object.

   if (b.IsReading()) {
      UInt_t R__s, R__c;
      Version_t v = b.ReadVersion(&R__s, &R__c);
      if (v > 3) {

         if (v==6) {
            Error("Streamer","version 6 is not supported");
            return;
         }
         b.ReadClassBuffer(TFormula::Class(), this, v, R__s, R__c);
         if (!TestBit(kNotGlobal)) {
            R__LOCKGUARD2(gROOTMutex);
            gROOT->GetListOfFunctions()->Add(this);
         }

         // We need to reinstate (if possible) the TMethodCall.
         if (fFunctions.GetLast()>=0) {
            // Compiles will reset the parameter values so we need
            // to temporarily keep them
            Double_t *param = fParams;
            TString *names = fNames;
            Int_t npar = fNpar;
            fParams = 0;
            fNames = 0;
            if (Compile()) {
               Error("Streamer","error compiling formula");
               return;
            }
            for (Int_t i = 0; i<npar && i<fNpar; ++i) fParams[i] = param[i];
            delete [] param;
            delete [] fNames;
            fNames = names;
         } else if (v<6) {
            Convert(v);
         }
         Optimize();
         return;
      }
      // process old versions before automatic schema evolution
      TNamed::Streamer(b);
      b >> fNdim;
      b >> fNumber;
      if (v > 1) b >> fNval;
      if (v > 2) b >> fNstring;
      fNpar   = b.ReadArray(fParams);
      fOper = new Int_t[gMAXOP];
      fNoper  = b.ReadArray(fOper);
      fNconst = b.ReadArray(fConst);
      if (fNoper) {
         fExpr   = new TString[fNoper];
      }
      if (fNpar) {
         fNames  = new TString[fNpar];
      }
      Int_t i;
      for (i=0;i<fNoper;i++)  fExpr[i].Streamer(b);
      for (i=0;i<fNpar;i++)   fNames[i].Streamer(b);
      {
         R__LOCKGUARD2(gROOTMutex);
         if (gROOT->GetListOfFunctions()->FindObject(GetName())) return;
         gROOT->GetListOfFunctions()->Add(this);
      }
      b.CheckByteCount(R__s, R__c, TFormula::IsA());

      Convert(v);
      // end of old versions

   } else {
      b.WriteClassBuffer(TFormula::Class(),this);
   }
}

void TFormula::Convert(UInt_t /* fromVersion */)
{
   // Convert the fOper of a TFormula version fromVersion to the current in memory version

   enum {
      kOldexpo         =  1000,
      kOldgaus         =  2000,
      kOldlandau       =  4000,
      kOldxylandau     =  4500,
      kOldConstants    =  50000,
      kOldStrings      =  80000,
      kOldVariable     = 100000,
      kOldTreeString   = 105000,
      kOldFormulaVar   = 110000,
      kOldBoolOptimize = 120000,
      kOldFunctionCall = 200000
   };
   int i,j;

   for (i=0,j=0; i<fNoper; ++i,++j) {
      Int_t action = fOper[i];
      Int_t newActionCode = 0;
      Int_t newActionParam = 0;

      if ( action == 0) {
         // Sign Inversion

         newActionCode = kSignInv;

         Float_t aresult = 99.99;
         sscanf((const char*)fExpr[i],"%g",&aresult);
         R__ASSERT((aresult+1)<0.001);

         ++i; // skip the implied multiplication.

         // For consistency and for Optimize to work correctly
         // we need to remove the "-1" string in fExpr
         for (int z=i; z<fNoper; ++z) {
            fExpr[z-1] = fExpr[z];
         }

      } else  if ( action < 100 ) {
         // basic operators and mathematical library

         newActionCode = action;

      } else if (action >= kOldFunctionCall) {
         // Function call

         newActionCode = kFunctionCall;
         newActionParam = action-kOldFunctionCall;

      } else if (action >= kOldBoolOptimize) {
         // boolean operation optimizer

         newActionCode = kBoolOptimize;
         newActionParam = action-kOldBoolOptimize;

      } else if (action >= kOldFormulaVar) {
         // a variable

         newActionCode = kVariable;
         newActionParam = action-kOldFormulaVar;

      } else if (action >= kOldTreeString) {
         // a tree string

         newActionCode = kDefinedString;
         newActionParam = action-kOldTreeString;

      } else if (action >= kOldVariable) {
         // a tree variable

         newActionCode = kDefinedVariable;
         newActionParam = action-kOldVariable;

      } else if (action == kOldStrings) {
         // String

         newActionCode = kStringConst;

      } else if (action >= kOldConstants) {
         // numerical value

         newActionCode = kConstant;
         newActionParam = action-kOldConstants;

      } else if (action > 10000 && action < kOldConstants) {
         // Polynomial

         int var = action/10000; //arrondit
         newActionCode = kpol + (var-1);
         newActionParam = action - var*10000;

      } else if (action >= 4600) {

         Error("Convert","Unsupported value %d",action);

      } else if (action > kOldxylandau) {
         // xylandau

         newActionCode = kxylandau;
         newActionParam = action - (kOldxylandau+1);

      } else if (action > kOldlandau) {
         // landau, xlandau, ylandau or zlandau

         newActionCode = klandau;
         int var = action/100-40;
         if (var) newActionCode += var;
         newActionParam = action - var*100 - (kOldlandau+1);

      } else if (action > 2500 && action < 2600) {
         // xygaus

         newActionCode = kxygaus;
         newActionParam = action-2501;

      }  else if (action > 2000 && action < 2500) {
         //  gaus, xgaus, ygaus or zgaus

         newActionCode = kgaus;
         int var = action/100-20;
         if (var) newActionCode += var;
         newActionParam = action - var*100 - (kOldgaus+1);

      } else if (action > 1500 && action < 1600) {
         // xyexpo

         newActionCode = kxyexpo;
         newActionParam = action-1501;

      } else if (action > 1000 && action < 1500) {
         // expo or xexpo or yexpo or zexpo

         newActionCode = kexpo;
         int var = action/100-10;
         if (var) newActionCode += var;
         newActionParam = action - var*100 - (kOldexpo+1);

      } if (action > 100 && action < 200) {
         // Parameter substitution

         newActionCode = kParameter;
         newActionParam = action - 101;
      }

      SetAction( j, newActionCode, newActionParam );

   }
   if (i!=j) {
      fNoper -= (i-j);
   }

}


/////////////////////////////////////////////////////////////////////////////////


//______________________________________________________________________________
TOperOffset::TOperOffset()
{
   //  TOper offset  - helper class for TFormula*
   //                     specify type of operand
   //                     fTypeX   = kVariable
   //                              = kParameter
   //                              = kConstant
   //                     fOffestX = offset in corresponding array

   fType0=0;
   fType1=0;
   fType2=0;
   fType3=0;
   fOffset0=0;
   fOffset1=0;
   fOffset2=0;
   fOffset3=0;
   fOldAction=0;
   fToJump=0;
}


//______________________________________________________________________________
void  TFormula::MakePrimitive(const char *expr, Int_t pos)
{
   //  MakePrimitive
   //  find TFormulaPrimitive replacement for some operands

   TString cbase(expr);
   cbase.ReplaceAll("Double_t ","");
   int paran = cbase.First("(");
   // int nargs = 0;
   if (paran>0) {
      //nargs = 1;
      cbase[paran]=0;
   }

   if (cbase=="<") cbase="XlY";
   if (cbase=="<=") cbase="XleY";
   if (cbase==">") cbase="XgY";
   if (cbase==">=") cbase="XgeY";
   if (cbase=="==" && GetActionOptimized(pos)!=kStringEqual) cbase="XeY";
   if (cbase=="!=" && GetActionOptimized(pos)!=kStringNotEqual) cbase="XneY";

   TFormulaPrimitive *prim = TFormulaPrimitive::FindFormula(cbase ,paran>0 ? cbase.Data() + paran + 1 : (const char*)0);
   if (prim) {
      fPredefined[pos] = prim;
      if (prim->fType==10) {
         SetActionOptimized(pos, kFD1);
      }
      if (prim->fType==110) {
         SetActionOptimized(pos, kFD2);
      }
      if (prim->fType==1110) {
         SetActionOptimized(pos, kFD3);
      }
      if (prim->fType==-1) {
         SetActionOptimized(pos, kFDM);
      }
      if (prim->fType==0){
         SetActionOptimized(pos,kConstant,fNconst);
         fConst[fNconst] = prim->Eval(0);
         fNconst++;
      }
      return;
   }
}


//______________________________________________________________________________
void TFormula::Optimize()
{
   // MI include
   //
   // Optimize formula
   // 1.) Minimize the number of operands
   //     a.)  several operanands are glued togther
   //     b.)  some primitive functions glued together - exemp. (x+y) => PlusXY(x,y)
   //     c.)  maximize number of standard calls minimizing number of jumps in Eval cases
   //     d.)  variables, parameters and constants are mapped - using fOperOfssets0
   //          Eval procedure use direct acces to data (only one corresponding case statement in eval procedure)
   //
   //          pdata[operand={Var,Par,Const}][offset]
   //          pdata[fOperOffsets0[i]][fOperOffset1[i+1]]
   // 2.) The fastest evaluation function is chosen at the end
   //     a.) fOptimal := pointer to the fastest function for given evaluation string
   //             switch(GetActionOptimized(0)){
   //               case kData : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive0; break;}
   //               case kUnary : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive1; break;}
   //               case kBinary : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive2; break;}
   //               case kThree : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive3; break;}
   //               case kFDM : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive4; break;}
   //             }
   //     b.) ex. fOptimal = ::EvalPrimitive0 - if it return only variable, constant or parameter
   //                      = ::EvalParameter1 - if only one unary operation
   //                      = ::EvalPrimitive2 - if only one binary operation
   //                        .......

   //
   // Initialize data members
   //

   Int_t i;

   if (fPredefined)    { delete [] fPredefined;    fPredefined    = 0;}
   if (fOperOffset)    { delete [] fOperOffset;    fOperOffset    = 0;}
   if (fExprOptimized) { delete [] fExprOptimized; fExprOptimized = 0;}
   if (fOperOptimized) { delete [] fOperOptimized; fOperOptimized = 0;}

   fExprOptimized   = new TString[fNoper];
   fOperOptimized   = new Int_t[fNoper];
   fPredefined      = new TFormulaPrimitive*[fNoper];
   fOperOffset      = new TOperOffset[fNoper];
   for (i=0; i<fNoper; i++) {
      fExprOptimized[i]   = fExpr[i] ;
      fOperOptimized[i]   = fOper[i];
      fPredefined[i]= 0;
   }

   //
   //Make primitives
   //
   for (i=0;i<fNoper;i++){
      if (fExprOptimized[i].Data()) {
         MakePrimitive(fExprOptimized[i].Data(), i);
      }
   }
   //
   Int_t maxfound   = fNoper+1;
   Int_t *offset    = new Int_t[maxfound*16];
   Int_t *optimized = new Int_t[maxfound];
   //
   //
   TFormulaPrimitive*  primitive[10];
   primitive[0] =  TFormulaPrimitive::FindFormula("PlusXY");
   primitive[1] =  TFormulaPrimitive::FindFormula("MinusXY");
   primitive[2] =  TFormulaPrimitive::FindFormula("MultXY");
   primitive[3] =  TFormulaPrimitive::FindFormula("DivXY");
   primitive[4] =  TFormulaPrimitive::FindFormula("XpYpZ");
   primitive[5] =  TFormulaPrimitive::FindFormula("XxYxZ");
   primitive[6] =  TFormulaPrimitive::FindFormula("XxYpZ");
   primitive[7] =  TFormulaPrimitive::FindFormula("XpYxZ");
   primitive[8] =  TFormulaPrimitive::FindFormula("Pow2");
   primitive[9] =  TFormulaPrimitive::FindFormula("Pow3");
   //
   // set data pointers
   //
   for (i=0;i<fNoper;i++) optimized[i]=0;
   //
   for (i=0;i<fNoper;i++){
      Int_t actionparam = GetActionParamOptimized(i);
      Int_t action = GetActionOptimized(i);

      if (action==kBoolOptimize){
         //
         // optimize booleans
         //
         fOperOffset[i].fType1     = actionparam/10;           //  operands to skip
         fOperOffset[i].fOffset0   = actionparam%10;           //  1 is && , 2 is ||   - operand
         fOperOffset[i].fToJump    = i+fOperOffset[i].fType1;  //  where we should  jump
         continue;
      }
      if (action==kJump || action==kJumpIf) {
         // Ternary condtional operator
         fOperOffset[i].fType1     = action;
         fOperOffset[i].fToJump    = actionparam;
      }
      //
      if (action==kConstant&&i<fNoper-2){
         //
         // get offsets for kFDM operands
         //
         if (GetActionOptimized(i+1)==kConstant && GetActionOptimized(i+2)==kFDM){
            optimized[i]=1;
            optimized[i+1]=1;
            i+=2;
            fOperOffset[i].fType0=actionparam;
            fOperOffset[i].fOffset0=GetActionParamOptimized(i-1);
            Int_t offset2 =  int(fConst[fOperOffset[i].fOffset0]+0.4);
            fOperOffset[i].fOffset0=offset2;
            Int_t nparmax = offset2+fPredefined[i]->fNParameters;
            if (nparmax>fNpar){ // increase expected number of parameters
               fNpar=nparmax;
            }
            continue;
         }
      }
      switch(action){
      case kVariable : {action=kData; fOperOffset[i].fType0=0; break;}
      case kParameter: {action=kData; fOperOffset[i].fType0=1; break;}
      case kConstant : {action=kData; fOperOffset[i].fType0=2; break;}
      }
      //
      fOperOffset[i].fOffset0 = GetActionParamOptimized(i);
      SetActionOptimized(i,action, actionparam);    //set common data option
   }
   //
   //
   fNOperOptimized = fNoper;
   //
   for (i=0; i<fNoper; ++i)
   {
      //
      if (!(GetActionOptimized(i)== kData)) continue;
      offset[0] = fOperOffset[i].fType0;       //
      offset[1] = fOperOptimized[i] & kTFOperMask;   // offset

      if ((i+1) >= fNoper) continue;

      if (GetActionOptimized(i+1)==kFD1){
         optimized[i] = 1; // to be optimized
         i++;
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         SetActionOptimized(i  ,kUnary);
         continue;
      }
      if (GetActionOptimized(i+1)==kAdd){
         optimized[i] = 1; // to be optimized
         i++;
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         SetActionOptimized(i  ,kPlusD);
         continue;
      }
      if (GetActionOptimized(i+1)==kMultiply){
         optimized[i] = 1; // to be optimized
         i++;
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         SetActionOptimized(i,kMultD);
         continue;
      }

      if ((i+2) >= fNoper) continue;

      //
      //Binary operators
      if (!(GetActionOptimized(i+1)== kData))  continue;
      offset[2] = fOperOffset[i+1].fType0;
      offset[3] = fOperOptimized[i+1] & kTFOperMask;   // offset
      //
      if (GetActionOptimized(i+2)==kFD2 || GetActionOptimized(i+2)==kAdd ||GetActionOptimized(i+2)==kSubstract||
         GetActionOptimized(i+2)==kMultiply || GetActionOptimized(i+2)==kDivide){

         optimized[i] = 1; // to be optimized
         optimized[i+1] = 1; // to be optimized
         i+=2;
         //
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         fOperOffset[i].fType1   = offset[2];
         fOperOffset[i].fOffset1 = offset[3];
         fOperOffset[i].fType2   = GetActionOptimized(i);  //remember old action
         if (GetActionOptimized(i)==kAdd)       {fPredefined[i] = primitive[0];}
         if (GetActionOptimized(i)==kSubstract) {fPredefined[i] = primitive[1];}
         if (GetActionOptimized(i)==kMultiply) {
            fPredefined[i]=primitive[2];
            if (offset[0]==offset[2]&&offset[1]==offset[3]) {
               fPredefined[i] = primitive[8];
               SetActionOptimized(i,kUnary);
               continue;
            }
         }
         if (GetActionOptimized(i)==kDivide) {
            fPredefined[i] = primitive[3];
         }
         SetActionOptimized(i,kBinary);
         continue;
      }

      if ((i+3) >= fNoper) continue;

      //
      //operator 3
      //
      if (!(GetActionOptimized(i+2)== kData))  continue;
      offset[4] = fOperOffset[i+2].fType0;
      offset[5] = fOperOptimized[i+2] & kTFOperMask;   // offset
      //
      if (GetActionOptimized(i+3)==kFD3|| (  (GetActionOptimized(i+3)==kAdd||GetActionOptimized(i+3)==kMultiply) &&
         (GetActionOptimized(i+4)==kAdd||GetActionOptimized(i+4)==kMultiply) ) ){
         optimized[i+0]   = 1; // to be optimized
         optimized[i+1] = 1; // to be optimized
         optimized[i+2] = 1; // to be optimized
         i+=3;
         //
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         fOperOffset[i].fType1   = offset[2];
         fOperOffset[i].fOffset1 = offset[3];
         fOperOffset[i].fType2   = offset[4];
         fOperOffset[i].fOffset2 = offset[5];
         //
         fOperOffset[i].fOldAction = GetActionOptimized(i);  //remember old action
         if (GetActionOptimized(i)==kFD3) {
            SetActionOptimized(i,kThree);
            continue;
         }
         Int_t action=0;
         Int_t action2=kThree;
         if (GetActionOptimized(i)==kAdd&&GetActionOptimized(i+1)==kAdd)      action=4;
         if (GetActionOptimized(i)==kMultiply&&GetActionOptimized(i+1)==kMultiply) {
            action=5;
            if (offset[0]==offset[2]&&offset[1]==offset[3]&&offset[0]==offset[4]&&offset[1]==offset[5]){
               fPredefined[i]=primitive[9];
               action2=kUnary;
               action =9;
            }
         }
         if (GetActionOptimized(i)==kAdd&&GetActionOptimized(i+1)==kMultiply) action=6;
         if (GetActionOptimized(i)==kMultiply&&GetActionOptimized(i+1)==kAdd) action=7;
         //
         optimized[i]=1;
         i++;
         fOperOffset[i].fType0   = offset[0];
         fOperOffset[i].fOffset0 = offset[1];
         fOperOffset[i].fType1 = offset[2];
         fOperOffset[i].fOffset1 = offset[3];
         fOperOffset[i].fType2 = offset[4];
         fOperOffset[i].fOffset2 = offset[5];
         fPredefined[i]=primitive[action];
         SetActionOptimized(i,action2);
         continue;
      }
   }
   //
   //
   Int_t operO=0;
   TString expr="";
   Int_t *map0 = new Int_t[maxfound];   //remapping of the operands
   Int_t *map1 = new Int_t[maxfound];   //remapping of the operands
   for (i=0;i<fNoper;i++){
      map0[i]     =  operO;
      map1[operO] =  i;
      fOperOptimized[operO] = fOperOptimized[i];
      fPredefined[operO]    = fPredefined[i];
      fOperOffset[operO]    = fOperOffset[i];
      expr += fExprOptimized[i];
      if (optimized[i]==0){
         fExprOptimized[operO] = expr;
         expr = "";
         operO++;
      }else{
         expr += ",";
      }
   }
   //
   // Recalculate long jump for  Boolen optimize
   //
   for (i=0; i<fNOperOptimized; i++){
      Int_t optaction = GetActionOptimized(i);
      if (optaction==kBoolOptimize){
         Int_t oldpos = fOperOffset[i].fToJump;
         Int_t newpos = oldpos==fNoper ? fNOperOptimized : map0[oldpos];
         fOperOffset[i].fToJump = newpos;   // new position to jump
         Int_t actionop = GetActionParamOptimized(i) % 10;
         switch (actionop) {
            case 1: SetActionOptimized(i,kBoolOptimizeAnd,newpos);  break;
            case 2: SetActionOptimized(i,kBoolOptimizeOr,newpos); break;
         }
      } else if (optaction==kJump || optaction==kJumpIf) {
         Int_t oldpos = fOperOffset[i].fToJump;
         Int_t newpos = oldpos==fNoper ? fNOperOptimized : map0[oldpos];
         fOperOffset[i].fToJump = newpos;   // new position to jump
         SetActionOptimized(i,optaction,newpos);
      }
   }


   fNOperOptimized = operO;
   //
   fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalParFast;
   if (fNOperOptimized==1) {
      switch(GetActionOptimized(0)){
         case kData   : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive0; break;}
         case kUnary  : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive1; break;}
         case kBinary : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive2; break;}
         case kThree  : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive3; break;}
         case kFDM    : {fOptimal= (TFormulaPrimitive::TFuncG)&TFormula::EvalPrimitive4; break;}
      }
   }

   delete [] map1;
   delete [] map0;
   delete [] offset;
   delete [] optimized;
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t  *pdata[3] = {x,(params!=0)?params:fParams, fConst};
   Double_t result = pdata[fOperOffset->fType0][fOperOffset->fOffset0];
   switch((fOperOptimized[0] >> kTFOperShift)) {
      case kData          : return result;
      case kUnary         : return (fPredefined[0]->fFunc10)(pdata[fOperOffset->fType0][fOperOffset->fOffset0]);
      case kBinary         :return (fPredefined[0]->fFunc110)(result,
                               pdata[fOperOffset->fType1][fOperOffset->fOffset1]);

      case kThree         :return (fPredefined[0]->fFunc1110)(result, pdata[fOperOffset->fType1][fOperOffset->fOffset1],
                              pdata[fOperOffset->fType2][fOperOffset->fOffset2]);
      case kFDM         : return (fPredefined[0]->fFuncG)((Double_t*)&x[fOperOffset->fType0],
                             (Double_t*)&params[fOperOffset->fOffset0]);
   }
   return 0;
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive0(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t  *pdata[3] = {x,(params!=0)?params:fParams, fConst};
   return  pdata[fOperOffset->fType0][fOperOffset->fOffset0];
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive1(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t  *pdata[3] = {x,(params!=0)?params:fParams, fConst};
   return (fPredefined[0]->fFunc10)(pdata[fOperOffset->fType0][fOperOffset->fOffset0]);
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive2(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t  *pdata[3] = {x,(params!=0)?params:fParams, fConst};
   return (fPredefined[0]->fFunc110)(pdata[fOperOffset->fType0][fOperOffset->fOffset0],
      pdata[fOperOffset->fType1][fOperOffset->fOffset1]);
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive3(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t  *pdata[3] = {x,(params!=0)?params:fParams, fConst};
   return (fPredefined[0]->fFunc1110)(pdata[fOperOffset->fType0][fOperOffset->fOffset0], pdata[fOperOffset->fType1][fOperOffset->fOffset1],
      pdata[fOperOffset->fType2][fOperOffset->fOffset2]);
}


//______________________________________________________________________________
Double_t TFormula::EvalPrimitive4(const Double_t *x, const Double_t *params)
{
   // Evaluate primitive formula

   const Double_t *par = (params!=0)?params:fParams;
   return (fPredefined[0]->fFuncG)((Double_t*)&x[fOperOffset->fType0],
      (Double_t*)&par[fOperOffset->fOffset0]);
}


//______________________________________________________________________________
Double_t TFormula::EvalParFast(const Double_t *x, const Double_t *uparams)
{
   // Evaluate this formula.
   //
   //   The current value of variables x,y,z,t is passed through the pointer x.
   //   The parameters used will be the ones in the array params if params is given
   //    otherwise parameters will be taken from the stored data members fParams
   //Begin_Html
   /*
   <img src="gif/eval.gif">
   */
   //End_Html

   const Double_t  *pdata[3] = {x,(uparams!=0)?uparams:fParams, fConst};
   //
   Int_t i,j;
   Double_t tab[kMAXFOUND];
   const char *stringStack[gMAXSTRINGFOUND];
   Double_t param_calc[kMAXFOUND];
   char *string_calc[gMAXSTRINGFOUND];
   Int_t precalculated = 0;
   Int_t precalculated_str = 0;

   Double_t *params;

   if (uparams) {
      //for (j=0;j<fNpar;j++) fParams[j] = params[j];
      params = const_cast<Double_t*>(uparams);
   } else {
      params = fParams;
   }

   //if (params) {
   // for (j=0;j<fNpar;j++) fParams[j] = params[j];
   //}
   UInt_t pos    = 0;
   UInt_t strpos = 0;
   //   for (i=0; i<fNoper; ++i) {
   for (i=0; i<fNOperOptimized; ++i) {
      //
      const int oper = fOperOptimized[i];
      const int opcode = oper >> kTFOperShift;

      switch(opcode) {  // FREQUENTLY USED OPERATION
         case kData      : tab[pos] = pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0]; pos++;continue;
         case kPlusD     : tab[pos-1]+= pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0]; continue;
         case kMultD     : tab[pos-1]*= pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0]; continue;
         case kAdd       : pos--; tab[pos-1] += tab[pos]; continue;
         case kSubstract : pos--; tab[pos-1] -= tab[pos]; continue;
         case kMultiply  : pos--; tab[pos-1] *= tab[pos]; continue;
         case kDivide    : pos--; if (tab[pos] == 0) tab[pos-1] = 0; //  division by 0
                              else     tab[pos-1] /= tab[pos];
                              continue;
         case kUnary     : tab[pos] = (fPredefined[i]->fFunc10)(pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0]); pos++;continue;
         case kBinary    : tab[pos] = (fPredefined[i]->fFunc110)(pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0],
                              pdata[fOperOffset[i].fType1][fOperOffset[i].fOffset1]);pos++;continue;

         case kThree     : tab[pos]   = (fPredefined[i]->fFunc1110)(pdata[fOperOffset[i].fType0][fOperOffset[i].fOffset0],
                              pdata[fOperOffset[i].fType1][fOperOffset[i].fOffset1],
                              pdata[fOperOffset[i].fType2][fOperOffset[i].fOffset2]); pos++; continue;

         case kFDM       : tab[pos] = (fPredefined[i]->fFuncG)(&x[fOperOffset[i].fType0],&params[fOperOffset[i].fOffset0]); pos++;continue;
         case kFD1       : tab[pos-1]   =(fPredefined[i]->fFunc10)(tab[pos-1]); continue;
         case kFD2       :    pos--; tab[pos-1]   = (fPredefined[i]->fFunc110)(tab[pos-1],tab[pos]); continue;
         case kFD3       :    pos-=2; tab[pos-1]   = (fPredefined[i]->fFunc1110)(tab[pos-1],tab[pos],tab[pos+1]); continue;
      }
      //
      switch(opcode) {
         case kBoolOptimizeAnd: {
            if (!tab[pos-1]) i=fOperOffset[i].fToJump; continue;
         }
         case kBoolOptimizeOr: {
            if (tab[pos-1])  i=fOperOffset[i].fToJump; continue;
         }
         case kAnd  : pos--; tab[pos-1] = (bool)tab[pos];  continue;  // use the fact that other were check before - see bool optimize
         case kOr   : pos--; tab[pos-1] = (bool)tab[pos];  continue;
      }
      switch(opcode) {
         //    case kabs  : tab[pos-1] = TMath::Abs(tab[pos-1]); continue;
         case kabs  : if (tab[pos-1]<0) tab[pos-1]=-tab[pos-1]; continue;
         case ksign : if (tab[pos-1] < 0) tab[pos-1] = -1; else tab[pos-1] = 1; continue;
         case kint  : tab[pos-1] = Double_t(Int_t(tab[pos-1])); continue;
         case kpow  : pos--; tab[pos-1] = TMath::Power(tab[pos-1],tab[pos]); continue;

         case kModulo     : {pos--;
            Long64_t int1((Long64_t)tab[pos-1]);
            Long64_t int2((Long64_t)tab[pos]);
            tab[pos-1] = Double_t(int1%int2);
            continue;}


         case kStringConst: { strpos++; stringStack[strpos-1] = (char*)fExprOptimized[i].Data(); pos++; tab[pos-1] = 0; continue; }
         case kfmod : pos--; tab[pos-1] = fmod(tab[pos-1],tab[pos]); continue;

         case kstrstr : strpos -= 2; pos-=2; pos++;
            if (strstr(stringStack[strpos],stringStack[strpos+1])) tab[pos-1]=1;
            else tab[pos-1]=0; continue;
         case kpi   : pos++; tab[pos-1] = TMath::ACos(-1); continue;


         case kSignInv: tab[pos-1] = -1 * tab[pos-1]; continue;

         case krndm : pos++; tab[pos-1] = gRandom->Rndm(1); continue;


         case kEqual: pos--; if (tab[pos-1] == tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kNotEqual : pos--; if (tab[pos-1] != tab[pos]) tab[pos-1]=1;
                        else tab[pos-1]=0; continue;
         case kNot : if (tab[pos-1]!=0) tab[pos-1] = 0; else tab[pos-1] = 1; continue;

         case kStringEqual : strpos -= 2; pos -=2 ; pos++;
            if (!strcmp(stringStack[strpos+1],stringStack[strpos])) tab[pos-1]=1;
            else tab[pos-1]=0; continue;
         case kStringNotEqual: strpos -= 2; pos -= 2; pos++;
            if (strcmp(stringStack[strpos+1],stringStack[strpos])) tab[pos-1]=1;
            else tab[pos-1]=0; continue;

         case kBitAnd : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) & ((Int_t) tab[pos]); continue;
         case kBitOr  : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) | ((Int_t) tab[pos]); continue;
         case kLeftShift : pos--; tab[pos-1]= ((Int_t) tab[pos-1]) <<((Int_t) tab[pos]); continue;
         case kRightShift: pos--; tab[pos-1]= ((Int_t) tab[pos-1]) >>((Int_t) tab[pos]); continue;

         case kJump   : i = (oper & kTFOperMask); continue;
         case kJumpIf : pos--; if (!tab[pos]) i = (oper & kTFOperMask); continue;

         case kBoolOptimize: {
            // boolean operation optimizer

            int param = (oper & kTFOperMask);
            int op = param % 10; // 1 is && , 2 is ||

            if (op == 1 && (!tab[pos-1]) ) {
               // &&: skip the right part if the left part is already false

               i +=  param / 10;

               // Preserve the existing behavior (i.e. the result of a&&b is
               // either 0 or 1)
               tab[pos-1] = 0;

            } else if (op == 2 && tab[pos-1] ) {
               // ||: skip the right part if the left part is already true

               i +=  param / 10;

               // Preserve the existing behavior (i.e. the result of a||b is
               // either 0 or 1)
               tab[pos-1] = 1;

            }

            continue;
         }

      }
      switch(opcode) {

#define R__EXPO(var)                                                         \
         {                                                                   \
           pos++; int param = (oper & kTFOperMask);                          \
           tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]);    \
           continue;                                                         \
         }
         // case kexpo:
         case kxexpo: R__EXPO(0);
         case kyexpo: R__EXPO(1);
         case kzexpo: R__EXPO(2);
         case kxyexpo:{  pos++; int param = (oper & kTFOperMask);
            tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[0]+params[param+2]*x[1]);
            continue;  }
#ifdef R__GAUS
#undef R__GAUS
#endif
#define R__GAUS(var)                                                                           \
                     {                                                                         \
                     pos++; int param = (oper & kTFOperMask);                                  \
                     tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1],          \
                                                             params[param+2],IsNormalized()); \
                     continue;                                                                 \
                     }

                     // case kgaus:
         case kxgaus: R__GAUS(0);
         case kygaus: R__GAUS(1);
         case kzgaus: R__GAUS(2);
         case kxygaus: { pos++; int param = (oper & kTFOperMask);
            Double_t intermede1;
            if (params[param+2] == 0) {
               intermede1=1e10;
            } else {
               intermede1=Double_t((x[0]-params[param+1])/params[param+2]);
            }
            Double_t intermede2;
            if (params[param+4] == 0) {
               intermede2=1e10;
            } else {
               intermede2=Double_t((x[1]-params[param+3])/params[param+4]);
            }
            tab[pos-1] = params[param]*TMath::Exp(-0.5*(intermede1*intermede1+intermede2*intermede2));
            continue; }

#define R__LANDAU(var)                                                                  \
                      {                                                                                       \
                      pos++; const int param = (oper & kTFOperMask);                                       \
                      tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
                      continue;                                                                            \
                      }
                      // case klandau:
         case kxlandau: R__LANDAU(0);
         case kylandau: R__LANDAU(1);
         case kzlandau: R__LANDAU(2);
         case kxylandau: { pos++; int param = oper&0x7fffff /* ActionParams[i] */ ;
            Double_t intermede1=TMath::Landau(x[0], params[param+1], params[param+2],IsNormalized());
            Double_t intermede2=TMath::Landau(x[1], params[param+3], params[param+4],IsNormalized());
            tab[pos-1] = params[param]*intermede1*intermede2;
            continue;
                        }

#define R__POLY(var)                                                                       \
                        {                                                                  \
                        pos++; int param = (oper & kTFOperMask);                           \
                        tab[pos-1] = 0; Double_t intermede = 1;                            \
                        Int_t inter = param/100; /* arrondit */                            \
                        Int_t int1= param-inter*100-1; /* aucune simplification ! (sic) */ \
                        for (j=0 ;j<inter+1;j++) {                                         \
                        tab[pos-1] += intermede*params[j+int1];                           \
                        intermede *= x[var];                                               \
                        }                                                                  \
                        continue;                                                          \
                        }
                        // case kpol:
         case kxpol: R__POLY(0);
         case kypol: R__POLY(1);
         case kzpol: R__POLY(2);

         case kDefinedVariable : {
            if (!precalculated) {
               precalculated = 1;
               for(j=0;j<fNval;j++) param_calc[j]=DefinedValue(j);
            }
            pos++; tab[pos-1] = param_calc[(oper & kTFOperMask)];
            continue;
            }

         case kDefinedString : {
            int param = (oper & kTFOperMask);
            if (!precalculated_str) {
               precalculated_str=1;
               for (j=0;j<fNstring;j++) string_calc[j]=DefinedString(j);
            }
            strpos++; stringStack[strpos-1] = string_calc[param];
            pos++; tab[pos-1] = 0;
            continue;
            }

         case kFunctionCall: {
            // an external function call

            int param = (oper & kTFOperMask);
            int fno   = param / 1000;
            int nargs = param % 1000;

            // Retrieve the function
            TMethodCall *method = (TMethodCall*)fFunctions.At(fno);

            // Set the arguments
            method->ResetParam();
            if (nargs) {
               UInt_t argloc = pos-nargs;
               for(j=0;j<nargs;j++,argloc++,pos--) {
                  method->SetParam(tab[argloc]);
               }
            }
            pos++;
            Double_t ret;
            method->Execute(ret);
            tab[pos-1] = ret; // check for the correct conversion!

            continue;
         };
      }
      if (!TestBit(kOptimizationError)) {
         SetBit(kOptimizationError);
         Warning("EvalParFast","Found an unsupported optmized opcode (%d)",oper >> kTFOperShift);
      }
   }
   Double_t result0 = tab[0];
   return result0;

}


//______________________________________________________________________________
Int_t TFormula::PreCompile()
{
   // Pre compile function

   TString str = fTitle;
   if (str.Length()<3) return 1;
   if (str[str.Length()-1]!='+'&&str[str.Length()-2]!='+') return 1;
   str[str.Length()-2]=0;
   TString funName("preformula_");
   funName += fName;
   if (TFormulaPrimitive::FindFormula(funName)) return 0;
   TString fileName;
   fileName.Form("/tmp/%s.C",funName.Data());

   FILE *hf;
   hf = fopen(fileName.Data(),"w");
   if (hf == 0) {
      Error("PreCompile","Unable to open the file %s for writing.",fileName.Data());
      return 1;
   }
   fprintf(hf,   "/////////////////////////////////////////////////////////////////////////\n");
   fprintf(hf,   "//   This code has been automatically generated \n");
   //
   fprintf(hf,   "Double_t %s(Double_t *x, Double_t *p){",funName.Data());
   fprintf(hf,   "return (%s);\n}",str.Data());

   //   fprintf("TFormulaPrimitive::AddFormula(new TFormulaPrimitive(\"%s::%s\",\"%s::%s\",(TFormulaPrimitive::GenFunc0)%s::%s));\n",
   //             clname,method->GetName(),clname,method->GetName(),clname,method->GetName());
   fclose(hf);

   return 0;


}


//______________________________________________________________________________
void TFormula::SetMaxima(Int_t maxop, Int_t maxpar, Int_t maxconst)
{
   // static function to set the maximum value of 3 parameters
   //  -maxop    : maximum number of operations
   //  -maxpar   : maximum number of parameters
   //  -maxconst : maximum number of constants
   // None of these parameters cannot be less than 10 (default is 1000)
   // call this function to increase one or all maxima when processing
   // very complex formula, eg TFormula::SetMaxima(100000,1000,1000000);
   // If you process many functions with a small number of operations/parameters
   // you may gain some memory and performance by decreasing these values.

   gMAXOP    = TMath::Max(10,maxop);
   gMAXPAR   = TMath::Max(10,maxpar);
   gMAXCONST = TMath::Max(10,maxconst);
}

//______________________________________________________________________________
void TFormula::GetMaxima(Int_t& maxop, Int_t& maxpar, Int_t& maxconst)
{
   // static function to get the maximum value of 3 parameters
   //  -maxop    : maximum number of operations
   //  -maxpar   : maximum number of parameters
   //  -maxconst : maximum number of constants

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