Code Structure

In this section the structure of the package is discussed in details, from the point of view of the implementation of course, but mainly concerning the overall project and the organization of the many ingredients/features composing this package.

Brief Description

yadism is organized in two different parts:

  • the physics-related part, that includes a storage of coefficient functions expressions (PartonicChannel), the coupling constants (charges) related to the EW boson coupling (CouplingConstants), and the suitable joining between the two (Kernel)

    all these elements are contained inside the coefficient_function subpackage, and they are provided to the outside through Combiner, that recollects all the Kernel relevant for a given calculation

  • the computational part, that is fully managed by a Runner instance, and is composed of different elements, used for applying all the relevant steps for the requested calculation

Essentially the flow of an execution is the following:

  1. (user initiated) a Runner is instantiated and it is passed the theory configuration, and the requested observables to compute (together with related configurations)

  2. the relevant global service providers are initialized and stored by the Runner (like the \(\alpha_s\) evolution, or the interpolation dispatcher, or the couplings computer)

  3. the requested observables are scanned, and they are assigned to the respective StructureFunction / CrossSection (acting as manager and caching storage) according to their kind and heavyness (but multiple kinematics will belong to the same StructureFunction / CrossSection) each kinematic point will correspond to an instance of EvaluatedStructureFunction / EvaluatedCrossSection

  4. (user initiated) output is requested

  5. the request is propagated to the managers, and then to all the required ESF objects

  6. the ESF issues a request to the Combiner for the relevant Kernel

  7. all the Kernel are numerically convolved with the PDF interpolation polynomials

  8. all the results are collected in an Output object and returned to the user

  9. (user initiated) the Output object might be

    dumped on disk in one of the available formats

Elements