Unit Tests for Concurrency: You need specific unit tests that run SnapshotCombi and Histogrammer with ROOT::EnableImplicitMT(N) where N>1 to catch race conditions automatically.
Physics Regression Tests: Create a small "Golden Data" sample (simulated events) and a reference analysis script. CI should run this on every commit and compare the output histograms/trees bit-for-bit. This ensures that an optimization in KinematicsProcessor doesn't silently break physics results (e.g., flipping a sign in MissMass).
Compiler Matrix: Test against different ROOT versions (v6.28, v6.30, v6.32) and C++ standards (17, 20) to ensure compatibility across different lab environments (JLab vs BNL vs CERN).
Unit Tests for Concurrency: You need specific unit tests that run SnapshotCombi and Histogrammer with ROOT::EnableImplicitMT(N) where N>1 to catch race conditions automatically.
Physics Regression Tests: Create a small "Golden Data" sample (simulated events) and a reference analysis script. CI should run this on every commit and compare the output histograms/trees bit-for-bit. This ensures that an optimization in KinematicsProcessor doesn't silently break physics results (e.g., flipping a sign in MissMass).
Compiler Matrix: Test against different ROOT versions (v6.28, v6.30, v6.32) and C++ standards (17, 20) to ensure compatibility across different lab environments (JLab vs BNL vs CERN).