diff --git a/HLT/Trigger/TrigControl/TrigServices/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigServices/CMakeLists.txt index a5e93225cf88d62d35548529e1c0831a5d09a24e..ddcaddd525d3f7452901616e663bb83fecf737c5 100644 --- a/HLT/Trigger/TrigControl/TrigServices/CMakeLists.txt +++ b/HLT/Trigger/TrigControl/TrigServices/CMakeLists.txt @@ -27,7 +27,7 @@ atlas_depends_on_subdirs( PUBLIC Trigger/TrigEvent/TrigNavigation Trigger/TrigMonitoring/TrigMonitorBase Trigger/TrigSteer/TrigInterfaces - Trigger/TrigSteer/TrigSteering ) + Trigger/TrigSteer/TrigOutputHandling ) # External dependencies: find_package( Boost COMPONENTS filesystem thread system ) @@ -43,12 +43,12 @@ atlas_add_library( TrigServicesLib INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} ${TDAQ_INCLUDE_DIRS} PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES} AthenaBaseComps AthenaKernel ByteStreamCnvSvcLib ByteStreamData EventInfo xAODEventInfo GaudiKernel TrigKernel TrigSteeringEvent StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData_test TrigDataAccessMonitoringLib TrigROBDataProviderSvcLib TrigNavigationLib TrigMonitorBaseLib TrigInterfacesLib - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CORAL_LIBRARIES} AthenaPoolUtilities TrigSteering ) + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CORAL_LIBRARIES} AthenaPoolUtilities TrigOutputHandlingLib ) atlas_add_component( TrigServices src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${TDAQ_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES} AthenaBaseComps AthenaKernel StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData ByteStreamData_test EventInfo xAODEventInfo GaudiKernel TrigKernel TrigDataAccessMonitoringLib TrigROBDataProviderSvcLib TrigSteeringEvent AthenaPoolUtilities TrigNavigationLib TrigMonitorBaseLib TrigInterfacesLib TrigServicesLib TrigSteering ) + LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${TDAQ_LIBRARIES} AthenaBaseComps AthenaKernel StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData ByteStreamData_test EventInfo xAODEventInfo GaudiKernel TrigKernel TrigDataAccessMonitoringLib TrigROBDataProviderSvcLib TrigSteeringEvent AthenaPoolUtilities TrigNavigationLib TrigMonitorBaseLib TrigInterfacesLib TrigServicesLib TrigOutputHandlingLib ) # Install files from the package: atlas_install_python_modules( python/*.py ) diff --git a/HLT/Trigger/TrigControl/TrigServices/TrigServices/HltEventLoopMgr.h b/HLT/Trigger/TrigControl/TrigServices/TrigServices/HltEventLoopMgr.h index b04c5c00edb252cf6bf6bf2de0da40d05ef6830c..da3585348f98d53a764987f9a80b43a6010b3c14 100644 --- a/HLT/Trigger/TrigControl/TrigServices/TrigServices/HltEventLoopMgr.h +++ b/HLT/Trigger/TrigControl/TrigServices/TrigServices/HltEventLoopMgr.h @@ -37,6 +37,8 @@ class CondAttrListCollection; class EventContext; class EventInfo; +class HLTResultMT; +class HLTResultMTMaker; class IAlgExecStateSvc; class IAlgorithm; class IAlgResourcePool; @@ -51,10 +53,6 @@ class TrigCOOLUpdateHelper; namespace coral { class AttributeList; } -namespace HLT { - class HLTResultMT; - class ResultBuilderMT; -} /** @class HltEventLoopMgr * @brief AthenaMT event loop manager for running HLT online @@ -189,7 +187,7 @@ private: ToolHandle<TrigCOOLUpdateHelper> m_coolHelper; /// Tool to create HLTResult - ToolHandle<HLT::ResultBuilderMT> m_hltResultBuilder; + ToolHandle<HLTResultMTMaker> m_hltResultMaker; // ------------------------- Optional services/tools ------------------------- /// Reference to a THistSvc which implements also the Hlt additions @@ -233,7 +231,7 @@ private: /// StoreGate key for reading EventInfo SG::ReadHandleKey<EventInfo> m_eventInfoRHKey; /// StoreGate key for reading the HLT result - SG::ReadHandleKey<HLT::HLTResultMT> m_hltResultRHKey; + SG::ReadHandleKey<HLTResultMT> m_hltResultRHKey; // ------------------------- Other private members --------------------------- /// typedef used for detector mask fields diff --git a/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx b/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx index 72a1bbd40426b6b0ca31417c1fa04dd4411819db..6838e7accb7bcc7c98dfdbd0c7e698623b46420a 100644 --- a/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx +++ b/HLT/Trigger/TrigControl/TrigServices/src/HltEventLoopMgr.cxx @@ -7,8 +7,8 @@ #include "TrigCOOLUpdateHelper.h" #include "TrigKernel/HltExceptions.h" #include "TrigSORFromPtreeHelper.h" -#include "TrigSteering/ResultBuilderMT.h" -#include "TrigSteeringEvent/HLTResultMT.h" +#include "TrigOutputHandling/HLTResultMT.h" +#include "TrigOutputHandling/HLTResultMTMaker.h" // Athena includes #include "AthenaKernel/EventContextClid.h" @@ -81,7 +81,7 @@ HltEventLoopMgr::HltEventLoopMgr(const std::string& name, ISvcLocator* svcLoc) m_evtSelector("EvtSel", name), m_outputCnvSvc("OutputCnvSvc", name), m_coolHelper("TrigCOOLUpdateHelper", this), - m_hltResultBuilder("HLT::ResultBuilderMT/ResultBuilder", this), + m_hltResultMaker("HLTResultMTMaker", this), m_detector_mask(0xffffffff, 0xffffffff, 0, 0), m_localEventNumber(0), m_threadPoolSize(-1), @@ -100,7 +100,7 @@ HltEventLoopMgr::HltEventLoopMgr(const std::string& name, ISvcLocator* svcLoc) declareProperty("EvtSel", m_evtSelector); declareProperty("OutputCnvSvc", m_outputCnvSvc); declareProperty("CoolUpdateTool", m_coolHelper); - declareProperty("ResultBuilder", m_hltResultBuilder); + declareProperty("ResultMaker", m_hltResultMaker); declareProperty("SchedulerSvc", m_schedulerName="AvalancheSchedulerSvc", "Name of the scheduler to be used"); declareProperty("WhiteboardSvc", m_whiteboardName="EventDataSvc", @@ -281,7 +281,7 @@ StatusCode HltEventLoopMgr::initialize() // COOL helper ATH_CHECK(m_coolHelper.retrieve()); // HLT result builder - ATH_CHECK(m_hltResultBuilder.retrieve()); + ATH_CHECK(m_hltResultMaker.retrieve()); //---------------------------------------------------------------------------- // Initialise data handle keys @@ -291,7 +291,7 @@ StatusCode HltEventLoopMgr::initialize() // EventInfo ReadHandle ATH_CHECK(m_eventInfoRHKey.initialize()); // HLTResultMT ReadHandle (created dynamically from the result builder property) - m_hltResultRHKey = m_hltResultBuilder->resultName(); + m_hltResultRHKey = m_hltResultMaker->resultName(); ATH_CHECK(m_hltResultRHKey.initialize()); //---------------------------------------------------------------------------- @@ -400,7 +400,7 @@ StatusCode HltEventLoopMgr::finalize() m_outputCnvSvc); releaseTool(m_coolHelper, - m_hltResultBuilder); + m_hltResultMaker); releaseSmartIF(m_whiteboard, m_algResourcePool, @@ -431,8 +431,8 @@ StatusCode HltEventLoopMgr::finalize() // Release tool handles if (m_coolHelper.release().isFailure()) ATH_REPORT_MESSAGE(MSG::WARNING) << "Failed to release tool " << m_coolHelper.typeAndName(); - if (m_hltResultBuilder.release().isFailure()) - ATH_REPORT_MESSAGE(MSG::WARNING) << "Failed to release tool " << m_hltResultBuilder.typeAndName(); + if (m_hltResultMaker.release().isFailure()) + ATH_REPORT_MESSAGE(MSG::WARNING) << "Failed to release tool " << m_hltResultMaker.typeAndName(); // Release SmartIFs m_whiteboard.reset(); @@ -1115,16 +1115,16 @@ StatusCode HltEventLoopMgr::failedEvent(hltonl::PSCErrorCode errorCode, const Ev auto hltResultRH = SG::makeHandle(m_hltResultRHKey,eventContext); if (!hltResultRH.isValid()) { // Try to build a result if not available - m_hltResultBuilder->buildResult(eventContext).ignore(); + m_hltResultMaker->makeResult(eventContext).ignore(); } - std::unique_ptr<HLT::HLTResultMT> hltResultPtr; + std::unique_ptr<HLTResultMT> hltResultPtr; if (!hltResultRH.isValid()) - hltResultPtr = std::make_unique<HLT::HLTResultMT>(); + hltResultPtr = std::make_unique<HLTResultMT>(); else - hltResultPtr = std::make_unique<HLT::HLTResultMT>(*hltResultRH); + hltResultPtr = std::make_unique<HLTResultMT>(*hltResultRH); - SG::WriteHandleKey<HLT::HLTResultMT> hltResultWHK(m_hltResultRHKey.key()+"_FailedEvent"); + SG::WriteHandleKey<HLTResultMT> hltResultWHK(m_hltResultRHKey.key()+"_FailedEvent"); hltResultWHK.initialize(); auto hltResultWH = SG::makeHandle(hltResultWHK,eventContext); if (hltResultWH.record(std::move(hltResultPtr)).isFailure()) { @@ -1327,7 +1327,7 @@ HltEventLoopMgr::DrainSchedulerStatusCode HltEventLoopMgr::drainScheduler() // HLT output handling //-------------------------------------------------------------------------- // Call the result builder to record HLTResultMT in SG - sc = m_hltResultBuilder->buildResult(*thisFinishedEvtContext); + sc = m_hltResultMaker->makeResult(*thisFinishedEvtContext); if (sc.isFailure()) atLeastOneFailed = true; HLT_DRAINSCHED_CHECK(sc, "Failed to create the HLT result object", hltonl::PSCErrorCode::NO_HLT_RESULT, *thisFinishedEvtContext); diff --git a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResultMT.h b/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResultMT.h deleted file mode 100644 index a38fa409487c3bbc0e1e68500d4db8db674327ca..0000000000000000000000000000000000000000 --- a/Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/HLTResultMT.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef TRIGSTEERINGEVENT_HLTResultMT_H -#define TRIGSTEERINGEVENT_HLTResultMT_H - -#include "AthenaKernel/CLASS_DEF.h" -#include "eformat/StreamTag.h" -#include <vector> -#include <unordered_map> - -namespace HLT { - - /** @class HLTResultMT - * @brief A container class for data required to build online output from HLT. - * - * It is not intended to modify the stored data, but may perform extra checks and debug printouts in the - * getter/setter methods. - **/ - class HLTResultMT { - public: - /// Standard constructor - HLTResultMT(std::vector<eformat::helper::StreamTag> streamTags = {}, - std::vector<uint32_t> hltBits = {}, - std::unordered_map<uint16_t, std::vector<uint32_t> > data = {}, - std::vector<uint32_t> status = {}); - /// Copy constructor - HLTResultMT(const HLTResultMT& other); - /// Standard destructor - virtual ~HLTResultMT(); - - /// Stream tags getter - const std::vector<eformat::helper::StreamTag>& getStreamTags() const; - /// Stream tags setter - void setStreamTags(const std::vector<eformat::helper::StreamTag>& streamTags); - /// Append a stream tag - void addStreamTag(const eformat::helper::StreamTag& streamTag); - - /// HLT bits getter - const std::vector<uint32_t>& getHltBits() const; - /// HLT bits setter - void setHltBits(const std::vector<uint32_t>& bits); - /// Append a word with HLT bits - void addHltBitsWord(const uint32_t& word); - - /// Serialised data getter - const std::unordered_map<uint16_t, std::vector<uint32_t> >& getSerialisedData() const; - /// Serialised data getter for a given module ID - const std::vector<uint32_t>& getSerialisedData(uint16_t moduleId) const; - /// Serialised data setter - void setSerialisedData(const std::unordered_map<uint16_t, std::vector<uint32_t> >& data); - /// Append serialised data for a given module ID - void addSerialisedData(const uint16_t moduleId, const std::vector<uint32_t>& data); - - /// Status words getter - const std::vector<uint32_t>& getStatus() const; - /// Status words setter - void setStatus(const std::vector<uint32_t>& status); - /// Append a status word - void addStatusWord(const uint32_t& word); - - private: - /// Stream tags of the event - std::vector<eformat::helper::StreamTag> m_streamTags; - /// Serialised HLT bits (flagging which chains passed) - std::vector<uint32_t> m_hltBits; - /// Serialised result (ROBFragment payload) for each module ID (0 for full result, >0 for data scouting) - std::unordered_map<uint16_t, std::vector<uint32_t> > m_data; - /// Event status words (used to indicate processing errors) - std::vector<uint32_t> m_status; - }; -} // namespace HLT - -CLASS_DEF(HLT::HLTResultMT, 172156324, 1) - -#endif // TRIGSTEERINGEVENT_HLTResultMT_H diff --git a/Trigger/TrigSteer/TrigHLTResultByteStream/CMakeLists.txt b/Trigger/TrigSteer/TrigHLTResultByteStream/CMakeLists.txt index 16fa4fe00d3335b041b8c83fd2ccdc21445baeb0..9a0d90434ee6c2e9110bf8c281773380f58e3caf 100644 --- a/Trigger/TrigSteer/TrigHLTResultByteStream/CMakeLists.txt +++ b/Trigger/TrigSteer/TrigHLTResultByteStream/CMakeLists.txt @@ -14,7 +14,8 @@ atlas_depends_on_subdirs( PUBLIC Event/ByteStreamCnvSvcBase Event/ByteStreamData GaudiKernel - Trigger/TrigEvent/TrigSteeringEvent ) + Trigger/TrigEvent/TrigSteeringEvent + Trigger/TrigSteer/TrigOutputHandling ) # External dependencies: find_package( tdaq-common COMPONENTS eformat_write ) @@ -24,10 +25,10 @@ atlas_add_library( TrigHLTResultByteStreamLib src/*.cxx PUBLIC_HEADERS TrigHLTResultByteStream INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps SGTools ByteStreamData GaudiKernel TrigSteeringEvent StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData_test ) + LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps SGTools ByteStreamData GaudiKernel TrigSteeringEvent TrigOutputHandlingLib StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData_test ) atlas_add_component( TrigHLTResultByteStream src/components/*.cxx INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps SGTools StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData ByteStreamData_test GaudiKernel TrigSteeringEvent TrigHLTResultByteStreamLib ) + LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps SGTools StoreGateLib SGtests ByteStreamCnvSvcBaseLib ByteStreamData ByteStreamData_test GaudiKernel TrigSteeringEvent TrigOutputHandlingLib TrigHLTResultByteStreamLib ) diff --git a/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx b/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx index 146dd3a91464a68d164a58930cd4e0c7da77d756..029705ef3325a1fb256e785197b301038c782a50 100644 --- a/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx +++ b/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx @@ -4,7 +4,7 @@ // Trigger includes #include "TrigHLTResultByteStream/HLTResultMTByteStreamCnv.h" -#include "TrigSteeringEvent/HLTResultMT.h" +#include "TrigOutputHandling/HLTResultMT.h" // Athena includes #include "AthenaBaseComps/AthCheckMacros.h" @@ -74,7 +74,7 @@ StatusCode HLT::HLTResultMTByteStreamCnv::createRep(DataObject* pObj, IOpaqueAdd ATH_MSG_VERBOSE("start of " << __FUNCTION__); // Cast the DataObject to HLTResultMT - HLT::HLTResultMT* hltResult = nullptr; + HLTResultMT* hltResult = nullptr; bool castSuccessful = SG::fromStorable(pObj, hltResult); if (!castSuccessful || !hltResult) { ATH_MSG_ERROR("Failed to convert DataObject to HLTResultMT"); @@ -155,6 +155,6 @@ StatusCode HLT::HLTResultMTByteStreamCnv::createRep(DataObject* pObj, IOpaqueAdd // CLID // ============================================================================= const CLID& HLT::HLTResultMTByteStreamCnv::classID() { - return ClassID_traits<HLT::HLTResultMT>::ID(); + return ClassID_traits<HLTResultMT>::ID(); } diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMT.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMT.h new file mode 100644 index 0000000000000000000000000000000000000000..cafaf6f4372649873d0e4a05ec5c9f2f9685f20d --- /dev/null +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMT.h @@ -0,0 +1,74 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGOUTPUTHANDLING_HLTRESULTMT_H +#define TRIGOUTPUTHANDLING_HLTRESULTMT_H + +#include "AthenaKernel/CLASS_DEF.h" +#include "eformat/StreamTag.h" +#include <vector> +#include <unordered_map> + +/** @class HLTResultMT + * @brief A container class for data required to build online output from HLT. + * + * It is not intended to modify the stored data, but may perform extra checks and debug printouts in the + * getter/setter methods. + **/ +class HLTResultMT { +public: + /// Standard constructor + HLTResultMT(std::vector<eformat::helper::StreamTag> streamTags = {}, + std::vector<uint32_t> hltBits = {}, + std::unordered_map<uint16_t, std::vector<uint32_t> > data = {}, + std::vector<uint32_t> status = {}); + /// Copy constructor + HLTResultMT(const HLTResultMT& other); + /// Standard destructor + virtual ~HLTResultMT(); + + /// Stream tags getter + const std::vector<eformat::helper::StreamTag>& getStreamTags() const; + /// Stream tags setter + void setStreamTags(const std::vector<eformat::helper::StreamTag>& streamTags); + /// Append a stream tag + void addStreamTag(const eformat::helper::StreamTag& streamTag); + + /// HLT bits getter + const std::vector<uint32_t>& getHltBits() const; + /// HLT bits setter + void setHltBits(const std::vector<uint32_t>& bits); + /// Append a word with HLT bits + void addHltBitsWord(const uint32_t& word); + + /// Serialised data getter + const std::unordered_map<uint16_t, std::vector<uint32_t> >& getSerialisedData() const; + /// Serialised data getter for a given module ID + const std::vector<uint32_t>& getSerialisedData(uint16_t moduleId) const; + /// Serialised data setter + void setSerialisedData(const std::unordered_map<uint16_t, std::vector<uint32_t> >& data); + /// Append serialised data for a given module ID + void addSerialisedData(const uint16_t moduleId, const std::vector<uint32_t>& data); + + /// Status words getter + const std::vector<uint32_t>& getStatus() const; + /// Status words setter + void setStatus(const std::vector<uint32_t>& status); + /// Append a status word + void addStatusWord(const uint32_t& word); + +private: + /// Stream tags of the event + std::vector<eformat::helper::StreamTag> m_streamTags; + /// Serialised HLT bits (flagging which chains passed) + std::vector<uint32_t> m_hltBits; + /// Serialised result (ROBFragment payload) for each module ID (0 for full result, >0 for data scouting) + std::unordered_map<uint16_t, std::vector<uint32_t> > m_data; + /// Event status words (used to indicate processing errors) + std::vector<uint32_t> m_status; +}; + +CLASS_DEF(HLTResultMT, 69657051, 1) + +#endif // TRIGOUTPUTHANDLING_HLTRESULTMT_H diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMaker.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMaker.h new file mode 100644 index 0000000000000000000000000000000000000000..259f658ebe5d9e5a325fc5047218564e12bb3abb --- /dev/null +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMaker.h @@ -0,0 +1,37 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGOUTPUTHANDLING_HLTRESULTMTMAKER_H +#define TRIGOUTPUTHANDLING_HLTRESULTMTMAKER_H + +#include "TrigOutputHandling/HLTResultMT.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "StoreGate/WriteHandle.h" + +/** @class HLTResultMTMaker + * @brief Tool to create the HLTResultMT at the end of each event + **/ +class HLTResultMTMaker : public AthAlgTool { +public: + /// Standard constructor + HLTResultMTMaker(const std::string& type, const std::string& name, const IInterface* parent); + /// Standard destructor + virtual ~HLTResultMTMaker(); + + // ------------------------- IStateful methods ----------------------------- + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; + + // ------------------------- Specific methods of this tool ----------------- + /// Builds the HLTResultMT and records it in the event store + StatusCode makeResult(const EventContext& eventContext) const; + /// Return name of the HLTResultMT + const std::string& resultName() const {return m_hltResultWHKey.key();} + +private: + /// StoreGate key for the HLTResultMT + SG::WriteHandleKey<HLTResultMT> m_hltResultWHKey; +}; + +#endif // TRIGOUTPUTHANDLING_HLTRESULTMTMAKER_H diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMakerTool.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMakerTool.h index b6c498b48ceee24300bcbde5172fe5d049ff74b2..130d899f797fec1bff39dc38529c2d50e0f31fc1 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMakerTool.h +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/HLTResultMTMakerTool.h @@ -5,7 +5,7 @@ #define TRIGOUTPUTHANDLING_HLTRESULTMTMAKERTOOL_H #include "GaudiKernel/IAlgTool.h" -#include "TrigSteeringEvent/HLTResultMT.h" +#include "TrigOutputHandling/HLTResultMT.h" /** * @class HLTResultMTMakerTool * @brief @@ -14,7 +14,7 @@ class HLTResultMTMakerTool : virtual public IAlgTool { public: DeclareInterfaceID(HLTResultMTMakerTool, 1, 0); - virtual StatusCode fill( HLT::HLTResultMT& resultToFill ) const = 0; + virtual StatusCode fill( HLTResultMT& resultToFill ) const = 0; virtual ~HLTResultMTMakerTool() override {} }; diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerBitsMakerTool.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerBitsMakerTool.h index 79ff3293cdf2df219efe09f852558d23434fcbb2..e55c7e6a916f16004f205343fd61f31b41be0464 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerBitsMakerTool.h +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerBitsMakerTool.h @@ -19,7 +19,7 @@ public: TriggerBitsMakerTool(const std::string& type, const std::string& name, const IInterface* parent); virtual ~TriggerBitsMakerTool() override; - virtual StatusCode fill( HLT::HLTResultMT& resultToFill ) const override; + virtual StatusCode fill( HLTResultMT& resultToFill ) const override; StatusCode fill( std::vector<uint32_t>& place ) const; virtual StatusCode initialize() override; diff --git a/Trigger/TrigEvent/TrigSteeringEvent/src/HltResultMT.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMT.cxx similarity index 72% rename from Trigger/TrigEvent/TrigSteeringEvent/src/HltResultMT.cxx rename to Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMT.cxx index cb2d5ea418f0d79ce99d43d89a16a7c0b33f4986..62d20c1836a1c4eb7847ebff74307a2c3b428848 100644 --- a/Trigger/TrigEvent/TrigSteeringEvent/src/HltResultMT.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMT.cxx @@ -2,12 +2,12 @@ Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#include "TrigSteeringEvent/HLTResultMT.h" +#include "TrigOutputHandling/HLTResultMT.h" // ============================================================================= // Standard constructor // ============================================================================= -HLT::HLTResultMT::HLTResultMT(std::vector<eformat::helper::StreamTag> streamTags, +HLTResultMT::HLTResultMT(std::vector<eformat::helper::StreamTag> streamTags, std::vector<uint32_t> hltBits, std::unordered_map<uint16_t, std::vector<uint32_t> > data, std::vector<uint32_t> status) @@ -19,7 +19,7 @@ HLT::HLTResultMT::HLTResultMT(std::vector<eformat::helper::StreamTag> streamTags // ============================================================================= // Copy constructor // ============================================================================= -HLT::HLTResultMT::HLTResultMT(const HLT::HLTResultMT& other) +HLTResultMT::HLTResultMT(const HLTResultMT& other) : m_streamTags(other.m_streamTags), m_hltBits(other.m_hltBits), m_data(other.m_data), @@ -28,41 +28,42 @@ HLT::HLTResultMT::HLTResultMT(const HLT::HLTResultMT& other) // ============================================================================= // Standard destructor // ============================================================================= -HLT::HLTResultMT::~HLTResultMT() {} +HLTResultMT::~HLTResultMT() {} // ============================================================================= // Getter/setter methods for stream tags // ============================================================================= -const std::vector<eformat::helper::StreamTag>& HLT::HLTResultMT::getStreamTags() const { +const std::vector<eformat::helper::StreamTag>& HLTResultMT::getStreamTags() const { return m_streamTags; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::setStreamTags(const std::vector<eformat::helper::StreamTag>& streamTags) { +void HLTResultMT::setStreamTags(const std::vector<eformat::helper::StreamTag>& streamTags) { // copy assignment m_streamTags = streamTags; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::addStreamTag(const eformat::helper::StreamTag& streamTag) { +void HLTResultMT::addStreamTag(const eformat::helper::StreamTag& streamTag) { + //TODO: handle duplicates m_streamTags.push_back(streamTag); } // ============================================================================= // Getter/setter methods for trigger bits // ============================================================================= -const std::vector<uint32_t>& HLT::HLTResultMT::getHltBits() const { +const std::vector<uint32_t>& HLTResultMT::getHltBits() const { return m_hltBits; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::setHltBits(const std::vector<uint32_t>& bits) { +void HLTResultMT::setHltBits(const std::vector<uint32_t>& bits) { // copy assignment m_hltBits = bits; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::addHltBitsWord(const uint32_t& word) { +void HLTResultMT::addHltBitsWord(const uint32_t& word) { m_hltBits.push_back(word); } @@ -70,24 +71,24 @@ void HLT::HLTResultMT::addHltBitsWord(const uint32_t& word) { // Getter/setter methods for serialised data // ============================================================================= /// Serialised data getter -const std::unordered_map<uint16_t, std::vector<uint32_t> >& HLT::HLTResultMT::getSerialisedData() const { +const std::unordered_map<uint16_t, std::vector<uint32_t> >& HLTResultMT::getSerialisedData() const { return m_data; } // ----------------------------------------------------------------------------- -const std::vector<uint32_t>& HLT::HLTResultMT::getSerialisedData(uint16_t moduleId) const { +const std::vector<uint32_t>& HLTResultMT::getSerialisedData(uint16_t moduleId) const { // this can throw std::out_of_range - implement messaging (std::cerr or ATH_MSG_ERR) to avoid exception return m_data.at(moduleId); } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::setSerialisedData(const std::unordered_map<uint16_t, std::vector<uint32_t> >& data) { +void HLTResultMT::setSerialisedData(const std::unordered_map<uint16_t, std::vector<uint32_t> >& data) { // copy assignment (WARNING, data may be large!) m_data = data; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::addSerialisedData(const uint16_t moduleId, const std::vector<uint32_t>& data) { +void HLTResultMT::addSerialisedData(const uint16_t moduleId, const std::vector<uint32_t>& data) { if (m_data.find(moduleId)!=m_data.cend()) { // implement error printout and handling here !!! use either std::cerr or ATH_MSG_ERR } @@ -99,17 +100,17 @@ void HLT::HLTResultMT::addSerialisedData(const uint16_t moduleId, const std::vec // ============================================================================= // Getter/setter methods for status words // ============================================================================= -const std::vector<uint32_t>& HLT::HLTResultMT::getStatus() const { +const std::vector<uint32_t>& HLTResultMT::getStatus() const { return m_status; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::setStatus(const std::vector<uint32_t>& status) { +void HLTResultMT::setStatus(const std::vector<uint32_t>& status) { // copy assignment m_status = status; } // ----------------------------------------------------------------------------- -void HLT::HLTResultMT::addStatusWord(const uint32_t& word) { +void HLTResultMT::addStatusWord(const uint32_t& word) { m_status.push_back(word); } diff --git a/Trigger/TrigSteer/TrigSteering/src/ResultBuilderMT.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMaker.cxx similarity index 82% rename from Trigger/TrigSteer/TrigSteering/src/ResultBuilderMT.cxx rename to Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMaker.cxx index 842fac666304825a7f01b5bee35dea78e566b423..c35ce6acfdbde3b2485568b3758a13174b8a7056 100644 --- a/Trigger/TrigSteer/TrigSteering/src/ResultBuilderMT.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMaker.cxx @@ -2,12 +2,12 @@ Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration */ -#include "TrigSteering/ResultBuilderMT.h" +#include "TrigOutputHandling/HLTResultMTMaker.h" // ============================================================================= // Standard constructor // ============================================================================= -HLT::ResultBuilderMT::ResultBuilderMT(const std::string& type, const std::string& name, const IInterface* parent) +HLTResultMTMaker::HLTResultMTMaker(const std::string& type, const std::string& name, const IInterface* parent) : AthAlgTool(type, name, parent) { declareProperty("HLTResultWHKey", m_hltResultWHKey="HLTResult"); } @@ -15,12 +15,12 @@ HLT::ResultBuilderMT::ResultBuilderMT(const std::string& type, const std::string // ============================================================================= // Standard destructor // ============================================================================= -HLT::ResultBuilderMT::~ResultBuilderMT() {} +HLTResultMTMaker::~HLTResultMTMaker() {} // ============================================================================= // Implementation of IStateful::initialize // ============================================================================= -StatusCode HLT::ResultBuilderMT::initialize() { +StatusCode HLTResultMTMaker::initialize() { ATH_MSG_VERBOSE("start of " << __FUNCTION__); ATH_CHECK(m_hltResultWHKey.initialize()); ATH_MSG_VERBOSE("end of " << __FUNCTION__); @@ -30,7 +30,7 @@ StatusCode HLT::ResultBuilderMT::initialize() { // ============================================================================= // Implementation of IStateful::finalize // ============================================================================= -StatusCode HLT::ResultBuilderMT::finalize() { +StatusCode HLTResultMTMaker::finalize() { ATH_MSG_VERBOSE("start of " << __FUNCTION__); ATH_MSG_VERBOSE("end of " << __FUNCTION__); return StatusCode::SUCCESS; @@ -39,10 +39,10 @@ StatusCode HLT::ResultBuilderMT::finalize() { // ============================================================================= // The main method of the tool // ============================================================================= -StatusCode HLT::ResultBuilderMT::buildResult(const EventContext& eventContext) const { +StatusCode HLTResultMTMaker::makeResult(const EventContext& eventContext) const { ATH_MSG_VERBOSE("start of " << __FUNCTION__); auto hltResult = SG::makeHandle(m_hltResultWHKey,eventContext); - ATH_CHECK( hltResult.record(std::make_unique<HLT::HLTResultMT>()) ); + ATH_CHECK( hltResult.record(std::make_unique<HLTResultMT>()) ); ATH_MSG_DEBUG("Recorded HLTResultMT with key " << m_hltResultWHKey.key()); // Dummy data for testing diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.cxx index d67dfee3f061ac37ddce184d00f3e147a377e479..19df7f2ceedaa98a47ffcfab653c60a2c4d3bb19 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.cxx @@ -21,7 +21,7 @@ StatusCode HLTResultMTMakerAlg::finalize() { StatusCode HLTResultMTMakerAlg::execute_r(const EventContext& context) const { using namespace Monitored; - auto hltResult = std::make_unique<HLT::HLTResultMT>(); + auto hltResult = std::make_unique<HLTResultMT>(); auto time = MonitoredTimer::declare( "TIME_build" ); for ( auto& maker: m_makerTools ) { diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.h b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.h index d79ed5b752cc50f31d35e668f6a8e00d5adab68d..f3189bf31624f585b976be1dd1fc2b831808edaa 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.h +++ b/Trigger/TrigSteer/TrigOutputHandling/src/HLTResultMTMakerAlg.h @@ -27,7 +27,7 @@ public: virtual StatusCode finalize() override; private: - SG::WriteHandleKey<HLT::HLTResultMT> m_resultKey { this, "ResultKey", "HLTResultMT", "Key of the output object" }; + SG::WriteHandleKey<HLTResultMT> m_resultKey { this, "ResultKey", "HLTResultMT", "Key of the output object" }; ToolHandleArray<HLTResultMTMakerTool> m_makerTools{ this, "MakerTools", {}, "set of tools that fill content of the HLTResultMT" }; ToolHandle<GenericMonitoringTool> m_monTool { this, "MonTool", "", "Monitor" }; diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx index 3096820e152ec6cbd7f2ebdb704e4fa6e6e2b811..db95faf09c00f1afab4cc1ac922404d3ca8a99ad 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx @@ -28,7 +28,7 @@ StatusCode StreamTagMakerTool::finalize() { } -StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill ) const { +StatusCode StreamTagMakerTool::fill( HLTResultMT& resultToFill ) const { // obtain chain decisions, auto chainsHandle = SG::makeHandle( m_finalChainDecisions ); diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h index d3e42b474bb1753f983b6d3719429c587550173c..0df75321617dc6400a4a43dd687895123340a36a 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h +++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.h @@ -21,7 +21,7 @@ public: StreamTagMakerTool(const std::string& type, const std::string& name, const IInterface* parent); virtual ~StreamTagMakerTool() override; - virtual StatusCode fill( HLT::HLTResultMT& resultToFill ) const override; + virtual StatusCode fill( HLTResultMT& resultToFill ) const override; virtual StatusCode initialize() override; virtual StatusCode finalize() override; diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx index 9be7e6e957d977004dedb51ae50dd3ffadc7d4e4..470df48178b7de5192dce010dde7428b33d3282c 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx @@ -23,7 +23,7 @@ StatusCode TriggerBitsMakerTool::initialize() { } -StatusCode TriggerBitsMakerTool::fill( HLT::HLTResultMT& resultToFill ) const { +StatusCode TriggerBitsMakerTool::fill( HLTResultMT& resultToFill ) const { std::vector<uint32_t> bits; ATH_CHECK( fill( bits ) ); resultToFill.setHltBits( bits ); diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.cxx index b4d7ed18fb69ad90a8a15e1533c52dda14a9dd31..b684f3a2fec6603f87b16e41fa98f23fc001e7c5 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.cxx @@ -82,7 +82,7 @@ StatusCode TriggerEDMSerialiserTool::fillPayload( void* data, size_t sz, std::ve } -StatusCode TriggerEDMSerialiserTool::fill( HLT::HLTResultMT& resultToFill ) const { +StatusCode TriggerEDMSerialiserTool::fill( HLTResultMT& resultToFill ) const { for ( const Address& address: m_toSerialize ) { diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.h b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.h index f1ce285a638fceca3237e3c9503b398a118623d8..39adf3fa02feccaf4a7b4931df2714fc80548001 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.h +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerEDMSerialiserTool.h @@ -32,7 +32,7 @@ class TriggerEDMSerialiserTool: public extends<AthAlgTool, HLTResultMTMakerTool> const IInterface* parent ); virtual ~TriggerEDMSerialiserTool(); - virtual StatusCode fill( HLT::HLTResultMT& resultToFill ) const override; + virtual StatusCode fill( HLTResultMT& resultToFill ) const override; virtual StatusCode initialize() override; diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/components/TrigOutputHandling_entries.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/components/TrigOutputHandling_entries.cxx index 016c5d993f9480b553dd4c916d974dbfe25dadc9..19bdde80c864184545b484616ed5c3cbe0911e6b 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/components/TrigOutputHandling_entries.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/components/TrigOutputHandling_entries.cxx @@ -1,5 +1,6 @@ #include "../HLTEDMCreator.h" #include "../StreamTagMakerTool.h" +#include "TrigOutputHandling/HLTResultMTMaker.h" #include "../HLTResultMTMakerAlg.h" #include "../DecisionSummaryMakerAlg.h" #include "TrigOutputHandling/TriggerBitsMakerTool.h" @@ -7,6 +8,7 @@ DECLARE_COMPONENT( HLTEDMCreator ) +DECLARE_COMPONENT( HLTResultMTMaker ) DECLARE_COMPONENT( HLTResultMTMakerAlg ) DECLARE_COMPONENT( StreamTagMakerTool ) DECLARE_COMPONENT( DecisionSummaryMakerAlg ) diff --git a/Trigger/TrigSteer/TrigSteering/TrigSteering/ResultBuilderMT.h b/Trigger/TrigSteer/TrigSteering/TrigSteering/ResultBuilderMT.h deleted file mode 100644 index 8a475954210929aabb8bc5bb3cf8baade7042781..0000000000000000000000000000000000000000 --- a/Trigger/TrigSteer/TrigSteering/TrigSteering/ResultBuilderMT.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef TRIGSTEERING_RESULTBUILDERMT_H -#define TRIGSTEERING_RESULTBUILDERMT_H - -#include "TrigSteeringEvent/HLTResultMT.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "StoreGate/WriteHandle.h" - -namespace HLT { - /** @class ResultBuilderMT - * @brief Tool to create the HLTResultMT at the end of each event - **/ - class ResultBuilderMT : public AthAlgTool { - public: - /// Standard constructor - ResultBuilderMT(const std::string& type, const std::string& name, const IInterface* parent); - /// Standard destructor - virtual ~ResultBuilderMT(); - - // ------------------------- IStateful methods ----------------------------- - virtual StatusCode initialize() override; - virtual StatusCode finalize() override; - - // ------------------------- Specific methods of this tool ----------------- - /// Builds the HLTResultMT and records it in the event store - StatusCode buildResult(const EventContext& eventContext) const; - /// Return name of the HLTResultMT - const std::string& resultName() const {return m_hltResultWHKey.key();} - - private: - /// StoreGate key for the HLTResultMT - SG::WriteHandleKey<HLT::HLTResultMT> m_hltResultWHKey; - }; -} // namespace HLT - -#endif // TRIGSTEERING_RESULTBUILDERMT_H diff --git a/Trigger/TrigSteer/TrigSteering/src/components/TrigSteering_entries.cxx b/Trigger/TrigSteer/TrigSteering/src/components/TrigSteering_entries.cxx index 399686097590d30a578ab14ea076a1ef9c47b511..1a4885a3b340871659d78bcc6c99c8d37218eb89 100644 --- a/Trigger/TrigSteer/TrigSteering/src/components/TrigSteering_entries.cxx +++ b/Trigger/TrigSteer/TrigSteering/src/components/TrigSteering_entries.cxx @@ -6,7 +6,6 @@ #include "TrigSteering/LoopbackConverterFromPersistency.h" #include "TrigSteering/Lvl2ConverterFromPersistency.h" #include "TrigSteering/ResultBuilder.h" -#include "TrigSteering/ResultBuilderMT.h" #include "TrigSteering/RandomScaler.h" //#include "TrigSteering/PeriodicScaler.h" #include "TrigSteering/ScalerSvc.h" @@ -27,7 +26,6 @@ DECLARE_COMPONENT( HLT::TrigSteer ) DECLARE_COMPONENT( HLT::ScalerSvc ) DECLARE_COMPONENT( HLT::ResultBuilder ) -DECLARE_COMPONENT( HLT::ResultBuilderMT ) DECLARE_COMPONENT( HLT::RandomScaler ) DECLARE_COMPONENT( HLT::Lvl1ResultAccessTool ) DECLARE_COMPONENT( HLT::HLTResultAccessTool )