Jet clustering optimizations in fads
Description
Fast simulation is an essential first step in many HEP analyses. However, the current fast detector simulation toolkits have been written when parallelization and concurrency programming were not yet widely shared concerns.
fads is a re-engineering in Go, addressing such concerns.
fads is heavily inspired from Delphes and tries to match bit-by-bit the physics results of its C++ counterpart, with a better multicore scalability, leveraging the concurrency features of Go.
fads currently uses a very naive and CPU hungry jet clustering scheme which scales badly with the combinatorics involved at LHC multiplicities.
For fads to be competitive in real life scenarii, this needs to be fixed.
Tasks
The proposed project aims at implementing a faster jet clustering strategy, using Delaunay triangulation. FastJet uses CGAL to achieve performances in O(N ln N) for Cambridge/Aachen and O(N^{3/2}) for anti-kt.
We propose the following steps:
- implement and augment the unit tests for the current jet clustering strategy (in O(N^3))
- implement performance regression tests using the Go
testingbenchmark suite - implement Delaunay triangulation, using the Gonum numerical libraries
- integrate the new clustering strategy into
fadsand plug it into the performance regression tests - leverage Go builtin features to make the clustering concurrent and scalable
Expected results
Working implementation of a O(N ln N) clustering strategy.
Requirements
Go, C/C++ (to read legacy code and translate it into Go), git.