MadGraph 5 Processes

By far the easiest way to implement new processes into PYTHIA 8 is by using the matrix-element generator MadGraph 5. This program has an option to output the results of a matrix-element calculation as a set of PYTHIA 8 C++ classes (plus further auxiliary code), that can then be linked and used as semi-internal processes, meaning they are handled identically with normal internal ones. This way, MadGraph 5 can be used to implement processes from any model that can be written in terms of a Lagrangian. Any 2 → 1, 2 → 2 and 2 → 3 processes can be implemented, the limit being set by the absence of efficient phase space generator algorithms for higher multiplicities in PYTHIA. Features such as s-channel resonances are automatically implemented in the process classes. Besides the process library and necessary model files, also an example main program is generated for each set of processes, which can be easily modified to perform the desired analyses.

In order to create a PYTHIA 8 process library with MadGraph 5, first download the MadGraph 5 package from, and untar the package. You can then specify the location of your pythia81xx directory in the file input/mg5_configuration.txt:
pythia8_path = ./pythia81xx
The location can be either relative (to the directory MadGraph5_v_x_x_x/.) or absolute.

For any model that is already implemented in the MadGraph 5 package, you can directly use the model. Start the MadGraph 5 interface bin/mg5, and do:

import model model_name 
generate your_process_in_mg5_syntax 
add process your_next_process_in_mg5_syntax 
output pythia8 [path_to_pythia81xx_directory] 

For examples of MG5 process syntax, please see or type help generate. If you specified the path to the pythia81xx directory in the mg5_configuration file, you do not need to enter it in the output command.

If your preferred model is found on the FeynRules model wiki page,, download the UFO (Universal FeynRules Output) tar file for the model, untar in the models/ directory, and use as above.

If you want to implement a new model which has not yet been implemented, you can do this either using the Mathematica package FeynRules (see or directly edit the UFO model files of the most similar model in the models/ directory.

The resulting output from the output pythia8 command is:

Note that in order for PYTHIA 8 to be able to automatically decay any new particles, it is necessary to specify the branching ratios of the particles in the param_card file, see [Ska04,Alw07] for details.

For further technical details, please see the MadGraph 5 release paper [Alw11] and the semi-internal processes page.

Of course, as with MadGraph 4, MadGraph 5 can also output files of parton-level events according to the LHEF standard, that can be read in and processed further by PYTHIA 8. The advantage is that then the MadGraph 5 phase space generator can be used, which opens up for processes with more than three particles in the final state. The disadvantages are that it is less easy to mix and match with existing PYTHIA processes, and that one needs to regenerate and store large LHEF files for different kinematics cuts or parameter values.

Please cite the MadGraph 5 release paper [Alw11] if you use MadGraph 5 to generate process libraries for PYTHIA 8.