Skip to content

PsMap modified, handling of the Current Map is now thread-safe (ATLASSIM-4054)

PsMap is a singleton and SetMap method was not thread safe. This caused data race in the LArBarrelPresamplerCalculator code, as different threads were calling SetMap method at the same time. This resulted in differences in the Current values retrieved from the map and consequently in the energy of the LArHitEMB. A new method has been added to the class: CurrMap* GetMap(imodule) const, that is used rather than m_psmap->SetMap(imodule) and m_psmap->Map() in the LArBarrelPresamplerCalculator code. m_curr and m_module members have been removed.

After this fix I run and compared serial and MT simulation over 100 ttbar events and the issue described in ATLASSIM-4054 is gone.

Merge request reports