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:
- 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
- one would grid the additional convolution, call it $F_{ik}$ (with also $i$ multi-index) (F for photon flux)
- 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
- for grids: do the additional multiplication/convolution outside pineappl and directly feed the grid the correct thing
- for FK tables: add the convolution to the EKO as I know that EKOs are nothing but numpy arrays
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
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
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:
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 anp.einsumon those and write them back?As a poor man solution, I can of course