diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/EFMuonMonMT.cxx b/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/EFMuonMonMT.cxx index 3e6e8cbf7883e6e2af0a66c7b8ded918d89d106b..b97e9f985b752bfe0b003815aa4c9defb5076aad 100644 --- a/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/EFMuonMonMT.cxx +++ b/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/EFMuonMonMT.cxx @@ -31,7 +31,7 @@ StatusCode EFMuonMonMT :: fillVariablesPerChain(const EventContext &ctx, const s const float ZERO_LIMIT = 0.00001; // EFSA - std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContSA = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_Muons_"); + std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContSA = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_Muons_.*"); for (const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer>& muSALinkInfo : featureContSA) { ATH_CHECK( muSALinkInfo.isValid() ); @@ -51,7 +51,7 @@ StatusCode EFMuonMonMT :: fillVariablesPerChain(const EventContext &ctx, const s // EFCB - std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContCB = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_MuonsCB"); + std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContCB = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_MuonsCB.*"); for (const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer>& muCBLinkInfo : featureContCB) { ATH_CHECK( muCBLinkInfo.isValid() ); diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/MuonMatchingTool.cxx b/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/MuonMatchingTool.cxx index 45f548c21739ca1ab1e495f6e6cf911cf8d17a88..a071cbcc357327ed6f106ae62dcb333a69c612b2 100644 --- a/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/MuonMatchingTool.cxx +++ b/Trigger/TrigMonitoring/TrigMuonMonitoringMT/src/MuonMatchingTool.cxx @@ -75,7 +75,7 @@ const xAOD::Muon* MuonMatchingTool :: matchEFSA(const xAOD::Muon *mu, std::strin MuonTrack = mu->trackParticle(type); if (MuonTrack) break; } - return MuonTrack ? match<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_Muons_", &MuonMatchingTool::trigPosForMatchSATrack) : nullptr; + return MuonTrack ? match<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_Muons_.*", &MuonMatchingTool::trigPosForMatchSATrack) : nullptr; } const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> MuonMatchingTool :: matchEFSALinkInfo(const xAOD::Muon *mu, std::string trig) const { @@ -91,7 +91,7 @@ const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> MuonMatchingTool :: matc MuonTrack = mu->trackParticle(type); if (MuonTrack) break; } - return MuonTrack ? matchLinkInfo<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_Muons_", &MuonMatchingTool::trigPosForMatchSATrack) : muonLinkInfo; + return MuonTrack ? matchLinkInfo<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_Muons_.*", &MuonMatchingTool::trigPosForMatchSATrack) : muonLinkInfo; } @@ -113,7 +113,7 @@ const xAOD::Muon* MuonMatchingTool :: matchEFSAReadHandle( const EventContext& c const xAOD::Muon* MuonMatchingTool :: matchEFCB( const xAOD::Muon *mu, std::string trig, bool &pass) const { ATH_MSG_DEBUG("MuonMonitoring::matchEFCB()"); const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary); - return MuonTrack ? match<xAOD::Muon>( MuonTrack, trig, m_EFreqdR, pass, "HLT_MuonsCB", &MuonMatchingTool::trigPosForMatchCBTrack) : nullptr; + return MuonTrack ? match<xAOD::Muon>( MuonTrack, trig, m_EFreqdR, pass, "HLT_MuonsCB.*", &MuonMatchingTool::trigPosForMatchCBTrack) : nullptr; } const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> MuonMatchingTool :: matchEFCBLinkInfo( const xAOD::Muon *mu, std::string trig) const { @@ -121,7 +121,7 @@ const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> MuonMatchingTool :: matc bool pass = false; TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> muonLinkInfo; const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary); - return MuonTrack ? matchLinkInfo<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_MuonsCB", &MuonMatchingTool::trigPosForMatchCBTrack) : muonLinkInfo; + return MuonTrack ? matchLinkInfo<xAOD::Muon>(MuonTrack, trig, m_EFreqdR, pass, "HLT_MuonsCB.*", &MuonMatchingTool::trigPosForMatchCBTrack) : muonLinkInfo; } const xAOD::Muon* MuonMatchingTool :: matchEFCBReadHandle( const EventContext& ctx, const xAOD::Muon *mu) const { diff --git a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.icc b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.icc index 6bf1ad5c9f9ac2084b67e17c4e60a393aca1470e..34d6931f0cb022ecdb095bf2f5ced53293ce84d3 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.icc +++ b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.icc @@ -3,6 +3,7 @@ */ #include "AsgMessaging/MessageCheck.h" +#include <regex> namespace TrigCompositeUtils { @@ -139,8 +140,8 @@ namespace TrigCompositeUtils { return; } auto it = std::remove_if(vector.begin(), vector.end(), [&](const ElementLink<CONTAINER>& el) { - return (el.dataID().find(containerSGKey) == std::string::npos); - }); + return !std::regex_match( el.dataID(), std::regex(containerSGKey) ); + }); // Collection has been re-ordered to put the bad elements at the end vector.erase(it, vector.end()); } diff --git a/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx b/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx index 7ae89a7d3f021351bf8af542d667142d981278de..5c48d906ab1d3b31f436c8fc3ef1bdd65e078944 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx @@ -492,7 +492,7 @@ int main ATLAS_NOT_THREAD_SAFE () { printFeatures(features_final_em, "[Explicit Final Electron Features] HLT_mu_em_chain", log); // Check filtering on the collection name. Note sub-string matching, omitting the "My". - std::vector< LinkInfo<xAOD::ElectronContainer> > features_final_em_correctContainer = recursiveGetFeaturesOfType<xAOD::ElectronContainer>(graph_HLT_mu_em_chain, "ElectronContainer"); + std::vector< LinkInfo<xAOD::ElectronContainer> > features_final_em_correctContainer = recursiveGetFeaturesOfType<xAOD::ElectronContainer>(graph_HLT_mu_em_chain, ".*ElectronContainer.*"); std::vector< LinkInfo<xAOD::ElectronContainer> > features_final_em_incorrectContainer = recursiveGetFeaturesOfType<xAOD::ElectronContainer>(graph_HLT_mu_em_chain, "WrongContainerName"); VALUE ( features_final_em_correctContainer.size() ) EXPECTED ( features_final_em.size() ); VALUE ( features_final_em_incorrectContainer.size() ) EXPECTED ( 0 );