From 8e9b1be7ef39cdcc16e3dad73d228cc9f49c2717 Mon Sep 17 00:00:00 2001 From: Johannes Junggeburth <johannes.josef.junggeburth@cern.ch> Date: Mon, 22 Jan 2024 18:38:33 +0100 Subject: [PATCH] GeoTransform - Return default transform by reference --- .../GeoModelKernel/GeoTransform.h | 18 +++++++++--------- .../src/GeoAlignableTransform.cxx | 10 +++++----- .../GeoModelKernel/src/GeoTransform.cxx | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoTransform.h b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoTransform.h index c1eed73f9..d03655065 100644 --- a/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoTransform.h +++ b/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoTransform.h @@ -24,21 +24,21 @@ class GeoTransform : public GeoGraphNode { GeoTransform(const GeoTrf::Transform3D& transform); - /// Gets the total transformation. - virtual GeoTrf::Transform3D getTransform(const GeoVAlignmentStore* store=nullptr) const; + /// Gets the total transformation. + virtual GeoTrf::Transform3D getTransform(const GeoVAlignmentStore* store=nullptr) const; - /// Gets the default transformation (no alignment correction) - GeoTrf::Transform3D getDefTransform(const GeoVAlignmentStore* store=nullptr) const; + /// Gets the default transformation (no alignment correction) + const GeoTrf::Transform3D& getDefTransform(const GeoVAlignmentStore* store=nullptr) const; - /// Executes a GeoNodeAction. - virtual void exec(GeoNodeAction *action) const override final; + /// Executes a GeoNodeAction. + virtual void exec(GeoNodeAction *action) const override final; protected: - virtual ~GeoTransform() = default; + virtual ~GeoTransform() = default; private: - // The Euclidean (Rigid Body) transform. - GeoTrf::Transform3D m_transform{GeoTrf::Transform3D::Identity()}; + // The Euclidean (Rigid Body) transform. + GeoTrf::Transform3D m_transform{GeoTrf::Transform3D::Identity()}; }; #endif diff --git a/GeoModelCore/GeoModelKernel/src/GeoAlignableTransform.cxx b/GeoModelCore/GeoModelKernel/src/GeoAlignableTransform.cxx index e0bddc968..e5c08560f 100755 --- a/GeoModelCore/GeoModelKernel/src/GeoAlignableTransform.cxx +++ b/GeoModelCore/GeoModelKernel/src/GeoAlignableTransform.cxx @@ -24,16 +24,16 @@ GeoTrf::Transform3D GeoAlignableTransform::getTransform(const GeoVAlignmentStore { if(store) { const GeoTrf::Transform3D* delta = store->getDelta(this); - return GeoTransform::getTransform(nullptr) * (!delta ? GeoTrf::Transform3D::Identity() : *delta); + return getDefTransform(store) * (!delta ? GeoTrf::Transform3D::Identity() : *delta); } - else { + else if (m_delta) { std::scoped_lock<std::mutex> guard(m_deltaMutex); - return GeoTransform::getTransform(nullptr) * (!m_delta ? GeoTrf::Transform3D::Identity() : *m_delta); + return getDefTransform(store) * (*m_delta); } + return getDefTransform(store); } -void GeoAlignableTransform::setDelta(const GeoTrf::Transform3D& delta, GeoVAlignmentStore* store) -{ +void GeoAlignableTransform::setDelta(const GeoTrf::Transform3D& delta, GeoVAlignmentStore* store) { if(!store) { { std::scoped_lock<std::mutex> guard(m_deltaMutex); diff --git a/GeoModelCore/GeoModelKernel/src/GeoTransform.cxx b/GeoModelCore/GeoModelKernel/src/GeoTransform.cxx index c37e7e13c..d9543ee34 100755 --- a/GeoModelCore/GeoModelKernel/src/GeoTransform.cxx +++ b/GeoModelCore/GeoModelKernel/src/GeoTransform.cxx @@ -15,7 +15,7 @@ GeoTrf::Transform3D GeoTransform::getTransform(const GeoVAlignmentStore* /*store return m_transform; } -GeoTrf::Transform3D GeoTransform::getDefTransform(const GeoVAlignmentStore* /*store*/) const { +const GeoTrf::Transform3D& GeoTransform::getDefTransform(const GeoVAlignmentStore* /*store*/) const { return m_transform; } -- GitLab