Skip to content

Fix thread-unsafety in Monopole code, G4mplEquationSetup class - Monopole MT ...

Fix thread-unsafety in Monopole code, G4mplEquationSetup class - Monopole MT validation [ATLASSIM-4182]

G4mplEquationSetup class was implemented as a singleton, so it was not thread-safe. This affected MT simulation - with more than 1 thread: the simulation was aborted for illegal values of energy, momentum and/or time. Added the #ifdef G4MULTITHREADED directive to handle the multithreaded case. One instance of the class will be created per each thread and stored in a tbb::concurrent_unordered_map that is hashed with the threadID number.

This was tested in sequential and mt mode with 100 events, and now the simulation runs till the end. HITS comparison between sequential and mt runs, shows consistency of results.

Merge request reports