ATLAS Offline Software
Loading...
Searching...
No Matches
KalmanFitterTool.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_KALMANFITTERTOOL_H
6#define ACTSTRACKRECONSTRUCTION_KALMANFITTERTOOL_H
7
10
11// ACTS
12#include "Acts/EventData/BoundTrackParameters.hpp"
13#include "Acts/TrackFitting/KalmanFitter.hpp"
14#include "Acts/Propagator/SympyStepper.hpp"
15#include "Acts/Propagator/Propagator.hpp"
16#include "Acts/Propagator/Navigator.hpp"
17#include "Acts/EventData/VectorTrackContainer.hpp"
18#include "Acts/Geometry/GeometryIdentifier.hpp"
19
20// PACKAGE
25
31
33
34class EventContext;
35
36namespace Trk{
37 class Track;
38 class PrepRawData;
39}
40
41namespace ActsTrk {
42
44 : public extends<AthAlgTool, ActsTrk::IFitterTool> {
45public:
46
47 using base_class::base_class;
48 virtual ~KalmanFitterTool() = default;
49
50 // standard Athena methods
51 virtual StatusCode initialize() override;
52
54 virtual
55 std::unique_ptr< ActsTrk::MutableTrackContainer >
56 fit(const std::vector<const xAOD::UncalibratedMeasurement*> & clusterList,
57 const Acts::BoundTrackParameters& initialParams,
58 const Acts::GeometryContext& tgContext,
59 const Acts::MagneticFieldContext& mfContext,
60 const Acts::CalibrationContext& calContext,
61 const Acts::Surface* targetSurface = nullptr // optional target surface - defaults to perigee in global origin
62 ) const override;
63
65 virtual
66 std::unique_ptr< ActsTrk::MutableTrackContainer >
67 fit(const ActsTrk::Seed &seed,
68 const Acts::BoundTrackParameters& initialParams,
69 const Acts::GeometryContext& tgContext,
70 const Acts::MagneticFieldContext& mfContext,
71 const Acts::CalibrationContext& calContext,
72 const Acts::Surface& targetSurface) const override;
73
74 virtual StatusCode fit(
75 const EventContext& ctx,
76 const ActsTrk::TrackContainer::ConstTrackProxy& track,
77 ActsTrk::MutableTrackContainer& trackContainer,
78 const Acts::PerigeeSurface& pSurface) const override;
79
81 virtual
82 std::unique_ptr< ActsTrk::MutableTrackContainer >
83 fit(const std::vector<Acts::SourceLink>& sourceLinks,
84 const Acts::BoundTrackParameters& initialParams,
85 const Acts::GeometryContext& tgContext,
86 const Acts::MagneticFieldContext& mfContext,
87 const Acts::CalibrationContext& calContext,
88 const Acts::Surface* targetSurface = nullptr) const override;
89
91 // Private methods:
93private:
95 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
97 using FitterExtension_t = Acts::KalmanFitterExtensions<MutableTrackStateBackend>;
99 using FitterOptions_t = Acts::KalmanFitterOptions<MutableTrackStateBackend>;
108 FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
109 const Acts::MagneticFieldContext& mfContext,
110 const Acts::CalibrationContext& calContext,
111 const Acts::Surface* surface,
112 detail::SourceLinkType slType) const;
113
114
115 ToolHandle<IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", ""};
116 PublicToolHandle<ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
117 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
118
119 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator {this, "RotCreatorTool", ""};
120
121 // the settable job options
122 Gaudi::Property< double > m_option_outlierChi2Cut {this, "OutlierChi2Cut", 12.5,
123 "Chi2 cut used by the outlier finder" };
124 Gaudi::Property< double > m_option_ReverseFilteringPt {this, "ReverseFilteringPt", 1.0 * Acts::UnitConstants::GeV,
125 "Pt cut used for the ReverseFiltering logic"};
126 Gaudi::Property< int > m_option_maxPropagationStep {this, "MaxPropagationStep", 5000,
127 "Maximum number of steps for one propagate call"};
128 Gaudi::Property<bool> m_useDirectNavigation{this, "UseDirectNavigation", true,
129 "GSF with direct navigation when refitting measurements"};
130
144
145
147 using Fitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::Navigator>, ActsTrk::MutableTrackStateBackend>;
148 std::unique_ptr<Fitter> m_fitter {nullptr};
149
150 using DirectFitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::DirectNavigator>, ActsTrk::MutableTrackStateBackend>;
151 std::unique_ptr<DirectFitter> m_directFitter {nullptr};
152
154 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
155 std::array<FitterExtension_t, s_nExtensions> m_kfExtensions{};
156
159
161 const Acts::Logger& logger() const {
162 return *m_logger;
163 }
164
166 std::unique_ptr<const Acts::Logger> m_logger;
167
168}; // end of namespace
169
170}
171#endif
172
ActsTrk::detail::FitterHelperFunctions::ReverseFilteringLogic m_reverseFilteringLogic
detail::OnTrackCalibrator< ActsTrk::MutableTrackStateBackend > xAODUnCalibrator_t
Calibrator of the uncalibrated measurements.
Acts::KalmanFitterExtensions< MutableTrackStateBackend > FitterExtension_t
Abbrivation of the fitter extensions.
detail::TrkPrepRawDataCalibrator m_prdCalibrator
Calibrator for the Trk::PrepRawData track states (legacy EDM).
Gaudi::Property< bool > m_useDirectNavigation
detail::TrkPrepRawDataSurfaceAcc m_prdSurfAcc
Surface accessor for the Trk::PrepRawData track states (legacy EDM).
MutableTrackStateBackend::TrackStateProxy TrackState_t
Abrivate the track state proxy.
detail::xAODUncalibMeasSurfAcc m_unalibMeasSurfAcc
Accessor to fetch surfaces from the xAOD::UncalibratedMeasurements (Phase-II EDM).
virtual StatusCode fit(const EventContext &ctx, const ActsTrk::TrackContainer::ConstTrackProxy &track, ActsTrk::MutableTrackContainer &trackContainer, const Acts::PerigeeSurface &pSurface) const override
virtual std::unique_ptr< ActsTrk::MutableTrackContainer > fit(const std::vector< const xAOD::UncalibratedMeasurement * > &clusterList, const Acts::BoundTrackParameters &initialParams, const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::Surface *targetSurface=nullptr) const override
fit a set of xAOD uncalibrated Measurements
std::unique_ptr< const Acts::Logger > m_logger
logging instance
std::unique_ptr< Fitter > m_fitter
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
ToolHandle< Trk::IRIO_OnTrackCreator > m_ROTcreator
std::array< FitterExtension_t, s_nExtensions > m_kfExtensions
static constexpr unsigned s_nExtensions
Array of all configured fitter extensions depending on which source link type is in use.
PublicToolHandle< IGeometryRealmConvTool > m_geometryConvTool
detail::TrkMeasSurfaceAccessor m_trkSurfAcc
Accessor to fetch surfaces from the Trk::MeasurementBase track states (legacy EDM).
Acts::KalmanFitterOptions< MutableTrackStateBackend > FitterOptions_t
Abbrivation of the configuration to launch the fit.
Gaudi::Property< double > m_option_outlierChi2Cut
PublicToolHandle< ITrackingGeometryTool > m_trackingGeometryTool
virtual ~KalmanFitterTool()=default
std::unique_ptr< DirectFitter > m_directFitter
const Acts::Logger & logger() const
Private access to the logger.
detail::TrkMeasurementCalibrator m_trkCalibrator
Calibrator for the Trk::MeasurementBase track states (legacy EDM).
virtual StatusCode initialize() override
xAODUnCalibrator_t m_uncalibMeasCalibrator
ToolHandle< IExtrapolationTool > m_extrapolationTool
Acts::KalmanFitter< Acts::Propagator< Acts::SympyStepper, Acts::Navigator >, ActsTrk::MutableTrackStateBackend > Fitter
Type erased track fitter function.
Gaudi::Property< double > m_option_ReverseFilteringPt
Acts::KalmanFitter< Acts::Propagator< Acts::SympyStepper, Acts::DirectNavigator >, ActsTrk::MutableTrackStateBackend > DirectFitter
Gaudi::Property< int > m_option_maxPropagationStep
FitterOptions_t configureFit(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::Surface *surface, detail::SourceLinkType slType) const
Helper method to pack the last information (Calibration, Alignment, B-Field, etc.) for the fit.
Inner detector / ITk calibrator implementation used in the KalmanFilterTool.
Helper class to access the Acts::Surface for a given Acts::SourceLink which is poiniting to a Trk::Me...
Calibrator class that links the legacy Trk::MeasurementBase objects with the Acts MultiTrajectory tra...
Class to calibrate the Acts track states with uncalibrated Trk::PrepRaw data objects.
Helper class to access the Acts::surface associated with a Trk::PrepRawData measurement.
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
SourceLinkType
Enumeration to distinguish between the ATLAS EDM -> Acts::SourceLink variants.
@ nTypes
Uncalbirated xAOD::UnCalibratedMeasurement objects.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Acts::VectorMultiTrajectory MutableTrackStateBackend
Acts::TrackContainer< MutableTrackBackend, MutableTrackStateBackend, Acts::detail::ValueHolder > MutableTrackContainer
Ensure that the ATLAS eigen extensions are properly loaded.
Determine if the smoothing of a track should be done with or without reverse filtering.