Input & Output

We use yaml runcards for piping input and output files.

Input

The input is split into two runcard

  • a theory runcard (compatible with the NNPDF theory database) that defines the physical setup and environment

  • a operator runcard that defines the numerical setup and the requested operators

theory input runcard

Name

Type

default

description

PTO

int

[required]

order of perturbation theory: 0 = LO, …

alphas

float

[required]

reference value of the strong coupling \(\alpha_s(\mu_0^2)\) (Note that we have to use \(\alpha_s(\mu_0^2)\) here, instead of \(a_s(\mu_0^2)\) for legacy reasons)

ThresholdConfig parameters:

  • float Q0 reference scale from which to start; Required

  • float mc charm mass in GeV; Required

  • float mb bottom mass in GeV; Required

  • float mt top mass in GeV; Required

InterpolatorDispatcher parameter:

  • list(float) interpolation_xgrid the interpolation grid; Required

  • int interpolation_polynomial_degree polynomial degree of the interpolating function; Required

  • bool interpolation_is_log use logarithmic interpolation? Required

  • list(float) Q2grid the target grid in \(Q^2\); Required

Output

The Output instance represents the following runcard:

output runcard

Name

Type

description

interpolation_xgrid

list(float)

the interpolation grid

interpolation_polynomial_degree

int

polynomial degree of the interpolating function

interpolation_is_log

bool

use logarithmic interpolation?

q2_ref

float

starting scale

pids

list(int)

participating partons listed by their PDG id

Q2grid

dict

all operators at the requested values of \(Q^2\) represented by the key

The grid elements contains two keys each

  • operators a dict with all evolution kernel operators where the key indicates which distribution is generated by which other one and the value represents the eko in matrix representation - this can either be the plain list representation or the binary representation (as provided by numpy.ndarray.tobytes())

  • operator_errors a dict with the integration errors associated to the respective operators following the same conventions as the operator dictionary

  • each element (EKO) is a rank-4 tensor with the indices ordered in the following way: EKO[pid_out][x_out][pid_in][x_in] where pid_out and x_out refer to the outgoing PDF and pid_in and x_in to the incoming PDF. The ordering of pid_out/pid_in is determined by the pids parameter of the output and the order of x_out/x_in by interpolation_xgrid.

Example Output dump

interpolation_is_log: true
interpolation_polynomial_degree: 4
interpolation_xgrid: [0.0001, 0.001, 0.01, 0.1, 1.0]
pids: [22, -6, ..., -1, 21, 1, ..., 6] # with ... logically continued
q2_ref: 1.0
Q2grid:
  1000.0:
    operators:
      - - - - 0
            - 0
            # more values ...
    operator_errors:
      - - - - 0
            - 0
            # more values ...
  10000.0:
    operators:
      - - - - 0
            - 0
            # more values ...
    operator_errors:
      - - - - 0
            - 0
            # more values ...
  # more q2 values ...

Note that by default PyYAML will put each element of the matrices on a new line - instead here we have (partially) chosen the more compact inline list representation for a better overview.