Automated one-loop calculations with GoSam

In this talk, the program package GOSAM is presented, which can be used for the automated calculation of one-loop amplitudes for multi-particle processes. The integrands are generated in terms of Feynman diagrams and can be reduced by d-dimensional integrand-level decomposition, or tensor reduction, or a combination of both. Through various examples we show that GOSAM can produce one-loop amplitudes for both QCD and electroweak theory; model files for theories Beyond the Standard Model can be linked as well.


Introduction
Recently we have seen tremendous progress in the automation of NLO multi-leg calculations [1,2,3,4,5,6,7]. In addition, public NLO tools containing a collection of hard-coded individual processes, like e.g. MCFM [8,9] and VBFNLO [10,11,12] have been developed and constantly enriched. The matching of partonic NLO predictions to parton shower Monte Carlo programs has also seen major advances, see e.g. the developments in Sherpa [13,14], MC@NLO/Herwig++ [15,16], POWHEG-Box [17,18], POWHEL [19,20,21]. Therefore we are progressing well towards the aim that basically any process which may turn out to be important for the comparison of LHC findings to theory can be evaluated at NLO accuracy.
In this talk, we present the program package GOSAM [1] which allows the automated generation and evaluation of one-loop amplitudes for multi-particle processes. To produce results for a certain process specified by the user, there is an "input card" to be edited specifying the details of the process. Then the user can launch the generation of the source code and its compilation, without having to worry about internal details of the code. The individual program tasks are steered via python scripts.
The integrands of the one-loop amplitudes are generated in terms of Feynman diagrams, thus allowing to perform symbolic manipulations of the corresponding algebraic expressions prior to any numerical step. For the reduction, the program offers the possibility to use either a ddimensional extension of the OPP method [22,23,24], as implemented in SAMURAI [25], or tensor reduction as implemented in golem95C [26,27] interfaced through tensorial reconstruction at the integrand level [28].
The program can be used to calculate one-loop corrections within both QCD and electroweak theory. Beyond the Standard Model theories can be interfaced using FeynRules [29] or LanHEP [30]. The Binoth Les Houches interface [31] to programs providing the real radiation contributions is also included and has been tested in various examples.

Description of the program 2.1 Generation of the source code for the amplitude
For the diagram generation we use the program QGRAF [32], supplemented by Python routines to further analyse or filter the diagrams, which allows for example to drop diagrams whose colour factor turns out to be zero, or to determine the signs for diagrams with Majorana fermions. The information about the model is either read from the built-in Standard Model file or is generated from a user defined LanHEP [30] or Universal FeynRules Output (UFO) [29] file. The program also produces a L A T E X file which contains graphical representations of all diagrams together with a summary of conventions, e.g. the helicity and colour basis.
The amplitude is generated in terms of algebraic expressions based on Feynman diagrams and then processed with a FORM program, using spinney [33] for the spinor algebra. In GOSAM we have implemented the 't Hooft-Veltman scheme (HV) and dimensional reduction (DRED). In both schemes all external vectors (momenta and polarisation vectors) are kept in four dimensions, while internal vectors are kept in the d-dimensional vector space (d = 4 − 2ε). For the loop momentum q we introduce the symbol µ 2 = −q 2 , such that whereq lives in 4 dimensions and the (D − 4)-dimensional orthogonal projection is denoted byq.
To prepare the numerator functions of the one-loop diagrams for their numerical evaluation, we separate the symbol µ 2 and dot products involving the momentumq from all other factors. All subexpressions which do not depend on eitherq or µ 2 are substituted by abbreviations, which are evaluated only once per phase space point. Each of the two parts is then processed by haggies [34], which generates optimised Fortran95 code for the numerical evaluation. For each diagram we generate an interface to SAMURAI [25], golem95C [27] and/or PJFRY [35,36]. Our standard choice for the reduction is to use SAMURAI [25], which usually provides a fast and stable reduction of the amplitude to a set of coefficients of basis integrals in most of the phase space. Furthermore, SAMURAI monitors the quality of the reconstruction of the numerator. In GOSAM we use this information to trigger an alternative reduction with either golem95C [27] or PJFRY [35] whenever these reconstruction tests fail. This combination of on-shell techniques and traditional tensor reduction is achieved using tensorial reconstruction at the integrand level [28]. The tensorial reconstruction not only can cure numerical instabilities, but in some cases also can reduce the computational cost of the reduction. Since the reconstructed numerator is typically of a form where kinematics and loop momentum dependence are already separated, the use of a reconstructed numerator tends to be faster than the original procedure, in particular in cases with a large number of legs and low rank.

Rational terms
Terms containing the symbols µ 2 or ε in the numerator of the integrands can lead to a so-called R 2 term [37], which contributes to the rational part of the amplitude. As we start from Feynman diagrams, we generate the R 2 part along with all other contributions without the need to seperate the different parts. In addition, we provide two different ways to calculate R 2 , an implicit and an explicit construction, using the fact that there are two ways of splitting the numerator function: or, alternatively, The implicit construction uses the splitting of Eq. (2.2) and treats all three numerator functions N i on equal grounds. Each of the three terms is reduced seperately in a numerical reduction and the Laurent series of the three results are added up taking into account the powers of ε. The explicit construction of R 2 is based on the assumption that each term inÑ in Eq. (2.3) contains at least one power of µ 2 or ε. The expressions for those integrals are relatively simple and known explicitly. Hence, the part of the amplitude which originates fromÑ is computed analytically whereas the purely four-dimensional partN is passed to the numerical reduction.
In the user input card, possible options for R 2 are r2=implicit,explicit, off and only. Using r2=only discards everything but the R 2 term and puts GOSAM in the position of providing R 2 terms to supplement other codes which work entirely in four dimensions, provided they use the same gauge.

Conventions
To be specific, we consider the case where the user wants to compute QCD corrections. In the case of electroweak corrections, the analogous conventions apply except that the strong coupling g s is replaced by e. In the QCD case, the tree-level matrix element squared can be written as where b = 0 is also possible. The matrix element at one-loop level, i.e. the interference term between tree-level and one-loop, can be written as (2.5) A call to the subroutine samplitude returns an array consisting of the four numbers (a 0 , c 0 , c −1 , c −2 ) in this order. The average over initial state colours and helicities is included in the default setup. Renormalisation is included depending on the options chosen by the user, for a more detailed description we refer to [1].

Installation
The user can download the code GOSAM either as a tar-ball or from the subversion repository at http://projects.hepforge.org/gosam/ . The build process and installation of GO-SAM is controlled by Python Distutils, while the build process for the libraries SAMURAI and golem95C is controlled by Autotools. To install GOSAM, the user needs to run python setup.py install -prefix MYPATH. For more details we direct the user to the GOSAM reference manual coming with the code. On top of a standard Linux environment, the programs FORM [38], version ≥ 3.3, and QGRAF [32] need to be installed on the system. Further, at least one of the libraries SAMURAI [25] and go-lem95C [27] needs to be present at compile time of the generated code. For the user's convenience we have prepared a package containing SAMURAI and golem95C together with the integral libraries OneLOop [39], QCDLoop [40] and FF [41]. The package gosam-contrib-1.0.tar.gz containing all these libraries is available for download from http://projects.hepforge.org/gosam/.

Usage
In order to generate the code for a process, the user needs to prepare an input file, called process card in the following, which contains • process specific information, such as a list of initial and final state particles, their helicities (optional) and the order of the coupling constants; • scheme specific information and approximations, such as the regularisation and renormalisation schemes, the underlying model, masses and widths which are set to zero, the selection of subsets of diagrams, etc; • system specific information, such as paths to programs and libraries or compiler options; • optional information for optimisations which control the code generation.
If the process card is called gosam.in, it can be invoked by the command gosam.py gosam.in. All further steps are controlled by the generated make files; in order to generate and compile all files relevant for the matrix element one needs to invoke make c o m p i l e The generated code can be tested with the program matrix/test.f90. The following sequence of commands will compile and run the test program: cd m a t r i x make t e s t . exe . / t e s t . exe The numbers printed by the test program are, in this order, a 0 , c 0 /a 0 , c −1 /a 0 , c −2 /a 0 and the pole parts calculated from the infrared insertion operator [42,43]. One can also generate a pictorial representation of all generated diagrams using the command make doc which generates the file doc/process.ps

Using the BLHA Interface
The so-called Binoth Les Houches Accord (BLHA) [31] defines an interface for a standardized communication between one-loop programs (OLP) and Monte Carlo (MC) tools. GOSAM can act as an OLP in the framework of the BLHA, such that the calculation of complete cross sections is straightforward.
In general, the MC writes an order file, called for example olp_order.lh, and invokes the script gosam.py as follows: gosam . py −−o l p o l p _ o r d e r . l h The invocation of gosam.py generates a set of files which can be compiled with a generated make file. The BLHA routines are defined in the Fortran module olp_module but can also be accessed from C programs.

Using External Model Files
GOSAM can also make use of model files generated by either Feynrules [44] in the UFO format [29] or by LanHEP [30]. The particles can be specified by their PDG code. Details about how to import these model files are described in the GOSAM reference manual. Precompiled

Examples and validation
The code generated by GOSAM has been compared to a considerable number of processes available in the literature, as listed in Table 1. Many of these processes are also included as examples in the code, including reference values.  As an example for the Binoth Les Houches Accord interface of GOSAM we present results for the QCD corrections to W − + 1 jet production, obtained by linking GOSAM with SHERPA [60]. Results for the transverse momentum and rapidity distribution of the leading jet are shown in Figs. 1(a) and 1(b). The comparison with MCFM [8,9] shows perfect agreement. Furthermore, SHERPA offers the possibility to match NLO calculations with a parton shower [13,14].

Conclusions
We have presented the program GOSAM which can produce code for one-loop amplitudes for multi-particle processes in an automated way. The program is publicly available at http://projects.hepforge.org/gosam/ and can be used to calculate one-loop amplitudes within QCD, electroweak theory, or other models which can be imported via an interface to LanHEP or FeynRules. Monte Carlo programs for the real radiation can be easily linked via the interface defined by the Binoth Les Houches Accord.
The amplitudes are generated in terms of Feynman diagrams and can be reduced by unitarity based reduction at integrand level or traditional tensor reduction, or a combination of the two approaches. Further, the user can choose among different libraries for the master integrals and different regularisation and renormalisation schemes.