A new implementation of the ROOT framework Julia interface, ROOT.jl, has been performed. Previous implementation could not run with recent Julia releases due to the stop of support of the Cxx.jl library it was based on to interface with the ROOT C++ libraries. The new implementation is based on CxxWrap.jl and WrapIt!. CxxWrap.jl is a package to interface C++ libraries with Julia, while WrapIt!...
RootIO.jl is a package that provides a high-level abstraction for I/O to the ROOT files. It provides a streamlined interface for creating, writing, and filling ROOT TTrees. With this new package, the user can easily write all primitive types, arrays, vectors and dataframes to a TTree in a row-wise manner, without worrying about references and pointers to the objects. The package implementation...
We briefly share insights gained from implementing RNTuple Reader twice: first in Python, and then in Julia. We discuss the composability of the RNTuple type system and demonstrate how Julia's multiple dispatch feature has been effectively employed to realize this concisely.
Regarding the implementation of RNTuple Writer, we outline the current capabilities and illustrate how they support...
EDM4hep aims to establish a standard event data model for the store and exchange of event data in HEP experiments. The Julia package EDM4hep.jl is capable of generating Julia-friendly structures for the EDM4hep data model and reading event data files in ROOT format (either TTree or RNTuple) that are written by C++ programs, utilising the UnROOT.jl package. This contribution explores the...
Python and Julia are two powerful languages that are transforming data analysis in high-energy physics (HEP).
We'll start by exploring why Python remains a go-to language for data analysis, and then pivot to Julia, which is gaining recognition for its impressive speed and suitability for scientific applications.
I’ll show you how to create a dynamic workflow that combines the strengths...
Event processing frameworks are important software components of High Energy Physics (HEP) experiments, playing a critical role in building applications for HEP-specific workflows such as trigger or event reconstruction. A key aspect of these frameworks is their ability to efficiently orchestrate the parallel processing of algorithms for multiple events simultaneously. As heterogeneous setups,...
We share a status update on the histogramming package FHist.jl, which started out as a course final project but grew to be production-grade and is used in real ATLAS analysis.
We briefly go over the feature and performance of FHist.jl, including the core features as seen in ROOT's TH* classes, as well as axillary features such as integration with Plots.jl and Makie.jl.
Finally, we...
In High Energy Physics, very demanding algorithms are written to represent the physics that takes place either in the accelerators or in the detectors and to analyze the measured signals. The cost of each algorithm can be broken down into two categories: the development and the execution. Starting from the latter, the target platforms set stringent runtime constraints, where the algorithm must...
To be successor, every larger software project needs to be tested to verify the correct functionality and to enable its functionality to be extended flawlessly. The type of tests can be very different and depends on the kind of software project. Software projects, that are divided into several sub-projects require integration tests to verify that the individual parts work together correctly....
The Julia programming language has evolved into a mature tool for scientific computing over the past decade, offering high-level capabilities with just-in-time (JIT) compilation and efficient garbage collection. Its performance, comparable to that of C/C++, makes Julia an attractive option for the high-energy physics community. However, Julia's use of precompiled files to achieve this...
Implicit generative models have the capability to learn arbitrary complex data distributions. On the downside, training requires telling apart real data from artificially-generated ones using adversarial discriminators, leading to unstable training and mode-dropping issues. As reported by Zahee et al. (2017), even in the one-dimensional (1D) case, training a generative adversarial network...
The calorimeter in Large Hadron Collider (LHC) experiments measures particle energy by tracking showers from collisions. Describing these processes requires precise simulation methods, such as the Geant4 toolkit. Recently, generative models have emerged as a faster alternative based on different Machine Learning (ML) architectures, such as Diffusion and Variational Autoencoders.
The training...
Calculating differential cross-sections of scattering processes is a crucial observable in high-energy physics, used to predict experimental outcomes and test theoretical models. For perturbative quantum field theories, this involves generating all possible Feynman diagrams for a given scattering process and translating them into computable functions. This becomes cumbersome very rapidly,...
The Large Enriched Germanium Experiment for Neutrinoless ββ Decay (LEGEND) experimental program is dedicated to the search for the neutrinoless double-beta (0νββ) decay of $^{76}$Ge with isotopically enriched high-purity germanium (HPGe) detectors and a discovery sensitivity beyond a half-life of $10^{28}$ years. The project's first phase, LEGEND-200, has stably accumulated physics data at the...
While IceCube’s detection astrophysical neutrinos at energies up to a few PeV has opened a new window to our Universe, much remains to be discovered regarding these neutrinos’ origin and nature. In particular, the difficulty differentiating 𝜈𝑒 and 𝜈𝜏 charged-current (CC) events in the energy limits our ability to measure this flux's flavor ratio precisely. The Tau Air-Shower Mountain-Based...
SolidStateDetectors.jl is a novel open-source software solution used to simulate the behavior of solid state detectors, e.g. germanium and silicon detectors. The package calculates the electric fields and weighting potentials, as well as the charge drift in the detectors and detector output signals.
Users can define arbitrary detector geometries via simple configuration files using...
From controlling vacuum, high voltage and motors, running data acquisition, performing data analysis, to publication, all in Julia.
Jet reconstruction remains a critical task in the analysis of data from HEP colliders. We describe in this paper a new, highly performant, Julia package for jet reconstruction, JetReconstruction.jl, which integrates into the growing ecosystem of Julia packages for HEP. With this package users can run sequential reconstruction algoritms for...
High energetic quarks and gluons, produced in a scattering phenomena, undergoes fragmentation and hadronization, leading to a spray of collimated particles, which are collectively clustered to form jets. In the ultra-high momentum regime, it may often happen that multiple energetic partons are within a geometric vicinity, and the jet thus formed has multiple sub-jets within it. This led to the...
This tutorial will introduce statistical tooling in Julia, with a special focus on the Bayesian Analysis Toolkit BAT.jl. We'll show how to deal with probability distributions, build models and likelihood functions, and run parameter inference.
During Run 3 of the LHC, trigger level analysis (TLA) offers the possibility of targetting new signals which other analyses are less sensitive to. I will showcase how Julia has been used as a part of the analysis workflow for a TLA search of a new heavy vector boson, Z', decaying to two bottom quarks. I will discuss the advantages and experience of using Julia in this analysis.
This talk will explore two areas. First, case studies will demonstrate how Julia has been effectively used for complex analyses in resonance physics and computationally demanding partial-wave analysis across several projects. Second, I will introduce a recent initiative aimed at standardizing hadronic-decay model serialization. In this context, the HadronicLineshapes.jl
and...
The Patatrack pixel track reconstruction is a stand-alone project that has been extracted from the CMS reconstruction software. Over the years it has been used to test and evaluate different CPU and GPU technologies, like OpenMP, TBB, CUDA, HIP, SYCL, Kokkos, and Alpaka.
In order to evaluate the Julia programming language in the context of a realistic High Energy Physics software project,...
RainbowAlga.jl is a 3D neutrino event display based on GLMakie. The package was already introduced and demonstrated in 2013 in its early development phase at the very first JuliaHEP. This talk shows the current status of the package which has evolved to a helpful utility that is customisable and offers both interactive and programmatic ways to display neutrino events in Cherenkov neutrino...
This presentation will explore the socio-economic impact of Julia. In light of the significant social inequalities in large cities like Karachi, mastering Julia opens up new opportunities for underrepresented communities. We will showcase how integrating Julia with CMS Open data sparks high school students' interest in STEM, and how we continue to nurture this enthusiasm through undergraduate...
The Julia programming language was designed for scientific computing and with its claimed usability („walks like Python“) and speed („runs like C“), it seems to be a scientists‘ software dream come true. Julia appears to be particularly well-suited for high-energy physics (HEP), where reliable software tools and rapid development cycles are crucial for everyday work. Whether it’s data...
This session will provide a step-by-step guide on building a Julia package, implementing physics models, and applying best practices for the everyday workflow of a physicist.
This session will build on the morning's hands-on Julia work, introducing more advanced topics based on earlier progress.
Though first intended as an interactive, productivity language, Julia has seen a surprising amount of interest as an alternative to C and C++. In this talk I will discuss why that is, and what we are doing to encourage and enable those use cases. Providing more compile-time safety and making it easier to deploy Julia programs are major areas of focus for the project and JuliaHub currently.