diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/CMakeLists.txt b/Trigger/TrigAnalysis/TrigDecisionTool/CMakeLists.txt index cc42264aad1e7c0d2af6ed279656d90ddd0a2b21..ada516fb04e5424dc6981efaf2f538ff572b12ba 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/CMakeLists.txt +++ b/Trigger/TrigAnalysis/TrigDecisionTool/CMakeLists.txt @@ -1,4 +1,4 @@ -# $Id: CMakeLists.txt 750388 2016-05-27 15:57:30Z krasznaa $ +# $Id: CMakeLists.txt 786880 2016-11-28 13:00:09Z krasznaa $ ################################################################################ # Package: TrigDecisionTool ################################################################################ @@ -17,10 +17,29 @@ if( XAOD_STANDALONE ) Trigger/TrigConfiguration/TrigConfInterfaces Trigger/TrigConfiguration/TrigConfL1Data Trigger/TrigEvent/TrigDecisionInterface - Trigger/TrigEvent/TrigRoiConversion + Trigger/TrigEvent/TrigRoiConversion Trigger/TrigEvent/TrigNavStructure PRIVATE Trigger/TrigEvent/TrigSteeringEvent ) +elseif( XAOD_ANALYSIS ) + atlas_depends_on_subdirs( + PUBLIC + Control/AthToolSupport/AsgTools + Control/StoreGate + Event/EventInfo + Event/xAOD/xAODBase + Event/xAOD/xAODTrigger + GaudiKernel + Trigger/TrigConfiguration/TrigConfHLTData + Trigger/TrigConfiguration/TrigConfInterfaces + Trigger/TrigConfiguration/TrigConfL1Data + Trigger/TrigEvent/TrigDecisionInterface + Trigger/TrigEvent/TrigRoiConversion + Trigger/TrigEvent/TrigNavStructure + PRIVATE + Control/AthenaBaseComps + Control/AthenaKernel + Trigger/TrigEvent/TrigSteeringEvent ) else() atlas_depends_on_subdirs( PUBLIC @@ -37,7 +56,7 @@ else() Trigger/TrigEvent/TrigDecisionEvent Trigger/TrigEvent/TrigDecisionInterface Trigger/TrigEvent/TrigMuonEvent - Trigger/TrigEvent/TrigRoiConversion + Trigger/TrigEvent/TrigRoiConversion Trigger/TrigEvent/TrigNavStructure Trigger/TrigEvent/TrigNavigation Trigger/TrigEvent/TrigStorageDefinitions @@ -62,17 +81,31 @@ if( XAOD_STANDALONE ) TrigConfHLTData TrigConfL1Data TrigNavStructure TrigRoiConversionLib PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} TrigSteeringEvent ) else() - atlas_add_library( TrigDecisionToolLib - TrigDecisionTool/*.h Root/*.cxx src/*.cxx - PUBLIC_HEADERS TrigDecisionTool - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} AsgTools EventInfo xAODBase xAODTrigger - GaudiKernel AnalysisTriggerEvent TrigConfHLTData TrigConfL1Data - TrigDecisionEvent TrigMuonEvent TrigNavStructure TrigStorageDefinitions - StoreGateLib TrigNavigationLib TrigRoiConversionLib - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps TrigSteeringEvent - AthenaKernel ) + if( XAOD_ANALYSIS ) + atlas_add_library( TrigDecisionToolLib + TrigDecisionTool/*.h Root/*.cxx src/*.cxx + PUBLIC_HEADERS TrigDecisionTool + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} AsgTools EventInfo xAODBase + xAODTrigger GaudiKernel TrigConfHLTData TrigConfL1Data + TrigNavStructure StoreGateLib TrigRoiConversionLib + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps + TrigSteeringEvent AthenaKernel ) + else() + atlas_add_library( TrigDecisionToolLib + TrigDecisionTool/*.h Root/*.cxx src/*.cxx + PUBLIC_HEADERS TrigDecisionTool + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} AsgTools EventInfo xAODBase + xAODTrigger GaudiKernel AnalysisTriggerEvent TrigConfHLTData + TrigConfL1Data TrigDecisionEvent TrigMuonEvent TrigNavStructure + TrigStorageDefinitions StoreGateLib TrigNavigationLib + TrigRoiConversionLib + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps + TrigSteeringEvent AthenaKernel ) + endif() atlas_add_component( TrigDecisionTool src/components/*.cxx diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx index 387d0790d64bdbe904b59c43a36e20c2194a6586..3c91afc99a743fe678fc11d409e2b2de26bbef4e 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx @@ -140,16 +140,20 @@ void Trig::CacheGlobalMemory::update(const TrigConf::HLTChainList* confChains, ATH_MSG_DEBUG( "Updating configuration, done with L1" ); //clear cache completely becuase underlying config objects might have changed + for(auto& c : m_l2chainsCache){delete c.second;} m_l2chainsCache.clear(); + for(auto& c : m_efchainsCache){delete c.second;} m_efchainsCache.clear(); m_mConfChains.clear(); if ( ! confChains ) { ATH_MSG_WARNING( "No chains in configuration, probably run w/o HLT" ); } else { + ATH_MSG_DEBUG("Updating Configuration chains. Number of conf chains: " << m_confChains->size()); + // updating internal map of conf chains (this map is only used for fast lookup) for(auto ch : *m_confChains) { - m_mConfChains[ch->chain_name().c_str()] = ch; + m_mConfChains[ch->chain_name()] = ch; } // updating internal cache of HLT::Chains @@ -266,9 +270,10 @@ const HLT::Chain* Trig::CacheGlobalMemory::chain(const TrigConf::HLTChain& ch) c } const TrigConf::HLTChain* Trig::CacheGlobalMemory::config_chain(const std::string& name) const { - ChainHashMap_t::const_iterator f = m_mConfChains.find(name.c_str()); - if ( f == m_mConfChains.end() ) + ChainHashMap_t::const_iterator f = m_mConfChains.find(name); + if ( f == m_mConfChains.end() ){ return 0; + } return f->second; } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx index 8dd6e14b796068f2291e1b39e7f0ddb589a83594..25e26aadd22f0a74e6c6fee96beb64cc6b46d3e8 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx @@ -229,6 +229,16 @@ StatusCode Trig::TrigDecisionTool::finalize() { // release all chaingroups m_navigation->reset(); + + auto it = std::find(s_instances.begin(), s_instances.end(), name()); + if(it != s_instances.end()){ + s_instances.erase(it); + } + else{ + ATH_MSG_ERROR("could not find instance name in instance list, but must have been added in ::initialize(). Name: " << name()); + return StatusCode::FAILURE; + } + ATH_MSG_INFO("TDT finalized and removed from instance list"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h index 268a3bc1dc366c9b71e322c530f99e48a38fd393..55e2338ecab98503ffa06063e67dab8805b89807 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h @@ -199,15 +199,7 @@ namespace Trig { const TrigConf::HLTChainList* m_confChains; //!< all chains configuration mutable const xAOD::TrigCompositeContainer* m_expressStreamContainer; - struct eqstr - { - bool operator()(const char* s1, const char* s2) const - { - return strcmp(s1, s2) == 0; - } - }; - - typedef std::unordered_map<const char*, const TrigConf::HLTChain*, std::hash<const char*>, eqstr> ChainHashMap_t; + typedef std::unordered_map<std::string, const TrigConf::HLTChain*> ChainHashMap_t; ChainHashMap_t m_mConfChains; //!< map of conf chains char m_bgCode; //!< the encoded bunchgroup information