Skip to content

Statistical inference

The final step turns the merged histograms into datacards and runs limits with Combine, via the StatInference and inference submodules. See FLAF → walkthrough, stage 5 for where this sits in the pipeline.

These commands run inside CMSSW/Combine, so prefix them with cmsEnv (or open one subshell):

cmsEnv /bin/zsh        # a CMSSW+Combine subshell

1. Create datacards

cmsEnv python3 StatInference/dc_make/create_datacards.py \
  --input  PATH_TO_SHAPES \
  --output PATH_TO_CARDS \
  --config StatInference/config/x_hh_bbww_run3.yaml

The HH→bb̄WW Run 3 configuration is x_hh_bbww_run3.yaml.

2. Run limits

law run PlotResonantLimits --version dev --datacards 'PATH_TO_CARDS/*.txt' --xsec fb --y-log

Hints:

  • add --workflow htcondor to submit to the batch system (local by default);
  • add --remove-output 4,a,y to clear previous outputs;
  • add --print-status 0 to get the workflow status and the output file name;
  • options and background: the cms-hh inference documentation.

3. Pulls & impacts

PlotPullsAndImpacts --version dev --datacards "PATH_TO_CARDS/<one_card>.txt" \
  --hh-model NO_STR --parameter-values r=1 --parameter-ranges r,-100,100 \
  --method robust --PlotPullsAndImpacts-order-by-impact True --mc-stats True \
  --PullsAndImpacts-custom-args="--expectSignal=1"

One mass point at a time

Run pulls & impacts on a single datacard, not a glob. Use --print-status 0 to find the output file and --remove-output 4,a,y to clear previous outputs.