21#ifndef VGM_I_MATERIAL_FACTORY_H
22#define VGM_I_MATERIAL_FACTORY_H
56 const std::string& name,
int z,
int n,
double a = 0.) = 0;
66 const std::string& name,
const std::string& symbol,
double z,
double a) = 0;
141 double temperature,
double pressure) = 0;
181 VGM::IMaterial* material,
int nofParameters,
double* parameters) = 0;
188 virtual std::string
Name()
const = 0;
The VGM interface to elements.
The VGM interface to elements.
The VGM interface to material factory providing functions for material conversions.
virtual IMaterial * CreateMaterial(const std::string &name, double density, const VGM::ElementVector &elements, const VGM::MassFractionVector &fractions)=0
Create a compound material.
virtual const IMaterial * Material(const std::string &name) const =0
Return material specified by name.
virtual const IElement * Element(const std::string &name) const =0
Return element specified by name.
virtual const IsotopeStore & Isotopes() const =0
Return the store of isotopes.
virtual void PrintMedia() const =0
Print all media.
virtual bool Export(IMaterialFactory *factory) const =0
Export materials to the specified material factory.
virtual IElement * CreateElement(const std::string &name, const std::string &symbol, double z, double a)=0
Create a chemical element.
virtual int Debug() const =0
Return the debug level.
virtual IElement * CreateElement(const std::string &name, const std::string &symbol, const VGM::IsotopeVector &isotopes, const VGM::RelAbundanceVector &relAbundances)=0
Create a chemical element.
virtual IElement * CreateElement(int z, bool isotopes=true)=0
Create a chemical element.
virtual const ElementStore & Elements() const =0
Return the store of elements.
virtual const MediumStore & Media() const =0
Return the store of media.
virtual const IMedium * Medium(const std::string &name) const =0
Return medium specified by name.
virtual IMedium * CreateMedium(const std::string &name, int mediumId, VGM::IMaterial *material, int nofParameters, double *parameters)=0
Create a tracking medium.
virtual IMaterial * CreateMaterial(const std::string &name, double density, const VGM::ElementVector &elements, const VGM::AtomCountVector &atomCounts)=0
Create a compound material.
virtual void PrintElements() const =0
Print all elements.
virtual std::string Name() const =0
Return the name of this factory.
virtual IMaterial * CreateMaterial(const std::string &name, double density, VGM::IElement *element, double radlen, double intlen)=0
Create a material.
virtual void PrintMaterials() const =0
Print all materials.
virtual bool Import()=0
Import native materials.
virtual ~IMaterialFactory()
virtual const MaterialStore & Materials() const =0
Return the store of materials.
virtual IMaterial * CreateMaterial(const std::string &name, double density, const VGM::ElementVector &elements, const VGM::AtomCountVector &atomCounts, VGM::MaterialState state, double temperature, double pressure)=0
Create a compound material.
virtual IMaterial * CreateMaterial(const std::string &name, double density, const VGM::ElementVector &elements, const VGM::MassFractionVector &fractions, VGM::MaterialState state, double temperature, double pressure)=0
Create a compound material.
virtual void PrintIsotopes() const =0
Print all isotopes.
virtual const IIsotope * Isotope(const std::string &name) const =0
Return isotope specified by name.
virtual void SetDebug(int debug)=0
Set the debug level.
virtual IIsotope * CreateIsotope(const std::string &name, int z, int n, double a=0.)=0
Create a chemical isotope.
virtual IMaterial * CreateMaterial(const std::string &name, double density, VGM::IElement *element, double radlen, double intlen, VGM::MaterialState state, double temperature, double pressure)=0
Create a compound material.
The VGM interface to materials.
The VGM interface to tracking medium.
std::vector< IMaterial * > MaterialStore
std::vector< double > RelAbundanceVector
std::vector< int > AtomCountVector
std::vector< double > MassFractionVector
std::vector< IElement * > ElementVector
std::vector< IMedium * > MediumStore
std::vector< IIsotope * > IsotopeStore
std::vector< IIsotope * > IsotopeVector
std::vector< IElement * > ElementStore