This part of the code corresponds to the RANODE section in the paper "Generator Based Inference (GBI)" by Chi Lung Cheng, Ranit Das, Runze Li, Radha Mastandrea, Vinicius Mikuni, Benjamin Nachman, David Shih and Gup Singh.
The environment requirement for RANODE based inference is available in requirements.txt
, it can be installed by running:
conda env create -f environment.yml --prefix /path/gbi_ranode_env
To setup the rest of environment variables, run
source setup.sh
During first executation, user will be prompted to enter the input and output directory. The input directory should contain the files listed in the Dataset section.
- Simulated QCD background from official LHCO dataset: https://zenodo.org/records/4536377/files/events_anomalydetection_v2.features.h5
- Extra simulated QCD background : https://zenodo.org/records/8370758/files/events_anomalydetection_qcd_extra_inneronly_features.h5
- Extended parametric W->X(qq)Y(qq) signal : https://zenodo.org/records/15384386/files/events_anomalydetection_extended_Z_XY_qq_parametric.h5
- Signal ensembles with trainvaltest splitting : lumi_matched_train_val_test_split_signal_features_W_qq.h5
"Luigi Analysis Workflow (LAW)" is used to construct this project. First, one needs to setup the law task list by running
conda activate /path/gbi_ranode_env
source setup.sh
law index
After this different tasks can be run with law by commands like:
law run taskname --version output_postfix --flags XXX
To get likelihood scanning plot at one signal injection strength, one can run:
law run FittingScanResults --version test_0 --ensemble 1 --mx 100 --my 500 --s-ratio-index 11 --workers 3
where --ensemble sets the dataset ensemble used in this scan, --mx and --my specify the mass of signal model, and --s-ratio-index represents the index of true signal injection strength. The flag --workers specifies the number of threads used.
To get the likelihood scanning at different signal strengths, with 10 ensembles to smooth the performance, one can run:
law run ScanOverTrueMuEnsembleAvg --version test_0 --mx 100 --my 500 --num-ensemble 10 --workers 3
To plot the jet mass learned and generated by the model, one can run:
law run SignalGenerationPlot --version test_0 --mx 100 --my 500 --num-ensemble 10 --num-generated-sigs 1000000 --workers 3