Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4LogicalVolume Class Reference

#include <G4LogicalVolume.hh>

Inheritance diagram for G4LogicalVolume:

Public Member Functions

 G4LogicalVolume (G4VSolid *pSolid, G4Material *pMaterial, const G4String &name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0, G4bool optimise=true)
 
virtual ~G4LogicalVolume ()
 
const G4StringGetName () const
 
void SetName (const G4String &pName)
 
G4int GetNoDaughters () const
 
G4VPhysicalVolumeGetDaughter (const G4int i) const
 
void AddDaughter (G4VPhysicalVolume *p)
 
G4bool IsDaughter (const G4VPhysicalVolume *p) const
 
G4bool IsAncestor (const G4VPhysicalVolume *p) const
 
void RemoveDaughter (const G4VPhysicalVolume *p)
 
void ClearDaughters ()
 
G4int TotalVolumeEntities () const
 
EVolume CharacteriseDaughters () const
 
G4VSolidGetSolid () const
 
void SetSolid (G4VSolid *pSolid)
 
G4MaterialGetMaterial () const
 
void SetMaterial (G4Material *pMaterial)
 
void UpdateMaterial (G4Material *pMaterial)
 
G4double GetMass (G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=0)
 
void ResetMass ()
 
G4FieldManagerGetFieldManager () const
 
