Add new module: TrackingMultiplet
This MR adds a new module,
TrackingMultiplet and a corresponding
A multiplet track consists of two
StraightLineTracks, one up- and one downstream, that can be matched at the position of a scatterer. Hence, for the tracking, first a track finding for the two tracklets is performed, then a matching of these two.
For the tracklet finding, the first and the last detector in the lists of up- and downstream detectors are used as references. Every combination of clusters in the two reference detectors is a track candidate, and clusters are added along this track if the spatial and the time range (config parameters) matches. The candidate is discarded when the number of clusters is too low or another tracklet is found within an isolation range (config parameter) at the position to the scatterer.
For the matching, every upstream tracklet is checked for matching downstream tracklets. The closest match, if within the matching cut (config parameter), wins.
Along the way, the only change closer to the core is another getter function for
KDTree objects, where one can now get the full
Things you could probably help me with:
- Is the time matching for the tracking handled appropriately?
- Should there be a time matching between up- & downstream tracklets? If yes, how?
- There's currently a lot of different spatial cuts. Should/could this be simplified?
Some more things to check before being ready to merge:
- Check on a more performant iteration over detectors suggested by @simonspa
- Add module test
- Check for memory leaks (duh)