feat: add geometric filter options for strip seeding #5339
feat: add geometric filter options for strip seeding #5339kodiakhq[bot] merged 20 commits intoacts-project:mainfrom
Conversation
… LRT strip seeding Add two configurable optimizations to the strip seeding path that improve LRT performance without degrading physics: 1. cot(theta) doublet pre-filter (TripletSeedFinder): Skip top doublets whose cot(theta) differs from the bottom doublet by more than cotThetaDiffMax before the expensive strip coordinate transformation. Disabled by default (cotThetaDiffMax = infinity). 2. Delta-eta seed weight penalty (BroadTripletSeedFilter): Penalize triplet seeds whose direction (eta) is inconsistent with the vector from the beamspot to the point of closest approach. Real displaced-decay seeds have small delta-eta. Disabled by default (deltaEtaWeightFactor = 0).
andiwand
left a comment
There was a problem hiding this comment.
generally looks good to me 👍 left a few minor suggestions and comments
Pixel triplet seeding order is sorted by doublet cot(theta) (sortedByCotTheta), which saves on execution time since the iteration can be aborted once a threshold is reached. Something similar doesn't exist for strip seeding, likely because the main bottleneck is the very expensive stripCoordinateCheck done before the global coord. transformation. It's still possible to implement a very loose criteria based on the approximate cot(theta) before this check is done that can save on execution time while still being conservative. Implementing a threshold of 0.5 here saves ~10-15% off of the total ATLAS LRT seeding time with near-negligible (LLP) efficiency loss.
I remember wondering about this - if you think it makes sense to harmonize this we can definitely do it. I faintly remember that cotTheta then depends on calibrated / non-calibrated quantities which could be individually above or below threshold potentially hurting efficiency.
Yeah indeed there is this issue with calibrated vs non-calibrated, I think the difference is not too meaningful when the threshold is very coarse, since seeds whose doublets are this incompatible likely shouldn't be pushed into being compatible after any updates. For the LRT/displaced strips case for certain it's well-motivated, since much worse tradeoffs have to be made for CPU vs efficiency in the end... but for this reason I thought it best to just keep the default behavior by default rather than just implementing it directly |
|
/ci-bridge-run |
1 similar comment
|
/ci-bridge-run |
|



Adds optional filters on strip doublet cot(theta) + optional weighting on strip seed delta(eta) for displaced seeds
--- END COMMIT MESSAGE ---
Pixel triplet seeding order is sorted by doublet cot(theta) (
sortedByCotTheta), which saves on execution time since the iteration can be aborted once a threshold is reached. Something similar doesn't exist for strip seeding, likely because the main bottleneck is the very expensivestripCoordinateCheckdone before the global coord. transformation. It's still possible to implement a very loose criteria based on the approximate cot(theta) before this check is done that can save on execution time while still being conservative. Implementing a threshold of 0.5 here saves ~10-15% off of the total ATLAS LRT seeding time with near-negligible (LLP) efficiency loss.Additionally, the ATLAS Run 3 LRT pass (https://arxiv.org/pdf/2304.12867, pg 11) had an additional weight component in the seed ordering based on deltaEta = |eta_seed − eta_prime|, where eta_prime is the pseudorapidity of the vector connecting the beam spot position with the point of closest approach of the seed. Seeds from LLP decays tend toward small values of deltaEta due to the correlated direction of the LLP and its decay products, in contrast to seeds corresponding to fake tracks. The ACTS seed filter does not quite function the same as the legacy Athena seed ordering, but a similar function can be emulated in the seed filter weight as an optional factor. This should give a higher weight to genuine displaced seeds, allowing us to reduce the number of seeds per middle SP from 3->2 or 1 downstream, which has another ~15-20% speedup potential in the finding stage.
Both are disabled by default and can just be configured downstream
FYI @jburzy