Skip to content

feat: add options to use spacepoint time information in TripletSeeder, with a new ROOT seeding analysis tool#5524

Draft
wangyanqi191025 wants to merge 4 commits into
acts-project:mainfrom
wangyanqi191025:4DSeedingBranchE
Draft

feat: add options to use spacepoint time information in TripletSeeder, with a new ROOT seeding analysis tool#5524
wangyanqi191025 wants to merge 4 commits into
acts-project:mainfrom
wangyanqi191025:4DSeedingBranchE

Conversation

@wangyanqi191025

@wangyanqi191025 wangyanqi191025 commented May 29, 2026

Copy link
Copy Markdown
Contributor

feat: add options to use spacepoint time information in TripletSeeder, with a new ROOT seeding analysis tool

--- END COMMIT MESSAGE ---

  1. Core code change: add options to use time information in TripletSeeder, actually apply the cut of time in BroadTripletSeedFilter and DoubletSeedFinder
  2. use time cut in Examples GridTripletSeedingAlgorithm
  3. add a ROOT seeding analysis tool

Still a draft for the moment. Some potential concerns:

  • Extra CPU time consumption in DoubletSeedFinder in no-time situation, since reading too much useless nan for time and time variance. even causing problems when no time info in spacepoint?

To @XiaocongAi @pbutti

@github-actions github-actions Bot added Component - Core Affects the Core module Component - Examples Affects the Examples module Seeding Track Finding labels May 29, 2026
@github-actions github-actions Bot added this to the next milestone May 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📊: Physics performance monitoring for 127f7ee

Full contents

physmon summary

@andiwand andiwand left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hey @wangyanqi191025 - thanks for bringing this to ACTS! I left a few structural comments

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we already have similar writers for this, like RootSeedWriter.hpp RootTrackParameterWriter.hpp. can they be used for your use case?

Comment on lines +55 to +58
const float tM = middleSp.time();
const float varianceTM = middleSp.varianceT();
const float t0M =
tM - std::sqrt(rM * rM + zM * zM) / Acts::PhysicalConstants::c;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fear this might have quite some impact on the compute performance of the seeding without time. did you look at this?

I implemented this template mechanism for these kinds of features. that might be the better choice in this case

@wangyanqi191025 wangyanqi191025 Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @andiwand for having a look at this PR. CPU consumption is what we also worried about, for which we don't want to influence seeding without time too much. May I ask where can I find the template mechanism you mentioned so I can make some change to this PR? Also I plan to do more test on CPU consumption. Thanks!

@andiwand andiwand Jun 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hey @wangyanqi191025 !

the templating mechanism you can find here

this allows to generate different version of the seeding code and dispatch to it depending on what is available during runtime. I imagine that we could use this mechanism to use time information and only emit code when needed

const float varianceTM = spM.varianceT();
const float t0M = tM - std::sqrt(spM.zr()[0] * spM.zr()[0] +
spM.zr()[1] * spM.zr()[1]) /
Acts::PhysicalConstants::c;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note that c=1 in ACTS and we usually don't write the constant into formulas for readability reasons. not wrong but for consistency reasons I would tend to remove them

for (const auto& [bottom, middle, top, bestSeedQuality, zOrigin,
qualitySeed] : sortedCandidates) {
// calculate chi2 of the triplet time compatibility
if (config().applyTripletTimeFilter) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this filtering should actually be done in the triplet seed finder

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component - Core Affects the Core module Component - Examples Affects the Examples module Seeding Track Finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants