Mathematica in High Energy Physics: 
FeynCalc 3.0

A theoretical physicist uses a Mathematica 3.0 program and database for assistance in Feynman diagram calculations.

by Rolf Mertig

Three of the four fundamental forces of nature are described by the so-called "Standard Model", which can make quantitative predictions once a small number of free parameters are fitted to experiments. At present, the experimental verification (non-falsification) of this Standard Model of the electromagnetic, weak and strong interactions has changed from a qualitative level to a quantitative one, where the comparison of the numbers produced by experiment and the numbers predicted from the theoretical framework becomes very involved, both from the experimental and from the theoretical side.

In order to evaluate the theory at a more precise quantitative level, so-called Feynman diagrams have to be calculated. Feynman diagrams (invented by Nobel laureate Richard Feynman) are simple pictures describing the—in fact, not so simple—interactions of elementary particles. These diagrams are translated into complicated mathematical expressions and have to be evaluated by an algorithm, which even Feynman himself thought of feeding into a computer.

FeynCalc was written to automate the calculation of Feynman diagrams. The first version of FeynCalc was used to calculate a number of 1-loop  2⟶ 2 processes. Apart from performing complicated loop-calculations (higher order perturbative contributions to the Born-level approximation), FeynCalc was designed and used as an easy interactive tool to do non-indicial tensor algebra; for example, contracting Lorentz indices, performing Dirac traces,  simplifying SU(3) color-algebra expressions, and incorporating other special functions and features from theoretical physics into the powerful general Mathematica environment. Especially in theoretical calculations involving non-zero masses of the elementary particles. Mathematica's capabilities of factorization of large expressions proved very useful in obtaining a short result. With the advent of Mathematica 3.0 (the alpha- and beta- versions, which the author had the privilege of testing over the last three years), the reorganisation of the algebraical engine proved extremely useful in the solution of several hard problems in 2-loop QCD calculations.

As a true theoretical physicist, I never thought that a user interface like the Mathematica Front End would be of any use, and thus I only started to play with it when the first alpha-version with typesetting arrived on a NeXTstation of the department. Quite soon I changed my mind, since the new automatic typesetting capabilities (especially the automatic real-time linebreaking!) of the new Mathematica proved extremely useful in several aspects. First of all, I could display and print out intermediate results in a human-readable form, so that my collaborator (a Mathematica illiterate) could also read it. Secondly, and certainly more important, I found programming mistakes in larger formulas much more easily, since a nicely two-dimensional typeset output is easier to read and more information fits on a given screen (or paper) surface. Of course the programmability of the typesetting was a very nice feature too, so that a dirac matrix (γ^μ) could be displayed as such and not as a ga[mu] object as in the past.

The origin of FeynCalc

The roots of FeynCalc go back to 1987. During a stay as a graduate student in Albuquerque, New Mexico, I learned to program in Macsyma from the experts Stanly Steinberg and Michael Wester. Meanwhile in Germany, elementary particle physicists needed someone to automate the calculation of Feynman diagrams. The algorithms were provided mostly by Ansgar Denner and Manfred Böhm and implemented in a purely functional way by me during the years 1987 - 1989.

The basic idea was to have general functions for some of the more mechanical parts of the diagram calculations—highly generalizable tools for use in calculations of different physical (1-loop) processes, especially 1->2 and 2->2 processes. These included tools for

