From 7f05518967a11517ecc4458209ea4916681aff49 Mon Sep 17 00:00:00 2001 From: Sunanda Date: Fri, 30 Jul 2021 18:49:37 +0200 Subject: [PATCH 1/2] Modify the AlCaRecoProducer for HBHEMuon --- .../HcalAlCaRecoProducers/BuildFile.xml | 1 + .../plugins/AlCaHBHEMuonFilter.cc | 118 ++++++++++-------- .../ALCARECOHcalCalHBHEMuonFilter_cff.py | 2 +- .../python/alcaHBHEMuonFilter_cfi.py | 14 --- 4 files changed, 65 insertions(+), 70 deletions(-) delete mode 100644 Calibration/HcalAlCaRecoProducers/python/alcaHBHEMuonFilter_cfi.py diff --git a/Calibration/HcalAlCaRecoProducers/BuildFile.xml b/Calibration/HcalAlCaRecoProducers/BuildFile.xml index c47c409b0583e..70a45f24766ba 100644 --- a/Calibration/HcalAlCaRecoProducers/BuildFile.xml +++ b/Calibration/HcalAlCaRecoProducers/BuildFile.xml @@ -24,6 +24,7 @@ + diff --git a/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc b/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc index 5c79a9ba8dc5e..b107708e58300 100644 --- a/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc +++ b/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc @@ -135,70 +135,68 @@ bool AlCaHBHEMuonFilter::filter(edm::Event& iEvent, edm::EventSetup const& iSetu << std::endl; #endif //Step1: Find if the event passes one of the chosen triggers + bool ok(false); /////////////////////////////TriggerResults - edm::Handle triggerResults; - iEvent.getByToken(tok_trigRes_, triggerResults); - if (triggerResults.isValid()) { - bool ok(false); - std::vector modules; - const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults); - const std::vector& triggerNames_ = triggerNames.triggerNames(); - for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) { - int hlt = triggerResults->accept(iHLT); - for (unsigned int i = 0; i < trigNames_.size(); ++i) { - if (triggerNames_[iHLT].find(trigNames_[i]) != std::string::npos) { - if (hlt > 0) { - ok = true; - } + if (trigNames_.empty()) { + ok = true; + } else { + edm::Handle triggerResults; + iEvent.getByToken(tok_trigRes_, triggerResults); + if (triggerResults.isValid()) { + std::vector modules; + const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults); + const std::vector& triggerNames_ = triggerNames.triggerNames(); + for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) { + int hlt = triggerResults->accept(iHLT); + for (unsigned int i = 0; i < trigNames_.size(); ++i) { + if (triggerNames_[iHLT].find(trigNames_[i]) != std::string::npos) { + if (hlt > 0) { + ok = true; + } #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Trigger " << triggerNames_[iHLT] << " Flag " << hlt - << ":" << ok << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Trigger " << triggerNames_[iHLT] << " Flag " << hlt << ":" << ok << std::endl; #endif - } + } + } } } - if (ok) { - //Step2: Get geometry/B-field information - const MagneticField* bField = &(iSetup.getData(tok_magField_)); - const CaloGeometry* geo = &(iSetup.getData(tok_geom_)); - - // Relevant blocks from iEvent - edm::Handle _Muon; - iEvent.getByToken(tok_Muon_, _Muon); + } + if (ok) { + //Step2: Get geometry/B-field information + const MagneticField* bField = &(iSetup.getData(tok_magField_)); + const CaloGeometry* geo = &(iSetup.getData(tok_geom_)); + + // Relevant blocks from iEvent + edm::Handle _Muon; + iEvent.getByToken(tok_Muon_, _Muon); #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon Handle " << _Muon.isValid() << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon Handle " << _Muon.isValid() << std::endl; #endif - if (_Muon.isValid()) { - for (reco::MuonCollection::const_iterator RecMuon = _Muon->begin(); RecMuon != _Muon->end(); ++RecMuon) { + if (_Muon.isValid()) { + for (reco::MuonCollection::const_iterator RecMuon = _Muon->begin(); RecMuon != _Muon->end(); ++RecMuon) { #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon:Track " << RecMuon->track().isNonnull() - << " innerTrack " << RecMuon->innerTrack().isNonnull() << " outerTrack " - << RecMuon->outerTrack().isNonnull() << " globalTrack " - << RecMuon->globalTrack().isNonnull() << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon:Track " << RecMuon->track().isNonnull() + << " innerTrack " << RecMuon->innerTrack().isNonnull() << " outerTrack " + << RecMuon->outerTrack().isNonnull() << " globalTrack " + << RecMuon->globalTrack().isNonnull() << std::endl; #endif - if ((RecMuon->track().isNonnull()) && (RecMuon->innerTrack().isNonnull()) && - (RecMuon->outerTrack().isNonnull()) && (RecMuon->globalTrack().isNonnull())) { - const reco::Track* pTrack = (RecMuon->innerTrack()).get(); - spr::propagatedTrackID trackID = spr::propagateCALO(pTrack, geo, bField, false); + if ((RecMuon->track().isNonnull()) && (RecMuon->innerTrack().isNonnull()) && + (RecMuon->outerTrack().isNonnull()) && (RecMuon->globalTrack().isNonnull())) { + const reco::Track* pTrack = (RecMuon->innerTrack()).get(); + spr::propagatedTrackID trackID = spr::propagateCALO(pTrack, geo, bField, false); #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Propagate: ECAL " << trackID.okECAL << " to HCAL " - << trackID.okHCAL << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Propagate: ECAL " << trackID.okECAL << " to HCAL " + << trackID.okHCAL << std::endl; #endif - double trackIso = RecMuon->isolationR03().sumPt; - double caloIso = RecMuon->isolationR03().emEt + RecMuon->isolationR03().hadEt; - double isolR04 = - ((RecMuon->pfIsolationR04().sumChargedHadronPt + - std::max(0., - RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt - - (0.5 * RecMuon->pfIsolationR04().sumPUPt))) / - RecMuon->pt()); - bool isoCut = (pfCut_) ? (isolR04 < pfIsoCut_) : ((trackIso < trackIsoCut_) && (caloIso < caloIsoCut_)); - if ((trackID.okECAL) && (trackID.okHCAL) && isoCut) { - accept = true; - break; - } - } - } + double trackIso = RecMuon->isolationR03().sumPt; + double caloIso = RecMuon->isolationR03().emEt + RecMuon->isolationR03().hadEt; + double isolR04 = ((RecMuon->pfIsolationR04().sumChargedHadronPt + std::max(0., RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt - (0.5 * RecMuon->pfIsolationR04().sumPUPt))) / RecMuon->pt()); + bool isoCut = (pfCut_) ? (isolR04 < pfIsoCut_) : ((trackIso < trackIsoCut_) && (caloIso < caloIsoCut_)); + if ((trackID.okECAL) && (trackID.okHCAL) && isoCut) { + accept = true; + break; + } + } } } } @@ -245,8 +243,18 @@ void AlCaHBHEMuonFilter::fillDescriptions(edm::ConfigurationDescriptions& descri //The following says we do not know what parameters are allowed so do no validation // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); + std::vector triggers = {"HLT_IsoMu","HLT_Mu"}; + desc.add("ProcessName", "HLT"); + desc.add("TriggerResultLabel", edm::InputTag("TriggerResults","","HLT")); + desc.add("MuonLabel", edm::InputTag("muons")); + desc.add("MinimumMuonP", 10.0); + desc.add >("Triggers", triggers); + desc.add("PFCut", true); + desc.add("PFIsolationCut", 0.12); + desc.add("TrackIsolationCut", 3.0); + desc.add("CaloIsolationCut", 5.0); + desc.add("PreScale", 2); + descriptions.add("AlcaHBHEMuonFilter", desc); } //define this as a plug-in diff --git a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalHBHEMuonFilter_cff.py b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalHBHEMuonFilter_cff.py index bf0aa48a53f29..451c8900c697b 100644 --- a/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalHBHEMuonFilter_cff.py +++ b/Calibration/HcalAlCaRecoProducers/python/ALCARECOHcalCalHBHEMuonFilter_cff.py @@ -9,7 +9,7 @@ throw = False #dont throw except on unknown path name ) -from Calibration.HcalAlCaRecoProducers.alcaHBHEMuonFilter_cfi import * +from Calibration.HcalAlCaRecoProducers.AlcaHBHEMuonFilter_cfi import * seqALCARECOHcalCalHBHEMuonFilter = cms.Sequence(ALCARECOHcalCalHBHEMuonFilterHLT * AlcaHBHEMuonFilter) diff --git a/Calibration/HcalAlCaRecoProducers/python/alcaHBHEMuonFilter_cfi.py b/Calibration/HcalAlCaRecoProducers/python/alcaHBHEMuonFilter_cfi.py deleted file mode 100644 index 577bc5e8daf51..0000000000000 --- a/Calibration/HcalAlCaRecoProducers/python/alcaHBHEMuonFilter_cfi.py +++ /dev/null @@ -1,14 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -AlcaHBHEMuonFilter = cms.EDFilter("AlCaHBHEMuonFilter", - ProcessName = cms.string("HLT"), - TriggerResultLabel= cms.InputTag("TriggerResults","","HLT"), - MuonLabel = cms.InputTag("muons"), - MinimumMuonP = cms.double(10.0), - Triggers = cms.vstring("HLT_IsoMu","HLT_Mu"), - PFCut = cms.bool(True), - PFIsolationCut = cms.double(0.12), - TrackIsolationCut = cms.double(3.0), - CaloIsolationCut = cms.double(5.0), - PreScale = cms.int32(2), - ) From a8db517d8c8c8f08dbbdd102034cf95c771d318e Mon Sep 17 00:00:00 2001 From: Sunanda Date: Fri, 30 Jul 2021 19:05:24 +0200 Subject: [PATCH 2/2] Code check --- .../plugins/AlCaHBHEMuonFilter.cc | 66 ++++++++++--------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc b/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc index b107708e58300..d641028461442 100644 --- a/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc +++ b/Calibration/HcalAlCaRecoProducers/plugins/AlCaHBHEMuonFilter.cc @@ -147,17 +147,18 @@ bool AlCaHBHEMuonFilter::filter(edm::Event& iEvent, edm::EventSetup const& iSetu const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults); const std::vector& triggerNames_ = triggerNames.triggerNames(); for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) { - int hlt = triggerResults->accept(iHLT); - for (unsigned int i = 0; i < trigNames_.size(); ++i) { - if (triggerNames_[iHLT].find(trigNames_[i]) != std::string::npos) { - if (hlt > 0) { - ok = true; - } + int hlt = triggerResults->accept(iHLT); + for (unsigned int i = 0; i < trigNames_.size(); ++i) { + if (triggerNames_[iHLT].find(trigNames_[i]) != std::string::npos) { + if (hlt > 0) { + ok = true; + } #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Trigger " << triggerNames_[iHLT] << " Flag " << hlt << ":" << ok << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Trigger " << triggerNames_[iHLT] << " Flag " << hlt + << ":" << ok << std::endl; #endif - } - } + } + } } } } @@ -175,28 +176,33 @@ bool AlCaHBHEMuonFilter::filter(edm::Event& iEvent, edm::EventSetup const& iSetu if (_Muon.isValid()) { for (reco::MuonCollection::const_iterator RecMuon = _Muon->begin(); RecMuon != _Muon->end(); ++RecMuon) { #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon:Track " << RecMuon->track().isNonnull() - << " innerTrack " << RecMuon->innerTrack().isNonnull() << " outerTrack " - << RecMuon->outerTrack().isNonnull() << " globalTrack " - << RecMuon->globalTrack().isNonnull() << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Muon:Track " << RecMuon->track().isNonnull() + << " innerTrack " << RecMuon->innerTrack().isNonnull() << " outerTrack " + << RecMuon->outerTrack().isNonnull() << " globalTrack " + << RecMuon->globalTrack().isNonnull() << std::endl; #endif - if ((RecMuon->track().isNonnull()) && (RecMuon->innerTrack().isNonnull()) && - (RecMuon->outerTrack().isNonnull()) && (RecMuon->globalTrack().isNonnull())) { - const reco::Track* pTrack = (RecMuon->innerTrack()).get(); - spr::propagatedTrackID trackID = spr::propagateCALO(pTrack, geo, bField, false); + if ((RecMuon->track().isNonnull()) && (RecMuon->innerTrack().isNonnull()) && + (RecMuon->outerTrack().isNonnull()) && (RecMuon->globalTrack().isNonnull())) { + const reco::Track* pTrack = (RecMuon->innerTrack()).get(); + spr::propagatedTrackID trackID = spr::propagateCALO(pTrack, geo, bField, false); #ifdef EDM_ML_DEBUG - edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Propagate: ECAL " << trackID.okECAL << " to HCAL " - << trackID.okHCAL << std::endl; + edm::LogVerbatim("HBHEMuon") << "AlCaHBHEMuonFilter::Propagate: ECAL " << trackID.okECAL << " to HCAL " + << trackID.okHCAL << std::endl; #endif - double trackIso = RecMuon->isolationR03().sumPt; - double caloIso = RecMuon->isolationR03().emEt + RecMuon->isolationR03().hadEt; - double isolR04 = ((RecMuon->pfIsolationR04().sumChargedHadronPt + std::max(0., RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt - (0.5 * RecMuon->pfIsolationR04().sumPUPt))) / RecMuon->pt()); - bool isoCut = (pfCut_) ? (isolR04 < pfIsoCut_) : ((trackIso < trackIsoCut_) && (caloIso < caloIsoCut_)); - if ((trackID.okECAL) && (trackID.okHCAL) && isoCut) { - accept = true; - break; - } - } + double trackIso = RecMuon->isolationR03().sumPt; + double caloIso = RecMuon->isolationR03().emEt + RecMuon->isolationR03().hadEt; + double isolR04 = + ((RecMuon->pfIsolationR04().sumChargedHadronPt + + std::max(0., + RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt - + (0.5 * RecMuon->pfIsolationR04().sumPUPt))) / + RecMuon->pt()); + bool isoCut = (pfCut_) ? (isolR04 < pfIsoCut_) : ((trackIso < trackIsoCut_) && (caloIso < caloIsoCut_)); + if ((trackID.okECAL) && (trackID.okHCAL) && isoCut) { + accept = true; + break; + } + } } } } @@ -243,9 +249,9 @@ void AlCaHBHEMuonFilter::fillDescriptions(edm::ConfigurationDescriptions& descri //The following says we do not know what parameters are allowed so do no validation // Please change this to state exactly what you do use, even if it is no parameters edm::ParameterSetDescription desc; - std::vector triggers = {"HLT_IsoMu","HLT_Mu"}; + std::vector triggers = {"HLT_IsoMu", "HLT_Mu"}; desc.add("ProcessName", "HLT"); - desc.add("TriggerResultLabel", edm::InputTag("TriggerResults","","HLT")); + desc.add("TriggerResultLabel", edm::InputTag("TriggerResults", "", "HLT")); desc.add("MuonLabel", edm::InputTag("muons")); desc.add("MinimumMuonP", 10.0); desc.add >("Triggers", triggers);