void SetFieldManager (G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
 
G4VSensitiveDetectorGetSensitiveDetector () const
 
void SetSensitiveDetector (G4VSensitiveDetector *pSDetector)
 
G4UserLimitsGetUserLimits () const
 
void SetUserLimits (G4UserLimits *pULimits)
 
G4SmartVoxelHeaderGetVoxelHeader () const
 
void SetVoxelHeader (G4SmartVoxelHeader *pVoxel)
 
G4double GetSmartless () const
 
void SetSmartless (G4double s)
 
G4bool IsToOptimise () const
 
void SetOptimisation (G4bool optim)
 
G4bool IsRootRegion () const
 
void SetRegionRootFlag (G4bool rreg)
 
G4bool IsRegion () const
 
void SetRegion (G4Region *reg)
 
G4RegionGetRegion () const
 
void PropagateRegion ()
 
const G4MaterialCutsCoupleGetMaterialCutsCouple () const
 
void SetMaterialCutsCouple (G4MaterialCutsCouple *cuts)
 
G4bool operator== (const G4LogicalVolume &lv) const
 
const G4VisAttributesGetVisAttributes () const
 
void SetVisAttributes (const G4VisAttributes *pVA)
 
void SetVisAttributes (const G4VisAttributes &VA)
 
G4FastSimulationManagerGetFastSimulationManager () const
 
void SetBiasWeight (G4double w)
 
G4double GetBiasWeight () const
 
 G4LogicalVolume (__void__ &)
 
virtual G4bool IsExtended () const
 
G4FieldManagerGetMasterFieldManager () const
 
G4VSensitiveDetectorGetMasterSensitiveDetector () const
 
G4VSolidGetMasterSolid () const
 
G4int GetInstanceID () const
 
void Lock ()
 
void InitialiseWorker (G4LogicalVolume *ptrMasterObject, G4VSolid *pSolid, G4VSensitiveDetector *pSDetector)
 
void TerminateWorker (G4LogicalVolume *ptrMasterObject)
 
void AssignFieldManager (G4FieldManager *fldMgr)
 

Static Public Member Functions

static const G4LVManagerGetSubInstanceManager ()
 
static G4VSolidGetSolid (G4LVData &instLVdata)
 
static void SetSolid (G4LVData &instLVdata, G4VSolid *pSolid)
 

Detailed Description

Definition at line 190 of file G4LogicalVolume.hh.

Constructor & Destructor Documentation

G4LogicalVolume::G4LogicalVolume ( G4VSolid pSolid,
G4Material pMaterial,
const G4String name,
G4FieldManager pFieldMgr = 0,
G4VSensitiveDetector pSDetector = 0,
G4UserLimits pULimits = 0,
G4bool  optimise = true 
)

Definition at line 77 of file G4LogicalVolume.cc.

84  : fDaughters(0,(G4VPhysicalVolume*)0),
85  fVoxel(0), fOptimise(optimise), fRootRegion(false), fLock(false),
86  fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(1.)
87 {
88  // Initialize 'Shadow'/master pointers - for use in copying to workers
89  fSolid = pSolid;
90  fSensitiveDetector = pSDetector;
91  fFieldManager = pFieldMgr;
92 
93  instanceID = subInstanceManager.CreateSubInstance();
94  AssignFieldManager(pFieldMgr); // G4MT_fmanager = pFieldMgr;
95 
96  // fMasterFieldMgr= pFieldMgr;
97  G4MT_mass = 0.;
98  G4MT_ccouple = 0;
99 
100  SetSolid(pSolid);
101  SetMaterial(pMaterial);
102  SetName(name);
103  SetSensitiveDetector(pSDetector);
104  SetUserLimits(pULimits);
105 
106  // Initialize 'Shadow' data structure - for use by object persistency
107  lvdata = new G4LVData();
108  lvdata->fSolid = pSolid;
109  lvdata->fMaterial = pMaterial;
110 
111  //
112  // Add to store
113  //
115 }
void SetUserLimits(G4UserLimits *pULimits)
#define G4MT_ccouple
void SetSolid(G4VSolid *pSolid)
G4int CreateSubInstance()
void AssignFieldManager(G4FieldManager *fldMgr)
#define G4MT_mass
G4Material * fMaterial
void SetName(const G4String &pName)
void SetMaterial(G4Material *pMaterial)
static void Register(G4LogicalVolume *pVolume)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4VSolid * fSolid

Here is the call graph for this function:

G4LogicalVolume::~G4LogicalVolume ( )
virtual

Definition at line 147 of file G4LogicalVolume.cc.

148 {
149  if (!fLock && fRootRegion) // De-register root region first if not locked
150  { // and flagged as root logical-volume
151  fRegion->RemoveRootLogicalVolume(this, true);
152  }
153  delete lvdata;
155 }
static void DeRegister(G4LogicalVolume *pVolume)
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
Definition: G4Region.cc:319

Here is the call graph for this function:

G4LogicalVolume::G4LogicalVolume ( __void__ &  )

Definition at line 122 of file G4LogicalVolume.cc.

123  : fDaughters(0,(G4VPhysicalVolume*)0),
124  fName(""), fUserLimits(0),
125  fVoxel(0), fOptimise(true), fRootRegion(false), fLock(false),
126  fSmartless(2.), fVisAttributes(0), fRegion(0), fBiasWeight(1.),
127  fSolid(0), fSensitiveDetector(0), fFieldManager(0), lvdata(0)
128 {
129  instanceID = subInstanceManager.CreateSubInstance();
130 
131  SetSensitiveDetector(0); // G4MT_sdetector = 0;
132  SetFieldManager(0, false); // G4MT_fmanager = 0;
133 
134  G4MT_mass = 0.;
135  G4MT_ccouple = 0;
136 
137  // Add to store
138  //
140 }
#define G4MT_ccouple
G4int CreateSubInstance()
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
#define G4MT_mass
static void Register(G4LogicalVolume *pVolume)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)

Here is the call graph for this function:

Member Function Documentation

void G4LogicalVolume::AddDaughter ( G4VPhysicalVolume p)

Definition at line 272 of file G4LogicalVolume.cc.

