Add metadata for convolution types

In PineAPPL we are currently preparing support for interpolation grids with arbitrarily many convolution functions, for instance to support processes like

proton proton -> pion + X.

An interpolation grid of this kind needs two different convolution functions: a PDF for the proton and a fragmentation function for the pion. When a user convolves this grid with the two functions, they must either pass the functions in the right order to avoid calculating the following nonsense,

pion pion -> proton + X,

or the program needs to figure out the right order itself, but that only works if the information is available somewhere, which I believe it isn't.

I believe the PDF metadata is the natural place to store this information, and as far as I understand there are four different kinds of functions:

  1. unpolarized PDFs
  2. polarized PDFs
  3. unpolarized FFs
  4. polarized FFs

Two examples that already have some of this information are MAPFF10NLOPIp and NNFF10_PIm_lo which have SetType: fragfn.

One proposal that is backwards compatible (AFAIK):

  • SetType: can be either fragfn or pdf. If this field isn't present, one can assume it to have the value pdf.
  • Polarized: can be either true or false. If this field isn't present, assume it to be false. Together with the field above one can decode all four combinations.