ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk Namespace Reference

The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout geometry to cache the final transformations of the sensor surfaces associated to one particular detector technology (Pixel, Sct, etc.). More...

Namespaces

namespace  detail
 Hash functions to pack the source link into unordered_maps / unordered_sets.
namespace  Cache
namespace  ParticleHypothesis
namespace  details
namespace  traits
namespace  ScoreBasedSolverCutsImpl

Classes

class  MuonBlueprintNodeBuilder
 Helper class to build a Blueprint node of the muon system. More...
class  ActsMuonTrackingGeometryTest
 Extrapolation test for the ActsMuonTrackingGeometry for gen3. More...
class  AlignStoreProviderAlg
class  DetectorAlignCondAlg
class  GeometryContextAlg
class  CaloExtensionAlg
 The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and propagates them to the exit portal of the calorimeter tracking volume. More...
class  TrackContainerReader
class  PixelClusterDataPreparationAlg
class  PixelClusterCacheDataPreparationAlg
class  StripClusterDataPreparationAlg
class  StripClusterCacheDataPreparationAlg
class  HgtdClusterDataPreparationAlg
class  SpacePointDataPreparationAlg
class  SpacePointCacheDataPreparationAlg
struct  CellTmpl
 Definition of a cell to be used by the in-place clusterization. More...
struct  CellContainer
 temporary cell container suitable for the in-place clusterization More...
class  ClusterizationAlg
class  DataPreparationAlg
struct  HgtdAuxDataCache
class  RDOCollectionAdapter< PhaseIIPixelRawDataContainer >
class  RDOAdapter
class  RDOAdapter< PixelRDO_Container >
class  RDOAdapter< PhaseIIPixelRawDataContainer >
class  PixelSpacePointFormationAlgBase
class  RDOCollectionAdapter
class  StripSpacePointFormationAlgBase
 This version of StripSpacePointFormationAlgBase uses xAOD strip clusters to find space points in the ITk strip detectors. More...
class  HgtdClusteringTool
class  HgtdClusterizationAlg
class  HgtdTimedClusteringTool
class  PhaseIIPixelClusterizationAlg
class  PhaseIIPixelCacheClusterizationAlg
class  PixelClusteringToolImpl
class  PixelClusteringTool
class  PhaseIIPixelClusteringTool
class  PixelClusterizationAlg
class  PixelCacheClusterizationAlg
class  PixelSpacePointFormationAlg
 This version of PixelSpacePointFormationAlg uses xAOD pixel clusters to find space points in the ITk pixeldetectors. More...
class  PixelCacheSpacePointFormationAlg
class  PixelSpacePointFormationTool
 Tool to produce pixel space points. More...
struct  StripAuxDataCache
class  StripClusteringTool
class  StripClusterizationAlg
class  StripCacheClusterizationAlg
class  StripInformationHelper
class  StripSpacePointFormationAlg
class  StripCacheSpacePointFormationAlg
class  StripSpacePointFormationTool
class  AuxiliaryMeasurementHandler
 Utility class to handle the creation of the Auxiliary measurement used in an Acts track fit This class declares the additionally written xAOD::AuxiliaryMeasurementContainers to the AvalancheScheduler. More...
class  CaloExtension
 The CaloExtension holds the ID extrapolation states through the calorimeter and the associated CaloClusters. More...
class  ContextUtility
 Utility class to handle the three contexts neeeded in an ACTS reconstruction job 1) GeometryContext -> handles the aligned transforms of the Surfaces & volumes 2) MagneticFieldContext -> Contains the magnetic field 3) CalibrationContext -> Pipes the StoreGate access through the Acts caller chain The utility class declares the data dependencies on the needed conditions by calling the declareProperty on its client. More...
class  MeasurementToTruthParticleAssociation
class  MutableMultiTrajectory
 Athena implementation of ACTS::MultiTrajectory (ReadWrite version) The data is stored in 4 external backends. More...
class  MultiTrajectory
 Read only version of MTJ The implementation is separate as the details are significantly different and in addition only const methods are ever needed. More...
struct  DataLinkHolder
class  PersistentTrackContainer
struct  MutablePersistentTrackContainer
class  PrepRawDataAssociation
struct  ProtoTrack
struct  SpacePointRange
struct  Seed
struct  SeedContainer
class  TrackContainer
class  IndexingPolicy
class  MutableTrackContainerHandlesHelper
class  ConstTrackContainerHandlesHelper
struct  TrackContainerUtils
 Convenience struct which defines track augmentations. More...
class  TrackSummaryContainer
class  MutableTrackSummaryContainer
class  HitCounterArray
class  HitCountsPerTrack
 Container for hit counts per track Contains hit counts per associated truth particle and the total hit counts As last element in the container. More...
class  TrackToTruthParticleAssociation
class  ActsToTrkConverterTool
class  ActsToTrkConvertorAlg
class  ActsToTrkFitterWrapTool
 Tool wrapping an ACTS track fitter tool to expose the Trk::ITrackFitter interface. More...
class  ActsToXAODTrackConverterAlg
 Conversion algorithm to transform the Acts track container into an xAOD track container which can be persitified in an ESD. More...
class  GeometryRealmConvTool
 Implementation of the IGeometryRealmConvTool. More...
class  SeedToTrackCnvAlg
class  TrackToTrackParticleCnvAlg
 Conversion algorithm to translate multiple transient Acts track containers to an xAOD track particle container. More...
class  TrackToTrackParticleCnvTool
class  TrkToActsConvertorAlg
 Algorithm convert Trk::Track to ACTS multistate objects. More...
class  xAODtoTrkConverterAlg
 Algorithm that converts the Acts::Tracks from which the xAOD::TrackParticle is made into a Trk::Track object and fills the trackLink of the xAOD::TrackParticle. More...
class  ActsVolumeIdToDetectorElementCollectionMap
struct  DetectorElementToActsGeometryIdMap
class  ActsVolumeIdToDetectorElementCollectionMappingAlg
class  BeamPipeBlueprintNodeBuilder
 Helper class to build the BeamPipe Blueprint node It adds the beam pipe as a node to the Blueprint. More...
class  CaloBlueprintNodeBuilder
 Builds the Calo Blueprint Node. More...
class  ExtrapolationTool
class  HgtdBlueprintNodeBuilder
 Helper class to build the HgtdBlueprint node It adds the system as a node to the Blueprint. More...
class  ItkBlueprintNodeBuilder
 Helper class to build the ItkBlueprint node It adds the system as a node to the Blueprint. More...
class  ITkMaterialDecoratorTool
 Mutable tracking geometry visitor to load the material on the tracking surfaces inside the ITk. More...
class  TrackingGeoAlignVisitor
 TrackingGeometryVisitor to load the aligned surface and volume transforms into the DetectorAlignStore of a given subdetector. More...
class  TrackingGeometrySvc
class  WriteTrackingGeometry
 Algorithm that uses the Acts JSON plugin to dump the tracking geometry into a JSON format which can be read back by Acts Standalone. More...
class  DetectorAlignStore
class  GeometryContext
class  IBlueprintNodeBuilder
 Interface for the Blueprint node builder This interface is used to build a Blueprint node for the Acts tracking geometry. More...
class  IDetectorElement
 ATLAS interface of a detector element. More...
class  IExtrapolationTool
 Tool to extrapolate bound track parameters through the Acts::TrackingGeometry. More...
class  IGeometryRealmConvTool
 Interface for the conversion tool to translate the surface and track parameter objects between the Acts & the ATLAS Trk realm. More...
class  IRefineTrackingGeoTool
 Interface to pass mutable TrackingGeometry visitors to the built tracking geometry before the geometry is becoming a const object. More...
class  ISurfacePlacement
 Extension of the interface of the Acts::SurfacePlacementBase for ATLAS. More...
class  ITrackingGeometrySvc
 Interface class for the ATLAS service providing the ActsTrackingGeometry. More...
class  IVolumePlacement
 ATLAS extension of the VolumePlacementBase interface. More...
class  SurfacePlacement
 : Helper class to assign a @Acts::SurfacePlacementBase to the Acts::Surfaces in order to make them alignable. More...
class  AlignableGeoPositioning
class  IReadoutSurfacePositioning
 Interface extension for caches used to hold the transforms of surfaces from the readout geometry. More...
class  ReadoutSurfacePositioning
 Extension to handle the caching process of the transform held by the cache. More...
class  VolumePlacement
 Implementation to make a (tracking) volume alignable. More...
class  CUDAClusterizationAlgProviderTool
 Tool providing CUDA-based traccc clusterization and measurement sorting algorithms. More...
class  CUDASPFormationAlgProviderTool
 Tool providing CUDA-based traccc spacepoint formation algorithm. More...
class  DeviceClusterizationAlg
 Algorithm executing traccc clusterization and measurement sorting on the GPU. More...
class  DeviceSPFormationAlg
 Algorithm executing traccc (pixel) spacepoint formation on the GPU. More...
class  IDeviceClusterizationAlgProviderTool
class  IDeviceSPFormationAlgProviderTool
class  PhaseIIRDOtoTracccCellConverterAlg
 Converts Pixel and Strip PhaseII RDO container into Traccc cells, the input to the Acts GPU reconstruction chain. More...
class  RDOtoTracccCellConverterAlg
 Converts Pixel and Strip RDO container into Traccc cells, the input to the Acts GPU reconstruction chain. More...
struct  RDOtoTracccCellConverterCommons
 This struct contains the components common to RDOtoTracccCellConverterAlg and PhaseIIRDOtoTracccCellConverterAlg. More...
class  TracccCellValidationAlg
 Algo that compares two traccc silicon_cell_collection. More...
class  TracccMeasurementConverterAlg
 Algorithm converting traccc measurements (device buffer) to xAOD clusters (host container). More...
class  JSONDeviceDetectorDescriptionProviderSvc
 Service providing device detector description from JSON files. More...
class  IDeviceDetectorDescriptionProviderSvc
class  IMaterialWriterTool
 Interface definition for material writing. More...
class  MaterialMapping
 Reads the MaterialTracks and produces the material maps for the Tracking Geometry. More...
class  MaterialTrackReader
 Writes out RecordedMaterialTrackCollection to a root file. More...
class  MaterialTrackRecorder
 Collects the G4 steps and writes out RecordedMaterialTrackCollection to a store gate. More...
class  MaterialTrackRecorderTool
class  MaterialTrackWriter
 Writes out RecordedMaterialTrackCollection to a root file. More...
class  MaterialValidation
 Reads the MaterialTracks and produces the material maps for the Tracking Geometry. More...
class  RootMaterialWriterTool
 Material decorator from Root format. More...
class  ActsClusterComparisonAlg
class  ActsInspectTruthContentAlg
class  EstimatedTrackParamsAnalysisAlg
class  ExtrapolationTestAlg
class  HgtdClusterAnalysisAlg
class  HgtdClusterValidationPlots
class  ITkAlignMonResidualsAlg
class  PhysValTool
class  PixelClusterAnalysisAlg
class  PixelClusterValidationPlots
class  PixelSpacePointValidationPlots
class  ReadoutGeoDumpAlg
 Algorithm that scans the tracking geometry and dumps the transforms and surface bounds of the individual readout elements into a tree It's used in the context of the validtion of the SQLite workflow applied on data. More...
class  SeedAnalysisAlg
class  SeedsToTrackParamsAlg
class  SeedToTrackAnalysisAlg
class  SpacePointAnalysisAlg
class  StripClusterAnalysisAlg
class  StripClusterValidationPlots
class  StripSpacePointValidationPlots
class  TrackAnalysisAlg
class  TrackParticleAnalysisAlg
class  ActsTrackStateOnSurfaceDecoratorAlg
class  GNNScoreDecoratorAlg
class  MeasurementToTrackParticleDecorationAlg
class  PixelClusterSiHitDecoratorAlg
class  PixelClusterTruthDecoratorAlg
class  StripClusterSiHitDecoratorAlg
class  StripClusterTruthDecoratorAlg
class  GbtsSeedingTool
class  GenericSeedingAlg
class  GridTripletSeedingTool
class  TrackParamsEstimationTool
class  PrdAssociationAlg
class  CaloBasedRoICreatorTool
class  FullScanRoICreatorTool
class  RegionsOfInterestCreatorAlg
class  TestRoICreatorTool
struct  RDOContainerTraits
class  ICellClusteringToolBase
class  IFitterTool
 Generic interface class to fit xAOD::Uncalibrated measurements to (multi)-trajectories. More...
class  IHGTDClusteringTool
class  IHGTDOnBoundStateCalibratorTool
class  IHGTDOnTrackCalibratorTool
class  ClusterCalibratorBase
class  OnBoundStateCalibratorBase
 Base class of a InDet calibrator object. More...
class  IOnBoundStateCalibratorTool
 interface of a tool to create a calibrator for a certain cluster type. More...
class  OnTrackCalibratorBase
class  IOnTrackCalibratorTool
struct  RDOContainerTraits< PhaseIIPixelRawDataContainer >
class  IPhaseIIPixelClusteringTool
struct  RDOContainerTraits< PixelRDO_Container >
class  IPixelClusteringTool
class  IPixelOnBoundStateCalibratorTool
class  IPixelOnTrackCalibratorTool
class  IPixelSpacePointFormationTool
 Base class for pixel space point formation tool. More...
