4#ifndef ACTSCALOALGS_CALOEXTENSIONALG_H
5#define ACTSCALOALGS_CALOEXTENSIONALG_H
26#include "Acts/Propagator/Propagator.hpp"
27#include "Acts/Propagator/Navigator.hpp"
28#include "Acts/Propagator/EigenStepper.hpp"
29#include "Acts/Utilities/Grid.hpp"
48 using AthReentrantAlgorithm::AthReentrantAlgorithm;
49 virtual StatusCode
initialize()
override final;
50 virtual StatusCode
execute(
const EventContext& ctx)
const override final;
59 using EtaAxis_t = Acts::Axis<Acts::AxisType::Equidistant,
60 Acts::AxisBoundaryType::Bound>;
63 using PhiAxis_t = Acts::Axis<Acts::AxisType::Equidistant,
64 Acts::AxisBoundaryType::Closed>;
96 std::span<const xAOD::CaloCluster* const> clusterContainer,
106 const Acts::BoundTrackParameters& lastTrkPars)
const;
116 ToolHandle<InDet::IInDetTrackSelectionTool>
m_trackSelector{
this,
"TrackSelectionTool" ,
""};
118 ToolHandle<IegammaCaloClusterSelector>
m_clusterSelector{
this,
"ClusterSelector",
"egammaCaloClusterSelector",
119 "Tool that makes the cluster selection"};
132 "InDetTrackParticles" };
135 "caloExtensionLink"};
142 Gaudi::Property<float>
m_trackPt{
this,
"minPt", 2.5*Gaudi::Units::GeV};
145 Gaudi::Property<float>
m_broadDeltaEta{
this,
"broadDeltaEta", 0.2,
"Value of broad cut for delta eta" };
147 Gaudi::Property<float>
m_broadDeltaPhi{
this,
"broadDeltaPhi", 0.3,
"Value of broad cut for delta phi" };
149 Gaudi::Property<float>
m_minClustEt{
this,
"minClusterEt", 10.*Gaudi::Units::MeV};
Definition of CaloDetDescrManager.
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.
Property holding a SG store/key/clid from which a WriteHandle is made.
The CaloExtensionAlg takes the ID / ITk tracks from their track state of their last measurement and p...
ToolHandle< InDet::IInDetTrackSelectionTool > m_trackSelector
Track quality selection tool (optional).
Gaudi::Property< float > m_minClustEt
Minimum requirement on the cluster's transversal energy in order to be considered.
ToolHandle< IegammaCaloClusterSelector > m_clusterSelector
Tool to filter the calo clusters.
virtual StatusCode execute(const EventContext &ctx) const override final
Gaudi::Property< float > m_narrowDeltaPhi
std::unique_ptr< CurvedPropagator_t > m_propagator
The instance of the propagator.
std::unique_ptr< CaloExtension > propagateToCaloExit(const EventContext &ctx, const xAOD::TrackParticle *track) const
Propagates the Track from the last track measurement to the calorimeter exit and records all surface ...
Acts::Grid< ClusterVec_t, EtaAxis_t, PhiAxis_t > SortedCluster_t
Define the segmen cluster grid made out of calo cluster containers segmented in eta & phi.
std::vector< const xAOD::CaloCluster * > ClusterVec_t
Use an Acts::Grid to segment the cluster in eta / phi space to reduce the matching combinatorics betw...
SortedCluster_t selectAndSort(const xAOD::CaloClusterContainer &clusters, const CaloDetDescrManager *detMgr) const
Selects the calo clusters for the matching to the ID tracks based on the eta range and on a minimum t...
bool checkBroadCriteria(const Acts::GeometryContext &tgContext, const xAOD::CaloCluster &cluster, const Acts::BoundTrackParameters &lastTrkPars) const
Checks whether the track @ its last measurement state is roughly compatible with the calorimeter clus...
virtual StatusCode initialize() override final
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
Tracking geometry service.
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_extensionDecorKey
Decorate the link to the associated CaloExtension directly onto the ID / ITk track.
Acts::EigenStepper< Acts::EigenStepperDefaultExtension > CurvedStepper_t
Setup an own instance of the Acts Prpoagator to schedule the BoundTrackParameter recording & to defin...
Gaudi::Property< float > m_broadDeltaPhi
Acts::Propagator< CurvedStepper_t, Acts::Navigator > CurvedPropagator_t
Gaudi::Property< float > m_trackPt
The minimum momentum cut applied on the ID tracks to be considered.
Gaudi::Property< float > m_maxClustEta
Maximum cut on the cluster's eta in order to be considered.
SG::WriteHandleKey< CaloExtensionContainer > m_caloExtensionKey
std::unordered_map< Acts::GeometryIdentifier, CaloSample > m_geoLayerIds
Acts::Axis< Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Bound > EtaAxis_t
Along eta define an equidistance binning without any overflow bin.
Acts::Axis< Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Closed > PhiAxis_t
Along phi define an equidistance binning but with a circular wrapping connection between the two edge...
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterContainerKey
The input calorimeter cluster collection.
Gaudi::Property< float > m_narrowDeltaEta
Narrow windows.
xAOD::CaloCluster::CaloSample CaloSample
Gaudi::Property< float > m_broadDeltaEta
Broad windowsto initially match the calo cluster with the track exit parameters.
ActsTrk::ContextUtility m_ctxProvider
Context provider for geometry, magnetic field and calibration contexts.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
The input track particle collection.
ToolHandle< IExtrapolationTool > m_extrapolationTool
Acts extrapolation tool to record the surface intersections.
void matchClusters(const Acts::GeometryContext &tgContext, std::span< const xAOD::CaloCluster *const > clusterContainer, CaloExtension &caloExtension) const
Match the selected calorimeter clusters to the calo extension.
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloDetDescrMgrKey
Calo description manager.
The CaloExtension holds the ID extrapolation states through the calorimeter and the associated CaloCl...
Utility class to handle the three contexts neeeded in an ACTS reconstruction job 1) GeometryContext -...
An algorithm that can be simultaneously executed in multiple threads.
This class provides the client interface for accessing the detector description information common to...
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.
Property holding a SG store/key/clid from which a WriteHandle is made.
CaloSampling::CaloSample CaloSample
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.