diff --git a/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/BCM_RawDataByteStreamCnv/BCM_RawDataProvider.h b/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/BCM_RawDataByteStreamCnv/BCM_RawDataProvider.h index f65f1fb696bf7986bdc266c3928c5284a8d34172..24711286e298554010d5a38d3bc0a57837c2c7a3 100644 --- a/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/BCM_RawDataByteStreamCnv/BCM_RawDataProvider.h +++ b/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/BCM_RawDataByteStreamCnv/BCM_RawDataProvider.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -9,7 +9,9 @@ #ifndef BCM_RAWDATABYTESTREAMCNV_BCM_RAWDATAPROVIDER_H #define BCM_RAWDATABYTESTREAMCNV_BCM_RAWDATAPROVIDER_H +#include "InDetBCM_RawData/BCM_RDO_Container.h" #include "AthenaBaseComps/AthAlgorithm.h" +#include "StoreGate/WriteHandleKey.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" @@ -24,23 +26,24 @@ public: BCM_RawDataProvider(const std::string &name, ISvcLocator *pSvcLocator); //! Initialize - virtual StatusCode initialize(); + virtual StatusCode initialize() override; //! Execute - virtual StatusCode execute(); + virtual StatusCode execute() override; //! Finalize - virtual StatusCode finalize() + virtual StatusCode finalize() override { return StatusCode::SUCCESS; } //! Destructor - ~BCM_RawDataProvider(); + virtual ~BCM_RawDataProvider(); private: ServiceHandle<IROBDataProviderSvc> m_robDataProvider; ToolHandle<BCM_RawDataProviderTool> m_rawDataTool; - std::string m_RDO_Key; + SG::WriteHandleKey<BCM_RDO_Container> m_RDO_Key + { this, "RDOKey", "BDM_RDOs", "" }; }; #endif diff --git a/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/src/BCM_RawDataProvider.cxx b/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/src/BCM_RawDataProvider.cxx index 4d0e686abe16f9929048cf1e91f889ae45c784f6..b0a77102748bd1f8d70cb5e8abccd41a02af049d 100644 --- a/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/src/BCM_RawDataProvider.cxx +++ b/InnerDetector/InDetEventCnv/BCM_RawDataByteStreamCnv/src/BCM_RawDataProvider.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -29,7 +29,6 @@ BCM_RawDataProvider::BCM_RawDataProvider(const std::string& name, ISvcLocator* p m_robDataProvider ("ROBDataProviderSvc",name), m_rawDataTool ("BCM_RawDataProviderTool") { - declareProperty ("RDOKey" , m_RDO_Key = "BCM_RDOs"); declareProperty ("ProviderTool", m_rawDataTool); } @@ -59,6 +58,8 @@ StatusCode BCM_RawDataProvider::initialize() { return StatusCode::FAILURE; } else if (msgLvl(MSG::INFO)) msg(MSG::INFO) << "Retrieved service " << m_rawDataTool << endmsg; + + ATH_CHECK( m_RDO_Key.initialize() ); return StatusCode::SUCCESS; } @@ -69,11 +70,7 @@ StatusCode BCM_RawDataProvider::initialize() { StatusCode BCM_RawDataProvider::execute() { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Create BCM RDO Container" << endmsg; - BCM_RDO_Container *container = new BCM_RDO_Container(); - if (evtStore()->record(container, m_RDO_Key).isFailure()) { - if (msgLvl(MSG::FATAL)) msg(MSG::FATAL) << "Unable to record BCM RDO Container" << endmsg; - return StatusCode::FAILURE; - } + auto container = std::make_unique<BCM_RDO_Container>(); // ask ROBDataProviderSvc for the vector of ROBFragment for all BCM ROBIDs // std::vector<const ROBFragment*> listOfRobf_all; @@ -113,11 +110,13 @@ StatusCode BCM_RawDataProvider::execute() { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Number of ROB fragments is " << listOfRobf.size() << endmsg; // ask BCM_RawDataProviderTool to decode it and to fill the container - if (m_rawDataTool->convert(listOfRobf,container).isFailure()) + if (m_rawDataTool->convert(listOfRobf,container.get()).isFailure()) if (msgLvl(MSG::ERROR)) msg(MSG::ERROR) << "BS conversion into RDOs failed" << endmsg; if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Number of collections in container is " << container->size() << endmsg; + ATH_CHECK( SG::makeHandle (m_RDO_Key).record (std::move (container)) ); + return StatusCode::SUCCESS; }