feat: muon buckets sector frame + bucket splitting#5229
Open
davidedicroce wants to merge 11 commits intoacts-project:mainfrom
Open
feat: muon buckets sector frame + bucket splitting#5229davidedicroce wants to merge 11 commits intoacts-project:mainfrom
davidedicroce wants to merge 11 commits intoacts-project:mainfrom
Conversation
dimitra97
reviewed
Mar 10, 2026
Examples/Algorithms/Digitization/src/MuonSpacePointDigitizer.cpp
Outdated
Show resolved
Hide resolved
dimitra97
reviewed
Mar 10, 2026
Examples/Detectors/GeoModelDetector/src/GeoModelMuonMockupBuilder.cpp
Outdated
Show resolved
Hide resolved
Examples/Detectors/GeoModelDetector/src/GeoModelMuonMockupBuilder.cpp
Outdated
Show resolved
Hide resolved
...tectors/GeoModelDetector/include/ActsExamples/GeoModelDetector/GeoModelMuonMockupBuilder.hpp
Outdated
Show resolved
Hide resolved
|
Contributor
junggjo9
reviewed
Mar 31, 2026
| double rpcDeadTime{50. * Acts::UnitConstants::ns}; | ||
|
|
||
| /// @brief Maximum longitudinal extent of a bucket in the common sector frame | ||
| double bucketMaxWindow{800. * Acts::UnitConstants::mm}; |
Contributor
There was a problem hiding this comment.
Suggested change
| double bucketMaxWindow{800. * Acts::UnitConstants::mm}; | |
| double bucketMaxWindow{80. * Acts::UnitConstants::cm}; |
Comment on lines
+73
to
+75
| double bucketNeighborWindow{200. * Acts::UnitConstants::mm}; | ||
| /// @brief Tail overlap copied from the previous bucket into the next one | ||
| double bucketOverlapWindow{100. * Acts::UnitConstants::mm}; |
Contributor
There was a problem hiding this comment.
Suggested change
| double bucketNeighborWindow{200. * Acts::UnitConstants::mm}; | |
| /// @brief Tail overlap copied from the previous bucket into the next one | |
| double bucketOverlapWindow{100. * Acts::UnitConstants::mm}; | |
| double bucketNeighborWindow{20. * Acts::UnitConstants::cm}; | |
| /// @brief Tail overlap copied from the previous bucket into the next one | |
| double bucketOverlapWindow{10. * Acts::UnitConstants::cm}; |
| #include <algorithm> | ||
| #include <cmath> | ||
| #include <format> | ||
| #include <iterator> |
Contributor
There was a problem hiding this comment.
Suggested change
| #include <iterator> |
|
|
||
| inline double bucketSigmaZ(const MuonSpacePoint& sp, | ||
| const double sigmaScale = 1.) { | ||
| const auto cov = sp.covariance(); |
Contributor
There was a problem hiding this comment.
Suggested change
| const auto cov = sp.covariance(); | |
| const& auto cov = sp.covariance(); |
| const double var0 = cov[0]; | ||
| const double var1 = cov[1]; | ||
| const double maxVar = std::max({0., var0, var1}); | ||
| return sigmaScale * std::sqrt(maxVar); |
Contributor
There was a problem hiding this comment.
Wait that's a bit edgy. The variances describe the measurement's uncertainty in x and y. How does this relate?
Comment on lines
+132
to
+133
| if (trackingGeometry.findVolume(volId) != nullptr) { | ||
| return volId; |
Contributor
There was a problem hiding this comment.
How is it possible that an invalid volume identifier is in the list?
| MuonSpacePointCalibrator::Config calibCfg{}; | ||
| m_cfg.calibrator = | ||
| std::make_unique<MuonSpacePointCalibrator>(calibCfg, logger().clone()); | ||
| std::make_shared<MuonSpacePointCalibrator>(calibCfg, logger().clone()); |
Contributor
There was a problem hiding this comment.
Suggested change
| std::make_shared<MuonSpacePointCalibrator>(calibCfg, logger().clone()); | |
| std::make_unique<MuonSpacePointCalibrator>(calibCfg, logger().clone()); |
Comment on lines
+85
to
+90
| if (a.geometryId().layer() != b.geometryId().layer()) { | ||
| return a.geometryId().layer() < b.geometryId().layer(); | ||
| } | ||
| if (a.localPosition().z() != b.localPosition().z()) { | ||
| return a.localPosition().z() < b.localPosition().z(); | ||
| } |
Contributor
There was a problem hiding this comment.
Suggested change
| if (a.geometryId().layer() != b.geometryId().layer()) { | |
| return a.geometryId().layer() < b.geometryId().layer(); | |
| } | |
| if (a.localPosition().z() != b.localPosition().z()) { | |
| return a.localPosition().z() < b.localPosition().z(); | |
| } | |
| if (a.localPosition().z() != b.localPosition().z()) { | |
| return a.localPosition().z() < b.localPosition().z(); | |
| } |
| } | ||
| return a.value() < b.value(); | ||
| }); | ||
| sortedIds.erase(std::unique(sortedIds.begin(), sortedIds.end()), |
Contributor
There was a problem hiding this comment.
Suggested change
| sortedIds.erase(std::unique(sortedIds.begin(), sortedIds.end()), | |
| sortedIds.erase(std::ranges::unique(sortedIds), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



This MR introduces sector-based muon bucketization for the GeoModel mockup workflow and aligns the mockup geometry IDs so digitization can consistently resolve a common sector frame.
1. MuonSpacePointDigitizer:
2. GeoModelMuonMockupBuilder:
3. Examples/Scripts/Python/geomodel_G4.py:
4. Examples/Detectors/MuonSpectrometerMockupDetector/src/GeoMuonMockupExperiment.cpp:
5. Python/Examples/src/Digitization.cpp:
@dimitra97 @junggjo9