Current and planned experiments in high energy physics can probe
physics in
processes with polarized beams and many tagged particles in the final
state. The combinatorial explosion of the number of Feynman diagrams
contributing to scattering amplitudes for many external particles
calls for the development of more compact representations that
translate well to efficient and reliable numerical code. In gauge
theories, the contributions from individual Feynman diagrams are gauge
dependent. Strong numerical cancellations in a redundant
representation built from individual Feynman diagrams lead to a loss
of numerical precision, stressing further the need for eliminating
redundancies.
Due to the large number of processes that have to be studied in order
to unleash the potential of modern experiments, the construction of
nearly optimal representations must be possible algorithmically on a
computer and should not require human ingenuity for each new
application.
O'Mega [1, 2, 3] is a compiler for
tree-level scattering amplitudes that satisfies these requirements.
O'Mega is independent of the target language and can therefore create
code in any programming language for which a simple output module has
been written. To support a physics model, O'Mega requires as input
only the Feynman rules and the relations among coupling constants.
Similar to the earlier numerical approaches [4]
and [5], O'Mega reduces the growth in calculational
effort from a factorial of the number of particles to an exponential.
The symbolic nature of O'Mega, however, increases its flexibility.
Indeed, O'Mega can emulate both [4]
and [5] and produces code that is empirically at least
twice as fast. The detailed description of all algorithms is
contained in the extensively commented source code of
O'Mega [1].
In this note, we sketch the architecture of O'Mega and describe the
usage of the first version. The building blocks of the representation
of scattering amplitudes generated by O'Mega are described in
section 2 and directed acyclical graphs are introduced in
section 3. The algorithm for constructing the directed
acyclical graph is presented in section 4 and its
implementation is described in section 6.
We conclude with a few results and examples in
section 7. Practical information is
presented in the appendices: installation of the O'Mega software in
appendix A, running of the O'Mega compiler in
appendix B and using O'Mega's output in
appendix C. Finally, appendix D
briefly discusses mechanisms for extending O'Mega.