Skip to content

emcgrady/EFTmva

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EFTmva: multivariate discriminants for EFT

Set-up instructions

conda create -n eft_mva python=3.10.8
conda activate eft_mva

# get pytorch https://pytorch.org/get-started/locally/

pip install tqdm
pip install matplotlib
pip install pyyaml
pip install uproot awkward
pip install torch

Instructions to run

train.py allows the user to train a neural network to discriminate between the SM and either (a) a specific BSM point (specified with the option --bsm-point) or (b) events reweighed by a given term of the quadratic expansion (specified with the option --term)

Examples of usage would be

python train.py --term ctq8_ctq8 --epochs 50 --name ctq8_ctq8

to train a NN discriminating SM against the ctq8^2 term, or

python train.py --bsm-point ctq8=16 --epochs 50 --name ctq8_16
python train.py --bsm-point ctq8=12 --epochs 50 --name ctq8_12
python train.py --bsm-point ctq8=8 --epochs 50 --name ctq8_8
python train.py --bsm-point ctq8=4 --epochs 50 --name ctq8_4

to train different NNs discriminating the SM against ctq8=4,8,12,16 scenarios.

The data is provided through rootfiles that are converted to pytorch tensors. The tensors are stored in separate files for the input features, the SM weights and the BSM weights, the latter with a name specific to the BSM point / term chosen. If any of these need to be reproduced, the associated file can be erased or pass the argument --forceRebuild

The example above allows to parametrize the likelihood as a function of ctq8. The procedure to do so is implemented in utils/buildLikelihood.py (modulo cross-terms in the likelihood, to do), which takes a yaml file describing the networks trained in the previous step.

A ROC curve comparing a dedicated discriminator (the one trained against ctq8=12) against the optimal observable given by the regressed likelihood ratio.

python do_roc.py --parametric examples/ctq8_parametric.yaml  --bsm-point ctq8=12   --dedicated examples/ctq8_dedicated.yaml --name regressed_likelihood_16

To do

  • Update dataloader to IterableDataset for when we need to handle larger datasets.
  • Fetch list of WC from sample directly, if possible.
  • Read list of input variables, network architecture, regularization from configuration files.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%