ATLAS Offline Software
TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #ifndef TrkGaussianSumFitter_H
12 #define TrkGaussianSumFitter_H
13 
17 //
19 //
27 #include "TrkSurfaces/Surface.h"
29 //
31 #include "GaudiKernel/EventContext.h"
32 #include "GaudiKernel/ToolHandle.h"
33 //
34 #include <atomic>
35 
36 namespace Trk {
37 class IMultiStateMeasurementUpdator;
38 class MultiComponentStateOnSurface;
39 class FitQuality;
40 class Track;
41 
42 class GaussianSumFitter final
43  : virtual public ITrackFitter
44  , public AthAlgTool
45 {
46 public:
48  GaussianSumFitter(const std::string&, const std::string&, const IInterface*);
49 
51  virtual ~GaussianSumFitter() = default;
52 
54  virtual StatusCode initialize() override final;
55 
57  virtual std::unique_ptr<Track> fit(
58  const EventContext& ctx,
59  const Track&,
60  const RunOutlierRemoval /*Not used*/,
61  const ParticleHypothesis particleHypothesis =
62  nonInteracting) const override final;
63 
67  virtual std::unique_ptr<Track> fit(
68  const EventContext& ctx,
71  const RunOutlierRemoval /*Not used*/,
72  const ParticleHypothesis particleHypothesis =
73  nonInteracting) const override final;
74 
78  virtual std::unique_ptr<Track> fit(
79  const EventContext& ctx,
82  const RunOutlierRemoval /*Not used*/,
83  const ParticleHypothesis particleHypothesis =
84  nonInteracting) const override final;
85 
87  virtual std::unique_ptr<Track> fit(
88  const EventContext& ctx,
89  const Track&,
91  const RunOutlierRemoval /*Not used*/,
92  const ParticleHypothesis matEffects = nonInteracting) const override final;
93 
95  virtual std::unique_ptr<Track> fit(
96  const EventContext& ctx,
97  const Track&,
99  const RunOutlierRemoval /*Not used*/,
100  const ParticleHypothesis matEffects = nonInteracting) const override final;
101 
103  virtual std::unique_ptr<Track> fit(
104  const EventContext& ctx,
105  const Track&,
106  const Track&,
107  const RunOutlierRemoval /*Not used*/,
108  const ParticleHypothesis matEffects = nonInteracting) const override final;
109 
110  // Internally we can use a simple std::vector
111  using GSFTrajectory = std::vector<GSFTsos>;
112 
113 private:
115  GSFTrajectory& trajectory) const;
116 
119  const EventContext& ctx,
121  const GSFTrajectory& smoothedTrajectory,
122  const ParticleHypothesis particleHypothesis = nonInteracting) const;
123 
125  bool stepForwardFit(
126  const EventContext& ctx,
128  GSFTrajectory& forwardTrajectory,
129  const PrepRawData* originalPrepRawData,
130  const MeasurementBase* originalMeasurement,
131  const Surface& surface,
132  MultiComponentState& updatedState,
133  const ParticleHypothesis particleHypothesis = nonInteracting) const;
134 
137  const EventContext& ctx,
139  const PrepRawDataSet& inputPrepRawDataSet,
140  const TrackParameters& estimatedTrackParametersNearOrigin,
141  const ParticleHypothesis particleHypothesis = nonInteracting) const;
142 
145  const EventContext& ctx,
147  const MeasurementSet& inputMeasurementSet,
148  const TrackParameters& estimatedTrackParametersNearOrigin,
149  const ParticleHypothesis particleHypothesis = nonInteracting) const;
150 
155  const EventContext& ctx,
157  GSFTrajectory& forwardTrajectory,
158  const ParticleHypothesis particleHypothesis = nonInteracting,
159  const CaloCluster_OnTrack* ccot = nullptr) const;
160 
162  MultiComponentState addCCOT(const EventContext& ctx,
164  GSFTrajectory& smoothedTrajectory) const;
165 
166 private:
168  this,
169  "ToolForExtrapolation",
170  "Trk::GsfExtrapolator/GsfExtrapolator",
171  ""};
172  ToolHandle<IRIO_OnTrackCreator> m_rioOnTrackCreator{
173  this,
174  "ToolForROTCreation", "",
175  "Tool for converting Raw Data to measurements if we do not fit "
176  "measurements directly"};
177 
178  Gaudi::Property<unsigned int> m_maximumNumberOfComponents{
179  this,
180  "MaximumNumberOfComponents",
181  12,
182  "Maximum number of components"};
183 
184  Gaudi::Property<bool> m_reintegrateOutliers{
185  this,
186  "ReintegrateOutliers",
187  true,
188  "Reintegrate Outliers"};
189 
190  Gaudi::Property<bool> m_refitOnMeasurementBase{
191  this,
192  "RefitOnMeasurementBase",
193  true,
194  "Refit On Measurement Base"};
195 
196  Gaudi::Property<bool> m_combineWithFitter{
197  this,
198  "CombineStateWithFitter",
199  false,
200  "Combine with forwards state during Smoothing"};
201 
202  Gaudi::Property<bool> m_useMode{
203  this,
204  "useMode",
205  true,
206  "Combine/Collapse MultiComponent State Mode rather than mean"};
207 
208  Gaudi::Property<bool> m_slimTransientMTSOS{
209  this,
210  "slimTransientMTSOS",
211  true,
212  "Slim the transient MTSOS . keeping just the combined state and not all "
213  "components"};
214 
215  Gaudi::Property<double> m_cutChiSquaredPerNumberDOF{
216  this,
217  "StateChi2PerNDOFCut",
218  50.,
219  "Cut on Chi2 per NDOF"};
220 
223  std::vector<double> m_sortingReferencePoint;
224 
225 };
226 
227 } // end Trk namespace
228 #endif
Trk::GaussianSumFitter::~GaussianSumFitter
virtual ~GaussianSumFitter()=default
Virtual destructor.
TrkDetElementBase.h
Trk::GaussianSumFitter::smootherFit
GSFTrajectory smootherFit(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting, const CaloCluster_OnTrack *ccot=nullptr) const
Gsf smoothed trajectory.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:824
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: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:104
Trk::GaussianSumFitter::m_directionToPerigee
PropDirection m_directionToPerigee
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:221
Trk::GaussianSumFitter::m_slimTransientMTSOS
Gaudi::Property< bool > m_slimTransientMTSOS
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:208
Trk::Cache
Definition: LocalExtrapolatorCache.h:27
IRIO_OnTrackCreator.h
Trk::GaussianSumFitter::convertTrajToTrack
std::unique_ptr< MultiComponentStateOnSurfaceDV > convertTrajToTrack(GSFTrajectory &trajectory) const
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:530
Trk::GaussianSumFitter::forwardPRDfit
GSFTrajectory forwardPRDfit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const PrepRawDataSet &inputPrepRawDataSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const
Forward GSF fit using PrepRawData.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:607
Trk::GaussianSumFitter::m_extrapolator
ToolHandle< IMultiStateExtrapolator > m_extrapolator
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:167
PropDirection.h
FitterTypes.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::GaussianSumFitter::m_sortingReferencePoint
std::vector< double > m_sortingReferencePoint
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:223
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: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:111
Trk::GaussianSumFitter::stepForwardFit
bool stepForwardFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const PrepRawData *originalPrepRawData, const MeasurementBase *originalMeasurement, const Surface &surface, MultiComponentState &updatedState, const ParticleHypothesis particleHypothesis=nonInteracting) const
Progress one step along the fit.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:722
Trk::GaussianSumFitter::m_refitOnMeasurementBase
Gaudi::Property< bool > m_refitOnMeasurementBase
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:190
IMultiStateExtrapolator.h
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
GSFTsos.h
Simplified TSos for internal GSF use.
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
vector
Definition: MultiHisto.h:13
AthAlgTool.h
Trk::GaussianSumFitter::GaussianSumFitter
GaussianSumFitter(const std::string &, const std::string &, const IInterface *)
Constructor with parameters to be passed to AlgTool.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:91
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::ParametersBase
Definition: ParametersBase.h:55
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
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: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:202
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::GaussianSumFitter::forwardMeasurementFit
GSFTrajectory forwardMeasurementFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const MeasurementSet &inputMeasurementSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const
Forward GSF fit using MeasurementSet.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:669
Trk::CaloCluster_OnTrack
Definition: CaloCluster_OnTrack.h:32
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
Trk::GaussianSumFitter
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:45
Trk::GaussianSumFitter::fit
virtual std::unique_ptr< Track > fit(const EventContext &ctx, const Track &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis=nonInteracting) const override final
Refit a track using the Gaussian Sum Filter.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:141
CaloCluster_OnTrack.h
Trk::GaussianSumFitter::m_combineWithFitter
Gaudi::Property< bool > m_combineWithFitter
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:196
Trk::GaussianSumFitter::makePerigee
GSFTsos makePerigee(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting) const
Produces a perigee from a smoothed trajectory.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:546
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::GaussianSumFitter::addCCOT
MultiComponentState addCCOT(const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const
Methof to add the CaloCluster onto the track.
Definition: TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx:1022
Trk::GaussianSumFitter::m_trkParametersComparisonFunction
TrkParametersComparisonFunction m_trkParametersComparisonFunction
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:222
Trk::ComparisonFunction< TrackParameters >
AthAlgTool
Definition: AthAlgTool.h:26
Trk::GaussianSumFitter::m_maximumNumberOfComponents
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:178
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::GaussianSumFitter::m_reintegrateOutliers
Gaudi::Property< bool > m_reintegrateOutliers
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:184
Trk::GaussianSumFitter::m_cutChiSquaredPerNumberDOF
Gaudi::Property< double > m_cutChiSquaredPerNumberDOF
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:215
Trk::GaussianSumFitter::m_rioOnTrackCreator
ToolHandle< IRIO_OnTrackCreator > m_rioOnTrackCreator
Definition: TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h:172
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:45
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:63
TrkParametersComparisonFunction.h