273 {
274  if( !fDaughters.empty() && fDaughters[0]->IsReplicated() )
275  {
276  std::ostringstream message;
277  message << "ERROR - Attempt to place a volume in a mother volume" << G4endl
278  << " already containing a replicated volume." << G4endl
279  << " A volume can either contain several placements" << G4endl
280  << " or a unique replica or parameterised volume !" << G4endl
281  << " Mother logical volume: " << GetName() << G4endl
282  << " Placing volume: " << pNewDaughter->GetName() << G4endl;
283  G4Exception("G4LogicalVolume::AddDaughter()", "GeomMgt0002",
284  FatalException, message,
285  "Replica or parameterised volume must be the only daughter !");
286  }
287 
288  // Invalidate previous calculation of mass - if any - for all threads
289  G4MT_mass = 0.;
290  // SignalVolumeChange(); // fVolumeChanged= true;
291  fDaughters.push_back(pNewDaughter);
292 
293  G4LogicalVolume* pDaughterLogical = pNewDaughter->GetLogicalVolume();
294 
295  // Propagate the Field Manager, if the daughter has no field Manager.
296  //
297  G4FieldManager* pDaughterFieldManager = pDaughterLogical->GetFieldManager();
298 
299  if( pDaughterFieldManager == 0 )
300  {
301  pDaughterLogical->SetFieldManager(G4MT_fmanager, false);
302  }
303  if (fRegion)
304  {
305  PropagateRegion();
306  fRegion->RegionModified(true);
307  }
308 }
void RegionModified(G4bool flag)
#define G4MT_fmanager
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
#define G4MT_mass
void PropagateRegion()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
G4FieldManager * GetFieldManager() const
const G4String & GetName() const

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::AssignFieldManager ( G4FieldManager fldMgr)

Definition at line 230 of file G4LogicalVolume.cc.

231 {
232  G4MT_fmanager= fldMgr;
233  if(G4Threading::IsMasterThread()) fFieldManager = fldMgr;
234 }
#define G4MT_fmanager
G4bool IsMasterThread()
Definition: G4Threading.cc:146

Here is the call graph for this function:

Here is the caller graph for this function:

EVolume G4LogicalVolume::CharacteriseDaughters ( ) const
inline

Here is the caller graph for this function:

void G4LogicalVolume::ClearDaughters ( )

Definition at line 336 of file G4LogicalVolume.cc.

337 {
338  fDaughters.erase(fDaughters.begin(), fDaughters.end());
339  if (fRegion)
340  {
341  fRegion->RegionModified(true);
342  }
343  G4MT_mass = 0.;
344 }
void RegionModified(G4bool flag)
#define G4MT_mass

Here is the call graph for this function:

G4double G4LogicalVolume::GetBiasWeight ( ) const
inline
G4VPhysicalVolume* G4LogicalVolume::GetDaughter ( const G4int  i) const
inline

Here is the caller graph for this function:

G4FastSimulationManager* G4LogicalVolume::GetFastSimulationManager ( ) const
inline

Here is the caller graph for this function:

G4FieldManager * G4LogicalVolume::GetFieldManager ( ) const

Definition at line 221 of file G4LogicalVolume.cc.

222 {
223  return G4MT_fmanager;
224 }
#define G4MT_fmanager

Here is the caller graph for this function:

G4int G4LogicalVolume::GetInstanceID ( ) const
inline
G4double G4LogicalVolume::GetMass ( G4bool  forced = false,
G4bool  propagate = true,
G4Material parMaterial = 0 
)

Definition at line 521 of file G4LogicalVolume.cc.

524 {
525  // Return the cached non-zero value, if not forced
526  //
527  if ( (G4MT_mass) && (!forced) ) return G4MT_mass;
528 
529  // Global density and computed mass associated to the logical
530  // volume without considering its daughters
531  //
532  G4Material* logMaterial = parMaterial ? parMaterial : GetMaterial(); // G4MT_material;
533  if (!logMaterial)
534  {
535  std::ostringstream message;
536  message << "No material associated to the logical volume: " << fName << " !"
537  << G4endl
538  << "Sorry, cannot compute the mass ...";
539  G4Exception("G4LogicalVolume::GetMass()", "GeomMgt0002",
540  FatalException, message);
541  return 0;
542  }
543  if (! GetSolid() ) // !G4MT_solid)
544  {
545  std::ostringstream message;
546  message << "No solid is associated to the logical volume: " << fName << " !"
547  << G4endl
548  << "Sorry, cannot compute the mass ...";
549  G4Exception("G4LogicalVolume::GetMass()", "GeomMgt0002",
550  FatalException, message);
551  return 0;
552  }
553  G4double globalDensity = logMaterial->GetDensity();
554  G4double motherMass= GetSolid()->GetCubicVolume() * globalDensity;
555 
556  // G4MT_mass =
557  // SetMass( motherMmass );
558  G4double massSum= motherMass;
559 
560  // For each daughter in the tree, subtract the mass occupied
561  // and if required by the propagate flag, add the real daughter's
562  // one computed recursively
563 
564  for (G4PhysicalVolumeList::const_iterator itDau = fDaughters.begin();
565  itDau != fDaughters.end(); itDau++)
566  {
567  G4VPhysicalVolume* physDaughter = (*itDau);
568  G4LogicalVolume* logDaughter = physDaughter->GetLogicalVolume();
569  G4double subMass=0.;
570  G4VSolid* daughterSolid = 0;
571  G4Material* daughterMaterial = 0;
572 
573  // Compute the mass to subtract and to add for each daughter
574  // considering its multiplicity (i.e. replicated or not) and
575  // eventually its parameterisation (by solid and/or by material)
576  //
577  for (G4int i=0; i<physDaughter->GetMultiplicity(); i++)
578  {
580  physParam = physDaughter->GetParameterisation();
581  if (physParam)
582  {
583  daughterSolid = physParam->ComputeSolid(i, physDaughter);
584  daughterSolid->ComputeDimensions(physParam, i, physDaughter);
585  daughterMaterial = physParam->ComputeMaterial(i, physDaughter);
586  }
587  else
588  {
589  daughterSolid = logDaughter->GetSolid();
590  daughterMaterial = logDaughter->GetMaterial();
591  }
592  subMass = daughterSolid->GetCubicVolume() * globalDensity;
593 
594  // Subtract the daughter's portion for the mass and, if required,
595  // add the real daughter's mass computed recursively
596  //
597  massSum -= subMass;
598  if (propagate)
599  {
600  massSum += logDaughter->GetMass(true, true, daughterMaterial);
601  }
602  }
603  }
604  G4MT_mass= massSum;
605  return massSum;
606 }
virtual G4Material * ComputeMaterial(const G4int repNo, G4VPhysicalVolume *currentVol, const G4VTouchable *parentTouch=0)
G4Material * GetMaterial() const
virtual void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
Definition: G4VSolid.cc:138
virtual G4VSolid * ComputeSolid(const G4int, G4VPhysicalVolume *)
virtual G4double GetCubicVolume()
Definition: G4VSolid.cc:189
G4double GetDensity() const
Definition: G4Material.hh:180
G4VSolid * GetSolid() const
int G4int
Definition: G4Types.hh:78
virtual G4VPVParameterisation * GetParameterisation() const =0
#define G4MT_mass
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4LogicalVolume * GetLogicalVolume() const
virtual G4int GetMultiplicity() const
#define G4endl
Definition: G4ios.hh:61
G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=0)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4FieldManager* G4LogicalVolume::GetMasterFieldManager ( ) const
inline

Here is the caller graph for this function:

G4VSensitiveDetector* G4LogicalVolume::GetMasterSensitiveDetector ( ) const
inline

Here is the caller graph for this function:

G4VSolid* G4LogicalVolume::GetMasterSolid ( ) const
inline

Here is the caller graph for this function:

G4Material * G4LogicalVolume::GetMaterial ( ) const

Definition at line 396 of file G4LogicalVolume.cc.

397 {
398  return G4MT_material;
399 }
#define G4MT_material

Here is the caller graph for this function:

