diff --git a/python/postprocessing/modules/jme/jetmetUncertainties.py b/python/postprocessing/modules/jme/jetmetUncertainties.py index fea9ccb8748..5e4a83bfd66 100644 --- a/python/postprocessing/modules/jme/jetmetUncertainties.py +++ b/python/postprocessing/modules/jme/jetmetUncertainties.py @@ -237,9 +237,20 @@ def analyze(self, event): # match reconstructed jets to generator level ones # (needed to evaluate JER scale factors and uncertainties) + def resolution_matching(jet, genjet): + '''Helper function to match to gen based on pt difference''' + params = ROOT.PyJetParametersWrapper() + params.setJetEta(jet.eta) + params.setJetPt(jet.pt) + params.setRho(rho) + + resolution = self.jetSmearer.jer.getResolution(params) + + return abs(jet.pt - genjet.pt) < 3*resolution*jet.pt + if not self.isData: - pairs = matchObjectCollection(jets, genJets) - lowPtPairs = matchObjectCollection(lowPtJets, genJets) + pairs = matchObjectCollection(jets, genJets, dRmax=0.2, presel=resolution_matching) + lowPtPairs = matchObjectCollection(lowPtJets, genJets, dRmax=0.2, presel=resolution_matching) pairs.update(lowPtPairs) for iJet, jet in enumerate(itertools.chain(jets, lowPtJets)):