In order to make the output of MT MC Overlay (and digitization) reproducible then we need to use the thread-safe random number service (via
IAtRNGSvc) in all digitization code. This merge request does this for the Pixel Digitization code.
The approach taken is to retrieve the
CLHEP::HepRandomEngine instance re-seeded for the current event in a method of the
PileUpTool which is called once per event, this is then as an argument in calls to other methods where random numbers are required. This helps to make those tools (more) const.
Due to the slightly different way that the random number seeding is done in the MT service, the output is slightly different, but this should just be statistical.