These files contain results of calculations associated with the paper:

#   Two-loop mixed QCD-EW corrections to gg->Hg
#   by Marco Bonetti, Erik Panzer, Vladimir A. Smirnov, Lorenzo Tancredi


## Differential equations:


The directory differential_equations/ contains
    - the vector of canonical functions (canonical_basis_NP_system.m);
    - the matrix of coefficients of the differential equations in canonical dlog-form, as for Eq. (3.2) (DEs_NP_dlog.m);
    - the matrices of coefficients of the differential equations in canonical form w.r.t. y (DEs_NP_y.m), z (DEs_NP_y.m), and \rho (DEs_NP_rho.m).


The results are expressed in terms of the variables y, z, \rho, as defined in Eq. (3.4)

    y    = - t    / mh^2
    z    = - u    / mh^2
    \rho = - mV^2 / mh^2




## Calculation of master integrals:

The basis of master integrals from Appendix B is recorded in the text file integrals/masters.mpl
Our results for their eps-expansions are stored in the text files 

    - expansions.m (Mathematica format) and 
    - expansions.mpl (Maple format)

We computed all these integrals with the Maple code script integrals/integrate.mpl which computes arbitrary scalar Feynman integrals for the planar (PL) and non-planar (NP) double box integral families defined in Eq. (2.21) and Table 1. It requires the HyperInt program, available from

    https://bitbucket.org/PanzerErik/hyperint

and the script expects that the filename to 'HyperInt.mpl' is given in a variable 'HyperIntFile' (see the setup section of the HyperInt documentation). Alternatively, change the line

    read HyperIntFile:

at the top of integrate.mpl to

   read "/path/to/HyperInt/HyperInt.mpl":

To compute a single coefficient of the eps-expansion of a single integral, the following parameters are to be defined:

   family: either 'PL' or 'NP'
   ns:     the list of denominator exponents, ns=[a1,...,a7] (the script only computes scalar integrals, i.e. a8=a9=0 is always assumed)
   dim:    the dimension of space time (e.g. 4-2*eps or 6-2*eps)
   epsord: determines the power eps^epsord whose coefficient is asked to be computed

For example, call

   maple -c"family:=NP" -c"dim:=6-2*eps" -c"ns:=[0,1,1,0,1,2,1]" -c"epsord:=0" integrate.mpl

to compute the coefficient of eps^0 of the integral I^(6-2*eps)_NP(0,1,1,0,1,2,1). The result is written to a correspondingly named file:

   * files ending on .mpl are text files in Maple format,
   * files ending on .m are text files in Mathematica format.

To recalculate all of the eps-expansions of our results, modify the 3rd line of the shell script integrate/runall.sh ('alias maple="your/path/to/maple"') to point to your maple command executable, and run the script

    chmod u+x runall.sh
    ./runall.sh

from the integrals/ directory. Then run maple with

    maple bundle.mpl

to collect all eps-expansion coefficients together into the files expansions.m and expansions.mpl, to reproduce our calculation.





## Helicity amplitudes:

The directory amplitudes/ contains expressions for the helicity amplitudes +++ (called ppp) and ++- (called ppm).

   * files ending on .mpl are text files in Maple format,
   * files ending on .m are text files in Mathematica format.

The expressions in ppp.m[pl] and ppm.m[pl] contain hyperlogarithms and are valid in all regions with an i*eps prescription.

The expressions in pppEuc.m[pl] in terms of polylogarithms are valid only in (or near) the Euclidean region s,t,u<0. To evaluate this expression, an i*eps is not needed, and real values can be given to all variables.

The expressions in pppPhys.m[pl] in terms of polylogarithms are valid only in (or near) the physical region where

    t,u < 0     and    0 < mV2 < mh2 < s < 4*mV2

Also in this case, the expression can be evaluated with real values for the variables s,t,u,mV2,mh2. Note that the roots in the expression have the signs

   r = -i*|r|    rs = -i*|rs|    rt = -i*|rt|    ru = -i*|ru|


To use the ppp and ppm Mathematica (.m) expressions, two additional files are necessary: G_sym_def.m and roots_def[,_Euc,_Phys].m.
First, the file G_sym_def.m is a list of substitutions to "open" polylogarithms containing letters R1E,...,RR4x1230 in terms of the square roots r,...,rtu, s, t, u, and mV2. Then the file roots_def[,_Euc,_Phys].m contains the definitions of the square roots in terms of s, t, u, and mV2. The file roots_def.m must be used when working with ppp.m and ppm.m, the file roots_def_Euc.m with pppEuc.m, and the file roots_def_Phys.m with pppPhys.m.

For example, to obtain the full expression of ppp.m one should evaluate

variablename = Import["\path_to_anc\anc\amplitudes\ppp.m"];
openGs = Import["\path_to_anc\anc\amplitudes\G_sym_def.m"];
roots = Import["\path_to_anc\anc\amplitudes\roots_def.m"];
fullexpression = variablename //.openGs //.roots ;


To use the Maple expressions, read the files with

    read "ppp.mpl": # (or 'read "pppEuc.mpl":' or 'read "pppPhys.mpl":' or 'read "ppm.mpl":')

into your Maple session. This defines a list 'RootDefs' of substitution rules to define the roots r,rs,rt,ru and, in the case of ppm.mpl, also rst,rsu. The expression for the helicity amplitude is called "Appp" (for ppp) and "Appm" (for ppm). Hyperlogarithms in "ppp.mpl" and "ppm.mpl" are written in the HyperInt notation

    Hlog(z,[a1,...,an]) = G(a1,...,an,z) = int_0^z ( dt/(t-a1) * Hlog(t,[a2,...,an]) )

The polylogarithm expressions in "pppEuc.mpl" and "pppPhys.mpl" can be evaluated numerically directly with Maple. For example, to reproduce the results for the +++ amplitude in Table 2:

    read "pppEuc.mpl":
    Appp := eval(Appp, RootDefs): # substitute definitions of the roots in terms of s,t,u,mh2 and mV2
    Appp := eval(Appp, mh2=s+t+u): # substitute mh2=s+t+u
    mV2 := 90: # we could put any value here, because Appp is invariant under simultaneous rescalings of mV2,s,t,u
    evalf(eval(Appp, [s=-1225/324*mV2,t=-25/81*mV2,u=-500/324*mV2]));

This should output roughly 5.396038 for the first Euclidean point (and similarly for the other data points). To increase precision, use the indices of evalf:

    evalf[50](eval(Appp, [s=-1225/324*mV2,t=-25/81*mV2,u=-500/324*mV2]));

This should output 5.3960378114566555819316869010998411197308165921 bar perhaps the last few digits.
