46 #define G4MT_fsmanager ((subInstanceManager.offset[instanceID]).fFastSimulationManager) 
   47 #define G4MT_rsaction ((subInstanceManager.offset[instanceID]).fRegionalSteppingAction) 
   69   : 
fName(pName), fRegionMod(true), fCut(0), fUserInfo(0), fUserLimits(0),
 
   70     fFieldManager(0), fWorldPhys(0),
 
   71     fInMassGeometry(false), fInParallelGeometry(false)
 
   81     std::ostringstream message;
 
   82     message << 
"The region has NOT been registered !" << 
G4endl 
   83             << 
"          Region " << pName << 
" already existing in store !" 
  100   : 
fName(
""), fRegionMod(true), fCut(0), fUserInfo(0), fUserLimits(0),
 
  101     fFieldManager(0), fWorldPhys(0),
 
  102     fInMassGeometry(false), fInParallelGeometry(false)
 
  179     std::ostringstream message;
 
  180     message << 
"Logical volume <" << lv->
GetName() << 
">" << 
G4endl 
  181             << 
"does not have a valid material pointer." << 
G4endl 
  182             << 
"A logical volume belonging to the (tracking) world volume " 
  183             << 
"must have a valid material.";
 
  184     G4Exception(
"G4Region::ScanVolumeTree()", 
"GeomMgt0002",
 
  189     currentRegion = 
this;
 
  205   if(noDaughters==0) 
return;
 
  218       for (
size_t mat=0; mat<matNo; mat++)
 
  223           std::ostringstream message;
 
  224           message << 
"The parameterisation for the physical volume <" 
  226                   << 
"does not return a valid material pointer." << 
G4endl 
  227                   << 
"A volume belonging to the (tracking) world volume must " 
  228                   << 
"have a valid material.";
 
  229           G4Exception(
"G4Region::ScanVolumeTree()", 
"GeomMgt0002",
 
  243       for (
size_t rep=0; rep<repNo; rep++)
 
  248           std::ostringstream message;
 
  249           message << 
"The parameterisation for the physical volume <" 
  251                   << 
"does not return a valid material pointer." << 
G4endl 
  252                   << 
"A volume belonging to the (tracking) world volume must " 
  253                   << 
"have a valid material.";
 
  254           G4Exception(
"G4Region::ScanVolumeTree()", 
"GeomMgt0002",
 
  270     for (
size_t i=0; i<noDaughters; i++)
 
  294   G4RootLVList::iterator 
pos;
 
  323   G4RootLVList::iterator 
pos;
 
  369   G4RootLVList::iterator pLV;
 
  401   if (currLog->
GetRegion()==
this) {
return true;}
 
  430       std::ostringstream message;
 
  431       message << 
"Region <" << 
fName << 
"> belongs to more than" 
  432               << 
" one parent region !" << 
G4endl 
  433               << 
"A region cannot belong to more than one direct parent region," 
  435               << 
"to have fast-simulation assigned.";
 
  436       G4Exception(
"G4Region::ClearFastSimulationManager()",
 
  455   G4Region* parent = 0; unique = 
true;
 
  457   G4LogicalVolumeStore::iterator lvItr;
 
  461   for(lvItr=lvStore->begin(); lvItr!=lvStore->end(); lvItr++)
 
  463     G4int nD = (*lvItr)->GetNoDaughters();
 
  464     G4Region* aR = (*lvItr)->GetRegion();
 
  468     for(
G4int iD=0; iD<nD; iD++)
 
  470       if((*lvItr)->GetDaughter(iD)->GetLogicalVolume()->GetRegion()==
this)
 
  474           if(parent!=aR) { unique = 
false; }
 
virtual G4VVolumeMaterialScanner * GetMaterialScanner()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const 
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
static G4GEOM_DLL G4RegionManager subInstanceManager
G4Material * GetMaterial() const 
G4UserSteppingAction * GetRegionalSteppingAction() const 
void AddRootLogicalVolume(G4LogicalVolume *lv)
void SetRegionRootFlag(G4bool rreg)
G4VUserRegionInformation * fUserInfo
G4VPhysicalVolume * GetDaughter(const G4int i) const 
G4Region * GetRegion() const 
G4int CreateSubInstance()
static void DeRegister(G4Region *pRegion)
G4VPhysicalVolume * fWorldPhys
virtual G4int GetNumberOfMaterials() const =0
static G4RegionStore * GetInstance()
void SetFastSimulationManager(G4FastSimulationManager *fsm)
void SetRegion(G4Region *reg)
virtual G4Material * GetMaterial(G4int idx) const =0
G4Region(const G4String &name)
void ScanVolumeTree(G4LogicalVolume *lv, G4bool region)
const G4String & GetName() const 
G4bool IsRootRegion() const 
virtual G4VPVParameterisation * GetParameterisation() const =0
void AddMaterial(G4Material *aMaterial)
static G4LogicalVolumeStore * GetInstance()
void ClearFastSimulationManager()
G4int GetNoDaughters() const 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual G4bool IsParameterised() const =0
G4bool BelongsTo(G4VPhysicalVolume *thePhys) const 
G4LogicalVolume * GetLogicalVolume() const 
void SetWorld(G4VPhysicalVolume *wp)
G4Region * GetParentRegion(G4bool &unique) const 
const G4Material * GetBaseMaterial() const 
virtual G4int GetMultiplicity() const 
const G4String & GetName() const 
void UpdateMaterialList()
void SetRegionalSteppingAction(G4UserSteppingAction *rusa)
G4MaterialList fMaterials
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
static const G4RegionManager & GetSubInstanceManager()
static void Register(G4Region *pRegion)
G4FastSimulationManager * GetFastSimulationManager() const 
static const G4double pos
G4RootLVList fRootVolumes