From 403f30fe3d30375c3ab1bcc616ed96e2ccf5ad00 Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 13:59:14 +0100 Subject: [PATCH 1/6] BadGlobalMuonTagger -> add a boolean flagging the event as good or bad --- RecoMET/METFilters/plugins/BadGlobalMuonTagger.cc | 2 ++ 1 file changed, 2 insertions(+) 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; } From 45b4e0b959802b85e1e2c5b4b4aa5590b8552f8a Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 14:00:04 +0100 Subject: [PATCH 2/6] NanoAOD file to run the bad muon / bad charged hadron modules + a table to add these to the nanoAOD event trees --- PhysicsTools/NanoAOD/python/extraflags_cff.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 PhysicsTools/NanoAOD/python/extraflags_cff.py diff --git a/PhysicsTools/NanoAOD/python/extraflags_cff.py b/PhysicsTools/NanoAOD/python/extraflags_cff.py new file mode 100644 index 0000000000000..7f27d46392e23 --- /dev/null +++ b/PhysicsTools/NanoAOD/python/extraflags_cff.py @@ -0,0 +1,30 @@ +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 +) + +# Bad charge hadron +from RecoMET.METFilters.BadChargedCandidateSummer16Filter_cfi import BadChargedCandidateSummer16Filter +BadChargedCandidateTagger = BadChargedCandidateSummer16Filter.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_BadChargedCandidate = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), + ) +) + +extraFlagsProducers = cms.Sequence(badGlobalMuonTagger + cloneGlobalMuonTagger + BadChargedCandidateTagger) From 3c1899bbccf31ab8a205894c4e5cbb209a8fca7f Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 14:01:00 +0100 Subject: [PATCH 3/6] Add the extra flags producers and table to 80X for nanoaod (flags present in 92X and beyond) --- PhysicsTools/NanoAOD/python/nano_cff.py | 4 ++++ 1 file changed, 4 insertions(+) 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) From fea5159779ee55008dd3efabfb1dffe6b61e67bd Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 15:01:21 +0100 Subject: [PATCH 4/6] Use the correct bad charged hadron module for the full 2016 dataset --- PhysicsTools/NanoAOD/python/extraflags_cff.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/extraflags_cff.py b/PhysicsTools/NanoAOD/python/extraflags_cff.py index 7f27d46392e23..c38a031ca0e55 100644 --- a/PhysicsTools/NanoAOD/python/extraflags_cff.py +++ b/PhysicsTools/NanoAOD/python/extraflags_cff.py @@ -12,8 +12,8 @@ ) # Bad charge hadron -from RecoMET.METFilters.BadChargedCandidateSummer16Filter_cfi import BadChargedCandidateSummer16Filter -BadChargedCandidateTagger = BadChargedCandidateSummer16Filter.clone( +from RecoMET.METFilters.BadChargedCandidateFilter_cfi import BadChargedCandidateFilter +BadChargedCandidateTagger = BadChargedCandidateFilter.clone( PFCandidates = cms.InputTag("packedPFCandidates"), muons = cms.InputTag("slimmedMuons"), taggingMode = True, From ee8af39596e96f485eefe7408bb91b70177c832f Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 15:02:41 +0100 Subject: [PATCH 5/6] Rename bad charged hadron flag for consistency with 94X flags --- PhysicsTools/NanoAOD/python/extraflags_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/extraflags_cff.py b/PhysicsTools/NanoAOD/python/extraflags_cff.py index c38a031ca0e55..034cb3c4fdee0 100644 --- a/PhysicsTools/NanoAOD/python/extraflags_cff.py +++ b/PhysicsTools/NanoAOD/python/extraflags_cff.py @@ -23,7 +23,7 @@ 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_BadChargedCandidate = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), + Flag_BadChargedCandidateFilter = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), ) ) From c74456a1ed5b8f6e595f4d7e9b129979b82252fb Mon Sep 17 00:00:00 2001 From: Shane Breeze Date: Wed, 18 Apr 2018 15:57:55 +0100 Subject: [PATCH 6/6] Add a flag for the BadPFMuonFilter module in 80X nanoAOD --- PhysicsTools/NanoAOD/python/extraflags_cff.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/extraflags_cff.py b/PhysicsTools/NanoAOD/python/extraflags_cff.py index 034cb3c4fdee0..66f246383747a 100644 --- a/PhysicsTools/NanoAOD/python/extraflags_cff.py +++ b/PhysicsTools/NanoAOD/python/extraflags_cff.py @@ -11,6 +11,13 @@ 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( @@ -23,8 +30,9 @@ 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 + BadChargedCandidateTagger) +extraFlagsProducers = cms.Sequence(badGlobalMuonTagger + cloneGlobalMuonTagger + BadPFMuonTagger + BadChargedCandidateTagger)