diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMeasurementUpdator.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMeasurementUpdator.h index d2ff4e48829fcb10338072651be14f2c48d72630..9ef3829768dad815ce08a046c46d4c6a96d4d06e 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMeasurementUpdator.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMeasurementUpdator.h @@ -49,7 +49,7 @@ private: MultiComponentState calculateFilterStep( MultiComponentState&&, const MeasurementBase&, - std::unique_ptr<FitQualityOnSurface>& fitQoS) const; + FitQualityOnSurface& fitQoS) const; bool invalidComponent(const Trk::TrackParameters* trackParameters) const; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx index bc984b9e41c1d7bffaa5494379372e1f5a46fc4d..a9499f21b06022e8294bdf8cfb21cb41f9876bb6 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMeasurementUpdator.cxx @@ -170,7 +170,7 @@ Trk::GsfMeasurementUpdator::update( rebuildState(std::move(stateBeforeUpdate)); // Perform the measurement update with the modified state updatedState = calculateFilterStep( - std::move(stateWithInsertedErrors), measurement, fitQoS); + std::move(stateWithInsertedErrors), measurement, *fitQoS); if (updatedState.empty()) { fitQoS.reset(); return {}; @@ -180,7 +180,7 @@ Trk::GsfMeasurementUpdator::update( // Perform the measurement update updatedState = - calculateFilterStep(std::move(stateBeforeUpdate), measurement, fitQoS); + calculateFilterStep(std::move(stateBeforeUpdate), measurement, *fitQoS); if (updatedState.empty()) { fitQoS.reset(); @@ -193,7 +193,7 @@ Trk::MultiComponentState Trk::GsfMeasurementUpdator::calculateFilterStep( Trk::MultiComponentState&& stateBeforeUpdate, const Trk::MeasurementBase& measurement, - std::unique_ptr<FitQualityOnSurface>& fitQoS) const + FitQualityOnSurface& fitQoS) const { // state Assembler cache MultiComponentStateAssembler::Cache cache; @@ -218,39 +218,33 @@ Trk::GsfMeasurementUpdator::calculateFilterStep( std::abs(component.first->parameters()[Trk::qOverP]) > 0.033333) { continue; } - auto componentFitQuality = std::make_unique<Trk::FitQualityOnSurface>(); + Trk::FitQualityOnSurface componentFitQuality{}; /// Update the component in place bool updateSuccess = m_updator.filterStep(*(component.first), - *componentFitQuality, + componentFitQuality, measurement.localParameters(), measurement.localCovariance(), 1); if (!updateSuccess) { - if (componentFitQuality) { - componentFitQuality.reset(); - } continue; } if (invalidComponent(component.first.get())) { - componentFitQuality.reset(); continue; } - if (!componentFitQuality || componentFitQuality->chiSquared() <= 0.) { - componentFitQuality.reset(); + if (componentFitQuality.chiSquared() <= 0.) { continue; } - double componentChi2 = componentFitQuality->chiSquared(); + double componentChi2 = componentFitQuality.chiSquared(); chiSquared += component.second * componentChi2; // The same measurement is included in each update // so we can update the degree of freedom only if (degreesOfFreedom == 0.0) { - degreesOfFreedom = componentFitQuality->numberDoF(); + degreesOfFreedom = componentFitQuality.numberDoF(); } - componentFitQuality.reset(); // Add component to state being prepared for assembly MultiComponentStateAssembler::addComponent(cache, std::move(component)); @@ -263,7 +257,7 @@ Trk::GsfMeasurementUpdator::calculateFilterStep( return {}; } - fitQoS = std::make_unique<FitQualityOnSurface>(chiSquared, degreesOfFreedom); + fitQoS = FitQualityOnSurface(chiSquared, degreesOfFreedom); // Renormalise state MultiComponentStateHelpers::renormaliseState(assembledUpdatedState); return assembledUpdatedState;