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