Abstract
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 leadingorder \(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.
Introduction
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 dimension6 effective interaction between the incoming gluons and the Higgs, with exact topmass effects giving tiny corrections. Therefore, in many theories, the strength of dimension6 contact gluongluonHiggs 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 cutbased 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 hardcoded processes and models. The main process is
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 CPodd Higgs, a simplified SUSY model, and composite Higgs models with a single or multiple toppartners. 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 userspecified 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 axionlikeparticle (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
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
The corresponding hadronic cross section is given by
where \(\mathscr {L}_{ij}\left( \tau ,\mu _F\right) \) is the partonic luminosity
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 nonzero 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
Without loss of generality, in the centreofmass frame of the partonic collision, we can parameterise momenta as follows
where \(\eta \) is the rapidity of parton \(p_3\) in the centreofmass frame. The partonic \(p_T\) spectrum for the process initiated by partons ij is given by
where \(E_X=\sqrt{m_X^2+p^2_T\cosh ^2\eta }\) is the energy of the coloursinglet particle \(p_X\). The above equation selects two values of \(\eta \), as follows
The corresponding hadronic cross section reads
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
This allows us to perform the \(\eta \) integration last, and obtain, after some manipulations,
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 onedimensional 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 finalstate partons, the method can also be applied to higherorder cross sections and differential spectra.
User’s manual
This section describes the most important technical details of H1jet, including its installation and usage.
Installation
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.
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 loopinduced 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 userspecified amplitudes.
To install in a specific location:
The default installation path is the main H1jetdirectory.
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 bindirectory 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 bindirectory at the path specified by prefix.
Usage
After compilation, H1jet can be run from the bindirectory 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 fivecolumn 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.
The output can be directed to a file with the option:
 \(\texttt {o, {}out <file>}\):

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

Specify the process. Arguments:
 H:

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

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

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

User specified process. See Sect. 5 below for details on the implementation.
General options
The options listed here apply to all processes.
 \(\texttt {{}collider <arg>}\):

Specify the collider type.
Arguments: pp (default), ppbar.
 \(\texttt {{}roots <value>}\):

Centreofmass 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.
Arguments:
 M:

\(\mu = M\).
 HT:

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

\(\mu = \sqrt{p_T^2 + M^2}\).
 \(\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 xaxis of the histogram, i.e. logarithmic bins in \(p_{T}\). The option ptmin must be set to a nonzero 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>}\):

Onshell 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 CPodd Higgs).
 \(\texttt {{}GF <value>}\):

Fermi coupling constant, \(G_F\) [\(\hbox {GeV}^{2}\)].
Default: \(0.116638 \times 10^{4}\) \(\hbox {GeV}^{2}\).
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 CPodd Higgs instead, it is necessary to select the following option:
 \(\texttt {{}cpodd}\):

Toggle for calculation of CPodd Higgs.
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 CPeven and CPodd Higgs production are loopinduced processes. The amplitudes for \(2\rightarrow 1\) processes are taken from Ref. [24]. For CPeven 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 CPodd \(2\rightarrow 2\) amplitudes from Ref. [9].
Toppartner. H1jet allows the calculation of Higgs production via loops of top partners in addition to top loops. To include a toppartner T in the quark loops, it is necessary to set the toppartner mass \(m_T\) to a nonzero value by using the mtp option.
The SM top Yukawa factor can be modified by the mixing angle,
where \(\kappa _t\) is the Yukawa factor set by option yt.
The toppartner Yukawa factor will likewise be modified
with \(\kappa _T\) set by ytp.
The toppartner specific options are:
 \(\texttt {{}mtp <value>}\):

Toppartner mass, \(m_{T}\) [GeV].
Default: 0 GeV.
 \(\texttt {{}ytp <value>}\):

Toppartner Yukawa factor, \(\kappa _T\).
Default: 1.
 \(\texttt {{}sth2 <value>}\):

