Skip to content

Support momentum-flavour manipulation of grids? #362

@felixhekhorn

Description

@felixhekhorn

This issue is similar to #346, but not the same.

Physics case

We are interested in dijet cross sections in photo-production at HERA, which have been measures here and the corresponding theory is available here to which all equations refer henceforth. Photo-production cross sections can be split into a "direct" contribution (called "point" in the paper) and a "resolved" contribution (called "hadr" in the paper), see Eq. 2.4 there. Combining Eq. 2.2 and Eq. 2.6 we can write the resolved part conceptually as

$$\sigma_{ep} = f_{\gamma/e} \otimes f_{i/\gamma} \otimes \hat \sigma_{ij} \otimes f_{j/p}$$

where $f_{a/b}$ is the probability to find a in b. While $f_{j/p}$ is well known 🙃 , $f_{i/\gamma}$ is not and we are hunting for it.

The way the underlying program works (if I understand correctly) is to first pre-compute

$$f_{i/\gamma/e} = f_{\gamma/e} \otimes f_{i/\gamma} $$

and then convolute that with the partonic matrix elements.

Question

can I use pineappl to directly produce a grid, which takes $f_{i/\gamma}$ and $f_{j/p}$ and yields $\sigma_{ep}$?

For that one would need to support the manipulation of flavour+momentum, in the following sense:

  1. one would grid the underlying partonic matrix elements (which just collide two QCD partons - as in other colliders), call it $\Sigma_{kj}$ where $k$ and $j$ are multi-indices denoting both momentum and flavour
  2. one would grid the additional convolution, call it $F_{ik}$ (with also $i$ multi-index) (F for photon flux)
  3. one would glue them together $F\Sigma_{ij} = F_{ik} \Sigma_{kj}$

In this specific case $F_{ik}$ only mixes momentum fractions (it's an integral), but is diagonal in flavour.

Algorithmically, $F$ behaves similar to an EKO, i.e. it has two indices, but in contrast to EKO it does not collapse a convolution slot, but changes its type in a sense (specifically it's parent particle).

Alternatives

If we are not going for the full-fledged solution straight away: could I do at least some subgrid manipulation? i.e. we compute $\Sigma_{kj}$, then I turn the subgrids somehow into ImportOnlySubgridVX (or something) such that they are plain arrays of weights (and not Lagrange weight or stuff), then do a np.einsum on those and write them back?

As a poor man solution, I can of course

  1. for grids: do the additional multiplication/convolution outside pineappl and directly feed the grid the correct thing
  2. for FK tables: add the convolution to the EKO as I know that EKOs are nothing but numpy arrays

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions