ATLASRECTS-5537 : IVertexFinder, findVertex() const
The findVertex()
methods in IVertexFinder
were non-const .
Most tools have been made const
, but apparently these were left behind.
Using non-const tool methods can be problematic in AthenaMT.
Actually they can not be really be used by re-entrant algorithms (having execute() const) This is needed for e/gamma as this is the interface of the InDetConversionFinder.
As is the case with interfaces you have implementation. Some times 1 some times >>1 , which now all need to have these public methods as const. And these public methods call other implementation methods that also need to become const and thread-safe. In this case we have like 8 tools implementing this interface...
And since some of these tools were left behind one prb need to also try to move to private tools and ReadHandle. At least for the one used for e/gamma this was also needed.
And then it quickly becomes "turtles all the way down"...
At the end probably will need another pass(es) depending on what is used where.
Anyhow,
- Make the interface const
- Make the interface aware of the EventContext
- Change all derived concrete impl classes to const
- Change all helper methods called by them to const
- Make all derived impl pass the
ATLAS_THREAD_SAFETY
- ...........
- Another pass might be needed for other details e.g at least for the InDetConversionFinder @schaffer or I will prb make the implementation fully EventContext so as to pass to the EventContext from the e/gamma alg all the way down to used propagators etc. This is not urgent but prb is good to happen.
Mentioning @sroe, @npetters @goblirsc so as to be aware ....