diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/CscRawDataProvider.h b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/CscRawDataProvider.h index b3add72fdba3558b81872a2de8177cc9103eafc3..45002da1d763dcc8e36c688062c88be7b8d3205d 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/CscRawDataProvider.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/CscRawDataProvider.h @@ -5,7 +5,8 @@ #ifndef MUONBYTESTREAM_CSCRAWDATAPROVIDER_H #define MUONBYTESTREAM_CSCRAWDATAPROVIDER_H -#include "AthenaBaseComps/AthAlgorithm.h" +// Base class +#include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" @@ -16,7 +17,7 @@ namespace Muon { -class CscRawDataProvider : public AthAlgorithm +class CscRawDataProvider : public AthReentrantAlgorithm { public: @@ -27,7 +28,7 @@ public: virtual StatusCode initialize(); //! Execute - virtual StatusCode execute(); + virtual StatusCode execute(const EventContext& ctx) const; //! Destructor ~CscRawDataProvider()=default; diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/MdtRawDataProvider.h b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/MdtRawDataProvider.h index f2155aef518b8d8ba0269264b5bcd78db7346f48..2e1bb026457c389f8fcd5771a1756507b0a13b27 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/MdtRawDataProvider.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/MdtRawDataProvider.h @@ -5,7 +5,8 @@ #ifndef MUONBYTESTREAM_MDTRAWDATAPROVIDER_H #define MUONBYTESTREAM_MDTRAWDATAPROVIDER_H -#include "AthenaBaseComps/AthAlgorithm.h" +// Base class +#include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" @@ -16,7 +17,7 @@ namespace Muon { -class MdtRawDataProvider : public AthAlgorithm +class MdtRawDataProvider : public AthReentrantAlgorithm { public: @@ -27,7 +28,7 @@ public: virtual StatusCode initialize(); //! Execute - virtual StatusCode execute(); + virtual StatusCode execute(const EventContext& ctx) const; //! Destructur ~MdtRawDataProvider()=default; diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/RpcRawDataProvider.h b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/RpcRawDataProvider.h index 7bf957d854b593fd429e51cb58ee14d500cf47cb..08ad7f1e3d83371dfce83809e93b7073fc408f1d 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/RpcRawDataProvider.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/RpcRawDataProvider.h @@ -5,7 +5,8 @@ #ifndef MUONBYTESTREAM_RPCRAWDATAPROVIDER_H #define MUONBYTESTREAM_RPCRAWDATAPROVIDER_H -#include "AthenaBaseComps/AthAlgorithm.h" +// Base class +#include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" @@ -15,7 +16,7 @@ namespace Muon { -class RpcRawDataProvider : public AthAlgorithm +class RpcRawDataProvider : public AthReentrantAlgorithm { public: @@ -26,7 +27,7 @@ public: virtual StatusCode initialize(); //! Execute - virtual StatusCode execute(); + virtual StatusCode execute(const EventContext& ctx) const; //! Destructur ~RpcRawDataProvider()=default; diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/TgcRawDataProvider.h b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/TgcRawDataProvider.h index 359b202daf11c89a714fbb229bc82c91fea40b5c..b0617a62d7575a59be3408d6fe99e93590c07827 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/TgcRawDataProvider.h +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/MuonByteStream/TgcRawDataProvider.h @@ -5,7 +5,8 @@ #ifndef MUONBYTESTREAM_TGCRAWDATAPROVIDER_H #define MUONBYTESTREAM_TGCRAWDATAPROVIDER_H -#include "AthenaBaseComps/AthAlgorithm.h" +// Base class +#include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" @@ -16,7 +17,7 @@ namespace Muon { -class TgcRawDataProvider : public AthAlgorithm +class TgcRawDataProvider : public AthReentrantAlgorithm { public: @@ -27,7 +28,7 @@ public: virtual StatusCode initialize(); //! Execute - virtual StatusCode execute(); + virtual StatusCode execute(const EventContext& ctx) const; //! Destructur ~TgcRawDataProvider()=default; diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx index 68fc6ef9cd479ac866644289403e0706eb0e1160..3734518bc7e3d1230b5fb91c22174fda931ead79 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/CscRawDataProvider.cxx @@ -11,7 +11,7 @@ Muon::CscRawDataProvider::CscRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), + AthReentrantAlgorithm(name, pSvcLocator), m_regionSelector ("RegSelSvc",name) { declareProperty ("RegionSelectionSvc", m_regionSelector, "Region Selector"); @@ -36,19 +36,22 @@ StatusCode Muon::CscRawDataProvider::initialize() { return StatusCode::SUCCESS; } -StatusCode Muon::CscRawDataProvider::execute() { +// -------------------------------------------------------------------- +// Execute + +StatusCode Muon::CscRawDataProvider::execute(const EventContext& ctx) const { ATH_MSG_VERBOSE( "CscRawDataProvider::execute" ); if(m_seededDecoding) { - SG::ReadCondHandle<ALineMapContainer> readALineHandle(m_ALineKey);// !!! REMOVEME: when MuonDetectorManager in cond store + SG::ReadCondHandle<ALineMapContainer> readALineHandle(m_ALineKey, ctx);// !!! REMOVEME: when MuonDetectorManager in cond store if(!readALineHandle.isValid()){// !!! REMOVEME: when MuonDetectorManager in cond store ATH_MSG_WARNING("Cannot retrieve ALine Handle "<<m_ALineKey.key());// !!! REMOVEME: when MuonDetectorManager in cond store return StatusCode::SUCCESS;// !!! REMOVEME: when MuonDetectorManager in cond store }// !!! REMOVEME: when MuonDetectorManager in cond store // read in the RoIs to process - SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey); + SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey, ctx); if(!muonRoI.isValid()){ ATH_MSG_WARNING("Cannot retrieve muonRoI "<<m_roiCollectionKey.key()); return StatusCode::SUCCESS; @@ -62,7 +65,7 @@ StatusCode Muon::CscRawDataProvider::execute() { m_regionSelector->DetHashIDList(CSC, *roi, csc_hash_ids); // decode the ROBs - if(m_rawDataTool->convert(csc_hash_ids).isFailure()) { + if(m_rawDataTool->convert(csc_hash_ids, ctx).isFailure()) { ATH_MSG_ERROR( "RoI seeded BS conversion into RDOs failed" ); } // clear vector of hash IDs ready for next RoI @@ -70,7 +73,7 @@ StatusCode Muon::CscRawDataProvider::execute() { } } else { // ask CscRawDataProviderTool to decode entire event and to fill the IDC - if (m_rawDataTool->convert().isFailure()) + if (m_rawDataTool->convert(ctx).isFailure()) ATH_MSG_ERROR ( "BS conversion into RDOs failed" ); } diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx index 035f8303a32f481da0303eb171c805cb225cef89..1a5761699f7d70f8696bc1a8ea257f5f2976c150 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/MdtRawDataProvider.cxx @@ -8,7 +8,7 @@ Muon::MdtRawDataProvider::MdtRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), + AthReentrantAlgorithm(name, pSvcLocator), m_regionSelector ("RegSelSvc",name) { declareProperty ("RegionSelectionSvc", m_regionSelector, "Region Selector"); @@ -34,13 +34,16 @@ StatusCode Muon::MdtRawDataProvider::initialize() { return StatusCode::SUCCESS; } -StatusCode Muon::MdtRawDataProvider::execute() { +// -------------------------------------------------------------------- +// Execute + +StatusCode Muon::MdtRawDataProvider::execute(const EventContext& ctx) const { ATH_MSG_VERBOSE( "MdtRawDataProvider::execute" ); if(m_seededDecoding) { // read in the RoIs to process - SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey); + SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey, ctx); if(!muonRoI.isValid()){ ATH_MSG_WARNING("Cannot retrieve muonRoI "<<m_roiCollectionKey.key()); return StatusCode::SUCCESS; @@ -54,7 +57,7 @@ StatusCode Muon::MdtRawDataProvider::execute() { m_regionSelector->DetROBIDListUint(MDT,*roi,robs); // decode the ROBs - if(m_rawDataTool->convert(robs).isFailure()) { + if(m_rawDataTool->convert(robs, ctx).isFailure()) { ATH_MSG_ERROR( "RoI seeded BS conversion into RDOs failed" ); } // clear vector of ROB IDs ready for next RoI @@ -63,7 +66,7 @@ StatusCode Muon::MdtRawDataProvider::execute() { } else { // ask MdtRawDataProviderTool to decode the event and to fill the IDC - if (m_rawDataTool->convert().isFailure()) + if (m_rawDataTool->convert(ctx).isFailure()) ATH_MSG_ERROR( "BS conversion into RDOs failed" ); } diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx index 73784236f3c467d38b82593100a6b595ce5014f8..9168d8158a7e1a0fb3d8e0d6d4c0b368fe55f464 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/RpcRawDataProvider.cxx @@ -10,7 +10,7 @@ Muon::RpcRawDataProvider::RpcRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), + AthReentrantAlgorithm(name, pSvcLocator), m_regionSelector ("RegSelSvc",name) { declareProperty ("RegionSelectionSvc", m_regionSelector, "Region Selector"); @@ -34,13 +34,16 @@ StatusCode Muon::RpcRawDataProvider::initialize() { return StatusCode::SUCCESS; } -StatusCode Muon::RpcRawDataProvider::execute() { +// -------------------------------------------------------------------- +// Execute + +StatusCode Muon::RpcRawDataProvider::execute(const EventContext& ctx) const { ATH_MSG_VERBOSE( "RpcRawDataProvider::execute" ); if(m_seededDecoding) { // read in the RoIs to process - SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey); + SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey, ctx); if(!muonRoI.isValid()){ ATH_MSG_WARNING("Cannot retrieve muonRoI "<<m_roiCollectionKey.key()); return StatusCode::SUCCESS; @@ -54,7 +57,7 @@ StatusCode Muon::RpcRawDataProvider::execute() { m_regionSelector->DetROBIDListUint(RPC,*roi,rpcrobs); // decode the ROBs - if(m_rawDataTool->convert(rpcrobs).isFailure()) { + if(m_rawDataTool->convert(rpcrobs, ctx).isFailure()) { ATH_MSG_ERROR( "RoI seeded BS conversion into RDOs failed" ); } // clear vector of ROB IDs ready for next RoI @@ -63,7 +66,7 @@ StatusCode Muon::RpcRawDataProvider::execute() { } else { // ask RpcRawDataProviderTool to decode the event and to fill the IDC - if (m_rawDataTool->convert().isFailure()) + if (m_rawDataTool->convert(ctx).isFailure()) ATH_MSG_ERROR( "BS conversion into RDOs failed" ); } diff --git a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx index 00549cde8a07a9491e714afdf390cf3a3eefb14d..db0348b147e06c21c0a2642e7306de26776fd334 100644 --- a/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx +++ b/MuonSpectrometer/MuonCnv/MuonByteStream/src/TgcRawDataProvider.cxx @@ -11,7 +11,7 @@ using eformat::helper::SourceIdentifier; Muon::TgcRawDataProvider::TgcRawDataProvider(const std::string& name, ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), + AthReentrantAlgorithm(name, pSvcLocator), m_regionSelector ("RegSelSvc",name) { declareProperty ("RegionSelectionSvc", m_regionSelector, "Region Selector"); @@ -37,14 +37,17 @@ StatusCode Muon::TgcRawDataProvider::initialize() return StatusCode::SUCCESS; } -StatusCode Muon::TgcRawDataProvider::execute() +// -------------------------------------------------------------------- +// Execute + +StatusCode Muon::TgcRawDataProvider::execute(const EventContext& ctx) const { ATH_MSG_VERBOSE( "TgcRawDataProvider::execute" ); if(m_seededDecoding) { // read in the RoIs to process - SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey); + SG::ReadHandle<TrigRoiDescriptorCollection> muonRoI(m_roiCollectionKey, ctx); if(!muonRoI.isValid()){ ATH_MSG_WARNING("Cannot retrieve muonRoI "<<m_roiCollectionKey.key()); return StatusCode::SUCCESS; @@ -58,7 +61,7 @@ StatusCode Muon::TgcRawDataProvider::execute() m_regionSelector->DetHashIDList(TGC, *roi, tgc_hash_ids); // decode the ROBs - if(m_rawDataTool->convert(tgc_hash_ids).isFailure()) { + if(m_rawDataTool->convert(tgc_hash_ids, ctx).isFailure()) { ATH_MSG_ERROR( "RoI seeded BS conversion into RDOs failed" ); } // clear vector of hash IDs ready for next RoI @@ -66,7 +69,7 @@ StatusCode Muon::TgcRawDataProvider::execute() } } else { // ask TgcRawDataProviderTool to decode full detector and to fill the IDC - if (m_rawDataTool->convert().isFailure()) + if (m_rawDataTool->convert(ctx).isFailure()) ATH_MSG_ERROR( "BS conversion into RDOs failed" ); } diff --git a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.cxx index b5c042234bb639c26c7a5d327225214c90a3e00b..cc8b62036e3b2998a62b7ffaf4358d445d950e7c 100644 --- a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.cxx @@ -86,8 +86,7 @@ StatusCode Muon::CSC_RawDataProviderTool::convert(const EventContext& ctx) const StatusCode Muon::CSC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& /* collections */){ - const CSC_RawDataProviderTool* cthis = this; - return cthis->convert (vecRobs, Gaudi::Hive::currentContext()); + return this->convert (vecRobs, Gaudi::Hive::currentContext()); } StatusCode diff --git a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.h index fc78a22b30a7a1b41770f4535d0134e39694f629..622ae006869902461bf7271629bafdab6d561458 100644 --- a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderTool.h @@ -37,21 +37,23 @@ public: virtual StatusCode convert(const ROBFragmentList& vecRobs) override { - const CSC_RawDataProviderTool* cthis = this; - return cthis->convert (vecRobs, Gaudi::Hive::currentContext()); + return this->convert (vecRobs, Gaudi::Hive::currentContext()); } virtual StatusCode convert(const std::vector<IdentifierHash>& collections) override; virtual StatusCode convert() override { - const CSC_RawDataProviderTool* cthis = this; - return cthis->convert (Gaudi::Hive::currentContext()); + return this->convert (Gaudi::Hive::currentContext()); } virtual StatusCode convert(const std::vector<uint32_t>&) override {return StatusCode::FAILURE;} - StatusCode convert(const ROBFragmentList& vecRobs, - const EventContext& ctx) const; - StatusCode convert(const EventContext& ctx) const; + virtual StatusCode convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const override; + virtual StatusCode convert(const EventContext& ctx) const override; + + // Not used + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override {return StatusCode::FAILURE;} + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override {return StatusCode::FAILURE;} + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override {return StatusCode::FAILURE;} private: diff --git a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.cxx b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.cxx index cae1e0731b6b6922fda1e49d62aaf11684d9452b..67b2126444e95a7e54acc72dfefa809cf597203c 100644 --- a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.cxx +++ b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.cxx @@ -59,7 +59,12 @@ StatusCode Muon::CSC_RawDataProviderToolMT::initialize() //============================================================================================ // new one + StatusCode Muon::CSC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect){ + return this->convert (rdoIdhVect, Gaudi::Hive::currentContext()); +} + +StatusCode Muon::CSC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const{ IdContext cscContext = m_idHelperSvc->cscIdHelper().module_context(); @@ -73,7 +78,10 @@ StatusCode Muon::CSC_RawDataProviderToolMT::convert(const std::vector<Identifier } m_robDataProvider->getROBData(robIds, vecOfRobf); ATH_MSG_VERBOSE ( "Number of ROB fragments " << vecOfRobf.size() ); - return convert(vecOfRobf, rdoIdhVect); + + // This would be passed to the function which does not use the IdentifierHash further + return convert(vecOfRobf, ctx); + } StatusCode Muon::CSC_RawDataProviderToolMT::convert(const EventContext& ctx) const { @@ -90,14 +98,13 @@ StatusCode Muon::CSC_RawDataProviderToolMT::convert(const EventContext& ctx) con StatusCode Muon::CSC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>& /* collections */){ - const CSC_RawDataProviderToolMT* cthis = this; - return cthis->convert (vecRobs, Gaudi::Hive::currentContext()); + const std::vector<IdentifierHash>& /* collections */){ + return this->convert (vecRobs, Gaudi::Hive::currentContext()); } StatusCode Muon::CSC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, - const EventContext& ctx) const + const EventContext& ctx) const { SG::WriteHandle<CscRawDataContainer> rdoContainerHandle(m_containerKey, ctx); diff --git a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.h b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.h index 22b9f55db1178128a25614e1b7a257a29a955837..36d3a5bfe3559ff59dd9f930cfa5abeba45a28a1 100644 --- a/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.h +++ b/MuonSpectrometer/MuonCnv/MuonCSC_CnvTools/src/CSC_RawDataProviderToolMT.h @@ -35,21 +35,23 @@ public: virtual StatusCode convert(const ROBFragmentList& vecRobs) override { - const CSC_RawDataProviderToolMT* cthis = this; - return cthis->convert (vecRobs, Gaudi::Hive::currentContext()); + return this->convert (vecRobs, Gaudi::Hive::currentContext()); } virtual StatusCode convert(const std::vector<IdentifierHash>& collections) override; virtual StatusCode convert() override { - const CSC_RawDataProviderToolMT* cthis = this; - return cthis->convert (Gaudi::Hive::currentContext()); + return this->convert (Gaudi::Hive::currentContext()); } virtual StatusCode convert(const std::vector<uint32_t>&) override {return StatusCode::FAILURE;} - StatusCode convert(const ROBFragmentList& vecRobs, - const EventContext& ctx) const; - StatusCode convert(const EventContext& ctx) const; + virtual StatusCode convert(const ROBFragmentList& vecRobs,const EventContext& ctx) const override; + virtual StatusCode convert(const EventContext& ctx) const override; + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override; + + // Not used + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override {return StatusCode::FAILURE;} + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override {return StatusCode::FAILURE;} private: diff --git a/MuonSpectrometer/MuonCnv/MuonCnvToolInterfaces/MuonCnvToolInterfaces/IMuonRawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonCnvToolInterfaces/MuonCnvToolInterfaces/IMuonRawDataProviderTool.h index 3f04917bc09ae2049659c9bd7e83d1d618da3716..d1738c0b5749294f66ae3275c66202cc6cd83715 100644 --- a/MuonSpectrometer/MuonCnv/MuonCnvToolInterfaces/MuonCnvToolInterfaces/IMuonRawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonCnvToolInterfaces/MuonCnvToolInterfaces/IMuonRawDataProviderTool.h @@ -8,6 +8,7 @@ #include "GaudiKernel/IAlgTool.h" #include "ByteStreamData/RawEvent.h" #include "Identifier/IdentifierHash.h" +#include "GaudiKernel/EventContext.h" #include <vector> static const InterfaceID IID_IMuonRawDataProviderTool( "Muon::IMuonRawDataProviderTool", 1, 0 ); @@ -34,6 +35,14 @@ public: virtual StatusCode convert() = 0; //!< for the entire event virtual StatusCode convert(const std::vector<IdentifierHash>&) = 0; //!< for a selection of rdo collections virtual StatusCode convert(const std::vector<uint32_t>&){return StatusCode::FAILURE;} + /** Event Context functions **/ + virtual StatusCode convert(const EventContext&) const {return StatusCode::FAILURE;} + virtual StatusCode convert(const ROBFragmentList&, const EventContext&) const {return StatusCode::FAILURE;} + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const {return StatusCode::FAILURE;} + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const {return StatusCode::FAILURE;} + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const {return StatusCode::FAILURE;} + + }; } diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx index 5d9859afe9bd85a44b0a764bf106f9234595ed18..6968248926fc2a08dff4218eab98ac432835a53c 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.cxx @@ -42,45 +42,72 @@ StatusCode Muon::MDT_RawDataProviderTool::finalize() // the new one StatusCode Muon::MDT_RawDataProviderTool::convert() //call decoding function using list of all detector ROBId's { - SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + return this->convert( Gaudi::Hive::currentContext() ); +} + +// EventContext +StatusCode Muon::MDT_RawDataProviderTool::convert(const EventContext& ctx) const { + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey, ctx}; const MuonMDT_CablingMap* readCdo{*readHandle}; if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } - return convert(readCdo->getAllROBId()); -} + return convert(readCdo->getAllROBId(), ctx); +} StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<IdentifierHash>& HashVec) { - SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + return this->convert( HashVec, Gaudi::Hive::currentContext() ); +} + +// EventContext +StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<IdentifierHash>& HashVec, const EventContext& ctx) const +{ + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey, ctx}; const MuonMDT_CablingMap* readCdo{*readHandle}; if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } - return convert(readCdo->getROBId(HashVec)); + return convert(readCdo->getROBId(HashVec), ctx); } StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds) +{ + return this->convert( robIds, Gaudi::Hive::currentContext() ); // using the old one +} + +StatusCode Muon::MDT_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds, const EventContext& ctx) const { std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; m_robDataProvider->getROBData( robIds, vecOfRobf); - return convert(vecOfRobf); // using the old one - } + return convert(vecOfRobf, ctx); // using the old one +} + StatusCode Muon::MDT_RawDataProviderTool::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&) { - return convert(vecRobs); + return this->convert(vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::MDT_RawDataProviderTool::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, + const std::vector<IdentifierHash>& /*collections*/, const EventContext& ctx) const +{ + return convert(vecRobs, ctx); } /// This decode function is for single-thread running only StatusCode Muon::MDT_RawDataProviderTool::convert ATLAS_NOT_THREAD_SAFE ( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs) +{ + return this->convert(vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::MDT_RawDataProviderTool::convert ( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const EventContext& ctx) const { ATH_MSG_VERBOSE("convert(): " << vecRobs.size()<<" ROBFragments."); - - SG::WriteHandle<MdtCsmContainer> rdoContainerHandle(m_rdoContainerKey); + SG::WriteHandle<MdtCsmContainer> rdoContainerHandle(m_rdoContainerKey, ctx); MdtCsmContainer* rdoContainer = 0; @@ -108,5 +135,5 @@ StatusCode Muon::MDT_RawDataProviderTool::convert ATLAS_NOT_THREAD_SAFE ( const ATH_CHECK( convertIntoContainer( vecRobs, *rdoContainer ) ); return StatusCode::SUCCESS; -} +} \ No newline at end of file diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h index a23afd654652b521bfa439f3ffe934e116e4cf0b..22d66891cc6ebec823e1c6ce7d1b0178d1a76e79 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderTool.h @@ -39,12 +39,19 @@ class ATLAS_NOT_THREAD_SAFE MDT_RawDataProviderTool : virtual public IMuonRawDat virtual StatusCode finalize (); /** Convert method - declared in Muon::IMuonRdoToPrepDataTool*/ - virtual StatusCode convert ATLAS_NOT_THREAD_SAFE ( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs); - virtual StatusCode convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&); + virtual StatusCode convert ATLAS_NOT_THREAD_SAFE ( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs) override; + virtual StatusCode convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&) override; + /** the new ones */ virtual StatusCode convert(); //!< for the entire event - virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec); - virtual StatusCode convert(const std::vector<uint32_t>& robIds);//!< for a particular vector of ROBId's + virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec) override; + virtual StatusCode convert(const std::vector<uint32_t>& robIds) override;//!< for a particular vector of ROBId's + /** EventContext ones **/ + virtual StatusCode convert(const EventContext&) const override; //!< for the entire event + virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec, const EventContext&) const override; + virtual StatusCode convert(const std::vector<uint32_t>& robIds, const EventContext&) const override;//!< for a particular vector of ROBId's + virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const EventContext&) const override; + virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&, const EventContext&) const override; }; diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.cxx index f9161b42b6d4ab2dd4d4f50a0d9fe213c832b45c..9a4192ea6f5a170cf032b83cbf92a18bfd83bcf6 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.cxx @@ -44,7 +44,7 @@ StatusCode Muon::MDT_RawDataProviderToolCore::initialize() return StatusCode::SUCCESS; } -StatusCode Muon::MDT_RawDataProviderToolCore::convertIntoContainer( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, MdtCsmContainer& mdtContainer) +StatusCode Muon::MDT_RawDataProviderToolCore::convertIntoContainer( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, MdtCsmContainer& mdtContainer) const { ATH_MSG_VERBOSE("convert(): " << vecRobs.size()<<" ROBFragments."); diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.h index 94a7d5400f977abcada83477069d2d3a286e1a1b..2b9fe5c29223b35d5e42d472aa28d16c632f7fe6 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolCore.h @@ -43,7 +43,7 @@ class MDT_RawDataProviderToolCore : public AthAlgTool virtual StatusCode initialize(); /** Convert method */ - virtual StatusCode convertIntoContainer( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, MdtCsmContainer& mdtContainer); + virtual StatusCode convertIntoContainer( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, MdtCsmContainer& mdtContainer) const; protected: diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.cxx index eaef673ff688b1d404bded51de2290afd3c55426..9bd333f21f14d3f49a4bd657e96b0c2e459f6dc1 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.cxx @@ -41,43 +41,69 @@ StatusCode Muon::MDT_RawDataProviderToolMT::finalize() // the new one StatusCode Muon::MDT_RawDataProviderToolMT::convert() //call decoding function using list of all detector ROBId's { - SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + return this->convert( Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::MDT_RawDataProviderToolMT::convert(const EventContext& ctx) const //call decoding function using list of all detector ROBId's +{ + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey, ctx}; const MuonMDT_CablingMap* readCdo{*readHandle}; if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } - return convert(readCdo->getAllROBId()); + return convert(readCdo->getAllROBId(), ctx); } StatusCode Muon::MDT_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& HashVec) { - SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey}; + return this->convert(HashVec, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::MDT_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& HashVec, const EventContext& ctx) const +{ + SG::ReadCondHandle<MuonMDT_CablingMap> readHandle{m_readKey, ctx}; const MuonMDT_CablingMap* readCdo{*readHandle}; if(readCdo==nullptr){ ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } - return convert(readCdo->getROBId(HashVec)); + return convert(readCdo->getROBId(HashVec), ctx); } StatusCode Muon::MDT_RawDataProviderToolMT::convert(const std::vector<uint32_t>& robIds) +{ + return this->convert(robIds, Gaudi::Hive::currentContext() ); +} + + StatusCode Muon::MDT_RawDataProviderToolMT::convert(const std::vector<uint32_t>& robIds, const EventContext& ctx) const { std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; m_robDataProvider->getROBData( robIds, vecOfRobf); - return convert(vecOfRobf); // using the old one - } + return convert(vecOfRobf, ctx); // using the old one +} + StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&) { - return convert(vecRobs); + return this->convert(vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, + const std::vector<IdentifierHash>& /*collection*/, const EventContext& ctx) const +{ + return convert(vecRobs, ctx); +} + +StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs){ + return this->convert(vecRobs, Gaudi::Hive::currentContext() ); } -StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs) +StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const EventContext& ctx) const { ATH_MSG_VERBOSE("convert(): " << vecRobs.size()<<" ROBFragments."); - SG::WriteHandle<MdtCsmContainer> rdoContainerHandle(m_rdoContainerKey); + SG::WriteHandle<MdtCsmContainer> rdoContainerHandle(m_rdoContainerKey, ctx); MdtCsmContainer* rdoContainer = 0; @@ -94,7 +120,7 @@ StatusCode Muon::MDT_RawDataProviderToolMT::convert( const std::vector<const OFF rdoContainer = rdoContainerHandle.ptr(); } else { // use the cache to get the container - SG::UpdateHandle<MdtCsm_Cache> update(m_rdoContainerCacheKey); + SG::UpdateHandle<MdtCsm_Cache> update(m_rdoContainerCacheKey, ctx); ATH_CHECK(update.isValid()); ATH_CHECK(rdoContainerHandle.record (std::make_unique<MdtCsmContainer>(update.ptr()))); ATH_MSG_DEBUG("Created container using cache for " << m_rdoContainerCacheKey.key()); diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.h index baea3aec274b2c6048e0326fa85849225a6a025e..ab7adbe19e234e0dda02c426f48fb6e43449e2df 100644 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MDT_RawDataProviderToolMT.h @@ -42,6 +42,12 @@ class MDT_RawDataProviderToolMT : virtual public IMuonRawDataProviderTool, publi virtual StatusCode convert(); //!< for the entire event virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec); virtual StatusCode convert(const std::vector<uint32_t>& robIds);//!< for a particular vector of ROBId's + /** EventContext **/ + virtual StatusCode convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const EventContext& ctx) const override; + virtual StatusCode convert( const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>&, const EventContext& ctx) const override; + virtual StatusCode convert(const EventContext& ctx) const override; //!< for the entire event + virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec, const EventContext& ctx) const override; + virtual StatusCode convert(const std::vector<uint32_t>& robIds, const EventContext& ctx) const override;//!< for a particular vector of ROBId's private: diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx index f1e1012cdb221f00c95f1f357b9bcbe48faa19e9..8ae3ae94313574a7638de27830c301af13d8bec1 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.cxx @@ -79,7 +79,7 @@ StatusCode MdtROD_Decoder::finalize() { StatusCode MdtROD_Decoder::fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, - MdtCsmContainer& rdoIDC) + MdtCsmContainer& rdoIDC) const { // m_debug = (m_log.level() <= MSG::DEBUG); // use to control if output debug info. @@ -516,7 +516,7 @@ StatusCode MdtROD_Decoder::fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::RO return StatusCode::SUCCESS; } -std::pair<IdentifierHash, Identifier> MdtROD_Decoder::getHash ( Identifier ident) { +std::pair<IdentifierHash, Identifier> MdtROD_Decoder::getHash ( Identifier ident) const { //get hash from identifier. IdentifierHash idHash; Identifier regid; diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h index 6e2bfed0ed5616853f14fd4b6ca0293f3e6a8381..319b71c7e7a9623aac9aeef70eedb0cebeac8c16 100755 --- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtROD_Decoder.h @@ -7,6 +7,7 @@ #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/ServiceHandle.h" +#include "CxxUtils/checker_macros.h" #include "MdtRODReadOut.h" #include "MdtCsmReadOut.h" @@ -55,11 +56,11 @@ public: MDT_Hid2RESrcID* getHid2RE() {return m_hid2re;} StatusCode fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, - MdtCsmContainer& rdoIDC); + MdtCsmContainer& rdoIDC) const; int specialROBNumber() const {return m_specialROBNumber;} - std::pair<IdentifierHash, Identifier> getHash (Identifier ident); + std::pair<IdentifierHash, Identifier> getHash (Identifier ident) const; private: MDT_Hid2RESrcID* m_hid2re; @@ -82,8 +83,9 @@ private: int m_BMGid; // variables to count how often the caching kicks in - unsigned int m_nCache = 0; - unsigned int m_nNotCache = 0; + // Mutable as this is just to count calls of const function + mutable std::atomic_uint m_nCache ATLAS_THREAD_SAFE = 0 ; + mutable std::atomic_uint m_nNotCache ATLAS_THREAD_SAFE = 0 ; }; #endif diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/MuonRPC_CnvTools/IRpcROD_Decoder.h b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/MuonRPC_CnvTools/IRpcROD_Decoder.h index edd56b65e83063bbd9be12639cb442d9c1ed2049..06210c877ff3ee45b9d4ba6eec8bef6ad2d7c00a 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/MuonRPC_CnvTools/IRpcROD_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/MuonRPC_CnvTools/IRpcROD_Decoder.h @@ -27,11 +27,10 @@ public: } // enter declaration of your interface-defining member functions here + // bool decodeSL - Used to determine whether sector logic is being decoded too virtual StatusCode fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, - RpcPadContainer& rdoIdc, - const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer*) const = 0; + RpcPadContainer& rdoIdc, const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer*, const bool& decodeSL) const = 0; - virtual void setSLdecodingRequest() = 0; }; } // end of namespace diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.cxx index af3822f5fcbcb5a8bb42dcf0e540d3ef75dea652..7374cd874b5fb58689d64ec02c2e3f43f97b71c9 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.cxx @@ -59,41 +59,65 @@ StatusCode Muon::RPC_RawDataProviderTool::initialize() // the new one StatusCode Muon::RPC_RawDataProviderTool::convert() { - SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey}; + return this->convert( Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderTool::convert(const EventContext& ctx) const +{ + SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey, ctx}; const RpcCablingCondData* readCdo{*readHandle}; //CALLGRIND_START_INSTRUMENTATION /// - m_decoder->setSLdecodingRequest(); + //m_decoder->setSLdecodingRequest(); + // We used to set a variable in decoder to turn on SL decoding, but not allowed with const functions + // So we will pass this through with EventContext and it was only active when running + // full decoding it seems std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; std::vector<uint32_t> robIds = readCdo->giveFullListOfRobIds(); m_robDataProvider->getROBData( robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf); // using the old one + return convert(vecOfRobf, ctx); // using the old one } + // the old one StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs) +{ + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION std::vector<IdentifierHash> collections; //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecRobs,collections); + return convert(vecRobs, collections, ctx); } // the new one StatusCode Muon::RPC_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds) +{ + return this->convert( robIds, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderTool::convert(const std::vector<uint32_t>& robIds, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION std::vector<IdentifierHash> collections; std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; m_robDataProvider->getROBData(robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf,collections); + return convert(vecOfRobf, collections, ctx); } // the new one StatusCode Muon::RPC_RawDataProviderTool::convert(const std::vector<IdentifierHash>& rdoIdhVect) { - SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey}; + return this->convert( rdoIdhVect, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderTool::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const +{ + SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey, ctx}; const RpcCablingCondData* readCdo{*readHandle}; //CALLGRIND_START_INSTRUMENTATION std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; @@ -101,11 +125,16 @@ StatusCode Muon::RPC_RawDataProviderTool::convert(const std::vector<IdentifierHa CHECK( readCdo->giveROB_fromRDO(rdoIdhVect, robIds) ); m_robDataProvider->getROBData(robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf, rdoIdhVect); // using the old one + return convert(vecOfRobf, rdoIdhVect, ctx); // using the old one } + // the old one -StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>& collections) +StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& collections) +{ + return this->convert( vecRobs, collections, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& collections, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION @@ -119,8 +148,8 @@ StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs // on the user experience } - SG::WriteHandle<RpcPadContainer> rdoContainerHandle(m_containerKey); - SG::WriteHandle<RpcSectorLogicContainer> logicHandle(m_sec); + SG::WriteHandle<RpcPadContainer> rdoContainerHandle(m_containerKey, ctx); + SG::WriteHandle<RpcSectorLogicContainer> logicHandle(m_sec, ctx); RpcPadContainer* pad = 0; RpcSectorLogicContainer* logic = 0; @@ -146,7 +175,7 @@ StatusCode Muon::RPC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs } // pass the containers to the convertIntoContainers function in the RPC_RawDataProviderToolCore base class - ATH_CHECK( convertIntoContainers(vecRobs, collections, pad, logic) ); + ATH_CHECK( convertIntoContainers(vecRobs, collections, pad, logic, true) ); return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.h index e4029a4431dce8785c959bf2a3fce4d0f54b2847..9fd8592ebd15805b3e0034100ad9eec74d77d5e3 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderTool.h @@ -38,12 +38,18 @@ class ATLAS_NOT_THREAD_SAFE RPC_RawDataProviderTool : virtual public IMuonRawDat /** Decoding method. - current methods: let's keep them! */ virtual StatusCode convert(const ROBFragmentList& vecRobs); - virtual StatusCode convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>& coll); + virtual StatusCode convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& coll); /** the new ones */ virtual StatusCode convert(); //!< for the entire event virtual StatusCode convert(const std::vector<IdentifierHash>&); //!< for a selection of rdo collections virtual StatusCode convert(const std::vector<uint32_t>&); + /** EventContext ones **/ + virtual StatusCode convert(const ROBFragmentList&, const EventContext&) const override; + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const EventContext&) const override; + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override; + diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.cxx index 5afd17ed95c4271b3c14a201cb05da72090bbfe4..a97d3dadc99295cbd6afd17cada68017220d6f5d 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.cxx +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.cxx @@ -35,8 +35,7 @@ StatusCode Muon::RPC_RawDataProviderToolCore::initialize() } -StatusCode Muon::RPC_RawDataProviderToolCore::convertIntoContainers(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& collections, - RpcPadContainer* pad, RpcSectorLogicContainer* logic) const { +StatusCode Muon::RPC_RawDataProviderToolCore::convertIntoContainers(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& collections, RpcPadContainer* pad, RpcSectorLogicContainer* logic, const bool& decodeSL) const { for (auto itFrag = vecRobs.begin(); itFrag != vecRobs.end(); itFrag++) { @@ -45,7 +44,7 @@ StatusCode Muon::RPC_RawDataProviderToolCore::convertIntoContainers(const std::v { std::vector<IdentifierHash> coll = to_be_converted(**itFrag,collections); - if (m_decoder->fillCollections(**itFrag, *pad, coll, logic).isFailure()) + if (m_decoder->fillCollections(**itFrag, *pad, coll, logic, decodeSL).isFailure()) { // store the error conditions into the StatusCode and continue } diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.h b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.h index c6c202fb6bbefd38eebb538a173d3ecfeab120b5..5a69b577340079a414a42c3c3ab4165e7c3ddc5a 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.h +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolCore.h @@ -40,8 +40,7 @@ namespace Muon protected: // This function does all the actual work of decoding the data - StatusCode convertIntoContainers(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& collections, - RpcPadContainer* pad, RpcSectorLogicContainer* logic) const; + StatusCode convertIntoContainers(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& collections, RpcPadContainer* pad, RpcSectorLogicContainer* logic, const bool& decodeSL) const; std::vector<IdentifierHash> to_be_converted(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, const std::vector<IdentifierHash>& coll) const; diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.cxx b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.cxx index ef8685c83753e9d16149d085a70bf786beb5d644..3faa1b3d682513aa82a2b228de189883ddcf5368 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.cxx +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.cxx @@ -55,41 +55,60 @@ StatusCode Muon::RPC_RawDataProviderToolMT::initialize() // the new one StatusCode Muon::RPC_RawDataProviderToolMT::convert() { - SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey}; + return this->convert( Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const EventContext& ctx) const +{ + SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey, ctx}; const RpcCablingCondData* readCdo{*readHandle}; //CALLGRIND_START_INSTRUMENTATION /// - m_decoder->setSLdecodingRequest(); std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; std::vector<uint32_t> robIds = readCdo->giveFullListOfRobIds(); m_robDataProvider->getROBData( robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf); // using the old one + return convert(vecOfRobf, ctx); // using the old one } // the old one StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs) +{ + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION std::vector<IdentifierHash> collections; //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecRobs,collections); + return convert(vecRobs,collections, ctx); } // the new one StatusCode Muon::RPC_RawDataProviderToolMT::convert(const std::vector<uint32_t>& robIds) +{ + return this->convert( robIds, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const std::vector<uint32_t>& robIds, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION std::vector<IdentifierHash> collections; std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; m_robDataProvider->getROBData(robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf,collections); + return convert(vecOfRobf,collections, ctx); } // the new one StatusCode Muon::RPC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect) { - SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey}; + return this->convert( rdoIdhVect, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const +{ + SG::ReadCondHandle<RpcCablingCondData> readHandle{m_readKey, ctx}; const RpcCablingCondData* readCdo{*readHandle}; //CALLGRIND_START_INSTRUMENTATION std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; @@ -97,16 +116,20 @@ StatusCode Muon::RPC_RawDataProviderToolMT::convert(const std::vector<Identifier CHECK( readCdo->giveROB_fromRDO(rdoIdhVect, robIds) ); m_robDataProvider->getROBData(robIds, vecOfRobf); //CALLGRIND_STOP_INSTRUMENTATION - return convert(vecOfRobf, rdoIdhVect); // using the old one + return convert(vecOfRobf, rdoIdhVect, ctx); // using the old one } // the old one -StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>& collections) +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& collections) +{ + return this->convert( vecRobs, collections, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& collections, const EventContext& ctx) const { //CALLGRIND_START_INSTRUMENTATION - SG::WriteHandle<RpcPadContainer> rdoContainerHandle(m_containerKey); - SG::WriteHandle<RpcSectorLogicContainer> logicHandle(m_sec); + SG::WriteHandle<RpcPadContainer> rdoContainerHandle(m_containerKey, ctx); + SG::WriteHandle<RpcSectorLogicContainer> logicHandle(m_sec, ctx); // run 3 mode, here we always try to write the containers @@ -117,7 +140,7 @@ StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRo ATH_MSG_DEBUG( "Created RpcPadContainer" ); } else{ - SG::UpdateHandle<RpcPad_Cache> update(m_rdoContainerCacheKey); + SG::UpdateHandle<RpcPad_Cache> update(m_rdoContainerCacheKey, ctx); ATH_CHECK(update.isValid()); ATH_CHECK(rdoContainerHandle.record (std::make_unique<RpcPadContainer>( update.ptr() ))); ATH_MSG_DEBUG("Created container using cache for " << m_rdoContainerCacheKey.key()); @@ -132,7 +155,7 @@ StatusCode Muon::RPC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRo } // pass the containers to the convertIntoContainers function in the RPC_RawDataProviderToolCore base class - ATH_CHECK( convertIntoContainers(vecRobs, collections, pad, logic) ); + ATH_CHECK( convertIntoContainers(vecRobs, collections, pad, logic, true) ); return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.h b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.h index 4dab40fd082290c4d7368b3aa51be4a0ceb75545..8b5124c200909fcd3badddca4cced92ac29ccb70 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.h +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RPC_RawDataProviderToolMT.h @@ -41,13 +41,17 @@ class RPC_RawDataProviderToolMT : virtual public IMuonRawDataProviderTool, /** Decoding method. - current methods: let's keep them! */ virtual StatusCode convert(const ROBFragmentList& vecRobs); - virtual StatusCode convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>& coll); + virtual StatusCode convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& coll); /** the new ones */ virtual StatusCode convert(); //!< for the entire event virtual StatusCode convert(const std::vector<IdentifierHash>&); //!< for a selection of rdo collections virtual StatusCode convert(const std::vector<uint32_t>&); - + /** EventContext ones **/ + virtual StatusCode convert(const ROBFragmentList&, const EventContext&) const override; + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const EventContext&) const override; + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override; private: diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.cxx b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.cxx index e5460e358c54a069e5c3b0215206a5ea93ca74d9..55336736a6b72003bc97b262af13a6cefdc355db 100755 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.cxx @@ -16,8 +16,7 @@ #include "AthenaBaseComps/AthAlgTool.h" Muon::RpcROD_Decoder::RpcROD_Decoder (const std::string& type, const std::string& name, const IInterface* parent) : - AthAlgTool(type,name,parent), - m_decodeSL(false) { + AthAlgTool(type,name,parent) { declareInterface< IRpcROD_Decoder >( this ); declareProperty("SpecialROBNumber",m_specialROBNumber=-1); declareProperty("Sector13Data",m_sector13Data=false); diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.h b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.h index b5a1d27b5826924caa3b65824fd8c2321e48b51d..a71df809bef9cb5091f2c21a05b2cc33cae0607d 100755 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.h +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder.h @@ -71,18 +71,15 @@ namespace Muon // implementation of the abstract interface StatusCode fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, RpcPadContainer& rdoIdc, - const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer*) const override; + const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer*, const bool& decodeSL) const override; int specialROBNumber() const {return m_specialROBNumber;} bool isSector13Data() const {return m_sector13Data;} - virtual void setSLdecodingRequest() override {m_decodeSL=true;} private: - bool m_decodeSL; - typedef OFFLINE_FRAGMENTS_NAMESPACE::PointerType BS; @@ -94,12 +91,12 @@ namespace Muon // decoding of real data - 2010 & 2011 _v302 StatusCode fillCollection_v302new(BS data, const uint32_t data_size, RpcPad& v, - const uint32_t& sourceId, RpcSectorLogicContainer* ) const; + const uint32_t& sourceId, RpcSectorLogicContainer*, const bool& ) const; StatusCode fillCollection_v302(BS data, const uint32_t data_size, RpcPad& v, const uint32_t& sourceId,RpcSectorLogicContainer* ) const; // decoding of real data - 2010 & 2011 _v302 StatusCode fillCollectionsFromRob_v302(BS data, const uint32_t data_size, std::map<Identifier,RpcPad*>& vmap, - const uint32_t& sourceId, RpcSectorLogicContainer* ) const; + const uint32_t& sourceId, RpcSectorLogicContainer*, const bool& decodeSL) const; // fragment each of the 32 bit words into 2 16 bit words! @@ -354,7 +351,7 @@ namespace Muon inline StatusCode RpcROD_Decoder::fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, RpcPadContainer& rdoIdc, - const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer* RPC_SECTORLOGIC) const + const std::vector<IdentifierHash> &collections, RpcSectorLogicContainer* RPC_SECTORLOGIC, const bool& decodeSL) const { try @@ -411,6 +408,7 @@ namespace Muon { type = 2; ATH_MSG_VERBOSE("choosing fillCollection_v302"); + ATH_MSG_VERBOSE("with decodeSL when decoding from ROB " << decodeSL); // Only meaningful for this function } @@ -457,7 +455,7 @@ namespace Muon } // RpcPadCollections not decoded and in container are identified and passed explicitly to decoder - cnv_sc = fillCollectionsFromRob_v302(data,robFrag.rod_ndata(),mapOfCollections,rod_sourceId, RPC_SECTORLOGIC); + cnv_sc = fillCollectionsFromRob_v302(data,robFrag.rod_ndata(),mapOfCollections,rod_sourceId, RPC_SECTORLOGIC, decodeSL); if (cnv_sc!=StatusCode::SUCCESS) { if (cnv_sc==StatusCode::RECOVERABLE) diff --git a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder_v302.C b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder_v302.C index d864e4c506dfc58d37e61392b0526bf23a0e48ff..58b97a6c4a4c7118ef5c0b52961e2dfe06347e5b 100644 --- a/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder_v302.C +++ b/MuonSpectrometer/MuonCnv/MuonRPC_CnvTools/src/RpcROD_Decoder_v302.C @@ -3,13 +3,13 @@ */ StatusCode Muon::RpcROD_Decoder::fillCollection_v302new(BS data, const uint32_t data_size, RpcPad& v, - const uint32_t& sourceId, RpcSectorLogicContainer* sectorLogicContainer ) const + const uint32_t& sourceId, RpcSectorLogicContainer* sectorLogicContainer, const bool& decodeSL) const { ATH_MSG_VERBOSE("in fillCollection_v302new"); std::map<Identifier,RpcPad*> vmap; vmap[v.identify()]=&v; - StatusCode cnvsc= fillCollectionsFromRob_v302(data,data_size,vmap,sourceId, sectorLogicContainer); + StatusCode cnvsc= fillCollectionsFromRob_v302(data,data_size,vmap,sourceId, sectorLogicContainer, decodeSL); if (cnvsc!=StatusCode::SUCCESS) { ATH_MSG_DEBUG("Some decoding problem observed"); @@ -18,8 +18,7 @@ StatusCode Muon::RpcROD_Decoder::fillCollection_v302new(BS data, const uint32_t } -StatusCode Muon::RpcROD_Decoder::fillCollectionsFromRob_v302(BS data, const uint32_t data_size, std::map<Identifier,RpcPad*>& vmap, const uint32_t& sourceId, - RpcSectorLogicContainer* sectorLogicContainer ) const +StatusCode Muon::RpcROD_Decoder::fillCollectionsFromRob_v302(BS data, const uint32_t data_size, std::map<Identifier,RpcPad*>& vmap, const uint32_t& sourceId, RpcSectorLogicContainer* sectorLogicContainer, const bool& decodeSL ) const { bool skipSectorLogicDecoding = (sectorLogicContainer == nullptr); @@ -617,7 +616,7 @@ StatusCode Muon::RpcROD_Decoder::fillCollectionsFromRob_v302(BS data, const uint if ((unsigned int)nDecodedPads==vmap.size()) { ATH_MSG_DEBUG("All pads requested are found and decoded"); - if (!m_decodeSL) + if (!decodeSL) { ATH_MSG_DEBUG("... since no SL decoding is requested exit here"); return StatusCode::SUCCESS; diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/MuonTGC_CnvTools/ITGC_RodDecoder.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/MuonTGC_CnvTools/ITGC_RodDecoder.h index d32d66a3a4d5ac78a5f4954f1b4e22e5fb450245..9d9a7dd290dd5606ed572d50b53a8cb0db4cdbc0 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/MuonTGC_CnvTools/ITGC_RodDecoder.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/MuonTGC_CnvTools/ITGC_RodDecoder.h @@ -35,7 +35,7 @@ namespace Muon } /** Convert ROBFragments to RDOs */ - virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc) = 0; + virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const = 0; }; diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.cxx index 6897e9767406b27c3071feef18e3a111ec61f3a8..5c49d5c5f83a029e4fe4c92645002c5cf0511b70 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.cxx @@ -41,7 +41,7 @@ uint32_t Muon::TGC_Hid2RESrcID::getRodID(uint16_t subDetectorId, uint16_t rodId) } // get source ID for an TgcDigitCollection -uint32_t Muon::TGC_Hid2RESrcID::getRodID(const Identifier& offlineId) +uint32_t Muon::TGC_Hid2RESrcID::getRodID(const Identifier& offlineId) const { int subDetectorId; int rodId; @@ -56,7 +56,7 @@ uint32_t Muon::TGC_Hid2RESrcID::getRodID(const Identifier& offlineId) } // mapping SrcID from ROD to ROB -uint32_t Muon::TGC_Hid2RESrcID::getRobID(uint32_t rod_id) +uint32_t Muon::TGC_Hid2RESrcID::getRobID(uint32_t rod_id) const { // return Source ID. // ROD source ID and ROB source ID are identical for TGC. diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.h index 3a7805dde0af56af84b4f9205d736330d7813947..bdfc65c1dd5d6117fe5dd89cef1cc74402b0bc47 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_Hid2RESrcID.h @@ -43,16 +43,16 @@ namespace Muon /** Make a ROD Source ID for SubDetector ID and ROD ID. */ uint32_t getRodID(uint16_t subDetectorId, uint16_t rodId); /** Make a ROD Source ID for TgcDigitCollection. */ - uint32_t getRodID(const Identifier & offlineId); + uint32_t getRodID(const Identifier & offlineId) const; /** Make a ROB Source ID from a ROD source ID. */ - uint32_t getRobID (uint32_t rod_id); + uint32_t getRobID (uint32_t rod_id) const; /** Make a ROS Source ID from a ROB source ID. */ uint32_t getRosID (uint32_t rob_id); /** Make a SubDetector ID from ROS source ID. */ uint32_t getDetID (uint32_t ros_id); /** Return all the ROB IDs. */ - const std::vector<uint32_t>& allRobIds() { return m_robIDs; } + const std::vector<uint32_t>& allRobIds() const { return m_robIDs; } private: /** Fill all the ROB IDs. */ diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.cxx index e71b11aaaa0ff98f486300a33893b38ad4e5735c..811ae265151bc70dfc373a77dd42e7826b847cb3 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.cxx @@ -30,10 +30,14 @@ StatusCode Muon::TGC_RawDataProviderTool::initialize() //============================================================================================ -StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs) +StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs){ + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const { - SG::WriteHandle<TgcRdoContainer> rdoContainerHandle(m_rdoContainerKey); + SG::WriteHandle<TgcRdoContainer> rdoContainerHandle(m_rdoContainerKey, ctx); TgcRdoContainer* rdoContainer = 0; @@ -57,17 +61,25 @@ StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs return convertIntoContainer(vecRobs, *rdoContainer); } -StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>&) +StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>&){ + // This function does not use the IdentifierHash so we pass to the EventContext function which also does not use it + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::TGC_RawDataProviderTool::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& /*ids*/, const EventContext& ctx) const { - return convert(vecRobs); + return convert(vecRobs, ctx); +} + +StatusCode Muon::TGC_RawDataProviderTool::convert(){ + return this->convert( Gaudi::Hive::currentContext() ); } -StatusCode Muon::TGC_RawDataProviderTool::convert() +StatusCode Muon::TGC_RawDataProviderTool::convert(const EventContext& ctx) const { if(!m_cabling) { - StatusCode sc = getCabling(); - if(sc.isFailure()) return sc; + ATH_MSG_ERROR("Tgc cabling is not available and needs to be set in initialise"); + return StatusCode::FAILURE; } std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; @@ -75,13 +87,18 @@ StatusCode Muon::TGC_RawDataProviderTool::convert() m_robDataProvider->getROBData(robIds, vecOfRobf); - return convert(vecOfRobf); + return convert(vecOfRobf, ctx); } -StatusCode Muon::TGC_RawDataProviderTool::convert(const std::vector<IdentifierHash>& rdoIdhVect) +StatusCode Muon::TGC_RawDataProviderTool::convert(const std::vector<IdentifierHash>& rdoIdhVect){ + return this->convert( rdoIdhVect, Gaudi::Hive::currentContext() ); +} + + +StatusCode Muon::TGC_RawDataProviderTool::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const { std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf = getROBData(rdoIdhVect); - return convert(vecOfRobf, rdoIdhVect); + return convert(vecOfRobf, rdoIdhVect, ctx); } diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.h index 6e047c09dc90af52e94e6b77636f94271bb1cbc6..60fe7f011285640a5dbe714e5ac3f88769ef378d 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderTool.h @@ -43,11 +43,20 @@ namespace Muon virtual StatusCode convert(); /** New decoding methods which do not use IROBDataProviderSvc in TgcRdoToPrepDataTool with ID Hash vector */ virtual StatusCode convert(const std::vector<IdentifierHash>& rdoIdhVect); + + /** EventContext ones **/ + virtual StatusCode convert(const ROBFragmentList&, const EventContext&) const override; + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const EventContext&) const override; + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override; private: /** convert from vector of ROB IDs is not available */ virtual StatusCode convert(const std::vector<uint32_t>&) {return StatusCode::FAILURE;} + /** EventContext ones **/ + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override {return StatusCode::FAILURE;} + }; } // end of namespace diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.cxx index 4b8e574f5ccd6775ea896a5077ce6f3841f27f33..b434fb4ef41020675356f0dad0f15266da5fbee2 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.cxx @@ -40,7 +40,8 @@ StatusCode Muon::TGC_RawDataProviderToolCore::initialize() //try to configure the cabling service StatusCode sc = getCabling(); if(sc.isFailure()) { - ATH_MSG_INFO( "TGCcablingServerSvc not yet configured; postone TGCcabling initialization at first event. " ); + ATH_MSG_ERROR( "TGCcablingServerSvc not yet configured, but this needs to be available when TGC_RawDataProviderToolCore is initalised as we cannot create it on the fly during event processing inside const decode functions."); + return StatusCode::FAILURE; } return StatusCode::SUCCESS; @@ -48,7 +49,7 @@ StatusCode Muon::TGC_RawDataProviderToolCore::initialize() //============================================================================================ -StatusCode Muon::TGC_RawDataProviderToolCore::convertIntoContainer(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, TgcRdoContainer& tgcRdoContainer) +StatusCode Muon::TGC_RawDataProviderToolCore::convertIntoContainer(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, TgcRdoContainer& tgcRdoContainer) const { /// Static variables are not thread safe @@ -84,7 +85,6 @@ StatusCode Muon::TGC_RawDataProviderToolCore::getCabling() { sc = TgcCabGet->giveCabling(m_cabling); if(sc.isFailure()) { ATH_MSG_FATAL( "Could not get ITGCcablingSvc from the Server !" ); - m_cabling = 0; return StatusCode::FAILURE; } else { ATH_MSG_VERBOSE( "ITGCcablingSvc obtained" ); @@ -96,14 +96,12 @@ StatusCode Muon::TGC_RawDataProviderToolCore::getCabling() { } -std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> Muon::TGC_RawDataProviderToolCore::getROBData(const std::vector<IdentifierHash>& rdoIdhVect) { +std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> Muon::TGC_RawDataProviderToolCore::getROBData(const std::vector<IdentifierHash>& rdoIdhVect) const { std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; if(!m_cabling) { - if( getCabling().isFailure() ) { ATH_MSG_ERROR("Could not get cabling, return empty vector of ROB fragments"); return vecOfRobf; - } } IdContext tgcContext = m_idHelperSvc->tgcIdHelper().module_context(); diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.h index 973c6464116330f1781799d10316acbd49a39cd6..cde75104c7626f67c5ac5732b59ef929a8c7bf81 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolCore.h @@ -39,12 +39,12 @@ namespace Muon { virtual StatusCode initialize(); /** Method that converts the ROBFragments into the passed container */ - virtual StatusCode convertIntoContainer(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, TgcRdoContainer& tgcRdoContainer); + virtual StatusCode convertIntoContainer(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs, TgcRdoContainer& tgcRdoContainer) const; protected: /** Function to get the ROB data from a vector of IdentifierHash **/ - std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> getROBData(const std::vector<IdentifierHash>& rdoIdhVect); + std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> getROBData(const std::vector<IdentifierHash>& rdoIdhVect) const; ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; /** Decoder for ROB fragment RDO conversion */ diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.cxx index 75a89d01873e6da1bcb46217e106da72e2e48831..ee6595596ffcf9959ea3cc6b74af09414200a7b5 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.cxx @@ -34,10 +34,14 @@ StatusCode Muon::TGC_RawDataProviderToolMT::initialize() //============================================================================================ -StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs) +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs){ + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const EventContext& ctx) const { - SG::WriteHandle<TgcRdoContainer> rdoContainerHandle(m_rdoContainerKey); + SG::WriteHandle<TgcRdoContainer> rdoContainerHandle(m_rdoContainerKey, ctx); // Split the methods to have one where we use the cache and one where we just setup the container const bool externalCacheRDO = !m_rdoContainerCacheKey.key().empty(); @@ -46,7 +50,7 @@ StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRo ATH_MSG_DEBUG( "Created TGC container" ); } else{ - SG::UpdateHandle<TgcRdo_Cache> update(m_rdoContainerCacheKey); + SG::UpdateHandle<TgcRdo_Cache> update(m_rdoContainerCacheKey, ctx); ATH_CHECK(update.isValid()); ATH_CHECK(rdoContainerHandle.record (std::make_unique<TgcRdoContainer>( update.ptr() ))); ATH_MSG_DEBUG("Created container using cache for " << m_rdoContainerCacheKey.key()); @@ -63,17 +67,25 @@ StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRo return convertIntoContainer(vecRobs, *rdoContainer); } -StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, - const std::vector<IdentifierHash>&) +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>&){ + // This function does not use the IdentifierHash so we pass to the EventContext function which also does not use it + return this->convert( vecRobs, Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const ROBFragmentList& vecRobs, const std::vector<IdentifierHash>& /*ids*/, const EventContext& ctx) const { - return convert(vecRobs); + return convert(vecRobs, ctx); } -StatusCode Muon::TGC_RawDataProviderToolMT::convert() +StatusCode Muon::TGC_RawDataProviderToolMT::convert(){ + return this->convert( Gaudi::Hive::currentContext() ); +} + +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const EventContext& ctx) const { if(!m_cabling) { - StatusCode sc = getCabling(); - if(sc.isFailure()) return sc; + ATH_MSG_ERROR("Tgc cabling is not available and needs to be set in initialise"); + return StatusCode::FAILURE; } std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf; @@ -81,13 +93,17 @@ StatusCode Muon::TGC_RawDataProviderToolMT::convert() m_robDataProvider->getROBData(robIds, vecOfRobf); - return convert(vecOfRobf); + return convert(vecOfRobf, ctx); +} + +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect){ + return this->convert( rdoIdhVect, Gaudi::Hive::currentContext() ); } -StatusCode Muon::TGC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect) +StatusCode Muon::TGC_RawDataProviderToolMT::convert(const std::vector<IdentifierHash>& rdoIdhVect, const EventContext& ctx) const { std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf = getROBData(rdoIdhVect); - return convert(vecOfRobf, rdoIdhVect); + return convert(vecOfRobf, rdoIdhVect, ctx); } diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.h index 7bcd24af68d54e00323ca017d77a4ea1da43e20c..1fbada24c0072627d4ee031f1b5d6c0f39012b06 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RawDataProviderToolMT.h @@ -43,12 +43,20 @@ namespace Muon /** New decoding methods which do not use IROBDataProviderSvc in TgcRdoToPrepDataTool with ID Hash vector */ virtual StatusCode convert(const std::vector<IdentifierHash>& rdoIdhVect); + /** EventContext ones **/ + virtual StatusCode convert(const ROBFragmentList&, const EventContext&) const override; + virtual StatusCode convert(const ROBFragmentList&, const std::vector<IdentifierHash>&, const EventContext&) const override; + virtual StatusCode convert(const EventContext&) const override; + virtual StatusCode convert(const std::vector<IdentifierHash>&, const EventContext&) const override; + private: // TGC container cache key SG::UpdateHandleKey<TgcRdo_Cache> m_rdoContainerCacheKey ; /** convert from vector of ROB IDs is not available */ virtual StatusCode convert(const std::vector<uint32_t>&) {return StatusCode::FAILURE;} + /** EventContext ones **/ + virtual StatusCode convert(const std::vector<uint32_t>&, const EventContext&) const override {return StatusCode::FAILURE;} }; } // end of namespace diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.cxx index 232576c5b5812c643a7b18e639eab598aac5354f..da05c97c1562ae7e6c343f6b73bce69880857f8c 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.cxx @@ -65,7 +65,7 @@ StatusCode Muon::TGC_RodDecoderRawdata::finalize() //================ fillCollection =============================================== -StatusCode Muon::TGC_RodDecoderRawdata::fillCollection(const ROBFragment& robFrag, TgcRdoContainer& rdoIdc) +StatusCode Muon::TGC_RodDecoderRawdata::fillCollection(const ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const { try { @@ -164,7 +164,7 @@ TgcRdo* Muon::TGC_RodDecoderRawdata::getCollection(const ROBFragment& robFrag, T void Muon::TGC_RodDecoderRawdata::byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo& rdo, - uint32_t source_id) + uint32_t source_id) const { ATH_MSG_DEBUG( "Muon::TGC_RodDecoder::byteStream2Rdo" ); diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.h index fa81a39e4a099c5e663622b4b15a76de744dcd4f..12f81dbc4536c0e7142f758ca0422ad9ebfd0932 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderRawdata.h @@ -43,14 +43,14 @@ namespace Muon /** Standard AlgTool method */ virtual StatusCode finalize(); /** Convert ROBFragment to RDO */ - virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc); + virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const; private: /** Retrieve header of ROBFragment */ TgcRdo* getCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const; /** Convert data contents of ROBFragment to RDO * The same byteStream2Rdo method in TGC_RodDecoderReadout is used for checking conversion validation */ - void byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo& rdo, uint32_t source_id); + void byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo& rdo, uint32_t source_id) const; /** Show status words */ void showStatusWords(const uint32_t source_id, const uint16_t rdoId, const int idHash, const uint32_t nstatus, const uint32_t* status) const; diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.cxx b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.cxx index ca202ea2db5c52dc03b7a7bd2911021104c92510..e6665987f932ee80758930f40cc92b7f576ee68c 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.cxx +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.cxx @@ -76,7 +76,7 @@ StatusCode Muon::TGC_RodDecoderReadout::finalize() //================ fillCollection =============================================== -StatusCode Muon::TGC_RodDecoderReadout::fillCollection(const ROBFragment& robFrag, TgcRdoContainer& rdoIdc) +StatusCode Muon::TGC_RodDecoderReadout::fillCollection(const ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const { try { @@ -164,7 +164,7 @@ void Muon::TGC_RodDecoderReadout::getCollection(const ROBFragment& robFrag, TgcR void Muon::TGC_RodDecoderReadout::byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo* rdo, - uint32_t source_id) + uint32_t source_id) const { ATH_MSG_DEBUG( "Muon::TGC_RodDecoderReadout::byteStream2Rdo" ); diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.h index 2e3225e3199c6ef75baa622998b0ae678433d87a..f1f4805d6c39fa47b07a563e7d61b1e68b9ffa9c 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TGC_RodDecoderReadout.h @@ -38,7 +38,7 @@ namespace Muon /** Standard AlgTool method */ virtual StatusCode finalize(); /** Convert ROBFragment to RDO */ - virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc); + virtual StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdoContainer& rdoIdc) const; private: /** TGC ID helper */ @@ -47,7 +47,7 @@ namespace Muon /** Retrieve header of ROBFragment */ void getCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment& robFrag, TgcRdo* rdo) const; /** Convert data contents of ROBFragment to RDO */ - void byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo* rdo, uint32_t source_id); + void byteStream2Rdo(OFFLINE_FRAGMENTS_NAMESPACE::PointerType bs, TgcRdo* rdo, uint32_t source_id) const; /** Show status words */ void showStatusWords(const uint32_t source_id, const uint16_t rdoId, const int idHash, const uint32_t nstatus, const uint32_t* status) const; @@ -57,8 +57,8 @@ namespace Muon bool m_skipCoincidence; // counters to see how often we use the cache for the raw data collections - unsigned int m_nCache = 0; - unsigned int m_nNotCache = 0; + mutable unsigned int m_nCache ATLAS_THREAD_SAFE = 0 ; + mutable unsigned int m_nNotCache ATLAS_THREAD_SAFE = 0 ; }; } // end of namespace