103 fSceneHandlerId (id),
107 fMarkForClearingTransientStore (true),
111 fReadyForTransients (true),
112 fProcessingSolid (false),
113 fProcessing2D (false),
119 fpScene = pVMan -> GetCurrentScene ();
121 std::ostringstream ost;
122 ost << fSystem.GetName () <<
'-' << fSceneHandlerId;
147 return defaultExtent;
174 (
"G4VSceneHandler::BeginPrimitives",
176 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
196 (
"G4VSceneHandler::BeginPrimitives2D",
198 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
328 if (trajectoriesModel)
332 (
"G4VSceneHandler::AddCompound(const G4VTrajectory&)",
339 const_cast<G4VHit&
>(hit).Draw();
344 const_cast<G4VDigi&
>(digi).Draw();
350 G4bool scoreMapHits =
false;
352 if (scoringManager) {
354 for (std::size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
359 for(MeshScoreMap::const_iterator i = scoreMap.cbegin();
360 i != scoreMap.cend(); ++i) {
361 const G4String& scoreMapName = i->first;
362 if (scoreMapName == mapNam) {
365 mesh->
DrawMesh(scoreMapName, &colorMap);
372 static G4bool first =
true;
376 "Scoring map drawn with default parameters."
377 "\n To get gMocren file for gMocren browser:"
378 "\n /vis/open gMocrenFile"
379 "\n /vis/viewer/flush"
380 "\n Many other options available with /score/draw... commands."
381 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
393 G4bool scoreMapHits =
false;
395 if (scoringManager) {
397 for (std::size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
401 for(MeshScoreMap::const_iterator i = scoreMap.cbegin();
402 i != scoreMap.cend(); ++i) {
403 const G4String& scoreMapName = i->first;
405 if (foundHits == &hits) {
408 mesh->
DrawMesh(scoreMapName, &colorMap);
415 static G4bool first =
true;
419 "Scoring map drawn with default parameters."
420 "\n To get gMocren file for gMocren browser:"
421 "\n /vis/open gMocrenFile"
422 "\n /vis/viewer/flush"
423 "\n Many other options available with /score/draw... commands."
424 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
436 "There has been an attempt to draw a mesh with option \""
439 <<
"but it is not of a recognised type or is not implemented"
440 "\nby the current graphics driver. Instead we draw its"
449 const auto& saveVisAtts = lv->GetVisAttributes();
451 tmpVisAtts = *saveVisAtts;
453 auto colour = saveVisAtts->GetColour();
459 solid->DescribeYourselfTo(*
this);
462 lv->SetVisAttributes(saveVisAtts);
477 for (std::size_t iPoint = 0; iPoint < polymarker.size (); ++iPoint) {
486 for (std::size_t iPoint = 0; iPoint < polymarker.size (); ++iPoint) {
495 for (std::size_t iPoint = 0; iPoint < polymarker.size (); ++iPoint) {
508 visManager->SetCurrentViewer(
nullptr);
514 G4warn <<
" Open a plotter-aware graphics system or remove plotter with" <<
G4endl;
523 (*i) -> SetNeedKernelVisit (
true);
538 auto pSolid = &solid;
542 pBooleanSolid->BoundingLimits(bmin, bmax);
545 auto ptrB = pBooleanSolid->GetConstituentSolid(1);
546 for (
G4int i=0; i<10; ++i) {
558 auto ptrB = pBooleanSolid->GetConstituentSolid(1);
559 for (
G4int i=0; i<10; ++i) {
573 for (
G4int i=0; i<10000; ++i) {
605 static std::set<const G4VSolid*> problematicSolids;
607 problematicSolids.find(&solid) == problematicSolids.end()) {
608 problematicSolids.insert(&solid);
610 "ERROR: G4VSceneHandler::RequestPrimitives"
611 "\n Polyhedron not available for " << solid.
GetName ();
616 static G4bool explanation =
false;
620 "\n This means it cannot be visualized in the usual way on most systems."
621 "\n 1) The solid may not have implemented the CreatePolyhedron method."
622 "\n 2) For Boolean solids, the BooleanProcessor, which attempts to create"
623 "\n the resultant polyhedron, may have failed."
624 "\n Try RayTracer. It uses Geant4's tracking algorithms instead.";
626 G4warn <<
"\n Drawing solid with cloud of points.";
646 for (
G4int i = 0; i < numberOfCloudPoints; ++i) {
688 "The scene has no extent.");
708 const std::vector<G4Scene::Model>& runDurationModelList =
711 if(runDurationModelList.size())
726 for(std::size_t i = 0; i < runDurationModelList.size(); ++i)
728 if(runDurationModelList[i].fActive)
730 fpModel = runDurationModelList[i].fpModel;
744 sceneTreeScene.SetModel(
fpModel);
782 const std::vector<const G4Event*>* events =
784 std::size_t nKeptEvents = 0;
786 nKeptEvents = events->size();
796 if(events && events->size())
797 event = events->back();
808 for(
const auto& event : *events)
818 G4warn <<
"WARNING: Cannot refresh events accumulated over more"
819 "\n than one runs. Refreshed just the last run."
842 const std::vector<G4Scene::Model>& EOEModelList =
843 fpScene -> GetEndOfEventModelList ();
844 std::size_t nModels = EOEModelList.size();
848 for (std::size_t i = 0; i < nModels; ++i) {
849 if (EOEModelList[i].fActive) {
850 fpModel = EOEModelList[i].fpModel;
851 fpModel -> SetModelingParameters(pMP);
854 fpModel -> DescribeYourselfTo (*
this);
859 sceneTreeScene.SetModel(
fpModel);
862 fpModel -> SetModelingParameters(0);
872 const std::vector<G4Scene::Model>& EORModelList =
873 fpScene -> GetEndOfRunModelList ();
874 std::size_t nModels = EORModelList.size();
878 for (std::size_t i = 0; i < nModels; ++i) {
879 if (EORModelList[i].fActive) {
880 fpModel = EORModelList[i].fpModel;
881 fpModel -> SetModelingParameters(pMP);
884 fpModel -> DescribeYourselfTo (*
this);
889 sceneTreeScene.SetModel(
fpModel);
892 fpModel -> SetModelingParameters(0);
930 G4bool reallyCullCovered =
973 return pModelingParams;
986 new G4Box(
"_sectioner", safe, safe, 1.e-5 * radius);
994 (
"_displaced_sectioning_box", sectionBox, requiredTransform);
1005 if (nPlanes == 0)
return nullptr;
1007 std::vector<G4DisplacedSolid*> cutaway_solids;
1011 auto cutawayBox =
new G4Box(
"_cutaway_box", safe, safe, safe);
1025 for (
size_t plane_no = 0; plane_no < nPlanes; plane_no++)
1027 const G4Plane3D& sp = vp.GetCutawayPlanes()[plane_no];
1030 switch (vp.GetCutawayMode()) {
1032 normal = -sp.normal();
1037 normal = sp.normal();
1042 cutaway_solids.push_back
1043 (
new G4DisplacedSolid(
"_displaced_cutaway_box", cutawayBox, requiredTransform));
1050 switch (vp.GetCutawayMode()) {
1056 else if (nPlanes == 3) {
1067 else if (nPlanes == 3) {
1076 "Not programmed for more than 3 cutaway planes");
1085 const std::map<G4String,G4AttDef>* vaDefs =
1096 const std::map<G4String,G4AttDef>* pvDefs = pPVModel->
GetAttDefs();
1105 const std::map<G4String,G4AttDef>* trajModelDefs = trajModel->
GetAttDefs();
1106 if (trajModelDefs) {
1112 const std::map<G4String,G4AttDef>* trajDefs = traj->
GetAttDefs();
1117 for (
G4int i = 0; i < nPoints; ++i) {
1120 const std::map<G4String,G4AttDef>* pointDefs = trajPoint->
GetAttDefs();
1133 const std::map<G4String,G4AttDef>* hitsDefs = hit->
GetAttDefs();
1161 if (lineWidth < 1.) lineWidth = 1.;
1162 lineWidth *=
fpViewer -> GetViewParameters().GetGlobalLineWidthScale();
1163 if (lineWidth < 1.) lineWidth = 1.;
1175 if (pVisAttribs -> IsForceDrawingStyle ()) {
1177 pVisAttribs -> GetForcedDrawingStyle ();
1180 switch (forcedStyle) {
1182 switch (viewerStyle) {
1210 return resultantStyle;
1219 if (pVisAttribs -> IsForceDrawingStyle() &&
1221 pVisAttribs -> GetForcedNumberOfCloudPoints() > 0) {
1222 numberOfCloudPoints = pVisAttribs -> GetForcedNumberOfCloudPoints();
1224 return numberOfCloudPoints;
1229 if (pVisAttribs -> IsForceAuxEdgeVisible()) {
1232 return isAuxEdgeVisible;
1241 fpViewer -> GetViewParameters().GetDefaultMarker();
1246 markerSizeType =
world;
1249 size = userSpecified ?
1254 size *=
fpViewer -> GetViewParameters().GetGlobalMarkerScale();
1255 if (markerSizeType ==
screen && size < 1.) size = 1.;
1268 if (lineSegmentsPerCircle < pVisAttribs->GetMinLineSegmentsPerCircle()) {
1271 "G4VSceneHandler::GetNoOfSides: attempt to set the"
1272 "\nnumber of line segments per circle < " << lineSegmentsPerCircle
1276 return lineSegmentsPerCircle;
1281 os <<
"Scene handler " << sh.
fName <<
" has "
1283 for (std::size_t i = 0; i < sh.
fViewerList.size (); ++i) {
1291 os <<
"\n This scene handler currently has no scene.";
1297void G4VSceneHandler::PseudoSceneFor3DRectMeshPositions::AddSolid(
const G4Box&) {
1306 fPositionByMaterial.insert(std::make_pair(material,
position));
1307 if (fNameAndVisAttsByMaterial.find(material) == fNameAndVisAttsByMaterial.end())
1309 fNameAndVisAttsByMaterial[material] = NameAndVisAtts(name,*pVisAtts);
1313void G4VSceneHandler::PseudoSceneForTetVertices::AddSolid(
const G4VSolid& solid) {
1314 if (fpPVModel->GetCurrentDepth() == fpMesh->GetMeshDepth()) {
1317 const auto& tet =
dynamic_cast<const G4Tet&
>(solid);
1318 const auto& material = fpPVModel->GetCurrentLV()->GetMaterial();
1319 const auto&
name = material? material->GetName(): fpMesh->GetContainerVolume()->GetName();
1320 const auto& pVisAtts = fpPVModel->GetCurrentLV()->GetVisAttributes();
1322 if (fpCurrentObjectTransformation->xx() == 1. &&
1323 fpCurrentObjectTransformation->yy() == 1. &&
1324 fpCurrentObjectTransformation->zz() == 1.) {
1325 const auto& vertices = tet.GetVertices();
1326 fVerticesByMaterial.insert(std::make_pair(material,vertices));
1328 auto vertices = tet.GetVertices();
1329 for (
auto&& vertex: vertices) {
1330 vertex =
G4Point3D(vertex).transform(*fpCurrentObjectTransformation);
1332 fVerticesByMaterial.insert(std::make_pair(material,vertices));
1334 if (fNameAndVisAttsByMaterial.find(material) == fNameAndVisAttsByMaterial.end())
1336 fNameAndVisAttsByMaterial[material] = NameAndVisAtts(name,*pVisAtts);
1338 catch (
const std::bad_cast&) {
1340 ed <<
"Called for a mesh that is not a tetrahedron mesh: " << solid.
GetName();
1351 G4bool implemented =
false;
1391 if (containerVisAtts ==
nullptr || containerVisAtts->IsVisible()) {
1392 auto solid = containerLogical->GetSolid();
1396 if (containerVisAtts !=
nullptr) tmpVisAtts = *containerVisAtts;
1398 polyhedron->SetVisAttributes(tmpVisAtts);
1418 ed <<
"Called with a mesh that is not rectangular:" << mesh;
1423 static G4bool firstPrint =
true;
1428 <<
"Special case drawing of 3D rectangular G4VNestedParameterisation as dots:"
1436 static std::map<G4String,std::map<const G4Material*,G4Polymarker>> dotsByMaterialAndMesh;
1440 if (dotsByMaterial.empty()) {
1448 const G4bool useFullExtent =
true;
1456 std::multimap<const G4Material*,const G4ThreeVector> positionByMaterial;
1457 std::map<const G4Material*,G4VSceneHandler::NameAndVisAtts> nameAndVisAttsByMaterial;
1460 (&tmpPVModel,&mesh,positionByMaterial,nameAndVisAttsByMaterial);
1467 const auto& halfX = prms.
fHalfX;
1468 const auto& halfY = prms.fHalfY;
1469 const auto& halfZ = prms.fHalfZ;
1472 G4int nDotsTotal = 0;
1473 for (
const auto& entry: nameAndVisAttsByMaterial) {
1475 const auto& material = entry.first;
1476 const auto& nameAndVisAtts = nameAndVisAttsByMaterial[material];
1477 const auto& name = nameAndVisAtts.fName;
1478 const auto& visAtts = nameAndVisAtts.fVisAtts;
1485 dotsByMaterial[material] = dots;
1487 auto& dotsInMap = dotsByMaterial[material];
1488 const auto& range = positionByMaterial.equal_range(material);
1489 for (
auto posByMat = range.first; posByMat != range.second; ++posByMat) {
1490 dotsInMap.push_back(
GetPointInBox(posByMat->second, halfX, halfY, halfZ));
1496 << std::setw(30) << std::left << name.substr(0,30) << std::right
1497 <<
": " << std::setw(7) << nDots <<
" dots"
1498 <<
": colour " << std::fixed << std::setprecision(2)
1499 << visAtts.GetColour() << std::defaultfloat
1503 nDotsTotal += nDots;
1507 G4cout <<
"Total number of dots: " << nDotsTotal <<
G4endl;
1516 parameterisationName = pPVModel->GetFullPVPath().back().GetPhysicalVolume()->GetName();
1527 for (
const auto& entry: dotsByMaterial) {
1528 const auto& dots = entry.second;
1535 const auto& fullPVPath = pPVModel->GetFullPVPath();
1536 auto leafPV = fullPVPath.back().GetPhysicalVolume();
1537 leafPV->SetName(dots.GetInfo());
1547 pPVModel->GetFullPVPath().back().GetPhysicalVolume()->SetName(parameterisationName);
1562 ed <<
"Called with a mesh that is not rectangular:" << mesh;
1567 static G4bool firstPrint =
true;
1572 <<
"Special case drawing of 3D rectangular G4VNestedParameterisation as surfaces:"
1580 static std::map<G4String,std::map<const G4Material*,G4Polyhedron>> boxesByMaterialAndMesh;
1584 if (boxesByMaterial.empty()) {
1592 const G4bool useFullExtent =
true;
1600 std::multimap<const G4Material*,const G4ThreeVector> positionByMaterial;
1601 std::map<const G4Material*,G4VSceneHandler::NameAndVisAtts> nameAndVisAttsByMaterial;
1604 (&tmpPVModel,&mesh,positionByMaterial,nameAndVisAttsByMaterial);
1611 const auto& sizeX = 2.*prms.
fHalfX;
1612 const auto& sizeY = 2.*prms.fHalfY;
1613 const auto& sizeZ = 2.*prms.fHalfZ;
1616 G4int nBoxesTotal = 0, nFacetsTotal = 0;
1617 for (
const auto& entry: nameAndVisAttsByMaterial) {
1619 const auto& material = entry.first;
1620 const auto& nameAndVisAtts = nameAndVisAttsByMaterial[material];
1621 const auto& name = nameAndVisAtts.fName;
1622 const auto& visAtts = nameAndVisAtts.fVisAtts;
1624 std::vector<G4ThreeVector> positionsForPolyhedron;
1625 const auto& range = positionByMaterial.equal_range(material);
1626 for (
auto posByMat = range.first; posByMat != range.second; ++posByMat) {
1627 const auto&
position = posByMat->second;
1628 positionsForPolyhedron.push_back(
position);
1633 auto& polyhedron = boxesByMaterial[material];
1636 polyhedron.SetVisAttributes(visAtts);
1637 polyhedron.SetInfo(name);
1641 << std::setw(30) << std::left << name.substr(0,30) << std::right
1642 <<
": " << std::setw(7) << nBoxes <<
" boxes"
1643 <<
" (" << std::setw(7) << 6*nBoxes <<
" faces)"
1644 <<
": reduced to " << std::setw(7) << polyhedron.GetNoFacets() <<
" facets ("
1645 << std::setw(2) << std::fixed << std::setprecision(2) << 100*polyhedron.GetNoFacets()/(6*nBoxes)
1646 <<
"%): colour " << std::fixed << std::setprecision(2)
1647 << visAtts.GetColour() << std::defaultfloat
1651 nBoxesTotal += nBoxes;
1652 nFacetsTotal += polyhedron.GetNoFacets();
1656 G4cout <<
"Total number of boxes: " << nBoxesTotal <<
" (" << 6*nBoxesTotal <<
" faces)"
1657 <<
": reduced to " << nFacetsTotal <<
" facets ("
1658 << std::setw(2) << std::fixed << std::setprecision(2) << 100*nFacetsTotal/(6*nBoxesTotal) <<
"%)"
1668 parameterisationName = pPVModel->GetFullPVPath().back().GetPhysicalVolume()->GetName();
1674 for (
const auto& entry: boxesByMaterial) {
1675 const auto& poly = entry.second;
1682 const auto& fullPVPath = pPVModel->GetFullPVPath();
1683 auto leafPV = fullPVPath.back().GetPhysicalVolume();
1684 leafPV->SetName(poly.GetInfo());
1691 pPVModel->GetFullPVPath().back().GetPhysicalVolume()->SetName(parameterisationName);
1705 ed <<
"Called with mesh that is not a tetrahedron mesh:" << mesh;
1710 static G4bool firstPrint =
true;
1716 <<
"Special case drawing of tetrahedron mesh as dots"
1724 static std::map<G4String,std::map<const G4Material*,G4Polymarker>> dotsByMaterialAndMesh;
1728 if (dotsByMaterial.empty()) {
1736 const G4bool useFullExtent =
true;
1744 std::multimap<const G4Material*,std::vector<G4ThreeVector>> verticesByMaterial;
1745 std::map<const G4Material*,G4VSceneHandler::NameAndVisAtts> nameAndVisAttsByMaterial;
1748 (&tmpPVModel,&mesh,verticesByMaterial,nameAndVisAttsByMaterial);
1755 G4int nDotsTotal = 0;
1756 for (
const auto& entry: nameAndVisAttsByMaterial) {
1758 const auto& material = entry.first;
1759 const auto& nameAndVisAtts = nameAndVisAttsByMaterial[material];
1760 const auto& name = nameAndVisAtts.fName;
1761 const auto& visAtts = nameAndVisAtts.fVisAtts;
1768 dotsByMaterial[material] = dots;
1770 auto& dotsInMap = dotsByMaterial[material];
1771 const auto& range = verticesByMaterial.equal_range(material);
1772 for (
auto vByMat = range.first; vByMat != range.second; ++vByMat) {
1779 << std::setw(30) << std::left << name.substr(0,30) << std::right
1780 <<
": " << std::setw(7) << nDots <<
" dots"
1781 <<
": colour " << std::fixed << std::setprecision(2)
1782 << visAtts.GetColour() << std::defaultfloat
1786 nDotsTotal += nDots;
1790 G4cout <<
"Total number of dots: " << nDotsTotal <<
G4endl;
1799 parameterisationName = pPVModel->GetFullPVPath().back().GetPhysicalVolume()->GetName();
1811 for (
const auto& entry: dotsByMaterial) {
1812 const auto& dots = entry.second;
1819 const auto& fullPVPath = pPVModel->GetFullPVPath();
1820 auto leafPV = fullPVPath.back().GetPhysicalVolume();
1821 leafPV->SetName(dots.GetInfo());
1831 pPVModel->GetFullPVPath().back().GetPhysicalVolume()->SetName(parameterisationName);
1845 ed <<
"Called with mesh that is not a tetrahedron mesh:" << mesh;
1850 static G4bool firstPrint =
true;
1856 <<
"Special case drawing of tetrahedron mesh as surfaces"
1862 static std::map<G4String,std::map<const G4Material*,G4Polyhedron>> surfacesByMaterialAndMesh;
1866 if (surfacesByMaterial.empty()) {
1874 const G4bool useFullExtent =
true;
1882 std::multimap<const G4Material*,std::vector<G4ThreeVector>> verticesByMaterial;
1883 std::map<const G4Material*,G4VSceneHandler::NameAndVisAtts> nameAndVisAttsByMaterial;
1886 (&tmpPVModel,&mesh,verticesByMaterial,nameAndVisAttsByMaterial);
1893 G4int nTetsTotal = 0, nFacetsTotal = 0;
1894 for (
const auto& entry: nameAndVisAttsByMaterial) {
1896 const auto& material = entry.first;
1897 const auto& nameAndVisAtts = nameAndVisAttsByMaterial[material];
1898 const auto& name = nameAndVisAtts.fName;
1899 const auto& visAtts = nameAndVisAtts.fVisAtts;
1901 std::vector<G4ThreeVector> verticesForPolyhedron;
1902 const auto& range = verticesByMaterial.equal_range(material);
1903 for (
auto vByMat = range.first; vByMat != range.second; ++vByMat) {
1904 const std::vector<G4ThreeVector>& vertices = vByMat->second;
1905 for (
const auto& vertex: vertices)
1906 verticesForPolyhedron.push_back(vertex);
1911 auto& polyhedron = surfacesByMaterial[material];
1914 polyhedron.SetVisAttributes(visAtts);
1915 polyhedron.SetInfo(name);
1919 << std::setw(30) << std::left << name.substr(0,30) << std::right
1920 <<
": " << std::setw(7) << nTets <<
" tetrahedra"
1921 <<
" (" << std::setw(7) << 4*nTets <<
" faces)"
1922 <<
": reduced to " << std::setw(7) << polyhedron.GetNoFacets() <<
" facets ("
1923 << std::setw(2) << std::fixed << std::setprecision(2) << 100*polyhedron.GetNoFacets()/(4*nTets)
1924 <<
"%): colour " << std::fixed << std::setprecision(2)
1925 << visAtts.GetColour() << std::defaultfloat
1929 nTetsTotal += nTets;
1930 nFacetsTotal += polyhedron.GetNoFacets();
1934 G4cout <<
"Total number of tetrahedra: " << nTetsTotal <<
" (" << 4*nTetsTotal <<
" faces)"
1935 <<
": reduced to " << nFacetsTotal <<
" facets ("
1936 << std::setw(2) << std::fixed << std::setprecision(2) << 100*nFacetsTotal/(4*nTetsTotal) <<
"%)"
1946 parameterisationName = pPVModel->GetFullPVPath().back().GetPhysicalVolume()->GetName();
1952 for (
const auto& entry: surfacesByMaterial) {
1953 const auto& poly = entry.second;
1960 const auto& fullPVPath = pPVModel->GetFullPVPath();
1961 auto leafPV = fullPVPath.back().GetPhysicalVolume();
1962 leafPV->SetName(poly.GetInfo());
1970 pPVModel->GetFullPVPath().back().GetPhysicalVolume()->SetName(parameterisationName);
2006 else if (p + q + r > 1.)
2013 return vertices[0]*a + vertices[1]*p + vertices[2]*q + vertices[3]*r;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
HepGeom::Point3D< G4double > G4Point3D
CLHEP::Hep3Vector G4ThreeVector
std::ostream & operator<<(std::ostream &os, const G4VSceneHandler &sh)
std::vector< G4VViewer * >::iterator G4ViewerListIterator
void print(G4double elem)
G4GLOB_DLL std::ostream G4cout
Hep3Vector orthogonal() const
void AddAtts(const std::vector< G4AttValue > *values, const std::map< G4String, G4AttDef > *defs)
const G4VHit * GetCurrentHit() const
G4VSolid * GetSolid() const
const G4VisAttributes * GetVisAttributes() const
G4Material * GetMaterial() const
MeshType GetMeshType() const
G4VPhysicalVolume * GetContainerVolume() const
const G4Transform3D & GetTransform() const
const ThreeDRectangleParameters & GetThreeDRectParameters() const
G4int GetMeshDepth() const
void SetCBDParameters(const std::vector< G4double > &)
void SetNumberOfCloudPoints(G4int)
void SetCBDAlgorithmNumber(G4int)
void SetExplodeFactor(G4double explodeFactor)
void SetVisAttributesModifiers(const std::vector< VisAttributesModifier > &)
void SetExplodeCentre(const G4Point3D &explodeCentre)
void SetCutawayMode(CutawayMode)
void SetCutawaySolid(G4DisplacedSolid *pCutawaySolid)
void SetSectionSolid(G4DisplacedSolid *pSectionSolid)
void SetEvent(const G4Event *pEvent)
void SetCullingInvisible(G4bool)
void SetSpecialMeshVolumes(const std::vector< PVNameCopyNo > &)
void SetSpecialMeshRendering(G4bool)
std::vector< G4AttValue > * CreateCurrentAttValues() const
void DescribeYourselfTo(G4VGraphicsScene &)
G4LogicalVolume * GetCurrentLV() const
const std::vector< G4PhysicalVolumeNodeID > & GetFullPVPath() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
G4int GetCurrentDepth() const
void SetMarkerType(MarkerType)
MarkerType GetMarkerType() const
const G4Transform3D * fpCurrentObjectTransformation
static G4RunManager * GetMasterRunManager()
const G4Run * GetCurrentRun() const
std::vector< const G4Event * > * GetEventVector() const
const std::vector< Model > & GetRunDurationModelList() const
G4bool GetRefreshAtEndOfEvent() const
const G4VisExtent & GetExtent() const
G4bool GetRefreshAtEndOfRun() const
G4VScoringMesh * GetMesh(G4int i) const
size_t GetNumberOfMesh() const
static G4ScoringManager * GetScoringManagerIfExist()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
const G4VTrajectory * GetCurrentTrajectory() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
const G4String & GetName() const
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
G4double GetScreenSize() const
void SetSize(SizeType, G4double)
void SetScreenSize(G4double)
void SetWorldSize(G4double)
void SetPosition(const G4Point3D &)
G4double GetWorldSize() const
void SetModelingParameters(const G4ModelingParameters *)
virtual void DescribeYourselfTo(G4VGraphicsScene &)=0
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
virtual void BeginModeling()
G4int GetNumberOfCloudPoints(const G4VisAttributes *) const
G4int GetNoOfSides(const G4VisAttributes *)
void DrawTetMeshAsSurfaces(const G4Mesh &)
virtual void ClearTransientStore()
void LoadAtts(const G4Visible &, G4AttHolder *)
void DrawEvent(const G4Event *)
G4ModelingParameters * CreateModelingParameters()
const G4Colour & GetTextColour(const G4Text &)
const G4Colour & GetColour()
void Draw3DRectMeshAsDots(const G4Mesh &)
void AddSolidT(const T &solid)
G4Transform3D fObjectTransformation
virtual void EndPrimitives()
G4bool fTransientsDrawnThisEvent
void AddSolidWithAuxiliaryEdges(const T &solid)
virtual G4DisplacedSolid * CreateSectionSolid()
virtual void EndModeling()
virtual const G4VisExtent & GetExtent() const
virtual void ProcessScene()
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
virtual void PreAddSolid(const G4Transform3D &objectTransformation, const G4VisAttributes &)
G4VSceneHandler(G4VGraphicsSystem &system, G4int id, const G4String &name="")
G4bool fTransientsDrawnThisRun
virtual void PostAddSolid()
const G4String & GetName() const
void AddViewerToList(G4VViewer *pView)
virtual void EndPrimitives2D()
virtual void SetScene(G4Scene *)
void DrawEndOfRunModels()
G4bool fMarkForClearingTransientStore
const G4VisAttributes * fpVisAttribs
virtual void BeginPrimitives2D(const G4Transform3D &objectTransformation=G4Transform3D())
G4ThreeVector GetPointInBox(const G4ThreeVector &pos, G4double halfX, G4double halfY, G4double halfZ) const
virtual void RequestPrimitives(const G4VSolid &solid)
G4bool fReadyForTransients
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
void RemoveViewerFromList(G4VViewer *pView)
virtual G4DisplacedSolid * CreateCutawaySolid()
void DrawTetMeshAsDots(const G4Mesh &)
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())
G4double GetLineWidth(const G4VisAttributes *)
G4ThreeVector GetPointInTet(const std::vector< G4ThreeVector > &vertices) const
G4VGraphicsSystem & fSystem
virtual void AddSolid(const G4Box &)
virtual void ClearStore()
void Draw3DRectMeshAsSurfaces(const G4Mesh &)
virtual void AddCompound(const G4VTrajectory &)
virtual ~G4VSceneHandler()
virtual void AddPrimitive(const G4Polyline &)=0
G4bool GetAuxEdgeVisible(const G4VisAttributes *)
void StandardSpecialMeshRendering(const G4Mesh &)
std::map< G4String, RunScore * > MeshScoreMap
void DrawMesh(const G4String &psName, G4VScoreColorMap *colorMap, G4int axflg=111)
MeshScoreMap GetScoreMap() const
virtual G4ThreeVector GetPointOnSurface() const
virtual G4Polyhedron * GetPolyhedron() const
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual G4VTrajectoryPoint * GetPoint(G4int i) const =0
virtual G4int GetPointEntries() const =0
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual void DrawTrajectory() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
void SetViewer(G4VViewer *pViewer)
const G4VisAttributes * GetApplicableVisAttributes(const G4VisAttributes *) const
const G4ViewParameters & GetViewParameters() const
G4SceneTreeItem & AccessSceneTree()
void SetViewParameters(const G4ViewParameters &vp)
SceneTreeScene & AccessSceneTreeScene()
static G4VVisManager * GetConcreteInstance()
const std::vector< G4ModelingParameters::VisAttributesModifier > & GetVisAttributesModifiers() const
G4int GetNoOfSides() const
G4bool IsSpecialMeshRendering() const
CutawayMode GetCutawayMode() const
G4double GetExplodeFactor() const
G4int GetNumberOfCloudPoints() const
const G4VisAttributes * GetDefaultTextVisAttributes() const
const std::vector< G4double > & GetCBDParameters() const
G4int GetCBDAlgorithmNumber() const
const std::vector< G4ModelingParameters::PVNameCopyNo > & GetSpecialMeshVolumes() const
G4bool IsCullingInvisible() const
const G4VisAttributes * GetDefaultVisAttributes() const
const G4Planes & GetCutawayPlanes() const
G4bool IsDensityCulling() const
G4double GetVisibleDensity() const
SMROption GetSpecialMeshRenderingOption() const
const G4Point3D & GetExplodeCentre() const
G4bool IsCullingCovered() const
const G4Plane3D & GetSectionPlane() const
DrawingStyle GetDrawingStyle() const
G4bool IsAuxEdgeVisible() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
G4bool IsForceLineSegmentsPerCircle() const
G4double GetLineWidth() const
void SetColour(const G4Colour &)
void SetVisibility(G4bool=true)
void SetForceAuxEdgeVisible(G4bool=true)
G4int GetForcedLineSegmentsPerCircle() const
void SetForceWireframe(G4bool=true)
const std::vector< G4AttValue > * CreateAttValues() const
const G4Colour & GetColour() const
G4bool IsForceAuxEdgeVisible() const
G4bool IsForcedAuxEdgeVisible() const
static G4int GetMinLineSegmentsPerCircle()
static const G4VisExtent & GetNullExtent()
G4double GetExtentRadius() const
const G4Point3D & GetExtentCentre() const
void SetEventRefreshing(G4bool)
G4bool GetTransientsDrawnThisEvent() const
G4bool GetTransientsDrawnThisRun() const
static Verbosity GetVerbosity()
const G4Event * GetRequestedEvent() const
static G4VisManager * GetInstance()
void SetVisAttributes(const G4VisAttributes *)
const G4VisAttributes * GetVisAttributes() const
virtual void SetInfo(const G4String &info)
static void SetNumberOfRotationSteps(G4int n)
static void ResetNumberOfRotationSteps()
const char * name(G4int ptype)