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), fBiasWeight(1.)
185 fName(
""), fUserLimits(0),
186 fVoxel(0), fOptimise(true), fRootRegion(false), fLock(false),
187 fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(1.),
188 fSolid(0), fSensitiveDetector(0), fFieldManager(0), lvdata(0)
230 while ( (NoDaughters--)>0 )
255 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
258 isDaughter = (*itDau)->GetLogicalVolume()->IsAncestor(aVolume);
259 if (isDaughter)
break;
275 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
310 if ( (G4MT_mass) && (!forced) )
return G4MT_mass;
318 std::ostringstream message;
319 message <<
"No material associated to the logical volume: " <<
fName <<
" !"
321 <<
"Sorry, cannot compute the mass ...";
322 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
328 std::ostringstream message;
329 message <<
"No solid is associated to the logical volume: " <<
fName <<
" !"
331 <<
"Sorry, cannot compute the mass ...";
332 G4Exception(
"G4LogicalVolume::GetMass()",
"GeomMgt0002",
347 for (G4PhysicalVolumeList::const_iterator itDau =
fDaughters.begin();
366 daughterSolid = physParam->
ComputeSolid(i, physDaughter);
372 daughterSolid = logDaughter->
GetSolid();
383 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