class  IProtoTrackCreatorTool
class  IRoICreatorTool
class  ISeedingTool
class  IStripClusteringTool
class  IStripOnBoundStateCalibratorTool
class  IStripOnTrackCalibratorTool
struct  StripSP
class  IStripSpacePointFormationTool
class  ITrackConverterTool
 ConversionTool between the Acts Track EDM and the Trk::Track EDM. More...
class  ITrackParamsEstimationTool
class  ITrackToTrackParticleCnvTool
 Interface for a tool that converts a single Acts track proxy into an xAOD::TrackParticle. More...
class  AmbiguityResolutionAlg
struct  MeasurementParameterMap
struct  MeasurementCalibrator
class  NNinput
struct  NumberNNoutput
class  PositionNNoutput
class  GaussianSumFitterTool
class  GlobalChiSquareFitterTool
class  HGTDTrackExtensionAlg
class  HGTDTruthTrackDecorationAlg
class  IMeasurementSelector
class  ITkAnalogueClusteringTool
class  ITkNNClusterCalibratorTool
class  ITkStripCalibrationTool
class  KalmanFitterTool
class  ProtoTrackCreationAndFitAlg
class  ProtoTrackReportingAlg
 Very lightweight algorithm to print out the results of the EF track finding. More...
class  RandomProtoTrackCreatorTool
class  ReFitterAlg
class  ScoreBasedAmbiguityResolutionAlg
class  TrackExtensionAlg
class  TrackFindingAlg
class  TrackFindingBaseAlg
class  TrackFindingGNNAlg
class  TrackStatePrinterTool
class  TruthGuidedProtoTrackCreatorTool
class  PixelClusterToTruthAssociationAlg
class  StripClusterToTruthAssociationAlg
class  HgtdClusterToTruthAssociationAlg
class  DummyRDOList
struct  has_rdoList
struct  has_rdoList< Object, std::void_t< rdoListFunc_t< Object > > >
class  MeasurementToTruthAssociationAlg
 Algorithm template to associate measurements of a certain type to a xAOD truth particles using a sim data collection where the sim data collection contains associates RDOs to truth particles and there energy/charge disposition. More...
class  TrackFindingValidationAlg
class  TrackParticleTruthDecorationAlg
class  TrackToTruthAssociationAlg
class  TrackTruthMatchingBaseAlg
class  TruthParticleHitCountAlg
class  HoughVtxFinderTool
class  AdaptiveMultiPriVtxFinderTool
class  IterativePriVtxFinderTool

Typedefs

using CaloExtensionContainer = DataVector<CaloExtension>
using IndexType = std::uint32_t
using ParticleVector = boost::container::small_vector<const xAOD::TruthParticle *, NTruthParticlesPerMeasurement>
using StoredSurface = std::variant<const Acts::Surface*, std::shared_ptr<const Acts::Surface>>
using MutablePersistentTrackBackend = ActsTrk::MutableTrackSummaryContainer
using PersistentTrackBackend = ActsTrk::TrackSummaryContainer
using MutablePersistentTrackStateBackend = ActsTrk::MutableMultiTrajectory
using PersistentTrackStateBackend = ActsTrk::MultiTrajectory
using PersistentTrackContainerBase
typedef std::vector< ActsTrk::ProtoTrackProtoTrackCollection
using TrackBackend = Acts::ConstVectorTrackContainer
using MutableTrackBackend = Acts::VectorTrackContainer
using TrackStateBackend = Acts::ConstVectorMultiTrajectory
using MutableTrackStateBackend = Acts::VectorMultiTrajectory
using TrackContainerBase
using MutableTrackContainer
typedef DataVector< Acts::BoundTrackParameters > BoundTrackParametersContainer
using ConstParameters = Acts::TrackStateTraits<3>::Parameters
using ConstCovariance = Acts::TrackStateTraits<3>::Covariance
using Parameters = Acts::TrackStateTraits<3, false>::Parameters
using Covariance = Acts::TrackStateTraits<3, false>::Covariance
using TruthParticleHitCounts = std::unordered_map<const xAOD::TruthParticle *,HitCounterArray>
using DetectorElementKey = unsigned int
using RecordedMaterialTrackCollection = std::vector<Acts::RecordedMaterialTrack>
using GeoContextReadKey_t = SG::ReadHandleKey<GeometryContext>
 Abrivate the ReadHandleKey to declare the data dependency on the Geometry context.
using HGTDOnBoundStateCalibratorBase = OnBoundStateCalibratorBase<xAOD::HGTDCluster,3>
template<typename traj_t>
using HGTDOnTrackCalibratorBase = OnTrackCalibratorBase<xAOD::HGTDCluster,3, traj_t>
using PixelOnBoundStateCalibratorBase = OnBoundStateCalibratorBase<xAOD::PixelCluster,2>
template<typename traj_t>
using PixelOnTrackCalibratorBase = OnTrackCalibratorBase<xAOD::PixelCluster,2, traj_t>
using StripOnBoundStateCalibratorBase = OnBoundStateCalibratorBase<xAOD::StripCluster,1>
template<typename traj_t>
using StripOnTrackCalibratorBase = OnTrackCalibratorBase<xAOD::StripCluster,1, traj_t>
using AtlUncalibSourceLinkAccessor = detail::UncalibSourceLinkAccessor
using DefaultTrackStateCreator = Acts::TrackStateCreator<ActsTrk::detail::UncalibSourceLinkAccessor::Iterator,detail::RecoTrackContainer>
template<typename Object>
using rdoListFunc_t = decltype(std::declval<Object>().rdoList())

Enumerations

enum  NeighbourIndices {
  ThisOne , Opposite , PhiMinus , PhiPlus ,
  EtaMinus , EtaPlus , nNeighbours
}
 Total number of neightbours and indices. More...
enum class  caloRegion {
  DiscNegativeZ , DiscPositiveZ , CylinderSymmetricZZero , CylinderNegativeZ ,
  CylinderPositiveZ
}
enum class  DetectorType : std::uint8_t {
  Pixel , Sct , Trt , Hgtd ,
  Mdt , Rpc , Tgc , Csc ,
  Mm , sTgc , UnDefined
}
 Simple enum to Identify the Type of the ACTS sub detector. More...
enum class  SystemEnvelope : std::uint8_t { ITkExit , CaloExit , MsExit }
 Define an enumeration to retrieve the envelope tracking volume from. More...
enum class  ClusterTruthOrigin { UNIDENTIFIED = 0 , TRUTH_PARTICLE = 1 , UNRELATED_PARTICLE = 2 , SECONDARY = 3 }

Functions

Acts::CalibrationContext getCalibrationContext (const EventContext &ctx)
 The Acts::Calibration context is piped through the Acts fitters to (re)calibrate the Acts::SourceLinks during the track State upate.
static std::pair< Eigen::Matrix< float, 1, 1 >, Eigen::Matrix< float, 3, 1 > > computePosition (const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > &cluster, const InDetDD::SiDetectorElement &element, const InDetDD::SiDetectorDesign &design, double lorentzShift, bool isITk)
static InDetDD::SiLocalPosition computeCentrePosition (const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > &cluster, const InDetDD::SiDetectorDesign &design)
static float computeRotatedLocalCov (const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > &cluster, float localPos, float localCov, const InDetDD::SiDetectorElement &element, const InDetDD::SiDetectorDesign &design)
const CaloExtensiongetCaloExtension (const xAOD::TrackParticle &track)
 Retrieve a pointer to the CaloExtension linked with the passed TrackParticle.
std::optional< ActsTrk::TrackContainer::ConstTrackProxy > getActsTrack (const xAOD::TrackParticle &trkPart)
 Return the proxy to the Acts track from which the track particle was made frome.
