ATLAS Offline Software
Loading...
Searching...
No Matches
KalmanFitterTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRACKRECONSTRUCTION_KALMANFITTERTOOL_H
6#define ACTSTRACKRECONSTRUCTION_KALMANFITTERTOOL_H
7
9
12
14
16
17// ACTS
18#include "Acts/EventData/TrackParameters.hpp"
19#include "Acts/TrackFitting/KalmanFitter.hpp"
20#include "Acts/MagneticField/MagneticFieldProvider.hpp"
21#include "Acts/Propagator/SympyStepper.hpp"
22#include "Acts/Propagator/Propagator.hpp"
23#include "Acts/Propagator/Navigator.hpp"
24#include "Acts/EventData/TrackProxy.hpp"
25#include "Acts/EventData/VectorTrackContainer.hpp"
26#include "Acts/Geometry/GeometryIdentifier.hpp"
27
28
29// PACKAGE
30
35
42// STL
43#include <string>
44#include <memory>//unique_ptr
45#include <limits>//for numeric_limits
46#include <cmath> //std::abs
47
48
50
51class EventContext;
52
53namespace Trk{
54 class Track;
55 class PrepRawData;
56}
57
58namespace ActsTrk {
59
61 : public extends<AthAlgTool, Trk::ITrackFitter, ActsTrk::IFitterTool> {
62public:
63
64 using base_class::base_class;
65 virtual ~KalmanFitterTool() = default;
66
67 // standard Athena methods
68 virtual StatusCode initialize() override;
69
71 virtual std::unique_ptr<Trk::Track> fit(
72 const EventContext& ctx,
73 const Trk::Track&,
74 const Trk::RunOutlierRemoval runOutlier = false,
75 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
76
78 virtual std::unique_ptr<Trk::Track> fit(
79 const EventContext& ctx,
82 const Trk::RunOutlierRemoval runOutlier = false,
83 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
84
86 virtual std::unique_ptr<Trk::Track> fit(
87 const EventContext& ctx,
90 const Trk::RunOutlierRemoval runOutlier = false,
91 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
92
94 virtual std::unique_ptr<Trk::Track> fit(
95 const EventContext& ctx,
96 const Trk::Track&,
98 const Trk::RunOutlierRemoval runOutlier = false,
99 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
100
102 virtual
103 std::unique_ptr< ActsTrk::MutableTrackContainer >
104 fit(const std::vector<ActsTrk::ATLASUncalibSourceLink> & clusterList,
105 const Acts::BoundTrackParameters& initialParams,
106 const Acts::GeometryContext& tgContext,
107 const Acts::MagneticFieldContext& mfContext,
108 const Acts::CalibrationContext& calContext,
109 const Acts::Surface* targetSurface = nullptr // optional target surface - defaults to perigee in global origin
110 ) const override;
111
113 virtual std::unique_ptr<Trk::Track> fit(
114 const EventContext& ctx,
115 const Trk::Track&,
116 const Trk::MeasurementSet&,
117 const Trk::RunOutlierRemoval runOutlier = false,
118 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
119
121 virtual std::unique_ptr<Trk::Track> fit(
122 const EventContext& ctx,
123 const Trk::Track& intrk1,
124 const Trk::Track& intrk2,
125 const Trk::RunOutlierRemoval runOutlier = false,
126 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
127
129 virtual
130 std::unique_ptr< ActsTrk::MutableTrackContainer >
131 fit(const ActsTrk::Seed &seed,
132 const Acts::BoundTrackParameters& initialParams,
133 const Acts::GeometryContext& tgContext,
134 const Acts::MagneticFieldContext& mfContext,
135 const Acts::CalibrationContext& calContext,
136 const Acts::Surface& targetSurface) const override;
137
138
139 virtual StatusCode fit(
140 const EventContext& ctx,
141 const ActsTrk::TrackContainer::ConstTrackProxy& track,
142 ActsTrk::MutableTrackContainer& trackContainer,
143 const Acts::PerigeeSurface& pSurface) const override;
144
146 // Private methods:
148private:
149
151 using FitterExtension_t = Acts::KalmanFitterExtensions<MutableTrackStateBackend>;
153 using FitterOptions_t = Acts::KalmanFitterOptions<MutableTrackStateBackend>;
162 FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
163 const Acts::MagneticFieldContext& mfContext,
164 const Acts::CalibrationContext& calContext,
165 const Acts::Surface* surface,
166 detail::SourceLinkType slType) const;
167
168
169 ToolHandle<ActsTrk::IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", ""};
170 PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
171 ToolHandle<ActsTrk::IActsToTrkConverterTool> m_ATLASConverterTool{this, "ATLASConverterTool", ""};
172 // the settable job options
173 Gaudi::Property< double > m_option_outlierChi2Cut {this, "OutlierChi2Cut", 12.5,
174 "Chi2 cut used by the outlier finder" };
175 Gaudi::Property< double > m_option_ReverseFilteringPt {this, "ReverseFilteringPt", 1.0 * Acts::UnitConstants::GeV,
176 "Pt cut used for the ReverseFiltering logic"};
177 Gaudi::Property< int > m_option_maxPropagationStep {this, "MaxPropagationStep", 5000,
178 "Maximum number of steps for one propagate call"};
179 Gaudi::Property< double > m_option_seedCovarianceScale {this, "SeedCovarianceScale", 100.,
180 "Scale factor for the input seed covariance when doing refitting"};
181
195
196
198 using Fitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::Navigator>, ActsTrk::MutableTrackStateBackend>;
199 std::unique_ptr<Fitter> m_fitter {nullptr};
200
201 using DirectFitter = Acts::KalmanFitter<Acts::Propagator<Acts::SympyStepper, Acts::DirectNavigator>, ActsTrk::MutableTrackStateBackend>;
202 std::unique_ptr<DirectFitter> m_directFitter {nullptr};
203
205 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
206 std::array<FitterExtension_t, s_nExtensions> m_kfExtensions{};
207
210
212 const Acts::Logger& logger() const {
213 return *m_logger;
214 }
215
217 std::unique_ptr<const Acts::Logger> m_logger;
218
219 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator {this, "RotCreatorTool", ""};
220 //Gaudi Property to choose from PRD or ROT measurment ReFit
221 Gaudi::Property<bool> m_doReFitFromPRD{this, "DoReFitFromPRD", false, "Do Refit From PRD instead of ROT"};
222}; // end of namespace
223
224}
225#endif
226
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)
detail::TrkPrepRawDataSurfaceAcc m_prdSurfAcc
Surface accessor for the Trk::PrepRawData track states (legacy EDM)
ToolHandle< ActsTrk::IActsToTrkConverterTool > m_ATLASConverterTool
detail::xAODUncalibMeasSurfAcc m_unalibMeasSurfAcc
Accessor to fetch surfaces from the xAOD::UncalibratedMeasurements (Phase-II EDM)
virtual std::unique_ptr< Trk::Track > fit(const EventContext &ctx, const Trk::Track &, const Trk::RunOutlierRemoval runOutlier=false, const Trk::ParticleHypothesis matEffects=Trk::nonInteracting) const override
refit a track
virtual StatusCode fit(const EventContext &ctx, const ActsTrk::TrackContainer::ConstTrackProxy &track, ActsTrk::MutableTrackContainer &trackContainer, const Acts::PerigeeSurface &pSurface) const override
Gaudi::Property< bool > m_doReFitFromPRD
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.
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
virtual ~KalmanFitterTool()=default
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
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
Acts::KalmanFitter< Acts::Propagator< Acts::SympyStepper, Acts::Navigator >, ActsTrk::MutableTrackStateBackend > Fitter
Type erased track fitter function.
Gaudi::Property< double > m_option_ReverseFilteringPt
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
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.
Gaudi::Property< double > m_option_seedCovarianceScale
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::UnCalibratedMEeasurement 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.
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
Definition FitterTypes.h:30
bool RunOutlierRemoval
switch to toggle quality processing after fit
Definition FitterTypes.h:22
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
ParametersBase< TrackParametersDim, Charged > TrackParameters
std::vector< const PrepRawData * > PrepRawDataSet
vector of clusters and drift circles
Definition FitterTypes.h:26
Determine if the smoothing of a track should be done with or without reverse filtering.