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#include "GaudiKernel/ToolHandle.h"
15// ACTS
16#include "Acts/EventData/VectorMultiTrajectory.hpp"
17#include "Acts/Geometry/GeometryContext.hpp"
18#include "Acts/Utilities/Result.hpp"
19#include "Acts/TrackFitting/GaussianSumFitter.hpp"
20#include "Acts/Propagator/Propagator.hpp"
21#include "Acts/Propagator/MultiEigenStepperLoop.hpp"
22#include "Acts/Propagator/Navigator.hpp"
23#include "Acts/TrackFitting/BetheHeitlerApprox.hpp"
24#include "Acts/TrackFitting/GsfOptions.hpp"
25#include "Acts/Utilities/Logger.hpp"
26
27// PACKAGE
35
38
39// STL
40#include <string>
41#include <memory>
42
43
44
45namespace ActsTrk {
46
48 : public extends<AthAlgTool, Trk::ITrackFitter, ActsTrk::IFitterTool> {
49public:
50
51 using base_class::base_class;
52 virtual ~GaussianSumFitterTool() = default;
53
54 // standard Athena methods
55 virtual StatusCode initialize() override;
56
58 virtual std::unique_ptr<Trk::Track> fit(
59 const EventContext& ctx,
60 const Trk::Track&,
61 const Trk::RunOutlierRemoval runOutlier = false,
62 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
63
65 virtual std::unique_ptr<Trk::Track> fit(
66 const EventContext& ctx,
69 const Trk::RunOutlierRemoval runOutlier = false,
70 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
71
73 virtual std::unique_ptr<Trk::Track> fit(
74 const EventContext& ctx,
77 const Trk::RunOutlierRemoval runOutlier = false,
78 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
79
81 virtual std::unique_ptr<Trk::Track> fit(
82 const EventContext& ctx,
83 const Trk::Track&,
85 const Trk::RunOutlierRemoval runOutlier = false,
86 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
87
89 virtual std::unique_ptr<Trk::Track> fit(
90 const EventContext& ctx,
91 const Trk::Track&,
93 const Trk::RunOutlierRemoval runOutlier = false,
94 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
95
97 virtual std::unique_ptr<Trk::Track> fit(
98 const EventContext& ctx,
99 const Trk::Track& intrk1,
100 const Trk::Track& intrk2,
101 const Trk::RunOutlierRemoval runOutlier = false,
102 const Trk::ParticleHypothesis matEffects = Trk::nonInteracting) const override;
103
105 virtual
106 std::unique_ptr< ActsTrk::MutableTrackContainer >
107 fit(const ActsTrk::Seed &seed,
108 const Acts::BoundTrackParameters& initialParams,
109 const Acts::GeometryContext& tgContext,
110 const Acts::MagneticFieldContext& mfContext,
111 const Acts::CalibrationContext& calContext,
112 const Acts::Surface& targetSurface) const override;
113
114 virtual
115 std::unique_ptr< ActsTrk::MutableTrackContainer >
116 fit(const std::vector< const xAOD::UncalibratedMeasurement*> & clusterList,
117 const Acts::BoundTrackParameters& initialParams,
118 const Acts::GeometryContext& tgContext,
119 const Acts::MagneticFieldContext& mfContext,
120 const Acts::CalibrationContext& calContext,
121 const Acts::Surface* targetSurface) const override;
122
123 virtual StatusCode fit(
124 const EventContext& ctx,
125 const ActsTrk::TrackContainer::ConstTrackProxy& track,
126 ActsTrk::MutableTrackContainer& trackContainer,
127 const Acts::PerigeeSurface& pSurface) const override;
128
130 // Private methods:
132private:
133 Acts::GsfOptions<ActsTrk::MutableTrackStateBackend> prepareOptions(const Acts::GeometryContext& tgContext,
134 const Acts::MagneticFieldContext& mfContext,
135 const Acts::CalibrationContext& calContext,
136 const Acts::PerigeeSurface& surface) const;
137
138 std::unique_ptr<Trk::Track> performFit(const EventContext& ctx,
139 const Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>& gsfOptions,
140 const std::vector<Acts::SourceLink>& trackSourceLinks,
141 const Acts::BoundTrackParameters& initialParams) const;
142
143 std::unique_ptr<Trk::Track> performDirectFit(const EventContext& ctx,
144 const Acts::GsfOptions<ActsTrk::MutableTrackStateBackend>& gsfOptions,
145 const std::vector<Acts::SourceLink>& trackSourceLinks,
146 const Acts::BoundTrackParameters& initialParams,
147 const std::vector<const Acts::Surface*>& surfaces) const;
148
149 const Acts::GsfExtensions<ActsTrk::MutableTrackStateBackend>& getExtensions() const;
150
152 const Acts::Logger& logger() const;
153
154 private:
156 using TrackState_t = MutableTrackStateBackend::TrackStateProxy;
157 ToolHandle<IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", ""};
158 PublicToolHandle<ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
159 PublicToolHandle<IGeometryRealmConvTool> m_geometryConvTool{this, "GeometryRealmConvTool", ""};
160 ToolHandle<ITrackConverterTool> m_ATLASConverterTool{this, "ATLASConverterTool", ""};
161 ToolHandle<Trk::IExtendedTrackSummaryTool> m_trkSummaryTool {this, "SummaryTool", "", "ToolHandle for track summary tool"};
162 ToolHandle<Trk::IBoundaryCheckTool> m_boundaryCheckTool {this,
163 "BoundaryCheckTool",
164 "",
165 "Boundary checking tool for detector sensitivities"};
166 ToolHandle<Trk::IRIO_OnTrackCreator> m_ROTcreator{this, "RotCreatorTool", ""};
167 // the settable job options
168 Gaudi::Property< double > m_option_outlierChi2Cut {this, "OutlierChi2Cut", 12.5,
169 "Chi2 cut used by the outlier finder" };
170 Gaudi::Property< int > m_option_maxPropagationStep {this, "MaxPropagationStep", 5000,
171 "Maximum number of steps for one propagate call"};
172
173 Gaudi::Property< int > m_maxComponents {this, "MaxComponents", 12,
174 "Maximum number of components in GSF"};
175
176 Gaudi::Property<bool> m_useDirectNavigation{this, "UseDirectNavigation", false,
177 "GSF with direct navigation when refitting measurements"};
178
179 Gaudi::Property<bool> m_refitOnly{this, "RefitOnly", false,
180 "Do refit only. Track summary will not be added"};
181
182 Gaudi::Property< double > m_weightCutOff {this, "WeightCutOff", 1.e-4,
183 "component weight cut off"};
184
185 Gaudi::Property<std::string> m_option_componentMergeMethod{this, "ComponentMergeMethod", "MaxWeight"
186 , "method to merge components {Mean, MaxWeight}"};
187
188 Acts::ComponentMergeMethod m_componentMergeMethod;
189
191 using Fitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::Navigator>,
193
194 std::unique_ptr<ActsTrk::detail::TrkMeasurementCalibrator> m_calibrator {nullptr};
195 std::unique_ptr<Fitter> m_fitter {nullptr};
196
197 using DirectFitter = Acts::GaussianSumFitter< Acts::Propagator<Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator>,
199 std::unique_ptr<DirectFitter> m_directFitter {nullptr};
200
201
203 Acts::GsfExtensions<ActsTrk::MutableTrackStateBackend> m_gsfExtensions;
204
206
208 std::unique_ptr<const Acts::Logger> m_logger {nullptr};
209
210}; // end of namespace
211
212}
213
214#endif
215
std::unique_ptr< Trk::Track > performFit(const EventContext &ctx, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams) const
const Acts::Logger & logger() const
Private access to the logger.
detail::TrkMeasSurfaceAccessor m_surfaceAccessor
Gaudi::Property< std::string > m_option_componentMergeMethod
ToolHandle< IExtrapolationTool > m_extrapolationTool
Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > prepareOptions(const Acts::GeometryContext &tgContext, const Acts::MagneticFieldContext &mfContext, const Acts::CalibrationContext &calContext, const Acts::PerigeeSurface &surface) const
ToolHandle< Trk::IRIO_OnTrackCreator > m_ROTcreator
Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::DirectNavigator >, ActsTrk::MutableTrackStateBackend > DirectFitter
std::unique_ptr< ActsTrk::detail::TrkMeasurementCalibrator > m_calibrator
Gaudi::Property< double > m_weightCutOff
Gaudi::Property< int > m_option_maxPropagationStep
Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > m_gsfExtensions
Acts::GaussianSumFitter< Acts::Propagator< Acts::MultiEigenStepperLoop<>, Acts::Navigator >, ActsTrk::MutableTrackStateBackend > Fitter
Type erased track fitter function.
virtual StatusCode initialize() override
PublicToolHandle< IGeometryRealmConvTool > m_geometryConvTool
Acts::ComponentMergeMethod m_componentMergeMethod
PublicToolHandle< ITrackingGeometryTool > m_trackingGeometryTool
MutableTrackStateBackend::TrackStateProxy TrackState_t
Abrivate the track state proxy.
Gaudi::Property< double > m_option_outlierChi2Cut
virtual ~GaussianSumFitterTool()=default
Gaudi::Property< bool > m_useDirectNavigation
ToolHandle< ITrackConverterTool > m_ATLASConverterTool
std::unique_ptr< Fitter > m_fitter
std::unique_ptr< const Acts::Logger > m_logger
logging instance
const Acts::GsfExtensions< ActsTrk::MutableTrackStateBackend > & getExtensions() const
std::unique_ptr< DirectFitter > m_directFitter
ToolHandle< Trk::IBoundaryCheckTool > m_boundaryCheckTool
std::unique_ptr< Trk::Track > performDirectFit(const EventContext &ctx, const Acts::GsfOptions< ActsTrk::MutableTrackStateBackend > &gsfOptions, const std::vector< Acts::SourceLink > &trackSourceLinks, const Acts::BoundTrackParameters &initialParams, const std::vector< const Acts::Surface * > &surfaces) const
ActsTrk::detail::FitterHelperFunctions::ATLASOutlierFinder m_outlierFinder
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
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trkSummaryTool
Helper class to access the Acts::Surface for a given Acts::SourceLink which is poiniting to a Trk::Me...
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
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