From 93ca708f5e1c51e4a33f59fb816e9402f8ba2652 Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Fri, 11 Dec 2020 01:56:48 +0100 Subject: [PATCH] GSF, move methods that do not need to be class member (i.e not use anything from this) to be in an anonymous namespace --- .../TrkGaussianSumFilter/GaussianSumFitter.h | 4 - .../TrkGaussianSumFilter/GsfExtrapolator.h | 7 -- .../GsfMaterialEffectsUpdator.h | 3 - .../GsfMaterialMixtureConvolution.h | 2 - .../src/GaussianSumFitter.cxx | 57 +++++++------- .../src/GsfExtrapolator.cxx | 76 +++++++++---------- .../src/GsfMaterialEffectsUpdator.cxx | 33 ++++---- .../src/GsfMaterialMixtureConvolution.cxx | 26 ++++--- 8 files changed, 95 insertions(+), 113 deletions(-) diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h index 2e57ce8ad6b1..84887a8093c1 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GaussianSumFitter.h @@ -117,10 +117,6 @@ private: const SmoothedTrajectory&, const ParticleHypothesis particleHypothesis = nonInteracting) const; - //* Calculate the fit quality */ - std::unique_ptr<Trk::FitQuality> buildFitQuality( - const Trk::SmoothedTrajectory&) const; - /** Gsf smoothe trajectory*/ std::unique_ptr<SmoothedTrajectory> fit( const EventContext& ctx, diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfExtrapolator.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfExtrapolator.h index 8f41475d80b3..c0d6172e6fd9 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfExtrapolator.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfExtrapolator.h @@ -252,13 +252,6 @@ private: PropDirection direction = anyDirection, ParticleHypothesis particleHypothesis = nonInteracting) const; - std::string layerRZoutput(const Trk::Layer* lay) const; - - std::string positionOutput(const Amg::Vector3D& pos) const; - - int radialDirection(const Trk::MultiComponentState& pars, - PropDirection dir) const; - ToolHandleArray<IPropagator> m_propagators{ this, "Propagators", {}, "" }; ToolHandle<INavigator> m_navigator{ this, "Navigator", diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h index 2d9b1750200c..da249730e4ee 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h @@ -83,9 +83,6 @@ private: PropDirection direction = anyDirection, ParticleHypothesis particleHypothesis = nonInteracting) const; - /** Method to calculate the updated momentum based on material effects */ - bool updateP(AmgVector(5) &, double) const; - private: ToolHandle<IMultiStateMaterialEffects> m_materialEffects{ this, diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialMixtureConvolution.h b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialMixtureConvolution.h index 7eb271c1cf36..0cd12260c05b 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialMixtureConvolution.h +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/TrkGaussianSumFilter/GsfMaterialMixtureConvolution.h @@ -119,8 +119,6 @@ private: Trk::ParticleHypothesis particleHypothesis, MaterialUpdateType updateType) const; - bool updateP(double& qOverP, double deltaP) const; - std::pair<const Trk::MaterialProperties*, double> getMaterialProperties( const Trk::TrackParameters* trackParameters, const Trk::Layer& layer) const; diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx index d30ea966bfc3..c1e22ae4ea43 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx @@ -31,6 +31,35 @@ #include <algorithm> #include <vector> +namespace { +std::unique_ptr<Trk::FitQuality> +buildFitQuality(const Trk::SmoothedTrajectory& smoothedTrajectory) +{ + + double chiSquared = 0.; + int numberDoF = -5; + // Loop over all TrackStateOnSurface objects in trajectory + Trk::SmoothedTrajectory::const_iterator stateOnSurface = + smoothedTrajectory.begin(); + for (; stateOnSurface != smoothedTrajectory.end(); ++stateOnSurface) { + if (!(*stateOnSurface)->type(Trk::TrackStateOnSurface::Measurement)) { + continue; + } + if ((*stateOnSurface)->fitQualityOnSurface() == nullptr) { + continue; + } + chiSquared += (*stateOnSurface)->fitQualityOnSurface()->chiSquared(); + numberDoF += (*stateOnSurface)->fitQualityOnSurface()->numberDoF(); + } + + if (std::isnan(chiSquared) || chiSquared <= 0.) { + return nullptr; + } + + return std::make_unique<Trk::FitQuality>(chiSquared, numberDoF); +} +} + Trk::GaussianSumFitter::GaussianSumFitter(const std::string& type, const std::string& name, const IInterface* parent) @@ -721,34 +750,6 @@ Trk::GaussianSumFitter::makePerigee( return perigeeMultiStateOnSurface; } -std::unique_ptr<Trk::FitQuality> -Trk::GaussianSumFitter::buildFitQuality( - const Trk::SmoothedTrajectory& smoothedTrajectory) const -{ - - double chiSquared = 0.; - int numberDoF = -5; - // Loop over all TrackStateOnSurface objects in trajectory - SmoothedTrajectory::const_iterator stateOnSurface = - smoothedTrajectory.begin(); - for (; stateOnSurface != smoothedTrajectory.end(); ++stateOnSurface) { - if (!(*stateOnSurface)->type(TrackStateOnSurface::Measurement)) { - continue; - } - if ((*stateOnSurface)->fitQualityOnSurface() == nullptr) { - continue; - } - chiSquared += (*stateOnSurface)->fitQualityOnSurface()->chiSquared(); - numberDoF += (*stateOnSurface)->fitQualityOnSurface()->numberDoF(); - } - - if (std::isnan(chiSquared) || chiSquared <= 0.) { - return nullptr; - } - - return std::make_unique<FitQuality>(chiSquared, numberDoF); -} - /* * Forwards fit on a set of PrepRawData */ diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx index 1b8dc6a944c0..48f106874d75 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfExtrapolator.cxx @@ -35,6 +35,44 @@ namespace { const bool useBoundaryMaterialUpdate(true); + +std::string +layerRZoutput(const Trk::Layer* lay) +{ + std::string result("NULL"); + if (not lay) { + return result; + } + result = "[r,z] = [ " + + std::to_string(lay->surfaceRepresentation().bounds().r()) + ", " + + std::to_string(lay->surfaceRepresentation().center().z()) + + " ] - Index "; + result += std::to_string(lay->layerIndex().value()); + return result; +} + +std::string +positionOutput(const Amg::Vector3D& pos) +{ + std::stringstream outStream; + outStream << "[r,phi,z] = [ " << pos.perp() << ", " << pos.phi() << ", " + << pos.z() << " ]"; + return outStream.str(); +} + +int +radialDirection(const Trk::MultiComponentState& pars, Trk::PropDirection dir) +{ + // safe inbound/outbound estimation + double prePositionR = pars.begin()->first->position().perp(); + return (prePositionR > + (pars.begin()->first->position() + + dir * 0.5 * prePositionR * pars.begin()->first->momentum().unit()) + .perp()) + ? -1 + : 1; +} + } Trk::GsfExtrapolator::GsfExtrapolator(const std::string& type, @@ -1578,44 +1616,6 @@ Trk::GsfExtrapolator::addMaterialtoVector(Cache& cache, } } -std::string -Trk::GsfExtrapolator::layerRZoutput(const Trk::Layer* lay) const -{ - std::string result("NULL"); - if (not lay) { - return result; - } - result = "[r,z] = [ " + - std::to_string(lay->surfaceRepresentation().bounds().r()) + ", " + - std::to_string(lay->surfaceRepresentation().center().z()) + - " ] - Index "; - result += std::to_string(lay->layerIndex().value()); - return result; -} - -std::string -Trk::GsfExtrapolator::positionOutput(const Amg::Vector3D& pos) const -{ - std::stringstream outStream; - outStream << "[r,phi,z] = [ " << pos.perp() << ", " << pos.phi() << ", " - << pos.z() << " ]"; - return outStream.str(); -} - -int -Trk::GsfExtrapolator::radialDirection(const Trk::MultiComponentState& pars, - PropDirection dir) const -{ - // safe inbound/outbound estimation - double prePositionR = pars.begin()->first->position().perp(); - return (prePositionR > - (pars.begin()->first->position() + - dir * 0.5 * prePositionR * pars.begin()->first->momentum().unit()) - .perp()) - ? -1 - : 1; -} - bool Trk::GsfExtrapolator::radialDirectionCheck( const EventContext& ctx, diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialEffectsUpdator.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialEffectsUpdator.cxx index 029b45610157..85684a8a0b77 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialEffectsUpdator.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialEffectsUpdator.cxx @@ -8,7 +8,6 @@ * @brief Implementation code for the class GsfMaterialEffectsUpdator */ - #include "TrkGaussianSumFilter/GsfMaterialEffectsUpdator.h" #include "TrkGaussianSumFilter/IMultiStateMaterialEffects.h" @@ -19,6 +18,20 @@ #include "TrkGeometry/Layer.h" #include "TrkGeometry/MaterialProperties.h" +namespace { +bool +updateP(AmgVector(5) & stateVector, double deltaP) +{ + double p = 1. / std::abs(stateVector[Trk::qOverP]); + p += deltaP; + if (p <= 0.) { + return false; + } + double updatedIp = stateVector[Trk::qOverP] > 0. ? 1. / p : -1. / p; + stateVector[Trk::qOverP] = updatedIp; + return true; +} +} Trk::GsfMaterialEffectsUpdator::GsfMaterialEffectsUpdator( const std::string& type, @@ -435,21 +448,3 @@ Trk::GsfMaterialEffectsUpdator::compute( return computedState; } -/* ============================================================================ - updateP method - ============================================================================ - */ - -bool -Trk::GsfMaterialEffectsUpdator::updateP(AmgVector(5) & stateVector, - double deltaP) const -{ - double p = 1. / std::abs(stateVector[Trk::qOverP]); - p += deltaP; - if (p <= 0.) { - return false; - } - double updatedIp = stateVector[Trk::qOverP] > 0. ? 1. / p : -1. / p; - stateVector[Trk::qOverP] = updatedIp; - return true; -} diff --git a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx index ea0daa7e41f0..f930873e6687 100644 --- a/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx +++ b/Tracking/TrkFitter/TrkGaussianSumFilter/src/GsfMaterialMixtureConvolution.cxx @@ -23,6 +23,20 @@ #include "TrkMultiComponentStateOnSurface/MultiComponentState.h" #include "TrkSurfaces/PerigeeSurface.h" +namespace { +bool +updateP(double& qOverP, double deltaP) +{ + double p = 1. / std::abs(qOverP); + p += deltaP; + if (p <= 0.) { + return false; + } + qOverP = qOverP > 0. ? 1. / p : -1. / p; + return true; +} +} + Trk::GsfMaterialMixtureConvolution::GsfMaterialMixtureConvolution( const std::string& type, const std::string& name, @@ -443,18 +457,6 @@ Trk::GsfMaterialMixtureConvolution::update( return mergedState; } -bool -Trk::GsfMaterialMixtureConvolution::updateP(double& qOverP, double deltaP) const -{ - double p = 1. / std::abs(qOverP); - p += deltaP; - if (p <= 0.) { - return false; - } - qOverP = qOverP > 0. ? 1. / p : -1. / p; - return true; -} - std::pair<const Trk::MaterialProperties*, double> Trk::GsfMaterialMixtureConvolution::getMaterialProperties( const Trk::TrackParameters* trackParameters, -- GitLab