root icon indicating copy to clipboard operation
root copied to clipboard

[ntuple] Add initial `RNTupleProcessor` prototype

Open enirolf opened this issue 10 months ago • 2 comments

This PR provides the first steps to the RNTupleProcessor, which is envisioned as an interface for reading vertically and horizontally composed RNTuples (i.e., chains and friends), and combinations thereof. The interface provides an iterator which gives access to the REntry containing the field values of the current entry index, as well as some additional bookkeeping information.

At this point, only vertically composed RNTuples (i.e., chains) are supported. Horizontal compositions in the form of (unaligned) friends and the ability to combine vertical and horizontal compositions will be addressed in a future PR. Other additions that will be accounted for in one or more follow-up PRs include:

  • The possibility for users to provide their own entries/value pointers to the processor.
  • The possibility for users to specify the RNTupleModel used to construct the processor entry.
    • An extension to this involves the ability to specify multiple models, together with the ability to "enable" certain models while iterating. This would enable the possibility to read from certain fields conditionally, e.g. after a cut.

Checklist:

  • [x] tested changes locally
  • [x] updated the docs (if necessary)

enirolf avatar Mar 28 '24 08:03 enirolf

Starting build on ROOT-performance-centos8-multicore/soversion, ROOT-ubuntu2204/nortcxxmod, ROOT-ubuntu2004/python3, mac12arm/cxx20, windows10/default How to customize builds

phsft-bot avatar Mar 28 '24 08:03 phsft-bot

Test Results

    13 files      13 suites   3d 3h 15m 53s :stopwatch:  2 648 tests  2 648 :white_check_mark: 0 :zzz: 0 :x: 32 613 runs  32 613 :white_check_mark: 0 :zzz: 0 :x:

Results for commit fe7e9fee.

:recycle: This comment has been updated with latest results.

github-actions[bot] avatar Mar 28 '24 10:03 github-actions[bot]

One more thought: we may not need to create the model from the first page source. Since we anyway loop through the top-level field descriptors and create the proto fields, we can at the same time create the entry (and we need the model only to create an entry anyway, afaics).

jblomer avatar Jun 11 '24 09:06 jblomer