52 : fSolid(0),fSensitiveDetector(0),fFieldManager(0),
53 fMaterial(0),fMass(0.),fCutsCouple(0)
63 #define G4MT_solid ((subInstanceManager.offset[instanceID]).fSolid) 64 #define G4MT_sdetector ((subInstanceManager.offset[instanceID]).fSensitiveDetector) 65 #define G4MT_fmanager ((subInstanceManager.offset[instanceID]).fFieldManager) 66 #define G4MT_material ((subInstanceManager.offset[instanceID]).fMaterial) 67 #define G4MT_mass ((subInstanceManager.offset[instanceID]).fMass) 68 #define G4MT_ccouple ((subInstanceManager.offset[instanceID]).fCutsCouple) 69 #define G4MT_instance (subInstanceManager.offset[instanceID]) 85 fVoxel(0), fOptimise(optimise), fRootRegion(false), fLock(false),
86 fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(1.)
180 #ifdef CLONE_FIELD_MGR 248 while ( (NoDaughters--)>0 )
267 std::ostringstream message;
268 message <<
"ERROR - Attempt to place a volume in a mother volume" <<
G4endl 269 <<
" already containing a replicated volume." <<
G4endl 270 <<
" A volume can either contain several placements" <<
G4endl 271 <<
" or a unique replica or parameterised volume !" <<
G4endl 274 G4Exception(
"G4LogicalVolume::AddDaughter()",
"GeomMgt0002",
276 "Replica or parameterised volume must be the only daughter !");
290 if( pDaughterFieldManager == 0 )
307 G4PhysicalVolumeList::iterator i;
377 instLVdata.
fSolid = pSolid;
463 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
466 isDaughter = (*itDau)->GetLogicalVolume()->IsAncestor(aVolume);
467 if (isDaughter)
break;
483 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
526 std::ostringstream message;
527 message <<
"No material associated to the logical volume: " <<
fName <<
" !" 529 <<
"Sorry, cannot compute the mass ...";
530 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
536 std::ostringstream message;
537 message <<
"No solid is associated to the logical volume: " <<
fName <<
" !" 539 <<
"Sorry, cannot compute the mass ...";
540 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
555 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
574 daughterSolid = physParam->
ComputeSolid(i, physDaughter);
580 daughterSolid = logDaughter->
GetSolid();
591 massSum += logDaughter->
GetMass(
true,
true, daughterMaterial);
G4SmartVoxelHeader * fVoxel
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
void UpdateMaterial(G4Material *pMaterial)
G4int GetNoDaughters() const
G4FieldManager * fFieldManager
virtual G4int GetMultiplicity() const
G4int TotalVolumeEntities() const
static G4GEOM_DLL G4ThreadLocal T * offset
static G4GEOM_DLL G4LVManager subInstanceManager
virtual void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
static void DeRegister(G4LogicalVolume *pVolume)
virtual G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *)
G4bool IsAncestor(const G4VPhysicalVolume *p) const
static const G4LVManager & GetSubInstanceManager()
void SetUserLimits(G4UserLimits *pULimits)
G4Material * GetMaterial() const
virtual G4double GetCubicVolume()
G4double GetDensity() const
void SetSolid(G4VSolid *pSolid)
void RegionModified(G4bool flag)
G4int CreateSubInstance()
G4bool IsDaughter(const G4VPhysicalVolume *p) const
void InitialiseWorker(G4LogicalVolume *ptrMasterObject, G4VSolid *pSolid, G4VSensitiveDetector *pSDetector)
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
void AssignFieldManager(G4FieldManager *fldMgr)
const G4String & GetName() const
G4FieldManager * GetFieldManager() const
void SlaveCopySubInstanceArray()
virtual G4VPVParameterisation * GetParameterisation() const =0
void SetMaterialCutsCouple(G4MaterialCutsCouple *cuts)
G4MaterialCutsCouple * FindCouple(G4Material *mat)
G4LogicalVolume(G4VSolid *pSolid, G4Material *pMaterial, const G4String &name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0, G4bool optimise=true)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const G4String & GetName() const
void TerminateWorker(G4LogicalVolume *ptrMasterObject)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
void SetName(const G4String &pName)
G4VSensitiveDetector * GetSensitiveDetector() const
G4VPhysicalVolume * GetDaughter(const G4int i) const
G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=0)
void AddDaughter(G4VPhysicalVolume *p)
G4LogicalVolume * GetLogicalVolume() const
G4VSensitiveDetector * fSensitiveDetector
void SetMaterial(G4Material *pMaterial)
static void Register(G4LogicalVolume *pVolume)
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
G4UserLimits * fUserLimits
G4VSolid * GetSolid() const
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
void RemoveDaughter(const G4VPhysicalVolume *p)
G4PhysicalVolumeList fDaughters
const G4VisAttributes * fVisAttributes