Standalone Auxiliary Store Rewrite, main branch (2025.03.20.)
As a first step towards introducing / developing xAOD::REvent
, I first wanted to clean up the existing code a little. Starting with some big re-imagining of xAOD::TAuxStore
and xAOD::RAuxStore
(the one developed by @mads and @nkrogh last year).
The main thing is that I tried to re-organize the code such that most of the technology-independent code could be put into a shared base class that TAuxStore
and RAuxStore
would both use. This is the xAOD::details::AuxStoreBase
class introduced in the MR. (I'm not in love with the name. Generally all these would do better sitting outside the xAOD::
namespace. But I don't think we can change that anymore.) The base class defines a finite set of virtual functions that the client classes need to implement to work specifically with TTree
or RNTuple
inputs/outputs.
I also re-designed the public API of xAOD::RAuxStore
quite a bit. It now relies on the user to give it valid RNTupleReader
, RNTupleWriter
and REntry
objects. So that many xAOD::RAuxStore
objects could share using the same reader/writer objects. Just like how many instances of xAOD::TAuxStore
can share the same input/output TTree
. On the API front I'll open some discussion topics in-line. As I'm not actually sure if I would've come up with the best interface yet.
Note that this code is used in a lot of complicated ways in a lot of places. So this will need all the tests that we can throw at it.
Pinging @schaffer for info.