H1jet, a fast program to compute transverse momentum distributions


We present H1jet, a fast code that computes the total cross section and differential distribution in the transverse momentum of a colour singlet. In its current version, the program implements only leading-order \(2\rightarrow 1\) and \(2\rightarrow 2\) processes, but could be extended to higher orders. We discuss the processes implemented in H1jet, give detailed instructions on how to implement new processes, and perform comparisons to existing codes. This tool, mainly designed for theorists, can be fruitfully used to assess deviations of selected new physics models from the Standard Model behaviour, as well as to quickly obtain distributions of relevance for Standard Model phenomenology.

A preprint version of the article is available at ArXiv.


After the discovery of the Higgs boson in 2012 [2, 3], one of the most urgent tasks of the Large Hadron Collider (LHC) is the characterisation of the Higgs sector, in order to shed light on the exact mechanism for electroweak symmetry breaking. In particular, Higgs production data, either in the form of signal strengths [4, 5] or cross section measurements [6, 7], offer powerful constraints on Higgs anomalous couplings.

However, it has been pointed out that inclusive Higgs production through gluon fusion, the one with the largest rate, is not able to discriminate effectively between the Standard Model (SM) and another theory giving the same effective coupling between the gluons and the Higgs. In fact, top quarks running in loops give a dimension-6 effective interaction between the incoming gluons and the Higgs, with exact top-mass effects giving tiny corrections. Therefore, in many theories, the strength of dimension-6 contact gluon-gluon-Higgs interactions can conspire with an anomalous top Higgs Yukawa coupling to give exactly the same cross section for Higgs production as the SM [8,9,10].

There are essentially two ways of solving this problem. One is to put a direct constraint on the top Yukawa coupling by the observation of top quarks in association with the Higgs [11,12,13]. The other is to break the top loop by looking e.g. at Higgs production at large transverse momentum, where the Higgs recoils against a hard jet [8,9,10]. Both are indirect probes of new physics effects. The latter is more difficult experimentally, in that it relies on appreciating small deviations from the SM in the shape of the Higgs transverse momentum distribution, in a region where the phase space closes. It nevertheless can give a direct access to new physics coupling the gluons to the Higgs through loops.

Higgs sector aside, production of colour singlets at high transverse momentum is commonly used as a probe of new physics. A relevant example is the production of monojets, which can recoil either against dark matter, or against a SM particle decaying into invisible particles (see e.g. Refs. [14, 15]).

Theoretical predictions for the transverse momentum distribution of a colour singlet, both in the SM and beyond, can be currently obtained with Monte Carlo programs, such as MadGraph5_aMC@NLO [16] or SusHi [17, 18]. These codes, although general, have the drawback of being quite slow. Also, interference terms between new physics and the SM, which carry information on the strength of new interactions, are difficult to extract from Monte Carlo event generators because they are not positive definite. The aim of this paper is to describe a method to obtain the transverse momentum spectrum of a colour singlet in a second or less, and its concrete implementation in the program H1jet. This program makes it possible to predict the effects of several models in a short amount of time. This in turn opens the way to devising more refined cut-based search strategies only for the models showing the largest deviations with respect to the SM.

More precisely, H1jet predicts the transverse momentum distribution of a colour singlet fully integrated over rapidity, and completely inclusive with respect to all coloured particles, i.e. the recoiling jets. Such an approximation is not too unrealistic, because the higher the transverse momentum, the more the colour singlet is central, and the more its decay products will be likely to pass the detector acceptance cuts.

The program is based on elementary analytic manipulations on the expression for the transverse momentum distribution. These make it possible to write the spectrum as a one dimensional integral, whose integrand is the product of an amplitude squared, which can be provided by ourselves or by the user, and a parton luminosity, which we extract from an external program. The relevant amplitudes can be either hard coded, or computed automatically and embedded in the program via a simple user interface.

H1jet already comes with a number of hard-coded processes and models. The main process is

$$\begin{aligned} pp \rightarrow H + \mathrm {jet} \,, \end{aligned}$$

where the initial state consists of gluons and light quarks, and Higgs production procedes via quark loops. This process can be calculated in H1jet for different physics models including the SM, a CP-odd Higgs, a simplified SUSY model, and composite Higgs models with a single or multiple top-partners. In addition, the \(b\bar{b} \rightarrow H + \mathrm {jet}\) and \(pp \rightarrow Z + \mathrm {jet}\) processes for the SM are implemented. Moreover, H1jet is very flexible and can be easily interfaced to use a custom user-specified process.

The paper is organised as follows. In Sect. 2 we briefly describe the method underlying H1jet. In Sect. 3 we describe in detail how H1jet works in practice. In particular, we show how it can be installed and run, and present the features currently implemented. In Sect. 4 we present a detailed comparison with the existing program SusHi for Higgs production both in the SM and beyond. In Sect. 5 we explain how a user can implement a model of new physics inside H1jet. We choose axion-like-particle (ALP) production, giving rise to a monojet. We then describe how to obtain ALP transverse momentum distributions from the generation of the Feynman rules with FeynRules, to the calculation of the amplitude with FeynCalc and its subsequent interface with H1jet to obtain the ALP transverse momentum spectrum. Last, Sect. 6 presents our conclusions.

The method

Before explaining how the H1jet method works, it is instructive to consider first how to compute the Born cross section for producing a colour singlet X, e.g. a Higgs, of mass \(m_X\). This will also allow us to set the notation for the rest of the paper. We consider the \(2\rightarrow 1\) process \(p_1 p_2 \rightarrow X\), where \(p_1\) and \(p_2\) are the two incoming partons and \(p_X\) is the momentum of the considered colour singlet. From momentum conservation we have

$$\begin{aligned} {\hat{s}} = (p_1+p_2)^2=m_X^2\,. \end{aligned}$$

There can be various partonic subprocesses that contribute to the production of the particle X. Let us denote with \(M_{ij}\) the amplitude for the subprocess \(ij\rightarrow X\) (e.g. \(gg \rightarrow H\)), with \(i,j=g,q_f,{\bar{q}}_{{\bar{f}}}\), where \(f,{\bar{f}}\) denotes quark or antiquark flavours. The Born partonic cross section for each subprocess is

$$\begin{aligned} {\hat{\sigma }}_{ij}=\frac{\pi }{m_X^2} |M_{ij}(m_X^2)|^2 \delta \left( {\hat{s}}-m_X^2\right) \,. \end{aligned}$$

The corresponding hadronic cross section is given by

$$\begin{aligned} \sigma= & {} \frac{\pi }{m_X^2}\sum _{i,j} \int _0^1 dx_1\, f_{i/p}(x_1,\mu _F)\int _0^1 dx_2 \, f_{i/p}(x_1,\mu _F) \nonumber \\&\times \sum _{i,j} |M_{ij}(m_X^2)|^2 \delta \left( x_1 x_2 s-m_X^2\right) \nonumber \\= & {} \frac{\pi }{m_X^4} \sum _{i,j} |M_{ij}(m_X^2)|^2 \mathscr {L}_{ij}\left( \frac{m_X^2}{s},\mu _F\right) \,, \end{aligned}$$

where \(\mathscr {L}_{ij}\left( \tau ,\mu _F\right) \) is the partonic luminosity

$$\begin{aligned} \mathscr {L}_{ij}\left( \tau ,\mu _F\right) = \tau \int _\tau ^1 \frac{dx}{x}\, f_{i/p}(x,\mu _F)\, f_{j/p}\left( \frac{\tau }{x},\mu _F\right) \,. \end{aligned}$$

If we are able to obtain the luminosity \(\mathscr {L}_{ij}\left( m_X^2/s,\mu _F\right) \), we are then able to obtain a numerical prediction for the cross section through a simple multiplication. There are indeed numerical tools that are able to compute, tabulate and interpolate luminosities with incredible efficiency, for instance the program HOPPET [19]. Through an interface with HOPPET, we are able to compute the Born cross section given the amplitudes \(M_{ij}\). This procedure is the same adopted in the program JetVHeto [20], that computes cross sections for colour singlets with a veto on additional jets.

A similar strategy can be devised to obtain a fast calculation of distributions in the transverse momentum of particle X. A non-zero transverse momentum for X is obtained via a generic \(2\rightarrow 2\) partonic process \(p_1 p_2 \rightarrow p_3 X\), where \(p_1\), \(p_2\), and \(p_3\) are massless partons, and \(p_X\) is the momentum of the colour singlet X. We wish to compute \(d\sigma /dp_T\), where \(p_T\) is the transverse momentum of \(p_X\) with respect to the beam axis. At Born level only, \(p_T\) is also the transverse momentum of the recoiling jet originated by \(p_3\). The partonic subprocesses contributing to \(d\sigma /dp_T\) are \(gg\rightarrow g X\), \(q_f {\bar{q}}_{{\bar{f}}} \rightarrow g X\), \(q_f g\rightarrow q_f X\), \(gq_f \rightarrow q_fX\). The corresponding amplitudes \(M_{ij}\) (with \(i,j=g,q_f,{\bar{q}}_{{\bar{f}}}\)) are functions of the three Mandelstam invariants

