From c24439ed1375b88eef7173a58c90ff71298547c2 Mon Sep 17 00:00:00 2001 From: Seungjin Yang Date: Tue, 8 Feb 2022 14:06:55 +0900 Subject: [PATCH] Fix GEM Offline DQM for GE2/1 Demonstrator. --- .../Muon/interface/GEMEfficiencyAnalyzer.h | 4 ++ .../gemEfficiencyAnalyzerCosmics_cfi.py | 26 ++++--- .../Muon/python/gemEfficiencyAnalyzer_cfi.py | 36 +++++----- .../gemEfficiencyHarvesterCosmics_cfi.py | 4 +- .../Muon/python/gemEfficiencyHarvester_cfi.py | 4 +- DQMOffline/Muon/src/GEMEfficiencyAnalyzer.cc | 71 +++++++++++++++++-- 6 files changed, 110 insertions(+), 35 deletions(-) diff --git a/DQMOffline/Muon/interface/GEMEfficiencyAnalyzer.h b/DQMOffline/Muon/interface/GEMEfficiencyAnalyzer.h index da0810b8024e0..a24645d4a2f25 100644 --- a/DQMOffline/Muon/interface/GEMEfficiencyAnalyzer.h +++ b/DQMOffline/Muon/interface/GEMEfficiencyAnalyzer.h @@ -61,6 +61,7 @@ class GEMEfficiencyAnalyzer : public GEMOfflineDQMBase { inline bool isInsideOut(const reco::Track &); + bool skipGEMStation(const int); std::vector buildGEMLayers(const edm::ESHandle &); const reco::Track *getTrack(const reco::Muon &); std::pair getStartingState(const reco::TransientTrack &, @@ -97,6 +98,9 @@ class GEMEfficiencyAnalyzer : public GEMOfflineDQMBase { int eta_nbins_; double eta_low_; double eta_up_; + bool monitor_ge11_; + bool monitor_ge21_; + bool monitor_ge0_; // data mebers derived from parameters MuonServiceProxy *muon_service_; diff --git a/DQMOffline/Muon/python/gemEfficiencyAnalyzerCosmics_cfi.py b/DQMOffline/Muon/python/gemEfficiencyAnalyzerCosmics_cfi.py index f02a7b9c70ad4..31dcde6fc34de 100644 --- a/DQMOffline/Muon/python/gemEfficiencyAnalyzerCosmics_cfi.py +++ b/DQMOffline/Muon/python/gemEfficiencyAnalyzerCosmics_cfi.py @@ -6,23 +6,29 @@ gemEfficiencyAnalyzerCosmics = _gemEfficiencyAnalyzerCosmicsDefault.clone( ServiceParameters = MuonServiceProxy.ServiceParameters.clone(), - muonTag = cms.InputTag('muons'), - name = cms.untracked.string('Cosmic 2-Leg STA Muon'), - folder = cms.untracked.string('GEM/Efficiency/type1'), + muonTag = 'muons', + name = 'Cosmic 2-Leg STA Muon', + folder = 'GEM/Efficiency/type1', ) gemEfficiencyAnalyzerCosmicsOneLeg = _gemEfficiencyAnalyzerCosmicsDefault.clone( ServiceParameters = MuonServiceProxy.ServiceParameters.clone(), - muonTag = cms.InputTag('muons1Leg'), - name = cms.untracked.string('Cosmic 1-Leg STA Muon'), - folder = cms.untracked.string('GEM/Efficiency/type2'), + muonTag = 'muons1Leg', + name = 'Cosmic 1-Leg STA Muon', + folder = 'GEM/Efficiency/type2', ) from Configuration.Eras.Modifier_phase2_GEM_cff import phase2_GEM phase2_GEM.toModify(gemEfficiencyAnalyzerCosmics, - etaNbins=cms.untracked.int32(15), - etaUp=cms.untracked.double(3.0)) + etaNbins = 15, + etaUp = 3.0, + monitorGE21 = True, + monitorGE0 = True, +) phase2_GEM.toModify(gemEfficiencyAnalyzerCosmicsOneLeg, - etaNbins=cms.untracked.int32(15), - etaUp=cms.untracked.double(3.0)) + etaNbins = 15, + etaUp = 3.0, + monitorGE21 = True, + monitorGE0 = True, +) diff --git a/DQMOffline/Muon/python/gemEfficiencyAnalyzer_cfi.py b/DQMOffline/Muon/python/gemEfficiencyAnalyzer_cfi.py index 36ef16761d4a8..55791948668ab 100644 --- a/DQMOffline/Muon/python/gemEfficiencyAnalyzer_cfi.py +++ b/DQMOffline/Muon/python/gemEfficiencyAnalyzer_cfi.py @@ -27,30 +27,34 @@ gemEfficiencyAnalyzerTightGlb = _gemEfficiencyAnalyzerDefault.clone( ServiceParameters = MuonServiceProxy.ServiceParameters.clone(), - folder = cms.untracked.string('GEM/Efficiency/type1'), - muonTag = cms.InputTag('gemOfflineDQMTightGlbMuons'), - name = cms.untracked.string('Tight GLB Muon'), - useGlobalMuon = cms.untracked.bool(True), + folder = 'GEM/Efficiency/type1', + muonTag = 'gemOfflineDQMTightGlbMuons', + name = 'Tight GLB Muon', + useGlobalMuon = True, ) gemEfficiencyAnalyzerSta = _gemEfficiencyAnalyzerDefault.clone( ServiceParameters = MuonServiceProxy.ServiceParameters.clone(), muonTag = cms.InputTag("gemOfflineDQMStaMuons"), - folder = cms.untracked.string('GEM/Efficiency/type2'), - name = cms.untracked.string('STA Muon'), - useGlobalMuon = cms.untracked.bool(False), + folder = 'GEM/Efficiency/type2', + name = 'STA Muon', + useGlobalMuon = False, ) from Configuration.Eras.Modifier_phase2_GEM_cff import phase2_GEM -phase2_GEM.toModify( - gemEfficiencyAnalyzerTightGlb, - etaNbins=cms.untracked.int32(15), - etaUp=cms.untracked.double(3.0)) - -phase2_GEM.toModify( - gemEfficiencyAnalyzerSta, - etaNbins=cms.untracked.int32(15), - etaUp=cms.untracked.double(3.0)) +phase2_GEM.toModify(gemEfficiencyAnalyzerTightGlb, + etaNbins = 15, + etaUp = 3.0, + monitorGE21 = True, + monitorGE0 = True, +) + +phase2_GEM.toModify(gemEfficiencyAnalyzerSta, + etaNbins = 15, + etaUp = 3.0, + monitorGE21 = True, + monitorGE0 = True, +) gemEfficiencyAnalyzerTightGlbSeq = cms.Sequence( cms.ignore(gemOfflineDQMTightGlbMuons) * diff --git a/DQMOffline/Muon/python/gemEfficiencyHarvesterCosmics_cfi.py b/DQMOffline/Muon/python/gemEfficiencyHarvesterCosmics_cfi.py index ec549d2cd7e78..f5ca9b8281906 100644 --- a/DQMOffline/Muon/python/gemEfficiencyHarvesterCosmics_cfi.py +++ b/DQMOffline/Muon/python/gemEfficiencyHarvesterCosmics_cfi.py @@ -6,9 +6,9 @@ from DQMOffline.Muon.gemEfficiencyAnalyzerCosmics_cfi import gemEfficiencyAnalyzerCosmicsOneLeg as _gemEfficiencyAnalyzerCosmicsOneLeg gemEfficiencyHarvesterCosmics = _gemEfficiencyHarvesterDefault.clone( - folder = cms.untracked.string(_gemEfficiencyAnalyzerCosmics.folder.value()), + folder = _gemEfficiencyAnalyzerCosmics.folder.value(), ) gemEfficiencyHarvesterCosmicsOneLeg = _gemEfficiencyHarvesterDefault.clone( - folder = cms.untracked.string(_gemEfficiencyAnalyzerCosmicsOneLeg.folder.value()), + folder = _gemEfficiencyAnalyzerCosmicsOneLeg.folder.value(), ) diff --git a/DQMOffline/Muon/python/gemEfficiencyHarvester_cfi.py b/DQMOffline/Muon/python/gemEfficiencyHarvester_cfi.py index f65f3db46dce6..709905668a85f 100644 --- a/DQMOffline/Muon/python/gemEfficiencyHarvester_cfi.py +++ b/DQMOffline/Muon/python/gemEfficiencyHarvester_cfi.py @@ -6,9 +6,9 @@ from DQMOffline.Muon.gemEfficiencyAnalyzer_cfi import gemEfficiencyAnalyzerSta as _gemEfficiencyAnalyzerSta gemEfficiencyHarvesterTightGlb = _gemEfficiencyHarvesterDefault.clone( - folder = cms.untracked.string(_gemEfficiencyAnalyzerTightGlb.folder.value()) + folder = _gemEfficiencyAnalyzerTightGlb.folder.value() ) gemEfficiencyHarvesterSta = _gemEfficiencyHarvesterDefault.clone( - folder = cms.untracked.string(_gemEfficiencyAnalyzerSta.folder.value()) + folder = _gemEfficiencyAnalyzerSta.folder.value() ) diff --git a/DQMOffline/Muon/src/GEMEfficiencyAnalyzer.cc b/DQMOffline/Muon/src/GEMEfficiencyAnalyzer.cc index e76215474b3d8..3811db36e1dbc 100644 --- a/DQMOffline/Muon/src/GEMEfficiencyAnalyzer.cc +++ b/DQMOffline/Muon/src/GEMEfficiencyAnalyzer.cc @@ -36,6 +36,9 @@ GEMEfficiencyAnalyzer::GEMEfficiencyAnalyzer(const edm::ParameterSet& pset) eta_nbins_ = pset.getUntrackedParameter("etaNbins"); eta_low_ = pset.getUntrackedParameter("etaLow"); eta_up_ = pset.getUntrackedParameter("etaUp"); + monitor_ge11_ = pset.getUntrackedParameter("monitorGE11"); + monitor_ge21_ = pset.getUntrackedParameter("monitorGE21"); + monitor_ge0_ = pset.getUntrackedParameter("monitorGE0"); const edm::ParameterSet&& muon_service_parameter = pset.getParameter("ServiceParameters"); muon_service_ = new MuonServiceProxy(muon_service_parameter, consumesCollector()); @@ -70,6 +73,9 @@ void GEMEfficiencyAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& des desc.addUntracked("etaNbins", 9); desc.addUntracked("etaLow", 1.4); desc.addUntracked("etaUp", 2.3); + desc.addUntracked("monitorGE11", true); + desc.addUntracked("monitorGE21", false); + desc.addUntracked("monitorGE0", false); { edm::ParameterSetDescription psd0; psd0.setAllowAnything(); @@ -98,6 +104,9 @@ void GEMEfficiencyAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& des desc.addUntracked("etaNbins", 9); desc.addUntracked("etaLow", 1.4); desc.addUntracked("etaUp", 2.3); + desc.addUntracked("monitorGE11", true); + desc.addUntracked("monitorGE21", false); + desc.addUntracked("monitorGE0", false); { edm::ParameterSetDescription psd0; psd0.setAllowAnything(); @@ -152,6 +161,10 @@ void GEMEfficiencyAnalyzer::bookEfficiencyMomentum(DQMStore::IBooker& ibooker, c const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const GEMDetId&& key = getReStKey(region_id, station_id); const TString&& name_suffix = GEMUtils::getSuffixName(region_id, station_id); const TString&& title_suffix = GEMUtils::getSuffixTitle(region_id, station_id); @@ -181,6 +194,10 @@ void GEMEfficiencyAnalyzer::bookEfficiencyChamber(DQMStore::IBooker& ibooker, co const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const std::vector&& superchambers = station->superChambers(); if (not checkRefs(superchambers)) { edm::LogError(kLogCategory_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl; @@ -217,6 +234,10 @@ void GEMEfficiencyAnalyzer::bookEfficiencyEtaPartition(DQMStore::IBooker& ibooke const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const std::vector&& superchambers = station->superChambers(); if (not checkRefs(superchambers)) { edm::LogError(kLogCategory_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl; @@ -251,6 +272,10 @@ void GEMEfficiencyAnalyzer::bookEfficiencyDetector(DQMStore::IBooker& ibooker, c const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const std::vector&& superchambers = station->superChambers(); if (not checkRefs(superchambers)) { edm::LogError(kLogCategory_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl; @@ -288,6 +313,10 @@ void GEMEfficiencyAnalyzer::bookResolution(DQMStore::IBooker& ibooker, const edm const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const std::vector&& superchambers = station->superChambers(); if (not checkRefs(superchambers)) { edm::LogError(kLogCategory_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl; @@ -333,6 +362,10 @@ void GEMEfficiencyAnalyzer::bookMisc(DQMStore::IBooker& ibooker, const edm::ESHa const int region_id = station->region(); const int station_id = station->station(); + if (skipGEMStation(station_id)) { + continue; + } + const std::vector&& superchambers = station->superChambers(); if (not checkRefs(superchambers)) { edm::LogError(kLogCategory_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl; @@ -397,11 +430,6 @@ void GEMEfficiencyAnalyzer::analyze(const edm::Event& event, const edm::EventSet return; } - if (rechit_collection->size() < 1) { - edm::LogInfo(kLogCategory_) << "empty rechit collection" << std::endl; - return; - } - if (muon_view->empty()) { edm::LogInfo(kLogCategory_) << "empty muon collection" << std::endl; return; @@ -537,6 +565,35 @@ void GEMEfficiencyAnalyzer::analyze(const edm::Event& event, const edm::EventSet } // Muon } +bool GEMEfficiencyAnalyzer::skipGEMStation(const int station) { + bool skip = false; + + if (station == 1) { + if (not monitor_ge11_) { + LogDebug(kLogCategory_) << "skip GE11 because monitorGE11 is " << std::boolalpha << monitor_ge11_; + skip = true; + } + + } else if (station == 2) { + if (not monitor_ge21_) { + LogDebug(kLogCategory_) << "skip GE21 because monitorGE21 is " << std::boolalpha << monitor_ge21_; + skip = true; + } + + } else if (station == 0) { + if (not monitor_ge0_) { + LogDebug(kLogCategory_) << "skip GE0 because monitorGE0 is " << std::boolalpha << monitor_ge0_; + skip = true; + } + + } else { + edm::LogError(kLogCategory_) << "got an unexpected GEM station " << station << ". skip this station."; + skip = true; + } + + return skip; +} + std::vector GEMEfficiencyAnalyzer::buildGEMLayers( const edm::ESHandle& gem) { std::vector layer_vector; @@ -546,6 +603,10 @@ std::vector GEMEfficiencyAnalyzer::buildGEM const int station_id = station->station(); const bool is_ge11 = station_id == 1; + if (skipGEMStation(station_id)) { + continue; + } + // (layer_id, is_odd) - chambers std::map, std::vector > chambers_per_layer;