tauRec: make TauProcessorAlg re-entrant
Hello,
This MR is changing TauRunnerAlg from AthAlgorithm to AthReentrantAlgorithm (ATLTAU-1723). The EventContext is now explicitly passed to the execute method. The tool handles are now const, and consequently, the non-const tool::finalize() methods are no longer called from within TauRunnerAlg::finalize(), which is dropped. I ran a standalone tau reconstruction from ESD over 200 events. The reconstruction output is identical for AthAlgorithm with 1 thread, AthAlgorithm with 5 threads, and AthReentrantAlgorithm with 5 threads.
Performance with AthAlgorithm and 5 threads:
PerfMonMTSvc INFO ***************************************************************************************
PerfMonMTSvc INFO Number of events processed: 1000
PerfMonMTSvc INFO CPU usage per event [ms]: 232
PerfMonMTSvc INFO Events per second: 5.352
PerfMonMTSvc INFO ***************************************************************************************
PerfMonMTSvc INFO Max Vmem: 3.49 GB
PerfMonMTSvc INFO Max Rss: 2.12 GB
PerfMonMTSvc INFO Max Pss: 2.12 GB
PerfMonMTSvc INFO ***************************************************************************************
Performance with AthReentrantAlgorithm and 5 threads:
PerfMonMTSvc INFO ***************************************************************************************
PerfMonMTSvc INFO Number of events processed: 1000
PerfMonMTSvc INFO CPU usage per event [ms]: 235
PerfMonMTSvc INFO Events per second: 5.742
PerfMonMTSvc INFO ***************************************************************************************
PerfMonMTSvc INFO Max Vmem: 3.53 GB
PerfMonMTSvc INFO Max Rss: 2.08 GB
PerfMonMTSvc INFO Max Pss: 2.08 GB
PerfMonMTSvc INFO ***************************************************************************************
The memory saving is not obvious :-( We still need to migrate TauRunnerAlg to AthReentrantAlgorithm, but this requires some underlying tool to have a const execute method ( !36215 (closed) ).
Cheers, Bertrand