196 if (!pPVModel)
return;
215 G4int detail = verbosity % 10;
217 if (verbosity < 10 && pCurrentPV->IsReplicated()) {
219 PVPath::const_reverse_iterator thisID = drawnPVPath.rbegin();
220 PVPath::const_reverse_iterator motherID = ++drawnPVPath.rbegin();
224 if (i->back().GetPhysicalVolume()->GetLogicalVolume() ==
225 thisID->GetPhysicalVolume()->GetLogicalVolume()) {
244 if (motherID == drawnPVPath.rend() &&
247 if (motherID != drawnPVPath.rend() &&
249 motherID->GetPhysicalVolume()->GetLogicalVolume() ==
250 (*i)[i->size() - 2].GetPhysicalVolume()->GetLogicalVolume())
263 if (verbosity < 10 &&
270 G4Exception(
"G4ASCIITreeSceneHandler::RequestPrimitives",
273 "Replica unexpected");
303 for (
size_t i = 0; i < drawnPVPath.size(); i++ ) *
fpOutFile <<
" ";
306 <<
"\":" << currentCopyNo;
309 if (verbosity < 10) {
324 <<
" (" << nReplicas <<
" parametrised volumes)";
332 <<
" (" << nReplicas <<
" replicas)";
337 if (verbosity < 10) {
348 << pCurrentLV->
GetName() <<
"\"";
371 if (pCurrentMaterial) {
374 <<
" (" << pCurrentMaterial->
GetName() <<
")";
381 if (pCurrentMaterial) {
389 G4double daughter_subtracted_volume =
390 daughter_subtracted_mass / pCurrentMaterial->
GetDensity();
392 <<
G4BestUnit(daughter_subtracted_volume,
"Volume")
394 <<
G4BestUnit(daughter_subtracted_mass,
"Mass");
400 const std::map<G4String,G4AttDef>* attDefs = pPVModel->
GetAttDefs();
407 fRestOfLine <<
"\nLocal polyhedron coordinates:\n" << *polyhedron;
409 polyhedron->Transform(*transform);
410 fRestOfLine <<
"\nGlobal polyhedron coordinates:\n" << *polyhedron;
414 fLVSet.insert(pCurrentLV);
const std::vector< G4PhysicalVolumeNodeID > & GetDrawnPVPath() const
G4int GetNoDaughters() const
virtual G4bool IsReplicated() const =0
const std::map< G4String, G4AttDef > * GetAttDefs() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
G4int GetVerbosity() const
G4double GetDensity() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
virtual G4GeometryType GetEntityType() const =0
std::set< PVPath > fReplicaSet
virtual G4Polyhedron * GetPolyhedron() const
std::vector< PVNodeID > PVPath
std::set< PVPath >::iterator ReplicaSetIterator
const G4String & GetName() const
virtual G4VPVParameterisation * GetParameterisation() const =0
G4LogicalVolume * GetCurrentLV() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual G4bool IsParameterised() const =0
void CurtailDescent() const
const G4String & GetName() const
G4Transform3D * GetCurrentTransform() const
virtual G4int GetCopyNo() const =0
G4int fLastNonSequentialCopyNo
G4VSensitiveDetector * GetSensitiveDetector() const
const G4VPhysicalVolume * fpLastPV
G4VPhysicalVolume * GetCurrentPV() const
G4Material * GetCurrentMaterial() const
virtual void GetReplicationData(EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const =0
G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=0)
G4VReadOutGeometry * GetROgeometry() const
std::set< G4LogicalVolume * > fLVSet
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
std::ostringstream fRestOfLine
G4VGraphicsSystem * GetGraphicsSystem() const