Skip to content

Reentrant TVF. TrackEventFitter can now run TVF.

Daniel Campora Perez requested to merge future_kalman into future

This merge request should happen together with Brunel!273 (closed), Hlt!452 (merged) and Analysis!148 (merged)

  • TrackVectorFitter does not use FitTracks to store shared pointers anymore. Instead, a std::vector<Mem::View::Store> is returned with the stores needed to be kept for the lifetime of the event.
  • TrackEventFitter can now run TVF as well. A similar method to the existing in TrackBestTrackCreator has been coded.
  • Unfortunately, in order to support the return of the std::vector<Mem::View::Store>, a new overload of operator() has been created in ITrackFitter. If no specialization is provided, it defaults to using the other operator()'s, therefore for instance TMF's implementation doesn't know about it. Note: This causes the need of using base_class::operator() in all specializations of ITrackFitter.
  • A Tr::TrackVectorFit::TrackVectorFit thread_local object is created for each thread. This makes TVF reentrant (no mutables).
  • ITrackFitter does not have anymore an entrypoint with range v3 cache. Instead, TMF creates the cache object inside the operator() entrypoint. If it is called with several tracks, it should benefit more from locality than before. It also makes the interface cleaner.
  • The fit and fit_r entrypoints in ITrackFitter have been renamed to operator(). The "fit" keyword is used everywhere for a function name, and it made it quite confusing to navigate through the call stack.
Edited by Daniel Campora Perez

Merge request reports