ATLAS Offline Software
GaussianSumFitter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 #ifndef TrkGaussianSumFitter_H
14 #define TrkGaussianSumFitter_H
15 
18 //
21 //
23 //
31 #include "TrkSurfaces/Surface.h"
33 //
35 #include "GaudiKernel/EventContext.h"
36 #include "GaudiKernel/ToolHandle.h"
37 //
38 #include <atomic>
39 
40 namespace Trk {
41 class FitQuality;
42 class Track;
43 
45  : virtual public ITrackFitter
46  , public AthAlgTool
47 {
48 public:
50  GaussianSumFitter(const std::string&, const std::string&, const IInterface*);
51 
53  virtual ~GaussianSumFitter() = default;
54 
56  virtual StatusCode initialize() override final;
57 
71 
75  virtual std::unique_ptr<Track> fit(
76  const EventContext& ctx,
79  const RunOutlierRemoval /*Not used*/,
80  const ParticleHypothesis /*Not used*/) const override final;
81 
85  virtual std::unique_ptr<Track> fit(
86  const EventContext& ctx,
89  const RunOutlierRemoval /*Not used*/,
90  const ParticleHypothesis particleHypothesis /*Not used*/) const override final;
91 
93  virtual std::unique_ptr<Track> fit(
94  const EventContext& ctx,
95  const Track&,
96  const RunOutlierRemoval /*Not used*/,
97  const ParticleHypothesis /*Not used*/) const override final;
98 
100  virtual std::unique_ptr<Track> fit(
101  const EventContext& ctx,
102  const Track&,
104  const RunOutlierRemoval /*Not used*/,
105  const ParticleHypothesis /*Not used*/) const override final;
106 
108  virtual std::unique_ptr<Track> fit(
109  const EventContext& ctx,
110  const Track&,
112  const RunOutlierRemoval /*Not used*/,
113  const ParticleHypothesis /*Not used*/) const override final;
114 
116  virtual std::unique_ptr<Track> fit(
117  const EventContext& ctx,
118  const Track&,
119  const Track&,
120  const RunOutlierRemoval /*Not used*/,
121  const ParticleHypothesis /*Not used*/) const override final;
123  // Internally we can use a simple std::vector
124  using GSFTrajectory = std::vector<GSFTsos>;
125 
126 private:
129 
132  GSFTrajectory& trajectory) const;
133 
136  const EventContext& ctx,
138  const GSFTrajectory& smoothedTrajectory) const;
140  bool addCCOT(const EventContext& ctx,
142  GSFTrajectory& smoothedTrajectory) const;
144 
147 
149  template <typename T>
151  const EventContext& ctx,
153  const T& inputSet,
154  const TrackParameters& estimatedTrackParametersNearOrigin) const;
155 
157  template <typename T>
159  const EventContext& ctx,
161  GSFTrajectory& forwardTrajectory,
162  const T* measurement,
163  const Surface& surface,
164  MultiComponentState& updatedState) const;
165 
170  const EventContext& ctx, Trk::IMultiStateExtrapolator::Cache&,
171  GSFTrajectory& forwardTrajectory,
172  const CaloCluster_OnTrack* ccot = nullptr) const;
173 
175  private:
177  this, "ToolForExtrapolation", "Trk::GsfExtrapolator/GsfExtrapolator", ""};
178 
179  ToolHandle<IRIO_OnTrackCreator> m_rioOnTrackCreator{
180  this, "ToolForROTCreation", "",
181  "Tool for converting Raw Data to measurements"};
182 
183  Gaudi::Property<bool> m_reintegrateOutliers{this, "ReintegrateOutliers", true,
184  "Reintegrate Outliers"};
185 
186  Gaudi::Property<bool> m_refitOnMeasurementBase{
187  this, "RefitOnMeasurementBase", true, "Refit On Measurement Base"};
188 
189  Gaudi::Property<bool> m_combineWithFitter{
190  this, "CombineStateWithFitter", false,
191  "Combine with forwards state during Smoothing"};
192 
193  Gaudi::Property<bool> m_useMode{
194  this, "useMode", true,
195  "Collapse MultiComponent States using Mode rather than Mean"};
196 
197  Gaudi::Property<bool> m_slimTransientMTSOS{
198  this, "slimTransientMTSOS", true,
199  "Slim the transient MTSOS . Keeping just the combined state and not all "
200  "components"};
201 
202  Gaudi::Property<double> m_cutChiSquaredPerNumberDOF{
203  this, "StateChi2PerNDOFCut", 50., "Cut on Chi2 per NDOF"};
204 
205  Gaudi::Property<unsigned int> m_maximumNumberOfComponents{
206  this, "MaximumNumberOfComponents", 12, "Maximum number of components"};
207 
208  DoubleArrayProperty m_smootherCovFactors{
209  this,
210  "smootherStartCovFactors",
211  {15., 5., 15., 5., 15.},
212  "Inflation factors for the covariance at the start of smoothing [LocX, LocY, phi, "
213  "theta, q / p]"};
214 
217 };
218 
219 } // end Trk namespace
221 
222 #endif
Trk::GaussianSumFitter::~GaussianSumFitter
virtual ~GaussianSumFitter()=default
Virtual destructor.
TrkDetElementBase.h
MultiComponentStateCombiner.h
Trk::PrepRawDataSet
std::vector< const PrepRawData * > PrepRawDataSet
vector of clusters and drift circles
Definition: FitterTypes.h:26
TrackParameters.h
Surface.h
Trk::GaussianSumFitter::initialize
virtual StatusCode initialize() override final
AlgTool initialise method.
Definition: GaussianSumFitter.cxx:171
Trk::GaussianSumFitter::m_slimTransientMTSOS
Gaudi::Property< bool > m_slimTransientMTSOS
Definition: GaussianSumFitter.h:197
Trk::Cache
Definition: LocalExtrapolatorCache.h:36
IRIO_OnTrackCreator.h
Trk::GaussianSumFitter::convertTrajToTrack
std::unique_ptr< MultiComponentStateOnSurfaceDV > convertTrajToTrack(GSFTrajectory &trajectory) const
Helper to convert the GSFTrajectory to a Trk::Track.
Definition: GaussianSumFitter.cxx:500
Trk::GaussianSumFitter::m_extrapolator
ToolHandle< IMultiStateExtrapolator > m_extrapolator
Definition: GaussianSumFitter.h:176
taskman.template
dictionary template
Definition: taskman.py:316
PropDirection.h
FitterTypes.h
Trk::GaussianSumFitter::smootherFit
GSFTrajectory smootherFit(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const CaloCluster_OnTrack *ccot=nullptr) const
Gsf smoothed trajectory.
Definition: GaussianSumFitter.cxx:585
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::GaussianSumFitter::forwardFit
GSFTrajectory forwardFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const T &inputSet, const TrackParameters &estimatedTrackParametersNearOrigin) const
Forward GSF fit.
Trk::ITrackFitter
Definition: ITrackFitter.h:42
Trk::RunOutlierRemoval
bool RunOutlierRemoval
switch to toggle quality processing after fit
Definition: FitterTypes.h:22
Trk::GaussianSumFitter::GSFTrajectory
std::vector< GSFTsos > GSFTrajectory
Definition: GaussianSumFitter.h:124
Trk::GaussianSumFitter::makePerigee
GSFTsos makePerigee(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory) const
Produces a perigee from a smoothed trajectory.
Definition: GaussianSumFitter.cxx:515
Trk::GaussianSumFitter::m_refitOnMeasurementBase
Gaudi::Property< bool > m_refitOnMeasurementBase
Definition: GaussianSumFitter.h:186
Trk::GaussianSumFitter::fit
virtual std::unique_ptr< Track > fit(const EventContext &ctx, const PrepRawDataSet &, const TrackParameters &, const RunOutlierRemoval, const ParticleHypothesis) const override final
Fit a collection of 'PrepRawData' objects using the Gaussian Sum Filter.
Definition: GaussianSumFitter.cxx:341
IMultiStateExtrapolator.h
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:28
GSFTsos.h
Simplified TSos for internal GSF use.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::electron
@ electron
Definition: ParticleHypothesis.h:30
vector
Definition: MultiHisto.h:13
AthAlgTool.h
Trk::GaussianSumFitter::m_smootherCovFactors
DoubleArrayProperty m_smootherCovFactors
Definition: GaussianSumFitter.h:208
Trk::GaussianSumFitter::GaussianSumFitter
GaussianSumFitter(const std::string &, const std::string &, const IInterface *)
Constructor with parameters to be passed to AlgTool.
Definition: GaussianSumFitter.cxx:161
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::ParametersBase
Definition: ParametersBase.h:55
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
columnar::final
CM final
Definition: ColumnAccessor.h:106
GSFTsos
Definition: GSFTsos.h:17
Trk::MeasurementSet
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
Definition: FitterTypes.h:30
Trk::GaussianSumFitter::m_useMode
Gaudi::Property< bool > m_useMode
Definition: GaussianSumFitter.h:193
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::CaloCluster_OnTrack
Definition: CaloCluster_OnTrack.h:32
Trk::GaussianSumFitter::addCCOT
bool addCCOT(const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const
Methof to add the CaloCluster onto the track.
Definition: GaussianSumFitter.cxx:765
Trk::GaussianSumFitter
Definition: GaussianSumFitter.h:47
Trk::GaussianSumFitter::m_particleHypothesis
Trk::ParticleHypothesis m_particleHypothesis
Definition: GaussianSumFitter.h:216
python.Dumpers.typename
def typename(t)
Definition: Dumpers.py:193
CaloCluster_OnTrack.h
Trk::GaussianSumFitter::m_combineWithFitter
Gaudi::Property< bool > m_combineWithFitter
Definition: GaussianSumFitter.h:189
private
#define private
Definition: xAODTruthCnvAlg.h:20
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::GaussianSumFitter::stepForwardFit
bool stepForwardFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const T *measurement, const Surface &surface, MultiComponentState &updatedState) const
Progress one step along the forward fit.
Trk::GaussianSumFitter::m_trkParametersComparisonFunction
TrkParametersComparisonFunction m_trkParametersComparisonFunction
Definition: GaussianSumFitter.h:215
Trk::ComparisonFunction< TrackParameters >
AthAlgTool
Definition: AthAlgTool.h:26
Trk::GaussianSumFitter::m_maximumNumberOfComponents
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
Definition: GaussianSumFitter.h:205
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::GaussianSumFitter::m_reintegrateOutliers
Gaudi::Property< bool > m_reintegrateOutliers
Definition: GaussianSumFitter.h:183
Trk::GaussianSumFitter::m_cutChiSquaredPerNumberDOF
Gaudi::Property< double > m_cutChiSquaredPerNumberDOF
Definition: GaussianSumFitter.h:202
Trk::GaussianSumFitter::m_rioOnTrackCreator
ToolHandle< IRIO_OnTrackCreator > m_rioOnTrackCreator
Definition: GaussianSumFitter.h:179
ITrackFitter.h
GsfMeasurementUpdator.h
Code for performing kalman filter update step on multi-component states for the gaussian-sum filter.
MultiComponentStateOnSurface.h
Trk::IMultiStateExtrapolator
Definition: IMultiStateExtrapolator.h:40
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:62
GaussianSumFitter.icc
TrkParametersComparisonFunction.h