const G4MaterialCutsCouple * G4LogicalVolume::GetMaterialCutsCouple ( ) const

Definition at line 445 of file G4LogicalVolume.cc.

446 {
447  return G4MT_ccouple;
448 }
#define G4MT_ccouple

Here is the caller graph for this function:

const G4String& G4LogicalVolume::GetName ( ) const
inline
G4int G4LogicalVolume::GetNoDaughters ( ) const
inline

Here is the caller graph for this function:

G4Region* G4LogicalVolume::GetRegion ( ) const
inline

Here is the caller graph for this function:

G4VSensitiveDetector * G4LogicalVolume::GetSensitiveDetector ( ) const

Definition at line 426 of file G4LogicalVolume.cc.

427 {
428  return G4MT_sdetector;
429 }
#define G4MT_sdetector

Here is the caller graph for this function:

G4double G4LogicalVolume::GetSmartless ( ) const
inline

Here is the caller graph for this function:

G4VSolid * G4LogicalVolume::GetSolid ( ) const

Definition at line 364 of file G4LogicalVolume.cc.

365 {
366  // return G4MT_solid;
367  // return ((subInstanceManager.offset[instanceID]).fSolid);
368  return this->GetSolid( subInstanceManager.offset[instanceID] );
369 }
static G4GEOM_DLL G4ThreadLocal T * offset
G4VSolid * GetSolid() const
G4VSolid * G4LogicalVolume::GetSolid ( G4LVData instLVdata)
static

Definition at line 359 of file G4LogicalVolume.cc.

360 {
361  return instLVdata.fSolid;
362 }
G4VSolid * fSolid
const G4LVManager & G4LogicalVolume::GetSubInstanceManager ( )
static

Definition at line 212 of file G4LogicalVolume.cc.

213 {
214  return subInstanceManager;
215 }

Here is the caller graph for this function:

G4UserLimits* G4LogicalVolume::GetUserLimits ( ) const
inline

Here is the caller graph for this function:

const G4VisAttributes* G4LogicalVolume::GetVisAttributes ( ) const
inline

Here is the caller graph for this function:

G4SmartVoxelHeader* G4LogicalVolume::GetVoxelHeader ( ) const
inline

Here is the caller graph for this function:

void G4LogicalVolume::InitialiseWorker ( G4LogicalVolume ptrMasterObject,
G4VSolid pSolid,
G4VSensitiveDetector pSDetector 
)

Definition at line 168 of file G4LogicalVolume.cc.

171 {
172  subInstanceManager.SlaveCopySubInstanceArray();
173 
174  SetSolid(pSolid);
175  SetSensitiveDetector(pSDetector); // How this object is available now ?
176  AssignFieldManager(fFieldManager); // Should be set - but a per-thread copy is not available yet
177  // G4MT_fmanager= fFieldManager;
178  // Must not call SetFieldManager(fFieldManager, false); which propagates FieldMgr
179 
180 #ifdef CLONE_FIELD_MGR
181  // Create a field FieldManager by cloning
182  G4FieldManager workerFldMgr= fFieldManager->GetWorkerClone(G4bool* created);
183  if( created || (GetFieldManager()!=workerFldMgr) )
184  {
185  SetFieldManager(fFieldManager, false); // which propagates FieldMgr
186  }else{
187  // Field manager existed and is equal to current one
188  AssignFieldManager(workerFldMgr);
189  }
190 #endif
191 }
void SetSolid(G4VSolid *pSolid)
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
void AssignFieldManager(G4FieldManager *fldMgr)
bool G4bool
Definition: G4Types.hh:79
void SlaveCopySubInstanceArray()
G4FieldManager * GetFieldManager() const
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)

Here is the call graph for this function:

Here is the caller graph for this function:

G4bool G4LogicalVolume::IsAncestor ( const G4VPhysicalVolume p) const

Definition at line 467 of file G4LogicalVolume.cc.

