BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
A class for all material definitions known to BDSIM. Additional materials can be added in the parser as well. More...
#include <BDSMaterials.hh>
Public Member Functions | |
void | PrepareRequiredMaterials (G4bool verbose=false) |
converts parser material list | |
void | ListMaterials () const |
output available materials | |
G4Material * | GetMaterial (G4String material) const |
Get material by name. | |
G4Element * | GetElement (const G4String &symbol) const |
Get element by name. | |
void | CacheMaterialsFromGDML (const std::map< G4String, G4Material * > &materialsGDML) |
Introduce materials loaded from GDML into this instance. | |
void | CheckForConflictingMaterialsAfterLoad (const G4String &geometryFileName, const G4String &componentName) const |
Static Public Member Functions | |
static BDSMaterials * | Instance () |
Singleton pattern access. | |
Protected Member Functions | |
void | AddMaterial (G4Material *material, G4String name) |
Add G4Material. | |
void | AddExistingMaterialAlias (const G4String &existingMaterialName, G4String alias) |
Add alias to a material. | |
void | AddMaterial (G4String name, G4double Z, G4double A, G4double density, G4State state, G4double temperature, G4double pressure) |
template<typename Type > | |
void | AddMaterial (G4String name, G4double density, G4State state, G4double temperature, G4double pressure, const std::list< G4String > &components, const std::list< Type > &componentFractions) |
G4Element * | CheckElement (const G4String &symbol) const |
Return element if defined (nullptr if not) | |
Private Member Functions | |
void | DensityCheck (G4double density, const G4String &materialName) const |
Print warning if density suspiciously high. Should be in g/cm3 in G4 units already. | |
void | PrintBasicMaterialMassFraction (G4Material *material) const |
Print mass fractions of consituents of a given material. | |
G4MaterialPropertiesTable * | CreatePropertiesTable () |
Create new properties table and store in vector. | |
void | DefineMetals () |
Methods called by constructor. | |
void | DefineSuperconductors () |
Methods called by constructor. | |
void | DefineNonMetalSolids () |
Methods called by constructor. | |
void | DefineScintillators () |
Methods called by constructor. | |
void | DefineLHCComponents () |
Methods called by constructor. | |
void | DefineLiquids () |
Methods called by constructor. | |
void | DefineGases () |
Methods called by constructor. | |
void | DefinePlasmas () |
Methods called by constructor. | |
void | DefineVacuums () |
Methods called by constructor. | |
void | AddElement (G4Element *element, const G4String &symbol) |
Add a G4Element. | |
void | AddElement (const G4String &name, const G4String &symbol, G4double itsZ, G4double itsA) |
Add a G4Element. | |
Private Attributes | |
std::set< G4String > | materialNames |
Map of materials, convention name lowercase. | |
std::map< G4String, G4Material * > | materials |
std::set< G4String > | aliasNames |
Map of other names to existing materials. To avoid double deletion. Also in lower case. | |
std::map< G4String, G4Material * > | aliases |
std::map< G4Material *, std::vector< G4String > > | materialToAliases |
Keep a vector of possible aliases for every material for print out and user feedback. | |
std::set< G4String > | externalMaterialNames |
Keep hold of externally constructed materials to indicate conflicts to the user but not to delete. | |
std::map< G4String, G4Material * > | externalMaterials |
std::map< G4String, G4Element * > | elements |
Map of elements, no lowercase convention. | |
std::vector< G4MaterialPropertiesTable * > | propertiesTables |
Material tables for storing pointers. | |
Static Private Attributes | |
static BDSMaterials * | instance = nullptr |
Singleton instance. | |
A class for all material definitions known to BDSIM. Additional materials can be added in the parser as well.
Definition at line 38 of file BDSMaterials.hh.
BDSMaterials::~BDSMaterials | ( | ) |
Definition at line 1269 of file BDSMaterials.cc.
|
protected |
Definition at line 46 of file BDSMaterials.cc.
|
private |
Add a G4Element.
Definition at line 1165 of file BDSMaterials.cc.
References AddElement().
|
private |
Add a G4Element.
Definition at line 1154 of file BDSMaterials.cc.
References CheckElement(), and elements.
Referenced by AddElement(), and PrepareRequiredMaterials().
|
protected |
Add alias to a material.
Definition at line 963 of file BDSMaterials.cc.
References aliasNames, GetMaterial(), BDS::LowerCase(), and materialToAliases.
Referenced by DefineGases(), DefineLHCComponents(), DefineLiquids(), DefineMetals(), and DefineSuperconductors().
|
protected |
Add G4Material.
Definition at line 951 of file BDSMaterials.cc.
References BDS::LowerCase(), and materialNames.
Referenced by AddMaterial(), DefineGases(), DefineLHCComponents(), DefineLiquids(), DefineMetals(), DefineNonMetalSolids(), DefinePlasmas(), DefineScintillators(), DefineSuperconductors(), DefineVacuums(), and PrepareRequiredMaterials().
|
protected |
Add materials
[in] | density | in g/cm3 |
[in] | state | solid/gas |
[in] | temp | in kelvin |
[in] | pressure | in atm |
[in] | components | list of elements |
[in] | componentsFractions | list of fractions or integers of the elements |
Definition at line 1001 of file BDSMaterials.cc.
References AddMaterial(), CheckElement(), DensityCheck(), GetMaterial(), and BDS::LowerCase().
|
protected |
Add materials
[in] | Z | atomic number |
[in] | A | mole mass in g/mole |
[in] | density | in g/cm3 |
[in] | state | solid/gas |
[in] | temp | in kelvin |
[in] | pressure | in atm |
Definition at line 978 of file BDSMaterials.cc.
References AddMaterial(), DensityCheck(), and BDS::LowerCase().
void BDSMaterials::CacheMaterialsFromGDML | ( | const std::map< G4String, G4Material * > & | materialsGDML | ) |
Introduce materials loaded from GDML into this instance.
Definition at line 1123 of file BDSMaterials.cc.
References externalMaterialNames, BDS::LowerCase(), and BDS::StartsWith().
Referenced by BDSGeometryFactoryGDML::Build().
|
protected |
Return element if defined (nullptr if not)
Definition at line 1185 of file BDSMaterials.cc.
References elements.
Referenced by AddElement(), AddMaterial(), and GetElement().
void BDSMaterials::CheckForConflictingMaterialsAfterLoad | ( | const G4String & | geometryFileName, |
const G4String & | componentName | ||
) | const |
This function will loop through the Geant4 global material table looking for any duplicate names. This implicitly implies that a material was loaded from the GDML file that is degenerate with a material already defined (e.g. from BDSIM's predefined ones or ones defined in the parser through input GMAD. Names do not conflict with any aliases in BDSIM.
Definition at line 1086 of file BDSMaterials.cc.
References BDS::LowerCase(), and BDS::StartsWith().
Referenced by BDSGeometryFactoryGDML::Build().
|
private |
Create new properties table and store in vector.
Definition at line 1380 of file BDSMaterials.cc.
References propertiesTables.
Referenced by DefineGases(), DefineLiquids(), DefineNonMetalSolids(), DefineScintillators(), and DefineVacuums().
|
private |
Methods called by constructor.
Definition at line 846 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), AddMaterial(), CreatePropertiesTable(), GetElement(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 722 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 822 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), AddMaterial(), CreatePropertiesTable(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 67 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 246 of file BDSMaterials.cc.
References AddMaterial(), CreatePropertiesTable(), and GetElement().
|
private |
Methods called by constructor.
Definition at line 899 of file BDSMaterials.cc.
References AddMaterial().
|
private |
Methods called by constructor.
Definition at line 404 of file BDSMaterials.cc.
References AddMaterial(), CreatePropertiesTable(), GetElement(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 237 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 909 of file BDSMaterials.cc.
References AddMaterial(), CreatePropertiesTable(), GetElement(), GetMaterial(), BDSParser::GetOptions(), BDSParser::Instance(), and BDSParser::IsInitialised().
|
private |
Print warning if density suspiciously high. Should be in g/cm3 in G4 units already.
Definition at line 1174 of file BDSMaterials.cc.
Referenced by AddMaterial().
G4Element * BDSMaterials::GetElement | ( | const G4String & | symbol | ) | const |
Get element by name.
Definition at line 1198 of file BDSMaterials.cc.
References CheckElement().
Referenced by DefineGases(), DefineNonMetalSolids(), DefineScintillators(), and DefineVacuums().
G4Material * BDSMaterials::GetMaterial | ( | G4String | material | ) | const |
Get material by name.
Definition at line 1036 of file BDSMaterials.cc.
References aliasNames, externalMaterialNames, ListMaterials(), BDS::LowerCase(), and materialNames.
Referenced by AddExistingMaterialAlias(), AddMaterial(), BDSAcceleratorComponent::BDSAcceleratorComponent(), BDSBeamPipeInfo::BDSBeamPipeInfo(), BDSTunnelInfo::BDSTunnelInfo(), BDSUndulator::Build(), BDSGeometryFactorySQL::Build(), BDSBeamPipeFactoryBase::BuildLogicalVolumes(), BDSBeamPipeFactoryLHCDetailed::BuildLogicalVolumes(), BDSTunnelFactoryBase::BuildLogicalVolumes(), BDSMultilayerScreen::BuildMotherVolume(), BDSDetectorConstruction::BuildWorld(), BDSBLMFactory::CommonConstruction(), BDSMagnetOuterFactoryPolesBase::CommonConstructor(), BDSMagnetOuterFactoryCylindrical::CommonFinalConstructor(), BDSBeamPipeFactoryLHCDetailed::CreateBeamPipe(), BDSMagnetOuterFactory::CreateContainerForExternal(), BDSMagnetOuterFactoryPolesBase::CreateEndPiece(), BDSMagnetOuterFactoryLHC::CreateLHCDipole(), BDSMagnetOuterFactoryBase::CreateLogicalVolumes(), BDSMagnetOuterFactoryPolesSquare::CreateLogicalVolumes(), BDSMagnetOuterFactoryPolesBase::CreateLogicalVolumesCoil(), BDSMagnetOuterFactoryLHC::CreateQuadrupole(), DefineGases(), DefineLiquids(), DefineScintillators(), DefineVacuums(), BDSMagnetOuterFactoryPolesBase::DipoleCommonPreConstruction(), BDSLaserCompton::GetMeanFreePath(), ListMaterials(), BDSComponentFactory::PrepareCavityModelInfo(), BDSComponentFactory::PrepareCavityModels(), BDSComponentFactory::PrepareCrystals(), BDSComponentFactory::PrepareMagnetOuterInfo(), BDSComponentFactory::PrepareMaterial(), and BDSComponentFactory::PrepareVacuumMaterial().
|
static |
Singleton pattern access.
Definition at line 39 of file BDSMaterials.cc.
References instance.
Referenced by BDSAcceleratorComponent::BDSAcceleratorComponent(), BDSBeamPipeInfo::BDSBeamPipeInfo(), BDSScorerInfo::BDSScorerInfo(), BDSTunnelInfo::BDSTunnelInfo(), BDSUndulator::Build(), BDSGeometryFactoryGDML::Build(), BDSGeometryFactorySQL::Build(), BDSLaserWire::BuildContainerLogicalVolume(), BDSBeamPipeFactoryBase::BuildLogicalVolumes(), BDSBeamPipeFactoryLHCDetailed::BuildLogicalVolumes(), BDSTunnelFactoryBase::BuildLogicalVolumes(), BDSMultilayerScreen::BuildMotherVolume(), BDSDetectorConstruction::BuildWorld(), BDSBLMFactory::CommonConstruction(), BDSMagnetOuterFactoryPolesBase::CommonConstructor(), BDSMagnetOuterFactoryCylindrical::CommonFinalConstructor(), BDSBeamPipeFactoryLHCDetailed::CreateBeamPipe(), BDSMagnetOuterFactory::CreateContainerForExternal(), BDSMagnetOuterFactoryPolesBase::CreateEndPiece(), BDSMagnetOuterFactoryLHC::CreateLHCDipole(), BDSMagnetOuterFactoryBase::CreateLogicalVolumes(), BDSMagnetOuterFactoryPolesSquare::CreateLogicalVolumes(), BDSMagnetOuterFactoryPolesBase::CreateLogicalVolumesCoil(), BDSMagnetOuterFactoryLHC::CreateQuadrupole(), BDSMagnetOuterFactoryPolesBase::DipoleCommonPreConstruction(), BDSLaserCompton::GetMeanFreePath(), BDSIM::Initialise(), BDSIMLink::Initialise(), BDSSampler::MakeMaterialValidForUseInMassWorld(), BDSExecOptions::Parse(), BDSComponentFactory::PrepareCavityModelInfo(), BDSComponentFactory::PrepareCavityModelInfoForElement(), BDSComponentFactory::PrepareCavityModels(), BDSComponentFactory::PrepareCrystals(), BDSComponentFactory::PrepareMagnetOuterInfo(), BDSComponentFactory::PrepareMaterial(), BDSComponentFactory::PrepareVacuumMaterial(), BDSIM::~BDSIM(), and BDSIMLink::~BDSIMLink().
void BDSMaterials::ListMaterials | ( | ) | const |
output available materials
Definition at line 1216 of file BDSMaterials.cc.
References elements, GetMaterial(), materialToAliases, and PrintBasicMaterialMassFraction().
Referenced by GetMaterial(), and BDSExecOptions::Parse().
void BDSMaterials::PrepareRequiredMaterials | ( | G4bool | verbose = false | ) |
converts parser material list
Definition at line 1290 of file BDSMaterials.cc.
References AddElement(), AddMaterial(), BDSParser::GetAtoms(), BDSParser::GetMaterials(), and BDSParser::Instance().
Referenced by BDSIM::Initialise(), and BDSIMLink::Initialise().
|
private |
Print mass fractions of consituents of a given material.
Definition at line 1206 of file BDSMaterials.cc.
Referenced by ListMaterials().
|
private |
Definition at line 145 of file BDSMaterials.hh.
|
private |
Map of other names to existing materials. To avoid double deletion. Also in lower case.
Definition at line 144 of file BDSMaterials.hh.
Referenced by AddExistingMaterialAlias(), and GetMaterial().
|
private |
Map of elements, no lowercase convention.
Definition at line 152 of file BDSMaterials.hh.
Referenced by AddElement(), CheckElement(), and ListMaterials().
|
private |
Keep hold of externally constructed materials to indicate conflicts to the user but not to delete.
Definition at line 149 of file BDSMaterials.hh.
Referenced by CacheMaterialsFromGDML(), and GetMaterial().
|
private |
Definition at line 150 of file BDSMaterials.hh.
|
staticprivate |
|
private |
Map of materials, convention name lowercase.
Definition at line 141 of file BDSMaterials.hh.
Referenced by AddMaterial(), and GetMaterial().
|
private |
Definition at line 142 of file BDSMaterials.hh.
|
private |
Keep a vector of possible aliases for every material for print out and user feedback.
Definition at line 147 of file BDSMaterials.hh.
Referenced by AddExistingMaterialAlias(), and ListMaterials().
|
private |
Material tables for storing pointers.
Definition at line 154 of file BDSMaterials.hh.
Referenced by CreatePropertiesTable().