Juliacon 2024

UnROOT.jl - Data I/O for High-Energy Physics in Julia
2024-07-10 , Function (4.1)

We present the foundational package for handling High-energy physics (HEP) data stored in .root files, which will enable physicists to use Julia for physics tasks in HEP. Traditionally, HEP software consists of mostly C++ since 2000s, but as the analysis computation becomes more complex, the two-language problem in the physics data analysis grows wider. UnROOT.jl improves quality of life by providing performant reading & writing to support fast "for-loop" style data analysis with ease.


We present package that is at the core of high-performance high-energy physics data analysis, UnROOT.jl, a pure Julia ROOT file I/O package that is optimized for speed and ergonomics that can solve the two-language problem in High-energy physics data analysis.

We discuss what affects performance in Julia, the challenges, and their solutions during the development of UnROOT.jl. We highlight type stability as a challenge and discuss its implication whenever any “compilation” happens (incl. Numba, Jax, C++) as well as Julia’s specific ones.

We also highlight the our quick adoption of the upcoming RNTuple file format/specification in ROOT and ease of implementation in Julia, including reading and writing, that will enable physicists to drop-in Julia to replace any part of a traditional data pipeline.

Finally, demonstrate the performance and “easy to use” claim by comparing UnROOT.jl against popular alternatives (RDataFrame, Uproot, etc.) in medium-size realistic benchmarks, comparing both performance and code complexity.

See also:

PhD Student in High-energy Physics @ Harvard LPPC

https://github.com/Moelf/