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 More... | |
void | ListMaterials () const |
output available materials More... | |
G4Material * | GetMaterial (G4String material) const |
Get material by name. More... | |
G4Element * | GetElement (const G4String &symbol) const |
Get element by name. More... | |
void | CacheMaterialsFromGDML (const std::map< G4String, G4Material * > &materialsGDML, const G4String &prepend, G4bool prependWasUsed) |
Static Public Member Functions | |
static BDSMaterials * | Instance () |
Singleton pattern access. More... | |
Protected Member Functions | |
void | AddMaterial (G4Material *material, G4String name) |
Add G4Material. More... | |
void | AddExistingMaterialAlias (const G4String &existingMaterialName, G4String alias) |
Add alias to a material. More... | |
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) More... | |
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. More... | |
void | PrintBasicMaterialMassFraction (G4Material *material) const |
Print mass fractions of consituents of a given material. More... | |
G4MaterialPropertiesTable * | CreatePropertiesTable () |
Create new properties table and store in vector. More... | |
void | DefineMetals () |
Methods called by constructor. More... | |
void | DefineSuperconductors () |
Methods called by constructor. More... | |
void | DefineNonMetalSolids () |
Methods called by constructor. More... | |
void | DefineScintillators () |
Methods called by constructor. More... | |
void | DefineLHCComponents () |
Methods called by constructor. More... | |
void | DefineLiquids () |
Methods called by constructor. More... | |
void | DefineGases () |
Methods called by constructor. More... | |
void | DefinePlasmas () |
Methods called by constructor. More... | |
void | DefineVacuums () |
Methods called by constructor. More... | |
void | AddElement (G4Element *element, const G4String &symbol) |
Add a G4Element. More... | |
void | AddElement (const G4String &name, const G4String &symbol, G4double itsZ, G4double itsA) |
Add a G4Element. More... | |
Private Attributes | |
std::map< G4String, G4Material * > | materials |
<ap of materials, convention name lowercase. More... | |
std::map< G4String, G4Material * > | aliases |
Maps of other names to existing materials. To avoid double deletion. Also in lower case. More... | |
std::map< G4String, G4int > | possibleDuplicates |
std::map< G4String, G4Element * > | elements |
Map of elements, no lowercase convention. More... | |
std::vector< G4MaterialPropertiesTable * > | propertiesTables |
Material tables for storing pointers. More... | |
Static Private Attributes | |
static BDSMaterials * | instance = nullptr |
Singleton instance. More... | |
A class for all material definitions known to BDSIM. Additional materials can be added in the parser as well.
Definition at line 37 of file BDSMaterials.hh.
BDSMaterials::~BDSMaterials | ( | ) |
Definition at line 1212 of file BDSMaterials.cc.
|
protected |
Definition at line 45 of file BDSMaterials.cc.
|
private |
Add a G4Element.
Definition at line 1123 of file BDSMaterials.cc.
References AddElement().
|
private |
Add a G4Element.
Definition at line 1112 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 aliases, GetMaterial(), and BDS::LowerCase().
Referenced by DefineGases(), DefineLHCComponents(), DefineLiquids(), DefineMetals(), and DefineSuperconductors().
|
protected |
Add G4Material.
Definition at line 950 of file BDSMaterials.cc.
References BDS::LowerCase(), and materials.
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 994 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 971 of file BDSMaterials.cc.
References AddMaterial(), DensityCheck(), and BDS::LowerCase().
void BDSMaterials::CacheMaterialsFromGDML | ( | const std::map< G4String, G4Material * > & | materialsGDML, |
const G4String & | prepend, | ||
G4bool | prependWasUsed | ||
) |
Introduce materials loaded from GDML into this instance. If a prepend was used to load the material then it's cached both with and without it and the once without the prepend is flagged as a possible dupliate. If it's defined more than one without the prepend, then an exception will be thrown as the search is ambiguous.
Definition at line 1087 of file BDSMaterials.cc.
References aliases, BDS::LowerCase(), materials, possibleDuplicates, and BDS::StartsWith().
Referenced by BDSGeometryFactoryGDML::Build().
|
protected |
Return element if defined (nullptr if not)
Definition at line 1143 of file BDSMaterials.cc.
References elements.
Referenced by AddElement(), AddMaterial(), and GetElement().
|
private |
Create new properties table and store in vector.
Definition at line 1318 of file BDSMaterials.cc.
References propertiesTables.
Referenced by DefineGases(), DefineLiquids(), DefineNonMetalSolids(), DefineScintillators(), and DefineVacuums().
|
private |
Methods called by constructor.
Definition at line 845 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), AddMaterial(), CreatePropertiesTable(), GetElement(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 721 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 821 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), AddMaterial(), CreatePropertiesTable(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 66 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 245 of file BDSMaterials.cc.
References AddMaterial(), CreatePropertiesTable(), and GetElement().
|
private |
Methods called by constructor.
Definition at line 898 of file BDSMaterials.cc.
References AddMaterial().
|
private |
Methods called by constructor.
Definition at line 403 of file BDSMaterials.cc.
References AddMaterial(), CreatePropertiesTable(), GetElement(), and GetMaterial().
|
private |
Methods called by constructor.
Definition at line 236 of file BDSMaterials.cc.
References AddExistingMaterialAlias(), and AddMaterial().
|
private |
Methods called by constructor.
Definition at line 908 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 1132 of file BDSMaterials.cc.
Referenced by AddMaterial().
G4Element * BDSMaterials::GetElement | ( | const G4String & | symbol | ) | const |
Get element by name.
Definition at line 1156 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 1029 of file BDSMaterials.cc.
References aliases, ListMaterials(), BDS::LowerCase(), materials, and possibleDuplicates.
Referenced by AddExistingMaterialAlias(), AddMaterial(), BDSAcceleratorComponent::BDSAcceleratorComponent(), BDSBeamPipeInfo::BDSBeamPipeInfo(), BDSTunnelInfo::BDSTunnelInfo(), BDSUndulator::Build(), BDSGeometryFactorySQL::Build(), BDSBeamPipeFactoryBase::BuildLogicalVolumes(), BDSBeamPipeFactoryLHCDetailed::BuildLogicalVolumes(), BDSTunnelFactoryBase::BuildLogicalVolumes(), BDSMultilayerScreen::BuildMotherVolume(), BDS::BuildPlacementGeometry(), 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 38 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(), BDS::BuildPlacementGeometry(), BDSDetectorConstruction::BuildWorld(), BDSSampler::CommonConstruction(), 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(), 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 1174 of file BDSMaterials.cc.
References elements, GetMaterial(), materials, and PrintBasicMaterialMassFraction().
Referenced by GetMaterial(), and BDSExecOptions::Parse().
void BDSMaterials::PrepareRequiredMaterials | ( | G4bool | verbose = false | ) |
converts parser material list
Definition at line 1228 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 1164 of file BDSMaterials.cc.
Referenced by ListMaterials().
|
private |
Maps of other names to existing materials. To avoid double deletion. Also in lower case.
Definition at line 139 of file BDSMaterials.hh.
Referenced by AddExistingMaterialAlias(), CacheMaterialsFromGDML(), and GetMaterial().
|
private |
Map of elements, no lowercase convention.
Definition at line 144 of file BDSMaterials.hh.
Referenced by AddElement(), CheckElement(), and ListMaterials().
|
staticprivate |
|
private |
<ap of materials, convention name lowercase.
Definition at line 137 of file BDSMaterials.hh.
Referenced by AddMaterial(), CacheMaterialsFromGDML(), GetMaterial(), and ListMaterials().
|
private |
Map of names of loaded materials externally to the number of times loaded for possible duplicates.
Definition at line 142 of file BDSMaterials.hh.
Referenced by CacheMaterialsFromGDML(), and GetMaterial().
|
private |
Material tables for storing pointers.
Definition at line 146 of file BDSMaterials.hh.
Referenced by CreatePropertiesTable().