$$\begin{aligned} \begin{aligned} {\hat{s}}&= (p_1+p_2)^2 = (p_3+p_X)^2 \,,\\ {\hat{t}}&= (p_1-p_3)^2 = (p_2-p_X)^2 \,,\\ {\hat{u}}&= (p_2-p_3)^2 = (p_1-p_X)^2 \,. \end{aligned} \end{aligned}$$

Without loss of generality, in the centre-of-mass frame of the partonic collision, we can parameterise momenta as follows

$$\begin{aligned} \begin{aligned} p_1&= \frac{\sqrt{{\hat{s}}}}{2}(1,0,0,1) \,,\\ p_2&= \frac{\sqrt{{\hat{s}}}}{2}(1,0,0,-1) \,,\\ p_3&= p_T(\cosh \eta ,1,0,\sinh \eta ) \,,\\ p_X&= \left( \sqrt{m_X^2+p^2_T\cosh ^2\eta },-p_T,0,-p_T \sinh \eta \right) \,, \end{aligned} \end{aligned}$$

where \(\eta \) is the rapidity of parton \(p_3\) in the centre-of-mass frame. The partonic \(p_T\) spectrum for the process initiated by partons ij is given by

$$\begin{aligned} \frac{d{\hat{\sigma }}_{ij}}{dp_T}= & {} \frac{p_T}{16\pi }\int d\eta \frac{|M_{ij}({\hat{s}},{\hat{t}},{\hat{u}})|^2}{E_X {\hat{s}}} \nonumber \\&\times \delta \left( \sqrt{{\hat{s}}} - p_T\cosh \eta -\sqrt{m_X^2+p^2_T\cosh ^2\eta }\right) \,, \end{aligned}$$

where \(E_X=\sqrt{m_X^2+p^2_T\cosh ^2\eta }\) is the energy of the colour-singlet particle \(p_X\). The above equation selects two values of \(\eta \), as follows

$$\begin{aligned} \eta = \ln \left( {\hat{x}}_M \pm \sqrt{{\hat{x}}_M^2-1}\right) \,,\qquad {\hat{x}}_M\equiv \frac{{\hat{s}}-m_X^2}{2 p_T \sqrt{{\hat{s}}} }\,. \end{aligned}$$

The corresponding hadronic cross section reads

$$\begin{aligned} \frac{d\sigma }{dp_T}= & {} \sum _{i,j} \int _0^1 dx_1\, f_{i/p}(x_1,\mu _F)\int _0^1 dx_2 \, f_{i/p}(x_1,\mu _F) \nonumber \\&\times \left[ \frac{d{\hat{\sigma }}_{ij}}{dp_T} \, \Theta \left( {\hat{s}}-p_T-\sqrt{m_X^2+p^2_T}\right) \right] _{{\hat{s}}=x_1x_2 s} \,.\nonumber \\ \end{aligned}$$

Since Eq. (9) gives two monotonic functions of \({\hat{s}}\) for \(s>p_T+\sqrt{m_X^2+p^2_T}\), varying \({\hat{s}}\) in the allowed range spans all possible values of \(\eta \) in the range \(-\eta _M<\eta <\eta _M\) with

$$\begin{aligned} \eta _M \equiv \ln \left( x_M + \sqrt{x_M^2-1} \right) \,, \quad x_M\equiv \frac{s-m_X^2}{2 p_T \sqrt{s}} \,. \end{aligned}$$

This allows us to perform the \(\eta \) integration last, and obtain, after some manipulations,

$$\begin{aligned} \frac{d\sigma }{dp_T}= & {} \frac{p_T}{8 \pi } \int _{-\eta _M}^{\eta _M}\!d\eta \, \sum _{i,j} \left[ \frac{M^2_{ij}\left( {\hat{s}},{\hat{t}}=-p_T e^{-\eta }\sqrt{{\hat{s}}} ,{\hat{u}} =- p_T e^{\eta }\sqrt{{\hat{s}}}\right) }{E_X {\hat{s}}^{3/2}} \right. \nonumber \\&\times \left. \mathscr {L}_{ij}\left( \frac{{\hat{s}}}{s},\mu _F\right) \right] _{{\hat{s}}=\left( p_T\cosh \eta +\sqrt{m_X^2+p^2_T\cosh ^2\eta }\right) ^2}\,,\nonumber \\ \end{aligned}$$

where again \(\mathscr {L}_{ij}\) is the partonic luminosity for the ij incoming channel as defined in Eq. (5). If we are able to obtain the partonic luminosity \(\mathscr {L}_{ij}\), say, from HOPPET, we can obtain the transverse momentum spectrum with a one-dimensional integration, which can be performed extremely quickly with a Gaussian numerical integrator.

Summarising, by interfacing HOPPET with a code that provides amplitudes for \(2\rightarrow 1\) and \(2\rightarrow 2\) partonic subprocesses producing a colour singlet X, we are able to perform fast computations of total cross sections and transverse momentum spectra for X. In the following sections we describe our implementation of the method for Born processes. Note that, if one were able to perform the analytic integration over the phase space of final-state partons, the method can also be applied to higher-order cross sections and differential spectra.

User’s manual

This section describes the most important technical details of H1jet, including its installation and usage.


The source code of H1jet can be obtained from Ref.  [1]. The source code consists of a main directory H1jet with the following subdirectories:

bin ::

contains the executable program h1jet after compilation, as well as the Python 3 helper scripts PlotH1jet.py and DressUserAmpCode.py.

src ::

source files.

The README.md file contains information on installation and usage.

In the main directory, the user needs to run the configure script:


It will attempt to find a Fortran compiler (gfortran or ifort), as well as the dependencies on the user’s machine. A specific compiler and/or compiler flags can be selected with the options \(\texttt {./configure FC=<compiler>}\) and \(\texttt {./configure FFLAGS=<flags>}\). H1jet has a number of external dependencies which it must be linked to:

  • LHAPDF [21]: Provides the PDF sets for H1jet.

  • HOPPET [19]: For QCD DGLAP evolution of PDFs and numerical integrations.

  • CHAPLIN [22]: For complex harmonic polylogarithms used to represent scalar integrals in loop-induced processes.

For the CHAPLIN library, it may be necessary to explicitly state the path to the library files with:


To compile with a custom user interface:


See Sect. 5 below for the implementation of custom user-specified amplitudes.

To install in a specific location:


The default installation path is the main H1jet-directory.

The configure script will generate the Makefile.

To compile H1jet with the generated Makefile, run:


This command takes the following options: make clean will delete all module and object files; make distclean will delete all module and object files as well as the executable h1jet.

After compilation, the bin-directory can then be added to the user’s PATH environment variable. Alternatively, if the user has specified an installation directory with the --prefix option, the executable can be installed with:


The executable h1jet can then be found in the bin-directory at the path specified by --prefix.


After compilation, H1jet can be run from the bin-directory with:


H1jet will print out a brief summary of the settings and parameters used, as well as the Born cross section \(\sigma _0\), followed by a five-column table. The first three entries of each row specifies the lower end, the midpoint, and the upper end of each \(p_T\) bin. The fourth entry is \(d\sigma /dp_T\) evaluated at the midpoint of the corresponding \(p_T\) bin. The fifth entry is the integrated cross section \(\sigma (p_T)\) with a lower bound in \(p_T\) corresponding to the lower end of the given \(p_T\) bin. We remark that the fundamental object we compute is \(d\sigma /dp_T\). The integrated cross section \(\sigma (p_T)\) is obtained by summing \(d\sigma /dp_T\) over the appropriate range and multiplying by the bin width. Therefore, this procedure gives a reliable estimate of \(\sigma (p_T)\) only if the binning is fine enough.

The following standard UNIX options are available:

\(\texttt {-h, -{}-help}\):

Display the help message along with all possible options.

\(\texttt {-v, -{}-version}\):

Display the version of the installed H1jet.

H1jet will display the requested information and then terminate.

The output can be directed to a file with the option:

\(\texttt {-o, -{}-out <file>}\):

Direct the output to \(\texttt {<file>}\). Default: standard output.

The physics process can be selected with:
\(\texttt {-{}-proc <arg>}\):

Specify the process. Arguments:


\(pp/p\bar{p} \rightarrow H + \text {jet}\) (default).


