Formulation of the STS unpacker in the algo scheme with new API. Task (CbmUnpack) for execution in FairRunOnline. The macro reco/reco_unpack.C comprises only this unpacking task. The resulting CbmDigiTimelice objects are written to the output file.
The rather complicated STS DAQ mapping was separated from both algorithm and task. The interface is the mapping of equipment ID and elink (found in the raw data stream) to module address and ASIC number (for the digi address and channel number); this is hardcoded in the class StsReadoutConfig (based on CbmMcbm2018StsPar and macro/beamtime/mcbm2021/mStsPar.par).
The algorithm is formulated on the microslice level as smallest independently treatable data unit. The task instantiates, configures and executes one algorithm instance per component, an obvious parallelisation level. In principle, parallel execution could also be done on microslices within each component, but since the parameter set depends only on the component, this does not require separate algorithm instances.
Neither algo, task nor config are the final word on this, but this MR establishes the data and parameter interfaces and allows to independently debug and develop these components further.
On my MacBook, I measure some 300 ms per time slice in sequential processing (3 STS components, 1001 microslices each).