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