468 {
469  G4bool isDaughter = IsDaughter(aVolume);
470  if (!isDaughter)
471  {
472  for (G4PhysicalVolumeList::const_iterator itDau = fDaughters.begin();
473  itDau != fDaughters.end(); itDau++)
474  {
475  isDaughter = (*itDau)->GetLogicalVolume()->IsAncestor(aVolume);
476  if (isDaughter) break;
477  }
478  }
479  return isDaughter;
480 }
bool G4bool
Definition: G4Types.hh:79
G4bool IsDaughter(const G4VPhysicalVolume *p) const

Here is the call graph for this function:

G4bool G4LogicalVolume::IsDaughter ( const G4VPhysicalVolume p) const
inline

Here is the caller graph for this function:

G4bool G4LogicalVolume::IsExtended ( ) const
virtual

Reimplemented in G4LogicalCrystalVolume.

Definition at line 240 of file G4LogicalVolume.cc.

241 {
242  return false;
243 }
G4bool G4LogicalVolume::IsRegion ( ) const
inline
G4bool G4LogicalVolume::IsRootRegion ( ) const
inline

Here is the caller graph for this function:

G4bool G4LogicalVolume::IsToOptimise ( ) const
inline
void G4LogicalVolume::Lock ( )
inline
G4bool G4LogicalVolume::operator== ( const G4LogicalVolume lv) const
void G4LogicalVolume::PropagateRegion ( )
inline

Here is the caller graph for this function:

void G4LogicalVolume::RemoveDaughter ( const G4VPhysicalVolume p)

Definition at line 314 of file G4LogicalVolume.cc.

315 {
316  G4PhysicalVolumeList::iterator i;
317  for ( i=fDaughters.begin(); i!=fDaughters.end(); ++i )
318  {
319  if (**i==*p)
320  {
321  fDaughters.erase(i);
322  break;
323  }
324  }
325  if (fRegion)
326  {
327  fRegion->RegionModified(true);
328  }
329  G4MT_mass = 0.;
330 }
void RegionModified(G4bool flag)
#define G4MT_mass

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::ResetMass ( )

Definition at line 350 of file G4LogicalVolume.cc.

351 {
352  G4MT_mass= 0.0;
353 }
#define G4MT_mass

Here is the caller graph for this function:

void G4LogicalVolume::SetBiasWeight ( G4double  w)
inline
void G4LogicalVolume::SetFieldManager ( G4FieldManager pFieldMgr,
G4bool  forceToAllDaughters 
)

Definition at line 250 of file G4LogicalVolume.cc.

252 {
253  // G4MT_fmanager = pNewFieldMgr;
254  AssignFieldManager(pNewFieldMgr);
255 
256  G4int NoDaughters = GetNoDaughters();
257  while ( (NoDaughters--)>0 )
258  {
259  G4LogicalVolume* DaughterLogVol;
260  DaughterLogVol = GetDaughter(NoDaughters)->GetLogicalVolume();
261  if ( forceAllDaughters || (DaughterLogVol->GetFieldManager() == 0) )
262  {
263  DaughterLogVol->SetFieldManager(pNewFieldMgr, forceAllDaughters);
264  }
265  }
266 }
G4VPhysicalVolume * GetDaughter(const G4int i) const
int G4int
Definition: G4Types.hh:78
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)
void AssignFieldManager(G4FieldManager *fldMgr)
G4int GetNoDaughters() const
G4LogicalVolume * GetLogicalVolume() const
G4FieldManager * GetFieldManager() const

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::SetMaterial ( G4Material pMaterial)

Definition at line 405 of file G4LogicalVolume.cc.

406 {
407  G4MT_material=pMaterial;
408  G4MT_mass = 0.;
409 }
#define G4MT_mass
#define G4MT_material

Here is the caller graph for this function:

void G4LogicalVolume::SetMaterialCutsCouple ( G4MaterialCutsCouple cuts)

Definition at line 454 of file G4LogicalVolume.cc.

