5#ifndef TRKIPATFITTER_IPATFITTER_H
6#define TRKIPATFITTER_IPATFITTER_H
13#include "GaudiKernel/EventContext.h"
14#include "GaudiKernel/ToolHandle.h"
43 const IInterface* parent,
bool isGlobalFit =
false);
48 virtual StatusCode
finalize()
override;
54 virtual std::unique_ptr<Track>
fit(
55 const EventContext& ctx,
const Track&,
61 virtual std::unique_ptr<Track>
fit(
68 virtual std::unique_ptr<Track>
fit(
76 virtual std::unique_ptr<Track>
fit(
84 virtual std::unique_ptr<Track>
fit(
92 virtual std::unique_ptr<Track>
fit(
93 const EventContext& ctx,
const Track&,
const Track&,
113 m_measurements = std::make_unique<std::vector<FitMeasurement*>>();
120 throw std::runtime_error(
"no measurements exist");
128 throw std::runtime_error(
"no measurements exist");
142 std::pair<std::unique_ptr<Track>, std::unique_ptr<FitState>>
fitWithState(
143 const EventContext& ctx,
const Track&,
157 std::vector<FitMeasurement*>& measurements,
164 const EventContext& ctx, std::vector<FitMeasurement*>& measurements,
187 Gaudi::Property<bool>
m_lineFit{
this,
"LineFit",
false};
189 100. * Gaudi::Units::GeV};
192 this,
"MaterialAllocator",
"Trk::MaterialAllocator/MaterialAllocator"};
194 this,
"RungeKuttaIntersector",
195 "Trk::RungeKuttaIntersector/RungeKuttaIntersector"};
197 this,
"SolenoidalIntersector",
198 "Trk::SolenoidalIntersector/SolenoidalIntersector"};
200 this,
"Propagator",
"Trk::STEP_Propagator/AtlasSTEP_Propagator"};
202 this,
"StraightLineIntersector",
203 "Trk::StraightLineIntersector/StraightLineIntersector"};
205 this,
"TrackingVolumesSvc",
"Trk::TrackingVolumesSvc/TrackingVolumesSvc"};
207 this,
"TrackSummaryTool",
"MuonTrackSummaryTool"};
211 1. * Gaudi::Units::mm};
213 this,
"MaxNumberOfWarnings", 10,
214 "Maximum number of permitted WARNING messages per message type."};
218 this,
"ConstrainedAlignmentEffects",
false};
221 this,
"ForcedRefitsForValidation", 0};
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
std::vector< std::unique_ptr< const TrackStateOnSurface > > Garbage_t
Provides the abstract interface for track fitting in the common ATLAS Tracking EDM.
magnetic field properties to steer the behavior of the extrapolation
Contains information about the 'fitter' of this track.
represents the track state (measurement, material, fit parameters and quality) at a surface.
void deleteMeasurements()
const std::vector< FitMeasurement * > & getMeasurements() const
bool hasMeasurements() const
std::unique_ptr< std::vector< FitMeasurement * > > m_measurements
std::vector< FitMeasurement * > & getMeasurements()
std::unique_ptr< FitParameters > parameters
std::unique_ptr< Trk::Volume > m_calorimeterVolume
virtual ~iPatFitter()=default
std::unique_ptr< Track > performFit(FitState &fitState, const ParticleHypothesis particleHypothesis, const TrackInfo &trackInfo, const Trk::TrackStates *leadingTSOS, const FitQuality *perigeeQuality, Garbage_t &garbage) const
iPatFitter(const std::string &type, const std::string &name, const IInterface *parent, bool isGlobalFit=false)
Gaudi::Property< unsigned > m_maxWarnings
ToolHandle< IMaterialAllocator > m_materialAllocator
std::atomic< unsigned > m_countGoodRefits
std::unique_ptr< Trk::Volume > m_indetVolume
virtual StatusCode initialize() override
Gaudi::Property< bool > m_constrainedAlignmentEffects
Gaudi::Property< double > m_orderingTolerance
std::pair< std::unique_ptr< Track >, std::unique_ptr< FitState > > fitWithState(const EventContext &ctx, const Track &, const RunOutlierRemoval runOutlier=false, const ParticleHypothesis particleHypothesis=Trk::nonInteracting) const
std::atomic< unsigned > m_countGoodFits
IMaterialAllocator::Garbage_t Garbage_t
Gaudi::Property< int > m_forcedRefitsForValidation
Trk::MagneticFieldProperties m_stepField
std::atomic< unsigned > m_countFitAttempts
Gaudi::Property< bool > m_aggregateMaterial
Gaudi::Property< bool > m_asymmetricCaloEnergy
ServiceHandle< ITrackingVolumesSvc > m_trackingVolumesSvc
std::atomic< unsigned > m_countRefitAttempts
Gaudi::Property< bool > m_lineFit
ToolHandle< IIntersector > m_straightLineIntersector
Gaudi::Property< double > m_lineMomentum
Gaudi::Property< bool > m_fullCombinedFit
ToolHandle< IPropagator > m_stepPropagator
void addMeasurements(const EventContext &ctx, std::vector< FitMeasurement * > &measurements, const MeasurementSet &measurementSet, const FitParameters ¶meters) const
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
std::unique_ptr< FitProcedure > m_fitProcedure
std::atomic< unsigned > m_countRefitIterations
virtual StatusCode finalize() override
std::mutex m_fitProcedureMutex
std::atomic< unsigned > m_countIterations
void printTSOS(const Track &) const
virtual std::unique_ptr< Track > fit(const EventContext &ctx, const Track &, const RunOutlierRemoval runOutlier=false, const ParticleHypothesis particleHypothesis=Trk::nonInteracting) const override
RE-FIT A TRACK.
void refit(const EventContext &ctx, FitState &fitState, const Track &track, const RunOutlierRemoval runOutlier, const ParticleHypothesis particleHypothesis) const
std::unique_ptr< MessageHelper > m_messageHelper
Gaudi::Property< int > m_maxIterations
ToolHandle< IIntersector > m_solenoidalIntersector
ToolHandle< IIntersector > m_rungeKuttaIntersector
Gaudi::Property< bool > m_extendedDebug
Ensure that the ATLAS eigen extensions are properly loaded.
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
DataVector< const Trk::TrackStateOnSurface > TrackStates
bool RunOutlierRemoval
switch to toggle quality processing after fit
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