12#define BOOST_TEST_MODULE Test FT0CTFIO
13#define BOOST_TEST_MAIN
14#define BOOST_TEST_DYN_LINK
19#include <boost/test/unit_test.hpp>
20#include <boost/test/data/test_case.hpp>
21#include <boost/test/data/dataset.hpp>
28#include <TStopwatch.h>
32namespace boost_data = boost::unit_test::data;
44 int trg_gate = FT0DigParam::Instance().mTime_trg_gate;
46 for (
int idig = 0; idig < 1000; idig++) {
47 ir += 1 + gRandom->Integer(200);
48 uint8_t ich = gRandom->Poisson(10);
50 int16_t tMeanA = 0, tMeanC = 0;
51 int32_t ampTotA = 0, ampTotC = 0;
53 uint8_t eventFlag = 10;
55 int16_t t = -2048 + gRandom->Integer(2048 * 2);
56 uint16_t q = gRandom->Integer(4096);
57 uint8_t
chain = gRandom->Rndm() > 0.5 ? 0 : 1;
70 ich += 1 + gRandom->Poisson(10);
90 digits[idig].setEventStatus(eventFlag);
93 LOG(info) <<
"Generated " <<
channels.size() <<
" channels in " <<
digits.size() <<
" digits " <<
sw.CpuTime() <<
" s";
96 std::vector<o2::ctf::BufferType>
vec;
103 LOG(info) <<
"Compressed in " <<
sw.CpuTime() <<
" s";
108 TFile
flOut(
"test_ctf_ft0.root",
"recreate");
115 LOG(info) <<
"Wrote to tree in " <<
sw.CpuTime() <<
" s";
122 TFile
flIn(
"test_ctf_ft0.root");
127 LOG(info) <<
"Read back from tree in " <<
sw.CpuTime() <<
" s";
140 LOG(info) <<
"Decompressed in " <<
sw.CpuTime() <<
" s";
144 LOG(info) <<
" BOOST_CHECK digitsD.size() " <<
digitsD.size() <<
" digits.size() " <<
digits.size() <<
" BOOST_CHECK(channelsD.size() " <<
channelsD.size() <<
" channels.size()) " <<
channels.size();
149 LOG(
debug) <<
" dor " << dor.mTriggers.print();
150 LOG(
debug) <<
" ddc " << ddc.mTriggers.print();
153 BOOST_CHECK(dor.mTriggers.getNChanA() == ddc.mTriggers.getNChanA());
154 BOOST_CHECK(dor.mTriggers.getNChanC() == ddc.mTriggers.getNChanC());
155 BOOST_CHECK(dor.mTriggers.getAmplA() == ddc.mTriggers.getAmplA());
156 BOOST_CHECK(dor.mTriggers.getAmplC() == ddc.mTriggers.getAmplC());
157 BOOST_CHECK(dor.mTriggers.getTimeA() == ddc.mTriggers.getTimeA());
158 BOOST_CHECK(dor.mTriggers.getTimeC() == ddc.mTriggers.getTimeC());
159 BOOST_CHECK(dor.mTriggers.getTriggersignals() == ddc.mTriggers.getTriggersignals());
class for entropy encoding/decoding of FT0 digits data
Configurable digitization parameters.
BOOST_DATA_TEST_CASE(DefaultConstructorNofSamplesIsInvariant, boost::unit_test::data::make(nsamples), nofSamples)
Definition of the Names Generator class.
static constexpr std::string_view CTFTREENAME
void setANSVersion(const ctf::ANSHeader &ansVersion) noexcept
void readFromTree(TTree &tree, const std::string &name, int ev=0)
read from tree to non-flat object
static auto get(void *head)
cast arbitrary buffer head to container class. Head is supposed to respect the alignment
static auto getImage(const void *newHead)
get const image of the container wrapper, with pointers in the image relocated to new head
static const int16_t DEFAULT_AMP
static const int16_t DEFAULT_TIME
void setTriggers(uint8_t trgsig, uint8_t chanA, uint8_t chanC, int32_t aamplA, int32_t aamplC, int16_t atimeA, int16_t atimeC)
o2::ctf::CTFIOSize encode(VEC &buff, const gsl::span< const Digit > &digitVec, const gsl::span< const ChannelData > &channelVec)
entropy-encode digits to buffer with CTF
o2::ctf::CTFIOSize decode(const CTF::base &ec, VDIG &digitVec, VCHAN &channelVec)
entropy decode clusters from buffer with CTF
static constexpr int NCellsA
static constexpr int NCellsC
constexpr ANSHeader ANSVersionCompat
constexpr ANSHeader ANSVersion1
std::vector< o2::ctf::BufferType > vec
std::vector< ChannelData > channelsD
std::vector< ChannelData > channels
std::vector< o2::ctf::ANSHeader > ANSVersions
TFile flOut("test_ctf_ft0.root", "recreate")
o2::InteractionRecord ir(0, 0)
TTree ctfTree(std::string(o2::base::NameConf::CTFTREENAME).c_str(), "O2 CTF tree")
TFile flIn("test_ctf_ft0.root")
std::vector< Digit > digitsD
std::unique_ptr< TTree > tree((TTree *) flIn.Get(std::string(o2::base::NameConf::CTFTREENAME).c_str()))
LOG(info)<< "Generated "<< channels.size()<< " channels in "<< digits.size()<< " digits "<< sw.CpuTime()<< " s"
std::vector< Digit > digits