455 {
456  G4MT_ccouple = cuts;
457 }
#define G4MT_ccouple
void G4LogicalVolume::SetName ( const G4String pName)
inline

Here is the caller graph for this function:

void G4LogicalVolume::SetOptimisation ( G4bool  optim)
inline
void G4LogicalVolume::SetRegion ( G4Region reg)
inline

Here is the caller graph for this function:

void G4LogicalVolume::SetRegionRootFlag ( G4bool  rreg)
inline

Here is the caller graph for this function:

void G4LogicalVolume::SetSensitiveDetector ( G4VSensitiveDetector pSDetector)

Definition at line 435 of file G4LogicalVolume.cc.

436 {
437  G4MT_sdetector = pSDetector;
438  if(G4Threading::IsMasterThread()) fSensitiveDetector = pSDetector;
439 }
#define G4MT_sdetector
G4bool IsMasterThread()
Definition: G4Threading.cc:146

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::SetSmartless ( G4double  s)
inline
void G4LogicalVolume::SetSolid ( G4VSolid pSolid)

Definition at line 375 of file G4LogicalVolume.cc.

376 {
377 
378  // ((subInstanceManager.offset[instanceID]).fSolid) = pSolid;
379  G4MT_solid=pSolid;
380  // G4MT_mass = 0.;
381  this->ResetMass();
382 }
#define G4MT_solid

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::SetSolid ( G4LVData instLVdata,
G4VSolid pSolid 
)
static

Definition at line 384 of file G4LogicalVolume.cc.

385 {
386  instLVdata.fSolid = pSolid;
387  // G4MT_solid=pSolid;
388  instLVdata.fMass= 0;
389  // A fast way to reset the mass ... ie G4MT_mass = 0.;
390 }
G4double fMass
G4VSolid * fSolid
void G4LogicalVolume::SetUserLimits ( G4UserLimits pULimits)
inline

Here is the caller graph for this function:

void G4LogicalVolume::SetVisAttributes ( const G4VisAttributes pVA)
inline

Here is the caller graph for this function:

void G4LogicalVolume::SetVisAttributes ( const G4VisAttributes VA)

Definition at line 608 of file G4LogicalVolume.cc.

609 {
610  fVisAttributes = new G4VisAttributes(VA);
611 }
void G4LogicalVolume::SetVoxelHeader ( G4SmartVoxelHeader pVoxel)
inline

Here is the caller graph for this function:

void G4LogicalVolume::TerminateWorker ( G4LogicalVolume ptrMasterObject)

Definition at line 202 of file G4LogicalVolume.cc.

203 {
204 }

Here is the caller graph for this function:

G4int G4LogicalVolume::TotalVolumeEntities ( ) const

Definition at line 489 of file G4LogicalVolume.cc.

490 {
491  G4int vols = 1;
492  for (G4PhysicalVolumeList::const_iterator itDau = fDaughters.begin();
493  itDau != fDaughters.end(); itDau++)
494  {
495  G4VPhysicalVolume* physDaughter = (*itDau);
496  vols += physDaughter->GetMultiplicity()
497  *physDaughter->GetLogicalVolume()->TotalVolumeEntities();
498  }
499  return vols;
500 }
int G4int
Definition: G4Types.hh:78
G4int TotalVolumeEntities() const
G4LogicalVolume * GetLogicalVolume() const
virtual G4int GetMultiplicity() const

Here is the call graph for this function:

Here is the caller graph for this function:

void G4LogicalVolume::UpdateMaterial ( G4Material pMaterial)

Definition at line 415 of file G4LogicalVolume.cc.

416 {
417  G4MT_material=pMaterial;
418  if(fRegion) { G4MT_ccouple = fRegion->FindCouple(pMaterial); }
419  G4MT_mass = 0.;
420 }
#define G4MT_ccouple
#define G4MT_mass
G4MaterialCutsCouple * FindCouple(G4Material *mat)
#define G4MT_material

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files: