|
| 1 | +--- |
| 2 | +title: RNTuple in JSROOT |
| 3 | +layout: gsoc_proposal |
| 4 | +project: ROOT |
| 5 | +year: 2025 |
| 6 | +organization: CERN |
| 7 | +difficulty: medium |
| 8 | +duration: 350 |
| 9 | +mentor_avail: June-October |
| 10 | +--- |
| 11 | + |
| 12 | +# Description |
| 13 | +RNTuple is the next-generation data format for high-energy physics (HEP) data collected from the LHC. |
| 14 | +It is part of ROOT, a cornerstone software package for the storage, visualization and analysis of scientific data, widely used in the scientific community and particularly in HEP. |
| 15 | +ROOT is a C++ and Python framework, but it recently became available in the browsers as well through a Javascript implementation of some of its parts: *JSROOT*. |
| 16 | +Since RNTuple is still in the experimental phase, it currently lacks a JSROOT interface and its contents cannot be visualized in the browser, a common and desirable property of many ROOT objects. |
| 17 | +The goal of this project is filling this gap by making JSROOT able to read and display data stored inside an RNTuple. |
| 18 | + |
| 19 | +## Task ideas |
| 20 | +In this project, the student will learn the internals of the RNTuple binary format and use this knowledge to implement a Javascript interface to expose RNTuple to JSROOT. |
| 21 | + |
| 22 | +## Expected results and milestones |
| 23 | + * Familiarize with the JSROOT framework, understanding how to integrate new components into it; |
| 24 | + * read and implement (a subset of) the RNTuple [binary format specifications](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/BinaryFormatSpecification.md), in Javascript; this will concretely mean implementing the deserialization code from a binary blob to a RNTuple object that may be used by JSROOT; |
| 25 | + * enable the visualization of an RNTuple's fields in the browser, leveraging the existing framework in JSROOT. |
| 26 | + |
| 27 | +## Requirements |
| 28 | + * Knowledge of Javascript / ES6 |
| 29 | + * Basic knowledge of "low-level" programming (primitive types binary layouts, bit-level manipulations, reinterpreting bytes as different types, ...) |
| 30 | + * Experience with git / github |
| 31 | + * (Bonus): familiarity with any binary format |
| 32 | + |
| 33 | +## Mentors |
| 34 | + * **[Serguei Linev ](mailto:[email protected])** |
| 35 | + * [Giacomo Parolini ](mailto:[email protected]) |
| 36 | + |
| 37 | +## Links |
| 38 | + * [ROOT Project homepage](https://root.cern/) |
| 39 | + * [ROOT Project repository](https://github.com/root-project/root) |
| 40 | + * [JSROOT homepage](https://root.cern/js/) |
| 41 | + * [JSROOT repository](https://github.com/root-project/jsroot) |
| 42 | + * [Introduction to RNTuple](https://root.cern/blog/rntuple-update/) |
| 43 | + * [RNTuple architecture overview](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/Architecture.md) |
| 44 | + * [RNTuple Binary Specification](https://github.com/root-project/root/blob/master/tree/ntuple/v7/doc/BinaryFormatSpecification.md) |
0 commit comments