std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > lastMeasurementState (const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
 Returns the track state proxy corresponding to the last measurement on track.
std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > firstMeasurementState (const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
 Returns the track state proxy corresponding to the measurement that is closest to the defining track parameter.
std::optional< Acts::BoundTrackParameters > lastTrackParameters (const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
 Returns the last MeasurementState in form of Acts::BoundTrackParameters.
std::optional< Acts::BoundTrackParameters > firstTrackParameters (const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
 Returns the first MeasurementState in form of Acts::BoundTrackParameters.
DetectorType toDetType (const xAOD::UncalibMeasType mType)
 Converts the uncalibrated measurement type to a detector type.
xAOD::UncalibMeasType toMeasType (const DetectorType dType)
 Conversts the detector type to an uncalibrated measurement type.
Trk::TrackInfo::TrackFitter toTrkFitterType (const xAOD::TrackFitter fType)
 Converts xAOD fitter type to Trk fitter type.
template<typename IFACE, typename AUX>
std::unique_ptr< IFACE > makeInterfaceContainer (const AUX *aux)
 helper to construct interface container for already filled Aux container TODO maybe should be moved to xAOD area
std::string prefixFromTrackContainerName (const std::string &tracks)
 Parse TrackContainer name to get the prefix for backends The name has to contain XYZTracks, the XYZ is returned.
std::unique_ptr< Trk::TrackParametersrotateParams (const Trk::TrackParameters &inPars, const Trk::Surface &target)
DetectorElementKey makeDetectorElementKey (xAOD::UncalibMeasType meas_type, unsigned int identifier_hash)
Acts::GeometryIdentifier getSurfaceGeometryIdOfMeasurement (const DetectorElementToActsGeometryIdMap &detector_element_to_geoid, const xAOD::UncalibratedMeasurement &measurement)
std::ostream & operator<< (std::ostream &ostr, const DetectorType type)
 Pipe the detector type to an outstream object.
std::ostream & operator<< (std::ostream &ostr, const SystemEnvelope type)
 Pipe the Volume envelope to an oustream object.
void encodeSurface (xAOD::TrackSurfaceAuxContainer *backend, size_t index, const Acts::Surface *surface, const Acts::GeometryContext &geoContext)
 Prepares persistifiable representation of surface into xAOD::TrackSurface object.
void encodeSurface (xAOD::TrackSurface *backend, const Acts::Surface *surface, const Acts::GeometryContext &geoContext)
 As above, but works on xAOD::TrackSurface object.
std::shared_ptr< const Acts::Surface > decodeSurface (const xAOD::TrackSurface *backend)
 Creates transient Acts Surface objects given a surface backend implementation should be exact mirror of encodeSurface.
std::shared_ptr< const Acts::Surface > decodeSurface (const xAOD::TrackSurfaceAuxContainer *backend, size_t i)
 As above, but takes data from Aux container at an index i.
void encodeSurface (xAOD::SurfaceType &surfaceType, std::vector< float > &translation, std::vector< float > &rotation, std::vector< float > &boundValues, const Acts::Surface *surface, const Acts::GeometryContext &geoContext)
std::shared_ptr< const Acts::Surface > decodeSurface (const xAOD::SurfaceType surfaceType, const std::vector< float > &translation, const std::vector< float > &rotation, const std::vector< float > &boundValues)
void sort_traccc_soa (traccc::edm::silicon_cell_collection::device &sorted_cells, traccc::edm::silicon_cell_collection::device const &cells)
std::pair< int, int > countPixelStrip (const traccc::edm::measurement_collection::const_device &measurements)
 Count the number of measurements 2D (pixel) vs 1D (strip).
template<typename ClusterT, typename AuxContainerT, typename ContainerT = DataVector<ClusterT>>
std::pair< std::unique_ptr< ContainerT >, std::unique_ptr< AuxContainerT > > makeOutputContainer (const EventContext &ctx, int n)
template<typename MEAS>
void fillStripCluster (const MEAS &meas, const Identifier &athenaId, const SCT_ID *stripID, const InDetDD::SCT_DetectorManager *stripManager, xAOD::StripCluster &xaod_scl, std::size_t combinedIndex)
template<typename MEAS>
void fillPixelCluster (const MEAS &meas, const Identifier &athenaId, const PixelID *pixelID, const InDetDD::PixelDetectorManager *pixelManager, xAOD::PixelCluster &xaod_pcl, std::size_t combinedIndex)
Acts::Logging::Level actsLevelVector (MSG::Level lvl)
MSG::Level athLevelVector (Acts::Logging::Level lvl)
constexpr double energyToActs (const double athenaE)
 Converts an energy scalar from Athena to Acts units.
constexpr double energyToAthena (const double actsE)
 Converts an energy scalar from Acts to Athena units.
constexpr double lengthToActs (const double athenaL)
 Converts a length scalar from Acts to Athena units.
constexpr double lengthToAthena (const double actsL)
 Converts a length scalar from Acts to Athena units.
template<std::floating_point T>
constexpr auto timeToActs (T athenaT)
 Converts a time unit from Athena to Acts units.
template<std::floating_point T>
constexpr double timeToAthena (T actsT)
 Converts a time unit from Acts to Athena units.
template<std::floating_point T>
constexpr auto timeCovToActs (T athenaTCov)
 Converts a time covariance element from Athena to Acts units.
template<std::floating_point T>
constexpr double timeCovToAthena (T actsTCov)
 Converts a time covariance element from Acts to Athena units.
constexpr double velocityToActs (const double athenaV)
 Converts a velocity from Athena to Acts units.
constexpr double accelerationToActs (const double athenaA)
 Converts an acceleration from Athena to Acts units.
Acts::Vector3 convertDirToActs (const Amg::Vector3D &athenaDir)
 Converts a direction vector from athena units into acts units.
Amg::Vector3D convertDirFromActs (const Acts::Vector3 &actsDir)
 Converts a direction vector from acts units into athena units.
Acts::Vector4 convertPosToActs (const Amg::Vector3D &athenaPos, const double athenaTime=0.)
 Converts a position vector & time from Athena units into Acts units.
std::pair< Amg::Vector3D, double > convertPosFromActs (const Acts::Vector4 &actsPos)
 Converts an Acts 4-vector into a pair of an Athena spatial vector and the passed time.
Acts::Vector4 convertMomToActs (const Amg::Vector3D &threeMom, const double mass=0.)
 Converts a three momentum vector from Athena together with the associated particle mass into an Acts four-momentum vector.
std::pair< Amg::Vector3D, double > convertMomFromActs (const Acts::Vector4 &actsMom)
 Converts an Acts four-momentum vector into an pair of an Athena three-momentum and the paritcle's energy.
void matchPixelClusters (std::vector< const xAOD::PixelCluster * > &monitored_list, std::vector< const xAOD::PixelCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::PixelCluster *, const xAOD::PixelCluster * > > &pairs)
void matchStripClusters (std::vector< const xAOD::StripCluster * > &monitored_list, std::vector< const xAOD::StripCluster * > &reference_list, const std::string &module_id, std::vector< std::pair< const xAOD::StripCluster *, const xAOD::StripCluster * > > &pairs)
static std::string atlasSurfaceName (const Acts::Surface *measurement_surface)
static void printHeader (int type, bool extra=false)
static void printVec3 (const Acts::Vector3 &p)
static void printVec3 (const Acts::Vector3 &p, const Acts::Vector3 &cmp, int precision=3)
static void printVec2 (const Acts::Vector2 &p, const char *estimated=nullptr)
static void printVec2 (const Acts::Vector2 &p, const Acts::Vector2 &cmp, const char *estimated=nullptr, int precision=4)
static void printMeasurement (const Acts::GeometryContext &tgContext, const Acts::Surface *surface, const std::tuple< Acts::Vector2, Amg::Vector2D, int, int > &locData, bool compareMeasurementTransforms=false)
static std::tuple< Acts::Vector2, Amg::Vector2D, int, int > localPositionStrip2D (const Acts::GeometryContext &tgContext, const xAOD::UncalibratedMeasurement &measurement, const Acts::Surface *surface, const xAOD::SpacePoint *sp)
template<class T_Cont, class T>
std::vector< SG::WriteDecorHandle< T_Cont, T > > createDecorators (const std::vector< SG::WriteDecorHandleKey< T_Cont > > &keys, const EventContext &ctx)
template<class T_Parent, class T_Cont>
void createDecoratorKeys (T_Parent &parent, const SG::ReadHandleKey< T_Cont > &container_key, const std::string &prefix, const std::vector< std::string > &decor_names, std::vector< SG::WriteDecorHandleKey< T_Cont > > &decor_out)
template<class T>
auto getRDOList (const T &a)
template<class T_TruthEventCollection>
auto makeDepositToTruthParticleMap (const T_TruthEventCollection *truth_particle_links)
template<class T_TruthEventCollection>
const char * getInTruthPropertyName ()
template<class T_SimDataCollection, class T_SimDataIterator>
auto getSimDataDeposits (const T_SimDataCollection &sim_data_collection, T_SimDataIterator sim_data_iter_for_identifier)
template<class T_Deposit>
float getDepositedEnergy (const T_Deposit &)
MsgStream & operator<< (MsgStream &out, const ActsUtils::Stat &stat)

Variables

constexpr double ONE_TWELFTH = 1./12.
constexpr float oneStripSF = 1.1025
constexpr float twoStripSF = 0.0729
constexpr unsigned int NTruthParticlesPerMeasurement = 5
constexpr unsigned int NHitCounter = static_cast< std::underlying_type<xAOD::UncalibMeasType>::type >(xAOD::UncalibMeasType::nTypes)
constexpr unsigned int NTruthParticlesPerTrack = 5
constexpr unsigned int DETELEMENT_TYPE_SHIFT = 28
constexpr unsigned int DETELEMENT_HASH_MASK = ~(1u<<31|1u<<30|1u<<29|1u<<28)
constexpr bool TrackToTruthParticleAssociationDebugHists = false
constexpr bool TrackFindingValidationDebugHists = false
constexpr bool TrackFindingValidationDetailedStat = true
constexpr bool TruthParticleHitCountDebugHists = false

Detailed Description

The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout geometry to cache the final transformations of the sensor surfaces associated to one particular detector technology (Pixel, Sct, etc.).

copied from InDetPhysValMonitoring/src/safeDecorator.h

Put athena Eigen inlcude first.

Includes the GeoPrimitives.

Ensure that the ATLAS eigen extension is included first.

Include the GeoPrimitives which need to be put first.

Put first the GeoPrimitives.

small non-persistent data class to wrap the output of the EF-tracking development pattern finding placeholder

The DetectorAlignCondAlg loads the rigid alignment corrections and pipes them through the readout geometry to cache the final transformations of the sensor surfaces associated to one particular detector technology (Pixel, Sct, etc.).

The transformations are cached in the DetectorAlignmentStore which is later propagated to the GeometryContext.

The DetectorAlignStore is a cache class to hold the aligned surface local->global transforms and the both volume transforms that are associated with an ATLAS sub detector technology. The cache is written such that it can be lazily populated or fully populated at its creation.

The cache is structured in three components: 1) geoModelAlignment: This store contains all information to apply rigid alignment corrections to the ReadoutElement. All readout elements are assoicated with a GeoVPhysVol objects which are positioned in space via a series of GeoTransforms and GeoAlignableTransforms. The latter represent the alignment fix points from which the alignment corrections are applied. GeoModel then aligns all subvolumes according to the deltas 2) trackingAlignment: GeoModel usally does not keep the fully assembled transforms in memory. The actual caching of them is taken over by the trackingAlignment Clients which want to push a transform onto the cache need to draw a unique ticket from the store at construction. This ticket is valid for a given sub detector and can be used to query the cache whether a transform has been already pushed or to ask for the transform itself 3) internalAlignment: Is an empty sub class which is meant to store conditions data to correct the readout geometry for surface deformations (E.g. muon b-lines, as-built)

If the package is loaded in AthSimulation, the Acts library is not avaialble

ActsGeometry context carries all information related to the aboslute positions of the Readout geometry Per detector technology (e.g. Mdt), it contains an ActsTrk::DetectorAlignmentStore which carries pointers to the rigid alignment transfomrations of each FullPhysical volume representing the detector sensor envelope. Further, it carries the transformations for each tracking layer

In AthSimulation, the Acts core library is not available yet

Typedef Documentation

◆ AtlUncalibSourceLinkAccessor

◆ BoundTrackParametersContainer

◆ CaloExtensionContainer

◆ ConstCovariance

using ActsTrk::ConstCovariance = Acts::TrackStateTraits<3>::Covariance

◆ ConstParameters

using ActsTrk::ConstParameters = Acts::TrackStateTraits<3>::Parameters

◆ Covariance

using ActsTrk::Covariance = Acts::TrackStateTraits<3, false>::Covariance

◆ DefaultTrackStateCreator

◆ DetectorElementKey

using ActsTrk::DetectorElementKey = unsigned int

Definition at line 12 of file DetectorElementToActsGeometryIdMap.h.

◆ GeoContextReadKey_t

Abrivate the ReadHandleKey to declare the data dependency on the Geometry context.

Definition at line 64 of file GeometryContext.h.

◆ HGTDOnBoundStateCalibratorBase

◆ HGTDOnTrackCalibratorBase

template<typename traj_t>
using ActsTrk::HGTDOnTrackCalibratorBase = OnTrackCalibratorBase<xAOD::HGTDCluster,3, traj_t>

Definition at line 13 of file IHGTDOnTrackCalibratorTool.h.

◆ IndexType

using ActsTrk::IndexType = std::uint32_t

Definition at line 18 of file Decoration.h.

◆ MutablePersistentTrackBackend

◆ MutablePersistentTrackStateBackend

◆ MutableTrackBackend

using ActsTrk::MutableTrackBackend = Acts::VectorTrackContainer

Definition at line 16 of file TrackContainer.h.

◆ MutableTrackContainer

Initial value:
Acts::TrackContainer<MutableTrackBackend,
Acts::detail::ValueHolder>
Acts::VectorMultiTrajectory MutableTrackStateBackend
Acts::VectorTrackContainer MutableTrackBackend

Definition at line 25 of file TrackContainer.h.

◆ MutableTrackStateBackend

using ActsTrk::MutableTrackStateBackend = Acts::VectorMultiTrajectory

Definition at line 18 of file TrackContainer.h.

◆ Parameters

using ActsTrk::Parameters = Acts::TrackStateTraits<3, false>::Parameters

◆ ParticleVector

Definition at line 17 of file MeasurementToTruthParticleAssociation.h.

◆ PersistentTrackBackend

◆ PersistentTrackContainerBase

◆ PersistentTrackStateBackend

◆ PixelOnBoundStateCalibratorBase

◆ PixelOnTrackCalibratorBase

Definition at line 13 of file IPixelOnTrackCalibratorTool.h.

◆ ProtoTrackCollection

Definition at line 12 of file ProtoTrackCollection.h.

◆ rdoListFunc_t

template<typename Object>
using ActsTrk::rdoListFunc_t = decltype(std::declval<Object>().rdoList())

Definition at line 94 of file MeasurementToTruthAssociationAlg.h.

◆ RecordedMaterialTrackCollection

using ActsTrk::RecordedMaterialTrackCollection = std::vector<Acts::RecordedMaterialTrack>

Definition at line 14 of file RecordedMaterialTrackCollection.h.

◆ StoredSurface

using ActsTrk::StoredSurface = std::variant<const Acts::Surface*, std::shared_ptr<const Acts::Surface>>

Definition at line 65 of file MultiTrajectory.h.

◆ StripOnBoundStateCalibratorBase

◆ StripOnTrackCalibratorBase

Definition at line 13 of file IStripOnTrackCalibratorTool.h.

◆ TrackBackend

using ActsTrk::TrackBackend = Acts::ConstVectorTrackContainer

Definition at line 15 of file TrackContainer.h.

◆ TrackContainerBase

Initial value:
Acts::TrackContainer<TrackBackend,
Acts::detail::ValueHolder>
Acts::ConstVectorTrackContainer TrackBackend
Acts::ConstVectorMultiTrajectory TrackStateBackend

Definition at line 21 of file TrackContainer.h.

◆ TrackStateBackend

using ActsTrk::TrackStateBackend = Acts::ConstVectorMultiTrajectory

Definition at line 17 of file TrackContainer.h.

◆ TruthParticleHitCounts

Definition at line 19 of file TruthParticleHitCounts.h.

Enumeration Type Documentation

◆ caloRegion

enum class ActsTrk::caloRegion
strong
Enumerator
DiscNegativeZ 
DiscPositiveZ 
CylinderSymmetricZZero 
CylinderNegativeZ 
CylinderPositiveZ 

Definition at line 28 of file CaloBlueprintNodeBuilder.h.

◆ ClusterTruthOrigin

enum class ActsTrk::ClusterTruthOrigin
strong
Enumerator
UNIDENTIFIED 
TRUTH_PARTICLE 
UNRELATED_PARTICLE 
SECONDARY 

Definition at line 35 of file HGTDTruthTrackDecorationAlg.h.

35 {
36 UNIDENTIFIED = 0, // ITk track is not associated with a truth particle, so not identified
37 TRUTH_PARTICLE = 1, // originates from the tested truth particle
38 UNRELATED_PARTICLE = 2, // originates from a particle that is unrelated to the ITk track
39 SECONDARY = 3 // originates from some secondary interaction
40 };

◆ DetectorType

enum class ActsTrk::DetectorType : std::uint8_t
strong

Simple enum to Identify the Type of the ACTS sub detector.

Enumerator
Pixel 

Inner detector legacy.

Sct 
Trt 
Hgtd 
Mdt 

MuonSpectrometer.

Rpc 

Monitored Drift Tubes.

Tgc 

Resitive Plate Chambers.

Csc 

Thin gap champers.

Mm 

Maybe not needed in the migration.

sTgc 

Micromegas (NSW).

UnDefined 

Small Thing Gap chambers (NSW).

Definition at line 25 of file GeometryDefs.h.

25 : std::uint8_t {
27 Pixel,
28 Sct,
29 Trt,
30 Hgtd,
32 Mdt,
33 Rpc,
34 Tgc,
35 Csc,
36 Mm,
37 sTgc,
39 };
@ Mm
Maybe not needed in the migration.
@ Tgc
Resitive Plate Chambers.
@ sTgc
Micromegas (NSW).
@ Rpc
Monitored Drift Tubes.
@ Csc
Thin gap champers.
@ Mdt
MuonSpectrometer.
@ UnDefined
Small Thing Gap chambers (NSW).
@ Pixel
Definition DetType.h:13

◆ NeighbourIndices

Total number of neightbours and indices.

Enumerator
ThisOne 
Opposite 
PhiMinus 
PhiPlus 
EtaMinus 
EtaPlus 
nNeighbours 

Definition at line 13 of file StripInformationHelper.h.

◆ SystemEnvelope

enum class ActsTrk::SystemEnvelope : std::uint8_t
strong

Define an enumeration to retrieve the envelope tracking volume from.

Enumerator
ITkExit 
CaloExit 
MsExit 

Definition at line 42 of file GeometryDefs.h.

42 : std::uint8_t {
43 ITkExit, // Envelope volume of the ITk
44 CaloExit, // Enevelope volume of the Calorimeter / Ms entrance
45 MsExit // Envelope around the Muon system
46 };

Function Documentation

◆ accelerationToActs()

double ActsTrk::accelerationToActs ( const double athenaA)
inlineconstexpr

Converts an acceleration from Athena to Acts units.

Parameters
athenaAAcceleration to convert

Definition at line 90 of file UnitConverters.h.

90 {
91 return athenaA / Acts::square(timeToActs(1.));
92 }
constexpr auto timeToActs(T athenaT)
Converts a time unit from Athena to Acts units.

◆ actsLevelVector()

Acts::Logging::Level ActsTrk::actsLevelVector ( MSG::Level lvl)

Definition at line 9 of file LoggerUtils.cxx.

9 {
10 // MSG::NIL and MSG::ALWAYS are not available in Acts. Need to protect against these
11 // For MSG::NIL we can return a Acts::Logging::Level::FATAL;
12 // For MSG::ALWAYS we can return a Acts::Logging::Level::VERBOSE
13
14 // Gaudi definitions are +1 w.r.t. Acts definitions
15 static const std::array<Acts::Logging::Level, 8> actsLevelVector{
16 Acts::Logging::Level::FATAL, // MSG::NIL
17 Acts::Logging::Level::VERBOSE,
18 Acts::Logging::Level::DEBUG,
19 Acts::Logging::Level::INFO,
20 Acts::Logging::Level::WARNING,
21 Acts::Logging::Level::ERROR,
22 Acts::Logging::Level::FATAL,
23 Acts::Logging::Level::VERBOSE // MSG::ALWAYS
24 };
25
26 return actsLevelVector[static_cast<int>(lvl)];
27 }
Acts::Logging::Level actsLevelVector(MSG::Level lvl)

◆ athLevelVector()

MSG::Level ActsTrk::athLevelVector ( Acts::Logging::Level lvl)

Definition at line 29 of file LoggerUtils.cxx.

29 {
30 // All Acts log levels are available in Gaudi, no need for protections
31 static const std::array<MSG::Level, 6> athLevelVector{
32 MSG::VERBOSE,
33 MSG::DEBUG,
34 MSG::INFO,
35 MSG::WARNING,
36 MSG::ERROR,
37 MSG::FATAL
38 };
39 return athLevelVector[static_cast<int>(lvl)];
40 }
MSG::Level athLevelVector(Acts::Logging::Level lvl)

◆ atlasSurfaceName()

std::string ActsTrk::atlasSurfaceName ( const Acts::Surface * measurement_surface)
static

Definition at line 92 of file TrackStatePrinterTool.cxx.

93 {
94 if (measurement_surface) {
95 const auto* acts_detector_element = getActsDetectorElement(measurement_surface);
96 if (acts_detector_element) {
97 const InDetDD::SiDetectorElement *detElem = dynamic_cast< const InDetDD::SiDetectorElement *>(acts_detector_element->upstreamDetectorElement());
98 if (detElem) {
99 if (auto idHelper = detElem->getIdHelper())
100 {
101 auto name = idHelper->show_to_string(detElem->identify());
102 if (name.size() >= 2 && name[0] == '[' && name[name.size() - 1] == ']')
103 {
104 return name.substr(1, name.size() - 2);
105 }
106 else
107 {
108 return name;
109 }
110 }
111 }
112 }
113 }
114 return {};
115 }
const ActsDetectorElement * getActsDetectorElement(const Acts::Surface &surf)
Attempts to retrieve the ActsDetectorElement associated to the passed ActsSurface.
Class to hold geometrical description of a silicon detector element.
virtual Identifier identify() const override final
identifier of this detector element (inline)
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline).