•  Lorentz algebra :       
           \(TraditionalForm
      \`\(\(g\^μν\ p\_μ\ \ \ \  -> \ p\^ν\ , \)\ \ 
      \)\)
           \(TraditionalForm
      \`\(\(g\^αβ\) g\_αβ\  -> \ n\ \)\), ...

•  Dirac algebra  
            \(TraditionalForm
      \`\(\(γ\^α\ \(γ\^ν\) 
          γ\_α\ \ \ \ \ \ \ \ \  -> \ 
        \((2 - n)\)\ γ\^ν, \)\ \ \)\)
            \("v"\&_\)"("p,m")" \(p/
              \)  -> - m \("v"\&_\)"("p,m")" , ...

• Passarino-Veltman - tensor integral decomposition.

Applications of these tools included complete 1-loop processes in the Standard Model: 

 		           \(TraditionalForm\`\(\ \ \ \(e\^+\) \(e\^-\)\  -> \ \ Z\ H\ \)\),  \(TraditionalForm\`\(\ \(\(e\^+\) \(e\^-\)\  -> \)\)\)\(TraditionalForm\`\(\ \ \(W\^+\) \(W\^-\)\ \)\)

and 2-loop photon selfenergy QED.

However, at the end of 1989 several problems showed up with the Macsyma implementation. The purely functional programming style proved to be difficult to debug and, in fact, inappropriate. The rudimentary pattern matcher in Macsyma was not useful. There was no way to incorporate new functions easily into the whole Macsyma system, and no possibility of providing online documentation. Furthermore, Macsyma's memory managment ("garbage collection") was slow when handling large expressions.

In early 1990 it became clear that Mathematica was a much more natural (programming) environment for FeynCalc.

1990-1991 : The first version  of FeynCalc in Mathematica

In 1990, user-friendly  packages were built with extended automatic capabilites (OneLoop, OneLoopSum), and SU(3) algebra capabilities were added (SU3Simplify).

In 1991 I began to write documentation and make the program available on anonymous ftp-servers: mathsource.wolfram.com and canc.can.nl

Applications from 1990 - 1996  included:

•1-loop 2 ->2 processes in the Standard Model, such as:
            gg ->  t (OverBar[t]),  \(\(e\^+\) \(e\^-\)\  -> \ \ Z\ H\) ,  \(TraditionalForm\`\(\(W\^+\) \(W\^-\)\ \)\)-> \(TraditionalForm\`\(\(W\^+\) \(W\^-\)\ \)\), ZZ -> ZZ 
•background field gauge calculations,
•\(TraditionalForm
      \`\(high - energy\ approximation\ of\ \(e\^+\) \(e\^-\)\  -> 
        \)\)\(TraditionalForm\`\(\ \ \(W\^+\) \(W\^-\)\ \)\).
• 2-loop Standard Model self-energies.

1992-1995 : FeynCalc 2.0-2.2, unification and simplification.

During this period of development the SU(3) algebra was changed to SU(N). Several tools for automatic tree-level calculation were  added, for example the function SquareAmplitude. (Unfortunately, the  documentation was not updated.) All sub-packages were put into one file ( ≃ (10^4) lines). The result was FeynCalc2.2beta.m, which is available from the author.

1993-1996 : FeynCalc 3.0, modularization; typesetting

Due to the rapidly increasing amount of code, FeynCalc has been reorganized in a completely modular way. Each function in a package is a file which is loaded only on demand. For the maintainance of hundreds of packages, totalling 2.5 MegaByte, software engineering was needed.

•Special typesetting rules were added (e.g., (Subscript[(∂^→), μ]) ,  etc.compatible with Mathematica 3.0) .  

•Special code was written to allow new abstract datatypes, for example for noncommutative algebra and for special integrals.

•QCD tools for the Operator Product Expansion  (OPE) were added.

•Automatic Feynman rule derivation (with functional differentation) was coded, in order to get special Feynman rules for twist-2 (and higher) operators.

Another recent effort has been to build data bases: Convolutions, integrals, tensor integral transformation formulas, Feynman rules, and Feynman parametrizations. The newest applications include 2-loop spin-dependent and spin-independent Altarelli-Parisi Splitting functions.

A research application: The Calculation of the 2-loop Altarelli-Parisi Spin Splitting Functions (Subscript[P, ij]^((1)))(x)

A non-trivial research application, where FeynCalc 3.0 (and Mathematica of course; but also FORM*) proved to be a useful tool, is published in the physics journal "Zeitschrift für Physik" (Mertig and van Neerven 1996). High Energy Physics experiments (E142, E143, Hermes) measure the spin structure of the nucleon, described by the so-called polarized structure function (Subscript[g, 1])(x, (Q^2)).
(* Joe. Insert footnote related to FORM.  "FORM, by J. A. M. Vermaseren, is published by Computer Algebra Nederland (CAN), Kruislaan 413, 1098 S Amsterdam, The Netherlands." *)

Extraction of the moments of  \(TraditionalForm
      \`\(\(g\_1\)(x, Q\^2)\)\ \ 
        \((g\_1\%\((m)\) = 
            ∫\_0\%1dx\ \(x\^\(m - 1\)\) 
                \(\(g\_1\)(x)\))\)\) requires  theoretical input, since the data cover a limited range in x, resulting in a need to evolve to a common (Q^2) using the renormalization group equations before the moments can be evaluated. Perturbative evolution effects are clearly necessary!

The calculation of (Subscript[P, ij]^((1)))(x) involves about 50 2-loop  diagrams (hundreds of integrals). Apart from technical complexity, several conceptual problems had to solved ((Subscript[γ, 5]) in n-dimensional regularization; tensor-integral transformations).

The results have been tabulated in FeynCalc 3.0; an example here: (Subscript[P, gg]^((1))).

SplittingFunction[PGG]

Editor's Note: The electronic edition of Mathematica in Education and Research includes further examples of FeynCalc notebooks for Lorentz Algebra, Dirac Algebra, Operator handling and Feynman rule derivation.

Conclusion

The investigation of the unknown at the subatomic level is an ongoing adventure of human intellect and technology. Physics continues to be an experimental science, and thus any theory trying to explain the physical part of nature must be potentially falsifiable by experiment. At national and international high-energy accelerator laboratories, the properties of forces among these elementary particles are studied quantitatively by collaborations of typically hundreds of scientists and other specialists. FeynCalc 3.0, built on the new functionality of Mathematica 3.0, provides a powerful tool for this research.

Reference

Mertig, R. and van Neerven, W. L., The calculation of the two-loop splitting functions (Subscript[P, ij]^((1)))(x), Zeitschrift für Physik, Z.Phys C70, (1996) 637.

ABOUT THE AUTHOR

ELECTRONIC SUBSCRIPTIONS