Currently in high-energy physics (HEP) there are two main languages used: C++ for numerically intensive code, where execution speed is paramount; and Python, for interactivity and ease of development (often used as ‘glue’ between high-performance code modules). Recently there has been increasing interest in Julia as an alternative/additional language for HEP. This could offer the convenience features of Python, but the optimal runtime speed of C++ (Julia in HEP Paper, Julia HEP Github).
In order to continue this investigation, this project will re-implement some important algorithms for HEP in Julia, with the aim of assessing developer convenience and runtime performance compared to standard implementations in C++.
The passage of high-energy particles through detectors like ATLAS and CMS at CERN frequently results in showers of secondary particles that form a cascade, which is captured in the calorimeters of these experiments. These particle cascades are called jets and it is extremely important to reconstruct the energy of the primary particle from the calorimeter measurements.
Over the years the community have developed several well-tested algorithms for doing this. One of the most popular is the anti-kt algorithm, which has a community standard implementation as part of the FastJet package.
The task is to write an Anti-Kt jet reconstruction algorithm in Julia. This will read simulated calorimeter data files and implement the jet finding algorithm on this data. Data will be output as clustered jets. To ensure correctness, comparison with FastJet will be done, both numerically and using visualisation. The speeds of the two codes will then be benchmarked on different platforms, for both serial and multi-threaded running; the convenience for the developer and code maintainability will be assessed.
Some prior experience with Julia would be highly desirable, but strong programming skills in C++ and Python should enable the candidate to learn Julia sufficiently quickly for the project.
The task has many possible extensions that the candidate could tackle:
The evaluation task comprises of doing a simple timing of the current anti-kt algorithm. For details please contact the mentors.
If the candidate has prior experience in Julia they may submit this work as part of their evaluation.