AthenaKernel: Extend ThinningCache to hold lossy float compression data
This is the ground work for migrating lossy float compression from the transient data to SG to allow concurrent stream writing w/ different lossy float compression settings in AthenaMT
.
Here we extend the ThinningCache
to hold compression data, similar to the selection data. Unlike the selection data, which is a set of auxids
, the compression data is a map
of compression level (nmantissa
) to a set of auxids
. This allows compressing different auxids
w/ different compression levels and use the nice functionalities of the CxxUtils::ConcurrentBitset
. Having a 0
compression level means no compression is to be done.
The map is ordered in the ascending compression level such that if an auxid
is configured to be compressed with multiple levels, we use the most stringent setting, which can be changed in the other way around if we want to be more conservative. The current approach gives precedence to disk-space savings.
I'd really appreciate @ssnyder's comments on this MR, just to make sure I'm not doing anything he's not comfortable/happy with.