diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt index 6216832195e0c92ffa1c8b5919e3d5ff22f45117..0158445ca9a96ffdcbbe1896655c452b5cfa81bf 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/CMakeLists.txt @@ -19,4 +19,4 @@ atlas_add_component( PixelRawDataByteStreamCnv LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} ByteStreamData AthenaKernel EventContainers GaudiKernel InDetRawData AthenaBaseComps AthContainers CxxUtils StoreGateLib ByteStreamCnvSvcBaseLib InDetIdentifier PixelReadoutGeometry IRegionSelector - xAODEventInfo TrigSteeringEvent InDetByteStreamErrors PixelConditionsData PixelRawDataByteStreamCnvLib PixelCablingLib ) + xAODEventInfo TrigSteeringEvent InDetByteStreamErrors PixelConditionsData PixelRawDataByteStreamCnvLib PixelCablingLib ByteStreamCnvSvcLib ) diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx index 8929df71b1f2e3ee832d573d47d9356c025891cb..b6ad13efc883300f8c6c8dbcc9c115e7cfafc168 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -21,6 +21,7 @@ #include "PixelRawContByteStreamTool.h" #include "ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h" #include "InDetRawData/PixelRDORawData.h" +#include "AthenaKernel/StorableConversions.h" //#define PIXEL_DEBUG @@ -29,11 +30,9 @@ // constructor //////////////////////// PixelRawContByteStreamCnv::PixelRawContByteStreamCnv(ISvcLocator* svcloc) : - Converter(storageType(), classID(),svcloc), + AthConstConverter(storageType(), classID(),svcloc, "PixelRawContByteStreamCnv"), m_PixelRawContBSTool(nullptr), - m_ByteStreamEventAccess(nullptr), - m_StoreGate(nullptr), - m_log(msgSvc(), "PixelRawContByteStreamCnv") + m_ByteStreamEventAccess("ByteStreamCnvSvc", "PixelRawContByteStreamCnv") {} //////////////////////// @@ -41,39 +40,16 @@ PixelRawContByteStreamCnv::PixelRawContByteStreamCnv(ISvcLocator* svcloc) : //////////////////////// StatusCode PixelRawContByteStreamCnv::initialize() { - StatusCode sc = Converter::initialize(); - if(StatusCode::SUCCESS!=sc) { - return sc; - } - - // Check ByteStreamCnvSvc - if (StatusCode::SUCCESS != service("ByteStreamCnvSvc", m_ByteStreamEventAccess) || !m_ByteStreamEventAccess) { - m_log << MSG::ERROR << "Can't get ByteStreamEventAccess interface" << endmsg; - return StatusCode::FAILURE; - } - m_log << MSG::INFO << "ByteStreamCnvSvc retrieved" << endmsg; - - // retrieve Tool - IToolSvc* toolSvc; - if(StatusCode::SUCCESS != service("ToolSvc",toolSvc)) { - m_log << MSG::ERROR << "Can't get ToolSvc" << endmsg; - return StatusCode::FAILURE; - } + ATH_CHECK( AthConstConverter::initialize() ); - std::string toolType; + ATH_CHECK( m_ByteStreamEventAccess.retrieve() ); + ATH_MSG_INFO( "ByteStreamCnvSvc retrieved" ); - toolType = "PixelRawContByteStreamTool"; - if(StatusCode::SUCCESS != toolSvc->retrieveTool(toolType,m_PixelRawContBSTool)) { - m_log << MSG::ERROR << "Can't get PixelRawContByteStreamTool Tool" << endmsg; - return StatusCode::FAILURE; - } + ServiceHandle<IToolSvc> toolSvc ("ToolSvc", name()); + ATH_CHECK( toolSvc.retrieve() ); - // Get an Identifier helper object - sc = service("DetectorStore",m_StoreGate); - if (sc.isFailure()) { - m_log << MSG::FATAL << "Detector service not found" << endmsg; - return StatusCode::FAILURE; - } + const std::string toolType = "PixelRawContByteStreamTool"; + ATH_CHECK( toolSvc->retrieveTool(toolType,m_PixelRawContBSTool) ); return StatusCode::SUCCESS; } @@ -95,28 +71,20 @@ long PixelRawContByteStreamCnv::storageType() //////////////////////// // createRep() - convert Pixel_RDO in the container into ByteStream //////////////////////// -StatusCode PixelRawContByteStreamCnv::createRep(DataObject* pObj, IOpaqueAddress*& pAddr) { +StatusCode PixelRawContByteStreamCnv::createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const { - // StatusCode sc = StatusCode::SUCCESS; - RawEventWrite* re = m_ByteStreamEventAccess->getRawEvent(); PixelRDO_Container* cont=0; - StoreGateSvc::fromStorable(pObj,cont); + SG::fromStorable(pObj,cont); if(!cont) { - m_log << MSG::ERROR << "Can not cast to PixelRDO_Container" << endmsg; - return StatusCode::FAILURE; + ATH_MSG_ERROR( "Can not cast to PixelRDO_Container" ); + return StatusCode::FAILURE; } std::string nm = pObj->registry()->name(); - ByteStreamAddress* addr = new ByteStreamAddress(classID(),nm,""); - pAddr = addr; - // return m_PixelRawContBSTool->convert(cont,re,m_log); - - StatusCode sc = m_PixelRawContBSTool->convert(cont, re) ; - if(sc.isFailure()){ - m_log << MSG::ERROR<< " Could not convert rdo with m_PixelRawContBSTool " << endmsg ; - return StatusCode::FAILURE ; - } + pAddr = new ByteStreamAddress(classID(),nm,""); + + ATH_CHECK( m_PixelRawContBSTool->convert(cont) ); return StatusCode::SUCCESS ; } diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h index b64083102946c4f883d5984795df55a846f409d3..794bee47379c4e1238bc71d08ade09172e78711a 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamCnv.h @@ -21,14 +21,13 @@ #include <stdint.h> #include <string> -#include "GaudiKernel/Converter.h" - - #include "ByteStreamData/RawEvent.h" #include "InDetRawData/InDetRawDataCLASS_DEF.h" -#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/ServiceHandle.h" +#include "AthenaBaseComps/AthConstConverter.h" +#include "ByteStreamCnvSvcBase/IByteStreamEventAccess.h" #include "StoreGate/StoreGateSvc.h" class ByteStreamAddress; @@ -37,7 +36,7 @@ class IByteStreamEventAccess; class PixelRDORawData; -class PixelRawContByteStreamCnv: public Converter { +class PixelRawContByteStreamCnv: public AthConstConverter { public: typedef InDetRawDataCollection<Pixel1RawData> COLLECTION; // define collection format here @@ -47,7 +46,7 @@ class PixelRawContByteStreamCnv: public Converter { virtual StatusCode initialize() override; //! this creates the RawEvent fragments for Pixel - virtual StatusCode createRep(DataObject* pObj, IOpaqueAddress*& pAddr) override; + virtual StatusCode createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const override; /// Storage type and class ID virtual long repSvcType() const override { return i_repSvcType(); } @@ -55,15 +54,8 @@ class PixelRawContByteStreamCnv: public Converter { static const CLID& classID(); private: - - PixelRawContByteStreamTool* m_PixelRawContBSTool; - - IByteStreamEventAccess* m_ByteStreamEventAccess; - - StoreGateSvc* m_StoreGate; - - MsgStream m_log; - + const PixelRawContByteStreamTool* m_PixelRawContBSTool; + ServiceHandle<IByteStreamEventAccess> m_ByteStreamEventAccess; }; #endif // PIXELBYTESTREAM_PXIELRAWCONTRAWEVENTCNV_H diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx index 20c4eebe0ea8a693372625b08c3210dac398ab33..4d5b3b86d14826896f4c8122d75267b323ee0241 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -22,8 +22,7 @@ //////////////////////// PixelRawContByteStreamTool::PixelRawContByteStreamTool(const std::string& type,const std::string& name,const IInterface* parent) : AthAlgTool(type,name,parent), - m_pixelCabling("PixelCablingSvc", name), - m_log(msgSvc(), "PixelRawContByteStreamTool") + m_pixelCabling("PixelCablingSvc", name) { declareInterface<PixelRawContByteStreamTool>(this); declareProperty("RodBlockVersion",m_RodBlockVersion=0); @@ -49,6 +48,8 @@ StatusCode PixelRawContByteStreamTool::initialize() { ATH_CHECK(m_condCablingKey.initialize()); ATH_CHECK(m_condHitDiscCnfgKey.initialize()); + + ATH_CHECK( m_byteStreamCnvSvc.retrieve() ); return StatusCode::SUCCESS; } @@ -63,12 +64,14 @@ StatusCode PixelRawContByteStreamTool::finalize() { //////////////////////// // convert - //////////////////////// -StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEventWrite* re) { - m_fea.clear(); +StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont) const { + FullEventAssembler<SrcIdMap>* fea = nullptr; + ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler (fea, + "PixelRawCont") ); FullEventAssembler<SrcIdMap>::RODDATA* theROD; // set ROD Minor version - m_fea.setRodMinorVersion(m_RodBlockVersion); + fea->setRodMinorVersion(m_RodBlockVersion); ATH_MSG_DEBUG("Setting ROD Minor Version Number to: " << m_RodBlockVersion); //loop over the Pixel modules @@ -96,7 +99,7 @@ StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEvent std::vector<const PixelRDORawData*> RDOs; for(; it_b!=it_e; ++it_b){ RDOs.push_back((*it_b)); } - theROD = m_fea.getRodData(rodId); + theROD = fea->getRodData(rodId); fillROD( *theROD, RDOs, m_BCs_per_LVL1ID); } @@ -104,7 +107,6 @@ StatusCode PixelRawContByteStreamTool::convert(PixelRDO_Container* cont,RawEvent ATH_MSG_WARNING("IDC contains NULLpointer to collection, skipping collection"); } } - m_fea.fill(re,m_log); return StatusCode::SUCCESS; } @@ -118,7 +120,7 @@ const InterfaceID& PixelRawContByteStreamTool::interfaceID() { //////////////////////// // fillROD() - convert Pixel RDO to a vector of 32bit words //////////////////////// -void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) { +void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) const { ATH_MSG_DEBUG("#####################################################################################"); ATH_MSG_DEBUG("Entering PixelRodEncoder"); @@ -614,7 +616,7 @@ void PixelRawContByteStreamTool::fillROD(std::vector<uint32_t>& v32rod, std::vec // encode module Header for Pixels // Pixel Header: 001PtlbxxnnnnnnnMMMMLLLLBBBBBBBB, //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) { +uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) const { lvl1idskip = 0; // FIXME LVL1IDskip hardcoded as 0 uint32_t result = 0; result = PRB_LINKHEADER | ((bcid & PRB_BCIDmask) << PRB_BCIDskip) | ((lvl1id & PRB_L1IDmask) << PRB_L1IDskip) | ((lvl1idskip & PRB_L1IDSKIPmask) << PRB_L1IDSKIPskip) | ((module & PRB_MODULEmask) << PRB_MODULEskip) | ((errors & PRB_HEADERERRORSmask) << PRB_HEADERERRORSskip); @@ -630,7 +632,7 @@ uint32_t PixelRawContByteStreamTool::packLinkHeader(uint32_t module, uint32_t bc // encode module Header for IBL // IBL Header: 001nnnnnFLLLLLLLLLLLLLBBBBBBBBBB //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) { +uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) const { uint32_t result = 0; result = PRB_LINKHEADER | ((bcid & PRB_BCIDmask_IBL) << PRB_BCIDskip_IBL) | ((lvl1id & PRB_L1IDmask_IBL) << PRB_L1IDskip_IBL) | ((module & PRB_MODULEmask_IBL) << PRB_MODULEskip_IBL) | ((feFlag & PRB_FeI4BFLAGmask_IBL) << PRB_FeI4BFLAGskip_IBL); #ifdef PIXEL_DEBUG @@ -647,7 +649,7 @@ uint32_t PixelRawContByteStreamTool::packLinkHeader_IBL(uint32_t module, uint32_ //////////////////////// // encode IBL non-condensed hit word: 0-8: row,9-15: column, 16-23:TOT, 24-28: nLink ----> 100xxnnnTTTTTTTTCCCCCCCRRRRRRRRR //////////////////////// -uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) { +uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) const { uint32_t result = 0; result = PRB_DATAWORD | ((row & PRB_ROWmask_IBL) << PRB_ROWskip_IBL) | ((column & PRB_COLUMNmask_IBL) << PRB_COLUMNskip_IBL) | ((ToT & PRB_TOTmask) << PRB_TOTskip) | ((nLink & PRB_LINKNUMHITmask_IBL) << PRB_LINKNUMHITskip_IBL); #ifdef PIXEL_DEBUG @@ -663,7 +665,7 @@ uint32_t PixelRawContByteStreamTool::packRawDataWord_IBL(uint32_t row, uint32_t //////////////////////// // encode PIXEL hit word: bits 0-7:row,8-12:column,16-23:TOT,24-27:FE ----> 100xFFFFTTTTTTTTxxxCCCCCRRRRRRRR //////////////////////// -uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) { +uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) const { uint32_t result = 0; result = PRB_DATAWORD | ((row & PRB_ROWmask) << PRB_ROWskip) | ((column & PRB_COLUMNmask) << PRB_COLUMNskip) | ((ToT & PRB_TOTmask) << PRB_TOTskip) | ((FE & PRB_FEmask) << PRB_FEskip); @@ -678,7 +680,7 @@ uint32_t PixelRawContByteStreamTool::packRawDataWord(uint32_t FE, uint32_t row, //////////////////////// // encode PIXEL module trailer (bits 26-28:trailer errors) //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) { +uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) const { uint32_t result = PRB_LINKTRAILER | ((errors & PRB_TRAILERERRORSmask) << PRB_TRAILERERRORSskip); #ifdef PLOTS std::cout << "[PlotA]:0x " << std::hex << result << std::dec << std::endl; @@ -691,7 +693,7 @@ uint32_t PixelRawContByteStreamTool::packLinkTrailer(uint32_t errors) { //////////////////////// // encode IBL module trailer (bits 26-28:trailer errors) //////////////////////// -uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) { +uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) const { // return PRB_LINKTRAILER |((timeOutErrorBit & PRB_TIMEOUTERRORmask_IBL) << PRB_TIMEOUTERRORskip_IBL) | ((condensedModeBit & PRB_CONDENSEDMODEmask_IBL) << PRB_CONDENSEDMODEskip_IBL) | ((linkMasked & PRB_LINKMASKEDmask_IBL) << PRB_LINKMASKEDskip_IBL) | ((linknum & PRB_LINKNUMTRAILERmask_IBL) << PRB_LINKNUMTRAILERskip_IBL); uint32_t result; result = PRB_LINKTRAILER | (timeOutErrorBit << PRB_TIMEOUTERRORskip_IBL) | (condensedModeBit << PRB_CONDENSEDMODEskip_IBL) | (linkMasked << PRB_LINKMASKEDskip_IBL) | ((linknum & PRB_LINKNUMTRAILERmask_IBL) << PRB_LINKNUMTRAILERskip_IBL); @@ -715,7 +717,7 @@ uint32_t PixelRawContByteStreamTool::packLinkTrailer_IBL(uint32_t linknum, bool // 4th word: 111 TTTTTTTTCCCCCCCRRRRRRRRRTTTTT //////////////////////// -void PixelRawContByteStreamTool::packIBLcondensed(std::vector <uint32_t> & v32rod, std::vector <uint32_t> & vRows, std::vector <uint32_t> & vCols, std::vector<int> & vTots) { +void PixelRawContByteStreamTool::packIBLcondensed(std::vector <uint32_t> & v32rod, std::vector <uint32_t> & vRows, std::vector <uint32_t> & vCols, std::vector<int> & vTots) const { unsigned int condWord[nCondensedWords]; condWord[0] = PRB_FIRSTHITCONDENSEDWORD | vRows[0] | (vCols[0] << skipRow) | (vTots[0] << (skipRow + skipCol) | ((vRows[1] & mask5) << (skipRow + skipCol + skipTOT))); diff --git a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h index 2ddced4154f9cbbeb4fc92e3b3e53d297f7e2cdd..c4e3692148713aa273b779898031cb492020a8ee 100644 --- a/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h +++ b/InnerDetector/InDetEventCnv/PixelRawDataByteStreamCnv/src/PixelRawContByteStreamTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -29,6 +29,7 @@ #include "PixelReadoutGeometry/PixelDetectorManager.h" #include "ByteStreamCnvSvcBase/FullEventAssembler.h" // needed, template class +#include "ByteStreamCnvSvc/ByteStreamCnvSvc.h" #include "PixelByteStreamModuleMask.h" #include "PixelCabling/IPixelCablingSvc.h" @@ -51,33 +52,33 @@ class PixelRawContByteStreamTool: public AthAlgTool { // AlgTool InterfaceID static const InterfaceID& interfaceID(); - virtual StatusCode initialize(); - virtual StatusCode finalize(); - StatusCode convert(PixelRDO_Container* cont,RawEventWrite* re); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; + StatusCode convert(PixelRDO_Container* cont) const; - void fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID); + void fillROD(std::vector<uint32_t>& v32rod, std::vector<const PixelRDORawData*> RDOs, int BCs_per_LVL1ID) const; - void packIBLcondensed(std::vector <uint32_t > & v32rod, std::vector <uint32_t > & vRows, std::vector <uint32_t > & vCols, std::vector<int> & vTots); + void packIBLcondensed(std::vector <uint32_t > & v32rod, std::vector <uint32_t > & vRows, std::vector <uint32_t > & vCols, std::vector<int> & vTots) const; void packIBLCondensed(std::vector <uint32_t > & v32rod, const std::vector<const PixelRDORawData*> &rdos_sameIBL_offlineId); - uint32_t packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors); - uint32_t packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag); - uint32_t packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT); - uint32_t packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink); - uint32_t packLinkTrailer(uint32_t errors); // for Pixel - uint32_t packLinkTrailer_IBL(uint32_t FEonSLink, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked); // for IBL + uint32_t packLinkHeader(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t lvl1idskip, uint32_t errors) const; + uint32_t packLinkHeader_IBL(uint32_t module, uint32_t bcid, uint32_t lvl1id, uint32_t feFlag) const; + uint32_t packRawDataWord(uint32_t FE, uint32_t row, uint32_t column, uint32_t ToT) const; + uint32_t packRawDataWord_IBL(uint32_t row, uint32_t column, int ToT, uint32_t nLink) const; + uint32_t packLinkTrailer(uint32_t errors) const; // for Pixel + uint32_t packLinkTrailer_IBL(uint32_t FEonSLink, bool timeOutErrorBit, bool condensedModeBit, bool linkMasked) const; // for IBL private: + ServiceHandle<ByteStreamCnvSvc> m_byteStreamCnvSvc + { this, "ByteStreamCnvSvc", "ByteStreamCnvSvc" }; + ServiceHandle<IPixelCablingSvc> m_pixelCabling; const PixelID* m_PixelID; const InDetDD::PixelDetectorManager* m_pixelManager; - FullEventAssembler<SrcIdMap> m_fea; unsigned short m_RodBlockVersion; int m_BCs_per_LVL1ID; - MsgStream m_log; - SG::ReadCondHandleKey<PixelCablingCondData> m_condCablingKey {this, "PixelCablingCondData", "PixelCablingCondData", "Pixel cabling key"};