Conversation
Adds the Acts::TrackingGeometry that an ACTS-based reconstruction needs, built
from the TGeo geometry O2 already has live in memory. ACTS stays an optional
dependency: without it these packages produce no targets.
O2::ACTSInterface (Detectors/ACTS/interface), no DPL dependency:
- TrackingGeometryManager, a lazily-built process-wide provider following the
o2::base::Propagator::Instance() / GeometryTGeo::Instance() pattern. It
fetches nothing itself; callers make gGeoManager available first, normally
by declaring GRPGeomRequest::Aligned.
- ITrackingGeometryBuilder, the detector-specific seam, plus the element store
the geometry does not own but depends on.
- SurfaceIndexMap, the O2 sensor <-> ACTS surface lookup.
- MagneticFieldAdapter, an Acts::MagneticFieldProvider over the O2 field.
O2::ACTSWorkflow (Detectors/ACTS/workflow): ActsGeometryService, the same
provider reachable through the DPL ServiceRegistry with ServiceKind::DeviceGlobal.
O2::ALICE3ACTS (Detectors/Upgrades/ALICE3/ACTS): the Gen3 Blueprint builder,
ported from actsO2 ActsAlgorithms/Geometry/src/ALICE3Gen3Geometry.cpp. The
construction logic is unchanged so the geometry identifiers stay compatible with
the standalone chain's material maps and digitisation/seeding configs; verified
by decorating an O2-built geometry with actsO2's own material map. Differences
from the original: it reads a TGeoManager handed in by the caller instead of
importing a ROOT file, and its process-lifetime static stores became member
state so several builders can coexist in one process.
Sensors are identified by the TGeo node the surface was built from, not by
position. A transform is not an identity: the vertex-detector petals are tube
segments, so the three layers of a petal share both origin and rotation and
differ only in radius, which the O2 matrix cache does not carry. Position-only
matching is kept as a fallback and reports such cases as ambiguous instead of
assigning them arbitrarily.
macros/run_test.sh generates an ALICE 3 geometry with o2-sim and checks every
TRK chip against its ACTS surface; config/gen3_geometry_config.json is the
matching geometry description.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Adds the Acts::TrackingGeometry that an ACTS-based reconstruction needs, built from the TGeo geometry O2 already has live in memory. ACTS stays an optional dependency: without it these packages produce no targets.
O2::ACTSInterface (Detectors/ACTS/interface), no DPL dependency:
O2::ACTSWorkflow (Detectors/ACTS/workflow): ActsGeometryService, the same provider reachable through the DPL ServiceRegistry with ServiceKind::DeviceGlobal.
O2::ALICE3ACTS (Detectors/Upgrades/ALICE3/ACTS): the Gen3 Blueprint builder, ported from actsO2 ActsAlgorithms/Geometry/src/ALICE3Gen3Geometry.cpp. The construction logic is unchanged so the geometry identifiers stay compatible with the standalone chain's material maps and digitisation/seeding configs; verified by decorating an O2-built geometry with actsO2's own material map. Differences from the original: it reads a TGeoManager handed in by the caller instead of importing a ROOT file, and its process-lifetime static stores became member state so several builders can coexist in one process.
Sensors are identified by the TGeo node the surface was built from, not by position. A transform is not an identity: the vertex-detector petals are tube segments, so the three layers of a petal share both origin and rotation and differ only in radius, which the O2 matrix cache does not carry. Position-only matching is kept as a fallback and reports such cases as ambiguous instead of assigning them arbitrarily.
macros/run_test.sh generates an ALICE 3 geometry with o2-sim and checks every TRK chip against its ACTS surface; config/gen3_geometry_config.json is the matching geometry description.
@njacazio