text: The Formula class.
  This is a new version of the TFormula class based on Cling. This class is not 100% backward compatible with the old TFormula class, which is still available in ROOT as
  ROOT::v5::TFormula. Some of the TFormula member functions available in version 5, such as
  Analyze and
  AnalyzeFunction are not available in the new TFormula. On the other hand formula expressions which were valid in version 5 are still valid in TFormula version 6
  This class has been implemented during Google Summer of Code 2013 by Maciej Zimnoch.
  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
  gaus(x, [0..2]) + expo(y, [3..4])
  In the last examples 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(
  PolNstands for Polynomial of degree N)
  gaus(x, [0..2])is a more explicit way of writing
  gaus(0)
  expo(y, [3..4])is a substitute for
  exp([3]+[4]*y)
  TMath functions can be part of the expression, eg:
  TMath::Landau(x)*sin(x)
  TMath::Erf(x)
  Formula may contain constants, eg:
  sqrt2
  e
  pi
  ln10
  infinity
  and more.
  Formulas may also contain other user-defined ROOT functions defined with a TFormula, eg, where
  f1 is defined on one x-dimension and 2 parameters:
  f1(x, [omega], [phi])
  f1([0..1])
  f1([1], [0])
  f1(y)
  To replace only parameter names, the dimension variable can be dropped. Alternatively, to change only the dimension variable, the parameters can be dropped. Note that if a parameter is dropped or keeps its old name, its old value will be copied to the new function. The syntax used in the examples above also applies to the predefined parametrized functions like
  gaus and
  expo.
  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("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.
  TFormula new("new","x*old")
  is equivalent to:
  TFormula new("new","x*sin(x*(x<0.5 || x>1))")
  The class supports unlimited number of variables and parameters. By default the names which can be used for the variables are
  x,y,z,t or
  x[0],x[1],x[2],x[3],....x[N] for N-dimensional formulas.
  This class is not anymore the base class for the function classes
  TF1, but it has now a data member of TF1 which can be accessed via
  TF1::GetFormula.
  In a TFormula, a variable is a defined by a name
  x,
  y,
  z or
  t or an index like
  x[0],
  x[1],
  x[2]; that is
  x[N] where N is an integer.
  Parameters are similar and can take any name. It is specified using brackets e.g.
  [expected_mass] or
  [0].
  Variables and parameters can be combined in the same TFormula. Here we consider a very simple case where we have an exponential decay after some time t and a number of events with timestamps for which we want to evaluate this function.
  The distinction between variables and parameters arose from the TFormula's application in fitting. There parameters are fitted to the data provided through variables. In other applications this distinction can go away.
  Parameter values can be provided dynamically using
  TFormula::EvalPar instead of
  TFormula::Eval. In this way parameters can be used identically to variables. See below for an example that uses only parameters to model a function.
  All operators of C/C++ are allowed in a TFormula with a few caveats.
  The operators
  |,
  &,
  % can be used but will raise an error if used in conjunction with a variable or a parameter. Variables and parameters are treated as doubles internally for which these operators are not defined. This means the following command will run successfully
  root -l -q -e TFormula("", "x+(10%3)").Eval(0) but not
  root -l -q -e TFormula("", "x%10").Eval(0).
  The operator
  ^ is defined to mean exponentiation instead of the C/C++ interpretaion xor.
  ** is added, also meaning exponentiation.
  The operators
  ++ and
  @ are added, and are shorthand for the a linear function. That means the expression
  x@2 will be expanded to
  [n]*x + [n+1]*2 where n is the first previously unused parameter number.
  Definition at line 86 of file TFormula.h.
  #include "inc/TFormula.h"
  Definition at line 103 of file TFormula.h.
  Definition at line 176 of file TFormula.h.
  Definition at line 170 of file TFormula.h.
  Definition at line 387 of file TFormula.cxx.
  Definition at line 413 of file TFormula.cxx.
  Definition at line 430 of file TFormula.cxx.
  Constructor from a full compile-able C++ expression.
  Definition at line 476 of file TFormula.cxx.
  Definition at line 522 of file TFormula.cxx.
  Definition at line 186 of file TFormula.h.
  Clear the formula setting expression to empty and reset the variables and parameters containers.
  Reimplemented from TNamed.
  Definition at line 716 of file TFormula.cxx.
  Compile the given expression with Cling backward compatibility method to be used in combination with the empty constructor if no expression is given , the current stored formula (retrieved with GetExpFormula()) or the title is used.
  return 0 if the formula compilation is successful
  Definition at line 599 of file TFormula.cxx.
  Copy this to obj.
  Reimplemented from TNamed.
  Definition at line 633 of file TFormula.cxx.
  Definition at line 219 of file TFormula.h.
  Fill structures with default variables, constants and function shortcuts.
  Definition at line 849 of file TFormula.cxx.
  Fill the shortcuts for vectorized functions We will replace for example sin with vecCore::Mat::Sin.
  Definition at line 917 of file TFormula.cxx.
  Generate gradient computation routine with respect to the parameters.
  Definition at line 125 of file TFormula.h.
  Definition at line 228 of file TFormula.h.
  Definition at line 229 of file TFormula.h.
  Definition at line 230 of file TFormula.h.
  Compute the gradient employing automatic differentiation.
  Handling parametrized functions Function can be normalized, and have different variable then x.
  Variables should be placed in brackets after function name. No brackets are treated like [x]. Normalized function has char 'n' after name, eg. gausn[var](0) will be replaced with [0]*exp(-0.5*((var-[1])/[2])^2)/(sqrt(2*pi)*[2])
  Adding function is easy, just follow these rules, and add to
  TFormula::FillParametrizedFunctions defined further below:
  Definition at line 1050 of file TFormula.cxx.
  Handling parameter ranges, in the form of [1..5].
  Definition at line 1267 of file TFormula.cxx.
  Handling polN If before 'pol' exist any name, this name will be treated as variable used in polynomial eg.
  varpol2(5) will be replaced with: [5] + [6]*var + [7]*var^2 Empty name is treated like variable x.
  Definition at line 949 of file TFormula.cxx.
  Definition at line 212 of file TFormula.h.
  Definition at line 129 of file TFormula.h.
  Definition at line 554 of file TFormula.cxx.
  Inputs formula, transfered to C++ code into Cling.
  Definition at line 823 of file TFormula.cxx.
  Definition at line 302 of file TFormula.cxx.
  Definition at line 243 of file TFormula.cxx.
  Definition at line 261 of file TFormula.cxx.
  Definition at line 255 of file TFormula.cxx.
  Definition at line 279 of file TFormula.cxx.
  Definition at line 242 of file TFormula.h.
  Definition at line 235 of file TFormula.cxx.
  Definition at line 267 of file TFormula.cxx.
  Definition at line 240 of file TFormula.h.
  Definition at line 241 of file TFormula.h.
  = operator.
  Definition at line 544 of file TFormula.cxx.
  Sets TMethodCall to function inside Cling environment.
  TFormula uses it to execute function. After call, TFormula should be ready to evaluate formula. Returns false on failure.
  Definition at line 808 of file TFormula.cxx.
  Definition at line 354 of file TFormula.cxx.
  Flag to control if all parameters are setted.
  Definition at line 96 of file TFormula.h.
  ! Transient to force re-initialization
  Definition at line 95 of file TFormula.h.
  ! Input function passed to Cling
  Definition at line 91 of file TFormula.h.
  ! Unique name passed to Cling to define the function ( double clingName(double*x, double*p) )
  Definition at line 100 of file TFormula.h.
  Parameter values.
  Definition at line 93 of file TFormula.h.
  ! Cached variables
  Definition at line 92 of file TFormula.h.
  !
  Definition at line 138 of file TFormula.h.
  String representing the formula expression.
  Definition at line 140 of file TFormula.h.
  ! Function pointer, owned by the JIT.
  Definition at line 105 of file TFormula.h.
  !
  Definition at line 135 of file TFormula.h.
  !
  Definition at line 139 of file TFormula.h.
  ! Function pointer, owned by the JIT.
  Definition at line 106 of file TFormula.h.
  ! Input query to clad to generate a gradient
  Definition at line 104 of file TFormula.h.
  ! Pointer to a methodcall
  Definition at line 99 of file TFormula.h.
  Definition at line 108 of file TFormula.h.
  ! Pointer to the lambda function
  Definition at line 107 of file TFormula.h.
  ! Transient flag to control lazy initialization (needed for reading from files)
  Definition at line 97 of file TFormula.h.
  Vector of linear functions.
  Definition at line 144 of file TFormula.h.
  ! Pointer to methodcall
  Definition at line 98 of file TFormula.h.
  Dimension - needed for lambda expressions.
  Definition at line 141 of file TFormula.h.
  ! Number of parameter (transient since we save the vector)
  Definition at line 142 of file TFormula.h.
  !
  Definition at line 143 of file TFormula.h.
  || List of parameter names
  Definition at line 137 of file TFormula.h.
  ! Transient to force initialization
  Definition at line 94 of file TFormula.h.
  ! Unique name used to defined the function and used in the global map (need to be saved in case of lazy initialization)
  Definition at line 101 of file TFormula.h.
  ! List of variable names
  Definition at line 136 of file TFormula.h.
  Whether we should use vectorized or regular variables.
  Definition at line 145 of file TFormula.h.