ATLAS Offline Software
RDBMaterialManager.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELSVC_RDBMATERIALMANAGER_H
6 #define GEOMODELSVC_RDBMATERIALMANAGER_H
7 
17 #include "GeoModelKernel/GeoIntrusivePtr.h"
18 #include "GeoModelKernel/GeoElement.h"
20 
21 #include <string>
22 #include <vector>
23 #include <iosfwd>
24 
25 class GeoMaterial;
26 class ISvcLocator;
27 
29 
30  public:
31 
32  // Constructor:
33  RDBMaterialManager(ISvcLocator* pSvcLocator);
34 
35  // Destructor:
37 
38  // Query the material:
39  virtual const GeoMaterial *getMaterial(const std::string &name) override;
40 
41  // Query the elements:
42  virtual const GeoElement *getElement(const std::string & name) override;
43 
44  // Query the elements (by atomic number):
45  virtual const GeoElement *getElement(unsigned int atomicNumber) override;
46 
47  // Add new material
48  virtual void addMaterial(const std::string& space, GeoMaterial* material) override;
49 
50  virtual StoredMaterialManager::MaterialMapIterator begin() const override;
51  virtual StoredMaterialManager::MaterialMapIterator end() const override;
52 
53  // Number of materials in the manager
54  virtual size_t size() override;
55 
56  virtual std::ostream & printAll(std::ostream & o=std::cout) const override;
57 
58  private:
59 
60  StatusCode readMaterialsFromDB(ISvcLocator* pSvcLocator);
61 
62  void buildSpecialMaterials();
63 
64  GeoElement *searchElementVector (const std::string & name) const;
65  GeoElement *searchElementVector (const unsigned int atomicNumber) const;
66  GeoMaterial *searchMaterialMap (const std::string & name) const;
67 
69 
70  using GeoEleVec = std::vector<GeoIntrusivePtr<GeoElement>>;
73 
75  {
76  DetectorAuxData(const std::string& prim_key
77  , IRDBRecordset_ptr materials
78  , IRDBRecordset_ptr matcomponents)
79  : m_prim_key(prim_key)
80  , m_materials(std::move(materials))
81  , m_matcomponents(std::move(matcomponents))
82  {}
83 
84  std::string m_prim_key{};
87  };
88 
89  std::map<std::string,DetectorAuxData> m_detData;
90 };
91 
92 
93 #endif
RDBMaterialManager::addMaterial
virtual void addMaterial(const std::string &space, GeoMaterial *material) override
Definition: RDBMaterialManager.cxx:404
StoredMaterialManager::MaterialMap
std::map< std::string, GeoIntrusivePtr< GeoMaterial > > MaterialMap
Definition: StoredMaterialManager.h:30
RDBMaterialManager::m_materialMap
StoredMaterialManager::MaterialMap m_materialMap
Definition: RDBMaterialManager.h:72
RDBMaterialManager
This is a material manager which gets material definitions from the Geometry DB (Oracle)
Definition: RDBMaterialManager.h:28
RDBMaterialManager::m_elementVector
GeoEleVec m_elementVector
Definition: RDBMaterialManager.h:71
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
RDBMaterialManager::DetectorAuxData::m_materials
IRDBRecordset_ptr m_materials
Definition: RDBMaterialManager.h:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
RDBMaterialManager::DetectorAuxData::m_matcomponents
IRDBRecordset_ptr m_matcomponents
Definition: RDBMaterialManager.h:86
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
RDBMaterialManager::readMaterialsFromDB
StatusCode readMaterialsFromDB(ISvcLocator *pSvcLocator)
Definition: RDBMaterialManager.cxx:32
RDBMaterialManager::DetectorAuxData::m_prim_key
std::string m_prim_key
Definition: RDBMaterialManager.h:84
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
columnar::final
CM final
Definition: ColumnAccessor.h:106
RDBMaterialManager::size
virtual size_t size() override
Definition: RDBMaterialManager.cxx:429
RDBMaterialManager::getMaterial
virtual const GeoMaterial * getMaterial(const std::string &name) override
Definition: RDBMaterialManager.cxx:250
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
StoredMaterialManager.h
RDBMaterialManager::printAll
virtual std::ostream & printAll(std::ostream &o=std::cout) const override
Definition: RDBMaterialManager.cxx:434
RDBMaterialManager::DetectorAuxData
Definition: RDBMaterialManager.h:75
RDBMaterialManager::getElement
virtual const GeoElement * getElement(const std::string &name) override
Definition: RDBMaterialManager.cxx:360
RDBMaterialManager::~RDBMaterialManager
virtual ~RDBMaterialManager()
RDBMaterialManager::RDBMaterialManager
RDBMaterialManager(ISvcLocator *pSvcLocator)
Definition: RDBMaterialManager.cxx:24
RDBMaterialManager::DetectorAuxData::DetectorAuxData
DetectorAuxData(const std::string &prim_key, IRDBRecordset_ptr materials, IRDBRecordset_ptr matcomponents)
Definition: RDBMaterialManager.h:76
StoredMaterialManager::MaterialMapIterator
MaterialMap::const_iterator MaterialMapIterator
Definition: StoredMaterialManager.h:31
RDBMaterialManager::buildSpecialMaterials
void buildSpecialMaterials()
Definition: RDBMaterialManager.cxx:451
AthMessaging.h
RDBMaterialManager::searchMaterialMap
GeoMaterial * searchMaterialMap(const std::string &name) const
Definition: RDBMaterialManager.cxx:201
StoredMaterialManager
This class holds one or more material managers and makes them storeable, under StoreGate.
Definition: StoredMaterialManager.h:28
RDBMaterialManager::m_detData
std::map< std::string, DetectorAuxData > m_detData
Definition: RDBMaterialManager.h:89
RDBMaterialManager::begin
virtual StoredMaterialManager::MaterialMapIterator begin() const override
Definition: RDBMaterialManager.cxx:419
RDBMaterialManager::end
virtual StoredMaterialManager::MaterialMapIterator end() const override
Definition: RDBMaterialManager.cxx:424
RDBMaterialManager::m_elements
IRDBRecordset_ptr m_elements
Definition: RDBMaterialManager.h:68
RDBMaterialManager::searchElementVector
GeoElement * searchElementVector(const std::string &name) const
Definition: RDBMaterialManager.cxx:215
RDBMaterialManager::GeoEleVec
std::vector< GeoIntrusivePtr< GeoElement > > GeoEleVec
Definition: RDBMaterialManager.h:70