◆ computeCentrePosition()

Definition at line 254 of file StripClusteringTool.cxx.

256{ // For Inner Detector SCT, compute the local position of the cluster center using the strip positions.
257 InDetDD::SiCellId frontId = cluster.front().coordinates()[0];
258 InDetDD::SiLocalPosition pos = design.localPositionOfCell(frontId);
259 if (cluster.size() > 1) {
260 InDetDD::SiCellId backId = cluster.back().coordinates()[0];
261 InDetDD::SiLocalPosition backPos = design.localPositionOfCell(backId);
262 pos = 0.5 * (pos + backPos);
263 }
264 return pos;
265}
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const =0
readout or diode id -> position.
Identifier for the strip or pixel cell.
Definition SiCellId.h:29
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...

◆ computePosition()

std::pair< Eigen::Matrix< float, 1, 1 >, Eigen::Matrix< float, 3, 1 > > ActsTrk::computePosition ( const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > & cluster,
const InDetDD::SiDetectorElement & element,
const InDetDD::SiDetectorDesign & design,
double lorentzShift,
bool isITk )
static

Definition at line 218 of file StripClusteringTool.cxx.

223{
224
225
226 InDetDD::SiCellId frontId = cluster.front().coordinates()[0];
227 InDetDD::SiLocalPosition pos = design.localPositionOfCell(frontId);
228 if (cluster.size()>1) {
229 InDetDD::SiCellId backId = cluster.back().coordinates()[0];
231 design.localPositionOfCell(backId);
232 pos = 0.5 * (pos + backPos);
233 }
234
235 // update the xPhi position
236 pos.xPhi( pos.xPhi() + lorentzShift );
237 // @TODO use local to global of Acts surface instead
238 Eigen::Matrix<float,3,1> posG(element.surface().localToGlobal(pos).cast<float>());
239
240 if ((not element.isBarrel()) and isITk) {
241 assert(dynamic_cast<const InDetDD::StripStereoAnnulusDesign*>(&design) != nullptr);
242 const InDetDD::StripStereoAnnulusDesign& annulusDesign =
243 static_cast<const InDetDD::StripStereoAnnulusDesign&>
244 (design);
245 pos = annulusDesign.localPositionOfCellPC(element.cellIdOfPosition(pos));
246 }
247
248 return std::make_pair(Eigen::Matrix<float,1,1>(pos.xPhi()),
249 std::move(posG));
250}
SiCellId cellIdOfPosition(const Amg::Vector2D &localPos) const
As in previous method but returns SiCellId.
Trk::Surface & surface()
Element Surface.
SiLocalPosition localPositionOfCellPC(const SiCellId &cellId) const
This is for debugging only.
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const =0
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.

◆ computeRotatedLocalCov()

float ActsTrk::computeRotatedLocalCov ( const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > & cluster,
float localPos,
float localCov,
const InDetDD::SiDetectorElement & element,
const InDetDD::SiDetectorDesign & design )
static

Definition at line 268 of file StripClusteringTool.cxx.

273{ // For Inner Detector SCT, in the case of endcap modules, rotate the local covariance to account for the stereo angle.
274 const bool rotate = (design.shape() == InDetDD::Trapezoid || design.shape() == InDetDD::Annulus);
275 if (!rotate) {
276 return localCov;
277 }
278
279 const auto* sctDesign = dynamic_cast<const InDetDD::SCT_ModuleSideDesign*>(&design);
280 if (sctDesign == nullptr) {
281 return localCov;
282 }
283
284 const InDetDD::SiLocalPosition centrePos = computeCentrePosition(cluster, design);
285 const auto ends = sctDesign->endsOfStrip(centrePos);
286 const double stripL = std::abs(ends.first.xEta() - ends.second.xEta());
287 const double iphipitch = 1. / element.phiPitch();
288 const Amg::Vector2D localPos2D{localPos, 0.0};
289 const double w = element.phiPitch(localPos2D) * iphipitch;
290
291 const double sn = element.sinStereoLocal(localPos2D);
292 const double sn2 = sn * sn;
293 const double cs2 = 1. - sn2;
294 const double v0 = localCov * w * w;
295 const double v1 = stripL * stripL * ONE_TWELFTH;
296
297 const float rotatedCov = cs2 * v0 + sn2 * v1;
298 // copied from InDet::SCT_ClusteringTool, but in ACTS-based tracking, SCT cov is 1-dimensional, just keep the rotatedCov(0,0) for the moment
299 // rotatedCov(0,1) = rotatedCov = sn * sqrt(cs2) * (v0 - v1);
300 // rotatedCov(1,1) = sn2 * v0 + cs2 * v1;
301 return rotatedCov;
302}
void rotate(double angler, GeoTrf::Vector2D &vector)
virtual DetectorShape shape() const
Shape of element.
Base class for the SCT module side design, extended by the Forward and Barrel module design.
double phiPitch() const
Pitch (inline methods).
double sinStereoLocal(const Amg::Vector2D &localPos) const
Angle of strip in local frame with respect to the etaAxis.
static InDetDD::SiLocalPosition computeCentrePosition(const InPlaceClusterization::ClusterProxy< const IStripClusteringTool::CellContainer > &cluster, const InDetDD::SiDetectorDesign &design)
constexpr double ONE_TWELFTH
Eigen::Matrix< double, 2, 1 > Vector2D

◆ convertDirFromActs()

Amg::Vector3D ActsTrk::convertDirFromActs ( const Acts::Vector3 & actsDir)
inline

Converts a direction vector from acts units into athena units.

Parameters
actsDirUnit normalized vector to convert

Definition at line 100 of file UnitConverters.h.

100 {
101 return actsDir;
102 }

◆ convertDirToActs()

Acts::Vector3 ActsTrk::convertDirToActs ( const Amg::Vector3D & athenaDir)
inline

Converts a direction vector from athena units into acts units.

Parameters
athenaDirUnit normalized vector to convert

Definition at line 95 of file UnitConverters.h.

95 {
96 return athenaDir;
97 }

◆ convertMomFromActs()

std::pair< Amg::Vector3D, double > ActsTrk::convertMomFromActs ( const Acts::Vector4 & actsMom)
inline

Converts an Acts four-momentum vector into an pair of an Athena three-momentum and the paritcle's energy.

Parameters
actsMomThe four momentum vector from Acts

Definition at line 141 of file UnitConverters.h.

141 {
142 Amg::Vector3D threeMom{Amg::Vector3D::Zero()};
143 threeMom[Amg::x] = energyToAthena(actsMom[Acts::eMom0]);
144 threeMom[Amg::y] = energyToAthena(actsMom[Acts::eMom1]);
145 threeMom[Amg::z] = energyToAthena(actsMom[Acts::eMom2]);
146 return std::make_pair(std::move(threeMom), energyToAthena(actsMom[Acts::eEnergy]));
147 }
constexpr double energyToAthena(const double actsE)
Converts an energy scalar from Acts to Athena units.
Eigen::Matrix< double, 3, 1 > Vector3D

◆ convertMomToActs()

Acts::Vector4 ActsTrk::convertMomToActs ( const Amg::Vector3D & threeMom,
const double mass = 0. )
inline

Converts a three momentum vector from Athena together with the associated particle mass into an Acts four-momentum vector.

Parameters
threeMomThree momentum vector in Athena units
massParticle's mass in Athena units

Definition at line 129 of file UnitConverters.h.

129 {
130 using namespace Acts::UnitLiterals;
131 Acts::Vector4 fourMom{Acts::Vector4::Zero()};
132 fourMom[Acts::eEnergy] = energyToActs(std::sqrt(threeMom.dot(threeMom) + mass*mass));
133 fourMom[Acts::eMom0] = energyToActs(threeMom.x());
134 fourMom[Acts::eMom1] = energyToActs(threeMom.y());
135 fourMom[Acts::eMom2] = energyToActs(threeMom.z());
136 return fourMom;
137 }
constexpr double energyToActs(const double athenaE)
Converts an energy scalar from Athena to Acts units.

◆ convertPosFromActs()

std::pair< Amg::Vector3D, double > ActsTrk::convertPosFromActs ( const Acts::Vector4 & actsPos)
inline

Converts an Acts 4-vector into a pair of an Athena spatial vector and the passed time.

Parameters
actsPosPosition from the Acts framework

Definition at line 118 of file UnitConverters.h.

118 {
119 Amg::Vector3D pos{Amg::Vector3D::Zero()};
120 pos[Amg::x] = lengthToAthena(actsPos[Acts::ePos0]);
121 pos[Amg::y] = lengthToAthena(actsPos[Acts::ePos1]);
122 pos[Amg::z] = lengthToAthena(actsPos[Acts::ePos2]);
123 return std::make_pair(std::move(pos), timeToAthena(actsPos[Acts::eTime]));
124 }
constexpr double timeToAthena(T actsT)
Converts a time unit from Acts to Athena units.
constexpr double lengthToAthena(const double actsL)
Converts a length scalar from Acts to Athena units.

◆ convertPosToActs()

Acts::Vector4 ActsTrk::convertPosToActs ( const Amg::Vector3D & athenaPos,
const double athenaTime = 0. )
inline

Converts a position vector & time from Athena units into Acts units.

Parameters
athenaPos3D-spatial position vector to convert
athenaTimeTime counts to convert

Definition at line 106 of file UnitConverters.h.

107 {
108 Acts::Vector4 pos{Acts::Vector4::Zero()};
109 pos[Acts::eTime] = timeToActs(athenaTime);
110 pos[Acts::ePos0] = lengthToActs(athenaPos.x());
111 pos[Acts::ePos1] = lengthToActs(athenaPos.y());
112 pos[Acts::ePos2] = lengthToActs(athenaPos.z());
113 return pos;
114 }
constexpr double lengthToActs(const double athenaL)
Converts a length scalar from Acts to Athena units.

◆ countPixelStrip()

std::pair< int, int > ActsTrk::countPixelStrip ( const traccc::edm::measurement_collection::const_device & measurements)

Count the number of measurements 2D (pixel) vs 1D (strip).

Definition at line 45 of file TracccMeasurementConverterAlg.cxx.

46 {
47 int n_pixels = 0;
48 int n_strips = 0;
49 for (std::size_t i = 0; i < measurements.size(); ++i) {
50 if (measurements.at(i).dimensions() == 2u) {
51 ++n_pixels;
52 } else {
53 ++n_strips;
54 }
55 }
56 return {n_pixels, n_strips};
57}

◆ createDecoratorKeys()

template<class T_Parent, class T_Cont>
void ActsTrk::createDecoratorKeys ( T_Parent & parent,
const SG::ReadHandleKey< T_Cont > & container_key,
const std::string & prefix,
const std::vector< std::string > & decor_names,
std::vector< SG::WriteDecorHandleKey< T_Cont > > & decor_out )

Definition at line 49 of file decoratorUtils.h.

53 {
54 decor_out.clear();
55 decor_out.reserve(decor_names.size());
56 for (const std::string &a_decor_name : decor_names) {
57 assert( !a_decor_name.empty() );
58 decor_out.emplace_back(container_key.key()+"."+prefix+a_decor_name);
59 // need to declare handles, otherwise the scheduler would not pick up the data dependencies
60 // introduced by the decorations
61 parent.declare(decor_out.back());
62 decor_out.back().setOwner(&parent);
63 decor_out.back().initialize().ignore();
64 }
65 }
const std::string & key() const
Return the StoreGate ID for the referenced object.

◆ createDecorators()

template<class T_Cont, class T>
std::vector< SG::WriteDecorHandle< T_Cont, T > > ActsTrk::createDecorators ( const std::vector< SG::WriteDecorHandleKey< T_Cont > > & keys,
const EventContext & ctx )

Definition at line 31 of file decoratorUtils.h.

32 {
33 std::vector<SG::WriteDecorHandle<T_Cont,T> > out;
34 out.reserve(keys.size());
35 for( const SG::WriteDecorHandleKey<T_Cont> &a_key : keys) {
36 out.emplace_back(a_key,ctx);
37 if (not out.back().isValid()) {
38 std::stringstream msg;
39 msg << "Failed to create decorator handdle " << a_key.key();
40 throw std::runtime_error( msg.str() );
41 }
42 }
43 return out;
44 }
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
MsgStream & msg
Definition testRead.cxx:32

◆ decodeSurface() [1/3]

std::shared_ptr< const Acts::Surface > ActsTrk::decodeSurface ( const xAOD::SurfaceType surfaceType,
const std::vector< float > & translation,
const std::vector< float > & rotation,
const std::vector< float > & boundValues )

Definition at line 92 of file SurfaceEncoding.cxx.

94 {
95
96 // Translation and rotation
97
98 // create the transformation matrix
99 Amg::Transform3D transform =
100 Amg::getTranslate3D(translation[0], translation[1], translation[2]) *
101 Amg::getRotateZ3D(rotation[0]) *
102 Amg::getRotateY3D(rotation[1]) *
103 Amg::getRotateX3D(rotation[2]);
104
105 switch (surfaceType) {
106 using enum xAOD::SurfaceType;
107 case Cone:
108 return Acts::Surface::makeShared<Acts::ConeSurface>(std::move(transform),
109 boundValues[0], boundValues[1], boundValues[2], boundValues[3]);
110 case Cylinder: {
111 // phi/2 must be slightly < Pi to avoid crashing
112 const float fixedPhi = boundValues[2] > M_PI - 0.001 ? M_PI - 0.001 : boundValues[2];
113 return Acts::Surface::makeShared<Acts::CylinderSurface>(std::move(transform),
114 boundValues[0], boundValues[1], fixedPhi, boundValues[3], boundValues[4]);
115 } case Disc:
116 return Acts::Surface::makeShared<Acts::DiscSurface>(std::move(transform),
117 boundValues[0], boundValues[1], boundValues[2]);
118 case Perigee:
119 return Acts::Surface::makeShared<Acts::PerigeeSurface>(std::move(transform));
120 case Plane: {
121 Acts::Vector2 min(boundValues[0], boundValues[1]),
122 max(boundValues[2], boundValues[3]);
123 auto rBounds = std::make_shared<const Acts::RectangleBounds>(min, max);
124 return Acts::Surface::makeShared<Acts::PlaneSurface>(std::move(transform), rBounds);
125 } case Straw:
126 return Acts::Surface::makeShared<Acts::StrawSurface>(std::move(transform),
127 boundValues[0], boundValues[1]);
128 case Curvilinear:
129 case Other:
130 THROW_EXCEPTION("EncodeSurface this type " <<static_cast<int>(surfaceType)<<
131 " of xAOD::surface cannot be converted into an Acts one");
132 }
133
134 return nullptr;
135}
#define M_PI
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
Amg::Transform3D getRotateX3D(double angle)
Rotate the coordinate system by an angle around the x-axis.
Amg::Transform3D getTranslate3D(const double X, const double Y, const double Z)
: Returns a shift transformation along an arbitrary axis
Amg::Transform3D getRotateZ3D(double angle)
Rotate the coordinate system by an angle around the z-axis.
Eigen::Affine3d Transform3D
Amg::Transform3D getRotateY3D(double angle)
Rotate the coordinate system by an angle around the z-axis.
SurfaceType
This enumerator simplifies the persistency & calculations, by saving a dynamic_cast,...
#define THROW_EXCEPTION(MESSAGE)
Definition throwExcept.h:10

◆ decodeSurface() [2/3]

std::shared_ptr< const Acts::Surface > ActsTrk::decodeSurface ( const xAOD::TrackSurface * backend)

Creates transient Acts Surface objects given a surface backend implementation should be exact mirror of encodeSurface.

Definition at line 137 of file SurfaceEncoding.cxx.

137 {
138 return decodeSurface(s->surfaceType(), s->translation(), s->rotation(),
139 s->boundValues());
140}
std::shared_ptr< const Acts::Surface > decodeSurface(const xAOD::TrackSurface *backend)
Creates transient Acts Surface objects given a surface backend implementation should be exact mirror ...

◆ decodeSurface() [3/3]

std::shared_ptr< const Acts::Surface > ActsTrk::decodeSurface ( const xAOD::TrackSurfaceAuxContainer * backend,
size_t i )

As above, but takes data from Aux container at an index i.

Definition at line 142 of file SurfaceEncoding.cxx.

143 {
144 return decodeSurface(s->surfaceType[i], s->translation[i], s->rotation[i],
145 s->boundValues[i]);
146}

◆ encodeSurface() [1/3]

void ActsTrk::encodeSurface ( xAOD::SurfaceType & surfaceType,
std::vector< float > & translation,
std::vector< float > & rotation,
std::vector< float > & boundValues,
const Acts::Surface * surface,
const Acts::GeometryContext & geoContext )

Definition at line 20 of file SurfaceEncoding.cxx.

25 {
26 // return if surf is a nullptr
27 if (!surface) {
28 return;
29 }
30 switch (surface->type()){
31 using enum Acts::Surface::SurfaceType;
32 case Cone:
33 surfaceType = xAOD::SurfaceType::Cone;
34 break;
35 case Cylinder:
36 surfaceType = xAOD::SurfaceType::Cylinder;
37 break;
38 case Disc:
39 surfaceType = xAOD::SurfaceType::Disc;
40 break;
41 case Perigee:
42 surfaceType = xAOD::SurfaceType::Perigee;
43 break;
44 case Plane:
45 surfaceType = xAOD::SurfaceType::Plane;
46 break;
47 case Straw:
48 surfaceType = xAOD::SurfaceType::Straw;
49 break;
50 case Curvilinear:
52 break;
53 case Point:
54 case Other:
55 surfaceType = xAOD::SurfaceType::Other;
56 break;
57 }
58
59 Acts::RotationMatrix3 lRotation =
60 surface->localToGlobalTransform(geoContext).rotation();
61 Acts::Vector3 eulerAngles = lRotation.eulerAngles(2, 1, 0);
62 Acts::Vector3 lTranslation = surface->center(geoContext);
63
64 for (int i = 0; i < 3; ++i) {
65 rotation.push_back(eulerAngles[i]);
66 translation.push_back(lTranslation[i]);
67 }
68 // copy and transform double->float
69 const std::vector<double>& values = surface->bounds().values();
70 boundValues.insert(boundValues.end(), values.begin(), values.end());
71}
ChargedTracksWeightFilter::Spline::Point Point

◆ encodeSurface() [2/3]

void ActsTrk::encodeSurface ( xAOD::TrackSurface * backend,
const Acts::Surface * surface,
const Acts::GeometryContext & geoContext )

As above, but works on xAOD::TrackSurface object.

Definition at line 80 of file SurfaceEncoding.cxx.

81 {
82 xAOD::SurfaceType surfaceType;
83 std::vector<float> translation, rotation, bounds;
84 encodeSurface(surfaceType, translation, rotation, bounds, surface, geo);
85
86 s->setSurfaceType(surfaceType);
87 s->setTranslation(translation);
88 s->setRotation(rotation);
89 s->setBoundValues(bounds);
90}
void encodeSurface(xAOD::TrackSurfaceAuxContainer *backend, size_t index, const Acts::Surface *surface, const Acts::GeometryContext &geoContext)
Prepares persistifiable representation of surface into xAOD::TrackSurface object.

◆ encodeSurface() [3/3]

void ActsTrk::encodeSurface ( xAOD::TrackSurfaceAuxContainer * backend,
size_t index,
const Acts::Surface * surface,
const Acts::GeometryContext & geoContext )

Prepares persistifiable representation of surface into xAOD::TrackSurface object.

Warning
supports only few types, unhandled surface type results in a exception
  • backend - container to store surface data
  • index - index under which the data needs to be recorded

Definition at line 73 of file SurfaceEncoding.cxx.

75 {
76 encodeSurface(s->surfaceType[i], s->translation[i], s->rotation[i],
77 s->boundValues[i], surface, geo);
78}

◆ energyToActs()

double ActsTrk::energyToActs ( const double athenaE)
inlineconstexpr

Converts an energy scalar from Athena to Acts units.

Parameters
athenaEEnergy value to convert

Definition at line 23 of file UnitConverters.h.

23 {
24 using namespace Acts::UnitLiterals;
25 constexpr double energyCnv = 1_MeV / Gaudi::Units::MeV;
26 return energyCnv * athenaE;
27 }

◆ energyToAthena()

double ActsTrk::energyToAthena ( const double actsE)
inlineconstexpr

Converts an energy scalar from Acts to Athena units.

Parameters
athenaEEnergy value to convert

Definition at line 30 of file UnitConverters.h.

30 {
31 using namespace Acts::UnitLiterals;
32 constexpr double energyCnv = Gaudi::Units::MeV / 1_MeV;
33 return energyCnv * actsE;
34 }

◆ fillPixelCluster()

template<typename MEAS>
void ActsTrk::fillPixelCluster ( const MEAS & meas,
const Identifier & athenaId,
const PixelID * pixelID,
const InDetDD::PixelDetectorManager * pixelManager,
xAOD::PixelCluster & xaod_pcl,
std::size_t combinedIndex )

Definition at line 109 of file TracccMeasurementConverterAlg.cxx.

113 {
114 const IdentifierHash pixHash = pixelID->wafer_hash(athenaId);
115 const InDetDD::SiDetectorElement* pDE =
116 pixelManager->getDetectorElement(pixHash);
117
118 const Amg::Vector2D localPos(meas.local_position()[0],
119 meas.local_position()[1]);
120 const Amg::Vector3D gp = pDE->globalPosition(localPos);
121
122 Eigen::Matrix<float, 2, 1> localPosition(localPos.x(), localPos.y());
123 Eigen::Matrix<float, 2, 2> localCovariance =
124 Eigen::Matrix<float, 2, 2>::Zero();
125 localCovariance(0, 0) = meas.local_variance()[0];
126 localCovariance(1, 1) = meas.local_variance()[1];
127
128 const Identifier hitId(athenaId.get_compact() + combinedIndex);
129
130 xaod_pcl.setIdentifierHash(pixHash);
131 xaod_pcl.setMeasurement<2>(pixHash, localPosition, localCovariance);
132 xaod_pcl.globalPosition() = Eigen::Matrix<float, 3, 1>(gp.x(), gp.y(), gp.z());
133 xaod_pcl.setIdentifier(hitId.get_compact());
134 xaod_pcl.setWidthInEta(meas.diameter());
135}
This is a "hash" representation of an Identifier.
value_type get_compact() const
Get the compact id.
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
Definition PixelID.h:378
ConstVectorMap< 3 > globalPosition() const
Returns the global position of the pixel cluster.
void setWidthInEta(float widthInEta)
Sets the width of the cluster in eta (y) direction.
void setMeasurement(const DetectorIDHashType idHash, MeasVector< N > locPos, MeasMatrix< N > locCov)
Sets IdentifierHash, local position and local covariance of the measurement.
void setIdentifierHash(const DetectorIDHashType idHash)
Sets the IdentifierHash of the measurement (corresponds to the detector element IdentifierHash).
void setIdentifier(const DetectorIdentType measId)
Sets the full Identifier of the measurement.

◆ fillStripCluster()

template<typename MEAS>
void ActsTrk::fillStripCluster ( const MEAS & meas,
const Identifier & athenaId,
const SCT_ID * stripID,
const InDetDD::SCT_DetectorManager * stripManager,
xAOD::StripCluster & xaod_scl,
std::size_t combinedIndex )

Definition at line 80 of file TracccMeasurementConverterAlg.cxx.

84 {
85 const IdentifierHash stripHash = stripID->wafer_hash(athenaId);
87 stripManager->getDetectorElement(stripHash);
88
89 Eigen::Matrix<float, 1, 1> localPosition = Eigen::Matrix<float, 1, 1>::Zero();
90 Eigen::Matrix<float, 1, 1> localCovariance =
91 Eigen::Matrix<float, 1, 1>::Zero();
92
93 if (pDE->isBarrel()) {
94 localPosition(0, 0) = meas.local_position()[0];
95 localCovariance(0, 0) = meas.local_variance()[0];
96 } else {
97 localPosition(0, 0) = meas.local_position()[1];
98 localCovariance(0, 0) = meas.local_variance()[1];
99 }
100
101 const Identifier hitId(athenaId.get_compact() + combinedIndex);
102
103 xaod_scl.setMeasurement<1>(stripHash, localPosition, localCovariance);
104 xaod_scl.setIdentifierHash(stripHash);
105 xaod_scl.setIdentifier(hitId.get_compact());
106}
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements via Identifier
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Definition SCT_ID.h:487

◆ firstMeasurementState()

std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > ActsTrk::firstMeasurementState ( const xAOD::TrackParticle & trkPart,
const bool skipOutlier = true )

Returns the track state proxy corresponding to the measurement that is closest to the defining track parameter.

The method retrieves the Acts track and returns the last measurement along the track which is not an outlier if toggled

Parameters
trkPartReference to the track particle made from the Acts chain
skipOutlierFlag to ignore the outlier states

Definition at line 38 of file Decoration.cxx.

39 {
40 auto actsTrk = getActsTrack(trkPart);
41 if (!actsTrk) {
42 return std::nullopt;
43 }
44 for (const auto state : actsTrk->trackStates()) {
45 if ((state.typeFlags().isOutlier() && skipOutlier) ||
46 !state.hasUncalibratedSourceLink()) {
47 continue;
48 }
49 return state;
50 }
51 return std::nullopt;
52}
std::optional< ActsTrk::TrackContainer::ConstTrackProxy > getActsTrack(const xAOD::TrackParticle &trkPart)
Return the proxy to the Acts track from which the track particle was made frome.
Definition Decoration.cxx:9

◆ firstTrackParameters()

std::optional< Acts::BoundTrackParameters > ActsTrk::firstTrackParameters ( const xAOD::TrackParticle & trkPart,
const bool skipOutlier = true )

Returns the first MeasurementState in form of Acts::BoundTrackParameters.

The logic follows the one from the firstMeasurementState

Parameters
trkPartReference to the track particle made from the Acts chain
skipOutlierFlag to ignore the outlier states

Definition at line 65 of file Decoration.cxx.

66 {
67 auto firstTrkProxy = firstMeasurementState(trkPart, skipOutlier);
68 if (!firstTrkProxy) {
69 return std::nullopt;
70 }
71 return getActsTrack(trkPart)->createParametersFromState(*firstTrkProxy);
72}
std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > firstMeasurementState(const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
Returns the track state proxy corresponding to the measurement that is closest to the defining track ...

◆ getActsTrack()

std::optional< TrackContainer::ConstTrackProxy > ActsTrk::getActsTrack ( const xAOD::TrackParticle & trkPart)

Return the proxy to the Acts track from which the track particle was made frome.

Parameters
trkPartThe track particle containing a link to the Acts::Track

Definition at line 9 of file Decoration.cxx.

9 {
10 static const SG::AuxElement::ConstAccessor<ElementLink<TrackContainer> > acc("actsTrack");
11 static_assert(std::is_same<ElementLink<TrackContainer>::ElementConstReference,
12 std::optional<TrackContainer::ConstTrackProxy> >::value);
13
14 if (!acc.isAvailable(trkPart) || !acc(trkPart).isValid()) {
15 return std::nullopt;
16 }
17 return(*acc(trkPart));
18
19}

◆ getCalibrationContext()

Acts::CalibrationContext ActsTrk::getCalibrationContext ( const EventContext & ctx)
inline

The Acts::Calibration context is piped through the Acts fitters to (re)calibrate the Acts::SourceLinks during the track State upate.

In ATLAS Athena, the EventContext is needed to access the calibration context from the conditions. This function packs the pointer of the current EventContext into a Acts::CalibrationContext

Parameters
ctxEventContext to transform into a Context

Definition at line 15 of file CalibrationContext.h.

15 {
16 return Acts::CalibrationContext{&ctx};
17 }

◆ getCaloExtension()

const CaloExtension * ActsTrk::getCaloExtension ( const xAOD::TrackParticle & track)

Retrieve a pointer to the CaloExtension linked with the passed TrackParticle.

Note
Clients should ensure that they've scheduled a dependency on the caloExtensionLink decoration for the underlying track particle container.

Definition at line 11 of file Acts/ActsEvent/Root/CaloExtension.cxx.

11 {
12 static const SG::ConstAccessor<ElementLink<CaloExtensionContainer>> acc{"caloExtensionLink"};
13 if (!acc.isAvailable(track)) {
14 return nullptr;
15 }
16 const auto& link = acc(track);
17 if (link.isValid()) {
18 return *link;
19 }
20 return nullptr;
21 }
Helper class to provide constant type-safe access to aux data.
pointer & link(pointer p) const
Return a reference to the link for an element.

◆ getDepositedEnergy()

template<class T_Deposit>
float ActsTrk::getDepositedEnergy ( const T_Deposit & )

◆ getInTruthPropertyName()

template<class T_TruthEventCollection>
const char * ActsTrk::getInTruthPropertyName ( )
inline

◆ getRDOList()

template<class T>
auto ActsTrk::getRDOList ( const T & a)

Definition at line 109 of file MeasurementToTruthAssociationAlg.h.

109 {
110 if constexpr(has_rdoList<T>::value) {
111 return a.rdoList();
112 }
113 else {
114 return DummyRDOList(a);
115 }
116 }
static Double_t a

◆ getSimDataDeposits()

template<class T_SimDataCollection, class T_SimDataIterator>
auto ActsTrk::getSimDataDeposits ( const T_SimDataCollection & sim_data_collection,
T_SimDataIterator sim_data_iter_for_identifier )

◆ getSurfaceGeometryIdOfMeasurement()

Acts::GeometryIdentifier ActsTrk::getSurfaceGeometryIdOfMeasurement ( const DetectorElementToActsGeometryIdMap & detector_element_to_geoid,
const xAOD::UncalibratedMeasurement & measurement )
inline

Definition at line 13 of file SurfaceOfMeasurementUtil.h.

16 {
17 DetectorElementToActsGeometryIdMap::const_iterator
18 geoid_iter = detector_element_to_geoid.find( makeDetectorElementKey(measurement.type(), measurement.identifierHash()) );
19 return geoid_iter != detector_element_to_geoid.end()
21 : Acts::GeometryIdentifier{};
22 }
DetectorIDHashType identifierHash() const
Returns the IdentifierHash of the measurement (corresponds to the detector element IdentifierHash).
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
DetectorElementKey makeDetectorElementKey(xAOD::UncalibMeasType meas_type, unsigned int identifier_hash)
static const Acts::GeometryIdentifier & getValue(const value_type &element)

◆ lastMeasurementState()

std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > ActsTrk::lastMeasurementState ( const xAOD::TrackParticle & trkPart,
const bool skipOutlier = true )

Returns the track state proxy corresponding to the last measurement on track.

The method retrieves the Acts track and returns the last measurement along the track which is not an outlier if toggled

Parameters
trkPartReference to the track particle made from the Acts chain
skipOutlierFlag to ignore the outlier states

Definition at line 21 of file Decoration.cxx.

22 {
23 auto actsTrk = getActsTrack(trkPart);
24 if (!actsTrk) {
25 return std::nullopt;
26 }
27 for (const auto state : actsTrk->trackStatesReversed()) {
28 if ((state.typeFlags().isOutlier() && skipOutlier) ||
29 !state.hasUncalibratedSourceLink()) {
30 continue;
31 }
32 return state;
33 }
34 return std::nullopt;
35}

◆ lastTrackParameters()

std::optional< Acts::BoundTrackParameters > ActsTrk::lastTrackParameters ( const xAOD::TrackParticle & trkPart,
const bool skipOutlier = true )

Returns the last MeasurementState in form of Acts::BoundTrackParameters.

The logic follows the one from the lastMeasurementState

Parameters
trkPartReference to the track particle made from the Acts chain
skipOutlierFlag to ignore the outlier states

Definition at line 55 of file Decoration.cxx.

56 {
57 auto lastTrkProxy = lastMeasurementState(trkPart, skipOutlier);
58 if (!lastTrkProxy) {
59 return std::nullopt;
60 }
61 return getActsTrack(trkPart)->createParametersFromState(*lastTrkProxy);
62}
std::optional< ActsTrk::TrackContainer::ConstTrackStateProxy > lastMeasurementState(const xAOD::TrackParticle &trkPart, const bool skipOutlier=true)
Returns the track state proxy corresponding to the last measurement on track.

◆ lengthToActs()

double ActsTrk::lengthToActs ( const double athenaL)
inlineconstexpr

Converts a length scalar from Acts to Athena units.

Parameters
athenaLLength value to convert

Definition at line 37 of file UnitConverters.h.

37 {
38 using namespace Acts::UnitLiterals;
39 constexpr double lengthCnv = 1_mm / Gaudi::Units::mm;
40 return lengthCnv * athenaL;
41 }

◆ lengthToAthena()

double ActsTrk::lengthToAthena ( const double actsL)
inlineconstexpr

Converts a length scalar from Acts to Athena units.

Parameters
athenaLLength value to convert

Definition at line 44 of file UnitConverters.h.

44 {
45 using namespace Acts::UnitLiterals;
46 constexpr double lengthCnv = Gaudi::Units::mm / 1_mm;
47 return lengthCnv * actsL;
48 }

◆ localPositionStrip2D()

std::tuple< Acts::Vector2, Amg::Vector2D, int, int > ActsTrk::localPositionStrip2D ( const Acts::GeometryContext & tgContext,
const xAOD::UncalibratedMeasurement & measurement,
const Acts::Surface * surface,
const xAOD::SpacePoint * sp )
static

Definition at line 281 of file TrackStatePrinterTool.cxx.

285 {
286 auto *disc = dynamic_cast<const Acts::DiscSurface *>(surface);
287 Acts::Vector2 loc{Acts::Vector2::Zero()};
288 int est = 2; // est = 0 (estimated from SP), 1 (from module center), 2 (globalToLocal(center) failure), -1 (pixel)
289 if (surface)
290 {
291 if (sp)
292 {
293 auto res = surface->globalToLocal(tgContext, sp->globalPosition().cast<double>(), Acts::Vector3::Zero());
294 if (res.ok())
295 {
296 loc = res.value();
297 est = 0;
298 }
299 }
300
301 if (est != 0)
302 {
303 if (auto *annulus = dynamic_cast<const Acts::AnnulusBounds *>(&surface->bounds()))
304 {
305 loc[0] = 0.5 * (annulus->rMin() + annulus->rMax());
306 est = 1;
307 }
308 else
309 {
310 auto res = surface->globalToLocal(tgContext, surface->center(tgContext), Acts::Vector3::Zero());
311 if (res.ok())
312 {
313 loc = res.value();
314 est = 1;
315 }
316 }
317 }
318 }
319
320 const int measInd = disc ? 1 : 0;
321 loc[measInd] = measurement.localPosition<1>()[0];
322 if (disc)
323 {
324 Amg::Vector2D locTrk{disc->localPolarToCartesian(loc).reverse()};
325 locTrk[0] = -locTrk[0];
326 return {loc, locTrk, measInd, est};
327 }
328 else
329 {
330 return {loc, loc, measInd, est};
331 }
332 }
std::pair< std::vector< unsigned int >, bool > res
static Double_t sp
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.

◆ makeDepositToTruthParticleMap()

template<class T_TruthEventCollection>
auto ActsTrk::makeDepositToTruthParticleMap ( const T_TruthEventCollection * truth_particle_links)

◆ makeDetectorElementKey()

DetectorElementKey ActsTrk::makeDetectorElementKey ( xAOD::UncalibMeasType meas_type,
unsigned int identifier_hash )
inline

Definition at line 16 of file DetectorElementToActsGeometryIdMap.h.

16 {
17 assert( sizeof(xAOD::UncalibMeasType) <= sizeof(std::size_t) );
18 assert( static_cast<std::size_t>( Acts::toUnderlying(meas_type)&((~DETELEMENT_HASH_MASK)>>DETELEMENT_TYPE_SHIFT)) == static_cast<std::size_t>(meas_type));
19 assert( (identifier_hash & DETELEMENT_HASH_MASK) == identifier_hash);
20 return (Acts::toUnderlying(meas_type) << DETELEMENT_TYPE_SHIFT) | (identifier_hash & DETELEMENT_HASH_MASK);
21 }
constexpr unsigned int DETELEMENT_HASH_MASK
constexpr unsigned int DETELEMENT_TYPE_SHIFT
UncalibMeasType
Define the type of the uncalibrated measurement.

◆ makeInterfaceContainer()

template<typename IFACE, typename AUX>
std::unique_ptr< IFACE > ActsTrk::makeInterfaceContainer ( const AUX * aux)

helper to construct interface container for already filled Aux container TODO maybe should be moved to xAOD area

Definition at line 515 of file MultiTrajectory.h.

515 {
516 auto interface = std::make_unique<IFACE>();
517 for ( size_t i = 0, sz = aux->size(); i < sz; ++i) {
518 interface->emplace_back( new std::remove_pointer_t<typename IFACE::value_type>() );
519 }
520 interface->setStore(aux);
521 return interface;
522}
static Double_t sz

◆ makeOutputContainer()

template<typename ClusterT, typename AuxContainerT, typename ContainerT = DataVector<ClusterT>>
std::pair< std::unique_ptr< ContainerT >, std::unique_ptr< AuxContainerT > > ActsTrk::makeOutputContainer ( const EventContext & ctx,
int n )

Definition at line 63 of file TracccMeasurementConverterAlg.cxx.

63 {
64
66
67 auto cont = std::make_unique<ContainerT>(SG::VIEW_ELEMENTS,
69 auto aux = std::make_unique<AuxContainerT>();
70
71 pool.reserve(n);
72 cont->push_new(n, [&pool]() { return pool.nextElementPtr(); });
73 aux->resize(cont->size());
74 cont->setStore(aux.get());
75
76 return {std::move(cont), std::move(aux)};
77}
a typed memory pool that saves time spent allocation small object.
Definition DataPool.h:63
@ ALWAYS_TRACK_INDICES
Always track indices, regardless of the setting of the ownership policy.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Framework include files.
Definition libname.h:15

◆ matchPixelClusters()

void ActsTrk::matchPixelClusters ( std::vector< const xAOD::PixelCluster * > & monitored_list,
std::vector< const xAOD::PixelCluster * > & reference_list,
const std::string & module_id,
std::vector< std::pair< const xAOD::PixelCluster *, const xAOD::PixelCluster * > > & pairs )

Definition at line 79 of file ActsClusterComparisonAlg.cxx.

85{
86
87 // Extract RDO sets
88 std::vector<std::set<Identifier>> monitored_rdo_sets;
89 std::vector<std::set<Identifier>> reference_rdo_sets;
90
91 for (const auto* c : monitored_list) {
92 const auto& rdoListRange = c->rdoList();
93 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
94 monitored_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
95 }
96
97 for (const auto* c : reference_list) {
98 const auto& rdoListRange = c->rdoList();
99 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
100 reference_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
101 }
102
103 // Match clusters
104 std::vector<std::pair<int, int>> matched_pairs;
105 std::vector<int> unmatched_monitored;
106 std::set<int> unmatched_reference;
107
108 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
109 unmatched_reference.insert(j);
110 }
111
112 for (size_t i = 0; i < monitored_rdo_sets.size(); ++i) {
113
114 bool found_match = false;
115 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
116 if (monitored_rdo_sets[i] == reference_rdo_sets[j]) {
117 matched_pairs.emplace_back(i, j);
118 pairs.emplace_back(monitored_list.at(i), reference_list.at(j));
119 found_match = true;
120 unmatched_reference.erase(j);
121 break;
122 }
123 }
124 if (!found_match) {
125 unmatched_monitored.push_back(i);
126 }
127 }
128
129 // Report mismatches
130 if (!unmatched_monitored.empty() || !unmatched_reference.empty()) {
131 std::cout << "\n[ERROR] Module " << module_id
132 << ": cluster mismatch detected!" << std::endl;
133 if (!unmatched_monitored.empty()) {
134 std::cout << " Unmatched monitored clusters ("
135 << unmatched_monitored.size() << "):" << std::endl;
136 for (int i : unmatched_monitored) {
137 std::cout << " - #" << i << std::endl;
138 }
139 }
140 if (!unmatched_reference.empty()) {
141 std::cout << " Unmatched reference clusters (" << unmatched_reference.size()
142 << "):" << std::endl;
143 for (int j : unmatched_reference) {
144 std::cout << " - #" << j << std::endl;
145 }
146 }
147 std::cout
148 << "------------------------------------------------------------"
149 << std::endl;
150 }
151}
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ matchStripClusters()

