Skip to content
Snippets Groups Projects
Commit 179fc74d authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia Committed by Melissa Yexley
Browse files

RDBMaterialManager: partially migrated to GeoIntrusivePtr

For now migrated only the Element Vector
parent e3ad6911
No related branches found
No related tags found
No related merge requests found
......@@ -160,7 +160,7 @@ StatusCode GeoModelSvc::geoInit()
? PathResolver::find_file (sqliteDbName, "DATAPATH")
: m_sqliteDbFullPath.value();
if(sqliteDbPath.empty() && m_sqliteDbFullPath.empty()) {
ATH_MSG_FATAL("Filed to find SQLite database file " << sqliteDbName << " for reading in persistent GeoModel tree");
ATH_MSG_FATAL("Failed to find SQLite database file " << sqliteDbName << " for reading in persistent GeoModel tree");
return StatusCode::FAILURE;
}
else {
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#include "RDBMaterialManager.h"
......@@ -7,7 +7,6 @@
#include "GeoModelInterfaces/IGeoModelSvc.h"
#include "GeoModelKernel/GeoMaterial.h"
#include "GeoModelKernel/GeoElement.h"
#include "GeoModelKernel/Units.h"
#include "StoreGate/DataHandle.h"
......@@ -323,16 +322,10 @@ StatusCode RDBMaterialManager::readMaterialsFromDB(ISvcLocator* pSvcLocator)
// Destructor:
RDBMaterialManager::~RDBMaterialManager() {
// Unreference the materials:
for (auto &p : m_materialMap) {
p.second->unref();
}
// Unreference the elements:
for (GeoElement *elt : m_elementVector) {
elt->unref();
}
}
GeoMaterial* RDBMaterialManager::searchMaterialMap(const std::string & name) const
......@@ -359,7 +352,7 @@ GeoElement *RDBMaterialManager::searchElementVector(const std::string & name) c
MsgStream log(Athena::getMessageSvc(), "GeoModelSvc::RDBMaterialManager");
NameEquals matchByName(name);
std::vector<GeoElement *>::const_iterator e=std::find_if(m_elementVector.begin(), m_elementVector.end(),matchByName);
GeoEleVec::const_iterator e=std::find_if(m_elementVector.begin(), m_elementVector.end(),matchByName);
if (e!=m_elementVector.end()) {
if(log.level()==MSG::VERBOSE)
......@@ -379,7 +372,7 @@ GeoElement *RDBMaterialManager::searchElementVector(const unsigned int atomicNum
MsgStream log(Athena::getMessageSvc(), "GeoModelSvc::RDBMaterialManager");
NumberEquals matchByNumber(atomicNumber);
std::vector<GeoElement *>::const_iterator e=std::find_if(m_elementVector.begin(), m_elementVector.end(), matchByNumber);
GeoEleVec::const_iterator e=std::find_if(m_elementVector.begin(), m_elementVector.end(), matchByNumber);
if (e!=m_elementVector.end()) {
if(log.level()==MSG::VERBOSE)
......@@ -636,7 +629,6 @@ const GeoElement *RDBMaterialManager::getElement(const std::string & name) {
pelement = new GeoElement( element_name , element_symbol ,element_z , element_a *(GeoModelKernelUnits::gram/Gaudi::Units::mole));
// a table to keep the memory allocation, and easy for delete
pelement->ref();
m_elementVector.push_back( pelement);
break;
......@@ -679,7 +671,6 @@ const GeoElement *RDBMaterialManager::getElement(unsigned int atomicNumber) {
pelement = new GeoElement( element_name , element_symbol ,element_z , element_a *(GeoModelKernelUnits::gram/Gaudi::Units::mole));
// a table to keep the memory allocation, and easy for delete
pelement->ref();
m_elementVector.push_back( pelement);
break;
......@@ -746,7 +737,6 @@ void RDBMaterialManager::buildSpecialMaterials()
{
// Create special materials
GeoElement* ethElement = new GeoElement("Ether","ET",500.0,0.0);
ethElement->ref();
m_elementVector.push_back(ethElement);
GeoMaterial* ether = new GeoMaterial("special::Ether",0.0);
ether->add(ethElement,1.);
......
/*
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/
#ifndef GEOMODELSVC_RDBMATERIALMANAGER_H
......@@ -15,6 +15,8 @@
//---------------------------------------------------------//
#include "GeoModelInterfaces/StoredMaterialManager.h"
#include "RDBAccessSvc/IRDBAccessSvc.h"
#include "GeoModelKernel/GeoIntrusivePtr.h"
#include "GeoModelKernel/GeoElement.h"
#include <string>
#include <map>
......@@ -90,7 +92,8 @@ class RDBMaterialManager final : public StoredMaterialManager {
IRDBRecordset_ptr m_toromaterials;
IRDBRecordset_ptr m_toromatcomponents;
std::vector < GeoElement *> m_elementVector;
using GeoEleVec = std::vector<GeoIntrusivePtr<GeoElement>>;
GeoEleVec m_elementVector;
StoredMaterialManager::MaterialMap m_materialMap;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment