178 if self.cfg_ana.copyMETsByValue:
179 self.met = ROOT.pat.MET(self.handles[
'met'].product()[0])
180 if self.cfg_ana.doMetNoPU: self.metNoPU = ROOT.pat.MET(self.handles[
'nopumet'].product()[0])
182 self.met = self.handles[
'met'].product()[0]
183 if self.cfg_ana.doMetNoPU: self.metNoPU = self.handles[
'nopumet'].product()[0]
185 if self.recalibrateMET ==
"type1":
186 type1METCorr = getattr(event,
'type1METCorr'+self.jetAnalyzerPostFix)
187 self.type1METCorrector.correct(self.met, type1METCorr)
188 elif self.recalibrateMET ==
True:
189 deltaMetJEC = getattr(event,
'deltaMetFromJEC'+self.jetAnalyzerPostFix)
190 self.applyDeltaMet(self.met, deltaMetJEC)
191 if self.applyJetSmearing:
192 deltaMetSmear = getattr(event,
'deltaMetFromJetSmearing'+self.jetAnalyzerPostFix)
193 self.applyDeltaMet(self.met, deltaMetSmear)
196 if (
not self.cfg_ana.copyMETsByValue)
and getattr(self.cfg_ana,
'makeShiftedMETs',
True):
198 for obj
in 'JetEn',
'JetRes',
'MuonEn',
'ElectronEn',
'PhotonEn',
'TauEn',
'UnclusteredEn':
199 for sh
in 'Up',
'Down':
200 shifts.append( (obj+sh, getattr(self.met,obj+sh)) )
201 shifts.append( (
'NoShift', self.met.NoShift) )
202 for name,i
in shifts:
204 m = ROOT.pat.MET(self.met)
205 if self.old74XMiniAODs:
206 if key > 12: key = 12
207 elif key <= 3: key = {
'JetEnUp':0,
'JetEnDown':1,
'JetResUp':2,
'JetResDown':3 }[name]
208 m.setP4(self.met.shiftedP4(key))
209 setattr(event,
"met{0}_shifted_{1}".
format(self.cfg_ana.collectionPostFix, i),m)
210 setattr(event,
"met{0}_shifted_{1}".
format(self.cfg_ana.collectionPostFix, name),m)
212 self.met_sig = self.met.significance()
213 self.met_sumet = self.met.sumEt()
215 if self.old74XMiniAODs
and self.recalibrateMET !=
"type1":
216 oldraw = self.met.shiftedP2_74x(12,0);
218 px, py = oldraw.px, oldraw.py
220 px, py = self.met.uncorPx(), self.met.uncorPy()
221 self.met_raw = ROOT.reco.Particle.LorentzVector(px,py,0,hypot(px,py))
223 if hasattr(event,
'zll_p4'):
224 self.adduParaPerp(self.met,event.zll_p4,
"_zll")
225 self.adduParaPerp(self.met_raw, event.zll_p4,
"_zll")
226 setattr(event,
"met_raw"+self.cfg_ana.collectionPostFix, self.met_raw)
227 setattr(event,
"met_raw.upara_zll"+self.cfg_ana.collectionPostFix, self.met_raw.upara_zll)
228 setattr(event,
"met_raw.uperp_zll"+self.cfg_ana.collectionPostFix, self.met_raw.uperp_zll)
230 if hasattr(event,
'gamma_p4'):
231 self.adduParaPerp(self.met,event.gamma_p4,
"_gamma")
232 self.adduParaPerp(self.met_raw, event.gamma_p4,
"_gamma")
233 setattr(event,
"met_raw"+self.cfg_ana.collectionPostFix, self.met_raw)
234 setattr(event,
"met_raw.upara_gamma"+self.cfg_ana.collectionPostFix, self.met_raw.upara_gamma)
235 setattr(event,
"met_raw.uperp_gamma"+self.cfg_ana.collectionPostFix, self.met_raw.uperp_gamma)
237 if hasattr(event,
"met"+self.cfg_ana.collectionPostFix):
raise RuntimeError,
"Event already contains met with the following postfix: "+self.cfg_ana.collectionPostFix
238 setattr(event,
"met"+self.cfg_ana.collectionPostFix, self.met)
239 if self.cfg_ana.doMetNoPU: setattr(event,
"metNoPU"+self.cfg_ana.collectionPostFix, self.metNoPU)
240 setattr(event,
"met_sig"+self.cfg_ana.collectionPostFix, self.met_sig)
241 setattr(event,
"met_sumet"+self.cfg_ana.collectionPostFix, self.met_sumet)
243 genMET = self.met.genMET()
245 setattr(event,
"met_genPt"+self.cfg_ana.collectionPostFix, genMET.pt())
246 setattr(event,
"met_genPhi"+self.cfg_ana.collectionPostFix, genMET.phi())
248 setattr(event,
"met_genPt"+self.cfg_ana.collectionPostFix, float(
'nan'))
249 setattr(event,
"met_genPhi"+self.cfg_ana.collectionPostFix, float(
'nan'))
251 if self.cfg_ana.doMetNoMu
and hasattr(event,
'selectedMuons'):
252 self.makeMETNoMu(event)
254 if self.cfg_ana.doMetNoEle
and hasattr(event,
'selectedElectrons'):
255 self.makeMETNoEle(event)
257 if self.cfg_ana.doMetNoPhoton
and hasattr(event,
'selectedPhotons'):
258 self.makeMETNoPhoton(event)