ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::GaussianSumFitter Class Referencefinal

#include <GaussianSumFitter.h>

Inheritance diagram for Trk::GaussianSumFitter:
Collaboration diagram for Trk::GaussianSumFitter:

Public Types

using GSFTrajectory = std::vector<GSFTsos>

Public Member Functions

 GaussianSumFitter (const std::string &, const std::string &, const IInterface *)
 Constructor with parameters to be passed to AlgTool.
virtual ~GaussianSumFitter ()=default
 Virtual destructor.
virtual StatusCode initialize () override final
 AlgTool initialise method.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
Inteface method. The main one are the ones taking

Measurement or Raw Data inputs. The rest are implemented on top of these two. We follow the ITrackFitter interface but not all arguements are meaningfull

We do not implement outlier remove. Actually by default we try to re-integrate possible outliers from non-GSF fits.

The material effects actually applied are determined by the dedicated configured GsfExtrapolator.

virtual std::unique_ptr< Trackfit (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.
virtual std::unique_ptr< Trackfit (const EventContext &ctx, const MeasurementSet &, const TrackParameters &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis) const override final
 Fit a collection of 'RIO_OnTrack' objects using the Gaussian Sum Filter.
virtual std::unique_ptr< Trackfit (const EventContext &ctx, const Track &, const RunOutlierRemoval, const ParticleHypothesis) const override final
 Refit a track.
virtual std::unique_ptr< Trackfit (const EventContext &ctx, const Track &, const PrepRawDataSet &, const RunOutlierRemoval, const ParticleHypothesis) const override final
 Refit a track adding a PrepRawDataSet.
virtual std::unique_ptr< Trackfit (const EventContext &ctx, const Track &, const MeasurementSet &, const RunOutlierRemoval, const ParticleHypothesis) const override final
 Refit a track adding a measurement base set.
virtual std::unique_ptr< Trackfit (const EventContext &ctx, const Track &, const Track &, const RunOutlierRemoval, const ParticleHypothesis) const override final
 Combine two tracks by refitting their measurements.

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>
Helper methods
std::unique_ptr< MultiComponentStateOnSurfaceDVconvertTrajToTrack (GSFTrajectory &trajectory) const
 Helper to convert the GSFTrajectory to a Trk::Track.
GSFTsos makePerigee (const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory) const
 Produces a perigee from a smoothed trajectory.
bool addCCOT (const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const
 Methof to add the CaloCluster onto the track.
Actual implementation of the GSF formalism
template<typename T>
GSFTrajectory forwardFit (const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const T &inputSet, const TrackParameters &estimatedTrackParametersNearOrigin) const
 Forward GSF fit.
template<typename T>
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.
GSFTrajectory smootherFit (const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const CaloCluster_OnTrack *ccot=nullptr) const
 Gsf smoothed trajectory.

Private Attributes

ToolHandle< IMultiStateExtrapolatorm_extrapolator
ToolHandle< IRIO_OnTrackCreatorm_rioOnTrackCreator
Gaudi::Property< bool > m_reintegrateOutliers
Gaudi::Property< bool > m_refitOnMeasurementBase
Gaudi::Property< bool > m_combineWithFitter
Gaudi::Property< bool > m_useMode
Gaudi::Property< bool > m_slimTransientMTSOS
Gaudi::Property< double > m_cutChiSquaredPerNumberDOF
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
DoubleArrayProperty m_smootherCovFactors
TrkParametersComparisonFunction m_trkParametersComparisonFunction
Trk::ParticleHypothesis m_particleHypothesis = Trk::electron
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 44 of file GaussianSumFitter.h.

Member Typedef Documentation

◆ GSFTrajectory

Definition at line 124 of file GaussianSumFitter.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GaussianSumFitter()

Trk::GaussianSumFitter::GaussianSumFitter ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor with parameters to be passed to AlgTool.

Definition at line 161 of file GaussianSumFitter.cxx.

164 : AthAlgTool(type, name, parent)
166{
167 declareInterface<ITrackFitter>(this);
168}
AthAlgTool()
Default constructor:
TrkParametersComparisonFunction m_trkParametersComparisonFunction

◆ ~GaussianSumFitter()

virtual Trk::GaussianSumFitter::~GaussianSumFitter ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ addCCOT()

bool Trk::GaussianSumFitter::addCCOT ( const EventContext & ctx,
const Trk::CaloCluster_OnTrack * ccot,
GSFTrajectory & smoothedTrajectory ) const
private

Methof to add the CaloCluster onto the track.

special method to account for possible additional measurement from the calorimeter

Definition at line 765 of file GaussianSumFitter.cxx.

769{
770 const GSFTsos& currentMultiStateOS = smoothedTrajectory.back();
771 if (!ccot) {
772 return false;
773 }
774 const auto& currentMultiComponentState = currentMultiStateOS.multiComponentState;
775 const Trk::MeasurementBase* measurement = currentMultiStateOS.measurementOnTrack.get();
776 if (!measurement) {
777 return false;
778 }
779 const Trk::Surface& currentSurface = measurement->associatedSurface();
780
781 //Create a ccot that we will own. So we use it to build our own TSOS
782 auto ownCCOT = ccot->uniqueClone();
783 // Extrapolate to the Calo to get prediction
784 Trk::MultiComponentState extrapolatedToCaloState = m_extrapolator->extrapolateDirectly(
785 ctx, currentMultiComponentState, ownCCOT->associatedSurface(),
786 Trk::alongMomentum, false);
787
788 if (extrapolatedToCaloState.empty()) {
789 return false;
790 }
791 // Update newly extrapolated state with measurement
792 Trk::FitQualityOnSurface fitQuality;
793 Trk::MultiComponentState updatedStateAtCalo =
794 Trk::GsfMeasurementUpdator::update(std::move(extrapolatedToCaloState),
795 *ownCCOT, fitQuality);
796 if (updatedStateAtCalo.empty()) {
797 return false;
798 }
799
800 // Extrapolate back to the surface near the origin
801 auto improvedState = m_extrapolator->extrapolateDirectly(
802 ctx, updatedStateAtCalo, currentSurface, Trk::oppositeMomentum,
803 false);
804
805 if (improvedState.empty()) {
806 return false;
807 }
808 // Combine the improved state after extrapolating back from the calo
809 // and find the mode of the distribution
810 std::unique_ptr<Trk::TrackParameters> combinedSingleState =
812
813 // Now build a dummy measurement for the improved estimation
814 AmgSymMatrix(5) covMatrix;
815 covMatrix.setZero();
816 covMatrix(0, 0) = 1e6;
817 const Trk::DefinedParameter locX(0, Trk::locX);
818 Trk::LocalParameters locpars(locX);
819 auto pseudoMeasurement = std::make_unique<Trk::PseudoMeasurementOnTrack>(
820 std::move(locpars), std::move(covMatrix), currentSurface);
821
822 // Build TSOS at the surface of calo
823 smoothedTrajectory.emplace_back(
824 fitQuality,
825 std::move(ownCCOT),
826 nullptr,
827 std::move(updatedStateAtCalo));
828
829 // Build a TSOS using the dummy measurement and and the final combined state
830 smoothedTrajectory.emplace_back(
831 FitQualityOnSurface{},
832 // We do not add the fitquality again. As this would be the one we
833 // add at calo. Here not a real measurement
834 std::move(pseudoMeasurement),
835 std::move(combinedSingleState),
836 std::move(improvedState));
837
838 return true;
839}
#define AmgSymMatrix(dim)
std::unique_ptr< CaloCluster_OnTrack > uniqueClone() const
NVI Clone giving up unique pointer.
ToolHandle< IMultiStateExtrapolator > m_extrapolator
Gaudi::Property< bool > m_useMode
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
FitQualityOnSurface fitQuality(const MultiComponentState &, const MeasurementBase &)
Method for determining the chi2 of the multi-component state and the number of degrees of freedom.
MultiComponentState update(Trk::MultiComponentState &&, const Trk::MeasurementBase &, FitQualityOnSurface &fitQoS)
Method for updating the multi-state with a new measurement and calculate the fit qaulity at the same ...
std::unique_ptr< Trk::TrackParameters > combineToSingle(const MultiComponentState &, const bool useMode=false)
@bried Calculate combined state of many components
@ oppositeMomentum
@ alongMomentum
std::vector< ComponentParameters > MultiComponentState
@ pseudoMeasurement
@ locX
Definition ParamDefs.h:37
std::pair< double, ParamDefs > DefinedParameter
Typedef to of a std::pair<double, ParamDefs> to identify a passed-through double as a specific type o...
Trk::MultiComponentState multiComponentState
Definition GSFTsos.h:20
std::unique_ptr< Trk::MeasurementBase > measurementOnTrack
Definition GSFTsos.h:24

◆ convertTrajToTrack()

std::unique_ptr< MultiComponentStateOnSurfaceDV > Trk::GaussianSumFitter::convertTrajToTrack ( GSFTrajectory & trajectory) const
private

Helper to convert the GSFTrajectory to a Trk::Track.

Definition at line 500 of file GaussianSumFitter.cxx.

501 {
502 const bool slimTransientMTSOS = m_slimTransientMTSOS;
503 auto MTSOS = std::make_unique<MultiComponentStateOnSurfaceDV>();
504 MTSOS->reserve(trajectory.size());
505 for (GSFTsos& state : trajectory) {
506 MTSOS->push_back(state.convert(slimTransientMTSOS));
507 }
508 return MTSOS;
509}
Gaudi::Property< bool > m_slimTransientMTSOS

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ fit() [1/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const MeasurementSet & measurementSet,
const TrackParameters & estimatedParametersNearOrigin,
const RunOutlierRemoval ,
const ParticleHypothesis particleHypothesis ) const
finaloverridevirtual

Fit a collection of 'RIO_OnTrack' objects using the Gaussian Sum Filter.

Interface method Fitting of a set of MeasurementBase objects This is the main method for MeasurementBase fitting.

  • This requires that an trackParameters object be supplied also as an initial guess

Implements Trk::ITrackFitter.

Definition at line 411 of file GaussianSumFitter.cxx.

417{
418 if (measurementSet.size() < 3) {
419 ATH_MSG_WARNING("Requesting fit with less than 3 Measurements!!!");
420 return nullptr;
421 }
422 // We need to separate the possible CaloCluster on Track
423 // measurement from the rest
424 const Trk::CaloCluster_OnTrack* ccot(nullptr);
425
426 Trk::MeasurementSet cleanedMeasurementSet;
427 cleanedMeasurementSet.reserve(measurementSet.size());
428
429 for (const auto* meas : measurementSet) {
430 if (!meas) {
431 ATH_MSG_WARNING("There is an empty MeasurementBase object ! ");
432 continue;
433 }
435 ccot = static_cast<const Trk::CaloCluster_OnTrack*>(meas);
436 } else {
437 cleanedMeasurementSet.push_back(meas);
438 }
439 }
440
441 // We need a sorted measurement set
442 Trk::MeasurementSet sortedMeasurementSet =
443 MeasurementSet(cleanedMeasurementSet);
444
445 const Trk::MeasurementBaseComparisonFunction
446 measurementBaseComparisonFunction(
447 estimatedParametersNearOrigin.position(),
448 estimatedParametersNearOrigin.momentum());
449 sort(sortedMeasurementSet.begin(), sortedMeasurementSet.end(),
450 measurementBaseComparisonFunction);
451
452 // Create Extrapolator cache that holds material effects cache;
453 Trk::IMultiStateExtrapolator::Cache extrapolatorCache;
454
455 // Perform GSF forwards fit
456 GSFTrajectory forwardTrajectory =
457 forwardFit(ctx, extrapolatorCache, sortedMeasurementSet,
458 estimatedParametersNearOrigin);
459
460 if (forwardTrajectory.empty()) {
461 return nullptr;
462 }
463
464 // Perform GSF smoother operation
465 GSFTrajectory smoothedTrajectory = smootherFit(
466 ctx, extrapolatorCache, forwardTrajectory, ccot);
467 if (smoothedTrajectory.empty()) {
468 return nullptr;
469 }
470
471 // fit quality
472 std::unique_ptr<FitQuality> fitQuality = buildFitQuality(smoothedTrajectory);
473 if (!fitQuality) {
474 return nullptr;
475 }
476
477 // Create parameters at perigee if needed
478 auto perigeeMultiStateOnSurface = makePerigee(
479 ctx, extrapolatorCache, smoothedTrajectory);
480 if (!perigeeMultiStateOnSurface.multiComponentState.empty()) {
481 smoothedTrajectory.push_back(std::move(perigeeMultiStateOnSurface));
482 } else {
483 return nullptr;
484 }
485
486 // Reverse the order of the TSOS's to make be order flow from inside to out
487 std::reverse(smoothedTrajectory.begin(), smoothedTrajectory.end());
488
489 // Create track
491 info.setTrackProperties(TrackInfo::BremFit);
492 info.setTrackProperties(TrackInfo::BremFitSuccessful);
493 return std::make_unique<Track>(info, convertTrajToTrack(smoothedTrajectory),
494 std::move(fitQuality));
495}
#define ATH_MSG_WARNING(x)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
GSFTrajectory forwardFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const T &inputSet, const TrackParameters &estimatedTrackParametersNearOrigin) const
Forward GSF fit.
std::unique_ptr< MultiComponentStateOnSurfaceDV > convertTrajToTrack(GSFTrajectory &trajectory) const
Helper to convert the GSFTrajectory to a Trk::Track.
Trk::ParticleHypothesis m_particleHypothesis
GSFTrajectory smootherFit(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const CaloCluster_OnTrack *ccot=nullptr) const
Gsf smoothed trajectory.
GSFTsos makePerigee(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory) const
Produces a perigee from a smoothed trajectory.
std::vector< GSFTsos > GSFTrajectory
@ GaussianSumFilter
Tracks from Gaussian Sum Filter.
@ BremFit
A brem fit was performed on this track.
@ BremFitSuccessful
A brem fit was performed on this track and this fit was successful.
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
Definition FitterTypes.h:30
void reverse(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of reverse for DataVector/List.

◆ fit() [2/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const PrepRawDataSet & prepRawDataSet,
const TrackParameters & estimatedParametersNearOrigin,
const RunOutlierRemoval ,
const ParticleHypothesis  ) const
finaloverridevirtual

Fit a collection of 'PrepRawData' objects using the Gaussian Sum Filter.

Interface Method Fitting of a set of PrepRawData objects This is the main method for PrepRawData fitting.

  • This requires that an trackParameters object be supplied also as an initial guess

Implements Trk::ITrackFitter.

Definition at line 341 of file GaussianSumFitter.cxx.

347{
348 if (prepRawDataSet.size() < 3) {
349 ATH_MSG_WARNING("Requesting Fit with less than three prep Raw Data!!!");
350 return nullptr;
351 }
352 // We need a sorted PrepRawDataSet
353 Trk::PrepRawDataSet sortedPrepRawDataSet = PrepRawDataSet(prepRawDataSet);
354 const Trk::PrepRawDataComparisonFunction prdComparisonFunction =
355 Trk::PrepRawDataComparisonFunction(
356 estimatedParametersNearOrigin.position(),
357 estimatedParametersNearOrigin.momentum());
358
359 std::sort(sortedPrepRawDataSet.begin(), sortedPrepRawDataSet.end(),
360 prdComparisonFunction);
361
362 // Create Extrapolator cache that holds material effects cache;
363 Trk::IMultiStateExtrapolator::Cache extrapolatorCache;
364 // Perform GSF forward fit
365 GSFTrajectory forwardTrajectory =
366 forwardFit(ctx, extrapolatorCache, sortedPrepRawDataSet,
367 estimatedParametersNearOrigin);
368
369 if (forwardTrajectory.empty()) {
370 return nullptr;
371 }
372 // Perform GSF smoother operation
373 GSFTrajectory smoothedTrajectory = smootherFit(
374 ctx, extrapolatorCache, forwardTrajectory);
375 if (smoothedTrajectory.empty()) {
376 return nullptr;
377 }
378
379 // Fit quality
380 std::unique_ptr<FitQuality> fitQuality = buildFitQuality(smoothedTrajectory);
381 if (!fitQuality) {
382 return nullptr;
383 }
384
385 // Create parameters at perigee if needed
386 auto perigeeMultiStateOnSurface = makePerigee(
387 ctx, extrapolatorCache, smoothedTrajectory);
388 if (!perigeeMultiStateOnSurface.multiComponentState.empty()) {
389 smoothedTrajectory.push_back(std::move(perigeeMultiStateOnSurface));
390 } else {
391 return nullptr;
392 }
393
394 // Reverse the order of the TSOS's after the smoother
395 // to make be order flow from inside to out
396 std::reverse(smoothedTrajectory.begin(), smoothedTrajectory.end());
397
398 // Create Trk::Track
400 info.setTrackProperties(TrackInfo::BremFit);
401 info.setTrackProperties(TrackInfo::BremFitSuccessful);
402 return std::make_unique<Track>(info, convertTrajToTrack(smoothedTrajectory),
403 std::move(fitQuality));
404}
std::vector< const PrepRawData * > PrepRawDataSet
vector of clusters and drift circles
Definition FitterTypes.h:26
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ fit() [3/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const Track & inputTrack,
const MeasurementSet & addSet,
const RunOutlierRemoval runOutlier,
const ParticleHypothesis matEffects ) const
finaloverridevirtual

Refit a track adding a measurement base set.

Interface method Refit a track adding a RIO_OnTrack set.

Implements Trk::ITrackFitter.

Definition at line 269 of file GaussianSumFitter.cxx.

274{
275 // Check that the input track has well defined parameters
276 if (inputTrack.trackParameters()->empty()) {
277 ATH_MSG_FATAL("No estimation of track parameters near origin!");
278 return nullptr;
279 }
280 // Check that the input track has associated MeasurementBase objects
281 if (inputTrack.trackStateOnSurfaces()->empty()) {
283 "Attempting to fit track to empty MeasurementBase "
284 "collection!");
285 return nullptr;
286 }
287 // Retrieve the set of track parameters closest to the reference point
288 const Trk::TrackParameters* paramNearestRef = *(std::min_element(
289 inputTrack.trackParameters()->begin(),
290 inputTrack.trackParameters()->end(), m_trkParametersComparisonFunction));
291
292 MeasurementSet measurementSet =
293 stripMeasurements(inputTrack, &addSet, m_reintegrateOutliers);
294 return fit(ctx, measurementSet, *paramNearestRef, runOutlier, matEffects);
295}
#define ATH_MSG_FATAL(x)
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.
Gaudi::Property< bool > m_reintegrateOutliers
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ fit() [4/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const Track & intrk,
const PrepRawDataSet & addPrdColl,
const RunOutlierRemoval runOutlier,
const ParticleHypothesis matEffects ) const
finaloverridevirtual

Refit a track adding a PrepRawDataSet.

Interface method Refit a track adding a PrepRawData set.

Implements Trk::ITrackFitter.

Definition at line 240 of file GaussianSumFitter.cxx.

245{
246 // Check that the input track has well defined parameters
247 if (intrk.trackParameters()->empty()) {
248 ATH_MSG_FATAL("No track parameters on Track!");
249 return nullptr;
250 }
251 // Check that the input track has associated MeasurementBase objects
252 if (intrk.trackStateOnSurfaces()->empty()) {
253 ATH_MSG_FATAL("Empty MeasurementBase ");
254 return nullptr;
255 }
256 // determine the Track Parameter closest to the reference
257 const TrackParameters* paramNearestRef = *(std::min_element(
258 intrk.trackParameters()->begin(), intrk.trackParameters()->end(),
260 PrepRawDataSet prepRawDataSet =
261 stripPrepRawData(intrk, &addPrdColl, m_reintegrateOutliers);
262 return fit(ctx, prepRawDataSet, *paramNearestRef, runOutlier, matEffects);
263}

◆ fit() [5/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const Track & inputTrack,
const RunOutlierRemoval outlierRemoval,
const ParticleHypothesis particleHypothesis ) const
finaloverridevirtual

Refit a track.

Interface Method Refitting of an input track.

Extract the measurementBase or PrepRawData and refit.

Implements Trk::ITrackFitter.

Definition at line 200 of file GaussianSumFitter.cxx.

205{
206 // Check that the input track has well defined parameters
207 if (inputTrack.trackParameters()->empty()) {
208 ATH_MSG_FATAL("No track parameters on Track!");
209 return nullptr;
210 }
211 // Check that the input track has associated MeasurementBase objects
212 if (inputTrack.trackStateOnSurfaces()->empty()) {
213 ATH_MSG_FATAL("Empty MeasurementBase ");
214 return nullptr;
215 }
216 // Retrieve the set of track parameters closest to the reference point
217 const Trk::TrackParameters* paramNearestRef =
218 *(std::min_element(inputTrack.trackParameters()->begin(),
219 inputTrack.trackParameters()->end(),
221
222 // Rrefit using measurement base then
224 MeasurementSet measurementSet =
225 stripMeasurements(inputTrack, nullptr, m_reintegrateOutliers);
226 return fit(ctx, measurementSet, *paramNearestRef, outlierRemoval,
227 particleHypothesis);
228 }
229 // Refit using PrepRawData level then
230 PrepRawDataSet prepRawDataSet =
231 stripPrepRawData(inputTrack, nullptr, m_reintegrateOutliers);
232 return fit(ctx, prepRawDataSet, *paramNearestRef, outlierRemoval,
233 particleHypothesis);
234}
Gaudi::Property< bool > m_refitOnMeasurementBase

◆ fit() [6/6]

std::unique_ptr< Trk::Track > Trk::GaussianSumFitter::fit ( const EventContext & ctx,
const Track & intrk1,
const Track & intrk2,
const RunOutlierRemoval runOutlier,
const ParticleHypothesis matEffects ) const
finaloverridevirtual

Combine two tracks by refitting their measurements.

@bried Interface method to Combine two tracks by their measurement

Implements Trk::ITrackFitter.

Definition at line 301 of file GaussianSumFitter.cxx.

306 {
307 // protection against not having measurements on the input tracks
308 if (!intrk1.trackStateOnSurfaces() || !intrk2.trackStateOnSurfaces() ||
309 intrk1.trackStateOnSurfaces()->size() < 2) {
311 "called to refit empty track or track with too little "
312 "information, reject fit");
313 return nullptr;
314 }
315 if (!intrk1.trackParameters() || intrk1.trackParameters()->empty()) {
317 "input #1 fails to provide track parameters for "
318 "seeding the GXF, reject fit");
319 return nullptr;
320 }
321 // Here we assume that the reference paramrs are the beginning
322 // of the 1st track.
323 const TrackParameters* minPar = *(intrk1.trackParameters()->begin());
324 MeasurementSet measurementSet1 =
325 stripMeasurements(intrk1, nullptr, m_reintegrateOutliers);
326 MeasurementSet measurementSet2 =
327 stripMeasurements(intrk2, nullptr, m_reintegrateOutliers);
328
329 for (const auto* meas : measurementSet2) {
330 measurementSet1.push_back(meas);
331 }
332
333 return fit(ctx, measurementSet1, *minPar, runOutlier, matEffects);
334}

◆ forwardFit()

template<typename T>
GSFTrajectory Trk::GaussianSumFitter::forwardFit ( const EventContext & ctx,
IMultiStateExtrapolator::Cache & cache,
const T & inputSet,
const TrackParameters & estimatedTrackParametersNearOrigin ) const
private

Forward GSF fit.

◆ initialize()

StatusCode Trk::GaussianSumFitter::initialize ( )
finaloverridevirtual

AlgTool initialise method.

Definition at line 171 of file GaussianSumFitter.cxx.

172{
173
175 ATH_MSG_FATAL("Requested MaximumNumberOfComponents > "
177 return StatusCode::FAILURE;
178 }
179 // GSF extrapolator
180 ATH_CHECK(m_extrapolator.retrieve());
181 // We need a to create RIO_OnTrack (calibrated/corrected)
182 // measurements only if we start from PrePRawData.
184 ATH_CHECK(m_rioOnTrackCreator.retrieve());
185 } else {
186 m_rioOnTrackCreator.disable();
187 }
188 // Initialise the closest track parameters search algorithm
189 const Amg::Vector3D referencePosition(0, 0, 0);
191 m_particleHypothesis = m_extrapolator->particleHypothesis();
192 return StatusCode::SUCCESS;
193}
#define ATH_CHECK
Evaluate an expression and check for errors.
ToolHandle< IRIO_OnTrackCreator > m_rioOnTrackCreator
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
Eigen::Matrix< double, 3, 1 > Vector3D
constexpr int8_t maxNumberofStateComponents
The state is described by N Gaussian components The Beth Heitler Material effect are also described b...
ComparisonFunction< TrackParameters > TrkParametersComparisonFunction

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & Trk::ITrackFitter::interfaceID ( )
inlinestaticinherited

Definition at line 45 of file ITrackFitter.h.

46 {
47 return IID_ITrackFitter;
48 }
static const InterfaceID IID_ITrackFitter("ITrackFitter", 1, 0)

◆ makePerigee()

GSFTsos Trk::GaussianSumFitter::makePerigee ( const EventContext & ctx,
Trk::IMultiStateExtrapolator::Cache & extrapolatorCache,
const GSFTrajectory & smoothedTrajectory ) const
private

Produces a perigee from a smoothed trajectory.

Helper creating a multicomponent perigee TrackStateOnSurface.

Definition at line 515 of file GaussianSumFitter.cxx.

519{
520
521 // Start at the end of the smoothed trajectory
522 // we should be the closest to perigee/origin.
523 const GSFTsos&
524 multiComponentStateOnSurfaceNearestOrigin = smoothedTrajectory.back();
525 const Trk::MultiComponentState* multiComponentState =
526 &(multiComponentStateOnSurfaceNearestOrigin.multiComponentState);
527
528 // Extrapolate to perigee
529 const Trk::PerigeeSurface perigeeSurface;
530 Trk::MultiComponentState stateExtrapolatedToPerigee =
531 m_extrapolator->extrapolate(ctx,
532 extrapolatorCache,
533 *multiComponentState,
534 perigeeSurface,
536 false);
537
538 if (stateExtrapolatedToPerigee.empty()) {
539 return {};
540 }
541
542 // Determine the combined state
543 std::unique_ptr<Trk::TrackParameters> combinedPerigee =
544 MultiComponentStateCombiner::combineToSingle(stateExtrapolatedToPerigee, m_useMode);
545
546 // Perigee is an additional MultiComponentStateOnSurface
547 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
548 pattern(0);
550
551 if(std::abs(combinedPerigee->position().z())>5000.) {
552 ATH_MSG_WARNING("Pathological perigee well outside of tracking detector!! Returning {}");
553 return {};
554 }
555
556 if (std::abs(combinedPerigee->parameters()[Trk::qOverP]) > 1e8) {
558 "makePerigee() about to return with 0 momentum!! Returning {}");
559 return {};
560 }
561
562 return {Trk::FitQualityOnSurface{},
563 nullptr,
564 std::move(combinedPerigee),
565 std::move(stateExtrapolatedToPerigee),
566 pattern};
567}
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
@ qOverP
perigee
Definition ParamDefs.h:67

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ smootherFit()

