From 33295e66890f77247af843af8a3258a0a5403d56 Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Thu, 14 May 2020 02:44:17 +0100 Subject: [PATCH] Add pass EventContext as argument to GSFSmoother, use a bit more unique_ptr clean up messages --- .../TrkGaussianSumFilter/GaussianSumFitter.h | 38 +-- .../TrkGaussianSumFilter/GsfSmoother.h | 2 + .../TrkGaussianSumFilter/IGsfSmoother.h | 2 + .../src/GaussianSumFitter.cxx | 220 +++++------------- .../TrkGaussianSumFilter/src/GsfSmoother.cxx | 14 +- 5 files changed, 95 insertions(+), 181 deletions(-) diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h index f200f6049d0..db19aca0c48 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h @@ -18,7 +18,7 @@ decription : Class for fitting according to the Gaussian Sum Filter #include "TrkFitterInterfaces/ITrackFitter.h" #include "TrkFitterUtils/FitterTypes.h" #include "TrkParameters/TrackParameters.h" - +#include "TrkFitterUtils/TrackFitInputPreparator.h" #include "TrkToolInterfaces/IRIO_OnTrackCreator.h" #include "AthenaBaseComps/AthAlgTool.h" @@ -26,19 +26,19 @@ decription : Class for fitting according to the Gaussian Sum Filter #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" + #include <atomic> -namespace Trk { +namespace Trk { class IMultiStateMeasurementUpdator; class MultiComponentStateOnSurface; class IMultiStateExtrapolator; - -class TrackFitInputPreparator; class IForwardGsfFitter; class IGsfSmoother; -class Track; class FitQuality; +class Track; + class GaussianSumFitter : virtual public ITrackFitter @@ -110,6 +110,7 @@ public: private: /** Produces a perigee from a smoothed trajectory */ const MultiComponentStateOnSurface* makePerigee( + const EventContext& ctx, const SmoothedTrajectory*, const ParticleHypothesis particleHypothesis = nonInteracting) const; @@ -151,20 +152,23 @@ private: bool m_refitOnMeasurementBase; bool m_doHitSorting; PropDirection m_directionToPerigee; - TrkParametersComparisonFunction* m_trkParametersComparisonFunction; + std::unique_ptr<TrkParametersComparisonFunction> m_trkParametersComparisonFunction; + std::unique_ptr<TrackFitInputPreparator> m_inputPreparator; std::vector<double> m_sortingReferencePoint; ServiceHandle<IChronoStatSvc> m_chronoSvc; - TrackFitInputPreparator* m_inputPreparator; - - // GSF Fit Statistics - mutable std::atomic<int> m_FitPRD; // Number of Fit PrepRawData Calls - mutable std::atomic<int> - m_FitMeasurementBase; // Number of Fit MeasurementBase Calls - mutable std::atomic<int> m_ForwardFailure; // Number of Foward Fit Failures - mutable std::atomic<int> m_SmootherFailure; // Number of Smoother Failures - mutable std::atomic<int> m_PerigeeFailure; // Number of MakePerigee Failures - mutable std::atomic<int> - m_fitQualityFailure; // Number of Tracks that fail fit Quailty test + + // Number of Fit PrepRawData Calls + mutable std::atomic<int> m_FitPRD; + // Number of Fit MeasurementBase Calls + mutable std::atomic<int> m_FitMeasurementBase; + // Number of Foward Fit Failures + mutable std::atomic<int> m_ForwardFailure; + // Number of Smoother Failures + mutable std::atomic<int> m_SmootherFailure; + // Number of MakePerigee Failures + mutable std::atomic<int> m_PerigeeFailure; + // Number of Tracks that fail fit Quailty test + mutable std::atomic<int> m_fitQualityFailure; }; } // end Trk namespace diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfSmoother.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfSmoother.h index 4158cebf49c..ad65b2862b7 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfSmoother.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfSmoother.h @@ -56,6 +56,7 @@ public: /** Gsf smoother method */ virtual SmoothedTrajectory* fit( + const EventContext& ctx, const ForwardTrajectory&, const ParticleHypothesis particleHypothesis = nonInteracting, const CaloCluster_OnTrack* ccot = nullptr) const; @@ -67,6 +68,7 @@ private: /** Methof to add the CaloCluster onto the track */ MultiComponentState addCCOT( + const EventContext& ctx, const Trk::TrackStateOnSurface* currentState, const Trk::CaloCluster_OnTrack* ccot, Trk::SmoothedTrajectory* smoothedTrajectory) const; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IGsfSmoother.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IGsfSmoother.h index aa20ac008a7..aaef237d538 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IGsfSmoother.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/IGsfSmoother.h @@ -19,6 +19,7 @@ decription : Abstract interface for the GSF smoother #include "TrkFitterUtils/FitterTypes.h" #include "TrkMultiComponentStateOnSurface/MultiComponentState.h" +#include "GaudiKernel/EventContext.h" #include "GaudiKernel/IAlgTool.h" #include "GaudiKernel/ToolHandle.h" @@ -49,6 +50,7 @@ public: /** Gsf smoother method */ virtual SmoothedTrajectory* fit( + const EventContext& ctx, const ForwardTrajectory&, const ParticleHypothesis particleHypothesis = nonInteracting, const CaloCluster_OnTrack* ccot = nullptr) const = 0; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx index 65be4c549ec..7f9f920f38c 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx @@ -2,14 +2,11 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/* ******************************************************************************* - GaussianSumFitter.cxx - description - ------------------------------------- -begin : Monday 7th March 2005 -author : amorley atkinson -email : Anthony.Morley@cern.ch Tom.Atkinson@cern.ch -decription : Implementation code for Gaussian Sum Fitter class -********************************************************************************** +/** + * @file GaussianSumFitter.cxx + * @begin Monday 7th March 2005 + * @author Anthony Morley, Tom Atkinson, Christos Anastopoulos + * @brief Implementation code for Gaussian Sum Fitter class */ #include "TrkGaussianSumFilter/GaussianSumFitter.h" @@ -26,7 +23,6 @@ decription : Implementation code for Gaussian Sum Fitter class #include "TrkCaloCluster_OnTrack/CaloCluster_OnTrack.h" #include "TrkEventPrimitives/FitQuality.h" -#include "TrkFitterUtils/TrackFitInputPreparator.h" #include "TrkMaterialOnTrack/EstimatedBremOnTrack.h" #include "TrkMultiComponentStateOnSurface/MultiComponentStateOnSurface.h" #include "TrkPrepRawData/PrepRawData.h" @@ -51,8 +47,8 @@ Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type, , m_doHitSorting(true) , m_directionToPerigee(Trk::oppositeMomentum) , m_trkParametersComparisonFunction(nullptr) - , m_chronoSvc("ChronoStatSvc", name) , m_inputPreparator(nullptr) + , m_chronoSvc("ChronoStatSvc", name) , m_FitPRD{ 0 } , m_FitMeasurementBase{ 0 } , m_ForwardFailure{ 0 } @@ -118,18 +114,11 @@ Trk::GaussianSumFitter::initialize() m_sortingReferencePoint[2]); m_trkParametersComparisonFunction = - new Trk::TrkParametersComparisonFunction(referencePosition); - - if (!m_trkParametersComparisonFunction) { - ATH_MSG_FATAL("Request to instansiate the ClosestTrackParametersFinder " - "object failed... Exiting!"); - return StatusCode::FAILURE; - } + std::make_unique<Trk::TrkParametersComparisonFunction>(referencePosition); // Configure forward fitter sc = m_forwardGsfFitter->configureTools( m_extrapolator, m_updator, m_rioOnTrackCreator); - if (sc.isFailure()) { ATH_MSG_FATAL("Could not configure the forwards GSF fitter... Exiting!"); return StatusCode::FAILURE; @@ -137,7 +126,6 @@ Trk::GaussianSumFitter::initialize() // Configure smoother sc = m_gsfSmoother->configureTools(m_extrapolator, m_updator); - if (sc.isFailure()) { ATH_MSG_FATAL("Could not configure the GSF smoother... Exiting!"); return StatusCode::FAILURE; @@ -151,7 +139,7 @@ Trk::GaussianSumFitter::initialize() m_PerigeeFailure = 0; // Number of MakePerigee Failures: m_fitQualityFailure = 0; - m_inputPreparator = new TrackFitInputPreparator(); + m_inputPreparator = std::make_unique<TrackFitInputPreparator>(); ATH_MSG_INFO("Initialisation of " << name() << " was successful"); @@ -161,65 +149,45 @@ Trk::GaussianSumFitter::initialize() StatusCode Trk::GaussianSumFitter::finalize() { - - // Delete dynamic memory - delete m_trkParametersComparisonFunction; - delete m_inputPreparator; - - msg(MSG::INFO) << "-----------------------------------------------" << endmsg; - msg(MSG::INFO) << " Some Brief GSF Statistics " << endmsg; - msg(MSG::INFO) << "-----------------------------------------------" << endmsg; - - msg(MSG::INFO) << "Number of Fit PrepRawData Calls: " << m_FitPRD - << endmsg; - msg(MSG::INFO) << "Number of Fit MeasurementBase Calls: " - << m_FitMeasurementBase << endmsg; - msg(MSG::INFO) << "Number of Forward Fit Failures: " - << m_ForwardFailure << endmsg; - msg(MSG::INFO) << "Number of Smoother Failures: " - << m_SmootherFailure << endmsg; - msg(MSG::INFO) << "Number of MakePerigee Failures: " - << m_PerigeeFailure << endmsg; - msg(MSG::INFO) << "Number of Trks that fail fitquality test: " - << m_fitQualityFailure << endmsg; - msg(MSG::INFO) << "-----------------------------------------------" << endmsg; - - msg(MSG::INFO) << "Finalisation of " << name() << " was successful" << endmsg; - + ATH_MSG_INFO( + "-----------------------------------------------" + << '\n' + << " Some Brief GSF Statistics " << '\n' + << "-----------------------------------------------" << '\n' + << "Number of Fit PrepRawData Calls: " << m_FitPRD << '\n' + << "Number of Fit MeasurementBase Calls: " << m_FitMeasurementBase + << '\n' + << "Number of Forward Fit Failures: " << m_ForwardFailure << '\n' + << "Number of Smoother Failures: " << m_SmootherFailure << '\n' + << "Number of MakePerigee Failures: " << m_PerigeeFailure << '\n' + << "Number of Trks that fail fitquality test: " << m_fitQualityFailure + << '\n' + << "-----------------------------------------------" << '\n' + << "Finalisation of " << name() << " was successful"); return StatusCode::SUCCESS; } -/* ====================================================================================================== - Refitting of a track -========================================================================================================= +/* + * Refitting of a track */ - Trk::Track* Trk::GaussianSumFitter::fit( const Trk::Track& inputTrack, const Trk::RunOutlierRemoval outlierRemoval, const Trk::ParticleHypothesis particleHypothesis) const { - - if (msgLvl(MSG::VERBOSE)) { - msg() << "Trk::GaussianSumFilter::fit() - Refitting a track" << endmsg; - } - // Start the timer Chrono chrono(&(*m_chronoSvc), name()); // Check that the input track has well defined parameters if (inputTrack.trackParameters()->empty()) { - msg(MSG::FATAL) - << "No estimation of track parameters near origin... Exiting!" << endmsg; + ATH_MSG_FATAL("No estimation of track parameters near origin... Exiting!"); return nullptr; } - // Check that the input track has associated MeasurementBase objects if (inputTrack.trackStateOnSurfaces()->empty()) { - msg(MSG::FATAL) << "Attempting to fit track to empty MeasurementBase " - "collection... Exiting!" - << endmsg; + ATH_MSG_FATAL("Attempting to fit track to empty MeasurementBase " + "collection... Exiting!"); return nullptr; } @@ -229,11 +197,6 @@ Trk::GaussianSumFitter::fit( inputTrack.trackParameters()->end(), *m_trkParametersComparisonFunction)); - if (msgLvl(MSG::VERBOSE)) { - msg() << "Estimation parameters near reference point: " - << *parametersNearestReference << endmsg; - } - // If refitting of track is at the MeasurementBase level // extract the MeasurementBase from the input track and create a new vector if (m_refitOnMeasurementBase) { @@ -318,9 +281,8 @@ Trk::GaussianSumFitter::fit( particleHypothesis); } -/* ================================================================================================================== +/* Fitting of a set of PrepRawData objects -===================================================================================================================== */ Trk::Track* @@ -330,38 +292,32 @@ Trk::GaussianSumFitter::fit( const Trk::RunOutlierRemoval outlierRemoval, const Trk::ParticleHypothesis particleHypothesis) const { - - ATH_MSG_VERBOSE( - "Trk::GaussianSumFilter::fit() - Fitting a set of PrepRawData objects" - << '\n' - << "Material effects switch: " << particleHypothesis << '\n' - << "Outlier removal switch: " << outlierRemoval); - ++m_FitPRD; + if (outlierRemoval) { + ATH_MSG_DEBUG( + "Outlier removal not yet implemented for the Gaussian Sum Filter"); + } + // Start the timer Chrono chrono(&(*m_chronoSvc), name()); - // Protect against empty PrepRawDataSet object if (prepRawDataSet.empty()) { ATH_MSG_FATAL("PrepRawData set for fit is empty... Exiting!"); return nullptr; } - // A const stl container cannot be sorted. This will re-cast it so that it - // can. Trk::PrepRawDataSet sortedPrepRawDataSet = PrepRawDataSet(prepRawDataSet); if (m_doHitSorting) { - Trk::PrepRawDataComparisonFunction* prdComparisonFunction = - new Trk::PrepRawDataComparisonFunction( + Trk::PrepRawDataComparisonFunction prdComparisonFunction = + Trk::PrepRawDataComparisonFunction( estimatedParametersNearOrigin.position(), estimatedParametersNearOrigin.momentum()); + std::sort(sortedPrepRawDataSet.begin(), sortedPrepRawDataSet.end(), - *prdComparisonFunction); - - delete prdComparisonFunction; + prdComparisonFunction); } // Perform GSF forwards fit @@ -384,11 +340,10 @@ Trk::GaussianSumFitter::fit( return nullptr; } - ATH_MSG_VERBOSE("*** Forward GSF fit passed! ***"); - + const EventContext& ctx= Gaudi::Hive::currentContext(); // Perform GSF smoother operation SmoothedTrajectory* smoothedTrajectory = - m_gsfSmoother->fit(*forwardTrajectory, particleHypothesis); + m_gsfSmoother->fit(ctx,*forwardTrajectory, particleHypothesis); // Protect against failed smoother fit if (!smoothedTrajectory) { @@ -398,11 +353,8 @@ Trk::GaussianSumFitter::fit( return nullptr; } - ATH_MSG_VERBOSE("*** GSF smoother fit passed! ***"); - // Outlier m_logic and track finalisation const FitQuality* fitQuality = buildFitQuality(*smoothedTrajectory); - if (!fitQuality) { ATH_MSG_DEBUG("Chi squared could not be calculated... Bailing"); ++m_fitQualityFailure; @@ -413,14 +365,9 @@ Trk::GaussianSumFitter::fit( Track* fittedTrack = nullptr; - if (outlierRemoval) { - ATH_MSG_DEBUG( - "Outlier removal not yet implemented for the Gaussian Sum Filter"); - } - if (m_makePerigee) { const Trk::MultiComponentStateOnSurface* perigeeMultiStateOnSurface = - this->makePerigee(smoothedTrajectory, particleHypothesis); + this->makePerigee(ctx,smoothedTrajectory, particleHypothesis); ATH_MSG_DEBUG( "perigeeMultiStateOnSurface :" << perigeeMultiStateOnSurface); if (perigeeMultiStateOnSurface) { @@ -446,24 +393,12 @@ Trk::GaussianSumFitter::fit( info.setTrackProperties(TrackInfo::BremFitSuccessful); fittedTrack = new Track(info, smoothedTrajectory, fitQuality); - if (fittedTrack) { - ATH_MSG_VERBOSE("Fitting of a set of PrepRawData objects is successful" - << '\n' - << "Track fit chi squared... " << fitQuality->chiSquared() - << '\n' - << "Track fit number of degrees of freedom... " - << fitQuality->numberDoF()); - } else { - ATH_MSG_DEBUG("Trk::GaussianSumFilter::fit() failed!"); - } return fittedTrack; } -/* ================================================================================================ - Fitting of a set of MeasurementBase objects -============== -==================================================================================== -*/ +/* + * Fitting of a set of MeasurementBase objects + */ Trk::Track* Trk::GaussianSumFitter::fit( @@ -473,15 +408,15 @@ Trk::GaussianSumFitter::fit( const Trk::ParticleHypothesis particleHypothesis) const { + if (outlierRemoval) { + ATH_MSG_DEBUG( + "Outlier removal not yet implemented for the Gaussian Sum Filter"); + } + + // Start the timer Chrono chrono(&(*m_chronoSvc), name()); - ATH_MSG_VERBOSE( - "Trk::GaussianSumFilter::fit() - Fitting a set of MeasurementBase objects" - << '\n' - << "Material effects switch: " << particleHypothesis << '\n' - << "Outlier removal switch: " << outlierRemoval); - ++m_FitMeasurementBase; // Protect against empty PrepRawDataSet object if (measurementSet.empty()) { @@ -547,11 +482,11 @@ Trk::GaussianSumFitter::fit( return nullptr; } - ATH_MSG_VERBOSE("*** Forward GSF fit passed! ***"); - // Perform GSF smoother operation + + const EventContext& ctx = Gaudi::Hive::currentContext(); SmoothedTrajectory* smoothedTrajectory = - m_gsfSmoother->fit(*forwardTrajectory, particleHypothesis, ccot); + m_gsfSmoother->fit(ctx, *forwardTrajectory, particleHypothesis, ccot); // Protect against failed smoother fit if (!smoothedTrajectory) { @@ -560,7 +495,6 @@ Trk::GaussianSumFitter::fit( delete forwardTrajectory; return nullptr; } - ATH_MSG_VERBOSE("*** GSF smoother fit passed! ***"); // Outlier m_logic and track finalisation const FitQuality* fitQuality = buildFitQuality(*smoothedTrajectory); @@ -573,13 +507,9 @@ Trk::GaussianSumFitter::fit( return nullptr; } - if (outlierRemoval) { - ATH_MSG_DEBUG( - "Outlier removal not yet implemented for the Gaussian Sum Filter"); - } if (m_makePerigee) { const Trk::MultiComponentStateOnSurface* perigeeMultiStateOnSurface = - this->makePerigee(smoothedTrajectory, particleHypothesis); + this->makePerigee(ctx,smoothedTrajectory, particleHypothesis); ATH_MSG_DEBUG( "perigeeMultiStateOnSurface :" << perigeeMultiStateOnSurface); @@ -607,16 +537,6 @@ Trk::GaussianSumFitter::fit( info.setTrackProperties(TrackInfo::BremFitSuccessful); Track* fittedTrack = new Track(info, smoothedTrajectory, fitQuality); - if (fittedTrack) { - ATH_MSG_DEBUG("Fitting of a set of MeasurementBase objects is successful" - << '\n' - << "Track fit chi squared... " << fitQuality->chiSquared() - << '\n' - << "Track fit number of degrees of freedom... " - << fitQuality->numberDoF()); - } else { - ATH_MSG_DEBUG("Trk::GaussianSumFilter::fit() failed!"); - } return fittedTrack; } @@ -627,11 +547,6 @@ Trk::GaussianSumFitter::fit(const Track& intrk, const ParticleHypothesis matEffects) const { - ATH_MSG_VERBOSE("--> enter GaussianSumFitter::fit(Track,PrdSet,,)" - << '\n' - << " with Track from author = " - << intrk.info().dumpInfo()); - // protection, if empty PrepRawDataSet if (addPrdColl.empty()) { ATH_MSG_WARNING( @@ -674,9 +589,6 @@ Trk::GaussianSumFitter::fit(const Track& inputTrack, const ParticleHypothesis matEffects) const { - ATH_MSG_VERBOSE("Trk::GaussianSumFilter::fit() - Refitting a track with a " - "additional information "); - // protection, if empty MeasurementSet if (measurementSet.empty()) { ATH_MSG_WARNING( @@ -720,16 +632,14 @@ Trk::GaussianSumFitter::fit(const Track& intrk1, // protection against not having measurements on the input tracks if (!intrk1.trackStateOnSurfaces() || !intrk2.trackStateOnSurfaces() || intrk1.trackStateOnSurfaces()->size() < 2) { - msg(MSG::WARNING) << "called to refit empty track or track with too little " - "information, reject fit" - << endmsg; + ATH_MSG_WARNING("called to refit empty track or track with too little " + "information, reject fit"); return nullptr; } if (!intrk1.trackParameters() || intrk1.trackParameters()->empty()) { - msg(MSG::WARNING) << "input #1 fails to provide track parameters for " - "seeding the GXF, reject fit" - << endmsg; + ATH_MSG_WARNING("input #1 fails to provide track parameters for " + "seeding the GXF, reject fit"); return nullptr; } @@ -780,6 +690,7 @@ Trk::GaussianSumFitter::fit(const Track& intrk1, const Trk::MultiComponentStateOnSurface* Trk::GaussianSumFitter::makePerigee( + const EventContext& ctx, const Trk::SmoothedTrajectory* smoothedTrajectory, const Trk::ParticleHypothesis particleHypothesis) const { @@ -807,7 +718,7 @@ Trk::GaussianSumFitter::makePerigee( } // Extrapolate to perigee, taking material effects considerations into account Trk::MultiComponentState stateExtrapolatedToPerigee = - m_extrapolator->extrapolate(Gaudi::Hive::currentContext(), + m_extrapolator->extrapolate(ctx, *multiComponentState, perigeeSurface, m_directionToPerigee, @@ -828,11 +739,6 @@ Trk::GaussianSumFitter::makePerigee( // Calculate the mode of the q/p distribution double modeQoverP = 0; - if (modeQoverP) { - ATH_MSG_VERBOSE( - "Calculated mode is stored by default in the Perigee Parameters" - << "and is NO Longer Stored as a seperate Parameter"); - } // Determine the combined state as well to be passed to the // MultiComponentStateOnSurface object std::unique_ptr<Trk::TrackParameters> combinedPerigee = @@ -844,9 +750,8 @@ Trk::GaussianSumFitter::makePerigee( pattern.set(Trk::TrackStateOnSurface::Perigee); if (fabs(combinedPerigee->parameters()[Trk::qOverP]) > 1e8) { - // GC: protection against 0-momentum track .. this check should NEVER be - // needed. - // actual cutoff is 0.01eV track + // Protection against 0-momentum track .. this check should NEVER be needed. + //actual cutoff is 0.01eV track ATH_MSG_ERROR( "makePerigee() about to return with 0 momentum!! Returning null instead"); return nullptr; @@ -870,7 +775,6 @@ Trk::GaussianSumFitter::buildFitQuality( const Trk::SmoothedTrajectory& smoothedTrajectory) const { - ATH_MSG_VERBOSE("Gsf fitQuality"); double chiSquared = 0.; int numberDoF = -5; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfSmoother.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfSmoother.cxx index af2de668dc0..5ca92fd3350 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfSmoother.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfSmoother.cxx @@ -64,7 +64,8 @@ Trk::GsfSmoother::configureTools( } Trk::SmoothedTrajectory* -Trk::GsfSmoother::fit(const ForwardTrajectory& forwardTrajectory, +Trk::GsfSmoother::fit(const EventContext& ctx, + const ForwardTrajectory& forwardTrajectory, const ParticleHypothesis particleHypothesis, const Trk::CaloCluster_OnTrack* ccot) const { @@ -247,7 +248,7 @@ Trk::GsfSmoother::fit(const ForwardTrajectory& forwardTrajectory, is opposite to the direction of momentum */ Trk::MultiComponentState extrapolatedState = - m_extrapolator->extrapolate(Gaudi::Hive::currentContext(), + m_extrapolator->extrapolate(ctx, updatedState, measurement->associatedSurface(), Trk::oppositeMomentum, @@ -365,7 +366,7 @@ Trk::GsfSmoother::fit(const ForwardTrajectory& forwardTrajectory, if (ccot && trackStateOnSurface == secondLastTrackStateOnSurface) { Trk::MultiComponentState ccotState = - addCCOT(updatedStateOnSurface, ccot, smoothedTrajectory.get()); + addCCOT(ctx,updatedStateOnSurface, ccot, smoothedTrajectory.get()); if (!ccotState.empty()) { updatedState = std::move(ccotState); } @@ -474,7 +475,8 @@ Trk::GsfSmoother::combine( } Trk::MultiComponentState -Trk::GsfSmoother::addCCOT(const Trk::TrackStateOnSurface* currentState, +Trk::GsfSmoother::addCCOT(const EventContext& ctx, + const Trk::TrackStateOnSurface* currentState, const Trk::CaloCluster_OnTrack* ccot, Trk::SmoothedTrajectory* smoothedTrajectory) const { @@ -496,7 +498,7 @@ Trk::GsfSmoother::addCCOT(const Trk::TrackStateOnSurface* currentState, // Extrapolate to the Calo if (currentSurface) { extrapolatedState = - m_extrapolator->extrapolateDirectly(Gaudi::Hive::currentContext(), + m_extrapolator->extrapolateDirectly(ctx, *currentMultiComponentState, ccot->associatedSurface(), Trk::alongMomentum, @@ -530,7 +532,7 @@ Trk::GsfSmoother::addCCOT(const Trk::TrackStateOnSurface* currentState, // Extrapolate back to the surface nearest the origin extrapolatedState = - m_extrapolator->extrapolateDirectly(Gaudi::Hive::currentContext(), + m_extrapolator->extrapolateDirectly(ctx, updatedState, *currentSurface, Trk::oppositeMomentum, -- GitLab