PODIO is a C++ toolkit for the creation of event data models (EDMs) with a fast and efficient I/O layer. An event data model is like a schema: it describes the structure of the data collected by a particle detector. Event data models typically consist of collections of records that describe physics objects identified by the detector, for instance particles, tracks, jets, and clusters. PODIO offers automatic code generation for efficiently implementing the EDM starting from a high level description of the objects. PODIO uses plain-old-data (POD) structures to store the data of the objects and translates hierarchies of objects into vector of PODs for optimal I/O performance. It is built in an extensible way so that different storage backends can be connected to read and writes the POD vectors.
The ROOT data analysis framework provides the fundamental tools for the processing of High-Energy Physics data. ROOT RNTuple is the next-generation I/O subsystem of ROOT. While PODIO supports ROOT’s current production I/O subsystem (“TTree”), no such support exists yet for RNTuple. The goal of this project is to add RNTuple support to PODIO.
The project should develop a podio writer and reader that uses the ROOT RNTuple API in order to serialize and deserialize vectors of PODs. The existing TTree reader and writer can be used as a template. A first comparison between RNTuple and TTree files (e.g., file size, read and write throughput) would complete the project.
Interested students please contact Jakob (email@example.com), Valentin (firstname.lastname@example.org) or Thomas (email@example.com) for a warm-up and evaluation task.