WIP: ReEntrantAlgorithms
Provides mechanism to declare and run re-entrant Algorithms, where only a single instance of the Algorithm is created, but can be used concurrently in different Events.
Common functionality of Algorithms is moved to the Gaudi::AlgorithmBase
class. Both non-re-entrant and re-entrant Algorithms inherit from this
class. Non-re-entrant Algorithms are now Gaudi::LegacyAlgorithms, but
are aliased to Algorithm in GaudiKernel/Algorithm.h. This may be changed
at a future time. Re-entrant Algorithms are now Gaudi::ReEntAlgorithm from
GaudiKernel/ReEntAlgorithm.h.
Re-entrant Algorithms should implement the method
StatusCode execute_R(const EventContext&) const
and must not implement StatusCode execute(). The opposite is true for
non-re-entrant (Legacy) Algorithms.
A new method bool isReEntrant() is also provided to simplify testing the type
of Algorithm.
Re-entrant Algorithms are created by default with Cardinality == 0. If desired,
this can be overriden at configuration time, and multiple instances of the Algorithm
will be created by the AlgResourcePool.