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
24
30
32
33
35
36class EventContext;
37
38namespace Trk{
39 class Track;
40 class PrepRawData;
41}
42
43namespace ActsTrk {
44
46 : public extends<AthAlgTool, ActsTrk::IFitterTool> {
47public:
48
49 using base_class::base_class;
50 virtual ~KalmanFitterTool() = default;
51
52 // standard Athena methods
53 virtual StatusCode initialize() override;
54
56 virtual
57 std::unique_ptr< ActsTrk::MutableTrackContainer >
58 fit(const std::vector<const xAOD::UncalibratedMeasurement*> & clusterList,
59 const Acts::BoundTrackParameters& initialParams,
60 const Acts::GeometryContext& tgContext,
61 const Acts::MagneticFieldContext& mfContext,
62 const Acts::CalibrationContext& calContext,
63 const Acts::Surface* targetSurface = nullptr // optional target surface - defaults to perigee in global origin
64 ) const override;
65
67 virtual
68 std::unique_ptr< ActsTrk::MutableTrackContainer >
69 fit(const ActsTrk::Seed &seed,
70 const Acts::BoundTrackParameters& initialParams,
71 const Acts::GeometryContext& tgContext,
72 const Acts::MagneticFieldContext& mfContext,
73 const Acts::CalibrationContext& calContext,
74 const Acts::Surface& targetSurface) const override;
75
76 virtual StatusCode fit(
77 const EventContext& ctx,
78 const ActsTrk::TrackContainer::ConstTrackProxy& track,
79 ActsTrk::MutableTrackContainer& trackContainer,
80 const Acts::PerigeeSurface& pSurface) const override;
81
83 virtual
84 std::unique_ptr< ActsTrk::MutableTrackContainer >
85 fit(const std::vector<Acts::SourceLink>& sourceLinks,
86 const Acts::BoundTrackParameters& initialParams,
87 const Acts::GeometryContext& tgContext,
88 const Acts::MagneticFieldContext& mfContext,
89 const Acts::CalibrationContext& calContext,
90 const Acts::Surface* targetSurface = nullptr) const override;
91
93 // Private methods:
95private:
97 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
99 using FitterExtension_t = Acts::KalmanFitterExtensions<MutableTrackStateBackend>;
101 using FitterOptions_t = Acts::KalmanFitterOptions<MutableTrackStateBackend>;
110 FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
111 const Acts::MagneticFieldContext& mfContext,
112 const Acts::CalibrationContext& calContext,
113 const Acts::Surface* surface,
114 detail::SourceLinkType slType) const;
115
116
117 ServiceHandle<ITrackingGeometrySvc> m_trackingGeometrySvc{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};
118 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
119
120 ToolHandle<MuonR4::ISpacePointCalibrator> m_muonCalibrator{this, "MuonCalibrationTool", ""};
121
122 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator {this, "RotCreatorTool", ""};
123
124 // the settable job options
125 Gaudi::Property< double > m_option_outlierChi2Cut {this, "OutlierChi2Cut", 12.5,
126 "Chi2 cut used by the outlier finder" };
127 Gaudi::Property< double > m_option_ReverseFilteringPt {this, "ReverseFilteringPt", 1.0 * Acts::UnitConstants::GeV,
128 "Pt cut used for the ReverseFiltering logic"};
129 Gaudi::Property< int > m_option_maxPropagationStep {this, "MaxPropagationStep", 5000,
130 "Maximum number of steps for one propagate call"};
131 Gaudi::Property<bool> m_useDirectNavigation{this, "UseDirectNavigation", true,
132 "GSF with direct navigation when refitting measurements"};
133
149
150
152 using Fitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::Navigator>, ActsTrk::MutableTrackStateBackend>;
153 std::unique_ptr<Fitter> m_fitter {nullptr};
154
155 using DirectFitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::DirectNavigator>, ActsTrk::MutableTrackStateBackend>;
156 std::unique_ptr<DirectFitter> m_directFitter {nullptr};
157
159 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
160 std::array<FitterExtension_t, s_nExtensions> m_kfExtensions{};
161
164
166 const Acts::Logger& logger() const {
167 return *m_logger;
168 }
169
171 std::unique_ptr<const Acts::Logger> m_logger;
172
173}; // end of namespace
174
175}
176#endif
177
ActsTrk::detail::FitterHelperFunctions::ReverseFilteringLogic m_reverseFilteringLogic
Acts::KalmanFitterExtensions< MutableTrackStateBackend > FitterExtension_t
Abbrivation of the fitter extensions.
ToolHandle< MuonR4::ISpacePointCalibrator > m_muonCalibrator
detail::OnTrackCalibrator< ActsTrk::MutableTrackStateBackend > xAODItkCalibrator_t
Calibrator of the ID / ITk measurements.
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).
detail::xAODUncalibMeasCalibrator m_uncalibMeasCalibrator
Calibrator for the uncalibrated xAOD::UnCalibratedMeasurement objects.
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.
xAODItkCalibrator_t m_idCalibrator
Gaudi::Property< double > m_option_outlierChi2Cut
virtual ~KalmanFitterTool()=default
std::unique_ptr< DirectFitter > m_directFitter
ServiceHandle< ITrackingGeometrySvc > m_trackingGeometrySvc
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
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.
Source link calibrator implementation for xAOD::Uncalibrated measurements.
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.