
\subsubsection{{\tt FeynArts}, {\tt FeynCalc}, {\tt FormCalc}, 
  {\tt TwoCalc} and {\tt LoopTools}}
%
\paragraph{{\tt FeynArts}:}
%
{\tt FeynArts} is a {\tt Mathematica}-package generating Feynman
diagrams and the corresponding amplitudes. Its great flexibility has
allowed it to become an enormously useful tool not only for high energy
particle physicists. It has found its applications also in effective
field theories, and by knowing its power one could imagine that it may
be useful even for at first sight completely unrelated subjects.

There exists a manual describing its features in a rather
clear and pedagogical way. The four following functions constitute the
heart of {\tt FeynArts}: 
{\tt CreateTopologies}, {\tt InsertFields}, {\tt Paint} and {\tt
  CreateFeynAmp}.

As an example let us consider the one-loop corrections to the
triple Higgs vertex in the Standard Model.
The use of {\tt CreateTopologies} in this case is the following\footnote{In
  what follows we will use the notation of the {\tt FeynArts} version 1.2}:
\begin{verbatim}
tops = CreateTopologies[1,3, Tadpoles -> False, SelfEnergies -> False];
\end{verbatim}
The first two arguments of {\tt CreateTopologies} determine the number
of loops and external legs, respectively. The remaining arguments are
options, where the first one prevents creation of tadpole insertions and
the second one states that no diagrams with self-energy insertions on
external legs are generated\footnote{ 
  There is a single option
  comprising both of the latter, named {\tt WFCorrections} (for ``wave
  function corrections'').}.  To view the topologies, one types
\begin{verbatim}
Paint[tops,1,2];
\end{verbatim}
where the first argument specifies the list of topologies and the second
and third one refer to the number of incoming and outgoing fields,
respectively. The outcome is the graphic shown in Fig.~\ref{FAtops1l.ps}.
%
\begin{figure}[ht]
  \begin{center}
    \leavevmode
    \epsfxsize=6.cm
    \epsffile[110 265 465 560]{FAtops1l.ps}
    \hfill
    \parbox{\captionwidth}{
    \caption[]{\label{FAtops1l.ps}\sloppy
      Topologies created by {\tt FeynArts}.
      }}
  \end{center}
\end{figure}
%

Next the fields are attributed to the lines. This is done by typing
\begin{verbatim}
ins = InsertFields[tops, {S[1]} -> {S[1],S[1]}, Model -> {SM}];
\end{verbatim}
where the first argument again refers to the list of topologies created
above, the third one fixes the model ({\tt SM} $\widehat =$ Standard
Model), and the second one defines the in- and outgoing particles ({\tt
  S[1]} for the physical Higgs boson).  This produces a list of 64
diagrams that can be viewed using {\tt Paint} again, this time, however,
with only one argument, since in- and outgoing fields are already
specified in ``{\tt ins}'':
\begin{verbatim}
Paint[ins];
\end{verbatim}
An extract of the list of diagrams is shown in Fig.~\ref{FAHHH.ps}.
%
\begin{figure}[ht]
  \begin{center}
    \leavevmode
    \epsfxsize=8.cm
    \epsffile[110 160 520 590]{FAHHH.ps}
    \hfill
    \parbox{\captionwidth}{
    \caption[]{\label{FAHHH.ps}\sloppy
      Sample of diagrams generated by {\tt FeynArts} for the triple Higgs
      vertex to one-loop order.
      }}
  \end{center}
\end{figure}
%
%
\begin{figure}
  \begin{center}
    \leavevmode
    %
    % NOTE: fa17.ps is essentially produced by FeynArts, BUT:
    %       the line-width and the fontsize was changes in the ps-file
    %       MANUALLY (see also ~/math/FeynArts/FAdemo.m)!
    %
    % Note further:
    %     - fa17.ps had to fulfill the requirement that
    %       the expression in Out[7] below is not too complicated
    %       but also non-trivial (not simply C_0!).
    %     - Fig. \ref{FAHHH.ps} does not include #17, because
    %       a set that includes #17 would be rather boring 
    %       (only Fermion-loops!). Else one would have had to manually
    %       collect another set from different sheets (at least I don't
    %       know how to do better). Replacing #17 by one of the diagrams
    %       from Fig. \ref{FAHHH.ps} would run into conflict with the
    %       requirements above, however.
    %
    \epsfxsize=5.cm
    \epsffile[80 180 520 600]{fa17.ps}
    \hfill
    \parbox{\captionwidth}{
    \caption[]{\label{fig:fa:17}\sloppy
      $17^{\rm th}$ diagram produced by {\tt FeynArts} for the
      triple Higgs vertex.
      }}
  \end{center}
\end{figure}
%

The last step to be done by {\tt FeynArts} is to generate analytic
expressions which are understood by {\tt FeynCalc}, {\tt FormCalc} and
{\tt TwoCalc}:
\begin{verbatim}
amps = CreateFeynAmp[ins];
\end{verbatim}
This produces a list containing the amplitudes of the individual diagrams. The
$17^{\rm th}$ element corresponds to the diagram with a top-quark
triangle (Fig.~\ref{fig:fa:17}) and reads as follows:
\begin{verbatim}

In[12]:= amps[[17]]

                                        3 I   3   3