\(b\bar{b} \rightarrow H + \text {jet}\).


\(pp/p\bar{p} \rightarrow Z + \text {jet}\).


User specified process. See Sect. 5 below for details on the implementation.

Depending on the process selected, there exists different relevant options.

General options

The options listed here apply to all processes.

\(\texttt {-{}-collider <arg>}\):

Specify the collider type.

Arguments: pp (default), ppbar.

\(\texttt {-{}-roots <value>}\):

Centre-of-mass energy, \(\sqrt{s}\) [GeV]. Default: 13000 GeV.

\(\texttt {-{}-pdf\_name <arg>}\):

Specify the PDF set name from

LHAPDF. The specified PDF set must be available in the local installation of LHAPDF.

Default: MSTW2008nlo68cl.

\(\texttt {-{}-pdf\_mem <value>}\):

Integer value specifying the PDF member.

Default: 0.

\(\texttt {-{}-scale\_strategy <arg>}\):

Set the scale strategy, i.e. the dynamic \(\mu = \mu _R = \mu _F\) value.



\(\mu = M\).


\(\mu = p_T + \sqrt{p_T^2 + M^2}\) (default).


\(\mu = \sqrt{p_T^2 + M^2}\).

The mass M is given by option --mH for processes H and bbH, option --mZ for process Z, and option --mass for process user.
\(\texttt {-{}-xmur <value>}\):

Additional factor \(x_R\) for the renormalisation scale, i.e. \(\mu _R=x_R\,\mu \), where \(\mu \) is determined by the

choice from --scale_strategy.

Default: 0.5.

\(\texttt {-{}-xmuf <value>}\):

Additional factor \(x_F\) for the factorisation scale, i.e. \(\mu _F=x_F\,\mu \),

where \(\mu \) is determined by the

choice from --scale_strategy.

Default: 0.5.

\(\texttt {-{}-nbins <value>}\):

Number of histogram bins in the output of the transverse momentum distribution.

Default: 400.

\(\texttt {-{}-log}\):

Enables logarithmic x-axis of the histogram, i.e. logarithmic bins in \(p_{T}\). The option --ptmin must be set to a non-zero value in order to use this option, otherwise the program will quit with an error.

\(\texttt {-{}-ptmin <value>}\):

Minimum \(p_{T}\) value [GeV].

Default: 0 GeV.

\(\texttt {-{}-ptmax <value>}\):

Maximum \(p_{T}\) value [GeV].

Default: 4000 GeV.

\(\texttt {-{}-accuracy <value>}\):

The desired integration accuracy.

Default: 0.001.

Relevant options for process: H

If process H is selected, i.e. \( pp/p\bar{p} \rightarrow H + \text {jet}\), then the following options are relevant:

\(\texttt {-{}-mH <value>}\):

Higgs mass, \(m_H\) [GeV].

Default: 125 GeV.

\(\texttt {-{}-mW <value>}\):

W boson mass, \(m_W\) [GeV].

Default: 80.385 GeV.

\(\texttt {-{}-mZ <value>}\):

Z boson mass, \(m_Z\) [GeV].

Default: 91.1876 GeV.

\(\texttt {-{}-mt <value>}\):

Top quark mass, \(m_t\) [GeV].

Default: 173.5 GeV.

\(\texttt {-{}-mb <value>}\):

On-shell bottom quark mass, \(m_b^{\text {OS}}\) [GeV]. Default: 4.65 GeV.

\(\texttt {-{}-yt <value>}\):

Top Yukawa factor, \(\kappa _t\) [GeV].

Default: 1.

\(\texttt {-{}-yb <value>}\):

Bottom Yukawa factor, \(\kappa _b\) [GeV].

Default: 1 (0 for CP-odd Higgs).

\(\texttt {-{}-GF <value>}\):

Fermi coupling constant, \(G_F\) [\(\hbox {GeV}^{-2}\)].

Default: \(0.116638 \times 10^{-4}\) \(\hbox {GeV}^{-2}\).

Note that the Yukawa couplings are given by \(y_q=\kappa _q (\sqrt{2} m_q / v)\), where \(\kappa _q\) are the dimensionless factors specified by the options --yt and --yb above, and \(v/\sqrt{2}\) is the vacuum expectation value of the Higgs field.

Note also that H1jet uses the \(G_{\mu }\) scheme for the all electroweak parameters [23]. Hence, the Higgs vacuum expectation value is given by \(v = 1 / \sqrt{\sqrt{2} G_F}\), and the Weinberg angle is \(\sin ^2 \theta _W = 1 - m_W^2 / m_Z^2\).

To consider a CP-odd Higgs instead, it is necessary to select the following option:

\(\texttt {-{}-cpodd}\):

Toggle for calculation of CP-odd Higgs.

The interaction between the CP-odd Higgs H and a SM quark q is:

$$\begin{aligned} \mathscr {L} \supset i {\tilde{\kappa }}_q \frac{m_q}{v} \bar{q} \gamma _5 q H\,, \end{aligned}$$

where the implementation in H1jet uses by default \({\tilde{\kappa }}_t = 1\) and \({\tilde{\kappa }}_b = 0\). Both parameters can be changed with the options --yt and --yb.

Here, both CP-even and CP-odd Higgs production are loop-induced processes. The amplitudes for \(2\rightarrow 1\) processes are taken from Ref.  [24]. For CP-even Higgs production in \(2\rightarrow 2\), the amplitudes are taken from Ref.  [25], and their interface is adapted from HERWIG 6 [26]. We have taken the CP-odd \(2\rightarrow 2\) amplitudes from Ref.  [9].

Top-partner. H1jet allows the calculation of Higgs production via loops of top partners in addition to top loops. To include a top-partner T in the quark loops, it is necessary to set the top-partner mass \(m_T\) to a non-zero value by using the --mtp option.

The SM top Yukawa factor can be modified by the mixing angle,

$$\begin{aligned} \kappa _t \rightarrow \kappa _t \cos ^2\theta _T \,, \end{aligned}$$

where \(\kappa _t\) is the Yukawa factor set by option --yt.

The top-partner Yukawa factor will likewise be modified

$$\begin{aligned} \kappa _T \rightarrow \kappa _T \sin ^2\theta _T \,. \end{aligned}$$

with \(\kappa _T\) set by --ytp.

The top-partner specific options are:

\(\texttt {-{}-mtp <value>}\):

Top-partner mass, \(m_{T}\) [GeV].

Default: 0 GeV.

\(\texttt {-{}-ytp <value>}\):

Top-partner Yukawa factor, \(\kappa _T\).

Default: 1.

\(\texttt {-{}-sth2 <value>}\):

Top-partner mixing angle, \(\sin ^2 \theta _T\).

Default: 0.

The above is for a simplified composite Higgs model, where the compositeness scale f is set to infinity. The top-partner can also be considered in the explicit composite Higgs models of Ref. [27], all with finite f. Four different models are implemented, \(\mathbf{M1} _\mathbf{5 }\), \(\mathbf{M1} _\mathbf{14 }\), \(\mathbf{M4} _\mathbf{5 }\), and \(\mathbf{M4} _\mathbf{14 }\), which modify the Yukawa coupling factors in the following way:

