[ATR-28845] Inline schema evolution in TrigCompositeAuxContainer_v2 of linkColIndices
Performs an in-line schema evolution of linkColIndices
from std::vector< std::vector< uint16_t > >
to std::vector< std::vector< uint32_t > >
This is to mitigate against very rare events occasionally seen in MC23e where the HLT navigation graph size exceeds 65,535 nodes. See [ATR-28845] for the motivation for this change.
Solving this edge case in this way will result in an expected ~15% larger in-memory footprint of this collection, on-disk size is hopefully mostly unaffected.
This MR is being opened to main
initially as a safer place to confirm the change, it would then be backported to 24.0
and to 24.0.52-patches
Discussed in the reco meeting Sep 17th. Discussed in core software Oct 3rd.
To edge-cases arose which warrant comment
- subtraction of unsigned 32 bit ints yields an unsigned integer. The code was relying on the subtraction of the two prior 16 bit unsigned ints yielding an signed integer.
- Accessor objects were moved out of class scope in the interface compilation unit to perform an early registration of the new aux type (at the same time the reflex dictionaries get loaded by ROOT)
cc @cantel
Edited by Tim Martin