Project
Loading...
Searching...
No Matches
o2::acts Namespace Reference

Classes

class  ActsGeometryService
 
class  ITrackingGeometryBuilder
 
class  MagneticFieldAdapter
 
class  SurfaceIndexMap
 
class  TrackingGeometryManager
 
struct  TrackingGeometryOutput
 

Typedefs

using SensorPathProvider = std::function< std::string(int sensorID)>
 Full TGeo node path of one sensor, e.g. o2::trk::GeometryTGeo::getMatrixPath().
 

Functions

SurfaceIndexMap makeSurfaceIndex (const Acts::TrackingGeometry &geometry, const Acts::GeometryContext &gctx, const o2::detectors::DetMatrixCache &cache, double toleranceCm=1e-3, SensorPathProvider pathProvider={})
 
o2::framework::ServiceSpec actsGeometryServiceSpec ()
 
std::vector< o2::framework::ServiceSpec > defaultServicesWithActsGeometry ()
 

Typedef Documentation

◆ SensorPathProvider

using o2::acts::SensorPathProvider = typedef std::function<std::string(int sensorID)>

Full TGeo node path of one sensor, e.g. o2::trk::GeometryTGeo::getMatrixPath().

Definition at line 91 of file SurfaceIndexMap.h.

Function Documentation

◆ actsGeometryServiceSpec()

ServiceSpec o2::acts::actsGeometryServiceSpec ( )

ServiceSpec for ActsGeometryService, to be put into DataProcessorSpec::requiredServices.

Definition at line 55 of file ActsGeometryService.cxx.

◆ defaultServicesWithActsGeometry()

std::vector< ServiceSpec > o2::acts::defaultServicesWithActsGeometry ( )

CommonServices::defaultServices() plus the ACTS geometry service. Use as the requiredServices of a DataProcessorSpec that wants registry access.

Definition at line 72 of file ActsGeometryService.cxx.

◆ makeSurfaceIndex()

SurfaceIndexMap o2::acts::makeSurfaceIndex ( const Acts::TrackingGeometry &  geometry,
const Acts::GeometryContext &  gctx,
const o2::detectors::DetMatrixCache &  cache,
double  toleranceCm = 1e-3,
SensorPathProvider  pathProvider = {} 
)

Build the sensor <-> surface index.

Two strategies, and which one is used matters:

  • **With pathProvider (exact, preferred).** Each sensor is resolved to its TGeo node and matched against the node every ACTS surface was built from (ActsPlugins::TGeoDetectorElement::tgeoNode()). This is an identity, not a measurement, so it cannot mis-assign. Repeated placements of one volume share a node and are separated by their accumulated global transform.
  • Without it (geometric fallback). Sensors are matched on their local-to-global transform. Exact where a transform identifies a sensor, but it does not always: an ALICE 3 vertex-detector petal is a tube segment, so all three of its layers share one origin and one rotation and differ only in radius, which the matrix cache does not carry. Such sensors are reported as ambiguous rather than assigned arbitrarily.

Both read the same TGeo tree that the surfaces were built from, so a successful match is exact rather than approximate; toleranceCm only guards floating-point round-trips.

Parameters
geometrythe constructed tracking geometry
gctxcontext used to evaluate the surface transforms
cachedetector geometry helper; requires a filled L2G cache (call fillMatrixCache(bit2Mask(o2::math_utils::TransformType::L2G)))
toleranceCmmatching tolerance, in O2 units (cm)
pathProvideroptional TGeo path lookup, as described above
Exceptions
std::runtime_errorif a sensor cannot be matched, if a match is ambiguous, or if two sensors would claim the same surface

Definition at line 298 of file SurfaceIndexMap.cxx.