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.)
179 fName(
""), fUserLimits(0),
180 fVoxel(0), fOptimise(true), fRootRegion(false), fLock(false),
181 fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(1.),
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