Toppartner mixing angle, \(\sin ^2 \theta _T\).
Default: 0.
where the \(\tilde{\kappa }\)’s are the CPodd couplings, and,
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
The composite Higgs toppartner model specific options are:
 \(\texttt {{}model <arg>}\):

Specify the toppartner model.
Arguments:
 M1_5:

\(\mathbf{M1} _\mathbf{5 }\), with a light toppartner
transforming as a \(\mathbf{1} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM topbottom doublet embedded in a \(\mathbf{5} \) of \(\text {SO}(5)\) (default).
 M1_14:

\(\mathbf{M1} _\mathbf{14 }\), with a light toppartner
transforming as a \(\mathbf{1} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM topbottom doublet embedded in a \(\mathbf{14} \) of \(\text {SO}(5)\).
 M4_5:

\(\mathbf{M4} _\mathbf{5 }\), with a light toppartner
transforming as a \(\mathbf{4} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM topbottom doublet embedded in a \(\mathbf{5} \) of \(\text {SO}(5)\).
 M4_14:

\(\mathbf{M4} _\mathbf{5 }\), with a light toppartner
transforming as a \(\mathbf{4} _\mathbf{2/3 }\) of \(\text {SO}(4)\), and the SM topbottom 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 toppartners models. H1jet makes it possible to include multiple toppartners 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 toppartner masses and Yukawas. See the file SM.dat for the SM case, without any top partners.
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 CPeven and CPodd couplings for a quark q, with the following Lagrangian:
where \(m_q\) is the mass of the quark.
The integer value specifying the loop approximations can take the following values:

0
Small mass limit for fermions.

1
Full mass effects for fermions.

2
Large mass limit for fermions.

3
Full mass effects for scalars.

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 nonzero value by using the mst option. The second stop mass is then given by
where \(\Delta m\) is set with the delta option.
The stop Yukawa coupling factors will be given by:
where
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.
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 userspecified 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 builtin processrelevant 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.
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 srcdirectory, 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.
Output
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 builtin 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 toppartner model.
Benchmarking
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 CPodd 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\)
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.
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.
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: axionlikeparticle (ALP) effective theory
We will present here a specific example of adding to H1jet the production of a light axionlikeparticle (ALP), a, along with a jet. For simplicity, we only consider the gluonfusion channel,
This is a treelevel process due to an effective ALPgluon coupling,
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 treelevel \(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 gluongluon 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 2particle 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 result from the ALP implementation in H1jet is shown in Fig. 7 and can be compared to the H1jet result for the CPodd Higgs by using a single top quark in the loop with an infinite mass limit, resulting in an effective coupling between the CPodd Higgs and the gluons. In fact, the respective ALP and CPodd couplings are then related as such,
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.
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 gluonfusion ALP production, \(gg \rightarrow a\). In Mathematica, create a treelevel \(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 gluongluon 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.
Conclusions
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 bottomantibottom annihilation, as well as Z production. Loopinduced 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 infinitemass limit. The latter limit implements in practice a dimension6 contact interaction between the Higgs and the gluon field. The program is very flexible, and the only processdependent 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.]
References
 1.
 2.
G. Aad et al., Phys. Lett. B 716, 1 (2012). https://doi.org/10.1016/j.physletb.2012.08.020
 3.
S. Chatrchyan et al., Phys. Lett. B 716, 30 (2012). https://doi.org/10.1016/j.physletb.2012.08.021
 4.
G. Aad et al., Phys. Rev. D 101(1), 012002 (2020). https://doi.org/10.1103/PhysRevD.101.012002
 5.
A.M. Sirunyan et al., Eur. Phys. J. C 79(5), 421 (2019). https://doi.org/10.1140/epjc/s100520196909y
 6.
M. Aaboud et al., Phys. Lett. B 786, 114 (2018). https://doi.org/10.1016/j.physletb.2018.09.019
 7.
A.M. Sirunyan et al., Phys. Lett. B 792, 369 (2019). https://doi.org/10.1016/j.physletb.2019.03.059
 8.
A. Azatov, A. Paul, JHEP 01, 014 (2014). https://doi.org/10.1007/JHEP01(2014)014
 9.
C. Grojean, E. Salvioni, M. Schlaffer, A. Weiler, JHEP 05, 022 (2014). https://doi.org/10.1007/JHEP05(2014)022
 10.
A. Banfi, A. Martin, V. Sanz, JHEP 08, 053 (2014). https://doi.org/10.1007/JHEP08(2014)053
 11.
G. Aad et al., Phys. Rev. Lett. 125(6), 061802 (2020). https://doi.org/10.1103/PhysRevLett.125.061802
 12.
A.M. Sirunyan et al., Phys. Rev. Lett. 125(6), 061801 (2020). https://doi.org/10.1103/PhysRevLett.125.061801
 13.
F. Maltoni, E. Vryonidou, C. Zhang, JHEP 10, 123 (2016). https://doi.org/10.1007/JHEP10(2016)123
 14.
A.M. Sirunyan et al., JHEP 07, 014 (2017). https://doi.org/10.1007/JHEP07(2017)014
 15.
M. Aaboud et al., JHEP 05, 142 (2019). https://doi.org/10.1007/JHEP05(2019)142
 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.
R.V. Harlander, S. Liebler, H. Mantler, Comput. Phys. Commun. 184, 1605 (2013). https://doi.org/10.1016/j.cpc.2013.02.006
 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.
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.
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.
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/s1005201533188. https://lhapdf.hepforge.org/
 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.
H. Georgi, Nucl. Phys. B 363, 301 (1991). https://doi.org/10.1016/05503213(91)80022E
 24.
M. Spira, A. Djouadi, D. Graudenz, P. Zerwas, Nucl. Phys. B 453, 17 (1995). https://doi.org/10.1016/05503213(95)003797
 25.
U. Baur, E. Glover, Nucl. Phys. B 339, 38 (1990). https://doi.org/10.1016/05503213(90)90532I
 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/11266708/2001/01/010
 27.
A. Banfi, B.M. Dillon, W. Ketaiam, S. Kvedaraite, JHEP 01, 089 (2020). https://doi.org/10.1007/JHEP01(2020)089
 28.
J.F. Gunion, H.E. Haber, Phys. Rev. D 67, 075019 (2003). https://doi.org/10.1103/PhysRevD.67.075019
 29.
A. Banfi, A. Bond, A. Martin, V. Sanz, JHEP 11, 171 (2018). https://doi.org/10.1007/JHEP11(2018)171
 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.
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/s1005201751113. https://feynrules.irmp.ucl.ac.be/wiki/ALPsEFT
 32.
R. Mertig, M. Bohm, A. Denner, Comput. Phys. Commun. 64, 345 (1991). https://doi.org/10.1016/00104655(91)90130D
 33.
V. Shtabovenko, R. Mertig, F. Orellana, Comput. Phys. Commun. 207, 432 (2016). https://doi.org/10.1016/j.cpc.2016.06.008
 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.
T. Hahn, Comput. Phys. Commun. 140, 418 (2001). https://doi.org/10.1016/S00104655(01)002909. http://www.feynarts.de
Acknowledgements
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
Affiliations
Corresponding author
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 oneloop 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 oneloop integrals we need to deal with are bubbles, triangles and boxes.
Bubbles. The bubble integral is defined as
where
The argument of the logarithm in Eq. (A.1) has a different form according to the value of s:
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
and implement the bubble as follows:
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
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:
Boxes. The scalar fourpoint function with three massless (the gluons) and one massive (the Higgs boson) external lines is given by [25],
which can be expressed in terms of complex dilogarithms by using the exact result
where
are real numbers, with \(x_{+} > 1\) and \(x_{} < 0\), and
acquires an imaginary part according to the value of v. In particular, keeping track of the imaginary part of y yields
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_+/(yx_)\) acquire a small positive imaginary part, whereas \(x_+/(x_+y)\) and \(x_/(yx_+)\) 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=xi\varepsilon \), we use the identities
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 SCOAP^{3}
About this article
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/s1005202008815w
Received:
Accepted:
Published: