-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Host Clusterization Reorganization, main branch (2024.04.16.) #543
Host Clusterization Reorganization, main branch (2024.04.16.) #543
Conversation
Renamed the class, and made sure that it would work with "device types" instead of using templating unnecessarily.
Renamed the class, and made sure that it would work with "device types" instead of using templating unnecessarily.
Renamed the class, and made sure that it would work with "device types". While extracting its core calculation into a helper function that the device code could reuse.
Moved all of the clusterization (adjacent) algorithms into the traccc::host namespace, and renamed traccc::component_connection_algorithm to traccc::host::sparse_ccl_algorithm.
e4fdd25
to
4c43e1a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
Just note that we might need to move spacepoint_formation
to seeding directory at some point because spacepoints are only used for the seeding algorithm
Yepp, I fully agree. I thought about possibly doing that in this MR, but then decided against it. Let's do that along with getting rid of https://github.com/acts-project/traccc/blob/main/core/include/traccc/seeding/experimental/spacepoint_formation.hpp, and making the spacepoint formation use Detray. (Or a version of Detray, to be seen. 🤔 I have some ideas...) In a PR in the non-too-distant future. 😉 |
I don't know what would be your idea -- but please note that just using transform3 matrix won't be enough. transform3-based coordinate transform only works for 2d cartesian measurement. But it will never work on the straw tube (still cartesian but xyz order is swapped) and annulus shape with polar coordinate |
Thoguh, It is also true that we might not be able to make any spacepoints from straw or 1d strip |
However, we will need to observe alignment conditions data, right? |
Out of curiosity, is there anything preventing us from composing a Cartesian-to-polar transformation and a homogeneous Cartesian transformation to make this work in exactly the same way that it does for 2D rectangular surfaces? Edit: never mind, makes sense now that I think of it. |
Right. Anyway we don't have to play a trick on spacepoint formation beyond what is in the experimental version. Moving away from the detector object will just make it less robust |
As I have been advertising for a few days already, in order to progress with making the full ODD reconstruction chain working with CUDA, the clusterization code needs to be revised a bit. This is a first step for that.
Since I'll end up touching a lot of files, I decided that I should just modify things with the core/host clusterization algorithms at first. The device code (which is actually the more important for us right now...) will come in a follow-up PR.
The code does a few things:
traccc::host
namespace, and added the_algorithm
postfix to all of their names for consistency;component_connection
tosparse_ccl_algorithm
in the end, in an effort to make it a bit clearer through the naming what type of clusterization is used by the different algorithms. (The device code will be updated accordingly where needed.)core/include/traccc/clusterization/details
, and into thetraccc::details
namespace. (With the implementation files going in thecore/include/traccc/clusterization/impl
subdirectory.Since some of the changes may look suspicious, I checked what these changes do to our existing throughput measurements. (Not a thorough test, just a simple one.) The code from the PR does:
While with the current main branch I see:
So if anything, these changes just improve our code's performance. (But don't read too much into the results. I just ran this small statistics test a few times, just to make sure that obvious warm-up effects would not play a role.)