this session will include discussions on:
- migrating serial Algs to cloneable Algs
- writing re-entrant Algs
- sharing data between clones
- explicit sharing vs merging at finalize
- I also want some feedback on how we should deal with Histograms in cloned Algs
- each clone gets its own hist? how to merge?
- clones share a hist, and do locking themselves?
- clones share a hist, and the THistSvc manages the locking?
- PROPOSAL:
- default behaviour of THistSvc is each clone gets it's own copy. histograms in clones are moved to memory resident. primary algorithm must explicitly call THistSvc->merge(id) during finalize to have cloned histograms merged into it
- new method THistSvc::regSharedHist, which will create a shared instance of the Histogram for all clones
- during execute, clients MUST lock histogram before manipulating it:
- auto lockGuard = THistSvc->getLock(hist);
- unlocked automatically when goes out of scope
Tomasz: we have to sum more frequently online i.e. before every publication
and TDAQ has implementation for it:
https://svnweb.cern.ch/trac/atlastdaq/browser/DAQ/DataFlow/histmon/trunk/src/THistRegisterImpl.cxx#L288