#include <BoardDataReader.h>
|
| BoardDataReader (FileFormat, const std::vector< std::string > &, const size_t framesPerBX, const size_t tmux, const size_t emptyFramesAtStart, const ChannelMap_t &) |
|
| BoardDataReader (FileFormat, const std::vector< std::string > &, const size_t framesPerBX, const size_t tmux, const size_t emptyFramesAtStart, const std::map< LinkId, std::vector< size_t >> &, const std::map< std::string, ChannelSpec > &) |
|
EventData | getNextEvent () |
|
Definition at line 21 of file BoardDataReader.h.
◆ ChannelMap_t
◆ BoardDataReader() [1/2]
l1t::demo::BoardDataReader::BoardDataReader |
( |
FileFormat |
format, |
|
|
const std::vector< std::string > & |
fileNames, |
|
|
const size_t |
framesPerBX, |
|
|
const size_t |
tmux, |
|
|
const size_t |
emptyFramesAtStart, |
|
|
const ChannelMap_t & |
channelMap |
|
) |
| |
Definition at line 10 of file BoardDataReader.cc.
References l1t::demo::EventData::add(), l1t::demo::BoardData::at(), boardTMUX_, channelMap_, emptyFramesAtStart_, eventIt_, events_, fileFormat_, fileNames_, framesPerBX_, l1t::demo::BoardData::has(), mps_fire::i, dqmdumpme::indices, l1ctLayer2EG_cff::interface, dqmiolumiharvest::j, castor_dqm_sourceclient_file_cfg::path, l1t::demo::read(), to_string(), and relativeConstraints::value.
33 const size_t tmuxRatio(spec.tmux /
boardTMUX_);
34 if (
indices.size() != tmuxRatio)
37 ", does not match link:board TMUX ratio");
48 if (not boardData.has(
i))
49 throw std::runtime_error(
"Channel " +
std::to_string(
i) +
" was declared but is missing from file '" +
55 for (
const auto& [
id,
value] : channelMap) {
57 for (
size_t tmuxIndex = 0; tmuxIndex <
indices.size(); tmuxIndex++) {
58 const auto& chanData = boardData.at(
indices.at(tmuxIndex));
63 const size_t packetLength(eventLength - spec.interpacketGap);
65 for (
size_t j = 0;
j < framesBeforeFirstPacket;
j++) {
66 if (chanData.at(
j).valid)
67 throw std::runtime_error(
"Frame " +
std::to_string(
j) +
" on channel " +
69 std::to_string(framesBeforeFirstPacket) +
"frames should be invalid");
72 for (
size_t j = framesBeforeFirstPacket;
j < chanData.size();
j++) {
76 bool expectValid(((
j - framesBeforeFirstPacket) % eventLength) < packetLength);
78 if (not chanData.at(
j).valid)
79 throw std::runtime_error(
"Frame " +
std::to_string(
j) +
" on channel " +
81 " is invalid, but expected valid frame (path='" +
path +
"')");
82 }
else if (chanData.at(
j).valid)
83 throw std::runtime_error(
"Frame " +
std::to_string(
j) +
" on channel " +
85 " is valid, but expected invalid frame (path='" +
path +
"')");
91 bool eventIncomplete(
false);
92 for (
size_t eventIndex = 0;; eventIndex++) {
95 for (
const auto& [
id,
value] : channelMap) {
97 const auto& chanData = boardData.at(
indices.at(eventIndex % (spec.tmux /
boardTMUX_)));
101 const size_t packetLength(spec.tmux *
framesPerBX_ - spec.interpacketGap);
103 if (chanData.size() < (framesBeforeEvent + spec.tmux *
framesPerBX_)) {
104 eventIncomplete =
true;
108 std::vector<ap_uint<64>> chanEventData(packetLength);
109 for (
size_t j = 0;
j < packetLength;
j++)
110 chanEventData.at(
j) = chanData.at(framesBeforeEvent +
j).data;
111 eventData.add(
id, chanEventData);
size_t emptyFramesAtStart_
static std::string to_string(const XMLCh *ch)
std::vector< std::string > fileNames_
BoardData read(const std::string &filePath, const FileFormat)
std::vector< EventData >::const_iterator eventIt_
std::vector< EventData > events_
◆ BoardDataReader() [2/2]
l1t::demo::BoardDataReader::BoardDataReader |
( |
FileFormat |
format, |
|
|
const std::vector< std::string > & |
fileNames, |
|
|
const size_t |
framesPerBX, |
|
|
const size_t |
tmux, |
|
|
const size_t |
emptyFramesAtStart, |
|
|
const std::map< LinkId, std::vector< size_t >> & |
channelMap, |
|
|
const std::map< std::string, ChannelSpec > & |
channelSpecs |
|
) |
| |
Definition at line 124 of file BoardDataReader.cc.
BoardDataReader(FileFormat, const std::vector< std::string > &, const size_t framesPerBX, const size_t tmux, const size_t emptyFramesAtStart, const ChannelMap_t &)
static ChannelMap_t mergeMaps(const std::map< LinkId, std::vector< size_t >> &, const std::map< std::string, ChannelSpec > &)
◆ getNextEvent()
EventData l1t::demo::BoardDataReader::getNextEvent |
( |
| ) |
|
Definition at line 134 of file BoardDataReader.cc.
References eventIt_, and events_.
136 throw std::runtime_error(
"Board data reader ran out of events");
std::vector< EventData >::const_iterator eventIt_
std::vector< EventData > events_
◆ mergeMaps()
Definition at line 141 of file BoardDataReader.cc.
References x.
144 for (
const auto&
x : indexMap)
145 channelMap.at(
x.first) = {specMap.at(
x.first.interface),
x.second};
std::map< LinkId, std::pair< ChannelSpec, std::vector< size_t > > > ChannelMap_t
◆ boardTMUX_
size_t l1t::demo::BoardDataReader::boardTMUX_ |
|
private |
◆ channelMap_
◆ emptyFramesAtStart_
size_t l1t::demo::BoardDataReader::emptyFramesAtStart_ |
|
private |
◆ eventIt_
std::vector<EventData>::const_iterator l1t::demo::BoardDataReader::eventIt_ |
|
private |
◆ events_
std::vector<EventData> l1t::demo::BoardDataReader::events_ |
|
private |
◆ fileFormat_
FileFormat l1t::demo::BoardDataReader::fileFormat_ |
|
private |
◆ fileNames_
std::vector<std::string> l1t::demo::BoardDataReader::fileNames_ |
|
private |
◆ framesPerBX_
size_t l1t::demo::BoardDataReader::framesPerBX_ |
|
private |