diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/SCT_RawDataByteStreamCnv/ISCT_RodEncoder.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/SCT_RawDataByteStreamCnv/ISCT_RodEncoder.h index 50dc4b234935cdc25b9d626422f3f986e7c86d92..e7c5e244539d0cfe35bd80751617ae8f433fb0c2 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/SCT_RawDataByteStreamCnv/ISCT_RodEncoder.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/SCT_RawDataByteStreamCnv/ISCT_RodEncoder.h @@ -23,12 +23,12 @@ class SCT_RDORawData; class ISCT_RodEncoder : virtual public IAlgTool { public: - /** destructor */ - virtual ~ISCT_RodEncoder() = default; - /// Creates the InterfaceID and interfaceID() method DeclareInterfaceID(ISCT_RodEncoder, 1, 0); + /** destructor */ + virtual ~ISCT_RodEncoder() = default; + /** convert all collections of RDO's in the current list to vector of 32bit words */ virtual void fillROD(std::vector<uint32_t>& vec32Data, const uint32_t& robID, const std::vector<const SCT_RDORawData*>& vecRDOs) const = 0; diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.cxx b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.cxx index 0c3a0f56d760d39f1e01d5e0acf53139f19d9629..3e92bed0afc84c67ec71e8d5310b16b959095d63 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.cxx +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.cxx @@ -233,44 +233,6 @@ void SCT_RodEncoder::fillROD(std::vector<uint32_t>& vec32Data, const uint32_t& r } // end of fillROD(...) -void SCT_RodEncoder::addHeadersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { - for (const IdentifierHash& linkHash: *errors) { - const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; - if (errROBID == robID) { - const uint16_t header{getHeaderUsingHash(linkHash, errType)}; - vec16Data.push_back(header); - const uint16_t trailer{getTrailer(NULL_TRAILER_ERR)}; - vec16Data.push_back(trailer); - } - } -} - -// -void SCT_RodEncoder::addTrailersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { - for (const IdentifierHash& linkHash: *errors) { - const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; - if (errROBID == robID) { - const uint16_t header{getHeaderUsingHash(linkHash, NULL_HEADER_ERR)}; - const uint16_t trailer{getTrailer(errType)}; - vec16Data.push_back(header); - vec16Data.push_back(trailer); - } - } -} - -void SCT_RodEncoder::addSpecificErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { - for (const IdentifierHash& linkHash: *errors) { - const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; - if (errROBID == robID) { - const uint16_t header{getHeaderUsingHash(linkHash, NULL_HEADER_ERR)}; - const uint16_t trailer{getTrailer(NULL_TRAILER_ERR)}; - vec16Data.push_back(header); - vec16Data.push_back(errType); - vec16Data.push_back(trailer); - } - } -} - ///========================================================================= /// Encode Data function ///========================================================================= @@ -454,3 +416,45 @@ SCT_RodEncoder::getTrailer(const int& errorWord) const { const uint16_t linkTrailer{static_cast<uint16_t>(0x4000 | errorWord)}; return linkTrailer; } + +///------------------------------------------------------------------------------------- +/// Add errors +///------------------------------------------------------------------------------------- + +void SCT_RodEncoder::addHeadersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { + for (const IdentifierHash& linkHash: *errors) { + const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; + if (errROBID == robID) { + const uint16_t header{getHeaderUsingHash(linkHash, errType)}; + vec16Data.push_back(header); + const uint16_t trailer{getTrailer(NULL_TRAILER_ERR)}; + vec16Data.push_back(trailer); + } + } +} + +// +void SCT_RodEncoder::addTrailersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { + for (const IdentifierHash& linkHash: *errors) { + const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; + if (errROBID == robID) { + const uint16_t header{getHeaderUsingHash(linkHash, NULL_HEADER_ERR)}; + const uint16_t trailer{getTrailer(errType)}; + vec16Data.push_back(header); + vec16Data.push_back(trailer); + } + } +} + +void SCT_RodEncoder::addSpecificErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const { + for (const IdentifierHash& linkHash: *errors) { + const uint32_t errROBID{m_cabling->getRobIdFromHash(linkHash)}; + if (errROBID == robID) { + const uint16_t header{getHeaderUsingHash(linkHash, NULL_HEADER_ERR)}; + const uint16_t trailer{getTrailer(NULL_TRAILER_ERR)}; + vec16Data.push_back(header); + vec16Data.push_back(errType); + vec16Data.push_back(trailer); + } + } +} diff --git a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.h b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.h index 2b3d38d5608d9a00ea26955e238e4c4db2c21d3a..7a5c539d26a80b3040656d526e29bde59fac9742 100644 --- a/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.h +++ b/InnerDetector/InDetEventCnv/SCT_RawDataByteStreamCnv/src/SCT_RodEncoder.h @@ -109,10 +109,13 @@ class SCT_RodEncoder : public extends<AthAlgTool, ISCT_RodEncoder> void addHeadersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const; + void addTrailersWithErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16dDta) const; + void addSpecificErrors(const uint32_t& robID, const std::set<IdentifierHash>* errors, const ErrorWords& errType, std::vector<uint16_t>& vec16Data) const; + ToolHandle<ISCT_ByteStreamErrorsTool> m_bsErrTool{this, "SCT_ByteStreamErrorsTool", "SCT_ByteStreamErrorsTool", "Tool to retrieve SCT ByteStream Errors"}; ToolHandle<ISCT_CablingTool> m_cabling{this, "SCT_CablingTool", "SCT_CablingTool", "Tool to retrieve SCT Cabling"}; const SCT_ID* m_sctID;