This PR contains a few technical fixes and updates accumulated over time by people using this package for HLT JECs.
As discussed with the JME conveners, the plan moving forward is to use cms-jet:master as reference branch for HLT (instead of branching out in forks as it happened in the past).
Attn: @sparedes @pallabidas @lathomas @kirschen
General comments:
The updates in this PR should not interfere with any standard workflow used for Offline JECs.
The changes are mostly the addition of options found useful for HLT studies, and minor technical fixes found along the way.
A few changes go in the direction of removing HLT-specific choices inside the routines of JetMETAnalysis; I find it more transparent to add options for the user (for example, to decide which fit functions to use), rather than programs making choices under-the-curtain based on the name of a given jet collection. Arguably, JetMETAnalysis should not know the difference between HLT and Offline, it should just provide enough flexibility for a user to handle both.
Some changes are just formatting ones (these were too many to undo in full, apologies); in general, it looks like it would be useful to add a couple of scripts to apply code-formatting rules to this package as a whole.
Tested with CMSSW_11_2_0.
Main changes by file:
addition of jet_synchfit_x__hlt: the standard program jet_synchfit_x was modified significantly over time, and understanding those changes requires more time. In order not to interfere with the standard tool (i.e. jet_synchfit_x), we would just add a separate program under a different name for the time being; the plan is to remove this in the near future, as soon as we figure out what are the relevant changes needed in jet_synchfit_x (if any).
jet_response_analyzer_x.cc: added option to apply JECs on the fly. This addition seemed to be useful to apply the L1 JEC on-the-fly when preparing the inputs for the L2(+L3) fits, instead of creating a whole JRA NTuple with L1-corrected jets (which is what we were doing before, and at times requires a lot of disk space). Default behaviour of the program is unchanged.
jet_synchtest_x.cc: added options to ignore NPV, and possibly replace it with NPU(in-time). These options are meant to circumvent certain choices that are customary for Offline, but might not always apply to HLT. The number of PVs at HLT is not as good a proxy for PU as it is for Offline, so it might be preferable to plot versus the number of (in time) PU interactions rather than N(reco-PVs). Default behaviour of the program is unchanged.
JetResponseAnalyzer.cc: added option applyVtxCuts to the plugin. In the HLT case, one may want to ignore offline-like quality requirements in the count of NPV (those cuts aren't appropriate for HLT pixel vertices, for example). I think the default behaviour is preserved by the update in JetAnalyzers/python/Defaults_cff.py (ideally, one would have added a JetResponseAnalyzer::fillDescriptions method).
This PR contains a few technical fixes and updates accumulated over time by people using this package for HLT JECs. As discussed with the JME conveners, the plan moving forward is to use
cms-jet:master
as reference branch for HLT (instead of branching out in forks as it happened in the past).Attn: @sparedes @pallabidas @lathomas @kirschen
General comments:
The updates in this PR should not interfere with any standard workflow used for Offline JECs.
The changes are mostly the addition of options found useful for HLT studies, and minor technical fixes found along the way.
A few changes go in the direction of removing HLT-specific choices inside the routines of
JetMETAnalysis
; I find it more transparent to add options for the user (for example, to decide which fit functions to use), rather than programs making choices under-the-curtain based on the name of a given jet collection. Arguably,JetMETAnalysis
should not know the difference between HLT and Offline, it should just provide enough flexibility for a user to handle both.Some changes are just formatting ones (these were too many to undo in full, apologies); in general, it looks like it would be useful to add a couple of scripts to apply code-formatting rules to this package as a whole.
Tested with
CMSSW_11_2_0
.Main changes by file:
addition of
jet_synchfit_x__hlt
: the standard programjet_synchfit_x
was modified significantly over time, and understanding those changes requires more time. In order not to interfere with the standard tool (i.e.jet_synchfit_x
), we would just add a separate program under a different name for the time being; the plan is to remove this in the near future, as soon as we figure out what are the relevant changes needed injet_synchfit_x
(if any).jet_response_analyzer_x.cc
: added option to apply JECs on the fly. This addition seemed to be useful to apply the L1 JEC on-the-fly when preparing the inputs for the L2(+L3) fits, instead of creating a whole JRA NTuple with L1-corrected jets (which is what we were doing before, and at times requires a lot of disk space). Default behaviour of the program is unchanged.jet_synchtest_x.cc
: added options to ignore NPV, and possibly replace it with NPU(in-time). These options are meant to circumvent certain choices that are customary for Offline, but might not always apply to HLT. The number of PVs at HLT is not as good a proxy for PU as it is for Offline, so it might be preferable to plot versus the number of (in time) PU interactions rather than N(reco-PVs). Default behaviour of the program is unchanged.JetResponseAnalyzer.cc
: added optionapplyVtxCuts
to the plugin. In the HLT case, one may want to ignore offline-like quality requirements in the count of NPV (those cuts aren't appropriate for HLT pixel vertices, for example). I think the default behaviour is preserved by the update inJetAnalyzers/python/Defaults_cff.py
(ideally, one would have added aJetResponseAnalyzer::fillDescriptions
method).