From 32639531a31f0603e84d00b4770e04c7beb5498a Mon Sep 17 00:00:00 2001 From: Susumu Oda Date: Sat, 14 Sep 2019 18:02:44 +0200 Subject: [PATCH 1/2] Remove RCBase from SiDetectorDesign. SiDetectorDesign is now owned by SiDetectorManager. --- .../InDetReadoutGeometry/SiDetectorDesign.h | 5 ++--- .../InDetReadoutGeometry/SiDetectorManager.h | 8 +++++--- .../InDetReadoutGeometry/src/PixelDetectorManager.cxx | 4 ++++ .../InDetReadoutGeometry/src/SCT_DetectorManager.cxx | 4 ++++ .../InDetReadoutGeometry/src/SiDetectorElement.cxx | 5 ----- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorDesign.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorDesign.h index 52487fb58cb..293436a9b2c 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorDesign.h +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorDesign.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -18,7 +18,6 @@ #include "CLHEP/Geometry/Vector3D.h" #include "AtlasDetDescr/AtlasDetectorID.h" #include "GeoPrimitives/GeoPrimitives.h" -#include "GeoModelKernel/RCBase.h" #include "InDetDD_Defs.h" #include @@ -52,7 +51,7 @@ enum DetectorShape { @author A. Calvet, Grant Gorfine */ -class SiDetectorDesign: public RCBase { +class SiDetectorDesign { public: enum Axis { xAxis=0, yAxis, zAxis diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h index 4a7987ded6a..b5cacb0a445 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -123,7 +123,10 @@ class SiNumerology; /** Access Numerology */ const SiNumerology & numerology() const {return m_numerology;} SiNumerology & numerology() {return m_numerology;} - + + protected: + std::vector< const SiDetectorDesign *> m_designs; + private: //** Prevent copy and assignment */ const SiDetectorManager & operator=(const SiDetectorManager &right); @@ -140,7 +143,6 @@ class SiNumerology; std::string m_tag; SiNumerology m_numerology; - std::vector< const SiDetectorDesign *> m_designs; }; diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx index 2709646f535..15b2e288acd 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx @@ -66,6 +66,10 @@ namespace InDetDD { for (size_t k=0; k < m_alignableTransforms.size(); k++){ delete m_alignableTransforms[k]; } + + for (const SiDetectorDesign* design : m_designs) { + delete design; + } } diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx index 4172cabba20..e8d79847279 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx @@ -67,6 +67,10 @@ namespace InDetDD { for (size_t l=0; l < m_moduleAlignableTransforms.size(); l++){ delete m_moduleAlignableTransforms[l]; } + + for (const SiDetectorDesign* design : m_designs) { + delete design; + } } unsigned int SCT_DetectorManager::getNumTreeTops() const diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorElement.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorElement.cxx index f7a9e7a067a..2163faf9b8c 100644 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorElement.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorElement.cxx @@ -90,9 +90,6 @@ namespace InDetDD { if (!m_idHash.is_valid()) throw std::runtime_error("SiDetectorElement: Unable to set IdentifierHash"); - // Increase the reference count of the SiDetectorDesign objects. - m_design->ref(); - // Increase the reference count of the SiCommonItems objects. m_commonItems->ref(); @@ -106,8 +103,6 @@ namespace InDetDD { // Destructor: SiDetectorElement::~SiDetectorElement() { - // The design is reference counted so that it will not be deleted until the last element is deleted. - m_design->unref(); m_commonItems->unref(); } -- GitLab From e98a56d003f2e29b21047857e6462abf26272b9b Mon Sep 17 00:00:00 2001 From: Susumu Oda Date: Sat, 14 Sep 2019 18:24:49 +0200 Subject: [PATCH 2/2] Delete SiDetectorDesign in SiDetectorManager destructor --- .../InDetReadoutGeometry/SiDetectorManager.h | 6 ++---- .../InDetReadoutGeometry/src/PixelDetectorManager.cxx | 4 ---- .../InDetReadoutGeometry/src/SCT_DetectorManager.cxx | 4 ---- .../InDetReadoutGeometry/src/SiDetectorManager.cxx | 7 +++++++ 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h index b5cacb0a445..71d208dd5ab 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/InDetReadoutGeometry/SiDetectorManager.h @@ -64,7 +64,7 @@ class SiNumerology; SiDetectorManager(StoreGateSvc * detStore, const std::string & name); // Destructor - virtual ~SiDetectorManager() {}; + virtual ~SiDetectorManager(); // @@ -124,9 +124,6 @@ class SiNumerology; const SiNumerology & numerology() const {return m_numerology;} SiNumerology & numerology() {return m_numerology;} - protected: - std::vector< const SiDetectorDesign *> m_designs; - private: //** Prevent copy and assignment */ const SiDetectorManager & operator=(const SiDetectorManager &right); @@ -143,6 +140,7 @@ class SiNumerology; std::string m_tag; SiNumerology m_numerology; + std::vector< const SiDetectorDesign *> m_designs; }; diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx index 15b2e288acd..2709646f535 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/PixelDetectorManager.cxx @@ -66,10 +66,6 @@ namespace InDetDD { for (size_t k=0; k < m_alignableTransforms.size(); k++){ delete m_alignableTransforms[k]; } - - for (const SiDetectorDesign* design : m_designs) { - delete design; - } } diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx index e8d79847279..4172cabba20 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SCT_DetectorManager.cxx @@ -67,10 +67,6 @@ namespace InDetDD { for (size_t l=0; l < m_moduleAlignableTransforms.size(); l++){ delete m_moduleAlignableTransforms[l]; } - - for (const SiDetectorDesign* design : m_designs) { - delete design; - } } unsigned int SCT_DetectorManager::getNumTreeTops() const diff --git a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorManager.cxx b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorManager.cxx index 510baba490a..3011a3e16d0 100755 --- a/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/InDetReadoutGeometry/src/SiDetectorManager.cxx @@ -30,6 +30,13 @@ namespace InDetDD addFolder("/Indet/Align"); } + SiDetectorManager::~SiDetectorManager() + { + for (const SiDetectorDesign* design : m_designs) { + delete design; + } + } + const std::string& SiDetectorManager::tag() const { return m_tag; -- GitLab