Handling multiple diphotons per event & sync of diphoton preselection
We need to sync the implementation of diphoton preselection in higgs_dna.taggers.diphoton_tagger
with diphoton preselection from flashgg
.
The selection in diphoton_tagger
has an option "use_central_nano"
which indicates whether cuts using the branches that are missing in central nanoAOD but necessary for the diphoton preselection will be used. If "use_central_nano" = False
, the following cuts are omitted/changed:
- omitted:
trkSumPtHollowConeDR03 < 6.0
(for EB/EE low R9 only) - changed:
photonIso
andchargedHadronIso
are replaced by cuts usingpfRelIso03_all
andpfRelIso03_chg
The script examples/diphoton_preselection_comparisons.py
compares the efficiency of diphoton preselection on both data and MC.
The difference in efficiencies is (eff with central nanoAOD variables vs. eff with using added variables, ratio):
- data: 0.0105 vs. 0.0101, ratio: 1.039
- bkg MC (GJets): 0.0026 vs. 0.0025, ratio: 1.048
- signal MC (ttH): 0.4458 vs. 0.4438, ratio: 1.005
My takeaways from these numbers are:
- These help justify adding the missing variables for diphoton preselection to central nanoAOD
- For developing the framework (i.e. for building code, not for physics studies), it is probably fine to use central nanoAOD whenever necessary.
Related to syncing the diphoton preselection with flashgg
, we need to decide on the correct/best way to deal with events that have multiple diphoton candidates. In general, we want Tagger
s to be able to consider multiple diphoton candidates per event, but they should only tag one per event (I believe?). A couple things I'm unsure of:
- If a
Tagger
has multiple diphoton candidates in a single event pass its selection, what is the criteria for choosing a "best" diphoton candidate? Is it a global rule (common to all taggers) or specific to each tagger? - Can two diphoton candidates in the same event be tagged by multiple taggers? E.g. should it be allowed for
TTHTagger
to select the first diphoton candidate in an event whileTHQTagger
selects the second diphoton candidate in an event?
To-do list:
-
Decide on correct/best method of dealing with multiple diphoton candidates per event, update TagSequence
and/orTagger
s accordingly. -
Sync diphoton preselection (as computed on nanoAODs with added branches) with flashgg
. -
Clean up higgs_dna.taggers.diphoton_tagger
implementation: hard-code any values that should not be changed (for improved readability & preventing users' changing things they shouldn't), rather than reading everything from an optionsjson