12#define BOOST_TEST_MODULE Test CPVCTFIO
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>
29#include <TStopwatch.h>
35namespace boost_data = boost::unit_test::data;
41 std::vector<TriggerRecord> triggers;
47 for (
int irof = 0; irof < 1000; irof++) {
48 ir += 1 + gRandom->Integer(200);
51 int n = 1 + gRandom->Poisson(100);
52 for (
int i =
n;
i--;) {
53 char mult = gRandom->Integer(30);
54 char mod = 2 + gRandom->Integer(3);
55 char exMax = gRandom->Integer(3);
56 float x = 72.3 * 2. * (gRandom->Rndm() - 0.5);
57 float z = 63.3 * 2. * (gRandom->Rndm() - 0.5);
58 float e = 10000. * gRandom->Rndm();
65 std::vector<o2::ctf::BufferType>
vec;
72 LOG(info) <<
"Compressed in " <<
sw.CpuTime() <<
" s";
78 TFile
flOut(
"test_ctf_cpv.root",
"recreate");
84 LOG(info) <<
"Wrote to tree in " <<
sw.CpuTime() <<
" s";
89 LOG(info) <<
"Start reading from tree ";
92 TFile
flIn(
"test_ctf_cpv.root");
97 LOG(info) <<
"Read back from tree in " <<
sw.CpuTime() <<
" s";
110 LOG(info) <<
"Decompressed in " <<
sw.CpuTime() <<
" s";
114 LOG(info) <<
" BOOST_CHECK triggersD.size() " <<
triggersD.size() <<
" triggers.size() " << triggers.size()
115 <<
" BOOST_CHECK(clustersD.size() " <<
clustersD.size() <<
" clusters.size()) " <<
clusters.size();
117 for (
size_t i = 0;
i < triggers.size();
i++) {
118 const auto& dor = triggers[
i];
120 LOG(
debug) <<
" Orig.TriggerRecord " <<
i <<
" " << dor.getBCData() <<
" " << dor.getFirstEntry() <<
" " << dor.getNumberOfObjects();
121 LOG(
debug) <<
" Deco.TriggerRecord " <<
i <<
" " << ddc.getBCData() <<
" " << ddc.getFirstEntry() <<
" " << ddc.getNumberOfObjects();
124 BOOST_CHECK(dor.getNumberOfObjects() == ddc.getNumberOfObjects());
125 BOOST_CHECK(dor.getFirstEntry() == dor.getFirstEntry());
131 BOOST_CHECK(cor.getMultiplicity() == cdc.getMultiplicity());
133 if (cor.getEnergy() < 100.) {
134 BOOST_CHECK(TMath::Abs(cor.getEnergy() - cdc.getEnergy()) < 1.);
136 float eTr = cor.getEnergy();
139 float xCor, zCor, xCdc, zCdc;
140 cor.getLocalPosition(xCor, zCor);
141 cdc.getLocalPosition(xCdc, zCdc);
class for entropy encoding/decoding of CPV data
uint64_t exp(uint64_t base, uint8_t exp) noexcept
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char e
BOOST_DATA_TEST_CASE(DefaultConstructorNofSamplesIsInvariant, boost::unit_test::data::make(nsamples), nofSamples)
Definition of the Names Generator class.
static constexpr std::string_view CTFTREENAME
o2::ctf::CTFIOSize decode(const CTF::base &ec, VTRG &trigVec, VCLUSTER &cluVec)
entropy decode data from buffer with CTF
o2::ctf::CTFIOSize encode(VEC &buff, const gsl::span< const TriggerRecord > &trigData, const gsl::span< const Cluster > &cluData)
entropy-encode data to buffer with CTF
Contains CPV cluster parameters.
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
GLdouble GLdouble GLdouble z
constexpr ANSHeader ANSVersionCompat
constexpr ANSHeader ANSVersion1
std::vector< o2::ctf::BufferType > vec
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
TFile flIn("test_ctf_cpv.root")
std::vector< o2::ctf::ANSHeader > ANSVersions
o2::InteractionRecord ir(0, 0)
std::vector< TriggerRecord > triggersD
TTree ctfTree(std::string(o2::base::NameConf::CTFTREENAME).c_str(), "O2 CTF tree")
std::vector< Cluster > clusters
std::vector< Cluster > clustersD
std::unique_ptr< TTree > tree((TTree *) flIn.Get(std::string(o2::base::NameConf::CTFTREENAME).c_str()))
TFile flOut("test_ctf_cpv.root", "recreate")