hide and seek: how pdfs can conceal new physics


This webpage supplements the study arXiv:2307.10370, which addresses possible New Physics contamination in PDF fits. 

The code, files, and runcards used to run and analyse contaminated fits be found in the following Github repo:


which contains the files:

  • README.md : instructions to run and analyse New Physics contaminated PDF fits
  • files_for_commondata and files_for_theory: data and theory predictions to be added to the conda environment of your NNPDF installation
  • filters.yaml: contains the cuts of our datasets
  • code: folder containing the contamination provider required to launch contaminated fits
  • example_contamination.yaml: example runcard of a contaminated fit
  • example_analysis: example analysis runcard containing the necessary information to produce a NNPDF validphys report


1. Install NNPDF4.0

Our analysis makes use of the NNPDF4.0 methodology (arXiv:2109.02653, arXiv:2109.02671), so make sure to install it first by following the instructions given here.

2. Running contaminated fits

Preparing data and theory predictions

Before launching a contaminated fit, you will need to ensure that the C-factors, FK-tables, commondata, systype and plotting files are all in the correct place. This can be achieved using:

$cp -r files_for_commondata/* /path/to/miniconda3/envs/contamination-dev/share/NNPDF/data/commondata/.

$cp -r files_for_theory/* /path/to/miniconda3/envs/contamination-dev/share/NNPDF/data/theory_num/.

where theory_num is the appropriate theory you would like to work with (e.g. theory_53, theory_200) and contamination-dev is the name of the conda environment of your NNPDF4.0 installation.

You will also need to copy and paste the filters.yaml file to the correct location, via:

$cp filters.yaml /path/to/nnpdf/installation/nnpdf/validphys2/src/validphys/cuts/.

Launching contaminated fits

The code for launching contaminated fits is contained in the code folder. Running the code follows the standard NNPDF pipeline (which can be found here), with a small modification in the first step.

Instead of running vp-setupfit on a runcard first, you should run:

$validphys example_contamination.yaml -x contamination_provider.py

The example_contamination.yaml file is the basic runcard for the contaminated fit, together with some additional namespaces. Executing the above command will do the following:

– Create new SMEFT C-factor files in the correct directory, scaled to the required user-specified values.
– Write a new runcard with the C-factor names changed to appropriate scaled names, allowing the scaled values to be used.
– Launch vp-setupfit.
– Launch vp-rebuild-data to build the correct commondata.
– Remove the runcard containing the SMEFT C-factors, and replace it with a SM runcard.

After this, the pipeline is identical to a normal NNPDF fit. Run n3fit, evolven3fit and postfit as described here.

3. Analysing contaminated fits

The code for analysing contaminated fits is contained in the analysis_code folder. Run the code via the command:

$validphys example_analysis.yaml -x analysis_provider.py

The example_analysis.yaml file contains all the information needed for the analysis. A validphys report will be produced from the analysis which can be uploaded to the server and shared.