-
Notifications
You must be signed in to change notification settings - Fork 174
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
refactor!: Explicit BoundaryTolerance constructors #3974
refactor!: Explicit BoundaryTolerance constructors #3974
Conversation
WalkthroughIn the realm of boundary tolerance, a significant restructuring has occurred within the Changes
Possibly related PRs
Suggested Labels
Suggested Reviewers
Poem
Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Quality Gate passedIssues Measures |
2729d6e
to
ed92262
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.
Actionable comments posted: 0
🧹 Nitpick comments (1)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp (1)
Line range hint
56-109
: Wise move to private parameter structs, it is! Hmmmm.Strong encapsulation and validation, these parameter structs provide. Clear separation between interface and implementation, there now is.
A suggestion for consistency, I have:
- AbsoluteEuclideanParams() = default; - explicit AbsoluteEuclideanParams(double tolerance_) - : tolerance(tolerance_) {} + AbsoluteEuclideanParams() = default; + explicit AbsoluteEuclideanParams(double tolerance_) + : tolerance(tolerance_) { + // No validation needed for Euclidean tolerance as it can be negative + }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp
(4 hunks)Core/src/Geometry/TrapezoidVolumeBounds.cpp
(1 hunks)Core/src/Surfaces/BoundaryTolerance.cpp
(9 hunks)Examples/Io/Root/src/RootAthenaDumpReader.cpp
(1 hunks)Tests/Benchmarks/AnnulusBoundsBenchmark.cpp
(1 hunks)Tests/UnitTests/Core/Surfaces/BoundaryToleranceTests.cpp
(3 hunks)Tests/UnitTests/Core/Surfaces/TrapezoidBoundsTests.cpp
(1 hunks)
✅ Files skipped from review due to trivial changes (3)
- Core/src/Geometry/TrapezoidVolumeBounds.cpp
- Tests/UnitTests/Core/Surfaces/TrapezoidBoundsTests.cpp
- Examples/Io/Root/src/RootAthenaDumpReader.cpp
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: merge-sentinel
🔇 Additional comments (5)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp (2)
119-143
: Clear and explicit, these factory methods are! Hmmmm.A better way to create tolerance instances, this is. Self-documenting and intuitive, the interface has become.
168-177
: Backward compatibility maintained while encapsulation improved, it has been.Changed return types to parameter structs, yet stable interface preserved. Strong in the Force, this refactoring is!
Core/src/Surfaces/BoundaryTolerance.cpp (1)
22-31
: Consistent with new parameter types, these changes are.Simple and clear, the variant checks have become. Improved readability without sacrificing functionality, we have achieved.
Also applies to: 35-43
Tests/Benchmarks/AnnulusBoundsBenchmark.cpp (1)
59-62
: More explicit and consistent, these initializations have become.From brace to parentheses, the change flows. Explicit floating-point literals, clarity they bring.
Tests/UnitTests/Core/Surfaces/BoundaryToleranceTests.cpp (1)
42-46
: Through accessor methods, the tests now flow. Hmmmm.Properly validate the refactored implementation, these tests do. Strong test coverage, maintained it has been.
Also applies to: 59-62, 74-78, 94-101
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.
LGTM 👍
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.
Actionable comments posted: 0
🧹 Nitpick comments (2)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp (2)
Line range hint
57-108
: Approve parameter structs, but consistency in constructors, improve we must!Good changes these are, with clear naming and proper validation. But consistency in constructor declarations, we seek. Make all single-parameter constructors explicit, we should.
- AbsoluteBoundParams(double tolerance0_, double tolerance1_) + explicit AbsoluteBoundParams(double tolerance0_, double tolerance1_) - AbsoluteCartesianParams(double tolerance0_, double tolerance1_) + explicit AbsoluteCartesianParams(double tolerance0_, double tolerance1_) - Chi2BoundParams(const SquareMatrix2& weight_, double maxChi2_) + explicit Chi2BoundParams(const SquareMatrix2& weight_, double maxChi2_)
119-144
: Clear factory methods these are, but explicit return types, prefer we do!Strong with the Force these factory methods are, but clarity in return types, bring more understanding it would.
- static auto Infinite() { return BoundaryTolerance{InfiniteParams{}}; } + static BoundaryTolerance Infinite() { return BoundaryTolerance{InfiniteParams{}}; } - static auto None() { return BoundaryTolerance{NoneParams{}}; } + static BoundaryTolerance None() { return BoundaryTolerance{NoneParams{}}; } - static auto AbsoluteBound(double tolerance0, double tolerance1) { + static BoundaryTolerance AbsoluteBound(double tolerance0, double tolerance1) {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp
(4 hunks)Core/src/Geometry/TrapezoidVolumeBounds.cpp
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- Core/src/Geometry/TrapezoidVolumeBounds.cpp
⏰ Context from checks skipped due to timeout of 90000ms (18)
- GitHub Check: merge-sentinel
- GitHub Check: CI Bridge / lcg_106a: [alma9, clang16]
- GitHub Check: CI Bridge / lcg_106a: [alma9, gcc14]
- GitHub Check: CI Bridge / lcg_106a: [alma9, gcc13]
- GitHub Check: CI Bridge / lcg_105: [alma9, clang16]
- GitHub Check: CI Bridge / lcg_105: [alma9, gcc13]
- GitHub Check: CI Bridge / linux_ubuntu_2204
- GitHub Check: CI Bridge / linux_ubuntu_2204_clang
- GitHub Check: CI Bridge / build_exatrkx
- GitHub Check: CI Bridge / build_linux_ubuntu
- GitHub Check: CI Bridge / build_exatrkx_cpu
- GitHub Check: CI Bridge / clang_tidy
- GitHub Check: linux_ubuntu_extra (ubuntu2204_clang, 20)
- GitHub Check: missing_includes
- GitHub Check: macos
- GitHub Check: linux_ubuntu_extra (ubuntu2204, 20)
- GitHub Check: linux_ubuntu
- GitHub Check: build_debug
🔇 Additional comments (3)
Core/include/Acts/Surfaces/BoundaryTolerance.hpp (3)
110-118
: Strong with encapsulation, this code is!Private variant and explicit constructor, good practices they are. Implementation details, hidden well they are.
169-178
: Wise changes to method signatures, these are!Consistent with new parameter types, these changes are. Efficient with const references and optional wrapper, the code remains.
Line range hint
1-211
: Strong architectural foundation, this refactor builds!A well-structured boundary system, created you have. Through static factory methods and encapsulated parameters, clear intent flows. Documentation for migration guide, consider adding you should, as breaking changes these are.
Run this command to find usages that need migration:
✅ Verification successful
Safe and sound, the boundary system is! Hmmmm.
Through the Force, searched the codebase I have. No direct struct instantiations found were. Factory methods, all code uses properly. Migration guide needed not, for clean the implementation is.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Find direct struct instantiations that need migration to factory methods rg -l "BoundaryTolerance::(Infinite|None|AbsoluteBound|AbsoluteCartesian|AbsoluteEuclidean|Chi2Bound)\{"Length of output: 106
Script:
#!/bin/bash # Search for parameter struct names and potential direct usage echo "=== Searching for parameter struct usages ===" rg "InfiniteParams|NoneParams|AbsoluteBoundParams|AbsoluteCartesianParams|AbsoluteEuclideanParams|Chi2BoundParams" echo -e "\n=== Searching for BoundaryTolerance constructor usage ===" rg "BoundaryTolerance\s*\(" echo -e "\n=== Searching for BoundaryTolerance instantiations ===" rg "BoundaryTolerance\s*\{"Length of output: 7320
Quality Gate passedIssues Measures |
This PR makes the
BoundaryTolerance
constructors explicit. The API is largely preserved through factory functions with the original names of the boundary tolerance implementation structs that were previously auto-convertible.--- END COMMIT MESSAGE ---
Any further description goes here, @-mentions are ok here!
feat
,fix
,refactor
,docs
,chore
andbuild
types.Summary by CodeRabbit
Refactor
BoundaryTolerance
class internal representation.Style
These changes enhance the internal structure of the
BoundaryTolerance
class while preserving its existing functionality.