12#include "CTPfragment/CTPdataformatVersion.h"
15#include "GaudiKernel/Bootstrap.h"
16#include "GaudiKernel/ISvcLocator.h"
17#include "GaudiKernel/IMessageSvc.h"
18#include "GaudiKernel/MsgStream.h"
26 CTPdataformatVersion ctpDataFormat(ctpVersionNumber);
33 uint32_t numberOfWords =
static_cast<uint32_t
>(
data.size()) - ctpDataFormat.getNumberTimeWords() - nExtraWords;
50 for(
unsigned int tipIdx = 0; tipIdx < ctpDataFormat.getTIPwords(); ++tipIdx) {
51 unsigned int index = ctpDataFormat.getTIPpos() + tipIdx + (bunch * ctpDataFormat.getDAQwordsPerBunch());
58 for(
unsigned int tbpIdx = 0; tbpIdx < ctpDataFormat.getTBPwords(); ++tbpIdx) {
59 unsigned int index = ctpDataFormat.getTBPpos() + tbpIdx + (bunch * ctpDataFormat.getDAQwordsPerBunch());
66 for(
unsigned int tapIdx = 0; tapIdx < ctpDataFormat.getTAPwords(); ++tapIdx) {
67 unsigned int index = ctpDataFormat.getTAPpos() + tapIdx + (bunch * ctpDataFormat.getDAQwordsPerBunch());
74 for(
unsigned int tavIdx = 0; tavIdx < ctpDataFormat.getTAVwords(); ++tavIdx) {
75 unsigned int index = ctpDataFormat.getTAVpos() + tavIdx + (bunch * ctpDataFormat.getDAQwordsPerBunch());
87 std::vector<uint32_t>
vec;
94 SmartIF<IMessageSvc> msgSvc{Gaudi::svcLocator()->service(
"MessageSvc")};
98 MsgStream log(msgSvc,
"xAOD::CTPResult");
105 log << MSG::DEBUG <<
"*BEGIN* xAOD::CTPResult" <<
endmsg;
109 log << MSG::DEBUG <<
"xAOD::CTPResult empty" <<
endmsg;
110 log << MSG::DEBUG <<
"*END* xAOD::CTPResult" <<
endmsg;
116 log << MSG::ERROR <<
"Mismatch: " << ctpRes.
numberOfBunches() <<
" bunches, but the size of tipWords is " << ctpRes.
tipWords().size() <<
endmsg;
124 log << MSG::DEBUG <<
"Header information: " <<
endmsg;
125 log << MSG::DEBUG <<
" Header marker : " << MSG::hex << ctpRes.
headerMarker() << MSG::dec <<
endmsg;
128 log << MSG::DEBUG <<
" Source ID : 0x" << MSG::hex << ctpRes.
sourceID() << MSG::dec <<
endmsg;
130 log << MSG::DEBUG <<
" Ext. LVL1 ID : " << ctpRes.
L1ID() <<
endmsg;
131 log << MSG::DEBUG <<
" BCID : " << ctpRes.
BCID() <<
endmsg;
133 log << MSG::DEBUG <<
" Det. event type : " << ctpRes.
eventType() <<
endmsg;
136 log << MSG::DEBUG <<
"Payload information: " <<
endmsg;
137 log << MSG::DEBUG <<
" Time " << ctpRes.
timeSec() <<
"s "
138 << std::setw(10) << std::setiosflags(std::ios_base::right) << std::setfill(
' ')
139 << ctpRes.
timeNanoSec() << std::resetiosflags(std::ios_base::right)
145 auto bunch = ctpRes.
getBC(i);
146 log << MSG::DEBUG <<
" BC dump for bunch " << i <<
endmsg;
149 for(
unsigned int j = 0; j<ctpRes.
tipWords()[i].size(); ++j) {
150 log << MSG::DEBUG <<
" TIP word number " << j <<
": " << ctpRes.
tipWords()[i][j] <<
endmsg;
152 if (ctpRes.
tipWords()[i].size() == 0) {
153 log << MSG::DEBUG <<
" No TIP words!" <<
endmsg;
157 for(
unsigned int j = 0; j<ctpRes.
tbpWords()[i].size(); ++j) {
158 log << MSG::DEBUG <<
" TBP word number " << j <<
": " << ctpRes.
tbpWords()[i][j] <<
endmsg;
160 if (ctpRes.
tbpWords()[i].size() == 0) {
161 log << MSG::DEBUG <<
" No TBP words!" <<
endmsg;
165 for(
unsigned int j = 0; j<ctpRes.
tapWords()[i].size(); ++j) {
166 log << MSG::DEBUG <<
" TAP word number " << j <<
": " << ctpRes.
tapWords()[i][j] <<
endmsg;
168 if (ctpRes.
tapWords()[i].size() == 0) {
169 log << MSG::DEBUG <<
" No TAP words!" <<
endmsg;
173 for(
unsigned int j = 0; j<ctpRes.
tavWords()[i].size(); ++j) {
174 log << MSG::DEBUG <<
" TAV word number " << j <<
": " << ctpRes.
tavWords()[i][j] <<
endmsg;
176 if (ctpRes.
tavWords()[i].size() == 0) {
177 log << MSG::DEBUG <<
" No TAV words!" <<
endmsg;
183 log << MSG::DEBUG <<
" Additional word number " << i <<
": " << ctpRes.
additionalWords()[i] <<
endmsg;
186 log << MSG::DEBUG <<
" No additional words!" <<
endmsg;
190 log << MSG::DEBUG <<
"Trailer information: " <<
endmsg;
196 log << MSG::DEBUG <<
"*END* xAOD::CTPResult" <<
endmsg;
Base class for elements of a container that can have aux data.
std::vector< size_t > vec
char data[hepevt_bytes_allocation_ATLAS]
void setTimeSec(const uint32_t sec)
Set the time in seconds.
uint32_t numDataWords() const
Retrieve the number of data words.
void setTAVWords(const std::vector< std::vector< uint32_t > > &words)
Set the TAV words for all bunch crossings.
uint32_t L1ID() const
Retrieve the extended LVL1 ID.
const std::vector< std::vector< uint32_t > > & tbpWords() const
Get the TBP words for all bunch crossings.
uint32_t numStatusWords() const
Retrieve the number of status words in the trailer.
const std::vector< std::vector< uint32_t > > & tapWords() const
Get the TAP words for all bunch crossings.
void setNumberOfBunches(const uint32_t nBCs)
Set the number of bunch crossings.
uint32_t infoStatus() const
Retrieve the info status word.
uint32_t headerSize() const
Retrieve the number of words in the header.
void setTAPWords(const std::vector< std::vector< uint32_t > > &words)
Set the TAP words for all bunch crossings.
uint32_t triggerType() const
Retrieve the LVL1 trigger type.
uint32_t runNumber() const
Retrieve the run number.
uint32_t statusPosition() const
Retrieve the position of status information in the ROD.
uint32_t BCID() const
Retrieve the bunch crossing ID.
void setTBPWords(const std::vector< std::vector< uint32_t > > &words)
Set the TBP words for all bunch crossings.
void setAdditionalWords(const std::vector< uint32_t > &words)
Set the additional data words.
const std::vector< uint32_t > & additionalWords() const
Get the additional data words.
uint32_t headerFormatVersion() const
Retrieve the format version of the header.
uint32_t errorStatus() const
Retrieve the error status word.
uint32_t timeSec() const
Get the time in seconds.
const std::vector< std::vector< uint32_t > > & tipWords() const
Get the TIP words for all bunch crossings.
const std::vector< std::vector< uint32_t > > & tavWords() const
Get the TAV words for all bunch crossings.
void setCtpVersionNumber(const uint32_t ctpNumber)
Set the CTP version number.
uint32_t eventType() const
Retrieve the LVL1 event type.
uint32_t headerMarker() const
Retrieve the header marker word.
const CTPResult_v1::CTPBunchCrossing getBC(const int bunch=-1) const
Get the CTPBunchCrossing object for a specific bunch in the readout window.
uint32_t ctpVersionNumber() const
Get the CTP version number.
uint32_t timeNanoSec() const
Get the time in nanoseconds.
uint32_t numberOfBunches() const
Get the number of bunch crossings.
void setTimeNanoSec(const uint32_t nano)
Set the time in nanoseconds.
uint32_t sourceID() const
Retrieve the sub-detector source ID.
void setTIPWords(const std::vector< std::vector< uint32_t > > &words)
Set the TIP words for all bunch crossings.
uint32_t l1AcceptBunchPosition() const
Get the L1 accept bunch position.
Utility functions for xAOD::CTPResult objects that rely on tdaq-common.
void dumpData(xAOD::CTPResult &ctpRes)
Print object content to default message stream.
CTPResult_v1 CTPResult
Define the latest version of the CTPResult class.