Trk::GaussianSumFitter::GSFTrajectory Trk::GaussianSumFitter::smootherFit ( const EventContext & ctx,
Trk::IMultiStateExtrapolator::Cache & extrapolatorCache,
GSFTrajectory & forwardTrajectory,
const CaloCluster_OnTrack * ccot = nullptr ) const
private

Gsf smoothed trajectory.

This method can handle additional info like calorimeter cluster constraints. It also produces what we actually store in Trk::Tracks.

Definition at line 585 of file GaussianSumFitter.cxx.

590{
591 if (forwardTrajectory.empty()) {
593 "Attempting to smooth an empty forward trajectory... Exiting!");
594 return {};
595 }
596
597 GSFTrajectory smoothedTrajectory;
598 smoothedTrajectory.reserve(forwardTrajectory.size());
599 // For the smoother we start from the end and we go
600 // back. We need to find the the first track
601 // state on surface in this reverse direction
602 auto trackStateOnSurfaceItr = forwardTrajectory.rbegin();
603 bool foundMeasurement = false;
604 for (; trackStateOnSurfaceItr != forwardTrajectory.rend(); ++trackStateOnSurfaceItr) {
605 if (!(*trackStateOnSurfaceItr).typeFlags.test(TrackStateOnSurface::Measurement)) {
606 smoothedTrajectory.emplace_back(std::move(*trackStateOnSurfaceItr));
607 } else {
608 foundMeasurement = true;
609 break;
610 }
611 }
612 if(!foundMeasurement){
613 return {};
614 }
615 // This is the 1st track state on surface for a measurement
616 // in the reverse direction. Our starting point for the smoother
617 auto smootherPredictionMultiState = std::move(trackStateOnSurfaceItr->multiComponentState);
618 // Perform an update with the measurement.
619 // This will be the first entry in the trajectory
620 std::unique_ptr<Trk::MeasurementBase> firstSmootherMeasurementOnTrack =
621 std::move(trackStateOnSurfaceItr->measurementOnTrack);
622 if (!firstSmootherMeasurementOnTrack) {
624 "Initial state on surface in smoother does not have an associated "
625 "MeasurementBase object");
626 return {};
627 }
628 Trk::FitQualityOnSurface fitQuality;
629 Trk::MultiComponentState firstSmoothedState =
630 Trk::GsfMeasurementUpdator::update(std::move(smootherPredictionMultiState),
631 *firstSmootherMeasurementOnTrack,
632 fitQuality);
633 if (firstSmoothedState.empty()) {
634 return {};
635 }
636 if (!MultiComponentStateHelpers::allHaveCovariance(firstSmoothedState)) {
638 "Not all components have covariance. Rejecting smoothed state.");
639 return {};
640 }
641 // The first in reverse (last in normal order) TSOS is also special
642 // for the EDM. Sso we also a proper collapse
643 // of the multi component to single TrackParameter
644 std::unique_ptr<Trk::TrackParameters> combinedFirstSmoothedState =
646 m_useMode);
647 smoothedTrajectory.emplace_back(
648 fitQuality, std::move(firstSmootherMeasurementOnTrack),
649 std::move(combinedFirstSmoothedState),
650 MultiComponentStateHelpers::clone(firstSmoothedState));
651 const auto& updatedFirstStateOnSurface = smoothedTrajectory.back();
652 //
653 // Now we are ready to proceed
654 // Generate a prediction with an inflated covariance of all components
655 // in the first smoothed state.
656 // This way there is no dependance on error of prediction
657 //
658 // NB local Y and theta need care due to TRT.
659 //
660 Trk::MultiComponentState smoothedStateWithScaledError =
662 std::move(firstSmoothedState), m_smootherCovFactors[0],
665 // Do the 1st update using the state with inflated covariance.
666 Trk::FitQualityOnSurface fitQualityWithScaledErrors;
668 std::move(smoothedStateWithScaledError),
669 *(updatedFirstStateOnSurface.measurementOnTrack),
670 fitQualityWithScaledErrors);
671 if (updatedState.empty()) {
672 ATH_MSG_WARNING("Smoother prediction could not be determined");
673 return {};
674 }
675 // loopUpdatedState points to the most recent predicted MultiComponentState.
676 Trk::MultiComponentState* loopUpdatedState = &updatedState;
677 // Increase reverse iterator by one.
678 ++trackStateOnSurfaceItr;
679 // The is the last one we will see as we go back.
680 auto lasttrackStateOnSurface = forwardTrajectory.rend() - 1;
681 // And this is the pre-last
682 auto secondLastTrackStateOnSurface = forwardTrajectory.rend() - 2;
683 //Loop
684 for (; trackStateOnSurfaceItr != forwardTrajectory.rend();++trackStateOnSurfaceItr) {
685 auto& trackStateOnSurface = (*trackStateOnSurfaceItr);
686 // Retrieve the MeasurementBase object from the TrackStateOnSurface object
687 auto measurement = std::move(trackStateOnSurface.measurementOnTrack);
688 if (!measurement) {
689 ATH_MSG_WARNING("MeasurementBase object could not be extracted from a "
690 "measurement TSOS...continuing");
691 continue;
692 }
693 // Create prediction for the next measurement surface.
694 // For the smoother the direction of propagation
695 // is opposite to the direction of momentum
696 Trk::MultiComponentState extrapolatedState = m_extrapolator->extrapolate(
697 ctx, extrapolatorCache, (*loopUpdatedState),
698 measurement->associatedSurface(), Trk::oppositeMomentum, false);
699
700 if (extrapolatedState.empty()) {
701 return {};
702 }
703 // Handle the case where Original measurement was flagged as an outlier.
704 if (!trackStateOnSurface.typeFlags.test(TrackStateOnSurface::Measurement)) {
705 std::bitset<TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> type(
706 0);
708 smoothedTrajectory.emplace_back(FitQualityOnSurface(1, 1),
709 std::move(measurement), nullptr,
710 std::move(extrapolatedState), type);
711 loopUpdatedState = &(smoothedTrajectory.back().multiComponentState);
712 continue;
713 }
714 // Update with the measurement
716 std::move(extrapolatedState), *measurement, fitQuality);
717 if (updatedState.empty()) {
718 ATH_MSG_WARNING("Could not update the multi-component state");
719 return {};
720 }
721 // last in reverse (first in normal order) is special for the EDM
722 const bool islast = (trackStateOnSurfaceItr == lasttrackStateOnSurface);
724 // Optional combine smoother state with fitter state
725 const Trk::MultiComponentState& forwardsMultiState =
726 trackStateOnSurface.multiComponentState;
727 Trk::MultiComponentState combinedfitterState =
728 Trk::TwoStateCombiner::combine(forwardsMultiState, updatedState,
730 if (combinedfitterState.empty()) {
732 "Could not combine state from forward fit with "
733 "smoother state");
734 return {};
735 }
736 auto combinedFitQuality = Trk::GsfMeasurementUpdator::fitQuality(
737 combinedfitterState, *measurement);
738 smoothedTrajectory.emplace_back(
739 smootherHelper(std::move(combinedfitterState), std::move(measurement),
740 combinedFitQuality, islast, m_useMode));
741 } else {
742 // If combination with forwards state is not done
743 smoothedTrajectory.emplace_back(
744 smootherHelper(std::move(updatedState), std::move(measurement),
745 fitQuality, islast, m_useMode));
746 }
747 // Handle adding measurement from calo if it is present
748 if (ccot && trackStateOnSurfaceItr == secondLastTrackStateOnSurface) {
749 if (!addCCOT(ctx, ccot, smoothedTrajectory)) {
750 ATH_MSG_WARNING("Could not add Calo Cluster On Track Measurement");
751 return {};
752 }
753 }
754 // For the next iteration start from last added
755 loopUpdatedState = &(smoothedTrajectory.back().multiComponentState);
756 } // End for loop over all components
757 return smoothedTrajectory;
758}
#define ATH_MSG_ERROR(x)
bool addCCOT(const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const
Methof to add the CaloCluster onto the track.
DoubleArrayProperty m_smootherCovFactors
Gaudi::Property< bool > m_combineWithFitter
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
MultiComponentState WithScaledError(MultiComponentState &&in, double errorScaleLocX, double errorScaleLocY, double errorScalePhi, double errorScaleTheta, double errorScaleQoverP)
Scale the covariance matrix components by individual factors.
bool allHaveCovariance(const MultiComponentState &in)
Check to see if all components have covariance Matrix.
MultiComponentState clone(const MultiComponentState &in)
Clone TrackParameters method.
Trk::MultiComponentState combine(const Trk::MultiComponentState &forwardsMultiState, const Trk::MultiComponentState &smootherMultiState, unsigned int maximumNumberOfComponents)
Helper to combine forward with smoother MultiComponentStates.

◆ stepForwardFit()

template<typename T>
bool Trk::GaussianSumFitter::stepForwardFit ( const EventContext & ctx,
IMultiStateExtrapolator::Cache & ,
GSFTrajectory & forwardTrajectory,
const T * measurement,
const Surface & surface,
MultiComponentState & updatedState ) const
private

Progress one step along the forward fit.

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_combineWithFitter

Gaudi::Property<bool> Trk::GaussianSumFitter::m_combineWithFitter
private
Initial value:
{
this, "CombineStateWithFitter", false,
"Combine with forwards state during Smoothing"}

Definition at line 189 of file GaussianSumFitter.h.

189 {
190 this, "CombineStateWithFitter", false,
191 "Combine with forwards state during Smoothing"};

◆ m_cutChiSquaredPerNumberDOF

Gaudi::Property<double> Trk::GaussianSumFitter::m_cutChiSquaredPerNumberDOF
private
Initial value:
{
this, "StateChi2PerNDOFCut", 50., "Cut on Chi2 per NDOF"}

Definition at line 202 of file GaussianSumFitter.h.

202 {
203 this, "StateChi2PerNDOFCut", 50., "Cut on Chi2 per NDOF"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extrapolator

ToolHandle<IMultiStateExtrapolator> Trk::GaussianSumFitter::m_extrapolator
private
Initial value:
{
this, "ToolForExtrapolation", "Trk::GsfExtrapolator/GsfExtrapolator", ""}

Definition at line 176 of file GaussianSumFitter.h.

176 {
177 this, "ToolForExtrapolation", "Trk::GsfExtrapolator/GsfExtrapolator", ""};

◆ m_maximumNumberOfComponents

Gaudi::Property<unsigned int> Trk::GaussianSumFitter::m_maximumNumberOfComponents
private
Initial value:
{
this, "MaximumNumberOfComponents", 12, "Maximum number of components"}

Definition at line 205 of file GaussianSumFitter.h.

205 {
206 this, "MaximumNumberOfComponents", 12, "Maximum number of components"};

◆ m_particleHypothesis

Trk::ParticleHypothesis Trk::GaussianSumFitter::m_particleHypothesis = Trk::electron
private

Definition at line 216 of file GaussianSumFitter.h.

◆ m_refitOnMeasurementBase

Gaudi::Property<bool> Trk::GaussianSumFitter::m_refitOnMeasurementBase
private
Initial value:
{
this, "RefitOnMeasurementBase", true, "Refit On Measurement Base"}

Definition at line 186 of file GaussianSumFitter.h.

186 {
187 this, "RefitOnMeasurementBase", true, "Refit On Measurement Base"};

◆ m_reintegrateOutliers

Gaudi::Property<bool> Trk::GaussianSumFitter::m_reintegrateOutliers
private
Initial value:
{this, "ReintegrateOutliers", true,
"Reintegrate Outliers"}

Definition at line 183 of file GaussianSumFitter.h.

183 {this, "ReintegrateOutliers", true,
184 "Reintegrate Outliers"};

◆ m_rioOnTrackCreator

ToolHandle<IRIO_OnTrackCreator> Trk::GaussianSumFitter::m_rioOnTrackCreator
private
Initial value:
{
this, "ToolForROTCreation", "",
"Tool for converting Raw Data to measurements"}

Definition at line 179 of file GaussianSumFitter.h.

179 {
180 this, "ToolForROTCreation", "",
181 "Tool for converting Raw Data to measurements"};

◆ m_slimTransientMTSOS

Gaudi::Property<bool> Trk::GaussianSumFitter::m_slimTransientMTSOS
private
Initial value:
{
this, "slimTransientMTSOS", true,
"Slim the transient MTSOS . Keeping just the combined state and not all "
"components"}

Definition at line 197 of file GaussianSumFitter.h.

197 {
198 this, "slimTransientMTSOS", true,
199 "Slim the transient MTSOS . Keeping just the combined state and not all "
200 "components"};

◆ m_smootherCovFactors

DoubleArrayProperty Trk::GaussianSumFitter::m_smootherCovFactors
private
Initial value:
{
this,
"smootherStartCovFactors",
{15., 5., 15., 5., 15.},
"Inflation factors for the covariance at the start of smoothing [LocX, LocY, phi, "
"theta, q / p]"}

Definition at line 208 of file GaussianSumFitter.h.

208 {
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]"};

◆ m_trkParametersComparisonFunction

TrkParametersComparisonFunction Trk::GaussianSumFitter::m_trkParametersComparisonFunction
private

Definition at line 215 of file GaussianSumFitter.h.

◆ m_useMode

Gaudi::Property<bool> Trk::GaussianSumFitter::m_useMode
private
Initial value:
{
this, "useMode", true,
"Collapse MultiComponent States using Mode rather than Mean"}

Definition at line 193 of file GaussianSumFitter.h.

193 {
194 this, "useMode", true,
195 "Collapse MultiComponent States using Mode rather than Mean"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: