Event builder device
Implemented Fair MQ device and calling script for algo::EventBuilder.
The good news is that CbmDeviceEventBuilder has been implemented and probably does what it should. The bad news is, that on real data, the new algorithm runs much much slower than the former implementation "CbmAlgoBuildRawEvents".
The most likely reason for this is that the original implementation uses smart iterators, which store the final position within a digi vector after completing an event. The new implementation re-obtains the boundaries of the time window for each new trigger using std::lower_bound and std::upper_bound, which amounts to looping through the entire digi vector again. For the small samples usually considered in simulations this is apparently negligible, but for real data, which has orders of magnitude more events per timeslice, this becomes a huge issue.
Most likely this can be fixed however. It should not be too hard to store the final position of the iterator also in the new class.
Another problem with the current state of the code, is that the "DigiEventSink" crashes with a segfault. This is under investigation, and is why I have marked this MR as WIP.
This MR is based on !668 (closed) and includes all of those commits.