ATLAS Offline Software
Loading...
Searching...
No Matches
GlobalChiSquareFitterTool.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 ACTSGEOMETRY_GLOBALCHISQUAREFITTERTOOL_H
6#define ACTSGEOMETRY_GLOBALCHISQUAREFITTERTOOL_H
7
13
15// ACTS
16#include "Acts/EventData/BoundTrackParameters.hpp"
17#include "Acts/EventData/VectorTrackContainer.hpp"
18#include "Acts/Geometry/GeometryIdentifier.hpp"
19#include "Acts/Propagator/Navigator.hpp"
20#include "Acts/Propagator/Propagator.hpp"
21#include "Acts/Propagator/StraightLineStepper.hpp"
22#include "Acts/Propagator/EigenStepper.hpp"
23#include "Acts/TrackFitting/GlobalChiSquareFitter.hpp"
24
25// PACKAGE
30
37
38namespace Trk {
39class PrepRawData;
40} // namespace Trk
41
42namespace ActsTrk {
43
44
45
47 : public extends<AthAlgTool, IFitterTool> {
48 public:
49
50 using base_class::base_class;
51 virtual ~GlobalChiSquareFitterTool() = default;
52
53 // standard Athena methods
54 virtual StatusCode initialize() override;
55
57 virtual std::unique_ptr<MutableTrackContainer> fit(
58 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 =
64 nullptr // optional target surface - defaults to perigee in global
65 // origin
66 ) const override;
67
69 virtual std::unique_ptr<MutableTrackContainer> fit(
70 const Seed& seed,
71 const Acts::BoundTrackParameters& initialParams,
72 const Acts::GeometryContext& tgContext,
73 const Acts::MagneticFieldContext& mfContext,
74 const Acts::CalibrationContext& calContext,
75 const Acts::Surface& targetSurface) const override;
76
77
78 virtual StatusCode fit(
79 const EventContext& ctx,
80 const TrackContainer::ConstTrackProxy& track,
81 MutableTrackContainer& trackContainer,
82 const Acts::PerigeeSurface& pSurface) const override;
83
85 virtual std::unique_ptr<MutableTrackContainer> fit(
86 const std::vector<Acts::SourceLink>& sourceLinks,
87 const Acts::BoundTrackParameters& initialParams,
88 const Acts::GeometryContext& tgContext,
89 const Acts::MagneticFieldContext& mfContext,
90 const Acts::CalibrationContext& calContext,
91 const Acts::Surface* targetSurface =
92 nullptr // optional target surface - defaults to perigee in global
93 // origin
94 ) const override;
95
96
98 using StraightPropagator_t = Acts::Propagator<Acts::StraightLineStepper, Acts::Navigator>;
99 using CurvedPropagator_t = Acts::Propagator<Acts::EigenStepper<>, Acts::Navigator>;
100
101 using StraightFitter_t = Acts::Experimental::Gx2Fitter<StraightPropagator_t, MutableTrackStateBackend>;
102 using CurvedFitter_t = Acts::Experimental::Gx2Fitter<CurvedPropagator_t, MutableTrackStateBackend>;
103
105 using Gx2FitterOptions_t = Acts::Experimental::Gx2FitterOptions<MutableTrackStateBackend>;
107 using Gx2FitterExtension_t = Acts::Experimental::Gx2FitterExtensions<MutableTrackStateBackend>;
108
109 private:
111 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
112
121 Gx2FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
122 const Acts::MagneticFieldContext& mfContext,
123 const Acts::CalibrationContext& calContext,
124 const Acts::Surface* surface,
125 detail::SourceLinkType slType) const;
126
127 ToolHandle<IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", ""};
128 PublicToolHandle<ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
129 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
130
131 ToolHandle<MuonR4::ISpacePointCalibrator> m_muonCalibrator{this, "MuonCalibrationTool", ""};
132
133 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator{this, "RotCreatorTool", ""};
134
136 Gaudi::Property<double> m_option_outlierChi2Cut{this, "OutlierChi2Cut", 12.5};
138 Gaudi::Property<unsigned> m_option_maxPropagationStep{this, "MaxPropagationStep", 5000};
140 Gaudi::Property<unsigned> m_option_maxNavSurfaces{this, "MaxSurfacesPerNavStep", 100};
142 Gaudi::Property<bool> m_option_includeELoss{this, "IncludeELoss", true};
144 Gaudi::Property<bool> m_option_includeScat{this, "IncludeScattering", true};
146 Gaudi::Property<bool> m_doStraightLine{this, "DoStraightLine" , false};
148 Gaudi::Property<bool> m_doJacobianCorr{this, "DoFreeToBoundCorrection", false };
150 Gaudi::Property<unsigned> m_nIterMax{this, "MaxIterations", 5};
166
168 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
169 std::array<Gx2FitterExtension_t, s_nExtensions> m_gx2fExtensions{};
171 std::unique_ptr<CurvedFitter_t> m_fitter{nullptr};
173 std::unique_ptr<StraightFitter_t> m_slFitter{nullptr};
174
176
178 const Acts::Logger& logger() const { return *m_logger; }
179
181 std::unique_ptr<const Acts::Logger> m_logger;
182
183
184};
185
186} // namespace ActsTrk
187#endif
Acts::Experimental::Gx2FitterOptions< MutableTrackStateBackend > Gx2FitterOptions_t
Abbrivation of the configuration to launch the fit.
Gaudi::Property< double > m_option_outlierChi2Cut
Chi2 cut used by the outlier finder.
ToolHandle< IExtrapolationTool > m_extrapolationTool
virtual ~GlobalChiSquareFitterTool()=default
Acts::Experimental::Gx2Fitter< CurvedPropagator_t, MutableTrackStateBackend > CurvedFitter_t
std::unique_ptr< const Acts::Logger > m_logger
logging instance
static constexpr unsigned s_nExtensions
Array of all configured fitter extensions depending on which source link type is in use.
detail::TrkMeasSurfaceAccessor m_trkMeasSurfAcc
Surface accessor delegate for Trk::MeasurementBase objects.
MutableTrackStateBackend::TrackStateProxy TrackState_t
Abrivate the track state proxy.
detail::TrkPrepRawDataCalibrator m_prdCalibrator
Calibrator of the uncalibrated Trk::PrepRawData objects to RIO_OnTrack objects.
Acts::Propagator< Acts::StraightLineStepper, Acts::Navigator > StraightPropagator_t
Type erased track fitter function.
const Acts::Logger & logger() const
Private access to the logger.
Gaudi::Property< bool > m_doJacobianCorr
Account for non linear effects from free -> bound jacobian.
ToolHandle< MuonR4::ISpacePointCalibrator > m_muonCalibrator
Acts::Experimental::Gx2FitterExtensions< MutableTrackStateBackend > Gx2FitterExtension_t
Abbrivation of the fitter extensions.
std::array< Gx2FitterExtension_t, s_nExtensions > m_gx2fExtensions
Gaudi::Property< unsigned > m_option_maxPropagationStep
Maximum number of steps per propagation call.
detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
Gaudi::Property< bool > m_option_includeScat
Consider multiple scattering of the particle.
PublicToolHandle< ITrackingGeometryTool > m_trackingGeometryTool
PublicToolHandle< IGeometryRealmConvTool > m_geometryConvTool
detail::TrkPrepRawDataSurfaceAcc m_prdSurfaceAcc
Surface accessor delegate for Trk::PrepRawData objects.
ToolHandle< Trk::IRIO_OnTrackCreator > m_ROTcreator
std::unique_ptr< StraightFitter_t > m_slFitter
The underlying straight line Acts fitter.
Gaudi::Property< bool > m_option_includeELoss
Consider particle's energy loss in the fit.
virtual std::unique_ptr< 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
Gaudi::Property< unsigned > m_option_maxNavSurfaces
Number of maximum surfaces to be tried before the navigrator aborts.
std::unique_ptr< CurvedFitter_t > m_fitter
The underlying curved Acts fitter.
Gx2FitterOptions_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.
detail::OnTrackCalibrator< ActsTrk::MutableTrackStateBackend > xAODItkCalibrator_t
Calibrator of the ID / ITk measurements.
detail::TrkMeasurementCalibrator m_trkMeasCalibrator
Pass through calibrator of the Trk::MeasurementBase objects from the TrackState container.
detail::xAODUncalibMeasSurfAcc m_unalibMeasSurfAcc
Surface accessor delegate for xAOD::UncalibratedMeasurement objects.
Acts::Experimental::Gx2Fitter< StraightPropagator_t, MutableTrackStateBackend > StraightFitter_t
Acts::Propagator< Acts::EigenStepper<>, Acts::Navigator > CurvedPropagator_t
Gaudi::Property< unsigned > m_nIterMax
Number of iterations a fit may take.
Gaudi::Property< bool > m_doStraightLine
Option to toggle whether a straight line fitter shall be used.
detail::xAODUncalibMeasCalibrator m_uncalibMeasCalibrator
Calibrator for the uncalibrated xAOD::UnCalibratedMeasurement objects.
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::TrackContainer< MutableTrackBackend, MutableTrackStateBackend, Acts::detail::ValueHolder > MutableTrackContainer
Ensure that the ATLAS eigen extensions are properly loaded.