VT preparations for simulation input
This provides the connection between the simulation, from which we currently obtain data at the digi stage, and the timeslice-based online data processing pipeline, which will be used and tested during the Vertical Test.
The proposed approach is to use timeslices as a container for digis. Timeslice carries arbitrary binary data (split into detector components and microslices) and doesn't care whether it is serialized as a std::vector
of CbmStsDigi
or a raw detector signal. The responsibility lies with the unpacker algorithms to determine what's in the timeslice and handle it correctly.
Here, we introduce:
- equipment id
0xF000
and system version0xF0
for timeslices carrying boost-serializedstd::vector
of Digi objects for each subsystem. -
TimeslicedDigiUnpacker
: Generic microslice unpacker that unwraps astd::vector
of digis from a microslice. It is added to every subsystem unpacker at the level ofCommonUnpacker
in the default constructor, as the unpacking algorithm dedicated to the microslices with{0xF000, 0xF0}
combination ofeq_id
andsys_ver
. -
vtfeeder
service: utility to produce timeslices containing digis (or TimeslicedDigis) from either.raw.root
simulation files or.rra
files. Obtained TimeslicedDigis can then be saved to.tsa
files for later use or immediately published to Flesnet via ZeroMQ.
As the role and functionality of vtfeeder
is very similar to tsclient
, I used interfaces and some code snippets from Flesnet in its implementation.
The planned usage of vtfeeder
for the first vertical test is to convert simulation data (.raw.root
files) to .tsa
. The .tsa
files created will later be used as input for Flesnet in regular replay mode in the same way as regular timeslice archives with mCBM data. In this case, TimeslicedDigiUnpacker
is responsible for unpacking timeslices created with vtfeeder
(which will be identified by equipment id and system version mentioned above).
Timeslice archives created with vtfeeder
can also be read directly by online binary as any other .tsa
, and the unpacking stage will be handled in the same way as when operating as a part of Flesnet.
Alternatively, the conversion step can be omitted, and vtfeeder
can be used as the input layer for Flesnet (replacing tsclient
instances reading .tsa
), operating directly on .raw.root
files, converting data to timeslices on the fly and propagating data to Virgo nodes.