5#ifndef GEOMODELINTERFACES_STOREDMATERIALMANAGER_H
6#define GEOMODELINTERFACES_STOREDMATERIALMANAGER_H
18#include "GeoModelKernel/GeoIntrusivePtr.h"
19#include "GeoModelKernel/GeoMaterial.h"
20#include "GeoModelKernel/GeoElement.h"
32 using MaterialMap = std::map<std::string, GeoIntrusivePtr<GeoMaterial>, std::less<>>;
42 virtual const GeoMaterial*
getMaterial(std::string_view name) = 0;
45 virtual const GeoElement*
getElement(
const std::string& name) = 0;
48 virtual const GeoElement*
getElement(
unsigned int atomicNumber) = 0;
51 virtual void addMaterial(
const std::string& space, GeoMaterial* material) = 0;
61 virtual std::ostream&
printAll(std::ostream & o)
const = 0;
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
This class holds one or more material managers and makes them storeable, under StoreGate.
virtual MaterialMapIterator begin() const =0
virtual const GeoElement * getElement(unsigned int atomicNumber)=0
StoredMaterialManager()=default
virtual std::ostream & printAll(std::ostream &o) const =0
virtual MaterialMapIterator end() const =0
virtual ~StoredMaterialManager()=default
MaterialMap::const_iterator MaterialMapIterator
virtual const GeoMaterial * getMaterial(std::string_view name)=0
virtual void addMaterial(const std::string &space, GeoMaterial *material)=0
virtual std::ostream & printAll() const =0
std::map< std::string, GeoIntrusivePtr< GeoMaterial >, std::less<> > MaterialMap
virtual const GeoElement * getElement(const std::string &name)=0