This is the companion code to "Simulation-based inference in the search for CP violation in leptonic WH production" (https://arxiv.org/abs/2308.02882). In this paper, we benchmarked different techniques to search for CP violation in the HWW vertex in leptonic WH production.
Compares energy-related observables, angular observables and combinations thereof with a simulation-based inference method, SALLY (Score Approximates Likelihood LocallY), that aims to reconstruct a detector-level optimal observable around the SM point.
Compares exclusion limits obtained with linearized and full likelihood ratios.
Work uses version 0.9.3 of MadMiner (https://github.com/madminer-tool/madminer), installed simply by running pip install -r requirements.txt
Requires version >= 3.3.1 of Madgraph if generating samples.
Everytime you want to generate samples, either locally or in a batch system, you should set up the download and/or linkage to the SMEFTsim model and restrict card used, by running the following command:
source setup_SMEFTsim_model.sh
To run the analysis chain the programs must be ran in a certain order:
-
setup.py: defines the Wilson coefficient and morphing setup and creates setup file.
-
gen_signal/background.py: generate signal and background samples or prepare files to run sample generation on batch systems
-
parton_level_analysis_full.py: performs analysis (simulating detector response via smearing of parton-level quantities) for the observable set with the full neutrino 4-vector ('full')
-
parton_level_analysis_met.py: performs analysis (simulating detector response via smearing of parton-level quantities) for the observable set ('met') with observable degrees of freedom, inc. neutrino pZ and CP-sensitive angular observable reconstruction
-
analysis_sample_combiner.py: combines the analysed samples
-
sally_training.py: train a multivariate method based on the score (SALLY - other methods may be added in the future)
-
compute_FisherInfo_sally.py: compute the Fisher information matrices and derive linearized limits from the SALLY method
-
compute_FisherInfo_histograms.py: compute the Fisher information matrices and derive linearized limits from the complete truth-level information, the rate or 1D/2D histograms
-
compute_full_limits.py: compute limits with the full likelihood ratio (in the asymptotic limit) from 1D/2D histograms or SALLY
Steps 3 and 4 can be run simultaneously. Steps 5 has to run before step 6, but after that, step 6, 7, 8 and 9 can be run simultaneously.
All of the scripts have an argument parser describing their API, just type script_name -h to see the list of available options.