Simplifying ModPrHit and order of functions in the Seeding
The ModPrHit class is basically:
- a reference to a hit
- an index of that hit
- a planecode
- a coordinate (float)
The coordinate used to be used to set a hit to invalid (through coord = std::float::max()) and in the Hough cluster. It is not used anymore in the Hough cluster, and can now e used to store the x value of a hit, transforming each
hit.hit->x()
call to
hit.coord()
Additionally, moving the "invalid" value to -std::float::max(), most tests of an invalid hit can be integrated into the normal check being performed (often if (hit->coord < xMin) continue; if (hit->isInvalid) continue
These changes are transparent to the performance.
Another change is in the logic of the XZ search, where we do not even run the search using the T2x2 layer if a candidate was found using T2x1. This increases ghosts by 0.01% and makes the whole thing quite faster. We show below the valgrind profiles of the current master and the current state of the branch, with the total number of calls going from 960M to 863M on the same 90 events (-10%).