$$\begin{aligned}&\begin{aligned}&\textstyle \mathbf{M1} _\mathbf{5 }: \\&\textstyle \kappa _b \rightarrow \kappa _b c_\varepsilon \\&\textstyle \kappa _t \rightarrow \kappa _t c_\varepsilon \cos ^2 \theta _L \\&\textstyle \kappa _T \rightarrow \kappa _T c_\varepsilon \sin ^2 \theta _L \\&\textstyle {\tilde{\kappa }}_b = {\tilde{\kappa }}_t = {\tilde{\kappa }}_T = 0 \end{aligned}\\&\begin{aligned}&\textstyle \mathbf{M1} _\mathbf{14 }: \\&\textstyle \kappa _b \rightarrow \kappa _b \frac{2 c_\varepsilon ^2 - 1}{c_\varepsilon } \\&\textstyle \kappa _t \rightarrow \kappa _t \frac{2 c_\varepsilon ^2 - 1}{c_\varepsilon } \cos ^2\theta _L \\&\textstyle \kappa _T \rightarrow \kappa _T \frac{2 c_\varepsilon ^2 - 1}{c_\varepsilon } \sin ^2\theta _L \\&\textstyle {\tilde{\kappa }}_b = {\tilde{\kappa }}_t = {\tilde{\kappa }}_T = 0 \end{aligned}\\&\begin{aligned}&\textstyle \mathbf{M4} _\mathbf{5 }: \\&\textstyle \kappa _b \rightarrow \kappa _b c_\varepsilon \\&\textstyle \kappa _t \rightarrow \kappa _t c_\varepsilon \left( \cos ^2\theta _R - \frac{s_\varepsilon ^2}{1 + c_\varepsilon ^2} \left( \cos ^2\theta _L - \cos ^2\theta _R \right) \right) \\&\textstyle \kappa _T \rightarrow \kappa _T c_\varepsilon \left( \sin ^2\theta _R - \frac{s_\varepsilon ^2}{1 + c_\varepsilon ^2} \left( \sin ^2\theta _L - \sin ^2\theta _R \right) \right) \\&\textstyle {\tilde{\kappa }}_b = 0 \\&\textstyle {\tilde{\kappa }}_t = \frac{4 c_\varepsilon s_\varepsilon }{\sqrt{2(1 + c_\varepsilon ^2)}} \text {Im}(c_1) \sin \theta _R \cos \theta _R \\&\textstyle {\tilde{\kappa }}_T = -{\tilde{\kappa }}_t \end{aligned}\\&\begin{aligned}&\textstyle \mathbf{M4} _\mathbf{14 }: \\&\textstyle \kappa _b \rightarrow \kappa _b \frac{2 c_\varepsilon ^2 - 1}{c_\varepsilon } \\&\textstyle \kappa _t \rightarrow \kappa _t \left( \frac{(2 c_\varepsilon ^2 - 1)}{c_\varepsilon } \cos ^2\theta _R - \frac{s_\varepsilon ^2 c_\varepsilon (8 c_\varepsilon ^2 - 3)}{1 - 3 c_\varepsilon ^2 + 4 c_\varepsilon ^4} \left( \cos ^2\theta _L - \cos ^2\theta _R \right) \right) \\&\textstyle \kappa _T \rightarrow \kappa _T \left( \frac{(2 c_\varepsilon ^2 - 1)}{c_\varepsilon } \sin ^2\theta _R - \frac{s_\varepsilon ^2 c_\varepsilon (8 c_\varepsilon ^2 - 3)}{1 - 3 c_\varepsilon ^2 + 4 c_\varepsilon ^4} \left( \sin ^2\theta _L - \sin ^2\theta _R \right) \right) \\&\textstyle \tilde{\kappa }_b = 0 \\&\textstyle \tilde{\kappa }_t = \frac{4 s_\varepsilon (1 - 2 s_\varepsilon ^2)}{\sqrt{2(1 - 3 c_\varepsilon ^2 + 4 c_\varepsilon ^4)}} \text {Im}(c_1) \sin \theta _R \cos \theta _R \\&\textstyle \tilde{\kappa }_T = -\tilde{\kappa }_t \end{aligned} \end{aligned}$$

where the \(\tilde{\kappa }\)’s are the CP-odd couplings, and,

$$\begin{aligned} s_\varepsilon = \frac{v}{f} \,, \quad \text { and } \quad c_\varepsilon = \sqrt{1 - s_\varepsilon ^2} \,. \end{aligned}$$

For \(\mathbf{M1} _\mathbf{5 }\) and \(\mathbf{M1} _\mathbf{14 }\), the option --sth2 sets the mixing angle \(\theta _L\), while for \(\mathbf{M4} _\mathbf{5 }\) and \(\mathbf{M4} _\mathbf{14 }\), the same option sets the angle \(\theta _R\). The reason for this is that we want to reproduce the \(f\rightarrow \infty \) limit, where \(\theta _T=\theta _L,\theta _R\) depending on the chosen model. When needed, the angles \(\theta _L\) and \(\theta _R\) are derived one from the other by using the relation

$$\begin{aligned} m_t^2 \tan ^2\theta _L = m_T^2 \tan ^2\theta _R \,. \end{aligned}$$

The composite Higgs top-partner model specific options are:

\(\texttt {-{}-model <arg>}\):

Specify the top-partner model.



\(\mathbf{M1} _\mathbf{5 }\), with a light top-partner

