6#include "CTPfragment/CTPfragment.h"
7#include "CTPfragment/CTPdataformat.h"
8#include "CTPfragment/CTPdataformatVersion.h"
32 const IInterface* parent )
35 declareInterface< CTPByteStreamTool >(
this );
45 MsgStream log( msgSvc(), name() );
49 unsigned int ctpVersionNumber =
result->getCTPVersionNumber();
50 CTPdataformatVersion ctpVersion(ctpVersionNumber);
56 m_fea.setDetEvtType( 1 );
58 uint16_t minorVersion = (
result->getNumberOfBunches() - 1u ) / 2u;
59 minorVersion &= ctpVersion.getL1APositionMask();
60 minorVersion <<= ctpVersion.getL1APositionShift();
61 m_fea.setRodMinorVersion( minorVersion );
71 theROD =
m_fea.getRodData( rodId );
76 const std::vector< uint32_t >& vDataWords =
result->getDataWords();
77 std::vector< uint32_t >::const_iterator it = vDataWords.begin();
78 std::vector< uint32_t >::const_iterator end = vDataWords.end();
79 for( ; it != end; ++it ) {
80 theROD->push_back( *it );
88 return StatusCode::SUCCESS;
98 MsgStream log( msgSvc(), name() );
101 const uint32_t ctpRodId =
m_srcIdMap.getRodID();
102 const uint32_t rodId = rob->rod_source_id();
104 ATH_MSG_DEBUG(
" expected ROD sub-detector ID: " << std::hex << ctpRodId
105 <<
" ID found: " << std::hex << rodId << std::dec);
107 if ( rodId == ctpRodId ) {
114 rob->rod_data( it_data );
115 const uint32_t ndata = rob->rod_ndata();
118 std::vector<uint32_t> vDataWords;
119 for ( uint32_t i = 0; i < ndata; ++i, ++it_data ) {
120 vDataWords.push_back(
static_cast<uint32_t
>( *it_data ) );
125 uint32_t nExtraWords=0;
126 nExtraWords=CTPfragment::numberExtraPayloadWords(rob);
127 unsigned int ctpVersionNumber = CTPfragment::ctpFormatVersion(rob);
128 result =
new CTP_RDO(ctpVersionNumber, std::move(vDataWords) , nExtraWords);
130 uint8_t l1apos = CTPfragment::lvl1AcceptBunch(rob);
131 result->setL1AcceptBunchPosition(l1apos);
133 uint32_t
tc = CTPfragment::turnCounter(rob);
136 return StatusCode::SUCCESS;
139 ATH_MSG_ERROR(
"Wrong ROD ID found in the CTP ROB fragment!");
140 return StatusCode::FAILURE;
const boost::regex re(r_e)
#define ATH_MSG_VERBOSE(x)
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::FullEventFragment RawEventWrite
data type for writing raw event
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
const DataType * PointerType