From bcaefb96019ff85b7ec68aabe6522e70adca11ea Mon Sep 17 00:00:00 2001 From: maria Date: Mon, 12 Jan 2015 20:19:11 +0100 Subject: [PATCH 1/4] Heppy Jet: bug fix jetID with recalibration applied --- PhysicsTools/Heppy/python/physicsobjects/Jet.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/PhysicsTools/Heppy/python/physicsobjects/Jet.py b/PhysicsTools/Heppy/python/physicsobjects/Jet.py index 910b97e96d1ea..c6d482b786122 100644 --- a/PhysicsTools/Heppy/python/physicsobjects/Jet.py +++ b/PhysicsTools/Heppy/python/physicsobjects/Jet.py @@ -46,11 +46,12 @@ def jetID(self,name=""): if not self.isPFJet(): raise RuntimeError, "jetID implemented only for PF Jets" eta = abs(self.eta()); - chf = self.chargedHadronEnergyFraction(); - nhf = self.neutralHadronEnergyFraction(); - phf = self.neutralEmEnergyFraction(); - muf = self.muonEnergyFraction(); - elf = self.chargedEmEnergyFraction(); + energy = (self.p4()*self.rawFactor()).energy(); + chf = self.chargedHadronEnergy()/energy; + nhf = self.neutralHadronEnergy()/energy; + phf = self.neutralEmEnergy()/energy; + muf = self.muonEnergy()/energy; + elf = self.chargedEmEnergy()/energy; chm = self.chargedHadronMultiplicity(); npr = self.chargedMultiplicity() + self.neutralMultiplicity(); #if npr != self.nConstituents(): From 6c3d572d79cef65f767b8741e5d78eaa2d85e3bf Mon Sep 17 00:00:00 2001 From: maria Date: Mon, 12 Jan 2015 20:19:46 +0100 Subject: [PATCH 2/4] Heppy MET: add switch for JES recalibration --- .../Heppy/python/analyzers/objects/METAnalyzer.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/PhysicsTools/Heppy/python/analyzers/objects/METAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/objects/METAnalyzer.py index 795e363649cc6..6a8282efde3b0 100644 --- a/PhysicsTools/Heppy/python/analyzers/objects/METAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/objects/METAnalyzer.py @@ -68,13 +68,13 @@ def makeMETNoMu(self, event): mupy += mu.py() #subtract muon momentum and construct met - if hasattr(event, 'deltaMetFromJetSmearing'): + if self.cfg_ana.recalibrate and hasattr(event, 'deltaMetFromJetSmearing'): import ROOT px,py = event.metNoMu.px()+event.deltaMetFromJetSmearing[0]-mupx, event.metNoMu.py()+event.deltaMetFromJetSmearing[1]-mupy event.metNoMu.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, math.hypot(px,py))) px,py = event.metNoMuNoPU.px()+event.deltaMetFromJetSmearing[0]-mupx, event.metNoMuNoPU.py()+event.deltaMetFromJetSmearing[1]-mupy event.metNoMuNoPU.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, hypot(px,py))) - if hasattr(event, 'deltaMetFromJEC') and event.deltaMetFromJEC[0] != 0 and event.deltaMetFromJEC[1] != 0: + if self.cfg_ana.recalibrate and hasattr(event, 'deltaMetFromJEC') and event.deltaMetFromJEC[0] != 0 and event.deltaMetFromJEC[1] != 0: import ROOT px,py = event.metNoMu.px()+event.deltaMetFromJEC[0]-mupx, event.metNoMu.py()+event.deltaMetFromJEC[1]-mupy event.met.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, math.hypot(px,py))) @@ -85,13 +85,13 @@ def makeMETNoMu(self, event): def makeMETs(self, event): event.met = self.handles['met'].product()[0] event.metNoPU = self.handles['nopumet'].product()[0] - if hasattr(event, 'deltaMetFromJetSmearing'): + if self.cfg_ana.recalibrate and hasattr(event, 'deltaMetFromJetSmearing'): import ROOT px,py = event.met.px()+event.deltaMetFromJetSmearing[0], event.met.py()+event.deltaMetFromJetSmearing[1] event.met.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, math.hypot(px,py))) px,py = event.metNoPU.px()+event.deltaMetFromJetSmearing[0], event.metNoPU.py()+event.deltaMetFromJetSmearing[1] event.metNoPU.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, math.hypot(px,py))) - if hasattr(event, 'deltaMetFromJEC') and event.deltaMetFromJEC[0] != 0 and event.deltaMetFromJEC[1] != 0: + if self.cfg_ana.recalibrate and hasattr(event, 'deltaMetFromJEC') and event.deltaMetFromJEC[0] != 0 and event.deltaMetFromJEC[1] != 0: import ROOT px,py = event.met.px()+event.deltaMetFromJEC[0], event.met.py()+event.deltaMetFromJEC[1] event.met.setP4(ROOT.reco.Particle.LorentzVector(px,py, 0, math.hypot(px,py))) @@ -117,6 +117,7 @@ def process(self, event): setattr(METAnalyzer,"defaultConfig", cfg.Analyzer( class_object = METAnalyzer, + recalibrate = True, doTkMet = False, doMetNoMu = False, candidates='packedPFCandidates', From 22ac93c0624decadceb336d0391735cff7e7a631 Mon Sep 17 00:00:00 2001 From: maria Date: Mon, 12 Jan 2015 21:55:45 +0100 Subject: [PATCH 3/4] Heppy MET filter: add the summery bit --- PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py b/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py index 5e9195fc5bdc3..12948cb4d22ff 100644 --- a/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py +++ b/PhysicsTools/Heppy/python/analyzers/core/TriggerBitAnalyzer.py @@ -86,6 +86,7 @@ def process(self, event): "trkPOG_manystripclus53X" : [ "Flag_trkPOG_manystripclus53X" ], "trkPOG_toomanystripclus53X" : [ "Flag_trkPOG_toomanystripclus53X" ], "trkPOG_logErrorTooManyClusters" : [ "Flag_trkPOG_logErrorTooManyClusters" ], + "METFilters" : [ "Flag_METFilters" ], } ) ) From de41ba8dc1d7fd27dd2c1c219b1112675d048905 Mon Sep 17 00:00:00 2001 From: maria Date: Tue, 13 Jan 2015 10:28:30 +0100 Subject: [PATCH 4/4] Heppy Photons: bug fix : remove the full5x5 for 72X --- PhysicsTools/Heppy/python/physicsobjects/Photon.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PhysicsTools/Heppy/python/physicsobjects/Photon.py b/PhysicsTools/Heppy/python/physicsobjects/Photon.py index 371b25a057375..9ee22dc9fa879 100644 --- a/PhysicsTools/Heppy/python/physicsobjects/Photon.py +++ b/PhysicsTools/Heppy/python/physicsobjects/Photon.py @@ -6,15 +6,15 @@ class Photon(PhysicsObject ): ''' def hOVERe(self): # return self.physObj.full5x5_hadTowOverEm() - hadTowDepth1O = self.physObj.hadTowDepth1OverEm() * (self.physObj.superCluster().energy()/self.physObj.full5x5_e5x5() if self.physObj.full5x5_e5x5() else 1) - hadTowDepth2O = self.physObj.hadTowDepth2OverEm() * (self.physObj.superCluster().energy()/self.physObj.full5x5_e5x5() if self.physObj.full5x5_e5x5() else 1) + hadTowDepth1O = self.physObj.hadTowDepth1OverEm() * (self.physObj.superCluster().energy()/self.physObj.e5x5() if self.physObj.e5x5() else 1) + hadTowDepth2O = self.physObj.hadTowDepth2OverEm() * (self.physObj.superCluster().energy()/self.physObj.e5x5() if self.physObj.e5x5() else 1) return hadTowDepth1O + hadTowDepth2O def r9(self): - return self.physObj.full5x5_r9() + return self.physObj.r9() def sigmaIetaIeta(self): - return self.physObj.full5x5_sigmaIetaIeta() + return self.physObj.sigmaIetaIeta() def chargedHadronIso(self): return self.physObj.chargedHadronIso()