void ActsTrk::matchStripClusters ( std::vector< const xAOD::StripCluster * > & monitored_list,
std::vector< const xAOD::StripCluster * > & reference_list,
const std::string & module_id,
std::vector< std::pair< const xAOD::StripCluster *, const xAOD::StripCluster * > > & pairs )

Definition at line 154 of file ActsClusterComparisonAlg.cxx.

160{
161
162 // Extract RDO sets
163 std::vector<std::set<Identifier>> monitored_rdo_sets;
164 std::vector<std::set<Identifier>> reference_rdo_sets;
165
166 for (const auto* c : monitored_list) {
167 const auto& rdoListRange = c->rdoList();
168 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
169 monitored_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
170 }
171
172 for (const auto* c : reference_list) {
173 const auto& rdoListRange = c->rdoList();
174 std::vector<Identifier> rdoList(rdoListRange.begin(), rdoListRange.end());
175 reference_rdo_sets.emplace_back(rdoList.begin(), rdoList.end());
176 }
177
178 // Match clusters
179 std::vector<std::pair<int, int>> matched_pairs;
180 std::vector<int> unmatched_monitored;
181 std::set<int> unmatched_reference;
182
183 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
184 unmatched_reference.insert(j);
185 }
186
187 for (size_t i = 0; i < monitored_rdo_sets.size(); ++i) {
188 bool found_match = false;
189 for (size_t j = 0; j < reference_rdo_sets.size(); ++j) {
190 if (monitored_rdo_sets[i] == reference_rdo_sets[j]) {
191 matched_pairs.emplace_back(i, j);
192 pairs.emplace_back(monitored_list.at(i), reference_list.at(j));
193 found_match = true;
194 unmatched_reference.erase(j);
195 break;
196 }
197 }
198 if (!found_match) {
199 unmatched_monitored.push_back(i);
200 }
201 }
202
203 // Report mismatches
204 if (!unmatched_monitored.empty() || !unmatched_reference.empty()) {
205 std::cout << "\n[ERROR] Module " << module_id
206 << ": cluster mismatch detected!" << std::endl;
207 if (!unmatched_monitored.empty()) {
208 std::cout << " Unmatched monitored clusters ("
209 << unmatched_monitored.size() << "):" << std::endl;
210 for (int i : unmatched_monitored) {
211 std::cout << " - #" << i << std::endl;
212 }
213 }
214 if (!unmatched_reference.empty()) {
215 std::cout << " Unmatched reference clusters (" << unmatched_reference.size()
216 << "):" << std::endl;
217 for (int j : unmatched_reference) {
218 std::cout << " - #" << j << std::endl;
219 }
220 }
221 std::cout
222 << "------------------------------------------------------------"
223 << std::endl;
224 }
225}

◆ operator<<() [1/3]

MsgStream & ActsTrk::operator<< ( MsgStream & out,
const ActsUtils::Stat & stat )
inline

Definition at line 21 of file TrackToTruthAssociationAlg.cxx.

21 {
22 ActsUtils::dumpStat(out, stat);
23 return out;
24 }
void dumpStat(T_Stream &out, const Stat &stat)
Dump the given statistics object to the given output stream.
Definition StatUtils.h:63

◆ operator<<() [2/3]

std::ostream & ActsTrk::operator<< ( std::ostream & ostr,
const DetectorType type )
inline

Pipe the detector type to an outstream object.

Definition at line 100 of file GeometryDefs.h.

100 {
101 return (ostr<<detail::toString(type));
102 }
std::string toString(const DetectorType type)

◆ operator<<() [3/3]

std::ostream & ActsTrk::operator<< ( std::ostream & ostr,
const SystemEnvelope type )
inline

Pipe the Volume envelope to an oustream object.

Definition at line 104 of file GeometryDefs.h.

104 {
105 return (ostr<<detail::toString(type));
106 }

◆ prefixFromTrackContainerName()

std::string ActsTrk::prefixFromTrackContainerName ( const std::string & tracks)

Parse TrackContainer name to get the prefix for backends The name has to contain XYZTracks, the XYZ is returned.

Definition at line 20 of file TrackContainerHandlesHelper.cxx.

20 {
21 std::regex word_regex("(.*)Tracks$");
22 std::smatch match_regex;
23
24 if ( not std::regex_search(tracks, match_regex, word_regex) or match_regex.size() < 2) {
25 throw std::runtime_error(
26 std::string("prefixFromTrackContainerName: key does not contain "
27 "Tracks in the name ") + tracks);
28 }
29
30 return match_regex[1].str();
31}

◆ printHeader()

void ActsTrk::printHeader ( int type,
bool extra = false )
static

Definition at line 117 of file TrackStatePrinterTool.cxx.

118 {
119 std::cout << std::left
120 << std::setw(5) << "Index" << ' '
121 << std::setw(4) << "Type" << ' '
122 << std::setw(21) << "SurfaceBounds" << ' ';
123 if (type == 0)
124 {
125 std::cout << std::setw(22) << "GeometryId" << ' '
126 << std::setw(20) << "ATLAS ID" << ' '
127 << std::right
128 << std::setw(10) << "loc0" << ' '
129 << std::setw(10) << "loc1"
130 << " "
131 << std::setw(9) << "R" << ' '
132 << std::setw(9) << "Pos Z" << ' '
133 << std::setw(9) << "phid" << ' '
134 << std::setw(9) << "eta";
135 if (extra)
136 {
137 std::cout << ' '
138 << std::setw(10) << "Trk loc0" << ' '
139 << std::setw(10) << "loc1"
140 << " "
141 << std::setw(9) << "Trk R" << ' '
142 << std::setw(9) << "phid" << ' '
143 << std::setw(9) << "eta" << ' '
144 << std::setw(10) << "g2l loc0" << ' '
145 << std::setw(10) << "loc1";
146 }
147 std::cout << '\n';
148 static std::atomic<int> kilroy = 0;
149 if (!(kilroy++))
150 {
151 std::cout << "R (mm) and phi (degrees). Estimated local coordinate indicated by \"*\" (from SP), \"o\" (from module center), or \"#\" (globalToLocal(center) failure).";
152 if (extra)
153 std::cout << " Athena/ACTS comparison only shown if different.";
154 std::cout << '\n';
155 }
156 }
157 if (type == 1)
158 {
159 std::cout << std::setw(22) << "GeometryId/meas/stats" << ' '
160 << std::right
161 << std::setw(10) << "loc0" << ' '
162 << std::setw(10) << "loc1" << ' '
163 << std::setw(9) << "Pos R" << ' '
164 << std::setw(9) << "Pos Z" << ' '
165 << std::setw(9) << "phid" << ' '
166 << std::setw(9) << "eta" << ' '
167 << std::setw(9) << "q*pT" << ' '
168 << std::setw(9) << "phid" << ' '
169 << std::setw(9) << "eta" << ' '
170 << std::setw(6) << "TrkLen" << ' '
171 << std::setw(7) << "chi2" << ' '
172 << std::setw(6) << "Flags" << '\n';
173 }
174 }

◆ printMeasurement()

void ActsTrk::printMeasurement ( const Acts::GeometryContext & tgContext,
const Acts::Surface * surface,
const std::tuple< Acts::Vector2, Amg::Vector2D, int, int > & locData,
bool compareMeasurementTransforms = false )
static

Definition at line 225 of file TrackStatePrinterTool.cxx.

229 {
230 auto &[loc, locTrk, measInd, est] = locData;
231 int flag = est < 0 ? est : 2 * est + measInd;
232 int flagTrk = est < 0 ? est : 2 * est;
233 // indicates coordinate that is estimated: *=from SP, o=from module center, #=globalToLocal(center) failure
234 static const std::map<int, const char *> estimated_flags{{-1, " "},
235 {0, " *"},
236 {1, "* "},
237 {2, " o"},
238 {3, "o "},
239 {4, " #"},
240 {5, "# "}};
241 printVec2(loc, estimated_flags.at(flag));
242
243 if (surface)
244 {
245 // momentum direction doesn't seem to be needed for measurement surfaces (only LineSurface?)
246 auto glob = surface->localToGlobal(tgContext, loc, Acts::Vector3::Zero());
247 printVec3(glob);
248
249 if (compareMeasurementTransforms) {
250 const auto* acts_detector_element = getActsDetectorElement(surface);
251 if (acts_detector_element) {
252 const InDetDD::SiDetectorElement *detElem = dynamic_cast< const InDetDD::SiDetectorElement *>(acts_detector_element->upstreamDetectorElement());
253
254 // if measInd=1: won't match because comparing x,y and R,phi, but at least not phi,R.
255 // This is still useful for debugging because the next test also fails.
256 printVec2(locTrk, (measInd == 1 ? loc.reverse() : loc), estimated_flags.at(flagTrk));
257
258 if (detElem)
259 {
260 auto globTrk = detElem->surface().localToGlobal(locTrk);
261 printVec3(globTrk, glob);
262
263 auto res = surface->globalToLocal(tgContext, globTrk, Acts::Vector3::Zero());
264 if (!res.ok())
265 {
266 std::cout << " ** " << res.error() << " **";
267 }
268 else
269 {
270 printVec2(res.value(), loc);
271 }
272 }
273 }
274 }
275
276 }
277 std::cout << std::defaultfloat << std::setprecision(-1);
278 }
static void printVec3(const Acts::Vector3 &p)
static void printVec2(const Acts::Vector2 &p, const char *estimated=nullptr)

◆ printVec2() [1/2]

void ActsTrk::printVec2 ( const Acts::Vector2 & p,
const Acts::Vector2 & cmp,
const char * estimated = nullptr,
int precision = 4 )
static

Definition at line 212 of file TrackStatePrinterTool.cxx.

213 {
214 if (((p - cmp).array().abs() >= 0.5 * std::pow(10.0, -precision)).any())
215 {
216 printVec2(p, estimated);
217 }
218 else
219 {
220 std::cout << std::setw(22 + (estimated ? 1 : 0)) << "";
221 }
222 }

◆ printVec2() [2/2]

void ActsTrk::printVec2 ( const Acts::Vector2 & p,
const char * estimated = nullptr )
static

Definition at line 201 of file TrackStatePrinterTool.cxx.

202 {
203 const char e0 = estimated ? estimated[0] : ' ';
204 const char *e1 = estimated ? estimated + 1 : "";
205 std::cout << std::fixed << ' '
206 << std::setw(10) << std::setprecision(4) << p[0] << e0
207 << std::setw(10) << std::setprecision(4) << p[1] << e1
208 << std::defaultfloat << std::setprecision(-1);
209 }

◆ printVec3() [1/2]

void ActsTrk::printVec3 ( const Acts::Vector3 & p)
static

Definition at line 177 of file TrackStatePrinterTool.cxx.

178 {
179 std::cout << std::fixed << ' '
180 << std::setw(9) << std::setprecision(3) << p.head<2>().norm() << ' '
181 << std::setw(9) << std::setprecision(3) << p[2] << ' '
182 << std::setw(9) << std::setprecision(3) << std::atan2(p[1], p[0]) / Acts::UnitConstants::degree << ' '
183 << std::setw(9) << std::setprecision(5) << std::atanh(p[2] / p.norm())
184 << std::defaultfloat << std::setprecision(-1);
185 }

◆ printVec3() [2/2]

void ActsTrk::printVec3 ( const Acts::Vector3 & p,
const Acts::Vector3 & cmp,
int precision = 3 )
static

Definition at line 188 of file TrackStatePrinterTool.cxx.

189 {
190 if (((p - cmp).array().abs() >= 0.5 * std::pow(10.0, -precision)).any())
191 {
192 printVec3(p);
193 }
194 else
195 {
196 std::cout << std::setw(30) << "";
197 }
198 }

◆ rotateParams()

std::unique_ptr< Trk::TrackParameters > ActsTrk::rotateParams ( const Trk::TrackParameters & inPars,
const Trk::Surface & target )

Definition at line 49 of file ActsToTrkConverterTool.cxx.

50 {
51 const Amg::Vector3D& pos = inPars.position();
52 const Amg::Vector3D& mom = inPars.momentum();
53 using namespace Acts::PlanarHelper;
54
55 const auto isect = intersectPlane(pos, mom.normalized(), target.normal(), target.center());
56 std::optional<AmgSymMatrix(5)> cov{};
57 if (inPars.covariance()) {
58 AmgSymMatrix(5) rot {AmgSymMatrix(5)::Identity()};
59 rot.block<2,2>(0,0) = AmgSymMatrix(2){Eigen::Rotation2D{90._degree}};
60 cov = rot.transpose() * (*inPars.covariance()) * rot;
61 }
62 return target.createUniqueTrackParameters(isect.position(), mom,
63 std::copysign(1., inPars.parameters()[Trk::qOverP]),
64 std::move(cov));
65}
#define AmgSymMatrix(dim)
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
@ qOverP
perigee
Definition ParamDefs.h:67

◆ sort_traccc_soa()

void ActsTrk::sort_traccc_soa ( traccc::edm::silicon_cell_collection::device & sorted_cells,
traccc::edm::silicon_cell_collection::device const & cells )

Definition at line 100 of file RDOtoTracccCellConverterCommons.cxx.

104{
105 using size_type = traccc::edm::silicon_cell_collection::buffer::size_type;
106
107 std::vector<size_type> indices(cells.size());
108 std::iota(indices.begin(), indices.end(), 0u);
109
110 // Sort the indices according to the cells.
111 std::sort(indices.begin(), indices.end(),
112 [&](size_type lhs, size_type rhs) {
113 return cells.at(lhs) < cells.at(rhs);
114 });
115
116 // Fill an output container with the sorted cells.
117 size_type s = 0;
118 for (size_type i : indices) {
119 sorted_cells.at(s++) = cells.at(i);
120 }
121}
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ timeCovToActs()

template<std::floating_point T>
auto ActsTrk::timeCovToActs ( T athenaTCov)
inlineconstexpr

Converts a time covariance element from Athena to Acts units.

Parameters
athenaTTime interval to convert

Definition at line 68 of file UnitConverters.h.

68 {
69 using namespace Acts::UnitLiterals;
70 constexpr auto sqr=[](double a) { return a*a;};
71 constexpr auto timeCnv = static_cast<T>(sqr(1_ns / Gaudi::Units::ns));
72 return timeCnv * athenaTCov;
73 }
#define sqr(t)

◆ timeCovToAthena()

template<std::floating_point T>
double ActsTrk::timeCovToAthena ( T actsTCov)
inlineconstexpr

Converts a time covariance element from Acts to Athena units.

Parameters
actsTTime interval to convert

Definition at line 77 of file UnitConverters.h.

77 {
78 using namespace Acts::UnitLiterals;
79 constexpr auto sqr=[](double a) { return a*a;};
80 constexpr auto timeCnv = static_cast<T>(sqr(Gaudi::Units::ns/ 1_ns));
81 return timeCnv * actsTCov;
82 }

◆ timeToActs()

template<std::floating_point T>
auto ActsTrk::timeToActs ( T athenaT)
inlineconstexpr

Converts a time unit from Athena to Acts units.

Parameters
athenaTTime interval to convert

Definition at line 52 of file UnitConverters.h.

52 {
53 using namespace Acts::UnitLiterals;
54 constexpr auto timeCnv = static_cast<T>(1_ns / Gaudi::Units::ns);
55 return timeCnv * athenaT;
56 }

◆ timeToAthena()

template<std::floating_point T>
double ActsTrk::timeToAthena ( T actsT)
inlineconstexpr

Converts a time unit from Acts to Athena units.

Parameters
actsTTime interval to convert

Definition at line 60 of file UnitConverters.h.

60 {
61 using namespace Acts::UnitLiterals;
62 constexpr auto timeCnv = static_cast<T>(Gaudi::Units::ns/ 1_ns);
63 return timeCnv * actsT;
64 }

◆ toDetType()

DetectorType ActsTrk::toDetType ( const xAOD::UncalibMeasType mType)

Converts the uncalibrated measurement type to a detector type.

Definition at line 10 of file EnumConversion.cxx.

10 {
11 switch (mType) {
12 using enum xAOD::UncalibMeasType;
13 case PixelClusterType: return DetectorType::Pixel;
14 case StripClusterType: return DetectorType::Sct;
15 case MdtDriftCircleType: return DetectorType::Mdt;
16 case RpcStripType: return DetectorType::Rpc;
17 case TgcStripType: return DetectorType::Tgc;
18 case MMClusterType: return DetectorType::Mm;
19 case sTgcStripType: return DetectorType::sTgc;
20 case HGTDClusterType: return DetectorType::Hgtd;
21 case nTypes:
22 case Other: return DetectorType::UnDefined;
23 }
25 }
@ Pixel
Inner detector legacy.

◆ toMeasType()

xAOD::UncalibMeasType ActsTrk::toMeasType ( const DetectorType dType)

Conversts the detector type to an uncalibrated measurement type.

Definition at line 26 of file EnumConversion.cxx.

26 {
27 switch (dType) {
28 using enum DetectorType;
37
38 default:
39 throw std::runtime_error(std::format("toMeasType() - Unsupported {} type parsed", dType));
40 }
42 }
DetectorType
Simple enum to Identify the Type of the ACTS sub detector.

◆ toTrkFitterType()

Trk::TrackInfo::TrackFitter ActsTrk::toTrkFitterType ( const xAOD::TrackFitter fType)

Converts xAOD fitter type to Trk fitter type.

Definition at line 43 of file EnumConversion.cxx.

43 {
44 switch (fType) {
45 using enum xAOD::TrackFitter;
47 case iPatTrackFitter: return Trk::TrackInfo::TrackFitter::iPatTrackFitter;
48 case xKalman: return Trk::TrackInfo::TrackFitter::xKalman;
49 case GaussianSumFilter: return Trk::TrackInfo::TrackFitter::GaussianSumFilter;
50 case GlobalChi2Fitter: return Trk::TrackInfo::TrackFitter::GlobalChi2Fitter;
51 case DistributedKalmanFilter: return Trk::TrackInfo::TrackFitter::DistributedKalmanFilter;
52 case DeterministicAnnealingFilter: return Trk::TrackInfo::TrackFitter::DeterministicAnnealingFilter;
53 case KalmanFitter: return Trk::TrackInfo::TrackFitter::KalmanFitter;
54 case KalmanDNAFitter: return Trk::TrackInfo::TrackFitter::KalmanDNAFitter;
55 case MuonboyFitter: return Trk::TrackInfo::TrackFitter::MuonboyFitter;
56
57 default:
58 throw std::runtime_error("toTrkFitterType() - Unsupported type parsed");
59 }
60 }
@ Unknown
Definition TruthClasses.h:9
@ GaussianSumFilter
Tracks from Gaussian Sum Filter.
@ KalmanFitter
tracks produced by the Kalman Fitter
@ MuonboyFitter
Track produced with Muonboy's internal fitter.
@ DeterministicAnnealingFilter
Adpative track fitter with fuzzy hit assignment.
@ DistributedKalmanFilter
Fast Kalman filter from HLT with simplified material effects.
@ GlobalChi2Fitter
Track's from Thijs' global chi^2 fitter.
TrackFitter
Enums to identify who created this track and which properties does it have.

◆ velocityToActs()

double ActsTrk::velocityToActs ( const double athenaV)
inlineconstexpr

Converts a velocity from Athena to Acts units.

Parameters
athenaVVelocity to convert

Definition at line 85 of file UnitConverters.h.

85 {
86 return athenaV / timeToActs(1.);
87 }

Variable Documentation

◆ DETELEMENT_HASH_MASK

unsigned int ActsTrk::DETELEMENT_HASH_MASK = ~(1u<<31|1u<<30|1u<<29|1u<<28)
constexpr

Definition at line 14 of file DetectorElementToActsGeometryIdMap.h.

◆ DETELEMENT_TYPE_SHIFT

unsigned int ActsTrk::DETELEMENT_TYPE_SHIFT = 28
constexpr

Definition at line 13 of file DetectorElementToActsGeometryIdMap.h.

◆ NHitCounter

unsigned int ActsTrk::NHitCounter = static_cast< std::underlying_type<xAOD::UncalibMeasType>::type >(xAOD::UncalibMeasType::nTypes)
constexpr

Definition at line 19 of file TrackToTruthParticleAssociation.h.

◆ NTruthParticlesPerMeasurement

unsigned int ActsTrk::NTruthParticlesPerMeasurement = 5
constexpr

Definition at line 14 of file MeasurementToTruthParticleAssociation.h.

◆ NTruthParticlesPerTrack

unsigned int ActsTrk::NTruthParticlesPerTrack = 5
constexpr

Definition at line 20 of file TrackToTruthParticleAssociation.h.

◆ ONE_TWELFTH

double ActsTrk::ONE_TWELFTH = 1./12.
constexpr

Definition at line 19 of file StripClusteringTool.cxx.

◆ oneStripSF

float ActsTrk::oneStripSF = 1.1025
constexpr

Definition at line 20 of file StripClusteringTool.cxx.

◆ TrackFindingValidationDebugHists

bool ActsTrk::TrackFindingValidationDebugHists = false
constexpr

Definition at line 40 of file TrackTruthMatchingBaseAlg.h.

◆ TrackFindingValidationDetailedStat

bool ActsTrk::TrackFindingValidationDetailedStat = true
constexpr

Definition at line 41 of file TrackTruthMatchingBaseAlg.h.

◆ TrackToTruthParticleAssociationDebugHists

bool ActsTrk::TrackToTruthParticleAssociationDebugHists = false
constexpr

Definition at line 43 of file TrackToTruthAssociationAlg.h.

◆ TruthParticleHitCountDebugHists

bool ActsTrk::TruthParticleHitCountDebugHists = false
constexpr

Definition at line 40 of file TruthParticleHitCountAlg.h.

◆ twoStripSF

float ActsTrk::twoStripSF = 0.0729
constexpr

Definition at line 21 of file StripClusteringTool.cxx.