WIP: Add SelReports.
This MR adds preparation of the SelReport raw banks.
As a first step, I've implemented preparation of the hits sub-bank. This contains the LHCbIDs of all tracks involved in a passing trigger decision. The structure is described in detail here: https://gitlab.cern.ch/lhcb/LHCb/blob/d7bd0abb2ffac10c43ae4ecf73e7b4848f17ac35/Hlt/HltDAQ/xml/HltSelRepRBHits.xml. The current implementation determines which tracks and SVs to save while preparing the DecReports, then does a final sequential loop over the tracks to copy the LHCbIDs. This is the top priority for optimization.
This now also implements the StdInfo, ObjTyp, and Substr sub-banks. This is enough for minimal functional SelReports. This now runs but we'll need some way to test that the structure of the raw banks is actually correct. Currently this is all handled in a large, monolithic algorithm. This should probably be separated for clarity. The sub-bank contents is then copied into a final SelRepRawBank that can be written to output.
In order to get this working with the new memory usage changes that came along with the new SciFi tracking (I think) I split up the SelReport and DecReport making into separate algorithms. I also added a SelReport consolidation step to avoid memory problems with large SelReports.
Testing on a Titan V at MIT with the options -c 0 -t 12 -n 1000 -r 100 -m 700
gives a rate of 70.20 kHz vs 71.68 kHz for the master branch.