Add new StatusCode category to return filterpassed states from functional algorithms
Merge request reports
Activity
added 1 commit
- 6cebe625 - add a evaluate method to algorithm base class which returns filterPassed as...
2500 dummy algorithms (one read, one write to tes) -> factor 4 improvement (this just improves further the more algorithms we have)
Edited by Niklas Stefan Nolte- Resolved by Christoph Hasse
- Resolved by Christoph Hasse
From an architectural point of view, adding a new method to Algorithm that is not reflected in LegacyAlgorithm, or circumvents parts of the design (ie, keeping the AlgExecState information up to date), is not a good solution to this problem. How do you enforce keeping that AlgExecState current if a user decides to use the
evaluate
method instead ofexecute
? This information is essential to proper operation of other parts of the framework. LHCb is not the only one who uses the reentrantAlgorithm
base class - all new ATLAS Algorithms do, and there is a strong effort to migrate as many old ones as possible as well.It seems to me that better approaches would be to optimize the AlgExecStateSvc for your use case, or return extra information via the extension to the StatusCode that Frank developed.
- Resolved by Christoph Hasse
Since this is something that is entirely LHCb specific, it could be better to implement it in a Brunel package. Just like ATLAS has
AthAlgorithm
, LHCb can have itsLHCbAlgorithm
which will implement theevaluate
method, and the LHCb scheduler can talk directly to it.
The AlgExecStateSvc was designed to remove state information from the reentrant Alg base class, which was first an LHCb requirement ;-}
I agree that we don't need the enabled/disabled checking for every event when using the scheduler. However, we sill need backward compatibility for serial usage without the scheduler, so I don't think we can get rid of this yet. Pity.
- Resolved by Christoph Hasse
It seems that the best way to optimize performance for LHCb would be to inherit only from IAlgorithm, and have the complete implementation of LHCbAlgorithm in Brunel. This way you can get rid of or not implement all the methods you don't need. Or you can just override sysExecute to do whatever you want instead of calling AlgExecStateSvc.
added 1 commit
- c321e18f - change functional base classes to use new evaluate method.
- Resolved by Christoph Hasse
So there are 2 issues:
- the AlgExecStateSvc is too slow for your needs
- you need to get the setFilterPassed flag out of execute
Why not change
Algorithm::execState
to not use the AlgExecStateSvc if it's not wanted/instantiated. Since it returns a ref you'll need to be a bit tricky - maybe add aUnusedState
that turns all setState calls into a noop. Then return the setFilterPassed flag as an extension to the StatusCode.
mentioned in merge request lhcb/LHCb!2171 (merged)
added 1 commit
- c0999436 - extend statuscode instead of new evaluate method
added 1 commit
- 7cd997cd - implement evaluate method via inheritance from special base class
added 1 commit
- 3e297991 - Use StatusCode extension to return filter passed or failed from functional algorithms
- [2019-10-15 12:27] Validation started with lhcb-gaudi-merge#833
- Resolved by Christoph Hasse
- Resolved by Christoph Hasse
added 1 commit
- f50800ba - change naming of new FilterDecision statuscode
changed milestone to %v33r0
- Resolved by Charles Leggett
assigned to @clemenci
added Test on LHCb label
removed Test on LHCb label
added Test on LHCb label
- [2019-10-17 17:57] Validation started with lhcb-gaudi-merge#842
- [2019-10-19 00:12] Validation started with lhcb-gaudi-head#2422
- [2019-10-20 00:07] Validation started with lhcb-gaudi-head#2423
- [2019-10-21 00:07] Validation started with lhcb-gaudi-head#2424
- [2019-10-21 13:30] Validation started with lhcb-gaudi-head#2271
- [2019-10-21 17:01] Validation started with lhcb-gaudi-head#2425
- [2019-10-22 00:09] Validation started with lhcb-gaudi-head#2426
Edited by Software for LHCbadded lhcb-gaudi-head label and removed Test on LHCb label
@clemenci this looks ok for LHCb, please go ahead (some refs need to be updated in Moore, but that'll be done today)