diff --git a/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h b/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h index 3f8833ade646f04a87ec159aca9353e9a269158b..977d9bfda6ff21e27c2a007747609fd2c61b622f 100755 --- a/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h +++ b/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h @@ -121,9 +121,6 @@ namespace Trk { /////////////////////////////////////////////////////////////////// SurfaceUniquePtrT<const Surface> m_surface; - CxxUtils::CachedValue<Amg::Vector3D> m_pposition; - CxxUtils::CachedValue<Amg::Vector3D> m_pmomentum; - CxxUtils::CachedValue<Trk::Charged> m_pchargeDef; /////////////////////////////////////////////////////////////////// // Comments @@ -148,9 +145,8 @@ namespace Trk { Amg::Vector3D localToGlobal(const PerigeeSurface *) const; Amg::Vector3D localToGlobal(const ConeSurface *) const; - void updatePositionCache(void) const; - void updateMomentumCache(void) const; - void updateChargeCache(void) const; + Amg::Vector3D calculatePosition(void) const; + Amg::Vector3D calculateMomentum(void) const; }; ///////////////////////////////////////////////////////////////////////////////// @@ -196,9 +192,6 @@ namespace Trk { *m_covariance = *P.m_covariance; } } - - m_pposition = P.m_pposition; - m_pmomentum = P.m_pmomentum; } return (*this); @@ -220,9 +213,6 @@ namespace Trk { m_parameters[ 3] = p[ 3]; m_parameters[ 4] = p[ 4]; m_covariance.reset(nullptr); - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); } /////////////////////////////////////////////////////////////////// @@ -266,9 +256,6 @@ namespace Trk { m_parameters[ 2] = p[ 2]; m_parameters[ 3] = p[ 3]; m_parameters[ 4] = p[ 4]; - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); setCovariance(c ); } @@ -334,10 +321,6 @@ namespace Trk { N.correctionIMom() > 1. ? m_parameters[ 4]/=N.correctionIMom() : m_parameters[ 4]*=N.correctionIMom(); } - - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); } /////////////////////////////////////////////////////////////////// @@ -361,10 +344,6 @@ namespace Trk { N.correctionIMom() > 1. ? m_parameters[ 4]*=N.correctionIMom() : m_parameters[ 4]/=N.correctionIMom(); } - - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); } /////////////////////////////////////////////////////////////////// @@ -373,10 +352,11 @@ namespace Trk { inline double PatternTrackParameters::charge () const { - if (!m_pchargeDef.isValid()) { - updateChargeCache(); + if (m_parameters[4] > 0.0) { + return 1.0; + } else { + return -1.0; } - return m_pchargeDef.ptr()->charge(); } inline double PatternTrackParameters::sinPhi () const @@ -406,10 +386,7 @@ namespace Trk { inline Amg::Vector3D PatternTrackParameters::momentum () const { - if (!m_pmomentum.isValid()) { - updateMomentumCache(); - } - return *m_pmomentum.ptr(); + return calculateMomentum(); } } // end of name space diff --git a/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx b/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx index 0d4351e608e8db63a64dc29d5eb62b79801b1bcd..b29a7e1f090f556bdc40750b4586a785915a02f4 100755 --- a/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx +++ b/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx @@ -64,10 +64,6 @@ bool Trk::PatternTrackParameters::production(const Trk::ParametersBase<5,Trk::Ch m_covariance.reset(nullptr); } - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); - return true; } @@ -140,10 +136,7 @@ AmgSymMatrix(5) Trk::PatternTrackParameters::newCovarianceMatrix Amg::Vector3D Trk::PatternTrackParameters::position() const { - if (!m_pposition.isValid()) { - updatePositionCache(); - } - return *m_pposition.ptr(); + return calculatePosition(); } /////////////////////////////////////////////////////////////////// @@ -494,10 +487,6 @@ bool Trk::PatternTrackParameters::initiate m_surface.reset(nullptr); } - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); - return true; } @@ -531,17 +520,11 @@ void Trk::PatternTrackParameters::changeDirection() m_covariance->fillSymmetric(1, 4, -(*m_covariance)(1, 4)); m_covariance->fillSymmetric(2, 4, -(*m_covariance)(2, 4)); - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); return; } m_parameters[ 0] = -m_parameters[ 0]; - m_pposition.reset(); - m_pmomentum.reset(); - m_pchargeDef.reset(); if(m_covariance == nullptr) { return; } @@ -554,44 +537,35 @@ void Trk::PatternTrackParameters::changeDirection() m_covariance->fillSymmetric(2, 4, -(*m_covariance)(2, 4)); } -void Trk::PatternTrackParameters::updateChargeCache(void) const { - if (m_parameters[4] > 0.0) { - m_pchargeDef.set(1); - } else { - m_pchargeDef.set(-1); - } -} - -void Trk::PatternTrackParameters::updatePositionCache(void) const { +Amg::Vector3D Trk::PatternTrackParameters::calculatePosition(void) const { if (!m_surface) { - m_pposition.set(Amg::Vector3D(0, 0, 0)); - return; + return Amg::Vector3D(0, 0, 0); } if (const Trk::PlaneSurface * plane = dynamic_cast<const Trk::PlaneSurface*>(m_surface.get()); plane != nullptr) { - m_pposition.set(localToGlobal(plane)); + return localToGlobal(plane); } else if (const Trk::StraightLineSurface * line = dynamic_cast<const Trk::StraightLineSurface*>(m_surface.get()); line != nullptr) { - m_pposition.set(localToGlobal(line)); + return localToGlobal(line); } else if (const Trk::DiscSurface * disc = dynamic_cast<const Trk::DiscSurface*>(m_surface.get()); disc != nullptr) { - m_pposition.set(localToGlobal(disc)); + return localToGlobal(disc); } else if (const Trk::CylinderSurface * cylinder = dynamic_cast<const Trk::CylinderSurface*>(m_surface.get()); cylinder != nullptr) { - m_pposition.set(localToGlobal(cylinder)); + return localToGlobal(cylinder); } else if (const Trk::PerigeeSurface * pline = dynamic_cast<const Trk::PerigeeSurface*>(m_surface.get()); pline != nullptr) { - m_pposition.set(localToGlobal(pline)); + return localToGlobal(pline); } else if (const Trk::ConeSurface * cone = dynamic_cast<const Trk::ConeSurface*>(m_surface.get()); cone != nullptr) { - m_pposition.set(localToGlobal(cone)); + return localToGlobal(cone); } else { - m_pposition.set(Amg::Vector3D(0, 0, 0)); + return Amg::Vector3D(0, 0, 0); } } -void Trk::PatternTrackParameters::updateMomentumCache(void) const { +Amg::Vector3D Trk::PatternTrackParameters::calculateMomentum(void) const { double p = m_parameters[4] != 0. ? 1. / std::abs(m_parameters[4]) : 10e9; double Sf = std::sin(m_parameters[2]), Cf = std::cos(m_parameters[2]); double Se = std::sin(m_parameters[3]), Ce = std::cos(m_parameters[3]); - m_pmomentum.set(Amg::Vector3D(p * Se * Cf, p * Se * Sf, p * Ce)); + return Amg::Vector3D(p * Se * Cf, p * Se * Sf, p * Ce); } bool Trk::PatternTrackParameters::hasSurface() const { @@ -615,7 +589,4 @@ int Trk::PatternTrackParameters::surfaceType() const { } void Trk::PatternTrackParameters::updateParametersHelper(const AmgVector(5) &) { - updatePositionCache(); - updateMomentumCache(); - updateChargeCache(); }