transforming as a \(\mathbf{1} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM top-bottom doublet embedded in a \(\mathbf{5} \) of \(\text {SO}(5)\) (default).


\(\mathbf{M1} _\mathbf{14 }\), with a light top-partner

transforming as a \(\mathbf{1} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM top-bottom doublet embedded in a \(\mathbf{14} \) of \(\text {SO}(5)\).


\(\mathbf{M4} _\mathbf{5 }\), with a light top-partner

transforming as a \(\mathbf{4} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM top-bottom doublet embedded in a \(\mathbf{5} \) of \(\text {SO}(5)\).


\(\mathbf{M4} _\mathbf{5 }\), with a light top-partner

transforming as a \(\mathbf{4} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM top-bottom doublet embedded in a \(\mathbf{14} \) of \(\text {SO}(5)\).

\(\texttt {-{}-imc1 <value>}\):

Imaginary part of the \(c_1\) coefficient, \(\text {Im}(c_1)\).

Default: 0.

\(\texttt {-f, -{}-fscale <value>}\):

Compositeness scale, f [GeV].

If the option is not set, all couplings will be automatically computed in the limit \(f\rightarrow \infty \). If the option is set but no value is provided, the program will return a floating point exception.

Multiple top-partners models. H1jet makes it possible to include multiple top-partners in the particle loops. To do that, it will be necessary to specify an input file with the masses and Yukawa coupling factors for each particle running in the loop, including SM quarks. This can be done with the following option:

\(\texttt {-i, -{}-in <file>}\):

Include input file with top-partner masses and Yukawas. See the file SM.dat for the SM case, without any top partners.

The first line of the input file should specify the number of particles running in the loops, e.g.:


This should be followed by nmax number of lines – one for each particle loop – in the format of four numbers specifying the mass, \(\kappa \), \(\tilde{\kappa }\), and loop approximation (see later), in that order. For example, for a SM top quark:


with mass 173.5 GeV, \(\kappa = 1\), \(\tilde{\kappa } = 0\), and the loop approximation set to 1.

The dimensionless Yukawa coupling factors \(\kappa _q\) and \(\tilde{\kappa }_q\) are respectively the CP-even and CP-odd couplings for a quark q, with the following Lagrangian:

$$\begin{aligned} \mathscr {L} \supset -m_q \bar{q}q - \kappa _q \frac{m_q}{v} \bar{q}q H + i \tilde{\kappa }_q \frac{m_q}{v} \bar{q} \gamma _5 q H \,, \end{aligned}$$

where \(m_q\) is the mass of the quark.

The integer value specifying the loop approximations can take the following values:

  1. 0

    Small mass limit for fermions.

  2. 1

    Full mass effects for fermions.

  3. 2

    Large mass limit for fermions.

  4. 3

    Full mass effects for scalars.

  5. 4

    Large mass limit for scalars.

See Sect. 3.2.6 for more information on the loop approximations. Note that, for implemented processes, using an input file is the only way to change the approximation in which loops are computed.

SUSY. H1jet includes the simplified SUSY model with two stops \(\tilde{t}_1\) and \(\tilde{t}_2\) considered in Refs. [28, 29]. To include the SUSY stops \(\tilde{t}_1\) and \(\tilde{t}_2\) in the quark loops, it will be necessary to set the first stop mass \(m_{\tilde{t}_1}\) to a non-zero value by using the --mst option. The second stop mass is then given by

$$\begin{aligned} m_{\tilde{t}_2} = \sqrt{m_{\tilde{t}_1}^2 + (\Delta m)^2} \,, \end{aligned}$$

where \(\Delta m\) is set with the --delta option.

The stop Yukawa coupling factors will be given by:

$$\begin{aligned}&\kappa _{\tilde{t}_1} = \frac{m_t^2}{m_{\tilde{t}_1}^2} \left[ \alpha _1 \cos ^2 \theta _{\tilde{t}} + \alpha _2 \sin ^2 \theta _{\tilde{t}} + 2 - \frac{(\Delta m)^2}{2 m_t^2} \sin ^2\left( 2 \theta _{\tilde{t}} \right) \right] \,,\nonumber \\ \end{aligned}$$
$$\begin{aligned}&\kappa _{\tilde{t}_2} = \frac{m_t^2}{m_{\tilde{t}_2}^2} \left[ \alpha _1 \sin ^2 \theta _{\tilde{t}} + \alpha _2 \cos ^2 \theta _{\tilde{t}} + 2 + \frac{(\Delta m)^2}{2 m_t^2} \sin ^2\left( 2 \theta _{\tilde{t}} \right) \right] \,,\nonumber \\ \end{aligned}$$


$$\begin{aligned} \alpha _1= & {} \frac{m_Z^2}{m_t^2} \cos \left( 2 \beta \right) \left[ 1 - \frac{4}{3} \sin ^2\theta _W \right] \,, \end{aligned}$$
$$\begin{aligned} \alpha _2= & {} \frac{4}{3} \frac{m_Z^2}{m_t^2} \cos \left( 2 \beta \right) \sin ^2\theta _W \,. \end{aligned}$$

Note that \(m_t\), \(m_Z\), and \(\sin ^2\theta _W\) can be set with the --mt, --mZ, and --sinwsq options respectively, while \(\sin ^2 \theta _{\tilde{t}}\) and \(\tan \beta \) are SUSY specific options and can be set with the --sth2 and --tbeta options.

All of the SUSY specific options are:

\(\texttt {-{}-mst <value>}\):

SUSY stop mass, \(m_{\tilde{t_1}}\) [GeV].

Default: 0 GeV.

\(\texttt {-{}-delta <value>}\):

SUSY stop mass separation, \(\Delta m\) [GeV].

Default: 0 GeV.

\(\texttt {-{}-sth2 <value>}\):

Stop mixing angle, \(\sin ^2 \theta _{\tilde{t}}\).

Default: 0.

\(\texttt {-{}-tbeta <value>}\):

Ratio of VEVs of the two SUSY Higgs fields, \(\tan \beta \).

Default: 0.

Note that the top partner mass \(m_{T}\) and SUSY stop mass \(m_{\tilde{t}_1}\) can not both be set non-zero at the same time via command-line options. However, if one uses an input file, one can explicitly specify masses, couplings and loop approximations for an arbitrary number of fermions and scalars. This would also allow a user to implement a specific SUSY model with more supersymmetric partners, each with the appropriate coupling.

Relevant options for process: bbH

If process bbH is selected, i.e. \( b\bar{b} \rightarrow H + \text {jet} \), then the following options are relevant:

\(\texttt {-{}-mH <value>}\):

Higgs mass, \(m_H\) [GeV].

Default: 125 GeV.

\(\texttt {-{}-GF <value>}\):

Fermi coupling constant, \(G_F\) [\(\hbox {GeV}^{-2}\)].

Default: \(0.116638 \times 10^{-4}\) \(\hbox {GeV}^{-2}\).

\(\texttt {-{}-mbmb <value>}\):

\(\overline{\text {MS}}\) bottom quark mass, \(m_b^{\overline{\text {MS}}}\) [GeV].

Default: 4.18 GeV.

Relevant options for process: Z

If process Z is selected, i.e. \( pp/p\bar{p} \rightarrow Z + \text {jet} \), then the following options are relevant:

\(\texttt {--mZ <value>}\):

Z boson mass, \(m_Z\) [GeV].

Default: 91.1876 GeV.

\(\texttt {--mW <value>}\):

W boson mass, \(m_W\) [GeV].

Default: 80.385 GeV.

\(\texttt {--GF <value>}\):

Fermi coupling constant, \(G_F\) [\(\hbox {GeV}^{-2}\)]. Default: \(0.116638 \times 10^{-4}\) \(\hbox {GeV}^{-2}\).

Relevant options for process: user

If process user is selected, i.e. a custom user-specified process, any of the above physics options may be relevant if they are used in the custom amplitude code. The code will have to be inspected to determine this. The only built-in process-relevant option is:

\(\texttt {-M, -{}-mass <value>}\):

Relevant mass in the user specified process, M [GeV]. Used in the scale choice and in the setup of kinematics.

Default: 0 GeV.

Additional options may be added depending on the custom process/amplitude. See Sect. 5 below for more details on the implementation of a custom process.

Loop approximations

Small and large mass limits can be used as approximations for the quarks in the loop calculations. This requires some knowledge of the meaning of the approximations, hence this needs to be set by the user at compile time.

In the file input.f90 located in the src-directory, the subroutine reset_iloop_array can be found. This subroutine can be used by the user to set the iloop_array, which is an array specifying the approximation used for each loop particle. The approximations that can be used are:

\(\texttt {iloop\_sm\_fermion}\):

Small mass limit for fermions.

\(\texttt {iloop\_fm\_fermion}\):

Full mass effects for fermions.

\(\texttt {iloop\_lm\_fermion}\):

Large mass limit for fermions.

\(\texttt {iloop\_fm\_scalar}\):

Full mass effects for scalars.

\(\texttt {iloop\_lm\_scalar}\):

Large mass limit for scalars.

The size of the array must match the number of particles appearing in the loops, which should be checked by the user. Below is an example Fortran code snippet for the reset_iloop_array subroutine, which sets the loop approximations for an effective theory with SM top and bottom quarks, and one infinitely heavy top-partner:



The helper script PlotH1jet.py facilitates easy and quick plotting of the output from H1jet.

The script requires Python 3 installed in order to run.

The user needs to simply pipe the output of H1jet to the script:


Alternatively, the plotting script can run on an output file from H1jet:


A resulting example plot with default settings in H1jet is shown in Fig. 1.

A comparison between the various built-in models is shown in Fig. 2. Default SM parameters has been used with \(m_{\tilde{t}_1} = 600\) GeV, \(\Delta m = 200\) GeV, \(\tan \beta = 5\), \(m_T = 1.7\) TeV, \(\sin ^2\theta _{\tilde{t}} = \sin ^2\theta _{T} = 0.1\), and \(f = 900\) GeV, and considering the \(\mathbf{M4} _\mathbf{5 }\) model as the explicit top-partner model.

Fig. 1

The \(p_{T}\) distribution for the SM process \(pp \rightarrow H + \text {jet}\) from H1jet with default settings

Fig. 2

Comparison between the CP-even Higgs \(p_{T}\) distributions for various built-in models


The various processes implemented in H1jet have been compared to those of SusHi [17, 18], and have all been found to be in agreement. The relative ratio between the H1jet result and the SusHi result for the \(p_T\) distribution for the CP-odd Higgs are shown in Fig. 3, and is found to be in agreement within the Monte Carlo error of SusHi for a large range of \(p_T\) values. Overall the agreement with SusHi is within \(3 \times 10^{-4}\). Note that the largest discrepancies were observed in the low \(p_T\) region. To validate the H1jet results we have compared them to the approximate expression valid at low \(p_T\)

$$\begin{aligned} \frac{d \sigma }{d p_T} \xrightarrow {p_T \, \rightarrow \, 0} \sigma _0 \left[ 4 \, C_A \frac{\alpha _s}{\pi } \frac{1}{p_T} \left( \ln \frac{m_H}{p_T} + \mathscr {O} (1)\right) \right] \,, \end{aligned}$$

where \(\sigma _0\) is the total Born cross section for \(gg \rightarrow H\). In Fig. 4, we show \(\frac{p_T}{\sigma _0} \left( \frac{\mathrm {d} \sigma }{\mathrm {d} p_T} \right) \) with the first term of Eq. (24) subtracted, as a function of \(\ln \frac{p_T}{m_H}\). For \(p_T \rightarrow 0\) this goes nicely towards a constant as expected.

Fig. 3

The relative difference in permille between the H1jet result and that of SusHi for the \(p_T\) distribution for a CP-odd Higgs. The grey band indicates the Monte Carlo error of SusHi

Fig. 4

The CP-odd distribution \(\frac{p_T}{\sigma _0} \left( \frac{\mathrm {d} \sigma }{\mathrm {d} p_T} \right) \) with the first term of the \(p_T\) resummation subtracted, as a function of \(\ln \frac{p_T}{m_H}\). For low \(p_T\) values it convergences to a constant value

The relative ratio between the H1jet and SusHi results for the SUSY are shown in Fig. 5 and is within \(2 \times 10^{-4}\). Again the low \(p_T\) behaviour can be checked by comparing to the resummed expression in Fig. 6.

Fig. 5

The relative difference in permille between the H1jet result and that of SusHi for the \(p_T\) distribution in SUSY. The grey band indicates the Monte Carlo error of SusHi

Fig. 6

The SUSY distribution \(\frac{p_T}{\sigma _0} \left( \frac{\mathrm {d} \sigma }{\mathrm {d} p_T} \right) \) with the first term of the \(p_T\) resummation subtracted, as a function of \(\ln \frac{p_T}{m_H}\). For low \(p_T\) values it convergences to a constant value

Note that our numerical accuracy crucially depends not only on the accuracy of the numerical integration, but of that of the auxiliary programs used to compute the PDF evolution (HOPPET) and the scalar integrals (CHAPLIN). We have modified various internal parameters of the two libraries, and we obtained differences that are less than permille level. So, a conservative estimate of the numerical uncertainty of H1jet is \(1\times 10^{-3}\).

Adding new processes to H1jet

H1jet can be interfaced to use the squared matrix element evaluated from a custom Fortran code. The implementation may be most easily explained with a specific example. This section should be read very carefully before attempting to use the interface.

Example: axion-like-particle (ALP) effective theory

We will present here a specific example of adding to H1jet the production of a light axion-like-particle (ALP), a, along with a jet. For simplicity, we only consider the gluon-fusion channel,

$$\begin{aligned} g g \rightarrow g a \,. \end{aligned}$$

This is a tree-level process due to an effective ALP-gluon coupling,

$$\begin{aligned} \delta \mathscr {L}_a \supset -c_{\tilde{G}}\frac{a}{f_a} G_{\mu \nu }^{a} \tilde{G}^{a \mu \nu } \,, \end{aligned}$$

where \(G_{\mu \nu }^{a}\) is the gluon field strength tensor and \(\tilde{G}^{a}_{ \mu \nu }=(1/2)\epsilon _{\mu \nu \rho \sigma } G^{a\rho \sigma } \) its dual. The model and the FeynRules [30] model files are described and provided in Ref. [31]. We use FeynCalc [32,33,34] to evaluate the amplitude from the model, so we have to convert the FeynRules model to a FeynArts [35] model in Mathematica:


The resulting FeynArts model files are written to a new directory ALP_linear_FA, which needs to be moved to the FeynArts/Models directory. Note that in the FeynArts model, the ALP field is called S[4] and the gluon fields are called V[4].

In a new Mathematica session, we load FeynCalc with FeynArts:


The FeynArts/Models directory can be located with:


First, we patch the ALP_linear_FA model with:


This ensures that the model files works with FeynCalc.

Then we create the tree-level \(2 \rightarrow 2\) topologies and insert the relevant fields for our process:


It is possible to draw the Feynman diagrams for the process as a check:


We then set up the amplitude:


While not strictly necessary, it is recommended to enable the SMP option. Any additional substitutions in the amplitude can be specified with the FinalSubstitutions option.

We then set up the kinematics:


We introduce here a parameter mA for the ALP mass \(m_a\).

We then square the amplitude:


Setting the SUNNToCACF option in SUNSimplify[] to False is not necessary, nor is it necessary to fix SUNN to 3. This can be handled by the dressing script and H1jet.

Finally, we write the amplitude as Fortran code to a file:


Note here that we specify the gluon-gluon channel with the gg = ampsquared input to the function. This is required for the subsequent dressing script to work properly. It is important to specify the 2-particle initial state by using combinations of g, u, d, c, s, b, ubar, dbar, cbar, sbar, and bbar. One can also use q and qbar for all the light quarks and antiquarks respectively, i.e. u, d, c, and s. For example, bbbar will be the \(b\bar{b}\) channel.

The generated Fortran code ALP_amp.f90 has the following content:


This code has to be dressed by the Python helper script DressUserAmpCode.py:


This produces a dressed Fortran code file called by default user_interface.f90.

The helper script provides a help message which can be called with -h or --help. The name of the output file can be specified with the -o option. Multiple input Fortran files can be given as arguments to the helper script. The full usage is:


The provided input Fortran code files does not necessarily have to be generated with FeynCalc. They can be generated by any other program or even be written by hand by providing the appropriate expression for gg or the desired channel.

To use the new dressed custom Fortran code with H1jet, it is necessary to recompile H1jet with the custom Fortran code:


Running ./h1jet --help we see that three new additional options have been added:

\(\texttt {-{}-c\_CGtil <value>}\):

The Wilson coefficient \(c_{\tilde{G}}\) in Eq. (26).

\(\texttt {-{}-c\_mA <value>}\):

The ALP mass, \(m_a\).

\(\texttt {-{}-c\_fa <value>}\):

The ALP suppression scale \(f_a\) in

Eq. (26).

The leading c_ in the name stands for “custom” and is automatically added in order to avoid naming issues in the code.

The result from the ALP implementation in H1jet is shown in Fig. 7 and can be compared to the H1jet result for the CP-odd Higgs by using a single top quark in the loop with an infinite mass limit, resulting in an effective coupling between the CP-odd Higgs and the gluons. In fact, the respective ALP and CP-odd couplings are then related as such,

$$\begin{aligned} \frac{c_{\tilde{G}}^2}{f_a^2} = \frac{\alpha _s^2}{64 \pi ^2 v^2} \,. \end{aligned}$$

The comparison is shown in Fig. 8, where we see agreement within \(4\times 10^{-6}\).

The result can also be compared to the same FeynRules model used with MadGraph5_aMC@NLO [16], where our code takes one second to run, while MadGraph can take up to several hours depending on the number of events, due to MadGraph running a full Monte Carlo integration. We have found that H1jet agrees with MadGraph5_aMC@NLO within Monte Carlo errors. We have also seen that MadGraph5_aMC@NLO runs into numerical instabilities at low \(p_T\), while H1jet has by construction the correct behaviour.

Fig. 7

The \(p_{T}\) distribution for the process \(gg \rightarrow ga\) from H1jet with the amplitude from the user interface

Fig. 8

The relative ratio in permille between the CP-odd result and the result with the amplitude from the user interface

The total cross section

While not strictly necessary for the user interface to run, it is still recommended to add the code for the evaluation of the total cross section to the custom user interface. This is easy to do as well. We will here show it for the ALP model.

We start with considering the gluon-fusion ALP production, \(gg \rightarrow a\). In Mathematica, create a tree-level \(2 \rightarrow 1\) topology, and insert the fields:


Then we set up the amplitude:


as well as the kinematics:


We then square the amplitude:


For a \(2 \rightarrow 1\) process, the hadronic cross section is given in Eq. (4), where the partonic luminosity \(\mathscr {L}_{gg}\) is handled by H1jet. Hence, we need to multiply our squared matrix element by


Finally, we can write the cross section as a Fortran code file:


We again specify the gluon-gluon channel with the xsgg = xsec, but this time indicate with the leading xs that the code is for the Born cross section. Otherwise, the same rules apply. It is crucial to make sure not to save the Born cross section in the same file as the squared amplitude code for the transverse momentum distribution.

The new generated code ALP_xsec.f90 is provided to DressUserAmpCode.py along with the squared amplitude code:


And H1jet can be recompiled to include the new source code:


After which H1jet will calculate the Born cross section for the custom process.


We have presented a method that allows a fast computation of the transverse momentum distribution of a colour singlet. The method is implemented in the program H1jet, which returns a transverse momentum spectrum for the specified colour singlet in about a second. H1jet is similar in spirit to SusHi, but is incomparably faster.

The program implements various processes, including Higgs production both in gluon fusion and bottom-antibottom annihilation, as well as Z production. Loop-induced Higgs production is implemented not only in the SM, but also in attractive BSM scenarios, such as SUSY or composite Higgs. For SUSY, we implement a simplified model with two stops, as done in Ref. [29]. For composite Higgs, we implement both the simplified model of Ref. [10], as well as some explicit models with one or more top partners [27]. Loop integrals can be computed either exactly or in the infinite-mass limit. The latter limit implements in practice a dimension-6 contact interaction between the Higgs and the gluon field. The program is very flexible, and the only process-dependent input is the corresponding amplitude in terms of Mandelstam invariants. This can be computed by the user either manually, or with the use of automated programs such as FeynCalc [34], and connected to the program via a simple interface. As an example, we have included in the package the calculation of the transverse momentum distribution of an ALP starting from the general Feynman rules of Ref. [31]. Note that the possibility of automatically implementing a new model inside the program is a feature that is not available in SusHi. We also stress that it is also possible to take advantage of input files to obtain results for an arbitrary number of fermions and scalars in loops, with appropriate couplings. This could be used, for instance, to implement the MSSM instead of the provided simplified SUSY model.

We stress that H1jet is not a replacement for a proper Monte Carlo analysis implementing realistic experimental cuts. However, we believe it will be invaluable for BSM experts to assess whether a given model gives sizeable deviations from the SM. In fact, due to its fast implementation, H1jet makes it possible to perform parameter scans in seconds, and to take into account mass effects in specific models. Also, due to the fact that H1jet is not based on a Monte Carlo integration, one can separate interference between different contributions very precisely, something which is very difficult to achieve with Monte Carlo event generators.

H1jet can be also useful to precision phenomenology. In fact, it makes it possible to easily perform theoretical studies of the transverse momentum distribution of a colour singlet, especially those involving the matching of resummed calculations with exact fixed order. Also, although the implemented cross sections are computed at the lowest order in QCD, nothing prevents the inclusion of higher orders, provided one integrates over all coloured particles.

Data Availability Statement

This manuscript has associated data in a data repository. [Authors’ comment: The program code is publicly available at https://h1jet.hepforge.org.]


  1. 1.


  2. 2.

    G. Aad et al., Phys. Lett. B 716, 1 (2012). https://doi.org/10.1016/j.physletb.2012.08.020

    ADS  Article  Google Scholar 

  3. 3.

    S. Chatrchyan et al., Phys. Lett. B 716, 30 (2012). https://doi.org/10.1016/j.physletb.2012.08.021

    ADS  Article  Google Scholar 

  4. 4.

    G. Aad et al., Phys. Rev. D 101(1), 012002 (2020). https://doi.org/10.1103/PhysRevD.101.012002

    ADS  Article  Google Scholar 

  5. 5.

    A.M. Sirunyan et al., Eur. Phys. J. C 79(5), 421 (2019). https://doi.org/10.1140/epjc/s10052-019-6909-y

    ADS  Article  Google Scholar 

  6. 6.

    M. Aaboud et al., Phys. Lett. B 786, 114 (2018). https://doi.org/10.1016/j.physletb.2018.09.019

    ADS  Article  Google Scholar 

  7. 7.

    A.M. Sirunyan et al., Phys. Lett. B 792, 369 (2019). https://doi.org/10.1016/j.physletb.2019.03.059

    ADS  Article  Google Scholar 

  8. 8.

    A. Azatov, A. Paul, JHEP 01, 014 (2014). https://doi.org/10.1007/JHEP01(2014)014

    ADS  Article  Google Scholar 

  9. 9.

    C. Grojean, E. Salvioni, M. Schlaffer, A. Weiler, JHEP 05, 022 (2014). https://doi.org/10.1007/JHEP05(2014)022

    ADS  Article  Google Scholar 

  10. 10.

    A. Banfi, A. Martin, V. Sanz, JHEP 08, 053 (2014). https://doi.org/10.1007/JHEP08(2014)053

    ADS  Article  Google Scholar 

  11. 11.

    G. Aad et al., Phys. Rev. Lett. 125(6), 061802 (2020). https://doi.org/10.1103/PhysRevLett.125.061802

    ADS  Article  Google Scholar 

  12. 12.

    A.M. Sirunyan et al., Phys. Rev. Lett. 125(6), 061801 (2020). https://doi.org/10.1103/PhysRevLett.125.061801

    Article  Google Scholar 

  13. 13.

    F. Maltoni, E. Vryonidou, C. Zhang, JHEP 10, 123 (2016). https://doi.org/10.1007/JHEP10(2016)123

    ADS  Article  Google Scholar 

  14. 14.

    A.M. Sirunyan et al., JHEP 07, 014 (2017). https://doi.org/10.1007/JHEP07(2017)014

    ADS  Article  Google Scholar 

  15. 15.

    M. Aaboud et al., JHEP 05, 142 (2019). https://doi.org/10.1007/JHEP05(2019)142

    ADS  Article  Google Scholar 

  16. 16.

    J. Alwall, R. Frederix, S. Frixione, V. Hirschi, F. Maltoni, O. Mattelaer, H.S. Shao, T. Stelzer, P. Torrielli, M. Zaro, JHEP 07, 079 (2014). https://doi.org/10.1007/JHEP07(2014)079. https://launchpad.net/mg5amcnlo

  17. 17.

    R.V. Harlander, S. Liebler, H. Mantler, Comput. Phys. Commun. 184, 1605 (2013). https://doi.org/10.1016/j.cpc.2013.02.006

    ADS  Article  Google Scholar 

  18. 18.

    R.V. Harlander, S. Liebler, H. Mantler, Comput. Phys. Commun. 212, 239 (2017). https://doi.org/10.1016/j.cpc.2016.10.015. https://sushi.hepforge.org

  19. 19.

    G.P. Salam, J. Rojo, Comput. Phys. Commun. 180, 120 (2009). https://doi.org/10.1016/j.cpc.2008.08.010. https://hoppet.hepforge.org/

  20. 20.

    A. Banfi, F. Caola, F.A. Dreyer, P.F. Monni, G.P. Salam, G. Zanderighi, F. Dulat, JHEP 04, 049 (2016). https://doi.org/10.1007/JHEP04(2016)049. https://jetvheto.hepforge.org/

  21. 21.

    A. Buckley, J. Ferrando, S. Lloyd, K. Nordström, B. Page, M. Rüfenacht, M. Schönherr, G. Watt, Eur. Phys. J. C 75, 132 (2015). https://doi.org/10.1140/epjc/s10052-015-3318-8. https://lhapdf.hepforge.org/

  22. 22.

    S. Buehler, C. Duhr, Comput. Phys. Commun. 185, 2703 (2014). https://doi.org/10.1016/j.cpc.2014.05.022. https://chaplin.hepforge.org/

  23. 23.

    H. Georgi, Nucl. Phys. B 363, 301 (1991). https://doi.org/10.1016/0550-3213(91)80022-E

    ADS  Article  Google Scholar 

  24. 24.

    M. Spira, A. Djouadi, D. Graudenz, P. Zerwas, Nucl. Phys. B 453, 17 (1995). https://doi.org/10.1016/0550-3213(95)00379-7

    ADS  Article  Google Scholar 

  25. 25.

    U. Baur, E. Glover, Nucl. Phys. B 339, 38 (1990). https://doi.org/10.1016/0550-3213(90)90532-I

    ADS  Article  Google Scholar 

  26. 26.

    G. Corcella, I. Knowles, G. Marchesini, S. Moretti, K. Odagiri, P. Richardson, M. Seymour, B. Webber, JHEP 01, 010 (2001). https://doi.org/10.1088/1126-6708/2001/01/010

  27. 27.

    A. Banfi, B.M. Dillon, W. Ketaiam, S. Kvedaraite, JHEP 01, 089 (2020). https://doi.org/10.1007/JHEP01(2020)089

    ADS  Article  Google Scholar 

  28. 28.

    J.F. Gunion, H.E. Haber, Phys. Rev. D 67, 075019 (2003). https://doi.org/10.1103/PhysRevD.67.075019

    ADS  Article  Google Scholar 

  29. 29.

    A. Banfi, A. Bond, A. Martin, V. Sanz, JHEP 11, 171 (2018). https://doi.org/10.1007/JHEP11(2018)171

    ADS  Article  Google Scholar 

  30. 30.

    A. Alloul, N.D. Christensen, C. Degrande, C. Duhr, B. Fuks, Comput. Phys. Commun. 185, 2250 (2014). https://doi.org/10.1016/j.cpc.2014.04.012. https://feynrules.irmp.ucl.ac.be

  31. 31.

    I. Brivio, M. Gavela, L. Merlo, K. Mimasu, J. No, R. del Rey, V. Sanz, Eur. Phys. J. C 77(8), 572 (2017). https://doi.org/10.1140/epjc/s10052-017-5111-3. https://feynrules.irmp.ucl.ac.be/wiki/ALPsEFT

  32. 32.

    R. Mertig, M. Bohm, A. Denner, Comput. Phys. Commun. 64, 345 (1991). https://doi.org/10.1016/0010-4655(91)90130-D

    ADS  Article  Google Scholar 

  33. 33.

    V. Shtabovenko, R. Mertig, F. Orellana, Comput. Phys. Commun. 207, 432 (2016). https://doi.org/10.1016/j.cpc.2016.06.008

    ADS  Article  Google Scholar 

  34. 34.

    V. Shtabovenko, R. Mertig, F. Orellana, Comput. Phys. Commun. 256, 107478 (2020). https://doi.org/10.1016/j.cpc.2020.107478. https://feyncalc.github.io

  35. 35.

    T. Hahn, Comput. Phys. Commun. 140, 418 (2001). https://doi.org/10.1016/S0010-4655(01)00290-9. http://www.feynarts.de

Download references


The idea of having a fast program to compute transverse momentum spectra started from AB’s collaboration with G. Zanderighi, P. F. Monni and F. Caola. AB acknowledges many useful discussions with them on the topic. AB also wishes to thank B. Dillon, W. Ketaiam and S. Kvedaraitė for contributions to a private preliminary version of H1jet. We thank J. M. Lindert for all his helpful remarks and suggestions on this paper. The studentship of AL is supported by the Science Technology and Facilities Council (STFC) under grant number ST/P000819/1. The work of AB is supported by the Science Technology and Facilities Council (STFC) under grants number ST/P000819/1 and ST/T00102X/1.

Author information



Corresponding author

Correspondence to Alexander Lind.

Additional information

H1jet can be obtained from Ref. [1].

Implementation of scalar integrals

Implementation of scalar integrals

This appendix contains the details of how H1jet computes one-loop scalar integrals that are relevant for Higgs production. These integrals depend on one internal mass, which we denote by m, and are functions of Mandelstam invariants.

Scalar integrals can be written in terms of logarithms and dilogarithms of complex arguments, which require appropriate analytic continuations. Instead of performing such manipulations ourselves, we have decided to use the implementation of the library CHAPLIN, and recast all relevant transcendental functions into harmonic polylogarithms \(H(\mathbf {a};z)\), with \(\mathbf {a}=(a_1,\dots ,a_n)\). For real values of the argument of a polylogarithm, CHAPLIN uses the \(+i\varepsilon \) prescription, i.e. \(H(\mathbf {a};z)\) with z real is interpreted as \(H(\mathbf {a};z+i\varepsilon )\). Therefore, we need to make sure that the imaginary part of the argument of scalar integrals is consistent with the convention of CHAPLIN.

The relevant one-loop integrals we need to deal with are bubbles, triangles and boxes.

Bubbles. The bubble integral is defined as

$$\begin{aligned} B_0(s)=2 -\sqrt{1-\frac{4(m^2-i\varepsilon )}{s}}\ln \left[ -\frac{z}{1-z}\right] \,, \end{aligned}$$


$$\begin{aligned} z=\frac{1}{2}\left( 1+\sqrt{1-\frac{4(m^2-i\varepsilon )}{s}}\right) \,. \end{aligned}$$

The argument of the logarithm in Eq. (A.1) has a different form according to the value of s:

$$\begin{aligned} -\frac{z}{1-z} = \left\{ \begin{array}{ll} -\frac{1+\sqrt{1+\frac{4m^2}{|s|}}}{1-\sqrt{1+\frac{4m^2}{|s|}}}\,,&{}\quad s<0\,,\\ -\frac{1+i\sqrt{\frac{4m^2}{s}-1}}{1-i\sqrt{\frac{4m^2}{s}-1}}\,,&{}\quad \>\> 0<s<4m^2\,,\\ -\frac{1-\sqrt{1-\frac{4m^2}{s}}}{1-\sqrt{1-\frac{4m^2}{s}}}-i\varepsilon \,,&{}\quad s>4m^2 \end{array} \right. \end{aligned}$$

Note that the only case in which one needs a small imaginary part is the case \(s>4m^2\). This imaginary part has the opposite convention as in CHAPLIN. As a solution, we invert the argument of the logarithm and use the identity \(\ln z = -\ln (1/z)\). In practice, after an appropriate analytic continuation of the square root, we define

$$\begin{aligned} z \equiv \left\{ \begin{aligned} \frac{1}{2}\left( 1+\sqrt{1-\frac{4m^2}{s}}\right) \,,&\qquad \frac{4m^2}{s}<1\\ \frac{1}{2}\left( 1+i\sqrt{\frac{4m^2}{s}-1}\right) \,,&\qquad \frac{4m^2}{s}>1 \end{aligned} \right. \end{aligned}$$

and implement the bubble as follows:

$$\begin{aligned} B_0(s)= 2 -(2 z-1) \,H\left( 1;\frac{1}{z}\right) \,. \end{aligned}$$

Note that a logarithm of a negative number can also be correctly analytically continued by using the default Fortran implementation of the complex logarithm. As for CHAPLIN, Fortran assumes that a negative number has a small positive imaginary part. Therefore, in case we have a small negative imaginary part, we can still use the relation \(\ln z = -\ln (1/z)\), which gives the correct analytic continuation.

Triangles. The triangle integral \(C_0(s)\) is defined as

$$\begin{aligned} C_0(s) = \frac{1}{2s}\ln ^2\left[ -\frac{z}{1-z}\right] \,, \end{aligned}$$

where z is given in Eq. (A.2). Again, for \(s>4m^2\), the argument of the logarithm has the opposite sign with respect to what is implicitly assumed by CHAPLIN. Therefore, we invert again the argument of the logarithm, and using the definition of z in Eq. (A.4), we implement the triangle as follows:

$$\begin{aligned} s\,C_0(s) = H\left( 1,1;\frac{1}{z}\right) \,. \end{aligned}$$

Boxes. The scalar four-point function with three massless (the gluons) and one massive (the Higgs boson) external lines is given by [25],

$$\begin{aligned} D(s, t)= & {} \displaystyle \frac{1}{st} \int _{0}^{1} \frac{\mathrm {d}x}{x(1-x)+m^2u/(ts)} \nonumber \\&\times \bigg [ - \ln \left( 1 - i \varepsilon - \frac{m_H^2}{m^2} x (1-x) \right) \nonumber \\&+ \ln \left( 1 - i \varepsilon - \frac{s}{m^2} x (1-x) \right) \nonumber \\&+ \ln \left( 1 - i \varepsilon - \frac{t}{m^2} x (1-x) \right) \bigg ] \,, \end{aligned}$$

which can be expressed in terms of complex dilogarithms by using the exact result

$$\begin{aligned}&\displaystyle \frac{1}{st} \int _{0}^{1} \frac{dx}{x(1-x)+m^2u/(ts)} \ln \left( 1 - i \varepsilon - \frac{v}{m^2} x (1-x) \right) \nonumber \\&\quad = \frac{2}{\sqrt{1+4m^2u/(ts)}} \nonumber \\&\qquad \times \bigg [ \mathrm {Li}_2\left( \frac{x_-}{x_--y}\right) -\mathrm {Li}_2\left( \frac{x_+}{x_+-y}\right) \nonumber \\&\qquad + \mathrm {Li}_2\left( \frac{x_-}{y-x_+}\right) -\mathrm {Li}_2\left( \frac{x_+}{y-x_-}\right) \nonumber \\&\qquad +\, \ln \left( \frac{-x_{-}}{x_{+}} \right) \ln \left( 1 - i \varepsilon - \frac{v}{m^2}x_-x_+ \right) \bigg ]\,, \end{aligned}$$


$$\begin{aligned} x_{\pm } \equiv \frac{1}{2} \left( 1 \pm \sqrt{1 + \frac{4m^2 u}{ts}} \right) \end{aligned}$$

are real numbers, with \(x_{+} > 1\) and \(x_{-} < 0\), and

$$\begin{aligned} y \equiv \frac{1}{2} \left( 1 + \sqrt{1 - \frac{4(m^2 - i \varepsilon )}{v}} \right) \,, \end{aligned}$$

acquires an imaginary part according to the value of v. In particular, keeping track of the imaginary part of y yields

$$\begin{aligned} y = \left\{ \begin{array}{ll} \frac{1}{2}\left( 1+\sqrt{1+\frac{4m^2}{|v|}}\right) -i\varepsilon \,,&{} \quad v<0\\ \frac{1}{2}\left( 1+i\sqrt{\frac{4m^2}{v}-1}\right) \,,&{} \quad 0<v<4 m^2\\ \frac{1}{2}\left( 1+\sqrt{1-\frac{4m^2}{v}}\right) +i\varepsilon \,,&{} \quad v>4m^2 \end{array} \right. \end{aligned}$$

From the above, we see that w for \(0<v<4 m^2\) we can use the dilogarithms as given by CHAPLIN. For \(v<0\), \(x_-/(x_--y)\) and \(x_+/(y-x_-)\) acquire a small positive imaginary part, whereas \(x_+/(x_+-y)\) and \(x_-/(y-x_+)\) a small negative imaginary part. The reverse happens for \(v>4m^2\). Therefore, we need to perform some formal manipulations to use the harmonic polylogarithms provided by CHAPLIN.

In practice, whenever the argument z of the dilogarithm is complex, we just use the definitory relation \(\mathrm {Li_2}(z)=H(0,1;z)\). When \(z=x+i\varepsilon \), with x real, we use \(\mathrm {Li_2}(x+i\varepsilon )=H(0,1;x)\), with H(0, 1; x) the complex number provided by CHAPLIN. If \(z=x-i\varepsilon \), we use the identities

$$\begin{aligned} \mathrm {Li}_{2}\left( x-i\varepsilon \right)= & {} -H\left( 0,1;\frac{1}{x} \right) - \frac{\pi ^2}{6} - H(0,0; -x) \nonumber \\= & {} -H(0,-1;-x) \nonumber \\= & {} -H\left( 0,1, 1-x \right) + \frac{\pi ^2}{6} \nonumber \\&+ H(1;1-x) H(-1;-x)\,, \end{aligned}$$

and we select the one that gives the smallest imaginary part. This of course give numerically indistinguishable results when the imaginary part is large, but is of crucial importance when the imaginary part should be zero but it is not because of the specific numerical methods employed by CHAPLIN.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.

Funded by SCOAP3

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Lind, A., Banfi, A. H1jet, a fast program to compute transverse momentum distributions. Eur. Phys. J. C 81, 72 (2021). https://doi.org/10.1140/epjc/s10052-020-08815-w

Download citation