KIT-CMS / Excalibur

Analysis repository for Z+Jet studies
1 stars 4 forks source link

Implement reading pileup jet ID working point from external ROOT file. #78

Closed dsavoiu closed 2 years ago

dsavoiu commented 2 years ago

This PR implements the newest recommendations for the pileup jet ID for ultra legacy analyses, as described on the CMS TWiki at PileupJetIDUL.

These indicate that different cuts on the MVA full discriminant should be used depending on the jet pT and absolute rapidity. The code on master currently only supports comparing the discriminant to a fixed value irrepective of the phase space region. This PR adds the option to read pT/|η|-dependent threshold values from an external ROOT file. The values are supplied as a TH2F with bins of pT on the x-axis and bins of |η| on the y-axis. A ROOT file is provided with TH2Fs for the Loose, Medium and Tight working points for all data years from 2016-2018, as given in the TWiki.

Main changes

I've run some tests with current 2018UL inputs and everything seems to work as expected. Please try it out and report any issues or improvement suggestions.

dsavoiu commented 2 years ago

The issue is how the producer knows what the bin bounds and threshold values are. You would need to supply them somehow, e.g. via a config key. But then you would need to come up with a way to encode this information into a string. It's IMO better to outsource the binning and factors to an external ROOT file and just provide that to the producer. If needed, one can just rerun the make... script without changing the Excalibur code or config.

BTW, this is the approach we have for other eta-dependent things, e.g. jet eta/phi cleaning or lepton scale factors.