64 : fSolid(0),fSensitiveDetector(0),fFieldManager(0),
65 fMaterial(0),fMass(0.),fCutsCouple(0)
95 #ifdef CLONE_FIELD_MGR
146 fVoxel(0), fOptimise(optimise), fRootRegion(false), fLock(false),
147 fSmartless(2.), fVisAttributes(0), fRegion(0)
179 fName(
""), fUserLimits(0),
180 fVoxel(0), fOptimise(true), fRootRegion(false), fLock(false),
181 fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(0.),
182 fSolid(0), fSensitiveDetector(0), fFieldManager(0)
223 while ( (NoDaughters--)>0 )
248 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
251 isDaughter = (*itDau)->GetLogicalVolume()->IsAncestor(aVolume);
252 if (isDaughter)
break;
268 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
303 if ( (G4MT_mass) && (!forced) )
return G4MT_mass;
311 std::ostringstream message;
312 message <<
"No material associated to the logical volume: " <<
fName <<
" !"
314 <<
"Sorry, cannot compute the mass ...";
315 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
321 std::ostringstream message;
322 message <<
"No solid is associated to the logical volume: " <<
fName <<
" !"
324 <<
"Sorry, cannot compute the mass ...";
325 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
340 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
359 daughterSolid = physParam->
ComputeSolid(i, physDaughter);
365 daughterSolid = logDaughter->
GetSolid();
376 massSum += logDaughter->
GetMass(
true,
true, daughterMaterial);
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
G4FieldManager * fFieldManager
static G4GEOM_DLL G4LVManager subInstanceManager
virtual void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
static void DeRegister(G4LogicalVolume *pVolume)
G4bool IsAncestor(const G4VPhysicalVolume *p) const
G4Material * GetMaterial() const
virtual G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *)
static const G4LVManager & GetSubInstanceManager()
void SetUserLimits(G4UserLimits *pULimits)
virtual G4double GetCubicVolume()
G4double GetDensity() const
G4VPhysicalVolume * GetDaughter(const G4int i) const
void SetSolid(G4VSolid *pSolid)
G4int CreateSubInstance()
void InitialiseWorker(G4LogicalVolume *ptrMasterObject, G4VSolid *pSolid, G4VSensitiveDetector *pSDetector)
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
void AssignFieldManager(G4FieldManager *fldMgr)
G4FieldManager * GetFieldManager() const
void SlaveCopySubInstanceArray()
virtual G4VPVParameterisation * GetParameterisation() const =0
G4int TotalVolumeEntities() const
G4LogicalVolume(G4VSolid *pSolid, G4Material *pMaterial, const G4String &name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0, G4bool optimise=true)
G4int GetNoDaughters() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void TerminateWorker(G4LogicalVolume *ptrMasterObject)
G4LogicalVolume * GetLogicalVolume() const
G4bool IsDaughter(const G4VPhysicalVolume *p) const
void SetName(const G4String &pName)
virtual G4int GetMultiplicity() const
G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=0)
G4VSensitiveDetector * fSensitiveDetector
void SetMaterial(G4Material *pMaterial)
static void Register(G4LogicalVolume *pVolume)
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4VSolid * GetSolid() const
G4PhysicalVolumeList fDaughters
const G4VisAttributes * fVisAttributes