192 {
193
196 if (!pPVModel) return;
197
198
199
200
201
202
203
204
205
206
208
214
217 G4int detail = verbosity % 10;
218
219
220
221
222
225 const G4bool isAmenableToSupression =
226 (verbosity < 10 && isSimpleReplica) || (verbosity < 3 && isParameterised);
227 if (isAmenableToSupression) {
228
229 PVPath::const_reverse_iterator thisID = drawnPVPath.rbegin();
230 PVPath::const_reverse_iterator motherID = ++drawnPVPath.rbegin();
233 ++i) {
234 if (i->back().GetPhysicalVolume()->GetLogicalVolume() ==
235 thisID->GetPhysicalVolume()->GetLogicalVolume()) {
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254 if (motherID == drawnPVPath.rend() &&
255 i->size() <= 1)
256 ignore = true;
257 if (motherID != drawnPVPath.rend() &&
258 i->size() > 1 &&
259 motherID->GetPhysicalVolume()->GetLogicalVolume() ==
260 (*i)[i->size() - 2].GetPhysicalVolume()->GetLogicalVolume())
261 ignore = true;
262 }
263 }
264 if (ignore) {
266 return;
267 }
268 }
269
270
271
272
273
274 if (verbosity < 10 && !isParameterised &&
277
278 if (isAmenableToSupression) {
279 G4Exception(
"G4ASCIITreeSceneHandler::RequestPrimitives",
280 "vistree0001",
282 "Volume amenable to suppressed printing unexpected");
283 }
284
287
290 }
293 return;
294 }
295 }
297
298
299
304 }
305
311
312
313 for (
size_t i = 0; i < drawnPVPath.size(); i++ ) *
fpOutFile <<
" ";
315 << "\":" << currentCopyNo;
316
318 if (verbosity < 10) {
319
327 if (pP) {
328 if (detail < 3) {
333 << " (" << nReplicas << " parametrised volumes)";
334 }
335 }
336 else {
341 << " (" << nReplicas << " replicas)";
342 }
343 }
344 } else {
346 if (verbosity < 10) {
347
349
351 }
352 }
353 }
354
355 if (detail >= 1) {
357 << pCurrentLV->
GetName() <<
"\"";
359 if (sd) {
362 if (roGeom) {
364 }
366 }
367 }
368
369 if (detail >= 2) {
372 << "\"("
374 }
375
376 if (detail >= 3) {
379 << ", ";
380 if (pCurrentMaterial) {
383 <<
" (" << pCurrentMaterial->
GetName() <<
")";
384 } else {
386 }
387 }
388
389 if (detail >= 5) {
390 if (pCurrentMaterial) {
392
395 false,
396
397 pMaterial);
398 G4double daughter_subtracted_volume =
399 daughter_subtracted_mass / pCurrentMaterial->
GetDensity();
401 <<
G4BestUnit(daughter_subtracted_volume,
"Volume")
402 << ", "
403 <<
G4BestUnit(daughter_subtracted_mass,
"Mass");
404 }
405 }
406
407 if (detail >= 6) {
409 const std::map<G4String,G4AttDef>* attDefs = pPVModel->
GetAttDefs();
411 delete attValues;
412 }
413
414 if (detail >= 7) {
416 fRestOfLine <<
"\nLocal polyhedron coordinates:\n" << *polyhedron;
418 polyhedron->Transform(transform);
419 fRestOfLine <<
"\nGlobal polyhedron coordinates:\n" << *polyhedron;
420 }
421
423 fLVSet.insert(pCurrentLV);
424 }
425
427
428 return;
429}
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::set< PVPath >::iterator ReplicaSetIterator
std::vector< PVNodeID > PVPath
G4double GetMass(G4bool forced=false, G4bool propagate=true, G4Material *parMaterial=nullptr)
G4VSensitiveDetector * GetSensitiveDetector() const
std::size_t GetNoDaughters() const
const G4String & GetName() const
G4double GetDensity() const
const G4String & GetName() const
const std::vector< G4PhysicalVolumeNodeID > & GetDrawnPVPath() const
const G4Transform3D & GetCurrentTransform() const
G4VPhysicalVolume * GetCurrentPV() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
void CurtailDescent() const
G4LogicalVolume * GetCurrentLV() const
G4Material * GetCurrentMaterial() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual G4bool IsReplicated() const =0
G4LogicalVolume * GetLogicalVolume() const
virtual void GetReplicationData(EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const =0
virtual G4VPVParameterisation * GetParameterisation() const =0
virtual G4bool IsParameterised() const =0
G4VReadOutGeometry * GetROgeometry() const
virtual G4Polyhedron * GetPolyhedron() const
virtual G4GeometryType GetEntityType() const =0