Skip to content

Make RoIBResultToxAOD reentrant and L1[CPM/JEM]Tools const

Make RoIBResultToxAOD a re-entrant algorithm. Most of the work has already been done over the past year or so in a few other MRs. The only remaining blockers were the L1[CPM/JEM]Tools, so make the tools' methods const.

The interface of the tool's methods used by clients other than RoIBResultToxAOD was not modified apart from adding the const qualifier to some. The interface used by RoIBResultToxAOD (formSums) is changed to return the "RoI sum" object which is then used directly in RoIBResultToxAOD, skipping the redundant accessor methods of these tools.

The change is motivated by the findings of recent offline reco tests with high thread count where this algorithm was in the top 10 of algorithms limiting the job parallelism (see the email thread "Real-life CPU efficiency with high threadcore count", in particular the message from Walter with the list of "worst offenders").

cc @afaulkne, @watsona

Validated by running:

  • the q221 and q431 tests (no errors)
  • test_trig_data_v1Dev_rerunL1Only_build.py (no errors, online monitoring histograms identical to the nightly)
  • test_trig_data_v1Dev_emptyMenu_build (no errors, online monitoring histograms identical to the nightly)
  • a version of the emptyMenu test with 16 threads on 2000 events (no errors)

Unfortunately, I was not able to validate output file (RDO_TRIG or AOD) invariance because of diff-root crashes as discussed in https://its.cern.ch/jira/browse/ATLASRECTS-6261

Edited by Rafal Bielski

Merge request reports