5#ifndef HGTDTRACKEXTENSIONALG_TRUTHDECORATION_H
6#define HGTDTRACKEXTENSIONALG_TRUTHDECORATION_H
17#include "Identifier/Identifier.h"
34#include <unordered_map>
51 using AthReentrantAlgorithm::AthReentrantAlgorithm;
55 virtual StatusCode
execute(
const EventContext&)
const override;
113 const typename ActsTrk::TrackContainer::ConstTrackProxy trackProxy,
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerName
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterShadowedKey
const HGTD_ID * m_id_helper
Handle to the ID helper.
SG::ReadHandleKey< MeasurementToTruthParticleAssociation > m_hgtdClustersToTruth
SG::ReadHandleKey< xAOD::UncalibratedMeasurementContainer > m_uncalibratedMeasurementContainerKey_HGTD
StatusCode buildPrimaryExpectedLookup(const xAOD::UncalibratedMeasurementContainer &measurementContainer, const ActsTrk::MeasurementToTruthParticleAssociation *association_map, PrimaryExpectedLookup &lookup) const
Builds, once per event, the map from truth particle index onto the set of HGTD layers in which that p...
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterMergedKey
std::array< char, s_nHgtdLayers > HgtdLayerFlags
Per-layer flags for a single truth particle.
virtual StatusCode execute(const EventContext &) const override
static constexpr std::size_t s_nHgtdLayers
Number of HGTD layers the per-track decorations are indexed by.
std::unordered_map< std::size_t, HgtdLayerFlags > PrimaryExpectedLookup
Maps the index of a truth particle onto the HGTD layers it deposited a hit in.
virtual StatusCode initialize() override
SG::ReadHandleKey< ActsTrk::TrackContainer > m_trackContainerKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_truthParticleLinkKey
ActsTrk::detail::xAODUncalibMeasSurfAcc m_surfAcc
std::unique_ptr< SG::AuxElement::Accessor< int > > m_acc_nHgtdHits
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerPrimaryExpectedKey
TruthTrackExtensionData createTruthDecoration(const xAOD::TruthParticle *truthParticle, const typename ActsTrk::TrackContainer::ConstTrackProxy trackProxy, const ActsTrk::MeasurementToTruthParticleAssociation *association_map) const
Generate TruthTrackExtensionData from extension.
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_hgtdTrackLinkKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterTruthClassKey
virtual ~HGTDTruthTrackDecorationAlg()=default
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
An algorithm that can be simultaneously executed in multiple threads.
This is an Identifier helper class for the HGTD subdetector.
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
GenUncalibSourceLinkAccessor< MeasurementRangeList > UncalibSourceLinkAccessor
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
detail::UncalibSourceLinkAccessor AtlUncalibSourceLinkAccessor
TruthParticle_v1 TruthParticle
Typedef to implementation.
UncalibratedMeasurementContainer_v1 UncalibratedMeasurementContainer
Define the version of the uncalibrated measurement container.
bool is_merged
A cluster is considered to be merged if more than one particle deposited energy in a given pad.
bool is_shadowed
Shadowing means that a deposit was left by the truth particle, but it was not the first deposit and i...
ClusterTruthOrigin origin
Data structure to hold truth information about the HGTD track extension.
std::vector< int > truthClassVec
Truth classification per HGTD layer.
std::vector< char > isShadowedVec
Whether cluster is shadowed per layer.
std::vector< char > primaryExistsVec
Whether primary is expected per layer.
std::vector< char > isMergedVec
Whether cluster is merged per layer.