TrackParticleCreator: Go around the issue of ForceUpdate discussed in ATR-19773
One of the main thread safety issues of the TrackParticleCreator was the ForceUpdate Summary where one forces a const Trk::Track to be updated.
i.e this call
if (m_forceTrackSummaryUpdate) {
// Do we really need to update const Trk::Track* track?
Trk::Track& nonConstTrack = const_cast<Trk::Track&>(*track);
m_trackSummaryTool->updateTrack(nonConstTrack);
}
This option (at least directly ...) is used only in legacy Trigger code, but according to ATR-19773 although this code is legacy, people want to retain it with the same semantics, as the code needs to run in NoMT as reference or so (@jmasik can correct me but this is my take away from ATR-19773).
If we ever remove it or there is no need to run like this, we can get rid also of the need of a noMT
version.
To avoid duplicating too much code hide the non-MT part inside a virtual call.
The standard version does not do anything here, no const_cast --> thread safe
The NoMT version does the const_cast above and I marked it at large as ATLAS_NO_THREAD_SAFE
.
Legacy clients that rely on updating a const Trk::Track taken from store should be using the NoMT
version
and can run only in legacy mode
i.e no-MT ... (hope the names make it a bit explicit ...)
Merge request reports
Activity
added Tracking Trigger master review-pending-level-1 labels
CI Result FAILURE (hash abe5c74b) Athena AthSimulation externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 5433] CI Result FAILURE (hash 17b2b475) Athena AthSimulation externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 5432] CI Result SUCCESS (hash 7833d48d) Athena AthSimulation externals cmake make required tests optional tests Full details available on this CI monitor view
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 5437] Thanks @christos - it looks good to me!
added review-pending-level-2 label and removed review-pending-level-1 label
mentioned in merge request !27716 (merged)
From my perspective I would rather want that !27716 (merged) goes in first (I have to admit mostly out of egoistic reasons, since it will conflict with this MR and I would rather want to avoid extra iterations to get !27716 (merged) merged).
Anyway that merge request removes the necessity for the "ForceTrackSummaryUpdate" option
- although leaves it in the code; and
- with the consequence that only the track particles profit from the new summary but not the tracks themselves).
So, this "ForceTrackSummaryUpdate" could be removed altogether once that MR is in.
Can you elaborate on what you plan to do after your MR? The issue as I understood is that the trigger legacy workloads will need this in some shape or form to do the lazy init on Trk::Track , if they do not need it is perfectly fine to close.
Edited by Christos AnastopoulosLeaving this to @goetz here !27716 (merged) and for the future.
removed review-pending-level-2 label