diff --git a/PhysicsTools/NanoAOD/python/extraflags_cff.py b/PhysicsTools/NanoAOD/python/extraflags_cff.py new file mode 100644 index 0000000000000..66f246383747a --- /dev/null +++ b/PhysicsTools/NanoAOD/python/extraflags_cff.py @@ -0,0 +1,38 @@ +import FWCore.ParameterSet.Config as cms +from PhysicsTools.NanoAOD.common_cff import * + +# Bad/clone muon filters - tagging mode to keep the event +from RecoMET.METFilters.badGlobalMuonTaggersMiniAOD_cff import badGlobalMuonTaggerMAOD, cloneGlobalMuonTaggerMAOD +badGlobalMuonTagger = badGlobalMuonTaggerMAOD.clone( + taggingMode = True +) + +cloneGlobalMuonTagger = cloneGlobalMuonTaggerMAOD.clone( + taggingMode = True +) + +from RecoMET.METFilters.BadPFMuonFilter_cfi import BadPFMuonFilter +BadPFMuonTagger = BadPFMuonFilter.clone( + PFCandidates = cms.InputTag("packedPFCandidates"), + muons = cms.InputTag("slimmedMuons"), + taggingMode = True, +) + +# Bad charge hadron +from RecoMET.METFilters.BadChargedCandidateFilter_cfi import BadChargedCandidateFilter +BadChargedCandidateTagger = BadChargedCandidateFilter.clone( + PFCandidates = cms.InputTag("packedPFCandidates"), + muons = cms.InputTag("slimmedMuons"), + taggingMode = True, +) + +extraFlagsTable = cms.EDProducer("GlobalVariablesTableProducer", + variables = cms.PSet( + Flag_BadGlobalMuon = ExtVar(cms.InputTag("badGlobalMuonTagger:notBadEvent"), bool, doc = "Bad muon flag"), + Flag_CloneGlobalMuon = ExtVar(cms.InputTag("cloneGlobalMuonTagger:notBadEvent"), bool, doc = "Clone muon flag"), + Flag_BadPFMuonFilter = ExtVar(cms.InputTag("BadPFMuonTagger"), bool, doc = "Bad PF muon flag"), + Flag_BadChargedCandidateFilter = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), + ) +) + +extraFlagsProducers = cms.Sequence(badGlobalMuonTagger + cloneGlobalMuonTagger + BadPFMuonTagger + BadChargedCandidateTagger) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 73d27b607f65b..4e73f589c4f9d 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -6,6 +6,7 @@ from PhysicsTools.NanoAOD.electrons_cff import * from PhysicsTools.NanoAOD.photons_cff import * from PhysicsTools.NanoAOD.globals_cff import * +from PhysicsTools.NanoAOD.extraflags_cff import * from PhysicsTools.NanoAOD.ttbarCategorization_cff import * from PhysicsTools.NanoAOD.genparticles_cff import * from PhysicsTools.NanoAOD.particlelevel_cff import * @@ -104,6 +105,9 @@ def nanoAOD_customizeMC(process): #remove stuff _80x_sequence.remove(isoTrackTable) _80x_sequence.remove(isoTrackSequence) +#add stuff +_80x_sequence.insert(_80x_sequence.index(jetSequence), extraFlagsProducers) +_80x_sequence.insert(_80x_sequence.index(l1bits)+1, extraFlagsTable) run2_miniAOD_80XLegacy.toReplaceWith( nanoSequence, _80x_sequence) diff --git a/RecoMET/METFilters/plugins/BadGlobalMuonTagger.cc b/RecoMET/METFilters/plugins/BadGlobalMuonTagger.cc index dfe64e42c66e4..79bba78a15f74 100644 --- a/RecoMET/METFilters/plugins/BadGlobalMuonTagger.cc +++ b/RecoMET/METFilters/plugins/BadGlobalMuonTagger.cc @@ -55,6 +55,7 @@ BadGlobalMuonTagger::BadGlobalMuonTagger(const edm::ParameterSet & iConfig) : verbose_(iConfig.getUntrackedParameter ("verbose",false)) { produces>("bad"); + produces("notBadEvent"); } @@ -121,6 +122,7 @@ BadGlobalMuonTagger::filter(edm::StreamID iID, edm::Event & iEvent, const edm::E } iEvent.put(std::move(out), "bad"); + iEvent.put(std::unique_ptr(new bool(!found)), "notBadEvent"); return taggingMode_ || found; }