ATLAS Offline Software
Loading...
Searching...
No Matches
CaloExtensionAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3 */
4#ifndef ACTSCALOALGS_CALOEXTENSIONALG_H
5#define ACTSCALOALGS_CALOEXTENSIONALG_H
6
8
12
16
20
22
25
26#include "Acts/Propagator/Propagator.hpp"
27#include "Acts/Propagator/Navigator.hpp"
28#include "Acts/Propagator/EigenStepper.hpp"
29#include "Acts/Utilities/Grid.hpp"
30
31#include <span>
32#include <map>
33
34namespace ActsTrk{
47 public:
48 using AthReentrantAlgorithm::AthReentrantAlgorithm;
49 virtual StatusCode initialize() override final;
50 virtual StatusCode execute(const EventContext& ctx) const override final;
51
52 private:
57 using ClusterVec_t = std::vector<const xAOD::CaloCluster*>;
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>;
67 using SortedCluster_t = Acts::Grid<ClusterVec_t, EtaAxis_t, PhiAxis_t>;
68
79 const CaloDetDescrManager* detMgr) const;
80
87 std::unique_ptr<CaloExtension> propagateToCaloExit(const EventContext& ctx,
88 const xAOD::TrackParticle* track) const;
89
95 void matchClusters(const Acts::GeometryContext& tgContext,
96 std::span<const xAOD::CaloCluster* const> clusterContainer,
97 CaloExtension& caloExtension) const;
98
104 bool checkBroadCriteria(const Acts::GeometryContext& tgContext,
105 const xAOD::CaloCluster& cluster,
106 const Acts::BoundTrackParameters& lastTrkPars) const;
107
111 using CurvedStepper_t = Acts::EigenStepper<Acts::EigenStepperDefaultExtension>;
112 using CurvedPropagator_t = Acts::Propagator<CurvedStepper_t, Acts::Navigator>;
114 std::unique_ptr<CurvedPropagator_t> m_propagator{};
116 ToolHandle<InDet::IInDetTrackSelectionTool> m_trackSelector{this, "TrackSelectionTool" , ""};
118 ToolHandle<IegammaCaloClusterSelector> m_clusterSelector{this, "ClusterSelector", "egammaCaloClusterSelector",
119 "Tool that makes the cluster selection"};
120
121 ServiceHandle<ActsTrk::ITrackingGeometrySvc> m_trackingGeometrySvc{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};
124
126 ToolHandle<IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", ""};
127
129 SG::ReadHandleKey<xAOD::CaloClusterContainer> m_clusterContainerKey {this, "ClusterContainerName", "CaloCalTopoClusters"};
132 "InDetTrackParticles" };
133
136
137 SG::ReadCondHandleKey<CaloDetDescrManager> m_caloDetDescrMgrKey {this, "CaloDetDescrManager", "CaloDetDescrManager"};
138
139 SG::WriteHandleKey<CaloExtensionContainer> m_caloExtensionKey{this, "CaloExtensionName", "CaloExtension"};
140
142 Gaudi::Property<float> m_trackPt{this, "minPt", 2.5*Gaudi::Units::GeV};
143
145 Gaudi::Property<float> m_broadDeltaEta{this, "broadDeltaEta", 0.2, "Value of broad cut for delta eta" };
146
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};
151 Gaudi::Property<float> m_maxClustEta{this, "maxClustEta", 10.};
152
153
156 Gaudi::Property<float> m_narrowDeltaEta{this, "narrowDeltaEta", 0.05};
157
158 Gaudi::Property<float> m_narrowDeltaPhi{this, "narrowDeltaPhi", 0.05};
159
160 std::unordered_map<Acts::GeometryIdentifier, CaloSample> m_geoLayerIds{};
161
162 };
163}
164
165#endif
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.