Skip to content

VT preparations for simulation input

Bartosz Sobol requested to merge bartosz.sobol/cbmroot:digi_input2 into master

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 version 0xF0 for timeslices carrying boost-serialized std::vector of Digi objects for each subsystem.
  • TimeslicedDigiUnpacker: Generic microslice unpacker that unwraps a std::vector of digis from a microslice. It is added to every subsystem unpacker at the level of CommonUnpacker in the default constructor, as the unpacking algorithm dedicated to the microslices with {0xF000, 0xF0} combination of eq_id and sys_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.

Edited by Bartosz Sobol

Merge request reports

Loading