Determining all existing variations and sub-variations
A limitation of Combine is that it cannot account for correlations between constraints on nuisance parameters. So if we want to produce inputs that Combine can use, we need to have a separate histogram for each variation \times
index. For instance (the Up
and Down
suffixes instead of up
and dn
are for compatibility with Combine):
dimuon/DYJetsToMuMu/nominal
dimuon/DYJetsToMuMu/TriggerSFStatBin0Up
dimuon/DYJetsToMuMu/TriggerSFStatBin0Down
dimuon/DYJetsToMuMu/TriggerSFStatBin1Up
dimuon/DYJetsToMuMu/TriggerSFStatBin1Down
...
dimuon/DYJetsToMuMu/TriggerSFSystUp
dimuon/DYJetsToMuMu/TriggerSFSystDown
...
In order to do this, we need to instantiate an histogram for every possible index of a given variation. We could instantiate them dynamically when new variations are encountered, but this would make hadd
non-trivial (since we'd need to merge with the nominal when a variation doesn't exist).
I would approach this problem by writing a small program that iterates over all events, collects all weight indices it encounters, and writes them down in an hadd
-friendly way (maybe as a small TTree
). This file would then be parsed before generating the histograms for Combine.
I'm opening this issue early to collect comments about the approach.