ATLAS Offline Software
Loading...
Searching...
No Matches
GaussianSumFitterTool.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_GAUSSIANSUMFITTERTOOL_H
6#define ACTSTRACKRECONSTRUCTION_GAUSSIANSUMFITTERTOOL_H
7
8// ATHENA
10
12// ACTS
13#include "Acts/EventData/VectorMultiTrajectory.hpp"
14#include "Acts/Geometry/GeometryContext.hpp"
15#include "Acts/TrackFitting/GaussianSumFitter.hpp"
16#include "Acts/Propagator/Propagator.hpp"
17#include "Acts/Propagator/MultiEigenStepperLoop.hpp"
18#include "Acts/Propagator/Navigator.hpp"
19#include "Acts/TrackFitting/GsfOptions.hpp"
20#include "Acts/Utilities/Logger.hpp"
21
22// PACKAGE
24
27
28
33
40
41namespace ActsTrk {
42
44 : public extends<AthAlgTool, ActsTrk::IFitterTool> {
45public:
46
47 using base_class::base_class;
48 virtual ~GaussianSumFitterTool() = default;
49
50 // standard Athena methods
51 virtual StatusCode initialize() override;
52
54 virtual
55 std::unique_ptr< ActsTrk::MutableTrackContainer >
56 fit(const ActsTrk::Seed &seed,
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) const override;
62
63 virtual
64 std::unique_ptr< ActsTrk::MutableTrackContainer >
65 fit(const std::vector< const xAOD::UncalibratedMeasurement*> & clusterList,
66 const Acts::BoundTrackParameters& initialParams,
67 const Acts::GeometryContext& tgContext,
68 const Acts::MagneticFieldContext& mfContext,
69 const Acts::CalibrationContext& calContext,
70 const Acts::Surface* targetSurface) const override;
71
72 virtual StatusCode fit(
73 const EventContext& ctx,
74 const ActsTrk::TrackContainer::ConstTrackProxy& track,
75 ActsTrk::MutableTrackContainer& trackContainer,
76 const Acts::PerigeeSurface& pSurface) const override;
77
79 virtual std::unique_ptr<MutableTrackContainer> fit(
80 const std::vector<Acts::SourceLink>& sourceLinks,
81 const Acts::BoundTrackParameters& initialParams,
82 const Acts::GeometryContext& tgContext,
83 const Acts::MagneticFieldContext& mfContext,
84 const Acts::CalibrationContext& calContext,
85 const Acts::Surface* targetSurface =
86 nullptr // optional target surface - defaults to perigee in global
87 // origin
88 ) const override;
89
91 // Private methods:
93private:
94 using FitterOptions_t = Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>;
95 FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
96 const Acts::MagneticFieldContext& mfContext,
97 const Acts::CalibrationContext& calContext,
98 const Acts::PerigeeSurface& surface,
99 detail::SourceLinkType slType) const;
101 const Acts::Logger& logger() const;
102
103 private:
105 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
106 ServiceHandle<ActsTrk::ITrackingGeometrySvc> m_trackingGeometrySvc{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};
107 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
110
111 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator{this, "RotCreatorTool", ""};
112 // the settable job options
113 Gaudi::Property< double > m_option_outlierChi2Cut {this, "OutlierChi2Cut", 12.5,
114 "Chi2 cut used by the outlier finder" };
115 Gaudi::Property< int > m_option_maxPropagationStep {this, "MaxPropagationStep", 5000,
116 "Maximum number of steps for one propagate call"};
117
118 Gaudi::Property< int > m_maxComponents {this, "MaxComponents", 12,
119 "Maximum number of components in GSF"};
120
121 Gaudi::Property<bool> m_useDirectNavigation{this, "UseDirectNavigation", false,
122 "GSF with direct navigation when refitting measurements"};
123
124 Gaudi::Property< double > m_weightCutOff {this, "WeightCutOff", 1.e-4,
125 "component weight cut off"};
126
127 Gaudi::Property<std::string> m_option_componentMergeMethod{this, "ComponentMergeMethod", "MaxWeight"
128 , "method to merge components {Mean, MaxWeight}"};
129
130 Acts::ComponentMergeMethod m_componentMergeMethod;
131
139 std::unique_ptr<detail::RefittingCalibrator> m_refitCalibrator{nullptr};
140
142 using Fitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::Navigator>,
144 std::unique_ptr<Fitter> m_fitter {nullptr};
145
146 using DirectFitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator>,
148 std::unique_ptr<DirectFitter> m_directFitter {nullptr};
149
150 using FitterExtension_t = Acts::GsfExtensions<ActsTrk::MutableTrackStateBackend>;
151 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
152 std::array<FitterExtension_t, s_nExtensions> m_gsfExtensions{};
153
160
162
164 std::unique_ptr<const Acts::Logger> m_logger {nullptr};
165
166}; // end of namespace
167
168}
169
170#endif
171
Utility class to handle the three contexts neeeded in an ACTS reconstruction job 1) GeometryContext -...
const Acts::Logger & logger() const
Private access to the logger.
detail::OnTrackCalibrator< MutableTrackStateBackend > xAODUnCalibrator_t
Calibrator of the uncalibrated measurements.
Gaudi::Property< std::string > m_option_componentMergeMethod
std::unique_ptr< detail::RefittingCalibrator > m_refitCalibrator
ToolHandle< Trk::IRIO_OnTrackCreator > m_ROTcreator
Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator >, ActsTrk::MutableTrackStateBackend > DirectFitter
static constexpr unsigned s_nExtensions
Gaudi::Property< double > m_weightCutOff
Gaudi::Property< int > m_option_maxPropagationStep
Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::Navigator >, ActsTrk::MutableTrackStateBackend > Fitter
Type erased track fitter function.
virtual StatusCode initialize() override
virtual std::unique_ptr< ActsTrk::MutableTrackContainer > fit(const ActsTrk::Seed &seed, const Acts::BoundTrackParameters &initialParams, const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::Surface &targetSurface) const override
Acts seed fit.
PublicToolHandle< IGeometryRealmConvTool > m_geometryConvTool
detail::TrkMeasurementCalibrator m_trkCalibrator
Calibrator for the Trk::MeasurementBase track states (legacy EDM).
Acts::ComponentMergeMethod m_componentMergeMethod
detail::TrkPrepRawDataSurfaceAcc m_prdSurfAcc
Surface accessor for the Trk::PrepRawData track states (legacy EDM).
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
MutableTrackStateBackend::TrackStateProxy TrackState_t
Abrivate the track state proxy.
Gaudi::Property< double > m_option_outlierChi2Cut
virtual ~GaussianSumFitterTool()=default
FitterOptions_t configureFit(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::PerigeeSurface &surface, detail::SourceLinkType slType) const
Gaudi::Property< bool > m_useDirectNavigation
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > FitterExtension_t
std::unique_ptr< Fitter > m_fitter
std::array< FitterExtension_t, s_nExtensions > m_gsfExtensions
std::unique_ptr< const Acts::Logger > m_logger
logging instance
detail::TrkPrepRawDataCalibrator m_prdCalibrator
Calibrator for the Trk::PrepRawData track states (legacy EDM).
ContextUtility m_ctxProvider
Utility to fetch the geometry, magnetic field and calibration context in the event.
std::unique_ptr< DirectFitter > m_directFitter
detail::xAODUncalibMeasSurfAcc m_unalibMeasSurfAcc
Accessor to fetch surfaces from the xAOD::UncalibratedMeasurements (Phase-II EDM).
Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > FitterOptions_t
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
detail::TrkMeasSurfaceAccessor m_trkSurfAcc
Accessor to fetch surfaces from the Trk::MeasurementBase track states (legacy EDM).
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