BankData class and support in decoder
A "modern" way to put data into the datastream is to put separate pieces into banks, see attached picture (e.g. roc20 has 7, 8, 250, and 1495). It would be convenient to be able to pull data by (crate, bank). To support this, I am providing a new class BankData which produces global variables by reading in a database file that defines the variable name and the crate and bank. The variables can be an array, and one can skip a certain number of words in the bank. Examples of lines in the DB file are below. In order to support this class, some modifications are needed to CodaDecoder and THaEvData to store the pointers to the event buffer, and the length of bank's data, for each bank in each crate.Examples of DB lines and their interpretation.
- variable crate bank Nskip Nelement
rfadc 20 250
skip5 20 250 5
xarray 20 250 8 10
norf 20 7 2 4
rfadc: one global variable named "rfadc" from crate 20 bank 250. It's the first word of that bank.
skip5: similar to rfadc, but skip the first 5 words.
xarray: an array of length 10 of data in crate 20 bank 250, skip the first 8 words.
norf: array of length 4, skipping 2, from crate 20 bank 7.