80 G4String ErrMessage =
"Solid already exists... " + wl[1];
81 G4Exception(
"G4tgrVolumeMgr::CreateSolid()",
"InvalidSetup",
85 std::vector<G4String> wlc = wl;
86 if( bVOLUtag ) { wlc.pop_back(); }
89 for(
size_t ii = 0; ii < wl2.length(); ii++ )
91 wl2[ii] = toupper( wl2[ii] );
93 if( (wl2 ==
"UNION") || (wl2 ==
"SUBTRACTION") || (wl2 ==
"INTERSECTION") )
113 G4String ErrMessage =
"Cannot be two solids with the same name... "
115 G4Exception(
"G4tgrVolumeMgr::RegisterMe()",
"InvalidSetup",
127 G4String ErrMessage =
"Cannot unregister a solid that is not registered... "
129 G4Exception(
"G4tgrSolidMgr::unRegisterMe()",
"InvalidSetup",
145 G4String ErrMessage =
"Cannot be two volumes with the same name... "
147 G4Exception(
"G4tgrVolumeMgr::RegisterMe()",
"InvalidSetup",
157 std::vector<G4tgrVolume*>::iterator ite;
160 if((*ite) == vol ) {
break; }
164 G4String ErrMessage =
"Cannot unregister a volume not registered... "
166 G4Exception(
"G4tgrVolumeMgr::unRegisterMe()",
"InvalidSetup",
201 G4String ErrMessage =
"Solid not found... " + volname;
202 G4Exception(
"G4tgrVolumeMgr::FindSolid()",
"InvalidSetup",
208 vol =
const_cast<G4tgrSolid*
>((*svite).second);
231 G4String ErrMessage =
"Volume not found... " + volname;
232 G4Exception(
"G4tgrVolumeMgr::FindVolume()",
"InvalidSetup",
237 G4String WarMessage =
"Volume does not exists... " + volname;
238 G4Exception(
"G4tgrVolumeMgr::FindVolume()",
"SearchFailed",
251 std::vector<G4tgrVolume*>
254 std::vector<G4tgrVolume*> vols;
256 G4mapsvol::iterator svite;
262 vols.push_back(const_cast<G4tgrVolume*>((*svite).second) );
266 if( vols.size() == 0 )
275 G4String ErrMessage =
"Volume not found... " + volname;
276 G4Exception(
"G4tgrVolumeMgr::FindVolumes()",
"InvalidSetup",
281 G4String WarMessage =
"Volume does not exists... " + volname;
282 G4Exception(
"G4tgrVolumeMgr::FindVolumes()",
"SearchFailed",
298 G4mapsvol::const_iterator itetv;
306 G4cout <<
" G4tgrVolumeMgr::GetTopVolume() - Vol: "
307 << vol->
GetName() <<
" no place = "
318 G4cout <<
" G4tgrVolumeMgr::GetTopVolume() - Vol: "
319 << vol->
GetName()<<
" N place = "
324 if ( (topVol != 0) && (topVol != vol)
325 && (topVol->
GetType() !=
"VOLDivision")
326 && (vol->
GetType() !=
"VOLDivision") )
329 "Two world volumes found, second will be taken",
JustWarning,
330 (
G4String(
"Both volumes are at the top of a hierarchy: ")
341 std::pair<G4mmapspl::iterator, G4mmapspl::iterator>
344 std::pair<G4mmapspl::iterator, G4mmapspl::iterator> dite;
353 G4cout <<
" @@@@@@@@@@@@@@@@ DUMPING G4tgrVolume's Tree " <<
G4endl;
364 unsigned int leafDepth)
366 for(
size_t ii=0; ii < leafDepth; ii++ )
371 <<
" copy No " << copyNo <<
G4endl;
374 std::pair<G4mmapspl::iterator, G4mmapspl::iterator> children
376 G4mmapspl::const_iterator cite;
379 for( cite = children.first; cite != children.second; cite++ )
395 G4cout <<
" @@@@@@@@@@@@@@@@@@ Dumping Detector Summary " <<
G4endl;
396 G4cout <<
" @@@ Geometry built inside world volume: "
398 G4cout <<
" Number of G4tgrVolume's: "
400 G4mapsvol::const_iterator cite;
401 unsigned int nPlace = 0;
405 nPlace += ((*cite).second)->GetPlacements().size();
407 G4cout <<
" Number of G4tgrPlace's: " << nPlace <<
G4endl;
410 G4cout <<
" Number of G4tgrIsotope's: "
412 G4cout <<
" Number of G4tgrElement's: "
414 G4cout <<
" Number of G4tgrMaterial's: "
418 G4cout <<
" Number of G4tgrRotationMatrix's: "
static G4ThreadLocal G4tgrVolumeMgr * theInstance
static G4int GetVerboseLevel()
G4mapsvol theG4tgrVolumeMap
std::vector< G4tgrVolume * > theG4tgrVolumeList
std::vector< G4tgrVolume * > FindVolumes(const G4String &volname, G4bool exists)
void DumpVolumeLeaf(const G4tgrVolume *vol, unsigned int copyNo, unsigned int leafDepth)
static G4tgrMaterialFactory * GetInstance()
const G4mstgrisot & GetIsotopeList() const
G4mapssol theG4tgrSolidMap
G4tgrSolid * CreateSolid(const std::vector< G4String > &wl, G4bool bVOLUtag)
unsigned int GetCopyNo() const
void RegisterParentChild(const G4String &parentName, const G4tgrPlace *pl)
const G4tgrVolume * GetTopVolume()
const std::vector< G4tgrPlace * > GetPlacements() const
void UnRegisterMe(G4tgrSolid *vol)
const G4String & GetName() const
std::vector< G4tgrRotationMatrix * > GetRotMatList() const
void DumpMaterialList() const
void DumpIsotopeList() const
const G4mstgrelem & GetElementList() const
static G4tgrRotationMatrixFactory * GetInstance()
G4GLOB_DLL std::ostream G4cerr
G4tgrSolid * FindSolid(const G4String &name, G4bool exists=false)
void RegisterMe(G4tgrSolid *vol)
G4tgrVolume * GetVolume() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
const G4String & GetName() const
std::pair< G4mmapspl::iterator, G4mmapspl::iterator > GetChildren(const G4String &name)
static G4bool AreWordsEquivalent(const G4String &word1, const G4String &word2)
G4GLOB_DLL std::ostream G4cout
G4mmapspl theG4tgrVolumeTree
void DumpElementList() const
const G4String & GetType() const
static G4tgrVolumeMgr * GetInstance()
G4tgrVolume * FindVolume(const G4String &volname, G4bool exists=false)
const G4mstgrmate & GetMaterialList() const