Skip to content

xAOD Inheritance Change, main branch (2025.10.23.)

Introduced a standalone version of ILockable. Allowing us to simplify the declaration of xAOD::AuxInfoBase and xAOD::AuxContainerBase a little. And thereby simplifying the life of automatic ROOT schema evolution a little.

This was triggered by: https://github.com/root-project/root/pull/20041

Which introduced the following issue with trying to read RNTuple files in AnalysisBase,main--dev3LCG:

[bash][atspot01]:xaod > xAODRNFileReadTest ./rntuple/DAOD_PHYS.rntuple.pool.root 
xAOD::Init                INFO    Environment initialised for data access
xAODFileReadTest          INFO    Opening file: ./rntuple/DAOD_PHYS.rntuple.pool.root
terminate called after throwing an instance of 'ROOT::RException'
  what():  incompatible number of base classes for field :_0: xAOD::AuxInfoBase, 3 base classes in memory  vs. 4 base classes on-disk
In-memory field/type hierarchy:
xTrigDecisionAux: [xAOD::TrigDecisionAuxInfo_v1, type version: 4294967295, type checksum: 2947148255] (id: 15)
  :_0 [xAOD::AuxInfoBase, type version: 4294967295, type checksum: 2833662725] (id: 16)
On-disk field/type hierarchy:
xTrigDecisionAux: [xAOD::TrigDecisionAuxInfo_v1, type version: 4294967295, type checksum: 3544918239] (id: 15)
  :_0 [xAOD::AuxInfoBase, type version: 4294967295, type checksum: 1617381893] (id: 16)

At:
  virtual std::unique_ptr<ROOT::RFieldBase> ROOT::RClassField::BeforeConnectPageSource(ROOT::Internal::RPageSource&) [/build1/atnight/localbuilds/nightlies/main--dev3LCG/build/build/AnalysisBaseExternals/src/ROOT/tree/ntuple/src/RFieldMeta.cxx:529]

 *** Break *** abort
    '/home/krasznaa/ATLAS/projects/xaod/build/x86_64-el9-gcc14-dbg/python',
    '/home/krasznaa/ATLAS/projects/xaod/build/x86_64-el9-gcc14-dbg/lib',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib/python3.12/site-packages',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/python',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python39.zip',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python3.9',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python3.9/lib-dynload',
 *** Break *** abort
    '/home/krasznaa/ATLAS/projects/xaod/build/x86_64-el9-gcc14-dbg/python',
    '/home/krasznaa/ATLAS/projects/xaod/build/x86_64-el9-gcc14-dbg/lib',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib/python3.12/site-packages',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/python',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python39.zip',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python3.9',
    '/cvmfs/atlas-nightlies.cern.ch/repo/sw/main--dev3LCG_AnalysisBase_x86_64-el9-gcc14-opt/2025-10-22T2100/AnalysisBaseExternals/25.2.71/InstallArea/x86_64-el9-gcc14-opt/lib64/python3.9/lib-dynload',
[bash][atspot01]:xaod >

With this MR's changes, I'm now able to read our OpenData files in main--dev3LCG. 🥳

[bash][atspot01]:xaod > xAODRNFileReadTest /data/ATLAS/mc20_13TeV.OpenDataRNTuples.DAOD_PHYSLITE.p6026_p6898/DAOD_PHYSLITE.45469697._000003.pool.root.1 
xAOD::Init                INFO    Environment initialised for data access
xAODFileReadTest          INFO    Opening file: /data/ATLAS/mc20_13TeV.OpenDataRNTuples.DAOD_PHYSLITE.p6026_p6898/DAOD_PHYSLITE.45469697._000003.pool.root.1
xAODFileReadTest          INFO    ===>>> Loaded entry 0 / 40000 <<<===
xAODFileReadTest          INFO    ===>>> Loaded entry 1000 / 40000 <<<===
xAODFileReadTest          INFO    ===>>> Loaded entry 2000 / 40000 <<<===
...

Pinging @schaffer, @jchapman, @jcatmore, @elmsheus, @mnowak and @maszyman. As long as this update doesn't produce any unforeseen issues in the CI, this would allow us to pick up ROOT 6.38 when it comes out. 🤔

Merge request reports

Loading