Skip to content

Add generic mechanism for multithreaded reproducibility testing

Initially, I aimed at introducing multithreaded reproduciblity testing using ad-hoc methods that are specific to each individual ACTS usage example (ExtrapolationExample, FittingExample...), such as histogram comparison.

But after looking at the ROOT API more closely, I decided that I wanted to try out something more ambitious: to compare any perfectly reproducible example program output in an order-insensitive fashion. This MR contains the current state of my efforts in this direction.


The "testReproducibility.sh" shell script runs a given ACTS framework example in single-threaded and multi-threaded mode, compares the output, and in UNIX tradition returns zero if they are identical up to event order and nonzero otherwise. To try it out on the ExtrapolationExample, do

$ ./testReproducibility.sh Extrapolation

The core of the ROOT file comparison logic is located in the "compareRootFiles.cpp" ROOT script, with various bits of non-essential logic offloaded to the "compareRootFiles.hpp" header.


Once accepted, this merge request will fix ACTSFW-5

Merge request reports