5#ifndef GEOMODELINTERFACES_STOREDMATERIALMANAGER_H
6#define GEOMODELINTERFACES_STOREDMATERIALMANAGER_H
22#include "GeoModelKernel/GeoIntrusivePtr.h"
23#include "GeoModelKernel/GeoMaterial.h"
24#include "GeoModelKernel/GeoElement.h"
30 using MaterialMap = std::map<std::string, GeoIntrusivePtr<GeoMaterial>>;
40 virtual const GeoMaterial*
getMaterial(
const std::string& name) = 0;
43 virtual const GeoElement*
getElement(
const std::string& name) = 0;
46 virtual const GeoElement*
getElement(
unsigned int atomicNumber) = 0;
49 virtual void addMaterial(
const std::string& space, GeoMaterial* material) = 0;
59 virtual std::ostream&
printAll(std::ostream & o=std::cout)
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 MaterialMapIterator end() const =0
virtual ~StoredMaterialManager()=default
MaterialMap::const_iterator MaterialMapIterator
virtual std::ostream & printAll(std::ostream &o=std::cout) const =0
virtual void addMaterial(const std::string &space, GeoMaterial *material)=0
virtual const GeoElement * getElement(const std::string &name)=0
std::map< std::string, GeoIntrusivePtr< GeoMaterial > > MaterialMap
virtual const GeoMaterial * getMaterial(const std::string &name)=0