Improved seeding performances
This MR integrates some parts of !1969 (closed), with other changes, removing a bit more than 10% calls in the seeding, as evaluated through callgrind.
Main changes here are:
- removed an allocation by moving from get_lowerbound_lin to moveLowerBound_lin, as it is always used to change one of the arguments;
- cache the first and last hits of all layers so that search methods can know if they can encounter the end part or not. This results in much faster searches as we don't have to test againt Bounds.end
- stop looking for hits in T2x1 when we already know they were not there (loop on T2x2 parabola hits). Adds few ghosts
- checked some float initialisations
- changed order of loops to ignore T2x2 hits already used (no effect)
Additionally, parts of the changes of !1969 (closed) have been added, namely:
- parabola solving now uses precalculated information. While technically not completely transparent (less precise), I see no change over 10,000 events.
No changes in Ref expected, or really small.
To-do:
[x] Checking if the U/V layers searches can also use the same kind of caching for faster search. However the probable gain will be much smaller.
[x] Once this is merged, !1969 (closed) will be overhauled to solely address the third-hit search window changes.
Callgrinds:
This MR: (note also the absence of sub-boxes in findXProjection)
References updated in Moore!474 (merged) and Brunel!1005 (merged)
Edited by Dorothea Vom Bruch