From 14c31974b811d534425e11e58d9c4db562b48bf1 Mon Sep 17 00:00:00 2001 From: Yohei Yamaguchi <yohei.yamaguchi@cern.ch> Date: Wed, 18 Nov 2020 15:51:57 +0000 Subject: [PATCH] modify filtering for L2 inside-out --- .../TrigMuonEF/src/MuonChainFilterAlg.cxx | 29 ++++++++++++++----- .../TrigMuonEF/src/MuonChainFilterAlg.h | 2 ++ .../HLTMenuConfig/Muon/MuonSequenceSetup.py | 5 ++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx b/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx index 4cfa79340b3..3110d9bcd2a 100644 --- a/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx +++ b/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx @@ -41,7 +41,7 @@ StatusCode MuonChainFilterAlg::execute() bool pass = false; //First check if there is anything in the filter list - if(m_filterChains.size()==0){ + if(!m_notGate && m_filterChains.size()==0){ ATH_MSG_DEBUG("Nothing to filter"); setFilterPassed(true); return StatusCode::SUCCESS; @@ -64,14 +64,27 @@ StatusCode MuonChainFilterAlg::execute() auto it = find(m_filterChains.begin(), m_filterChains.end(), chainName); //if there is any chain that is active and not on //the filter list, set the filter to pass - if(it != m_filterChains.end()){ - ATH_MSG_DEBUG("chain "<<chainName<<" is on the filter list, keep looking"); + if(!m_notGate) { + if(it != m_filterChains.end()) { + ATH_MSG_DEBUG("chain "<<chainName<<" is on the filter list, keep looking"); + } + else { + ATH_MSG_DEBUG("chain "<<chainName<<" is not on the filter list. Passing"); + pass = true; + setFilterPassed(pass); + return StatusCode::SUCCESS; + } } - else{ - ATH_MSG_DEBUG("chain "<<chainName<<" is not on the filter list. Passing"); - pass = true; - setFilterPassed(pass); - return StatusCode::SUCCESS; + else { + if(it != m_filterChains.end()) { + ATH_MSG_DEBUG("chain "<<chainName<<" is on the not-filter list, Passing"); + pass = true; + setFilterPassed(pass); + return StatusCode::SUCCESS; + } + else{ + ATH_MSG_DEBUG("chain "<<chainName<<" is not on the not-filter list. keep looking"); + } } } } diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.h b/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.h index 40bf4c43703..f06ac03644a 100644 --- a/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.h +++ b/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.h @@ -41,6 +41,8 @@ class MuonChainFilterAlg : public AthAlgorithm Gaudi::Property< bool > m_writeL2muFast {this, "WriteMuFast", false, "Flag to record muFast muons" }; SG::WriteHandleKey<xAOD::L2StandAloneMuonContainer> m_muFastKey {this, "L2MuFastContainer", "MuonL2SAInfo", "Output container for muFast"}; + Gaudi::Property< bool > m_notGate {this, "NotGate", false, "filtering if not contained in ChainsToFilter" }; + }; #endif diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py index 125532d3283..ee45b85d7a1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSequenceSetup.py @@ -151,6 +151,7 @@ def muCombAlgSequence(ConfigFlags): insideoutMuonChainFilter.L2MuCombContainer = muNames.L2CBName+"IOmode" insideoutMuonChainFilter.WriteMuFast = True insideoutMuonChainFilter.WriteMuComb = True + insideoutMuonChainFilter.NotGate = True muFastIOFilterSequence = seqAND("l2muFastIOFilterSequence", [insideoutMuonChainFilter, muFastIORecoSequence]) @@ -610,11 +611,11 @@ def getInsideOutMuonChainNames(): chains =[] try: - chains += [chain.name for chain in muonSlice if "l2io" not in chain.name] + chains += [chain.name for chain in muonSlice if "l2io" in chain.name] except Exception as e: log.debug(e) try: - chains += [chain.name for chain in bphysSlice if "l2io" not in chain.name] + chains += [chain.name for chain in bphysSlice if "l2io" in chain.name] except Exception as e: log.debug(e) -- GitLab