12#define BOOST_TEST_MODULE Test RawReaderWriter class
13#define BOOST_TEST_MAIN
14#define BOOST_TEST_DYN_LINK
20#include <boost/test/unit_test.hpp>
45constexpr std::array<int, NLinkPerCRU>
SpecSize = {512, 1024, 8192, 8192};
50const std::string
CFGName =
"testRawReadWrite";
72 for (
int icru = 0; icru <
NCRU; icru++) {
96 std::vector<o2::InteractionTimeRecord> irs(1000);
106 for (
const auto&
ir : irs) {
108 for (
int icru = 0; icru < nCRU2Fill; icru++) {
126 auto irHB = HBFUtils::Instance().getFirstIR();
127 int cruID =
NCRU - 1;
128 while (irHB < irs.back()) {
158 std::vector<char>& trailer, std::vector<char>& header)
const
162 static int verboseCount = 0;
169 bool lastPage = bytesLeft <= maxSize;
170 if (verboseCount++ < 100) {
171 LOG(info) <<
"Carry-over method for chunk of size " << bytesLeft <<
" is called, MaxSize = " << maxSize << (lastPage ?
" : last chunk being processed!" :
"");
182 sz -= trailer.size();
200 uint32_t errCheck = 0xffffffff;
202 reader->setCheckErrors(errCheck);
213 int nLinks =
reader->getNLinks();
217 for (
int il = 0; il < nLinks; il++) {
218 auto& lnk =
reader->getLink(il);
222 std::vector<std::vector<char>>
buffers;
223 std::vector<bool> firstHBF;
227 firstHBF.resize(nLinks,
true);
229 int nLinksRead = 0, nPreformatRead = 0;
232 for (
int il = 0; il < nLinks; il++) {
235 auto& lnk =
reader->getLink(il);
236 auto sz = lnk.getNextHBFSize();
247 const auto rdhRef = *
reinterpret_cast<RDHAny*
>(
buffers[0].data());
249 for (
int il = 0; il < nLinks; il++) {
250 auto& lnk =
reader->getLink(il);
252 int hbsize = buff.size();
253 char*
ptr = buff.data();
254 while (
ptr < &buff.back()) {
255 const auto rdhi = *
reinterpret_cast<RDHAny*
>(
ptr);
259 auto memSize = RDHUtils::getMemorySize(rdhi);
260 auto rdhSize = RDHUtils::getHeaderSize(rdhi);
263 if (!(RDHUtils::getHeartBeatIR(rdhRef) == RDHUtils::getHeartBeatIR(rdhi))) {
268 BOOST_CHECK(RDHUtils::getHeartBeatIR(rdhRef) == RDHUtils::getHeartBeatIR(rdhi));
269 if (RDHUtils::getStop(rdhi)) {
272 if (!lnk.cruDetector || RDHUtils::getCRUID(rdhi) <
NCRU - 1) {
273 if (lnk.cruDetector) {
277 if (lnk.cruDetector) {
281 }
else if (memSize > rdhSize) {
291 auto tfhb = HBFUtils::Instance().getTFandHBinTF({RDHUtils::getHeartBeatBC(rdhi), RDHUtils::getHeartBeatOrbit(rdhi)});
298 ptr += RDHUtils::getOffsetToNext(rdhi);
300 firstHBF[il] =
false;
303 }
while (nLinksRead);
Definition of the 32 Central Trigger System (CTS) Trigger Types defined in https://twiki....
A raw page parser for DPL input.
Utility class to write detectors data to (multiple) raw data file(s) respecting CRU format.
Reader for (multiple) raw data files.
void setCarryOverCallBack(const T *t)
void useRDHVersion(int v)
bool isCRUDetector() const
void addData(uint16_t feeid, uint16_t cru, uint8_t lnk, uint8_t endpoint, const IR &ir, const gsl::span< char > data, bool preformatted=false, uint32_t trigger=0, uint32_t detField=0)
void setContinuousReadout()
LinkData & registerLink(uint16_t fee, uint16_t cru, uint8_t link, uint8_t endpoint, std::string_view outFileName)
o2::header::DataOrigin getOrigin() const
void setEmptyPageCallBack(const T *t)
void writeConfFile(std::string_view origin="FLP", std::string_view description="RAWDATA", std::string_view cfgname="raw.cfg", bool fullPath=true) const
void doLazinessCheck(bool v)
void setApplyCarryOverToLastPage(bool v)
void generateCollisionTimes(std::vector< o2::InteractionTimeRecord > &dest)
void setInteractionRate(float rateHz)
GLuint const GLchar * name
Defining PrimaryVertex explicitly as messageable.
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
constexpr int NLinkPerCRU
const std::string PLHeader
const std::string HBFEmpty
BOOST_AUTO_TEST_CASE(FlatHisto)
constexpr int NPreformHBFPerTF
const std::string PLTrailer
constexpr std::array< int, NLinkPerCRU > SpecSize
const std::string CFGName
std::string to_string(gsl::span< T, Size > span)
TestRawReader(const std::string &name="TST", const std::string &cfg="rawConf.cfg")
std::unique_ptr< RawFileReader > reader
void emptyHBFMethod(const RDHAny *rdh, std::vector< char > &toAdd) const
TestRawWriter(o2::header::DataOrigin origin="TST", bool isCRU=true, const std::string &cfg="rawConf.cfg")
int carryOverMethod(const RDHAny *rdh, const gsl::span< char > data, const char *ptr, int maxSize, int splitID, std::vector< char > &trailer, std::vector< char > &header) const
static constexpr int MAXCRUPage
static void setDetectorField(H &rdh, uint32_t v, NOTPTR(H))
static constexpr int GBTWord128
static void printRDH(const RDHv4 &rdh)
static bool checkRDH(const RDHv4 &rdh, bool verbose=true, bool checkZeros=false)
static std::string concat_string(Ts const &... ts)
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
o2::InteractionRecord ir(0, 0)