50 ->GetNavigatorForTracking()->GetWorldVolume())
56 ->GetParallelWorld(ParallelWorldName))
59 G4cout <<
" G4IStore:: ParallelWorldName = "
60 << ParallelWorldName <<
G4endl;
61 G4cout <<
" G4IStore:: fParallelWorldVolume = "
72 fGeometryCelli.clear();
86 G4cout <<
" G4IStore:: SetParallelWorldVolume " <<
G4endl;
103void G4IStore::SetInternalIterator(
const G4GeometryCell& gCell)
const
105 fCurrentIterator = fGeometryCelli.find(gCell);
113 Error(
"AddImportanceGeometryCell() - Invalid importance value given.");
117 Error(
"AddImportanceGeometryCell() - Physical volume not found!");
119 SetInternalIterator(gCell);
120 if (fCurrentIterator != fGeometryCelli.cend())
122 Error(
"AddImportanceGeometryCell() - Region already existing!");
124 fGeometryCelli[gCell] = importance;
139 Error(
"ChangeImportance() - Invalid importance value given.");
143 Error(
"ChangeImportance() - Physical volume not found!");
145 SetInternalIterator(gCell);
146 if (fCurrentIterator == fGeometryCelli.cend())
148 Error(
"ChangeImportance() - Region does not exist!");
150 fGeometryCelli[gCell] = importance;
164#ifdef G4MULTITHREADED
168 auto gCellIterator = fCurrentIterator;
169 if (gCellIterator == fGeometryCelli.cend())
171 Error(
"GetImportance() - Region does not exist!");
174 G4double importance_value = (*fCurrentIterator).second;
175#ifdef G4MULTITHREADED
178 return importance_value;
183#ifdef G4MULTITHREADED
186 SetInternalIterator(gCell);
187 auto gCellIterator = fCurrentIterator;
188 if (gCellIterator == fGeometryCelli.cend())
190 std::ostringstream err_mess;
191 err_mess <<
"GetImportance() - Region does not exist!" <<
G4endl
192 <<
"Geometry cell, " << gCell
193 <<
", not found in: " << fGeometryCelli <<
".";
194 Error(err_mess.str());
197 G4double importance_value = (*fCurrentIterator).second;
198#ifdef G4MULTITHREADED
201 return importance_value;
207#ifdef G4MULTITHREADED
214 SetInternalIterator(gCell);
215 inWorldKnown = (fCurrentIterator != fGeometryCelli.cend());
217#ifdef G4MULTITHREADED
226 if (!(aVolume == *fWorldVolume))
233void G4IStore::Error(
const G4String& msg)
const
245 if (fInstance ==
nullptr)
248 G4cout <<
"G4IStore:: Creating new MASS IStore " <<
G4endl;
262 if (fInstance ==
nullptr)
265 G4cout <<
"G4IStore:: Creating new Parallel IStore "
266 << ParallelWorldName <<
G4endl;
268 fInstance =
new G4IStore(ParallelWorldName);
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
const G4VPhysicalVolume & GetPhysicalVolume() const
virtual G4double GetImportance(const G4GeometryCell &gCell) const
void AddImportanceGeometryCell(G4double importance, const G4GeometryCell &gCell)
virtual const G4VPhysicalVolume & GetWorldVolume() const
static G4IStore * GetInstance()
void ChangeImportance(G4double importance, const G4GeometryCell &gCell)
void SetParallelWorldVolume(const G4String ¶Name)
virtual G4bool IsKnown(const G4GeometryCell &gCell) const
virtual const G4VPhysicalVolume * GetParallelWorldVolumePointer() const
G4bool IsAncestor(const G4VPhysicalVolume *p) const
G4VPhysicalVolume * GetWorldVolume() const
G4VPhysicalVolume * GetParallelWorld(const G4String &worldName)
static G4TransportationManager * GetTransportationManager()
G4Navigator * GetNavigatorForTracking() const
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const