|
GGEMS
1.1
GPU GEant4-based Monte Carlo Simulations
|
Go to the documentation of this file. 1 #ifndef GUARD_GGEMS_MATERIALS_GGEMSMATERIALSDATABASEMANAGER_HH
2 #define GUARD_GGEMS_MATERIALS_GGEMSMATERIALSDATABASEMANAGER_HH
35 #pragma warning(disable: 4251) // Deleting warning exporting STL members!!!
39 #include <unordered_map>
72 typedef std::unordered_map<std::string, GGEMSSingleMaterial>
MaterialUMap;
136 void SetMaterialsDatabase(std::string
const& filename);
142 void PrintAvailableChemicalElements(
void)
const;
148 void PrintAvailableMaterials(
void)
const;
157 if (materials_.empty())
return false;
169 MaterialUMap::const_iterator iter = materials_.find(material_name);
172 if (iter == materials_.end()) {
173 std::ostringstream oss(std::ostringstream::out);
174 oss <<
"Material '" << material_name <<
"' not found in the database!!!" << std::endl;
189 ChemicalElementUMap::const_iterator iter = chemical_elements_.find(chemical_element_name);
192 if (iter == chemical_elements_.end()) {
193 std::ostringstream oss(std::ostringstream::out);
194 oss <<
"Chemical element '" << chemical_element_name <<
"' not found in the database!!!" << std::endl;
207 GGfloat GetRadiationLength(std::string
const& material)
const;
226 return static_cast<GGfloat>(tmp_value_double);
241 void LoadMaterialsDatabase(std::string
const& filename);
247 void LoadChemicalElements(
void);
259 void AddChemicalElements(std::string
const& element_name,
GGuchar const& element_Z,
GGfloat const& element_M,
GGfloat const& element_I,
GGchar const& state,
GGint const& index_density_correction);
295 #endif // End of GUARD_GGEMS_PHYSICS_GGEMSMATERIALSDATABASEMANAGER_HH
GGfloat mean_excitation_energy_I_
Different namespaces storing constants useful for GGEMS.
GGEMSMaterialsDatabaseManager(GGEMSMaterialsDatabaseManager const &&material_manager)=delete
Avoid copy of the class by rvalue reference.
GGEMSMaterialsDatabaseManager & operator=(GGEMSMaterialsDatabaseManager const &&material_manager)=delete
Avoid copy of the class by rvalue reference.
GGEMS structure managing a specific material.
std::unordered_map< std::string, GGEMSChemicalElement > ChemicalElementUMap
GGEMSMaterialsDatabaseManager & operator=(GGEMSMaterialsDatabaseManager const &material_manager)=delete
Avoid assignement of the class by reference.
std::vector< std::string > chemical_element_name_
bool IsReady(void) const
check if the material manager is ready
#define __constant
__constant is known for OpenCL, but for C++ we define __constant as a constexpr
GGEMSMaterialsDatabaseManager(GGEMSMaterialsDatabaseManager const &material_manager)=delete
Avoid copy of the class by reference.
static GGEMSMaterialsDatabaseManager & GetInstance(void)
Create at first time the Singleton.
GGEMSMaterialsDatabaseManager * get_instance_materials_manager(void)
Get the GGEMSMaterialsDatabaseManager pointer for python user.
std::vector< GGfloat > mixture_f_
GGfloat GetAtomicNumberDensity(std::string const &material, GGsize const &index) const
Compute the atomic number density of an element in a material.
GGEMS structure managing a specific chemical element.
void set_materials_ggems_materials_manager(GGEMSMaterialsDatabaseManager *ggems_materials_manager, char const *filename)
enter the material database to GGEMS
GGint index_density_correction_
GGEMSChemicalElement GetChemicalElement(std::string const &chemical_element_name) const
get the chemical element
void print_available_materials_ggems_materials_manager(GGEMSMaterialsDatabaseManager *ggems_materials_manager)
print all available materials
__constant GGfloat AVOGADRO
void print_available_chemical_elements_ggems_materials_manager(GGEMSMaterialsDatabaseManager *ggems_materials_manager)
print all available chemical elements
GGEMS class managing the material database.
std::unordered_map< std::string, GGEMSSingleMaterial > MaterialUMap
GGEMSSingleMaterial GetMaterial(std::string const &material_name) const
get the material
void ThrowException(std::string const &class_name, std::string const &method_name, std::string const &message)
Throw a C++ exception.
ChemicalElementUMap chemical_elements_