ATLAS Offline Software
HGTDTrackExtensionAlg.h
Go to the documentation of this file.
1 
12 #ifndef HGTDTRACKEXTENSIONALG_H
13 #define HGTDTRACKEXTENSIONALG_H
14 
15 // Base Class
17 
18 // Gaudi
19 #include "GaudiKernel/ToolHandle.h"
20 #include "GaudiKernel/EventContext.h"
21 
22 // Athena
29 
30 // STL
31 #include <memory>
32 #include <string>
33 
34 // Handle Keys
40 #include "src/detail/Definitions.h"
44 
45 // Acts
46 #include "Acts/EventData/TrackContainer.hpp"
51 
52 // Tools
56 #include "Acts/Surfaces/PerigeeSurface.hpp"
57 
58 
59 namespace ActsTrk {
60 
62 
63 public:
64  using AthReentrantAlgorithm::AthReentrantAlgorithm;
65  virtual ~HGTDTrackExtensionAlg() = default;
66  virtual StatusCode initialize() override;
67  virtual StatusCode execute(const EventContext&) const override;
68  using CKFOptions = Acts::CombinatorialKalmanFilterOptions<detail::RecoTrackContainer>;
69 
70 private:
71  xAOD::TrackParticle* CKFTrackExtension(const Acts::BoundTrackParameters* parameters);
73  const Acts::Logger &logger() const { return *m_logger; }
74 
75  // Properties
76  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_trackParticleContainerName{this, "TrackParticleContainerName", "", "Name of the TrackParticle container"};
77  SG::ReadHandleKey<xAOD::HGTDClusterContainer> m_HGTDClusterContainerName{this, "HGTDClusterContainerName", "", "the HGTD clusters"};
78 
79  // WriteDecorHandleKeys for decorating tracks
80  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_numHGTDHitsKey{this, "numHGTDHits", m_trackParticleContainerName, "numHGTDHits", "Number of HGTD hits on the track extension"};
81 
82  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_layerHasExtensionKey { this, "HGTD_has_extension", m_trackParticleContainerName, "HGTD_has_extension", "Decoration for layer extension" };
83  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_layerExtensionChi2Key { this, "HGTD_extension_chi2", m_trackParticleContainerName, "HGTD_extension_chi2", "Decoration for chi2 of extension" };
84  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_layerClusterRawTimeKey { this, "HGTD_cluster_raw_time", m_trackParticleContainerName, "HGTD_cluster_raw_time", "Decoration for raw time of cluster" };
85  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_layerClusterTimeKey { this, "HGTD_cluster_time", m_trackParticleContainerName, "HGTD_cluster_time", "Decoration for cluster time" };
86  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_extrapXKey { this, "HGTD_extrap_x", m_trackParticleContainerName, "HGTD_extrap_x", "Decoration for extrapolated X coordinate" };
87  SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> m_extrapYKey { this, "HGTD_extrap_y", m_trackParticleContainerName, "HGTD_extrap_y", "Decoration for extrapolated Y coordinate" };
88 
89 
91 
92 
93  Gaudi::Property<float> m_minEtaAcceptance {this, "MinEtaAcceptance", 2.38, "Minimum eta to consider a track for extension"};
94  Gaudi::Property<float> m_maxEtaAcceptance {this, "MaxEtaAcceptance", 4.00, "Maximum eta to consider a track for extension"};
95 
96  // Tool Handles
97  ToolHandle<GenericMonitoringTool>
98  m_monTool{this, "MonTool", "", "Monitoring tool"};
99  PublicToolHandle<ActsTrk::ITrackingGeometryTool>
100  m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
101  ToolHandle<IActsExtrapolationTool>
102  m_extrapolationTool{this, "ExtrapolationTool", ""};
103 
104  ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
105  m_pixelCalibTool{this, "PixelCalibrator", "", "Opt. pixel measurement calibrator"};
106  ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
107  m_stripCalibTool{this, "StripCalibrator", "", "Opt. strip measurement calibrator"};
108  ToolHandle<ActsTrk::IOnTrackCalibratorTool<detail::RecoTrackStateContainer>>
109  m_hgtdCalibTool{this, "HGTDCalibrator", "", "Opt. HGTD measurement calibrator"};
110 
111  ToolHandle<ActsTrk::TrackStatePrinterTool>
112  m_trackStatePrinter{this, "TrackStatePrinter", "", "optional track state printer"};
113 
115 
116  //HGTD
117  SG::ReadHandleKey<xAOD::UncalibratedMeasurementContainer> m_uncalibratedMeasurementContainerKey_HGTD{this, "UncalibratedMeasurementContainerKey_HGTD", "", "input cluster collections for HGTD"};
118  // Removed DetectorElementToActsGeometryIdMap - modern approach uses surface accessor
119 
120  // logging instance
121  std::unique_ptr<const Acts::Logger> m_logger;
122 
123  std::unique_ptr<detail::CKF_config> m_trackFinder;
124 
125  StatusCode collectMeasurements(const EventContext& context,
126  detail::TrackFindingMeasurements& measurements) const;
127 
131  std::vector<bool> hasClusterVec = {false, false, false, false};
132  std::vector<float> chi2Vec = {0.0, 0.0, 0.0, 0.0};
133  std::vector<float> rawTimeVec = {0.0, 0.0, 0.0, 0.0};
134  std::vector<float> timeVec = {0.0, 0.0, 0.0, 0.0};
135  float extrapX = 0.0;
136  float extrapY = 0.0;
137  float extrapZ = 0.0;
138  int numHGTDHits = 0;
139  };
140 
142  const EventContext& ctx,
143  const xAOD::TrackParticle* trackParticle,
144  const detail::RecoTrackContainer::TrackProxy& trackProxy) const;
145 
146  std::pair<float, float> correctTOF(
147  const xAOD::TrackParticle* trackParticle,
148  const xAOD::HGTDCluster* cluster,
149  float measuredTime,
150  float measuredTimeErr,
151  const Acts::TrackingGeometry* trackingGeometry,
152  const Acts::GeometryContext& geoContext) const;
153 
155 
156  Acts::CalibrationContext m_calibrationContext;
157 
158  std::size_t getHGTDLayerIndex(const Acts::GeometryIdentifier& geoID) const;
159  bool isHGTDSurface(const Acts::GeometryIdentifier& geoID) const;
160  bool getExtrapolationPosition(const EventContext& ctx,
161  const detail::RecoTrackContainer::TrackProxy& track,
162  float& x, float& y, float& z) const;
163 
164 };
165 } // namespace ActsTrk
166 
167 
168 #endif // HGTDTRACKEXTENSIONALG_H
169 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer >
UncalibratedMeasurement.h
ActsTrk::HGTDTrackExtensionAlg::m_trackStatePrinter
ToolHandle< ActsTrk::TrackStatePrinterTool > m_trackStatePrinter
Definition: HGTDTrackExtensionAlg.h:112
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
ActsTrk::detail::TrackFindingMeasurements
Definition: TrackFindingMeasurements.h:21
Definitions.h
ActsTrk::HGTDTrackExtensionAlg::m_trackFinder
std::unique_ptr< detail::CKF_config > m_trackFinder
Definition: HGTDTrackExtensionAlg.h:123
ActsTrk::HGTDTrackExtensionAlg::m_layerClusterRawTimeKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterRawTimeKey
Definition: HGTDTrackExtensionAlg.h:84
TrackParameters.h
IOnTrackCalibratorTool.h
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::timeVec
std::vector< float > timeVec
TOF-corrected time per HGTD layer.
Definition: HGTDTrackExtensionAlg.h:134
ActsTrk::HGTDTrackExtensionAlg::m_pixelCalibTool
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_pixelCalibTool
Definition: HGTDTrackExtensionAlg.h:105
ActsTrk::HGTDTrackExtensionAlg::m_layerHasExtensionKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerHasExtensionKey
Definition: HGTDTrackExtensionAlg.h:82
xAOD::HGTDCluster_v1
Definition: HGTDCluster_v1.h:23
SG::ReadHandleKey< xAOD::TrackParticleContainer >
TrackFindingMeasurements.h
x
#define x
ActsTrk::HGTDTrackExtensionAlg::m_minEtaAcceptance
Gaudi::Property< float > m_minEtaAcceptance
Definition: HGTDTrackExtensionAlg.h:93
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
ActsTrk::HGTDTrackExtensionAlg::m_hgtdCalibTool
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_hgtdCalibTool
Definition: HGTDTrackExtensionAlg.h:109
ActsTrk::HGTDTrackExtensionAlg::execute
virtual StatusCode execute(const EventContext &) const override
Definition: HGTDTrackExtensionAlg.cxx:120
ActsTrk::HGTDTrackExtensionAlg::m_extrapolationTool
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
Definition: HGTDTrackExtensionAlg.h:102
ActsTrk::HGTDTrackExtensionAlg::getExtrapolationPosition
bool getExtrapolationPosition(const EventContext &ctx, const detail::RecoTrackContainer::TrackProxy &track, float &x, float &y, float &z) const
Definition: HGTDTrackExtensionAlg.cxx:648
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::extrapZ
float extrapZ
Extrapolated Z position at HGTD.
Definition: HGTDTrackExtensionAlg.h:137
GeoPrimitives.h
GenericMonitoringTool.h
ActsTrk::HGTDTrackExtensionAlg::m_actsTrackLinkKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_actsTrackLinkKey
Definition: HGTDTrackExtensionAlg.h:90
ActsTrk::HGTDTrackExtensionAlg::m_extrapXKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_extrapXKey
Definition: HGTDTrackExtensionAlg.h:86
WriteDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
ActsTrk::HGTDTrackExtensionAlg::m_logger
std::unique_ptr< const Acts::Logger > m_logger
Definition: HGTDTrackExtensionAlg.h:121
ActsTrk::detail::RecoConstTrackStateContainerProxy
RecoTrackStateContainer::ConstTrackStateProxy RecoConstTrackStateContainerProxy
Definition: Tracking/Acts/ActsTrackReconstruction/src/detail/Definitions.h:26
z
#define z
ActsTrk::HGTDTrackExtensionAlg::getHGTDLayerIndex
std::size_t getHGTDLayerIndex(const Acts::GeometryIdentifier &geoID) const
Definition: HGTDTrackExtensionAlg.cxx:615
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::extrapY
float extrapY
Extrapolated Y position at HGTD.
Definition: HGTDTrackExtensionAlg.h:136
ActsTrk::HGTDTrackExtensionAlg::m_trackParticleContainerName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerName
Definition: HGTDTrackExtensionAlg.h:76
ActsTrk::HGTDTrackExtensionAlg::m_HGTDClusterContainerName
SG::ReadHandleKey< xAOD::HGTDClusterContainer > m_HGTDClusterContainerName
Definition: HGTDTrackExtensionAlg.h:77
HGTDClusterContainer.h
ActsTrk::HGTDTrackExtensionAlg::m_layerExtensionChi2Key
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerExtensionChi2Key
Definition: HGTDTrackExtensionAlg.h:83
TrackStatePrinterTool.h
CondHandleKeyArray.h
ActsTrk::HGTDTrackExtensionAlg::m_maxEtaAcceptance
Gaudi::Property< float > m_maxEtaAcceptance
Definition: HGTDTrackExtensionAlg.h:94
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData
Data structure to hold HGTD track extension results Contains information about hits,...
Definition: HGTDTrackExtensionAlg.h:130
AthReentrantAlgorithm.h
ActsTrk::HGTDTrackExtensionAlg::collectMeasurements
StatusCode collectMeasurements(const EventContext &context, detail::TrackFindingMeasurements &measurements) const
Definition: HGTDTrackExtensionAlg.cxx:348
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::chi2Vec
std::vector< float > chi2Vec
Chi2 contribution per HGTD layer.
Definition: HGTDTrackExtensionAlg.h:132
ActsTrk::HGTDTrackExtensionAlg::CKFOptions
Acts::CombinatorialKalmanFilterOptions< detail::RecoTrackContainer > CKFOptions
Definition: HGTDTrackExtensionAlg.h:68
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::hasClusterVec
std::vector< bool > hasClusterVec
Whether track has cluster in each HGTD layer.
Definition: HGTDTrackExtensionAlg.h:131
ActsTrk::HGTDTrackExtensionAlg::getHGTDClusterFromState
const xAOD::HGTDCluster * getHGTDClusterFromState(const ActsTrk::detail::RecoConstTrackStateContainerProxy &state) const
Definition: HGTDTrackExtensionAlg.cxx:819
ActsTrk::HGTDTrackExtensionAlg::correctTOF
std::pair< float, float > correctTOF(const xAOD::TrackParticle *trackParticle, const xAOD::HGTDCluster *cluster, float measuredTime, float measuredTimeErr, const Acts::TrackingGeometry *trackingGeometry, const Acts::GeometryContext &geoContext) const
Definition: HGTDTrackExtensionAlg.cxx:733
ActsTrk::HGTDTrackExtensionAlg::m_trackingGeometryTool
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Definition: HGTDTrackExtensionAlg.h:100
ActsTrk::HGTDTrackExtensionAlg::processTrackExtension
TrackExtensionData processTrackExtension(const EventContext &ctx, const xAOD::TrackParticle *trackParticle, const detail::RecoTrackContainer::TrackProxy &trackProxy) const
Definition: HGTDTrackExtensionAlg.cxx:393
xAODUncalibMeasSurfAcc.h
ActsTrk::HGTDTrackExtensionAlg::logger
const Acts::Logger & logger() const
Private access to the logger.
Definition: HGTDTrackExtensionAlg.h:73
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::numHGTDHits
int numHGTDHits
Total number of HGTD hits on extended track.
Definition: HGTDTrackExtensionAlg.h:138
TrackParticle.h
ActsTrk::HGTDTrackExtensionAlg::m_surfAcc
ActsTrk::detail::xAODUncalibMeasSurfAcc m_surfAcc
Definition: HGTDTrackExtensionAlg.h:114
ActsTrk::HGTDTrackExtensionAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: HGTDTrackExtensionAlg.h:98
ActsTrk::HGTDTrackExtensionAlg::m_layerClusterTimeKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterTimeKey
Definition: HGTDTrackExtensionAlg.h:85
y
#define y
ActsTrk::HGTDTrackExtensionAlg::m_uncalibratedMeasurementContainerKey_HGTD
SG::ReadHandleKey< xAOD::UncalibratedMeasurementContainer > m_uncalibratedMeasurementContainerKey_HGTD
Definition: HGTDTrackExtensionAlg.h:117
ActsTrk::HGTDTrackExtensionAlg
Definition: HGTDTrackExtensionAlg.h:61
ActsTrk::HGTDTrackExtensionAlg::isHGTDSurface
bool isHGTDSurface(const Acts::GeometryIdentifier &geoID) const
Definition: HGTDTrackExtensionAlg.cxx:715
ITrackingGeometryTool.h
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
ActsTrk::HGTDTrackExtensionAlg::m_calibrationContext
Acts::CalibrationContext m_calibrationContext
Definition: HGTDTrackExtensionAlg.h:156
ActsTrk::HGTDTrackExtensionAlg::CKFTrackExtension
xAOD::TrackParticle * CKFTrackExtension(const Acts::BoundTrackParameters *parameters)
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::extrapX
float extrapX
Extrapolated X position at HGTD.
Definition: HGTDTrackExtensionAlg.h:135
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MSTrackingVolumeBuilder.cxx:25
ActsTrk::HGTDTrackExtensionAlg::m_extrapYKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_extrapYKey
Definition: HGTDTrackExtensionAlg.h:87
DuplicateSeedDetector.h
ActsTrk::detail::xAODUncalibMeasSurfAcc
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
Definition: xAODUncalibMeasSurfAcc.h:22
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TrackContainerHandlesHelper.h
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
ActsTrk::HGTDTrackExtensionAlg::m_numHGTDHitsKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_numHGTDHitsKey
Definition: HGTDTrackExtensionAlg.h:80
ActsTrk::HGTDTrackExtensionAlg::~HGTDTrackExtensionAlg
virtual ~HGTDTrackExtensionAlg()=default
ActsTrk::HGTDTrackExtensionAlg::TrackExtensionData::rawTimeVec
std::vector< float > rawTimeVec
Raw measured time per HGTD layer.
Definition: HGTDTrackExtensionAlg.h:133
TrackContainer.h
ActsTrk::HGTDTrackExtensionAlg::initialize
virtual StatusCode initialize() override
Definition: HGTDTrackExtensionAlg.cxx:42
ActsTrk::HGTDTrackExtensionAlg::m_stripCalibTool
ToolHandle< ActsTrk::IOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_stripCalibTool
Definition: HGTDTrackExtensionAlg.h:107
TrackParticleContainer.h
IActsExtrapolationTool.h