ATLAS Offline Software
Loading...
Searching...
No Matches
TrackFindingBaseAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRACKRECONSTRUCTION_TRACKFINDINGBASEALG_H
6#define ACTSTRACKRECONSTRUCTION_TRACKFINDINGBASEALG_H
7
8// Base Class
10
11
12// Tools
17
18// ACTS
19#include "Acts/EventData/ProxyAccessor.hpp"
20
21// ActsTrk
26
27// Athena
29
30// Handle Keys
35
36namespace ActsTrk {
37 namespace detail {
39 class SharedHitCounter;
40 }
41
43 public:
44 TrackFindingBaseAlg(const std::string &name, ISvcLocator *pSvcLocator);
46
47 virtual StatusCode initialize() override;
48 virtual StatusCode finalize() override;
49 virtual StatusCode execute(const EventContext &ctx) const override;
50
51 protected:
52 using TrackFinderOptions = Acts::CombinatorialKalmanFilterOptions<detail::RecoTrackContainer>;
53
55 // (measurement, outlier) chi2 cuts for each eta bin and measurement dimension (index 0 not used)
56 std::vector<std::array<std::pair<float, float>, 4>> m_chi2CutOffOutlier;
57 std::vector<float> m_etaBins;
59
61 Acts::GeometryContext geometry;
62 Acts::MagneticFieldContext magField;
63 Acts::CalibrationContext calib;
64 };
65
71
72 // Access Acts::CombinatorialKalmanFilter etc using "pointer to implementation"
73 // so we don't have to instantiate the heavily templated classes in the header.
74 // To maintain const-correctness, only use this via the accessor functions.
75 struct CKF_pimpl;
76
78 const CKF_pimpl &trackFinder() const;
79
80 std::unique_ptr<CKF_pimpl> m_trackFinder;
81
82
83 // Tool Handles
84 ToolHandle<GenericMonitoringTool> m_monTool{this, "MonTool", "", "Monitoring tool"};
85 ServiceHandle<ActsTrk::ITrackingGeometrySvc> m_trackingGeometrySvc{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};
86 ToolHandle<ActsTrk::TrackStatePrinterTool> m_trackStatePrinter{this, "TrackStatePrinter", "", "optional track state printer"};
87 ToolHandle<ActsTrk::IPixelOnTrackCalibratorTool<detail::RecoTrackStateContainer>> m_pixelCalibTool{this, "PixelCalibrator", "", "Opt. pixel measurement calibrator"};
88 ToolHandle<ActsTrk::IStripOnTrackCalibratorTool<detail::RecoTrackStateContainer>> m_stripCalibTool{this, "StripCalibrator", "", "Opt. strip measurement calibrator"};
89 ToolHandle<ActsTrk::IHGTDOnTrackCalibratorTool<detail::RecoTrackStateContainer>> m_hgtdCalibTool{this, "HGTDCalibrator", "", "Opt. HGTD measurement calibrator"};
90
91 SG::WriteHandleKey<ActsTrk::TrackContainer> m_trackContainerKey{this, "ACTSTracksLocation", "", "Output track collection (ActsTrk variant)"};
93
96 // Configuration
97 Gaudi::Property<unsigned int> m_maxPropagationStep{this, "maxPropagationStep", 1000, "Maximum number of steps for one propagate call"};
98 Gaudi::Property<std::vector<double>> m_etaBins{this, "etaBins", {}, "bins in |eta| to specify variable selections"};
99 // Acts::MeasurementSelector selection cuts for associating measurements with predicted track parameters on a surface.
100 Gaudi::Property<std::vector<double>> m_chi2CutOffSigma{this, "chi2CutOffSigma", {},
101 "MeasurementSelector: maximum local chi2 contribution for each eta bin, in sigma of a 1D Gaussian. The p-value of a two-sided cut at this number of sigma gives the chi2 cut for each measurement dimension."};
102 Gaudi::Property<std::vector<double>> m_chi2OutlierCutOffSigma{this, "chi2OutlierCutOffSigma", {},
103 "MeasurementSelector: maximum local chi2 contribution for outliers for each eta bin, in sigma, see chi2CutOffSigma. If empty, there is no cut."};
104 Gaudi::Property<std::vector<size_t>> m_numMeasurementsCutOff{this, "numMeasurementsCutOff", {}, "MeasurementSelector: maximum number of associated measurements on a single surface"};
105 Gaudi::Property<double> m_edgeHoleBorderWidth{this,"EdgeHoleBorderWidth", 0. ,"Width of the border of surfaces (mm) within which holes are not counted as holes."};
106 Gaudi::Property<std::vector<std::size_t>> m_ptMinMeasurements{this, "ptMinMeasurements", {}, "if specified for the given seed collection, applies ptMin cut in branch stopper once ptMinMinMeasurements have been encountered"};
107 Gaudi::Property<std::vector<std::size_t>> m_absEtaMaxMeasurements{this, "absEtaMaxMeasurements", {}, "if specified for the given seed collection, applies absEtaMax cut in branch stopper once absEtaMaxMeasurements have been encountered"};
108 Gaudi::Property<bool> m_doBranchStopper{this, "doBranchStopper", true, "use branch stopper"};
109 // The second pass extends a track the first pass already found, so its
110 // stopper truncates the extension instead of dropping the track.
111 Gaudi::Property<bool> m_doSecondPassBranchStopper{this, "doSecondPassBranchStopper", false, "run the branch stopper in the second pass, keeping instead of dropping"};
112 Gaudi::Property<bool> m_doTwoWay{this, "doTwoWay", true, "run CKF twice, first with forward propagation with smoothing, then with backward propagation"};
113 Gaudi::Property<bool> m_recordMaterialStates{this, "recordMaterialStates", false, "record track states on surfaces which have material but no measurement; keeping them off is faster, but they have to be on for the multi-component stepper and for anything downstream which needs the full track state sequence"};
114 Gaudi::Property<bool> m_inflateCovarianceTwoWay{this, "inflateCovarianceTwoWay", false, "inflate covariance matrix at the beginning of two-way track finding"};
115 Gaudi::Property<double> m_twoWayinflateCovarianceFactor{this, "twoWayinflateCovarianceFactor", 1.0, "factor to multiply the initial covariance matrix at the beginning of two-way track finding"};
116 Gaudi::Property<double> m_branchStopperPtMinFactor{this, "branchStopperPtMinFactor", 1.0, "factor to multiply ptMin cut when used in the branch stopper"};
117 Gaudi::Property<double> m_seedRefitPtMinFactor{this, "seedRefitPtMinFactor", 1.0, "factor to multiply ptMin cut when used in the seed refit"};
118 Gaudi::Property<double> m_branchStopperAbsEtaMaxExtra{this, "branchStopperAbsEtaMaxExtra", 0.0, "increase absEtaMax cut when used in the branch stopper"};
119 Gaudi::Property<double> m_branchStopperMeasCutReduce{this, "branchStopperMeasCutReduce", 2, "how much to reduce the minMeas requirement for the branch stopper"};
120 Gaudi::Property<double> m_branchStopperAbsEtaMeasCut{this, "branchStopperAbsEtaMeasCut", 1.2, "the minimum |eta| to apply the reduction to the minMeas requirement for the branch stopper"};
121
122 // Acts::TrackSelector cuts
123 // Use max double, because mergeConfdb2.py doesn't like std::numeric_limits<double>::infinity() (produces bad Python "inf.0")
124 Gaudi::Property<std::vector<double>> m_phiMin{this, "phiMin", {}, "TrackSelector: phiMin"};
125 Gaudi::Property<std::vector<double>> m_phiMax{this, "phiMax", {}, "TrackSelector: phiMax"};
126 Gaudi::Property<std::vector<double>> m_etaMin{this, "etaMin", {}, "TrackSelector: etaMin"};
127 Gaudi::Property<std::vector<double>> m_etaMax{this, "etaMax", {}, "TrackSelector: etaMax"};
128 Gaudi::Property<double> m_absEtaMin{this, "absEtaMin", 0.0, "TrackSelector: absEtaMin"};
129 Gaudi::Property<double> m_absEtaMax{this, "absEtaMax", std::numeric_limits<double>::max(), "TrackSelector: absEtaMax"};
130 Gaudi::Property<std::vector<double>> m_ptMin{this, "ptMin", {}, "TrackSelector: ptMin"};
131 Gaudi::Property<std::vector<double>> m_ptMax{this, "ptMax", {}, "TrackSelector: ptMax"};
132 Gaudi::Property<std::vector<double>> m_d0Min{this, "d0Min", {}, "TrackSelector: d0Min"};
133 Gaudi::Property<std::vector<double>> m_d0Max{this, "d0Max", {}, "TrackSelector: d0Max"};
134 Gaudi::Property<std::vector<double>> m_z0Min{this, "z0Min", {}, "TrackSelector: z0Min"};
135 Gaudi::Property<std::vector<double>> m_z0Max{this, "z0Max", {}, "TrackSelector: z0Max"};
136
137 Gaudi::Property<std::vector<std::size_t>> m_minMeasurements{this, "minMeasurements", {}, "TrackSelector: minMeasurements"};
138 Gaudi::Property<std::vector<std::size_t>> m_maxHoles{this, "maxHoles", {}, "TrackSelector: maxHoles"};
139 Gaudi::Property<std::vector<std::size_t>> m_maxOutliers{this, "maxOutliers", {}, "TrackSelector: maxOutliers"};
140 Gaudi::Property<std::vector<std::size_t>> m_maxHolesAndOutliers{this, "maxHolesAndOutliers", {}, "TrackSelector: maximum number of holes and outliers together"};
141 Gaudi::Property<std::vector<std::size_t>> m_maxSharedHits{this, "maxSharedHits", {}, "TrackSelector: maxSharedHits"};
142 Gaudi::Property<std::vector<double>> m_maxChi2{this, "maxChi2", {}, "TrackSelector: maxChi2"};
143
144 Gaudi::Property<bool> m_addCounts{this, "addCounts", true, "keep separate pixel, strip and hgtd counts and apply the following cuts"};
145 Gaudi::Property<bool> m_checkCounts{this, "checkCounts", false, "check consistency among track state counts"};
146 Gaudi::Property<std::vector<std::size_t>> m_minPixelHits{this, "minPixelHits", {}, "minimum number of pixel hits"};
147 Gaudi::Property<std::vector<std::size_t>> m_minStripHits{this, "minStripHits", {}, "minimum number of strip hits"};
148 Gaudi::Property<std::vector<std::size_t>> m_minHgtdHits{this, "minHgtdHits", {}, "minimum number of hgtd hits"};
149 Gaudi::Property<std::vector<std::size_t>> m_maxPixelHoles{this, "maxPixelHoles", {}, "maximum number of pixel holes"};
150 Gaudi::Property<std::vector<std::size_t>> m_maxStripHoles{this, "maxStripHoles", {}, "maximum number of strip holes"};
151 Gaudi::Property<std::vector<std::size_t>> m_maxHgtdHoles{this, "maxHgtdHoles", {}, "maximum number of hgtd holes"};
152 Gaudi::Property<std::vector<std::size_t>> m_maxPixelOutliers{this, "maxPixelOutliers", {}, "maximum number of pixel outliers"};
153 Gaudi::Property<std::vector<std::size_t>> m_maxStripOutliers{this, "maxStripOutliers", {}, "maximum number of strip outliers"};
154 Gaudi::Property<std::vector<std::size_t>> m_maxHgtdOutliers{this, "maxHgtdOutliers", {}, "maximum number of hgtd outliers"};
155
157 Gaudi::Property<std::uint32_t> m_envelopeConstraint{this, "EnvelopeConstaint",
158 Acts::toUnderlying(ActsTrk::SystemEnvelope::ITkExit)};
159
160 Gaudi::Property<std::vector<std::uint32_t>> m_endOfWorldVolumeIds {this, "EndOfTheWorldVolumeIds", {}, ""};
161
162 // configuration of statistics tables
163 Gaudi::Property<std::vector<float>> m_statEtaBins{this, "StatisticEtaBins", {-4, -2.6, -2, 0, 2., 2.6, 4}, "Gather statistics separately for these bins."};
164 Gaudi::Property<std::vector<std::string>> m_seedLabels{this, "SeedLabels", {}, "One label per seed key used in outputs"};
165 Gaudi::Property<bool> m_dumpAllStatEtaBins{this, "DumpEtaBinsForAll", false, "Dump eta bins of all statistics counter."};
166
189
190 using EventStats = std::vector<std::array<unsigned int, kNStat>>;
191
192 // initialize measurement selector to be called during initialize
194
203 [[nodiscard]] std::unique_ptr<ActsTrk::IMeasurementSelector> setMeasurementSelector(
204 const EventContext &ctx,
205 const detail::TrackFindingMeasurements &measurements,
206 TrackFinderOptions &options) const;
207
215 TrackFindingDefaultOptions getDefaultOptions(const EventContext &ctx,
216 const DetectorContextHolder &detContext,
217 const detail::TrackFindingMeasurements &measurements,
218 const Acts::PerigeeSurface* pSurface) const;
219
231 template <class HandleArrayKeyType, class ContainerType>
233 const EventContext &ctx,
234 HandleArrayKeyType &handleKeyArray,
235 std::vector<const ContainerType *> &outputContainers,
236 std::size_t &sum) const;
237
243 const Acts::TrackSelector::Config &getCuts(double eta) const;
244
245 using TrkProxy = detail::RecoTrackContainer::TrackProxy;
246
261 std::vector<typename detail::RecoTrackContainer::TrackProxy>
263 const TrkProxy &trackProxy,
264 detail::RecoTrackContainer &tracksContainerTemp,
265 const TrackFinderOptions &options) const;
266
267 static xAOD::UncalibMeasType measurementType (const detail::RecoTrackContainer::TrackStateProxy &trackState);
268
269 using BranchStopperResult = Acts::CombinatorialKalmanFilterBranchStopperResult;
270
284 const detail::RecoTrackContainer::TrackProxy &track,
285 const detail::RecoTrackContainer::TrackStateProxy &trackState,
286 const Acts::TrackSelector::EtaBinnedConfig &trackSelectorCfg,
287 const Acts::GeometryContext &tgContext,
288 const detail::MeasurementIndex &measurementIndex,
289 const std::size_t typeIndex,
290 EventStats::value_type &event_stat_category_i) const;
291
292 struct BranchState {
293 static constexpr Acts::ProxyAccessor<unsigned int> nPixelHits{"nPixelHits"};
294 static constexpr Acts::ProxyAccessor<unsigned int> nStripHits{"nStripHits"};
295 static constexpr Acts::ProxyAccessor<unsigned int> nHgtdHits{"nHgtdHits"};
296 static constexpr Acts::ProxyAccessor<unsigned int> nPixelHoles{"nPixelHoles"};
297 static constexpr Acts::ProxyAccessor<unsigned int> nStripHoles{"nStripHoles"};
298 static constexpr Acts::ProxyAccessor<unsigned int> nHgtdHoles{"nHgtdHoles"};
299 static constexpr Acts::ProxyAccessor<unsigned int> nPixelOutliers{"nPixelOutliers"};
300 static constexpr Acts::ProxyAccessor<unsigned int> nStripOutliers{"nStripOutliers"};
301 static constexpr Acts::ProxyAccessor<unsigned int> nHgtdOutliers{"nHgtdOutliers"};
302 };
303 static constexpr BranchState s_branchState{};
304
305 static void addCountsAndProperties(detail::RecoTrackContainer &tracksContainer, bool add_counts);
306 static void initCounts(const detail::RecoTrackContainer::TrackProxy &track);
307 static void updateCounts(const detail::RecoTrackContainer::TrackProxy &track,
308 Acts::ConstTrackStateTypeMap typeFlags,
309 xAOD::UncalibMeasType detType);
310 void checkCounts(const detail::RecoTrackContainer::TrackProxy &track) const;
311 std::array<bool, 3> selectCounts(const detail::RecoTrackContainer::TrackProxy &track, double eta) const;
312
313 bool selectCountsFinal(const detail::RecoTrackContainer::TrackProxy &track) const;
314
316 const Acts::Logger &logger() const
317 {
318 return *m_logger;
319 }
320
322 std::unique_ptr<const Acts::Logger> m_logger;
323
324 // statistics
325 void initStatTables();
326 void copyStats(const EventStats &event_stat) const;
327 void printStatTables() const;
328
329 std::size_t nSeedCollections() const {
330 return m_seedLabels.size();
331 }
332 std::size_t seedCollectionStride() const {
333 return m_statEtaBins.size() + 1;
334 }
335 std::size_t getStatCategory(std::size_t seed_collection, float eta) const;
336 std::size_t computeStatSum(std::size_t seed_collection, EStat counter_i, const EventStats &stat) const;
337
338 bool m_useAbsEtaForStat = false;
340 mutable std::mutex m_mutex ATLAS_THREAD_SAFE;
341 mutable std::vector<std::array<std::size_t, kNStat>> m_stat ATLAS_THREAD_SAFE{};
342 };
343} // namespace ActsTrk
344
346
347#endif
Scalar eta() const
pseudorapidity method
Utility class to handle the three contexts neeeded in an ACTS reconstruction job 1) GeometryContext -...
Gaudi::Property< std::vector< std::size_t > > m_maxStripHoles
Gaudi::Property< double > m_branchStopperAbsEtaMeasCut
Gaudi::Property< std::vector< float > > m_statEtaBins
Gaudi::Property< double > m_branchStopperPtMinFactor
Gaudi::Property< std::vector< std::size_t > > m_maxOutliers
Gaudi::Property< std::vector< std::size_t > > m_maxHgtdHoles
std::unique_ptr< const Acts::Logger > m_logger
logging instance
Gaudi::Property< std::vector< double > > m_etaBins
Gaudi::Property< bool > m_doTwoWay
Gaudi::Property< bool > m_dumpAllStatEtaBins
Gaudi::Property< std::vector< size_t > > m_numMeasurementsCutOff
Gaudi::Property< std::vector< std::size_t > > m_maxSharedHits
Gaudi::Property< unsigned int > m_maxPropagationStep
static xAOD::UncalibMeasType measurementType(const detail::RecoTrackContainer::TrackStateProxy &trackState)
ToolHandle< ActsTrk::TrackStatePrinterTool > m_trackStatePrinter
Gaudi::Property< double > m_edgeHoleBorderWidth
Gaudi::Property< std::vector< double > > m_etaMax
Gaudi::Property< std::vector< double > > m_ptMin
Gaudi::Property< std::vector< std::size_t > > m_minPixelHits
Gaudi::Property< std::vector< std::size_t > > m_maxStripOutliers
SG::WriteHandleKey< ActsTrk::TrackContainer > m_trackContainerKey
Gaudi::Property< std::vector< double > > m_chi2CutOffSigma
Gaudi::Property< std::vector< double > > m_ptMax
Gaudi::Property< double > m_seedRefitPtMinFactor
detail::RecoTrackContainer::TrackProxy TrkProxy
Gaudi::Property< std::vector< std::size_t > > m_maxPixelHoles
static constexpr BranchState s_branchState
void copyStats(const EventStats &event_stat) const
Gaudi::Property< std::vector< double > > m_phiMin
Gaudi::Property< double > m_branchStopperMeasCutReduce
ToolHandle< ActsTrk::IPixelOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_pixelCalibTool
Gaudi::Property< std::vector< std::uint32_t > > m_endOfWorldVolumeIds
Gaudi::Property< std::vector< std::size_t > > m_minStripHits
ActsTrk::MutableTrackContainerHandlesHelper m_tracksBackendHandlesHelper
std::size_t getStatCategory(std::size_t seed_collection, float eta) const
std::size_t seedCollectionStride() const
Gaudi::Property< double > m_branchStopperAbsEtaMaxExtra
ToolHandle< GenericMonitoringTool > m_monTool
std::vector< typename detail::RecoTrackContainer::TrackProxy > doTwoWayTrackFinding(const detail::RecoTrackStateContainerProxy &firstMeasurement, const TrkProxy &trackProxy, detail::RecoTrackContainer &tracksContainerTemp, const TrackFinderOptions &options) const
Perform two-way track finding.
Gaudi::Property< std::vector< std::size_t > > m_absEtaMaxMeasurements
TrackFindingBaseAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< std::vector< double > > m_etaMin
Gaudi::Property< bool > m_recordMaterialStates
Gaudi::Property< std::vector< double > > m_d0Min
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< std::vector< std::size_t > > m_maxHgtdOutliers
Gaudi::Property< std::vector< double > > m_z0Max
Gaudi::Property< double > m_absEtaMax
std::size_t computeStatSum(std::size_t seed_collection, EStat counter_i, const EventStats &stat) const
virtual StatusCode initialize() override
StatusCode getContainersFromKeys(const EventContext &ctx, HandleArrayKeyType &handleKeyArray, std::vector< const ContainerType * > &outputContainers, std::size_t &sum) const
Take the array of handle keys and for each key retrieve containers, then append them to the output ve...
Gaudi::Property< std::vector< double > > m_z0Min
void checkCounts(const detail::RecoTrackContainer::TrackProxy &track) const
Gaudi::Property< bool > m_doBranchStopper
static void addCountsAndProperties(detail::RecoTrackContainer &tracksContainer, bool add_counts)
Gaudi::Property< std::vector< std::size_t > > m_minMeasurements
Gaudi::Property< std::vector< double > > m_maxChi2
const Acts::Logger & logger() const
Private access to the logger.
Gaudi::Property< double > m_absEtaMin
BranchStopperResult stopBranch(const detail::RecoTrackContainer::TrackProxy &track, const detail::RecoTrackContainer::TrackStateProxy &trackState, const Acts::TrackSelector::EtaBinnedConfig &trackSelectorCfg, const Acts::GeometryContext &tgContext, const detail::MeasurementIndex &measurementIndex, const std::size_t typeIndex, EventStats::value_type &event_stat_category_i) const
Branch stopper.
static void initCounts(const detail::RecoTrackContainer::TrackProxy &track)
Gaudi::Property< std::vector< std::size_t > > m_maxPixelOutliers
const Acts::TrackSelector::Config & getCuts(double eta) const
Retrieves track selector configuration for given eta value.
Gaudi::Property< bool > m_checkCounts
Gaudi::Property< std::vector< std::size_t > > m_maxHoles
ToolHandle< ActsTrk::IStripOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_stripCalibTool
std::array< bool, 3 > selectCounts(const detail::RecoTrackContainer::TrackProxy &track, double eta) const
Gaudi::Property< std::vector< std::size_t > > m_maxHolesAndOutliers
std::unique_ptr< CKF_pimpl > m_trackFinder
Gaudi::Property< std::vector< double > > m_chi2OutlierCutOffSigma
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
TrackFindingDefaultOptions getDefaultOptions(const EventContext &ctx, const DetectorContextHolder &detContext, const detail::TrackFindingMeasurements &measurements, const Acts::PerigeeSurface *pSurface) const
Get CKF options for first and second pass + pointer to MeasurementSelector.
Acts::CombinatorialKalmanFilterOptions< detail::RecoTrackContainer > TrackFinderOptions
virtual StatusCode finalize() override
ContextUtility m_ctxProvider
Utility to fetch the geometry, magnetic field and calibration context in the event.
Gaudi::Property< bool > m_doSecondPassBranchStopper
std::vector< std::array< unsigned int, kNStat > > EventStats
ToolHandle< ActsTrk::IHGTDOnTrackCalibratorTool< detail::RecoTrackStateContainer > > m_hgtdCalibTool
Gaudi::Property< double > m_twoWayinflateCovarianceFactor
static void updateCounts(const detail::RecoTrackContainer::TrackProxy &track, Acts::ConstTrackStateTypeMap typeFlags, xAOD::UncalibMeasType detType)
Gaudi::Property< bool > m_addCounts
Gaudi::Property< std::vector< std::size_t > > m_minHgtdHits
struct ActsTrk::TrackFindingBaseAlg::MeasurementSelectorConfig m_measurementSelectorConfig
Gaudi::Property< std::vector< double > > m_phiMax
Gaudi::Property< std::vector< std::size_t > > m_ptMinMeasurements
Gaudi::Property< std::vector< double > > m_d0Max
Gaudi::Property< bool > m_inflateCovarianceTwoWay
Acts::CombinatorialKalmanFilterBranchStopperResult BranchStopperResult
std::unique_ptr< ActsTrk::IMeasurementSelector > setMeasurementSelector(const EventContext &ctx, const detail::TrackFindingMeasurements &measurements, TrackFinderOptions &options) const
Setup and attach measurement selector to KF options.
Gaudi::Property< std::uint32_t > m_envelopeConstraint
Stop the propagation as soon as the envelope is left (Gen3 only).
bool selectCountsFinal(const detail::RecoTrackContainer::TrackProxy &track) const
Gaudi::Property< std::vector< std::string > > m_seedLabels
An algorithm that can be simultaneously executed in multiple threads.
Property holding a SG store/key/clid from which a WriteHandle is made.
Hash functions to pack the source link into unordered_maps / unordered_sets.
RecoTrackStateContainer::TrackStateProxy RecoTrackStateContainerProxy
Acts::TrackContainer< Acts::VectorTrackContainer, Acts::VectorMultiTrajectory > RecoTrackContainer
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
UncalibMeasType
Define the type of the uncalibrated measurement.
static constexpr Acts::ProxyAccessor< unsigned int > nStripHoles
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHoles
static constexpr Acts::ProxyAccessor< unsigned int > nStripHits
static constexpr Acts::ProxyAccessor< unsigned int > nPixelHits
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdHits
static constexpr Acts::ProxyAccessor< unsigned int > nStripOutliers
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdHoles
static constexpr Acts::ProxyAccessor< unsigned int > nPixelOutliers
static constexpr Acts::ProxyAccessor< unsigned int > nHgtdOutliers
std::vector< std::array< std::pair< float, float >, 4 > > m_chi2CutOffOutlier
std::unique_ptr< ActsTrk::IMeasurementSelector > measurementSelector