Skip to content

Latest commit

 

History

History
210 lines (189 loc) · 7.72 KB

IO.rst

File metadata and controls

210 lines (189 loc) · 7.72 KB

Input & Output

We use yaml runcards for piping input and output files.

Input

The input is split into two runcards: a theory runcard and an operator runcard. Note that we are not assuming any default values for the keywords, but instead the user has to provide the full definition. However, for the benchmarking environment </development/Benchmarks> we do provide some default settings.

Theory Runcard

The theory runcard (compatible with the NNPDF theory database) defines the physical setup and environment. The benchmark settings are available at banana.data.theories.default_card.

theory input runcard
Name Type Description
PTO :pyint perturbation theory order: 0 = , 1 = , 2 = , 3 = .
ModEv :pystr Evolution method. Possible options are: iterate-exact abbreviated with EXA, decompose-exact, perturbative-exact, iterate-expanded abbreviated with EXP, decompose-expanded, perturbative-expanded, truncated abbreviated with TRN, ordered-truncated.
XIF :pyfloat Factorization to renormalization scale ratio. 1 means no scale variation.
ModSV :pystr Scale variation method, used only if XIF!=1. Possible options are: expanded or exponentiated.
Q0 :pyfloat Initial evolution scale (in GeV).
nf0 :pyint or :pyNone Number of flavors active ant the Q0 scale. If not provided it is inferred from the heavy quark threshold scales.
MaxNfPdf :pyint Maximum number of flavors in the evolution.
alphas :pyfloat Reference value of the strong coupling αs (Note that we have to use αs here, instead of as for legacy reasons).
Qref :pyfloat Reference scale at which the alphas value is given (in GeV).
nfref :pyint or :pyNone Number of flavors active at the Qref scale. If not provided it is inferred from the heavy quark threshold scales.
MaxNfAs :pyint Maximum number of flavors in the strong coupling evolution.
QED :pyint If 1 include evolution.
alphaqed :pyfloat Reference value of the electromagnetic coupling αem.
Qedref :pyfloat Reference scale at which the alphaqed value is given (in GeV).
HQ :pystr Heavy quark scheme: if POLE use heavy quark pole masses, if MSBAR use heavy quark masses.
mc :pyfloat Charm quark mass (in GeV).
Qmc :pyfloat Reference scale at which the charm quark mass is given (in GeV). Used only with HQ='MSBAR'.
kcThr :pyfloat Ratio between the charm mass scale and the nf=4 threshold scale.
mb :pyfloat Bottom quark mass (in GeV).
Qmb :pyfloat Reference scale at which the bottom quark mass is given (in GeV). Used only with HQ='MSBAR'.
kbThr :pyfloat Ratio between the bottom mass scale and the nf=5 threshold scale.
mt :pyfloat Top quark mass (in GeV).
Qmt :pyfloat Reference scale at which the top quark mass is given (in GeV). Used only with HQ='MSBAR'.
ktThr :pyfloat Ratio between the top mass scale and the nf=6 threshold scale.
IC :pybool If 1 allow for intrinsic charm evolution.
IB :pybool If 1 allow for intrinsic bottom evolution.

Operator Runcard

The operator runcard defines the numerical setup and the requested operators. The benchmark settings are available at ekomark.data.operators.

operator input runcard
Name Type description
interpolation_xgrid :pylist(float) x-grid at which the is computed.
mugrid :pylist(float) target grid at which the is computed (in GeV).
interpolation_is_log :pybool If True use logarithmic interpolation.
interpolation_polynomial_degree :pyint Polynomial degree of the interpolating function.
debug_skip_non_singlet :pybool If True skip the non singlet sector, useful for debug purposes.
debug_skip_singlet :pybool If True skip the singlet sector, useful for debug purposes.
ev_op_max_order :pyint Perturbative expansion order of unitary evolution matrix. Needed only for perturbative evolution methods.
ev_op_iterations :pyint Number of evolution steps.
backward_inversion :pystr Backward matching inversion method, relevant only for backward evolution in .
n_integration_cores :pyint Number of cores used during the integration. 0 means use all; -1 all minus 1.

Output

The eko output is represented by the class ~eko.output.Output. An instance of this class is a :pydict and contains the following keys:

output runcard
Name Type Description
Q2grid :pydict All operators at the requested values of Q2 represented by the key
eko_version :pyfloat The version
inputgrid :pylist(float) The input x-grid
inputpids :pylist(int) The input list of participating partons listed by their .
interpolation_is_log :pybool If True use logarithmic interpolation.
interpolation_polynomial_degree :pyint Polynomial degree of the interpolating function.
targetgrid :pylist(float) The target x-grid
targetpids :pylist(int) The target list of participating partons listed by their

Since the final is a rank 4-tensor we store in the output all the different grids for each dimension:targetpids,targetgrid,inputpids,inputgrid. The Q2grid values are the actual tensor for the requested Q2. Each of them contains two keys:

  • operators a :pydict 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 :pynumpy.ndarray.tobytes)
  • errors a :pydict with the integration errors associated to the respective operators following the same conventions as the operator dictionary

Each element () 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 and pid_in and x_in to the incoming . The ordering of pid_out/pid_in is determined by the targetpids/inputpids parameter of the output and the order of x_out/x_in by targetgrid/inputgrid.

To further explore how an ~eko.output.Output object looks like you can follow this tutorial </overview/tutorials/output>.