Out[12]= FeynAmp[S1S1S1, T1, I17, N17][(--- EL  MT  Integral[q1] 
                                        128
 
>       tr[(MT + gs[k1 - p1 + q1]) . (MT + gs[q1]) . (MT + gs[k1 + q1])]) / 
 
         3   4     2     2      2            2      2                 2    3
>     (MW  Pi  (-MT  + q1 ) (-MT  + (k1 + q1) ) (-MT  + (k1 - p1 + q1) ) SW )]
\end{verbatim}
{\tt p}$i$ are the ingoing, {\tt k}$i$ the outgoing, and {\tt q}$i$ the
loop momenta. {\tt EL} is the electric charge, {\tt gs[p]} means
$p\!\!\!/$ and {\tt tr} the Dirac trace.

\paragraph{{\tt FeynCalc}, {\tt FormCalc} and {\tt TwoCalc}:}
%
The list of expressions named {\tt amps} above may now be directly fed
into {\tt FeynCalc}\footnote{ We use version $2.2\beta$ here which is
  the latest version which is freely available (see
  Section~\ref{submisc}). } or {\tt FormCalc}.  Its entries will
automatically be transformed to the internal notation (see below).  The
key function of these programs is {\tt OneLoop}, respectively derivatives of
it, in particular {\tt OneLoopSum}. As a simple example consider the
integral
\begin{equation}
\int{\dd^D q\over (2\pi)^D}{1\over (m_1^2 - q^2)(m_2^2-(k+q)^2)} =
{i\over 16\pi^2}\, B_0(k^2,m_1^2,m_2^2)\,.
\label{eq::B0def}
\end{equation}
In the notation of {\tt FeynCalc} this reads
\begin{verbatim}
In[3]:= OneLoop[q,1/(2*Pi)^4 FeynAmpDenominator[
               PropagatorDenominator[q,m1],
               PropagatorDenominator[q+k,m2]]]

        I            2    2
        -- B0[k.k, m1 , m2 ]
        16
Out[3]= --------------------
                  2
                Pi
\end{verbatim}
Note that the pre-factor in {\tt In[3]} above is $D$-independent.  In
principle, this could be assigned to a definition of {\tt B0} in {\tt
  Out[3]} that differs from the one in (\ref{eq::B0def}) by a
$D$-dependent factor; however, another interpretation is to implicitely
assume \msbar-regularization of all integrals. In fact, as will become
clear in a moment, this is what is done in the numerical routine {\tt
  LoopTools}.  

In this way {\tt FeynCalc} rewrites any one-loop diagram to the standard
integrals defined in Eq.~(\ref{eq::tmunuN}).  For example, the diagram
corresponding to {\tt amps[[17]]} defined above produces the output
\begin{verbatim}
In[4]:= OneLoopSum[amps,SelectGraphs -> {17}]

Out[4]= K[7]

In[5]:= FixedPoint[ReleaseHold[#]&,%]
\end{verbatim}
\pagebreak[4]
\begin{verbatim}
              3   4             2    2        3   4             2    2
         -3 EL  MT  B0[k1.k1, MT , MT ]   3 EL  MT  B0[p1.p1, MT , MT ]
Out[5]= ------------------------------ - ----------------------------- - 
                      3   2   3                       3   2   3
                 32 MW  Pi  SW                   32 MW  Pi  SW
 
      3   4                               2    2
  3 EL  MT  B0[k1.k1 - 2 k1.p1 + p1.p1, MT , MT ]
  ----------------------------------------------- - 
                       3   2   3
                  32 MW  Pi  SW
 
       3   4                                             2    2    2
  (3 EL  MT  C0[k1.k1, p1.p1, k1.k1 - 2 k1.p1 + p1.p1, MT , MT , MT ] 
 
          2                                   3   2   3
     (4 MT  - k1.k1 + k1.p1 - p1.p1)) / (32 MW  Pi  SW )
\end{verbatim}
The action of {\tt FormCalc} is quite similar to the one of {\tt
  FeynCalc}, except that is does not perform the full reduction to the
scalar integrals of Eq.~(\ref{eq::scalint}), but rather only decomposes
the expressions into covariants, keeping the corresponding coefficients
as they are. In general this reduces the length of the expressions and
still can be evaluated numerically with the help of {\tt LoopTools}, to
be described below. The same strategy can also be followed by {\tt
  FeynCalc}, simply by setting the option {\tt ReduceToScalars} in {\tt
  OneLoop} to {\tt False}.  The main feature of {\tt FormCalc} in
comparison to {\tt FeynCalc} is its speed which is mainly due to the
fact that it passes large expressions to {\tt FORM}.

{\tt TwoCalc} is the extension of {\tt FeynCalc} to two-loop propagator
type diagrams, and its usage is very similar.

\paragraph{{\tt FF} and {\tt LoopTools}:}
%
{\tt FF} is a {\tt FORTRAN} program which numerically evaluates the
scalar one-loop integrals defined in (\ref{eq::scalint}). The extension
to the coefficients appearing in the tensor decomposition of tensor
integrals and its integration into {\tt Mathematica} is done in {\tt
  LoopTools}.  E.g., the numerical evaluation of the $B_0$-integral
defined above may be simply done in {\tt Mathematica} by saying
\begin{verbatim}
In[2]:= B0[k.k,m1^2,m2^2] //. {k.k -> m1^2,m1 -> 100,m2 -> 10}

Out[2]= -7.49109
\end{verbatim}
This example shows that the $1/\varepsilon$ poles (together with the
constants $\gamma_{\rm E}$ and $\ln 4\pi$) are set to zero as it corresponds
to an \msbar-renormalized quantity; this was already pointed out in the
discussion below Eq.~(\ref{eq::B0def}). Both the ultra-violet and the
infra-red divergent parts are controlled with the help of parameters
which specify the square of the renormalization scale $\mu$.  In a
similar way, it is possible to obtain numerical values for the diagram
{\tt amps[[17]]} above by providing numbers for the scalar products and
masses.

