support for std::vector<T> columns in columnar tools (ATLASG-2853)

This is fairly straightforward in xAOD mode, but in columnar mode it is somewhat involved, as it needs both a data column and an offset column. Beyond that, the handling of type conversions requires a custom range adapter. This MR doesn't quite demonstrate the need for type conversions, but they will be needed for std::vector<ElementLink>, in a subsequent MR.

One thing I'm not 100% sure about is whether the type ought to be std::vector or use a custom type for this purpose. In the prototype I had used columnar::ColumnVector, but that may create more confusion than it removes. The main concern about using std::vector is that the user doesn't receive an std::vector but an std::span or other range type. Still, in many regards they behave like a vector and reusing the STL type may be clearer. I'm open for feedback.

Merge request reports

Loading