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
29
36
37namespace Trk {
38class PrepRawData;
39} // namespace Trk
40
41namespace ActsTrk {
42
43
44
46 : public extends<AthAlgTool, IFitterTool> {
47 public:
48
49 using base_class::base_class;
50 virtual ~GlobalChiSquareFitterTool() = default;
51
52 // standard Athena methods
53 virtual StatusCode initialize() override;
54
56 virtual std::unique_ptr<MutableTrackContainer> fit(
57 const std::vector<const xAOD::UncalibratedMeasurement*>& clusterList,
58 const Acts::BoundTrackParameters& initialParams,
59 const Acts::GeometryContext& tgContext,
60 const Acts::MagneticFieldContext& mfContext,
61 const Acts::CalibrationContext& calContext,
62 const Acts::Surface* targetSurface =
63 nullptr // optional target surface - defaults to perigee in global
64 // origin
65 ) const override;
66
68 virtual std::unique_ptr<MutableTrackContainer> fit(
69 const 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
77 virtual StatusCode fit(
78 const EventContext& ctx,
79 const TrackContainer::ConstTrackProxy& track,
80 MutableTrackContainer& trackContainer,
81 const Acts::PerigeeSurface& pSurface) const override;
82
84 virtual std::unique_ptr<MutableTrackContainer> fit(
85 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 =
91 nullptr // optional target surface - defaults to perigee in global
92 // origin
93 ) const override;
94
95
97 using StraightPropagator_t = Acts::Propagator<Acts::StraightLineStepper, Acts::Navigator>;
98 using CurvedPropagator_t = Acts::Propagator<Acts::EigenStepper<>, Acts::Navigator>;
99
100 using StraightFitter_t = Acts::Experimental::Gx2Fitter<StraightPropagator_t, MutableTrackStateBackend>;
101 using CurvedFitter_t = Acts::Experimental::Gx2Fitter<CurvedPropagator_t, MutableTrackStateBackend>;
102
104 using Gx2FitterOptions_t = Acts::Experimental::Gx2FitterOptions<MutableTrackStateBackend>;
106 using Gx2FitterExtension_t = Acts::Experimental::Gx2FitterExtensions<MutableTrackStateBackend>;
107
108 private:
110 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
111
120 Gx2FitterOptions_t configureFit(const Acts::GeometryContext& tgContext,
121 const Acts::MagneticFieldContext& mfContext,
122 const Acts::CalibrationContext& calContext,
123 const Acts::Surface* surface,
124 detail::SourceLinkType slType) const;
125
126 ServiceHandle<ActsTrk::ITrackingGeometrySvc> m_trackingGeometrySvc{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};
127 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
128
129 ToolHandle<MuonR4::ISpacePointCalibrator> m_muonCalibrator{this, "MuonCalibrationTool", ""};
130
131 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator{this, "RotCreatorTool", ""};
132
134 Gaudi::Property<double> m_option_outlierChi2Cut{this, "OutlierChi2Cut", 12.5};
136 Gaudi::Property<unsigned> m_option_maxPropagationStep{this, "MaxPropagationStep", 5000};
138 Gaudi::Property<unsigned> m_option_maxNavSurfaces{this, "MaxSurfacesPerNavStep", 100};
140 Gaudi::Property<bool> m_option_includeELoss{this, "IncludeELoss", true};
142 Gaudi::Property<bool> m_option_includeScat{this, "IncludeScattering", true};
144 Gaudi::Property<bool> m_doStraightLine{this, "DoStraightLine" , false};
146 Gaudi::Property<bool> m_doJacobianCorr{this, "DoFreeToBoundCorrection", false };
148 Gaudi::Property<unsigned> m_nIterMax{this, "MaxIterations", 5};
164
166 static constexpr unsigned s_nExtensions = static_cast<unsigned>(detail::SourceLinkType::nTypes);
167 std::array<Gx2FitterExtension_t, s_nExtensions> m_gx2fExtensions{};
169 std::unique_ptr<CurvedFitter_t> m_fitter{nullptr};
171 std::unique_ptr<StraightFitter_t> m_slFitter{nullptr};
172
174
176 const Acts::Logger& logger() const { return *m_logger; }
177
179 std::unique_ptr<const Acts::Logger> m_logger;
180
181
182};
183
184} // namespace ActsTrk
185#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.
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.
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
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< 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.