feat: part 2 of migration to GBTSv3#5328
feat: part 2 of migration to GBTSv3#5328jpreston-cern wants to merge 4 commits intoacts-project:mainfrom
Conversation
| /// 2*T). | ||
| double ptCoeff = 0.29997 * 1.9972 / 2.0; | ||
| /// Bfield in z | ||
| float Bz = 1.9972f * UnitConstants::T; |
There was a problem hiding this comment.
| float Bz = 1.9972f * UnitConstants::T; | |
| float bz = 2 * UnitConstants::T; |
- for the other seeders we defaulted to
2Tat some point as it looks a bit less arbitrary than1.9972
| /// Max seed eta value considered for splitting. | ||
| float maxSeedSplitEta = 0.6; | ||
| /// Max allowed curvature for seed self consistancy check. | ||
| // Units of inverse meters |
There was a problem hiding this comment.
| // Units of inverse meters | |
| /// Units of inverse meters |
| /// Transverse momentum coefficient (~0.3*B/2 - assumes nominal field of | ||
| /// 2*T). | ||
| double ptCoeff = std::numeric_limits<float>::quiet_NaN(); |
There was a problem hiding this comment.
what we do for the other seeders is to provide the b field as an input to the derived config, store it and use it for the computation of pT
acts/Core/include/Acts/Seeding2/TripletSeedFinder.hpp
Lines 172 to 179 in ce90419
| bool checkZ0BitMask(std::uint16_t z0BitMask, float z0, float minZ0, | ||
| float z0HistoCoeff) const; | ||
|
|
||
| float estimateCurvature(const std::array<const GbtsNode*, 3>&) const; |
There was a problem hiding this comment.
| float estimateCurvature(const std::array<const GbtsNode*, 3>&) const; | |
| float estimateCurvature(const std::array<const GbtsNode*, 3>& nodes) const; |
| const float tripletMinPt, const float tauRatio, | ||
| const float tauRatioCut) const; |
There was a problem hiding this comment.
| const float tripletMinPt, const float tauRatio, | |
| const float tauRatioCut) const; | |
| float tripletMinPt, float tauRatio, | |
| float tauRatioCut) const; |
|
|
||
| float u[2], v[2]; | ||
|
|
||
| float x0 = sps[2]->x; |
There was a problem hiding this comment.
| float x0 = sps[2]->x; | |
| const float x0 = sps[2]->x; |
also below
|
|
||
| float dy = sps[k]->y - y0; | ||
|
|
||
| float r2Inv = 1.0 / (dx * dx + dy * dy); |
There was a problem hiding this comment.
| float r2Inv = 1.0 / (dx * dx + dy * dy); | |
| float r2Inv = 1 / (dx * dx + dy * dy); |
or 1.0f to avoid float -> double -> float
| const float tauRatio, const float tauRatioCut) const { | ||
| // conformal mapping with the center at the middle spacepoint | ||
|
|
||
| float u[2], v[2]; |
|
|
||
| if (pT > 5 * tripletMinPt) { // relatively high-pT track | ||
|
|
||
| if (tauRatio > 0.9 * tauRatioCut) { |
There was a problem hiding this comment.
| if (tauRatio > 0.9 * tauRatioCut) { | |
| if (tauRatio > 0.9f * tauRatioCut) { |
|
|
||
| if (B != 0.0) { // straight-line track is OK | ||
|
|
||
| const float R = std::sqrt(1 + A * A) / B * Acts::UnitConstants::mm; |
There was a problem hiding this comment.
| const float R = std::sqrt(1 + A * A) / B * Acts::UnitConstants::mm; | |
| const float R = std::sqrt(1 + A * A) / B * static_cast<float>(Acts::UnitConstants::mm); |
note that these constants are double and this might trigger a conversion chain hurting performance. in algorithmic code we usually don't worry about units and simply use the "standard" ones. only on the boundaries we do the conversions. so I think it is fair to simply drop them as mm = 1 and GeV = 1
also applies to other parts of the code
65cf457 to
847f3ce
Compare
This is the second part of the migration of GBBTSv3 to ACTS which focusses on efficiency improvements, specifically in the barrel.
Features include:
addition of extra check in barrel edge connections via
validateTripletwhich checks for Pt and d0 consistancyupdates to clone removal and addition of seed splitting which for long seeds (and low eta) splits them in two to help the CKF find the true track
more leniency in the tau ratio for edge connections that miss a layer (as we expect more detector effects for these edge connections)
General transition to ACTS units where applicable to make it easier for the user to understand config veriables
--- END COMMIT MESSAGE ---
@timadye @andiwand
NOTE: magic numbers are still present in this PR that are to do with geometry, a future PR will be designated to pull those out (and renamed to be more readable)
NOTE: this gives a slight difference in seeds compared to the the athena version due to differing levels of floating point precision