diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx b/Trigger/TrigAlgorithms/TrigMuonEF/src/MuonChainFilterAlg.cxx index 4cfa79340b39e4f44a3cb36b24f565ce52276122..3110d9bcd2a377c66095df5d55baf32358caaecb 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 40bf4c4370386d52c26a01f6e7aa4580cf3fcf62..f06ac03644a0661c7125e941051e42f5849a6bb8 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 125532d328340ff32086b37537e09e17e6040498..ee45b85d7a143e0a373afa59cd039a1915301e6f 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)