Geant4-11
Data Structures | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Types
G4ToolsSGSceneHandler Class Reference

#include <G4ToolsSGSceneHandler.hh>

Inheritance diagram for G4ToolsSGSceneHandler:
G4VSceneHandler G4VGraphicsScene

Data Structures

class  Messenger
 

Public Types

enum  MarkerSizeType { world , screen }
 

Public Member Functions

virtual void AddCompound (const G4Mesh &)
 
virtual void AddCompound (const G4THitsMap< G4double > &)
 
virtual void AddCompound (const G4THitsMap< G4StatDouble > &)
 
virtual void AddCompound (const G4VDigi &)
 
virtual void AddCompound (const G4VHit &)
 
virtual void AddCompound (const G4VTrajectory &)
 
virtual void AddPrimitive (const G4Circle &)
 
virtual void AddPrimitive (const G4Plotter &)
 
virtual void AddPrimitive (const G4Polyhedron &)
 
virtual void AddPrimitive (const G4Polyline &)
 
virtual void AddPrimitive (const G4Polymarker &)
 
virtual void AddPrimitive (const G4Square &)
 
virtual void AddPrimitive (const G4Text &)
 
virtual void AddSolid (const G4Box &)
 
virtual void AddSolid (const G4Cons &)
 
virtual void AddSolid (const G4Ellipsoid &)
 
virtual void AddSolid (const G4Orb &)
 
virtual void AddSolid (const G4Para &)
 
virtual void AddSolid (const G4Polycone &)
 
virtual void AddSolid (const G4Polyhedra &)
 
virtual void AddSolid (const G4Sphere &)
 
virtual void AddSolid (const G4TessellatedSolid &)
 
virtual void AddSolid (const G4Torus &)
 
virtual void AddSolid (const G4Trap &)
 
virtual void AddSolid (const G4Trd &)
 
virtual void AddSolid (const G4Tubs &)
 
virtual void AddSolid (const G4VSolid &)
 
template<class T >
void AddSolidT (const T &solid)
 
template<class T >
void AddSolidWithAuxiliaryEdges (const T &solid)
 
void AddViewerToList (G4VViewer *pView)
 
virtual void BeginModeling ()
 
virtual void BeginPrimitives (const G4Transform3D &objectTransformation=G4Transform3D())
 
virtual void BeginPrimitives2D (const G4Transform3D &objectTransformation=G4Transform3D())
 
virtual void ClearStore ()
 
virtual void ClearTransientStore ()
 
G4ModelingParametersCreateModelingParameters ()
 
void DrawEndOfRunModels ()
 
void DrawEvent (const G4Event *)
 
virtual void EndModeling ()
 
virtual void EndPrimitives ()
 
virtual void EndPrimitives2D ()
 
 G4ToolsSGSceneHandler (G4VGraphicsSystem &system, const G4String &name)
 
G4bool GetAuxEdgeVisible (const G4VisAttributes *)
 
const G4ColourGetColor ()
 
const G4ColourGetColor (const G4Visible &)
 
const G4ColourGetColour ()
 
const G4ColourGetColour (const G4Visible &)
 
G4VViewerGetCurrentViewer () const
 
G4ViewParameters::DrawingStyle GetDrawingStyle (const G4VisAttributes *)
 
virtual const G4VisExtentGetExtent () const
 
G4VGraphicsSystemGetGraphicsSystem () const
 
G4double GetLineWidth (const G4VisAttributes *)
 
G4double GetMarkerDiameter (const G4VMarker &, MarkerSizeType &)
 
G4double GetMarkerRadius (const G4VMarker &, MarkerSizeType &)
 
G4double GetMarkerSize (const G4VMarker &, MarkerSizeType &)
 
G4bool GetMarkForClearingTransientStore () const
 
G4VModelGetModel () const
 
const G4StringGetName () const
 
G4int GetNoOfSides (const G4VisAttributes *)
 
G4int GetNumberOfCloudPoints (const G4VisAttributes *) const
 
const G4Transform3DGetObjectTransformation () const
 
tools::sg::separator & GetPersistent2DObjects ()
 
tools::sg::separator & GetPersistent3DObjects ()
 
G4SceneGetScene () const
 
G4int GetSceneHandlerId () const
 
const G4ColourGetTextColor (const G4Text &)
 
const G4ColourGetTextColour (const G4Text &)
 
tools::sg::separator & GetTransient2DObjects ()
 
tools::sg::separator & GetTransient3DObjects ()
 
G4bool GetTransientsDrawnThisEvent () const
 
G4bool GetTransientsDrawnThisRun () const
 
G4int GetViewCount () const
 
const G4ViewerListGetViewerList () const
 
G4int IncrementViewCount ()
 
G4bool IsReadyForTransients () const
 
virtual void PostAddSolid ()
 
virtual void PreAddSolid (const G4Transform3D &objectTransformation, const G4VisAttributes &)
 
void RemoveViewerFromList (G4VViewer *pView)
 
void SetCurrentViewer (G4VViewer *)
 
void SetMarkForClearingTransientStore (G4bool)
 
void SetModel (G4VModel *)
 
void SetName (const G4String &)
 
void SetObjectTransformation (const G4Transform3D &)
 
virtual void SetScene (G4Scene *)
 
void SetTransientsDrawnThisEvent (G4bool)
 
void SetTransientsDrawnThisRun (G4bool)
 
G4ViewerListSetViewerList ()
 
void TouchPlotters (tools::sg::node &)
 
virtual ~G4ToolsSGSceneHandler ()
 

Protected Types

using Region_h1 = std::pair< unsigned int, int >
 
using Region_h2 = std::pair< unsigned int, int >
 

Protected Member Functions

virtual G4DisplacedSolidCreateCutawaySolid ()
 
virtual G4DisplacedSolidCreateSectionSolid ()
 
void CreateSG ()
 
void EstablishBaseNodes ()
 
 G4ToolsSGSceneHandler (const G4ToolsSGSceneHandler &)
 
tools::sg::separator * GetOrCreateNode ()
 
void LoadAtts (const G4Visible &, G4AttHolder *)
 
G4ToolsSGSceneHandleroperator= (const G4ToolsSGSceneHandler &)
 
virtual void ProcessScene ()
 
virtual void RequestPrimitives (const G4VSolid &solid)
 
void SetPlotterHistograms (tools::sg::plots &)
 

Protected Attributes

tools::sg::base_freetype * fFreetypeNode
 
const G4Transform3D fIdentityTransformation
 
G4bool fMarkForClearingTransientStore
 
G4String fName
 
G4int fNestingDepth
 
G4Transform3D fObjectTransformation
 
G4VModelfpModel
 
tools::sg::separator fpPersistent2DObjects
 
tools::sg::separator fpPersistent3DObjects
 
std::vector< G4ToolsSGNode * > fpPhysicalVolumeObjects
 
G4bool fProcessing2D
 
G4bool fProcessingSolid
 
G4ScenefpScene
 
tools::sg::separator fpTransient2DObjects
 
tools::sg::separator fpTransient3DObjects
 
G4VViewerfpViewer
 
const G4VisAttributesfpVisAttribs
 
G4bool fReadyForTransients
 
std::vector< Region_h1fRegionH1s
 
std::vector< Region_h2fRegionH2s
 
const G4int fSceneHandlerId
 
G4VGraphicsSystemfSystem
 
G4bool fTransientsDrawnThisEvent
 
G4bool fTransientsDrawnThisRun
 
G4int fViewCount
 
G4ViewerList fViewerList
 

Static Protected Attributes

static G4int fSceneIdCount = 0
 

Private Types

typedef G4VSceneHandler parent
 

Detailed Description

Definition at line 44 of file G4ToolsSGSceneHandler.hh.

Member Typedef Documentation

◆ parent

Definition at line 45 of file G4ToolsSGSceneHandler.hh.

◆ Region_h1

using G4ToolsSGSceneHandler::Region_h1 = std::pair<unsigned int,int>
protected

Definition at line 91 of file G4ToolsSGSceneHandler.hh.

◆ Region_h2

using G4ToolsSGSceneHandler::Region_h2 = std::pair<unsigned int,int>
protected

Definition at line 92 of file G4ToolsSGSceneHandler.hh.

Member Enumeration Documentation

◆ MarkerSizeType

Enumerator
world 
screen 

Definition at line 58 of file G4VSceneHandler.hh.

Constructor & Destructor Documentation

◆ G4ToolsSGSceneHandler() [1/2]

G4ToolsSGSceneHandler::G4ToolsSGSceneHandler ( G4VGraphicsSystem system,
const G4String name 
)

Definition at line 75 of file G4ToolsSGSceneHandler.cc.

77:parent(system, fSceneIdCount++, name)
79{
80 //::printf("debug : G4ToolsSGSceneHandler : %lu, %s\n",this,name.c_str());
82#if defined(TOOLS_USE_FREETYPE)
83 fFreetypeNode = new tools::sg::text_freetype();
84 fFreetypeNode->add_embedded_font(tools::sg::font_lato_regular_ttf(),tools::font::lato_regular_ttf);
85 fFreetypeNode->add_embedded_font(tools::sg::font_roboto_bold_ttf(),tools::font::roboto_bold_ttf);
86#else
87 fFreetypeNode = new tools::sg::dummy_freetype();
88#endif
90}
tools::sg::base_freetype * fFreetypeNode
const char * name(G4int ptype)

References G4ToolsSGSceneHandler::Messenger::Create(), EstablishBaseNodes(), and fFreetypeNode.

◆ ~G4ToolsSGSceneHandler()

G4ToolsSGSceneHandler::~G4ToolsSGSceneHandler ( )
virtual

Definition at line 92 of file G4ToolsSGSceneHandler.cc.

93{
94 //::printf("debug : ~G4ToolsSGSceneHandler : %lu\n",this);
95 //WARNING : nodes may refer graphics managers (as tools/sg/[GL_manager,gl2ps_manager,zb_manager]
96 // used by viewers) to handle gstos (for GPU) or textures, then we have to delete them first.
97 // It is assumed that we pass here BEFORE the attached/managed viewers are deleted.
100 fpTransient3DObjects.clear();
101 fpPersistent3DObjects.clear();
102 delete fFreetypeNode;
103}
tools::sg::separator fpPersistent2DObjects
tools::sg::separator fpTransient3DObjects
tools::sg::separator fpTransient2DObjects
tools::sg::separator fpPersistent3DObjects

References fFreetypeNode, fpPersistent2DObjects, fpPersistent3DObjects, fpTransient2DObjects, and fpTransient3DObjects.

◆ G4ToolsSGSceneHandler() [2/2]

G4ToolsSGSceneHandler::G4ToolsSGSceneHandler ( const G4ToolsSGSceneHandler )
protected

Member Function Documentation

◆ AddCompound() [1/6]

void G4VSceneHandler::AddCompound ( const G4Mesh mesh)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4Qt3DSceneHandler, G4VRML2FileSceneHandler, and G4VtkSceneHandler.

Definition at line 426 of file G4VSceneHandler.cc.

427{
429 ed << "There has been an attempt to draw a mesh (a nested parameterisation),"
430 "\nbut it is not implemented by the current graphics driver. Here we simply"
431 "\ndraw the container, \"" << mesh.GetContainerVolume()->GetName() << "\".";
432 G4Exception("G4VSceneHandler::AddCompound(const G4Mesh&)",
433 "visman0107", JustWarning, ed);
434
435 const auto& pv = mesh.GetContainerVolume();
436 const auto& lv = pv->GetLogicalVolume();
437 const auto& solid = lv->GetSolid();
438 const auto& transform = mesh.GetTransform();
439 // Make sure container is visible
440 const auto& saveVisAtts = lv->GetVisAttributes();
441 auto tmpVisAtts = *saveVisAtts;
442 tmpVisAtts.SetVisibility(true);
443 auto colour = saveVisAtts->GetColour();
444 colour.SetAlpha(1.);
445 tmpVisAtts.SetColour(colour);
446 // Draw container
447 PreAddSolid(transform,tmpVisAtts);
448 solid->DescribeYourselfTo(*this);
449 PostAddSolid();
450 // Restore vis attributes
451 lv->SetVisAttributes(saveVisAtts);
452}
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4VSolid * GetSolid() const
G4VPhysicalVolume * GetContainerVolume() const
Definition: G4Mesh.hh:61
const G4Transform3D & GetTransform() const
Definition: G4Mesh.hh:64
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
virtual void PreAddSolid(const G4Transform3D &objectTransformation, const G4VisAttributes &)
virtual void PostAddSolid()
G4bool transform(G4String &input, const G4String &type)

References G4Exception(), G4Mesh::GetContainerVolume(), G4VPhysicalVolume::GetLogicalVolume(), G4VPhysicalVolume::GetName(), G4LogicalVolume::GetSolid(), G4Mesh::GetTransform(), JustWarning, G4VSceneHandler::PostAddSolid(), G4VSceneHandler::PreAddSolid(), and G4coutFormatters::anonymous_namespace{G4coutFormatters.cc}::transform().

◆ AddCompound() [2/6]

void G4VSceneHandler::AddCompound ( const G4THitsMap< G4double > &  hits)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, and G4GMocrenFileSceneHandler.

Definition at line 340 of file G4VSceneHandler.cc.

340 {
341 using MeshScoreMap = G4VScoringMesh::MeshScoreMap;
342 //G4cout << "AddCompound: hits: " << &hits << G4endl;
343 G4bool scoreMapHits = false;
345 if (scoringManager) {
346 size_t nMeshes = scoringManager->GetNumberOfMesh();
347 for (size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
348 G4VScoringMesh* mesh = scoringManager->GetMesh(iMesh);
349 if (mesh && mesh->IsActive()) {
350 MeshScoreMap scoreMap = mesh->GetScoreMap();
351 const G4String& mapNam = const_cast<G4THitsMap<G4double>&>(hits).GetName();
352 for(MeshScoreMap::const_iterator i = scoreMap.begin();
353 i != scoreMap.end(); ++i) {
354 const G4String& scoreMapName = i->first;
355 if (scoreMapName == mapNam) {
356 G4DefaultLinearColorMap colorMap("G4VSceneHandlerColorMap");
357 scoreMapHits = true;
358 mesh->DrawMesh(scoreMapName, &colorMap);
359 }
360 }
361 }
362 }
363 }
364 if (scoreMapHits) {
365 static G4bool first = true;
366 if (first) {
367 first = false;
368 G4cout <<
369 "Scoring map drawn with default parameters."
370 "\n To get gMocren file for gMocren browser:"
371 "\n /vis/open gMocrenFile"
372 "\n /vis/viewer/flush"
373 "\n Many other options available with /score/draw... commands."
374 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
375 << G4endl;
376 }
377 } else { // Not score map hits. Just call DrawAllHits.
378 // Cast away const because DrawAllHits is non-const!!!!
379 const_cast<G4THitsMap<G4double>&>(hits).DrawAllHits();
380 }
381}
bool G4bool
Definition: G4Types.hh:86
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4VScoringMesh * GetMesh(G4int i) const
size_t GetNumberOfMesh() const
static G4ScoringManager * GetScoringManagerIfExist()
const G4String & GetName() const
G4bool IsActive() const
std::map< G4String, RunScore * > MeshScoreMap
void DrawMesh(const G4String &psName, G4VScoreColorMap *colorMap, G4int axflg=111)
MeshScoreMap GetScoreMap() const

References G4VScoringMesh::DrawMesh(), G4cout, G4endl, G4ScoringManager::GetMesh(), G4VSceneHandler::GetName(), G4ScoringManager::GetNumberOfMesh(), G4VScoringMesh::GetScoreMap(), G4ScoringManager::GetScoringManagerIfExist(), and G4VScoringMesh::IsActive().

◆ AddCompound() [3/6]

void G4VSceneHandler::AddCompound ( const G4THitsMap< G4StatDouble > &  hits)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, and G4GMocrenFileSceneHandler.

Definition at line 383 of file G4VSceneHandler.cc.

383 {
384 using MeshScoreMap = G4VScoringMesh::MeshScoreMap;
385 //G4cout << "AddCompound: hits: " << &hits << G4endl;
386 G4bool scoreMapHits = false;
388 if (scoringManager) {
389 size_t nMeshes = scoringManager->GetNumberOfMesh();
390 for (size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
391 G4VScoringMesh* mesh = scoringManager->GetMesh(iMesh);
392 if (mesh && mesh->IsActive()) {
393 MeshScoreMap scoreMap = mesh->GetScoreMap();
394 for(MeshScoreMap::const_iterator i = scoreMap.begin();
395 i != scoreMap.end(); ++i) {
396 const G4String& scoreMapName = i->first;
397 const G4THitsMap<G4StatDouble>* foundHits = i->second;
398 if (foundHits == &hits) {
399 G4DefaultLinearColorMap colorMap("G4VSceneHandlerColorMap");
400 scoreMapHits = true;
401 mesh->DrawMesh(scoreMapName, &colorMap);
402 }
403 }
404 }
405 }
406 }
407 if (scoreMapHits) {
408 static G4bool first = true;
409 if (first) {
410 first = false;
411 G4cout <<
412 "Scoring map drawn with default parameters."
413 "\n To get gMocren file for gMocren browser:"
414 "\n /vis/open gMocrenFile"
415 "\n /vis/viewer/flush"
416 "\n Many other options available with /score/draw... commands."
417 "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
418 << G4endl;
419 }
420 } else { // Not score map hits. Just call DrawAllHits.
421 // Cast away const because DrawAllHits is non-const!!!!
422 const_cast<G4THitsMap<G4StatDouble>&>(hits).DrawAllHits();
423 }
424}

References G4VScoringMesh::DrawMesh(), G4cout, G4endl, G4ScoringManager::GetMesh(), G4ScoringManager::GetNumberOfMesh(), G4VScoringMesh::GetScoreMap(), G4ScoringManager::GetScoringManagerIfExist(), and G4VScoringMesh::IsActive().

◆ AddCompound() [4/6]

void G4VSceneHandler::AddCompound ( const G4VDigi digi)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, and G4GMocrenFileSceneHandler.

Definition at line 335 of file G4VSceneHandler.cc.

335 {
336 // Cast away const because Draw is non-const!!!!
337 const_cast<G4VDigi&>(digi).Draw();
338}

◆ AddCompound() [5/6]

void G4VSceneHandler::AddCompound ( const G4VHit hit)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, and G4GMocrenFileSceneHandler.

Definition at line 330 of file G4VSceneHandler.cc.

330 {
331 // Cast away const because Draw is non-const!!!!
332 const_cast<G4VHit&>(hit).Draw();
333}
Definition: G4VHit.hh:48

◆ AddCompound() [6/6]

void G4VSceneHandler::AddCompound ( const G4VTrajectory traj)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, and G4GMocrenFileSceneHandler.

Definition at line 318 of file G4VSceneHandler.cc.

318 {
319 G4TrajectoriesModel* trajectoriesModel =
320 dynamic_cast<G4TrajectoriesModel*>(fpModel);
321 if (trajectoriesModel)
322 traj.DrawTrajectory();
323 else {
325 ("G4VSceneHandler::AddCompound(const G4VTrajectory&)",
326 "visman0105", FatalException, "Not a G4TrajectoriesModel.");
327 }
328}
@ FatalException
virtual void DrawTrajectory() const

References G4VTrajectory::DrawTrajectory(), FatalException, G4VSceneHandler::fpModel, and G4Exception().

Referenced by G4Qt3DSceneHandler::AddCompound(), G4VtkSceneHandler::AddCompound(), G4HepRepFileSceneHandler::AddCompound(), G4OpenGLSceneHandler::AddCompound(), and G4GMocrenFileSceneHandler::AddCompound().

◆ AddPrimitive() [1/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Circle a_circle)
virtual

Implements G4VSceneHandler.

Definition at line 402 of file G4ToolsSGSceneHandler.cc.

403{
404 G4Polymarker oneCircle(a_circle);
405 oneCircle.push_back(a_circle.GetPosition());
406 oneCircle.SetMarkerType(G4Polymarker::circles);
407 // Call this AddPrimitive to avoid re-doing sub-class code.
409}
virtual void AddPrimitive(const G4Polyline &)
G4Point3D GetPosition() const

References AddPrimitive(), G4Polymarker::circles, G4VMarker::GetPosition(), and G4Polymarker::SetMarkerType().

◆ AddPrimitive() [2/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Plotter a_plotter)
virtual

Reimplemented from G4VSceneHandler.

Definition at line 781 of file G4ToolsSGSceneHandler.cc.

782{
783//G4cout << "debug : G4ToolsSGSceneHandler::AddPrimitive : 004" << std::endl;
784 if(!fpViewer) return;
785
786 auto currentNode = GetOrCreateNode();
787 if (!currentNode) return; // Node not available
788
789 currentNode->add(new tools::sg::light_off());
790
791 tools::sg::plots* _plots = new tools::sg::plots(*fFreetypeNode);
792 currentNode->add(_plots);
793
794 _plots->view_border = false;
795 _plots->set_regions(a_plotter.GetColumns(),a_plotter.GetRows());
796
797 {tools::sg::event_dispatcher* dpt = new tools::sg::event_dispatcher;
798 dpt->add_callback(new plots_cbk(*_plots));
799 currentNode->add(dpt);}
800
801 SetPlotterStyles(*_plots,a_plotter.GetStyles(),a_plotter.GetRegionStyles());
802
803 tools::sg::cmaps_t _cmaps;
804 _cmaps["default"] = tools::sg::style_default_colormap();
805 _cmaps["ROOT"] = tools::sg::style_ROOT_colormap();
806
807 SetPlotterParameters(_cmaps,*_plots,a_plotter.GetRegionParameters());
808
809 fRegionH1s = a_plotter.GetRegionH1s();
810 fRegionH2s = a_plotter.GetRegionH2s();
811
812 SetPlotterHistograms(*_plots);
813}
void SetPlotterParameters(tools::sg::cmaps_t &a_cmaps, tools::sg::plots &a_plots, const std::vector< G4Plotter::RegionParameter > &a_region_parameters)
void SetPlotterStyles(tools::sg::plots &a_plots, const std::vector< G4String > &a_plotter_styles, const std::vector< G4Plotter::RegionStyle > &a_region_styles)
unsigned int GetRows() const
Definition: G4Plotter.hh:68
const std::vector< RegionParameter > & GetRegionParameters() const
Definition: G4Plotter.hh:71
const std::vector< G4String > & GetStyles() const
Definition: G4Plotter.hh:69
const std::vector< Region_h2 > & GetRegionH2s() const
Definition: G4Plotter.hh:76
const std::vector< RegionStyle > & GetRegionStyles() const
Definition: G4Plotter.hh:70
const std::vector< Region_h1 > & GetRegionH1s() const
Definition: G4Plotter.hh:75
unsigned int GetColumns() const
Definition: G4Plotter.hh:67
void SetPlotterHistograms(tools::sg::plots &)
std::vector< Region_h1 > fRegionH1s
tools::sg::separator * GetOrCreateNode()
std::vector< Region_h2 > fRegionH2s
G4VViewer * fpViewer

References fFreetypeNode, G4VSceneHandler::fpViewer, fRegionH1s, fRegionH2s, G4Plotter::GetColumns(), GetOrCreateNode(), G4Plotter::GetRegionH1s(), G4Plotter::GetRegionH2s(), G4Plotter::GetRegionParameters(), G4Plotter::GetRegionStyles(), G4Plotter::GetRows(), G4Plotter::GetStyles(), SetPlotterHistograms(), SetPlotterParameters(), and SetPlotterStyles().

◆ AddPrimitive() [3/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Polyhedron a_polyhedron)
virtual

Implements G4VSceneHandler.

Definition at line 420 of file G4ToolsSGSceneHandler.cc.

421{
422 if (a_polyhedron.GetNoFacets() == 0) return;
423
424 //::printf("debug : G4ToolsSGSceneHandler::AddPrimitive(const G4Polyhedron&) : %d\n",a_polyhedron.GetNoFacets());
425
427
428 // Roll out vertices and normals for the faces. Note that this means vertices
429 // are duplicated. For example a box has 8 vertices, but to define 6 faces
430 // you need 12 triangles and 36 vertices. If it was just a matter of vertices
431 // we could restrict the number to 8 and use the indices to define the
432 // triangles, but we also have to consider the normals. A vertex can be have
433 // more than one normal, depending on which face it is being used to define.
434 // So we roll out all the vertices and normals for each triangle.
435 std::vector<G4Point3D> vertices;
436 std::vector<G4Normal3D> normals;
437
438 // Also roll out edges (as lines) for wireframe. Avoid duplicate lines,
439 // including those that differ only in the order of vertices.
440 typedef std::pair<G4Point3D,G4Point3D> Line;
441 std::vector<Line> lines;
442 auto insertIfNew = [&lines](const Line& newLine) {
443 for (const auto& line: lines) {
444 if ((newLine.first==line.first && newLine.second==line.second) ||
445 (newLine.first==line.second && newLine.second==line.first))
446 return;
447 }
448 lines.push_back(newLine);
449 };
450
451 G4bool isAuxilaryEdgeVisible = fpViewer->GetViewParameters().IsAuxEdgeVisible();
452 G4bool notLastFace;
453 do {
454 G4int nEdges;
455 G4Point3D vertex [4];
456 G4int edgeFlag[4];
457 G4Normal3D normal [4];
458 notLastFace = a_polyhedron.GetNextFacet(nEdges, vertex, edgeFlag, normal);
459 vertices.push_back(vertex[0]);
460 vertices.push_back(vertex[1]);
461 vertices.push_back(vertex[2]);
462 normals.push_back(normal[0]);
463 normals.push_back(normal[1]);
464 normals.push_back(normal[2]);
465 if(isAuxilaryEdgeVisible||edgeFlag[0]>0)insertIfNew(Line(vertex[0],vertex[1]));
466 if(isAuxilaryEdgeVisible||edgeFlag[1]>0)insertIfNew(Line(vertex[1],vertex[2]));
467 if (nEdges == 3) {
468 // Face is a triangle
469 // One more line for wireframe, triangles for surfaces are complete
470 if(isAuxilaryEdgeVisible||edgeFlag[2]>0)insertIfNew(Line(vertex[2],vertex[0]));
471 } else if (nEdges == 4) {
472 // Face is a quadrilateral
473 // Create another triangle for surfaces, add two more lines for wireframe
474 vertices.push_back(vertex[2]);
475 vertices.push_back(vertex[3]);
476 vertices.push_back(vertex[0]);
477 normals.push_back(normal[2]);
478 normals.push_back(normal[3]);
479 normals.push_back(normal[0]);
480 if(isAuxilaryEdgeVisible||edgeFlag[2]>0)insertIfNew(Line(vertex[2],vertex[3]));
481 if(isAuxilaryEdgeVisible||edgeFlag[3]>0)insertIfNew(Line(vertex[3],vertex[0]));
482 } else {
483 G4cerr
484 << "ERROR: polyhedron face with unexpected number of edges (" << nEdges << ')'
485 << "\n Tag: " << fpModel->GetCurrentTag()
486 << G4endl;
487 return;
488 }
489 } while (notLastFace);
490
492 switch (drawing_style) {
494 //vertices.clear();
495 break;
497 break;
499 //lines.clear();
500 break;
502 break;
504 // Shouldn't happen in this function (it's a polyhedron!) - ignore
505 return;
506 }
507
508 auto currentNode = GetOrCreateNode();
509 if (!currentNode) return; // Node not available
510
511 tools::sg::separator* sep = new tools::sg::separator;
512 currentNode->add(sep);
513
514 // Transformation
515 {tools::sg::matrix* mtx = new tools::sg::matrix;
517 mtx->mtx.value().set_matrix(elem(0,0),elem(0,1),elem(0,2),elem(0,3),
518 elem(1,0),elem(1,1),elem(1,2),elem(1,3),
519 elem(2,0),elem(2,1),elem(2,2),elem(2,3),
520 0, 0, 0, 1);
521 sep->add(mtx);}
522
523 {const auto& colour = GetColour(a_polyhedron);
524 tools::sg::rgba* mat = new tools::sg::rgba();
525 mat->color =
526 tools::colorf(float(colour.GetRed()),
527 float(colour.GetGreen()),
528 float(colour.GetBlue()),
529 float(colour.GetAlpha()));
530 sep->add(mat);}
531
532 if (drawing_style == G4ViewParameters::hlr ||
533 drawing_style == G4ViewParameters::hsr ||
534 drawing_style == G4ViewParameters::hlhsr) {
535
536 {tools::sg::draw_style* ds = new tools::sg::draw_style;
537 ds->style = tools::sg::draw_filled;
538 //ds->cull_face = true;
539 sep->add(ds);}
540
541 tools::sg::atb_vertices* vtxs = new tools::sg::atb_vertices;
542 vtxs->mode = tools::gl::triangles();
543 sep->add(vtxs);
544
545 const auto nVerts = vertices.size();
546 for (size_t i = 0; i < nVerts; i++) {
547 vtxs->add(float(vertices[i].x()),float(vertices[i].y()),float(vertices[i].z()));
548 vtxs->add_normal(float(normals[i].x()),float(normals[i].y()),float(normals[i].z()));
549 }
550 }
551
552 if (drawing_style == G4ViewParameters::wireframe ||
553 drawing_style == G4ViewParameters::hlr ||
554 drawing_style == G4ViewParameters::hlhsr) {
555
556 {tools::sg::draw_style* ds = new tools::sg::draw_style;
557 ds->style = tools::sg::draw_lines;
558 ds->line_width = 1;
559 sep->add(ds);}
560
561 tools::sg::vertices* vtxs = new tools::sg::vertices;
562 vtxs->mode = tools::gl::lines(); //segments
563 sep->add(vtxs);
564
565 for (const auto& line: lines) {
566 vtxs->add(float(line.first.x()),float(line.first.y()),float(line.first.z()));
567 vtxs->add(float(line.second.x()),float(line.second.y()),float(line.second.z()));
568 }
569
570 }
571}
#define elem(i, j)
int G4int
Definition: G4Types.hh:85
G4GLOB_DLL std::ostream G4cerr
virtual G4String GetCurrentTag() const
Definition: G4VModel.cc:46
const G4Colour & GetColour()
G4Transform3D fObjectTransformation
const G4VisAttributes * fpVisAttribs
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
const G4VisAttributes * GetApplicableVisAttributes(const G4VisAttributes *) const
const G4ViewParameters & GetViewParameters() const
G4bool IsAuxEdgeVisible() const
const G4VisAttributes * GetVisAttributes() const
G4int GetNoFacets() const
G4bool GetNextFacet(G4int &n, G4Point3D *nodes, G4int *edgeFlags=0, G4Normal3D *normals=0) const
static double normal(HepRandomEngine *eptr)
Definition: RandPoisson.cc:79

References G4ViewParameters::cloud, anonymous_namespace{G4QuasiElRatios.cc}::ds, elem, G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fpModel, G4VSceneHandler::fpViewer, G4VSceneHandler::fpVisAttribs, G4cerr, G4endl, G4VViewer::GetApplicableVisAttributes(), G4VSceneHandler::GetColour(), G4VModel::GetCurrentTag(), G4VSceneHandler::GetDrawingStyle(), HepPolyhedron::GetNextFacet(), HepPolyhedron::GetNoFacets(), GetOrCreateNode(), G4VViewer::GetViewParameters(), G4Visible::GetVisAttributes(), G4ViewParameters::hlhsr, G4ViewParameters::hlr, G4ViewParameters::hsr, G4ViewParameters::IsAuxEdgeVisible(), CLHEP::normal(), and G4ViewParameters::wireframe.

◆ AddPrimitive() [4/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Polyline a_polyline)
virtual

Implements G4VSceneHandler.

Definition at line 212 of file G4ToolsSGSceneHandler.cc.

213{
214 //G4cout << "debug : G4ToolsSGSceneHandler::AddPrimitive(const G4Polyline&) : \n" << a_polyline << G4endl;
215 if (a_polyline.size() == 0) return;
216
217 tools::sg::separator* parentNode = 0;
218 if(fProcessing2D) {
219 parentNode = new tools::sg::separator;
221 fpTransient2DObjects.add(parentNode);
222 } else {
223 fpPersistent2DObjects.add(parentNode);
224 }
225
226 } else {
227 parentNode = GetOrCreateNode();
228 if(!parentNode) return;
229
230 tools::sg::matrix* mtx = new tools::sg::matrix;
232 mtx->mtx.value().set_matrix(elem(0,0),elem(0,1),elem(0,2),elem(0,3),
233 elem(1,0),elem(1,1),elem(1,2),elem(1,3),
234 elem(2,0),elem(2,1),elem(2,2),elem(2,3),
235 0, 0, 0, 1);
236 parentNode->add(mtx);
237 }
238
239 {const auto& colour = GetColour(a_polyline);
240 tools::sg::rgba* mat = new tools::sg::rgba();
241 mat->color =
242 tools::colorf(float(colour.GetRed()),
243 float(colour.GetGreen()),
244 float(colour.GetBlue()),
245 float(colour.GetAlpha()));
246 parentNode->add(mat);}
247
248 {tools::sg::draw_style* ds = new tools::sg::draw_style;
249 ds->style = tools::sg::draw_lines;
250 ds->line_width = 1;
251 parentNode->add(ds);}
252
253 tools::sg::vertices* vtxs = new tools::sg::vertices;
254 vtxs->mode = tools::gl::line_strip(); //polyline
255 parentNode->add(vtxs);
256
257 {for (size_t i = 0; i < a_polyline.size(); ++i) {
258 vtxs->add(float(a_polyline[i].x()),float(a_polyline[i].y()),float(a_polyline[i].z()));
259 }}
260
261}

References anonymous_namespace{G4QuasiElRatios.cc}::ds, elem, G4VSceneHandler::fObjectTransformation, fpPersistent2DObjects, G4VSceneHandler::fProcessing2D, fpTransient2DObjects, G4VSceneHandler::fReadyForTransients, G4VSceneHandler::GetColour(), and GetOrCreateNode().

Referenced by AddPrimitive().

◆ AddPrimitive() [5/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Polymarker a_polymarker)
virtual

Reimplemented from G4VSceneHandler.

Definition at line 263 of file G4ToolsSGSceneHandler.cc.

264{
265 //::printf("debug G4ToolsSGSceneHandler::AddPrimitive(const G4Polymarker&) : %lu, type %d\n",
266 // a_polymarker.size(),a_polymarker.GetMarkerType());
267 if (a_polymarker.size() == 0) return;
268 auto currentNode = GetOrCreateNode();
269 if (!currentNode) return; // Node not available
270
271 // Transformation
272 {tools::sg::matrix* mtx = new tools::sg::matrix;
274 mtx->mtx.value().set_matrix(elem(0,0),elem(0,1),elem(0,2),elem(0,3),
275 elem(1,0),elem(1,1),elem(1,2),elem(1,3),
276 elem(2,0),elem(2,1),elem(2,2),elem(2,3),
277 0, 0, 0, 1);
278 currentNode->add(mtx);}
279
280 {const auto& colour = GetColour(a_polymarker);
281 tools::sg::rgba* mat = new tools::sg::rgba();
282 mat->color =
283 tools::colorf(float(colour.GetRed()),
284 float(colour.GetGreen()),
285 float(colour.GetBlue()),
286 float(colour.GetAlpha()));
287 currentNode->add(mat);}
288
289 switch (a_polymarker.GetMarkerType()) {
290 default:
291 case G4Polymarker::dots:{
292 //::printf("debug : GB : Add Markers : +++++++++++++++++++++++++++++++++++++++++++ : dots\n");
293 tools::sg::draw_style* ds = new tools::sg::draw_style;
294 ds->style = tools::sg::draw_points;
295 ds->point_size = 10;
296 currentNode->add(ds);
297
298 tools::sg::vertices* vtxs = new tools::sg::vertices;
299 vtxs->mode = tools::gl::points();
300 {for (size_t i = 0; i < a_polymarker.size(); ++i) {
301 vtxs->add(float(a_polymarker[i].x()),float(a_polymarker[i].y()),float(a_polymarker[i].z()));
302 }}
303 currentNode->add(vtxs);
304 }break;
306 //::printf("debug : GB : Add Markers : +++++++++++++++++++++++++++++++++++++++++++ : circles\n");
307 {tools::sg::markers* markers = new tools::sg::markers;
308 markers->size = 10;
309 markers->style = tools::sg::marker_circle_line;
310 for (size_t i = 0; i < a_polymarker.size(); ++i) {
311 markers->add(float(a_polymarker[i].x()),float(a_polymarker[i].y()),float(a_polymarker[i].z()));
312 }
313 currentNode->add(markers);}
314 }break;
316 //::printf("debug : GB : Add Markers : +++++++++++++++++++++++++++++++++++++++++++ : square\n");
317 {tools::sg::markers* markers = new tools::sg::markers;
318 markers->size = 10;
319 markers->style = tools::sg::marker_square_line;
320 for (size_t i = 0; i < a_polymarker.size(); ++i) {
321 markers->add(float(a_polymarker[i].x()),float(a_polymarker[i].y()),float(a_polymarker[i].z()));
322 }
323 currentNode->add(markers);}
324 }break;
325 }
326}
MarkerType GetMarkerType() const

References G4Polymarker::circles, G4Polymarker::dots, anonymous_namespace{G4QuasiElRatios.cc}::ds, elem, G4VSceneHandler::fObjectTransformation, G4VSceneHandler::GetColour(), G4Polymarker::GetMarkerType(), GetOrCreateNode(), and G4Polymarker::squares.

◆ AddPrimitive() [6/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Square a_square)
virtual

Implements G4VSceneHandler.

Definition at line 411 of file G4ToolsSGSceneHandler.cc.

412{
413 G4Polymarker oneSquare(a_square);
414 oneSquare.push_back(a_square.GetPosition());
415 oneSquare.SetMarkerType(G4Polymarker::squares);
416 // Call this AddPrimitive to avoid re-doing sub-class code.
418}

References AddPrimitive(), G4VMarker::GetPosition(), G4Polymarker::SetMarkerType(), and G4Polymarker::squares.

◆ AddPrimitive() [7/7]

void G4ToolsSGSceneHandler::AddPrimitive ( const G4Text a_text)
virtual

Implements G4VSceneHandler.

Definition at line 328 of file G4ToolsSGSceneHandler.cc.

329{
330 //::printf("debug : G4ToolsSGSceneHandler::AddPrimitive(const G4Text&) : 000 : \"%s\"\n",a_text.GetText().c_str());
331 //::printf("debug : G4ToolsSGSceneHandler::AddPrimitive(const G4Text&) : 2D ? %d\n",fProcessing2D);
332 auto pos = a_text.GetPosition();
333 //::printf("debug : Add Text : pos %g %g %g\n",pos.x(),pos.y(),pos.z());
334
335 tools::sg::separator* parentNode = 0;
336 if(fProcessing2D) {
337 parentNode = new tools::sg::separator;
339 fpTransient2DObjects.add(parentNode);
340 } else {
341 fpPersistent2DObjects.add(parentNode);
342 }
343
344 tools::sg::matrix* mtx = new tools::sg::matrix;
345 mtx->set_translate(pos.x(),pos.y(),pos.z());
346 parentNode->add(mtx);
347
348 } else {
349 parentNode = GetOrCreateNode();
350 if (!parentNode) return;
351
352 tools::sg::matrix* mtx = new tools::sg::matrix;
354 mtx->mtx.value().set_matrix(elem(0,0),elem(0,1),elem(0,2),elem(0,3),
355 elem(1,0),elem(1,1),elem(1,2),elem(1,3),
356 elem(2,0),elem(2,1),elem(2,2),elem(2,3),
357 0, 0, 0, 1);
358 parentNode->add(mtx);
359 }
360
361 MarkerSizeType sizeType;
362 G4double size = GetMarkerSize(a_text, sizeType);
363
364 {const auto& colour = GetTextColour(a_text);
365 tools::sg::rgba* mat = new tools::sg::rgba();
366 mat->color =
367 tools::colorf(float(colour.GetRed()),
368 float(colour.GetGreen()),
369 float(colour.GetBlue()),
370 float(colour.GetAlpha()));
371 parentNode->add(mat);}
372
373#ifdef TOOLS_USE_FREETYPE
374 tools::sg::text_freetype_marker* text = new tools::sg::text_freetype_marker;
375 text->add_embedded_font(tools::sg::font_lato_regular_ttf(),tools::font::lato_regular_ttf);
376 text->font = tools::sg::font_lato_regular_ttf();
377 text->front_face = tools::sg::winding_cw;
378//text->modeling = tools::sg::font_pixmap; //problem with Qt/GL. It slows rendering!
379#else
380 tools::sg::text_hershey_marker* text = new tools::sg::text_hershey_marker;
381//text->encoding.value(a_encoding);
382#endif
383 text->height = float(size); //pixels
384 text->strings.add(a_text.GetText());
385 {switch (a_text.GetLayout()) {
386 default:
387 case G4Text::left:
388 text->hjust = tools::sg::left;
389 break;
390 case G4Text::centre:
391 text->hjust = tools::sg::center;
392 break;
393 case G4Text::right:
394 text->hjust = tools::sg::right;
395 break;
396 }}
397//text->vjust.value(a_vjust);
398 parentNode->add(text);
399
400}
static const G4double pos
HepGeom::Translate3D G4Translate3D
double G4double
Definition: G4Types.hh:83
Layout GetLayout() const
G4String GetText() const
@ centre
Definition: G4Text.hh:76
@ right
Definition: G4Text.hh:76
@ left
Definition: G4Text.hh:76
const G4Colour & GetTextColour(const G4Text &)
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)

References G4Text::centre, elem, G4VSceneHandler::fObjectTransformation, fpPersistent2DObjects, G4VSceneHandler::fProcessing2D, fpTransient2DObjects, G4VSceneHandler::fReadyForTransients, G4Text::GetLayout(), G4VSceneHandler::GetMarkerSize(), GetOrCreateNode(), G4VMarker::GetPosition(), G4Text::GetText(), G4VSceneHandler::GetTextColour(), G4Text::left, pos, and G4Text::right.

◆ AddSolid() [1/14]

void G4VSceneHandler::AddSolid ( const G4Box box)
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4DAWNFILESceneHandler, G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLSceneHandler, G4VRML2FileSceneHandler, G4VRML2FileSceneHandler, G4DAWNFILESceneHandler, G4GMocrenFileSceneHandler, and G4VtkSceneHandler.

Definition at line 247 of file G4VSceneHandler.cc.

247 {
248 AddSolidT (box);
249 // If your graphics system is sophisticated enough to handle a
250 // particular solid shape as a primitive, in your derived class write a
251 // function to override this.
252 // Your function might look like this...
253 // void G4MySceneHandler::AddSolid (const G4Box& box) {
254 // Get and check applicable vis attributes.
255 // fpVisAttribs = fpViewer->GetApplicableVisAttributes(fpVisAttribs);
256 // Do not draw if not visible.
257 // if (fpVisAttribs->IsVisible()) {
258 // Get parameters of appropriate object, e.g.:
259 // G4double dx = box.GetXHalfLength ();
260 // G4double dy = box.GetYHalfLength ();
261 // G4double dz = box.GetZHalfLength ();
262 // ...
263 // and Draw or Store in your display List.
264}
void AddSolidT(const T &solid)

References G4VSceneHandler::AddSolidT().

Referenced by G4Qt3DSceneHandler::AddCompound(), G4VtkSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), and G4GMocrenFileSceneHandler::AddSolid().

◆ AddSolid() [2/14]

void G4VSceneHandler::AddSolid ( const G4Cons cons)
virtualinherited

◆ AddSolid() [3/14]

void G4VSceneHandler::AddSolid ( const G4Ellipsoid ellipsoid)
virtualinherited

◆ AddSolid() [4/14]

void G4VSceneHandler::AddSolid ( const G4Orb orb)
virtualinherited

◆ AddSolid() [5/14]

void G4VSceneHandler::AddSolid ( const G4Para para)
virtualinherited

◆ AddSolid() [6/14]

void G4VSceneHandler::AddSolid ( const G4Polycone polycone)
virtualinherited

◆ AddSolid() [7/14]

void G4VSceneHandler::AddSolid ( const G4Polyhedra polyhedra)
virtualinherited

◆ AddSolid() [8/14]

void G4VSceneHandler::AddSolid ( const G4Sphere sphere)
virtualinherited

◆ AddSolid() [9/14]

void G4VSceneHandler::AddSolid ( const G4TessellatedSolid tess)
virtualinherited

◆ AddSolid() [10/14]

void G4VSceneHandler::AddSolid ( const G4Torus torus)
virtualinherited

◆ AddSolid() [11/14]

void G4VSceneHandler::AddSolid ( const G4Trap trap)
virtualinherited

◆ AddSolid() [12/14]

void G4VSceneHandler::AddSolid ( const G4Trd trd)
virtualinherited

◆ AddSolid() [13/14]

void G4VSceneHandler::AddSolid ( const G4Tubs tubs)
virtualinherited

◆ AddSolid() [14/14]

void G4VSceneHandler::AddSolid ( const G4VSolid solid)
virtualinherited

◆ AddSolidT()

template<class T >
void G4VSceneHandler::AddSolidT ( const T &  solid)
inherited

Definition at line 220 of file G4VSceneHandler.cc.

222{
223 // Get and check applicable vis attributes.
225 RequestPrimitives (solid);
226}
virtual void RequestPrimitives(const G4VSolid &solid)

References G4VSceneHandler::fpViewer, G4VSceneHandler::fpVisAttribs, G4VViewer::GetApplicableVisAttributes(), and G4VSceneHandler::RequestPrimitives().

Referenced by G4VSceneHandler::AddSolid().

◆ AddSolidWithAuxiliaryEdges()

template<class T >
void G4VSceneHandler::AddSolidWithAuxiliaryEdges ( const T &  solid)
inherited

Definition at line 228 of file G4VSceneHandler.cc.

230{
231 // Get and check applicable vis attributes.
233 // Draw with auxiliary edges unless otherwise specified.
235 // Create a vis atts object for the modified vis atts.
236 // It is static so that we may return a reliable pointer to it.
237 static G4VisAttributes visAttsWithAuxEdges;
238 // Initialise it with the current vis atts and reset the pointer.
239 visAttsWithAuxEdges = *fpVisAttribs;
240 // Force auxiliary edges visible.
241 visAttsWithAuxEdges.SetForceAuxEdgeVisible();
242 fpVisAttribs = &visAttsWithAuxEdges;
243 }
244 RequestPrimitives (solid);
245}
void SetForceAuxEdgeVisible(G4bool=true)
G4bool IsForceAuxEdgeVisible() const

References G4VSceneHandler::fpViewer, G4VSceneHandler::fpVisAttribs, G4VViewer::GetApplicableVisAttributes(), G4VisAttributes::IsForceAuxEdgeVisible(), G4VSceneHandler::RequestPrimitives(), and G4VisAttributes::SetForceAuxEdgeVisible().

Referenced by G4VSceneHandler::AddSolid().

◆ AddViewerToList()

void G4VSceneHandler::AddViewerToList ( G4VViewer pView)
inherited

Definition at line 454 of file G4VSceneHandler.cc.

454 {
455 fViewerList.push_back (pViewer);
456}
G4ViewerList fViewerList

References G4VSceneHandler::fViewerList.

◆ BeginModeling()

void G4VSceneHandler::BeginModeling ( )
virtualinherited

◆ BeginPrimitives()

void G4VSceneHandler::BeginPrimitives ( const G4Transform3D objectTransformation = G4Transform3D())
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4DAWNFILESceneHandler, G4GMocrenFileSceneHandler, G4OpenGLImmediateSceneHandler, G4OpenGLSceneHandler, G4OpenGLStoredSceneHandler, G4OpenInventorSceneHandler, G4Qt3DSceneHandler, and G4VRML2FileSceneHandler.

Definition at line 160 of file G4VSceneHandler.cc.

161 {
162 //static G4int count = 0;
163 //G4cout << "G4VSceneHandler::BeginPrimitives: " << count++ << G4endl;
165 if (fNestingDepth > 1)
167 ("G4VSceneHandler::BeginPrimitives",
168 "visman0101", FatalException,
169 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
170 fObjectTransformation = objectTransformation;
171}

References FatalException, G4VSceneHandler::fNestingDepth, G4VSceneHandler::fObjectTransformation, and G4Exception().

Referenced by G4GMocrenFileSceneHandler::BeginPrimitives(), G4OpenGLSceneHandler::BeginPrimitives(), G4OpenInventorSceneHandler::BeginPrimitives(), G4Qt3DSceneHandler::BeginPrimitives(), and G4VSceneHandler::RequestPrimitives().

◆ BeginPrimitives2D()

void G4VSceneHandler::BeginPrimitives2D ( const G4Transform3D objectTransformation = G4Transform3D())
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4HepRepFileSceneHandler, G4OpenGLImmediateSceneHandler, G4OpenGLSceneHandler, G4OpenGLStoredSceneHandler, and G4Qt3DSceneHandler.

Definition at line 184 of file G4VSceneHandler.cc.

185 {
187 if (fNestingDepth > 1)
189 ("G4VSceneHandler::BeginPrimitives2D",
190 "visman0103", FatalException,
191 "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
192 fObjectTransformation = objectTransformation;
193 fProcessing2D = true;
194}

References G4VSceneHandler::fNestingDepth, and G4Exception().

Referenced by G4HepRepFileSceneHandler::BeginPrimitives2D(), G4OpenGLSceneHandler::BeginPrimitives2D(), and G4Qt3DSceneHandler::BeginPrimitives2D().

◆ ClearStore()

void G4ToolsSGSceneHandler::ClearStore ( )
virtual

◆ ClearTransientStore()

void G4ToolsSGSceneHandler::ClearTransientStore ( )
virtual

Reimplemented from G4VSceneHandler.

Definition at line 206 of file G4ToolsSGSceneHandler.cc.

207{
208 fpTransient2DObjects.clear();
209 fpTransient3DObjects.clear();
210}

References fpTransient2DObjects, and fpTransient3DObjects.

◆ CreateCutawaySolid()

G4DisplacedSolid * G4VSceneHandler::CreateCutawaySolid ( )
protectedvirtualinherited

Reimplemented in G4OpenGLSceneHandler.

Definition at line 904 of file G4VSceneHandler.cc.

905{
906 // To be reviewed.
907 return 0;
908 /*** An alternative way of getting a cutaway is to use
909 Command /vis/scene/add/volume
910 Guidance :
911 Adds a physical volume to current scene, with optional clipping volume.
912 If physical-volume-name is "world" (the default), the top of the
913 main geometry tree (material world) is added. If "worlds", the
914 top of all worlds - material world and parallel worlds, if any - are
915 added. Otherwise a search of all worlds is made, taking the first
916 matching occurrence only. To see a representation of the geometry
917 hierarchy of the worlds, try "/vis/drawTree [worlds]" or one of the
918 driver/browser combinations that have the required functionality, e.g., HepRep.
919 If clip-volume-type is specified, the subsequent parameters are used to
920 to define a clipping volume. For example,
921 "/vis/scene/add/volume ! ! ! -box km 0 1 0 1 0 1" will draw the world
922 with the positive octant cut away. (If the Boolean Processor issues
923 warnings try replacing 0 by 0.000000001 or something.)
924 If clip-volume-type is prepended with '-', the clip-volume is subtracted
925 (cutaway). (This is the default if there is no prepended character.)
926 If '*' is prepended, the intersection of the physical-volume and the
927 clip-volume is made. (You can make a section/DCUT with a thin box, for
928 example).
929 For "box", the parameters are xmin,xmax,ymin,ymax,zmin,zmax.
930 Only "box" is programmed at present.
931 ***/
932}

Referenced by G4VSceneHandler::CreateModelingParameters().

◆ CreateModelingParameters()

G4ModelingParameters * G4VSceneHandler::CreateModelingParameters ( )
inherited

Definition at line 798 of file G4VSceneHandler.cc.

799{
800 // Create modeling parameters from View Parameters...
801 if (!fpViewer) return NULL;
802
803 const G4ViewParameters& vp = fpViewer -> GetViewParameters ();
804
805 // Convert drawing styles...
806 G4ModelingParameters::DrawingStyle modelDrawingStyle =
808 switch (vp.GetDrawingStyle ()) {
809 default:
811 modelDrawingStyle = G4ModelingParameters::wf;
812 break;
814 modelDrawingStyle = G4ModelingParameters::hlr;
815 break;
817 modelDrawingStyle = G4ModelingParameters::hsr;
818 break;
820 modelDrawingStyle = G4ModelingParameters::hlhsr;
821 break;
823 modelDrawingStyle = G4ModelingParameters::cloud;
824 break;
825 }
826
827 // Decide if covered daughters are really to be culled...
828 G4bool reallyCullCovered =
829 vp.IsCullingCovered() // Culling daughters depends also on...
830 && !vp.IsSection () // Sections (DCUT) not requested.
831 && !vp.IsCutaway () // Cutaways not requested.
832 ;
833
834 G4ModelingParameters* pModelingParams = new G4ModelingParameters
836 modelDrawingStyle,
837 vp.IsCulling (),
838 vp.IsCullingInvisible (),
839 vp.IsDensityCulling (),
840 vp.GetVisibleDensity (),
841 reallyCullCovered,
842 vp.GetNoOfSides ()
843 );
844
845 pModelingParams->SetNumberOfCloudPoints(vp.GetNumberOfCloudPoints());
846 pModelingParams->SetWarning
848
849 pModelingParams->SetCBDAlgorithmNumber(vp.GetCBDAlgorithmNumber());
850 pModelingParams->SetCBDParameters(vp.GetCBDParameters());
851
852 pModelingParams->SetExplodeFactor(vp.GetExplodeFactor());
853 pModelingParams->SetExplodeCentre(vp.GetExplodeCentre());
854
855 pModelingParams->SetSectionSolid(CreateSectionSolid());
856 pModelingParams->SetCutawaySolid(CreateCutawaySolid());
857 // The polyhedron objects are deleted in the modeling parameters destructor.
858
860
861 pModelingParams->SetSpecialMeshRendering(vp.IsSpecialMeshRendering());
862 pModelingParams->SetSpecialMeshVolumes(vp.GetSpecialMeshVolumes());
863
864 return pModelingParams;
865}
void SetCBDParameters(const std::vector< G4double > &)
void SetWarning(G4bool)
void SetNumberOfCloudPoints(G4int)
void SetCBDAlgorithmNumber(G4int)
void SetExplodeFactor(G4double explodeFactor)
void SetVisAttributesModifiers(const std::vector< VisAttributesModifier > &)
void SetExplodeCentre(const G4Point3D &explodeCentre)
void SetCutawaySolid(G4DisplacedSolid *pCutawaySolid)
void SetSectionSolid(G4DisplacedSolid *pSectionSolid)
void SetSpecialMeshVolumes(const std::vector< PVNameCopyNo > &)
void SetSpecialMeshRendering(G4bool)
virtual G4DisplacedSolid * CreateSectionSolid()
virtual G4DisplacedSolid * CreateCutawaySolid()
const std::vector< G4ModelingParameters::VisAttributesModifier > & GetVisAttributesModifiers() const
G4int GetNoOfSides() const
G4bool IsSpecialMeshRendering() const
G4double GetExplodeFactor() const
G4int GetNumberOfCloudPoints() const
G4bool IsCutaway() const
G4bool IsSection() const
G4bool IsCulling() const
const std::vector< G4double > & GetCBDParameters() const
G4int GetCBDAlgorithmNumber() const
const std::vector< G4ModelingParameters::PVNameCopyNo > & GetSpecialMeshVolumes() const
G4bool IsCullingInvisible() const
const G4VisAttributes * GetDefaultVisAttributes() const
G4bool IsDensityCulling() const
G4double GetVisibleDensity() const
const G4Point3D & GetExplodeCentre() const
G4bool IsCullingCovered() const
DrawingStyle GetDrawingStyle() const
static Verbosity GetVerbosity()

References G4ViewParameters::cloud, G4ModelingParameters::cloud, G4VSceneHandler::CreateCutawaySolid(), G4VSceneHandler::CreateSectionSolid(), G4VSceneHandler::fpViewer, G4ViewParameters::GetCBDAlgorithmNumber(), G4ViewParameters::GetCBDParameters(), G4ViewParameters::GetDefaultVisAttributes(), G4ViewParameters::GetDrawingStyle(), G4ViewParameters::GetExplodeCentre(), G4ViewParameters::GetExplodeFactor(), G4ViewParameters::GetNoOfSides(), G4ViewParameters::GetNumberOfCloudPoints(), G4ViewParameters::GetSpecialMeshVolumes(), G4VisManager::GetVerbosity(), G4ViewParameters::GetVisAttributesModifiers(), G4ViewParameters::GetVisibleDensity(), G4ViewParameters::hlhsr, G4ModelingParameters::hlhsr, G4ViewParameters::hlr, G4ModelingParameters::hlr, G4ViewParameters::hsr, G4ModelingParameters::hsr, G4ViewParameters::IsCulling(), G4ViewParameters::IsCullingCovered(), G4ViewParameters::IsCullingInvisible(), G4ViewParameters::IsCutaway(), G4ViewParameters::IsDensityCulling(), G4ViewParameters::IsSection(), G4ViewParameters::IsSpecialMeshRendering(), G4ModelingParameters::SetCBDAlgorithmNumber(), G4ModelingParameters::SetCBDParameters(), G4ModelingParameters::SetCutawaySolid(), G4ModelingParameters::SetExplodeCentre(), G4ModelingParameters::SetExplodeFactor(), G4ModelingParameters::SetNumberOfCloudPoints(), G4ModelingParameters::SetSectionSolid(), G4ModelingParameters::SetSpecialMeshRendering(), G4ModelingParameters::SetSpecialMeshVolumes(), G4ModelingParameters::SetVisAttributesModifiers(), G4ModelingParameters::SetWarning(), G4VisManager::warnings, G4ModelingParameters::wf, and G4ViewParameters::wireframe.

Referenced by G4VSceneHandler::DrawEndOfRunModels(), G4VSceneHandler::DrawEvent(), and G4VSceneHandler::ProcessScene().

◆ CreateSectionSolid()

G4DisplacedSolid * G4VSceneHandler::CreateSectionSolid ( )
protectedvirtualinherited

Reimplemented in G4OpenGLSceneHandler.

Definition at line 867 of file G4VSceneHandler.cc.

868{
869 G4DisplacedSolid* sectioner = 0;
870
872 if (vp.IsSection () ) {
873
875 G4double safe = radius + fpScene->GetExtent().GetExtentCentre().mag();
876 G4VSolid* sectionBox =
877 new G4Box("_sectioner", safe, safe, 1.e-5 * radius); // Thin in z-plane...
878 const G4Normal3D originalNormal(0,0,1); // ...so this is original normal.
879
880 const G4Plane3D& sp = vp.GetSectionPlane ();
881 const G4double& a = sp.a();
882 const G4double& b = sp.b();
883 const G4double& c = sp.c();
884 const G4double& d = sp.d();
885 const G4Normal3D newNormal(a,b,c);
886
887 G4Transform3D requiredTransform;
888 // Rotate
889 if (newNormal != originalNormal) {
890 const G4double& angle = std::acos(newNormal.dot(originalNormal));
891 const G4Vector3D& axis = originalNormal.cross(newNormal);
892 requiredTransform = G4Rotate3D(angle, axis);
893 }
894 // Translate
895 requiredTransform = requiredTransform * G4TranslateZ3D(-d);
896
897 sectioner = new G4DisplacedSolid
898 ("_displaced_sectioning_box", sectionBox, requiredTransform);
899 }
900
901 return sectioner;
902}
static const G4double angle[DIMMOTT]
HepGeom::Rotate3D G4Rotate3D
HepGeom::TranslateZ3D G4TranslateZ3D
Definition: G4Box.hh:56
const G4VisExtent & GetExtent() const
const G4Plane3D & GetSectionPlane() const
G4double GetExtentRadius() const
Definition: G4VisExtent.cc:75
const G4Point3D & GetExtentCentre() const
Definition: G4VisExtent.cc:65
BasicVector3D< T > cross(const BasicVector3D< T > &v) const

References angle, HepGeom::BasicVector3D< T >::cross(), HepGeom::BasicVector3D< T >::dot(), G4VSceneHandler::fpScene, G4VSceneHandler::fpViewer, G4Scene::GetExtent(), G4VisExtent::GetExtentCentre(), G4VisExtent::GetExtentRadius(), G4ViewParameters::GetSectionPlane(), G4VViewer::GetViewParameters(), G4ViewParameters::IsSection(), HepGeom::BasicVector3D< T >::mag(), and G4InuclParticleNames::sp.

Referenced by G4VSceneHandler::CreateModelingParameters(), and G4OpenGLSceneHandler::CreateSectionSolid().

◆ CreateSG()

void G4ToolsSGSceneHandler::CreateSG ( )
protected

◆ DrawEndOfRunModels()

void G4VSceneHandler::DrawEndOfRunModels ( )
inherited

Definition at line 777 of file G4VSceneHandler.cc.

778{
779 const std::vector<G4Scene::Model>& EORModelList =
780 fpScene -> GetEndOfRunModelList ();
781 size_t nModels = EORModelList.size();
782 if (nModels) {
784 pMP->SetEvent(0);
785 for (size_t i = 0; i < nModels; i++) {
786 if (EORModelList[i].fActive) {
787 fpModel = EORModelList[i].fpModel;
788 fpModel -> SetModelingParameters(pMP);
789 fpModel -> DescribeYourselfTo (*this);
790 fpModel -> SetModelingParameters(0);
791 }
792 }
793 fpModel = 0;
794 delete pMP;
795 }
796}
void SetEvent(const G4Event *pEvent)
G4ModelingParameters * CreateModelingParameters()

References G4VSceneHandler::CreateModelingParameters(), G4VSceneHandler::fpModel, G4VSceneHandler::fpScene, and G4ModelingParameters::SetEvent().

Referenced by G4VisManager::EndOfRun(), and G4VSceneHandler::ProcessScene().

◆ DrawEvent()

void G4VSceneHandler::DrawEvent ( const G4Event event)
inherited

Definition at line 756 of file G4VSceneHandler.cc.

757{
758 const std::vector<G4Scene::Model>& EOEModelList =
759 fpScene -> GetEndOfEventModelList ();
760 size_t nModels = EOEModelList.size();
761 if (nModels) {
763 pMP->SetEvent(event);
764 for (size_t i = 0; i < nModels; i++) {
765 if (EOEModelList[i].fActive) {
766 fpModel = EOEModelList[i].fpModel;
767 fpModel -> SetModelingParameters(pMP);
768 fpModel -> DescribeYourselfTo (*this);
769 fpModel -> SetModelingParameters(0);
770 }
771 }
772 fpModel = 0;
773 delete pMP;
774 }
775}

References G4VSceneHandler::CreateModelingParameters(), G4VSceneHandler::fpModel, G4VSceneHandler::fpScene, and G4ModelingParameters::SetEvent().

Referenced by G4VisManager::EndOfEvent(), and G4VSceneHandler::ProcessScene().

◆ EndModeling()

void G4VSceneHandler::EndModeling ( )
virtualinherited

◆ EndPrimitives()

void G4VSceneHandler::EndPrimitives ( )
virtualinherited

◆ EndPrimitives2D()

void G4VSceneHandler::EndPrimitives2D ( )
virtualinherited

◆ EstablishBaseNodes()

void G4ToolsSGSceneHandler::EstablishBaseNodes ( )
protected

Definition at line 105 of file G4ToolsSGSceneHandler.cc.

106{
107 // Physical volume objects for each world hang from POs
109 size_t nWorlds = transportationManager->GetNoWorlds();
110 std::vector<G4VPhysicalVolume*>::iterator iterWorld = transportationManager->GetWorldsIterator();
111 fpPhysicalVolumeObjects.resize(nWorlds);
112 for (size_t i = 0; i < nWorlds; ++i, ++iterWorld) {
113 G4VPhysicalVolume* _world = (*iterWorld);
114 auto entity = new G4ToolsSGNode;
115 fpPersistent3DObjects.add(entity);
116 entity->SetPVNodeID(G4PhysicalVolumeModel::G4PhysicalVolumeNodeID(_world));
117 fpPhysicalVolumeObjects[i] = entity;
118 }
119}
std::vector< G4ToolsSGNode * > fpPhysicalVolumeObjects
static G4TransportationManager * GetTransportationManager()
std::vector< G4VPhysicalVolume * >::iterator GetWorldsIterator()
size_t GetNoWorlds() const

References fpPersistent3DObjects, fpPhysicalVolumeObjects, G4TransportationManager::GetNoWorlds(), G4TransportationManager::GetTransportationManager(), and G4TransportationManager::GetWorldsIterator().

Referenced by ClearStore(), and G4ToolsSGSceneHandler().

◆ GetAuxEdgeVisible()

G4bool G4VSceneHandler::GetAuxEdgeVisible ( const G4VisAttributes pVisAttribs)
inherited

Definition at line 1081 of file G4VSceneHandler.cc.

1081 {
1082 G4bool isAuxEdgeVisible = fpViewer->GetViewParameters().IsAuxEdgeVisible ();
1083 if (pVisAttribs -> IsForceAuxEdgeVisible()) {
1084 isAuxEdgeVisible = pVisAttribs->IsForcedAuxEdgeVisible();
1085 }
1086 return isAuxEdgeVisible;
1087}
G4bool IsForcedAuxEdgeVisible() const

References G4VSceneHandler::fpViewer, G4VViewer::GetViewParameters(), G4ViewParameters::IsAuxEdgeVisible(), and G4VisAttributes::IsForcedAuxEdgeVisible().

Referenced by G4OpenGLSceneHandler::AddPrimitive(), and G4OpenInventorSceneHandler::AddProperties().

◆ GetColor() [1/2]

const G4Colour & G4VSceneHandler::GetColor ( )
inherited

◆ GetColor() [2/2]

const G4Colour & G4VSceneHandler::GetColor ( const G4Visible )
inherited

◆ GetColour() [1/2]

const G4Colour & G4VSceneHandler::GetColour ( )
inherited

◆ GetColour() [2/2]

const G4Colour & G4VSceneHandler::GetColour ( const G4Visible visible)
inherited

◆ GetCurrentViewer()

G4VViewer * G4VSceneHandler::GetCurrentViewer ( ) const
inherited

◆ GetDrawingStyle()

G4ViewParameters::DrawingStyle G4VSceneHandler::GetDrawingStyle ( const G4VisAttributes pVisAttribs)
inherited

Definition at line 1021 of file G4VSceneHandler.cc.

1022 {
1023 // Drawing style is normally determined by the view parameters, but
1024 // it can be overriddden by the ForceDrawingStyle flag in the vis
1025 // attributes.
1027 const G4ViewParameters::DrawingStyle viewerStyle = vp.GetDrawingStyle();
1028 G4ViewParameters::DrawingStyle resultantStyle = viewerStyle;
1029 if (pVisAttribs -> IsForceDrawingStyle ()) {
1031 pVisAttribs -> GetForcedDrawingStyle ();
1032 // This is complicated because if hidden line and surface removal
1033 // has been requested we wish to preserve this sometimes.
1034 switch (forcedStyle) {
1036 switch (viewerStyle) {
1037 case (G4ViewParameters::hlr):
1038 resultantStyle = G4ViewParameters::hlhsr;
1039 break;
1041 resultantStyle = G4ViewParameters::hsr;
1042 break;
1044 resultantStyle = G4ViewParameters::hsr;
1045 break;
1047 case (G4ViewParameters::hsr):
1048 break;
1049 }
1050 break;
1052 resultantStyle = G4ViewParameters::cloud;
1053 break;
1055 default:
1056 // But if forced style is wireframe, do it, because one of its
1057 // main uses is in displaying the consituent solids of a Boolean
1058 // solid and their surfaces overlap with the resulting Booean
1059 // solid, making a mess if hlr is specified.
1060 resultantStyle = G4ViewParameters::wireframe;
1061 break;
1062 }
1063 }
1064 return resultantStyle;
1065}

References G4VisAttributes::cloud, G4ViewParameters::cloud, G4VSceneHandler::fpViewer, G4ViewParameters::GetDrawingStyle(), G4VViewer::GetViewParameters(), G4ViewParameters::hlhsr, G4ViewParameters::hlr, G4ViewParameters::hsr, G4VisAttributes::solid, G4VisAttributes::wireframe, and G4ViewParameters::wireframe.

Referenced by G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), AddPrimitive(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), G4OpenInventorSceneHandler::AddProperties(), G4OpenInventorSceneHandler::GeneratePrerequisites(), and G4VSceneHandler::RequestPrimitives().

◆ GetExtent()

const G4VisExtent & G4VSceneHandler::GetExtent ( ) const
virtualinherited

Reimplemented from G4VGraphicsScene.

Definition at line 134 of file G4VSceneHandler.cc.

135{
136 if (fpScene) {
137 return fpScene->GetExtent();
138 } else {
139 static const G4VisExtent defaultExtent = G4VisExtent();
140 return defaultExtent;
141 }
142}

References G4VSceneHandler::fpScene, and G4Scene::GetExtent().

Referenced by G4VtkViewer::SetView().

◆ GetGraphicsSystem()

G4VGraphicsSystem * G4VSceneHandler::GetGraphicsSystem ( ) const
inherited

◆ GetLineWidth()

G4double G4VSceneHandler::GetLineWidth ( const G4VisAttributes pVisAttribs)
inherited

Definition at line 1012 of file G4VSceneHandler.cc.

1013{
1014 G4double lineWidth = pVisAttribs->GetLineWidth();
1015 if (lineWidth < 1.) lineWidth = 1.;
1016 lineWidth *= fpViewer -> GetViewParameters().GetGlobalLineWidthScale();
1017 if (lineWidth < 1.) lineWidth = 1.;
1018 return lineWidth;
1019}
G4double GetLineWidth() const

References G4VSceneHandler::fpViewer, and G4VisAttributes::GetLineWidth().

Referenced by G4OpenGLSceneHandler::AddPrimitive().

◆ GetMarkerDiameter()

G4double G4VSceneHandler::GetMarkerDiameter ( const G4VMarker ,
MarkerSizeType  
)
inherited

◆ GetMarkerRadius()

G4double G4VSceneHandler::GetMarkerRadius ( const G4VMarker ,
MarkerSizeType  
)
inherited

◆ GetMarkerSize()

G4double G4VSceneHandler::GetMarkerSize ( const G4VMarker marker,
G4VSceneHandler::MarkerSizeType markerSizeType 
)
inherited

Definition at line 1089 of file G4VSceneHandler.cc.

1092{
1093 G4bool userSpecified = marker.GetWorldSize() || marker.GetScreenSize();
1094 const G4VMarker& defaultMarker =
1095 fpViewer -> GetViewParameters().GetDefaultMarker();
1096 G4double size = userSpecified ?
1097 marker.GetWorldSize() : defaultMarker.GetWorldSize();
1098 if (size) {
1099 // Draw in world coordinates.
1100 markerSizeType = world;
1101 }
1102 else {
1103 size = userSpecified ?
1104 marker.GetScreenSize() : defaultMarker.GetScreenSize();
1105 // Draw in screen coordinates.
1106 markerSizeType = screen;
1107 }
1108 size *= fpViewer -> GetViewParameters().GetGlobalMarkerScale();
1109 if (markerSizeType == screen && size < 1.) size = 1.;
1110 return size;
1111}
G4double GetScreenSize() const
G4double GetWorldSize() const

References G4VSceneHandler::fpViewer, G4VMarker::GetScreenSize(), G4VMarker::GetWorldSize(), G4VSceneHandler::screen, and G4VSceneHandler::world.

Referenced by G4OpenInventorSceneHandler::AddCircleSquare(), G4Qt3DSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitive(), G4HepRepFileSceneHandler::AddPrimitive(), G4OpenGLSceneHandler::AddPrimitive(), G4OpenInventorSceneHandler::AddPrimitive(), AddPrimitive(), G4OpenGLQtViewer::DrawText(), G4OpenGLViewer::DrawText(), and G4OpenGLXViewer::DrawText().

◆ GetMarkForClearingTransientStore()

G4bool G4VSceneHandler::GetMarkForClearingTransientStore ( ) const
inherited

◆ GetModel()

G4VModel * G4VSceneHandler::GetModel ( ) const
inherited

◆ GetName()

const G4String & G4VSceneHandler::GetName ( ) const
inherited

◆ GetNoOfSides()

G4int G4VSceneHandler::GetNoOfSides ( const G4VisAttributes pVisAttribs)
inherited

Definition at line 1113 of file G4VSceneHandler.cc.

1114{
1115 // No. of sides (lines segments per circle) is normally determined
1116 // by the view parameters, but it can be overriddden by the
1117 // ForceLineSegmentsPerCircle in the vis attributes.
1118 G4int lineSegmentsPerCircle = fpViewer->GetViewParameters().GetNoOfSides();
1119 if (pVisAttribs) {
1120 if (pVisAttribs->IsForceLineSegmentsPerCircle())
1121 lineSegmentsPerCircle = pVisAttribs->GetForcedLineSegmentsPerCircle();
1122 if (lineSegmentsPerCircle < pVisAttribs->GetMinLineSegmentsPerCircle()) {
1123 lineSegmentsPerCircle = pVisAttribs->GetMinLineSegmentsPerCircle();
1124 G4cout <<
1125 "G4VSceneHandler::GetNoOfSides: attempt to set the"
1126 "\nnumber of line segments per circle < " << lineSegmentsPerCircle
1127 << "; forced to " << pVisAttribs->GetMinLineSegmentsPerCircle() << G4endl;
1128 }
1129 }
1130 return lineSegmentsPerCircle;
1131}
G4bool IsForceLineSegmentsPerCircle() const
G4int GetForcedLineSegmentsPerCircle() const
static G4int GetMinLineSegmentsPerCircle()

References G4VSceneHandler::fpViewer, G4cout, G4endl, G4VisAttributes::GetForcedLineSegmentsPerCircle(), G4VisAttributes::GetMinLineSegmentsPerCircle(), G4ViewParameters::GetNoOfSides(), G4VViewer::GetViewParameters(), and G4VisAttributes::IsForceLineSegmentsPerCircle().

Referenced by G4OpenGLSceneHandler::AddPrimitive(), and G4VSceneHandler::RequestPrimitives().

◆ GetNumberOfCloudPoints()

G4int G4VSceneHandler::GetNumberOfCloudPoints ( const G4VisAttributes pVisAttribs) const
inherited

Definition at line 1067 of file G4VSceneHandler.cc.

1068 {
1069 // Returns no of cloud points from current view parameters, unless the user
1070 // has forced through the vis attributes, thereby over-riding the
1071 // current view parameter.
1072 G4int numberOfCloudPoints = fpViewer->GetViewParameters().GetNumberOfCloudPoints();
1073 if (pVisAttribs -> IsForceDrawingStyle() &&
1074 pVisAttribs -> GetForcedDrawingStyle() == G4VisAttributes::cloud &&
1075 pVisAttribs -> GetForcedNumberOfCloudPoints() > 0) {
1076 numberOfCloudPoints = pVisAttribs -> GetForcedNumberOfCloudPoints();
1077 }
1078 return numberOfCloudPoints;
1079}

References G4VisAttributes::cloud, G4VSceneHandler::fpViewer, G4ViewParameters::GetNumberOfCloudPoints(), and G4VViewer::GetViewParameters().

Referenced by G4VSceneHandler::RequestPrimitives().

◆ GetObjectTransformation()

const G4Transform3D & G4VSceneHandler::GetObjectTransformation ( ) const
inherited

◆ GetOrCreateNode()

tools::sg::separator * G4ToolsSGSceneHandler::GetOrCreateNode ( )
protected

Definition at line 121 of file G4ToolsSGSceneHandler.cc.

122{ // Retrieve or create a G4ToolsSGNode node suitable for next solid or primitive
123
124 // For time being, avoid errors in MT mode - see G4ToolsSGViewer::SwitchToMasterThread
125#ifdef G4MULTITHREADED
126 if (!G4Threading::IsMasterThread()) return nullptr;
127#endif
128
129 if (fReadyForTransients) { // All transients hang from this node
130 tools::sg::separator* sep = new tools::sg::separator;
131 fpTransient3DObjects.add(sep);
132 return sep;
133 }
134
135 auto* pPVModel = dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
136
137 if (!pPVModel) { // Persistent objects (e.g., axes)
138 tools::sg::separator* sep = new tools::sg::separator;
139 fpPersistent3DObjects.add(sep);
140 return sep;
141 }
142
143 // So this is a G4PhysicalVolumeModel
145 typedef std::vector<PVNodeID> PVPath;
146 //const PVPath& drawnPVPath = pPVModel->GetDrawnPVPath();
147 const PVPath& fullPVPath = pPVModel->GetFullPVPath();
148 //G4int currentDepth = pPVModel->GetCurrentDepth();
149 //G4VPhysicalVolume* pCurrentPV = pPVModel->GetCurrentPV();
150 //G4LogicalVolume* pCurrentLV = pPVModel->GetCurrentLV();
151 //G4Material* pCurrentMaterial = pPVModel->GetCurrentMaterial();
152 // Note: pCurrentMaterial may be zero (parallel world).
153
154 // Find appropriate root
155 const size_t nWorlds = fpPhysicalVolumeObjects.size();
156 size_t iWorld = 0;
157 for (; iWorld < nWorlds; ++iWorld) {
158 if (fullPVPath[0].GetPhysicalVolume() ==
159 fpPhysicalVolumeObjects[iWorld]->GetPVNodeID().GetPhysicalVolume()) break;
160 }
161 if (iWorld == nWorlds) {
162 G4Exception("G4ToolsSGSceneHandler::GetOrCreateNode", "ToolsSG-0000", FatalException,
163 "World mis-match - not possible(!?)");
164 }
165
166 // (Re-)establish pv path of root entity
167 G4ToolsSGNode* _world = fpPhysicalVolumeObjects[iWorld];
168 _world->SetPVNodeID(fullPVPath[0]);
169
170 // Provide nodes as required - may be a new node or a pre-existing node
171 G4ToolsSGNode* node = _world; // Working variable - default to world
172 const size_t depth = fullPVPath.size();
173 size_t iDepth = 1;
174 while (iDepth < depth) {
175 const auto& children = node->children();
176 const G4int nChildren = children.size();
177 G4int iChild = 0;
178 G4ToolsSGNode* child = nullptr;
179 for (; iChild < nChildren; ++iChild) {
180 child = static_cast<G4ToolsSGNode*>(children[iChild]);
181 if (child->GetPVNodeID() == fullPVPath[iDepth]) break;
182 }
183 if (iChild != nChildren) { // Existing node found
184 node = child; // Must be the ancestor of new node (subsequent iteration)
185 } else {
186 // Add a new node as child of node
187 G4ToolsSGNode* newNode = new G4ToolsSGNode;
188 node->add(newNode);
189 newNode->SetPVNodeID(fullPVPath[iDepth]);
190 node = newNode;
191 }
192 ++iDepth;
193 }
194 return node;
195}
const G4PhysicalVolumeModel::G4PhysicalVolumeNodeID & GetPVNodeID() const
void SetPVNodeID(const G4PhysicalVolumeModel::G4PhysicalVolumeNodeID &id)
G4bool IsMasterThread()
Definition: G4Threading.cc:124

References FatalException, G4VSceneHandler::fpModel, fpPersistent3DObjects, fpPhysicalVolumeObjects, fpTransient3DObjects, G4VSceneHandler::fReadyForTransients, G4Exception(), G4ToolsSGNode::GetPVNodeID(), G4Threading::IsMasterThread(), and G4ToolsSGNode::SetPVNodeID().

Referenced by AddPrimitive().

◆ GetPersistent2DObjects()

tools::sg::separator & G4ToolsSGSceneHandler::GetPersistent2DObjects ( )
inline

◆ GetPersistent3DObjects()

tools::sg::separator & G4ToolsSGSceneHandler::GetPersistent3DObjects ( )
inline

◆ GetScene()

G4Scene * G4VSceneHandler::GetScene ( ) const
inherited

◆ GetSceneHandlerId()

G4int G4VSceneHandler::GetSceneHandlerId ( ) const
inherited

◆ GetTextColor()

const G4Colour & G4VSceneHandler::GetTextColor ( const G4Text )
inherited

◆ GetTextColour()

const G4Colour & G4VSceneHandler::GetTextColour ( const G4Text text)
inherited

◆ GetTransient2DObjects()

tools::sg::separator & G4ToolsSGSceneHandler::GetTransient2DObjects ( )
inline

◆ GetTransient3DObjects()

tools::sg::separator & G4ToolsSGSceneHandler::GetTransient3DObjects ( )
inline

◆ GetTransientsDrawnThisEvent()

G4bool G4VSceneHandler::GetTransientsDrawnThisEvent ( ) const
inherited

◆ GetTransientsDrawnThisRun()

G4bool G4VSceneHandler::GetTransientsDrawnThisRun ( ) const
inherited

◆ GetViewCount()

G4int G4VSceneHandler::GetViewCount ( ) const
inherited

◆ GetViewerList()

const G4ViewerList & G4VSceneHandler::GetViewerList ( ) const
inherited

◆ IncrementViewCount()

G4int G4VSceneHandler::IncrementViewCount ( )
inherited

◆ IsReadyForTransients()

G4bool G4VSceneHandler::IsReadyForTransients ( ) const
inherited

◆ LoadAtts()

void G4VSceneHandler::LoadAtts ( const G4Visible visible,
G4AttHolder holder 
)
protectedinherited

Definition at line 934 of file G4VSceneHandler.cc.

935{
936 // Load G4Atts from G4VisAttributes, if any...
937 const G4VisAttributes* va = visible.GetVisAttributes();
938 if (va) {
939 const std::map<G4String,G4AttDef>* vaDefs =
940 va->GetAttDefs();
941 if (vaDefs) {
942 holder->AddAtts(visible.GetVisAttributes()->CreateAttValues(), vaDefs);
943 }
944 }
945
946 G4PhysicalVolumeModel* pPVModel =
947 dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
948 if (pPVModel) {
949 // Load G4Atts from G4PhysicalVolumeModel...
950 const std::map<G4String,G4AttDef>* pvDefs = pPVModel->GetAttDefs();
951 if (pvDefs) {
952 holder->AddAtts(pPVModel->CreateCurrentAttValues(), pvDefs);
953 }
954 }
955
956 G4TrajectoriesModel* trajModel = dynamic_cast<G4TrajectoriesModel*>(fpModel);
957 if (trajModel) {
958 // Load G4Atts from trajectory model...
959 const std::map<G4String,G4AttDef>* trajModelDefs = trajModel->GetAttDefs();
960 if (trajModelDefs) {
961 holder->AddAtts(trajModel->CreateCurrentAttValues(), trajModelDefs);
962 }
963 // Load G4Atts from trajectory...
964 const G4VTrajectory* traj = trajModel->GetCurrentTrajectory();
965 if (traj) {
966 const std::map<G4String,G4AttDef>* trajDefs = traj->GetAttDefs();
967 if (trajDefs) {
968 holder->AddAtts(traj->CreateAttValues(), trajDefs);
969 }
970 G4int nPoints = traj->GetPointEntries();
971 for (G4int i = 0; i < nPoints; ++i) {
972 G4VTrajectoryPoint* trajPoint = traj->GetPoint(i);
973 if (trajPoint) {
974 const std::map<G4String,G4AttDef>* pointDefs = trajPoint->GetAttDefs();
975 if (pointDefs) {
976 holder->AddAtts(trajPoint->CreateAttValues(), pointDefs);
977 }
978 }
979 }
980 }
981 }
982
983 G4HitsModel* hitsModel = dynamic_cast<G4HitsModel*>(fpModel);
984 if (hitsModel) {
985 // Load G4Atts from hit...
986 const G4VHit* hit = hitsModel->GetCurrentHit();
987 const std::map<G4String,G4AttDef>* hitsDefs = hit->GetAttDefs();
988 if (hitsDefs) {
989 holder->AddAtts(hit->CreateAttValues(), hitsDefs);
990 }
991 }
992}
void AddAtts(const std::vector< G4AttValue > *values, const std::map< G4String, G4AttDef > *defs)
Definition: G4AttHolder.hh:64
const G4VHit * GetCurrentHit() const
Definition: G4HitsModel.hh:57
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
const G4VTrajectory * GetCurrentTrajectory() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual std::vector< G4AttValue > * CreateAttValues() const
Definition: G4VHit.hh:64
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
Definition: G4VHit.hh:58
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 const std::map< G4String, G4AttDef > * GetAttDefs() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
const std::vector< G4AttValue > * CreateAttValues() const

References G4AttHolder::AddAtts(), G4VHit::CreateAttValues(), G4VisAttributes::CreateAttValues(), G4VTrajectory::CreateAttValues(), G4VTrajectoryPoint::CreateAttValues(), G4PhysicalVolumeModel::CreateCurrentAttValues(), G4TrajectoriesModel::CreateCurrentAttValues(), G4VSceneHandler::fpModel, G4VHit::GetAttDefs(), G4VisAttributes::GetAttDefs(), G4VTrajectory::GetAttDefs(), G4VTrajectoryPoint::GetAttDefs(), G4PhysicalVolumeModel::GetAttDefs(), G4TrajectoriesModel::GetAttDefs(), G4HitsModel::GetCurrentHit(), G4TrajectoriesModel::GetCurrentTrajectory(), G4VTrajectory::GetPoint(), G4VTrajectory::GetPointEntries(), and G4Visible::GetVisAttributes().

Referenced by G4OpenInventorSceneHandler::AddCircleSquare(), G4OpenInventorSceneHandler::AddPrimitive(), G4OpenGLImmediateSceneHandler::AddPrimitivePreambleInternal(), and G4OpenGLStoredSceneHandler::AddPrimitivePreambleInternal().

◆ operator=()

G4ToolsSGSceneHandler & G4ToolsSGSceneHandler::operator= ( const G4ToolsSGSceneHandler )
inlineprotected

Definition at line 70 of file G4ToolsSGSceneHandler.hh.

70{return *this;}

◆ PostAddSolid()

void G4VSceneHandler::PostAddSolid ( )
virtualinherited

◆ PreAddSolid()

void G4VSceneHandler::PreAddSolid ( const G4Transform3D objectTransformation,
const G4VisAttributes visAttribs 
)
virtualinherited

◆ ProcessScene()

void G4VSceneHandler::ProcessScene ( )
protectedvirtualinherited

Reimplemented in G4OpenGLSceneHandler.

Definition at line 612 of file G4VSceneHandler.cc.

613{
614 // Assumes graphics database store has already been cleared if
615 // relevant for the particular scene handler.
616
617 if(!fpScene)
618 return;
619
621 {
622 G4Exception("G4VSceneHandler::ProcessScene", "visman0106", JustWarning,
623 "The scene has no extent.");
624 }
625
627
628 if(!visManager->GetConcreteInstance())
629 return;
630
631 G4VisManager::Verbosity verbosity = visManager->GetVerbosity();
632
633 fReadyForTransients = false;
634
635 // Reset fMarkForClearingTransientStore. (Leaving
636 // fMarkForClearingTransientStore true causes problems with
637 // recomputing transients below.) Restore it again at end...
638 G4bool tmpMarkForClearingTransientStore = fMarkForClearingTransientStore;
640
641 // Traverse geometry tree and send drawing primitives to window(s).
642
643 const std::vector<G4Scene::Model>& runDurationModelList =
645
646 if(runDurationModelList.size())
647 {
648 if(verbosity >= G4VisManager::confirmations)
649 {
650 G4cout << "Traversing scene data..." << G4endl;
651 }
652
654
655 // Create modeling parameters from view parameters...
657
658 for(size_t i = 0; i < runDurationModelList.size(); i++)
659 {
660 if(runDurationModelList[i].fActive)
661 {
662 fpModel = runDurationModelList[i].fpModel;
665 // To see the extents of each model represented as wireframe boxes,
666 // uncomment the next line and DrawExtent in namespace above
667 // DrawExtent(fpModel);
669 }
670 }
671
672 fpModel = 0;
673 delete pMP;
674
675 EndModeling();
676 }
677
678 fReadyForTransients = true;
679
680 // Refresh event from end-of-event model list.
681 // Allow only in Idle or GeomClosed state...
683 G4ApplicationState state = stateManager->GetCurrentState();
684 if(state == G4State_Idle || state == G4State_GeomClosed)
685 {
686 visManager->SetEventRefreshing(true);
687
688 if(visManager->GetRequestedEvent())
689 {
690 DrawEvent(visManager->GetRequestedEvent());
691 }
692 else
693 {
695 if(runManager)
696 {
697 const G4Run* run = runManager->GetCurrentRun();
698 const std::vector<const G4Event*>* events =
699 run ? run->GetEventVector() : 0;
700 size_t nKeptEvents = 0;
701 if(events)
702 nKeptEvents = events->size();
703 if(nKeptEvents)
704 {
706 {
707 if(verbosity >= G4VisManager::confirmations)
708 {
709 G4cout << "Refreshing event..." << G4endl;
710 }
711 const G4Event* event = 0;
712 if(events && events->size())
713 event = events->back();
714 if(event)
715 DrawEvent(event);
716 }
717 else
718 { // Accumulating events.
719
720 if(verbosity >= G4VisManager::confirmations)
721 {
722 G4cout << "Refreshing events in run..." << G4endl;
723 }
724 for(const auto& event : *events)
725 {
726 if(event)
727 DrawEvent(event);
728 }
729
731 {
732 if(verbosity >= G4VisManager::warnings)
733 {
734 G4cout << "WARNING: Cannot refresh events accumulated over more"
735 "\n than one runs. Refreshed just the last run."
736 << G4endl;
737 }
738 }
739 }
740 }
741 }
742 }
743 visManager->SetEventRefreshing(false);
744 }
745
746 // Refresh end-of-run model list.
747 // Allow only in Idle or GeomClosed state...
748 if(state == G4State_Idle || state == G4State_GeomClosed)
749 {
751 }
752
753 fMarkForClearingTransientStore = tmpMarkForClearingTransientStore;
754}
G4ApplicationState
@ G4State_Idle
@ G4State_GeomClosed
static G4RunManager * GetMasterRunManager()
const G4Run * GetCurrentRun() const
Definition: G4Run.hh:49
const std::vector< Model > & GetRunDurationModelList() const
G4bool GetRefreshAtEndOfEvent() const
G4bool GetRefreshAtEndOfRun() const
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
void SetModelingParameters(const G4ModelingParameters *)
virtual void DescribeYourselfTo(G4VGraphicsScene &)=0
virtual void BeginModeling()
void DrawEvent(const G4Event *)
virtual void EndModeling()
G4bool fMarkForClearingTransientStore
static G4VVisManager * GetConcreteInstance()
static const G4VisExtent & GetNullExtent()
Definition: G4VisExtent.cc:60
void SetEventRefreshing(G4bool)
const G4Event * GetRequestedEvent() const
static G4VisManager * GetInstance()
Definition: run.py:1

References G4VSceneHandler::BeginModeling(), G4VisManager::confirmations, G4VSceneHandler::CreateModelingParameters(), G4VModel::DescribeYourselfTo(), G4VSceneHandler::DrawEndOfRunModels(), G4VSceneHandler::DrawEvent(), G4VSceneHandler::EndModeling(), G4VSceneHandler::fMarkForClearingTransientStore, G4VSceneHandler::fpModel, G4VSceneHandler::fpScene, G4VSceneHandler::fReadyForTransients, G4cout, G4endl, G4Exception(), G4State_GeomClosed, G4State_Idle, G4VVisManager::GetConcreteInstance(), G4RunManager::GetCurrentRun(), G4StateManager::GetCurrentState(), G4Scene::GetExtent(), G4VisManager::GetInstance(), G4RunManagerFactory::GetMasterRunManager(), G4VisExtent::GetNullExtent(), G4Scene::GetRefreshAtEndOfEvent(), G4Scene::GetRefreshAtEndOfRun(), G4VisManager::GetRequestedEvent(), G4Scene::GetRunDurationModelList(), G4StateManager::GetStateManager(), G4VisManager::GetVerbosity(), JustWarning, G4VisManager::SetEventRefreshing(), G4VModel::SetModelingParameters(), and G4VisManager::warnings.

Referenced by G4OpenGLSceneHandler::ProcessScene(), and G4VViewer::ProcessView().

◆ RemoveViewerFromList()

void G4VSceneHandler::RemoveViewerFromList ( G4VViewer pView)
inherited

Definition at line 493 of file G4VSceneHandler.cc.

493 {
494 fViewerList.remove(pViewer); // Does nothing if already removed
495 // And reset current viewer
496 auto visManager = G4VisManager::GetInstance();
497 visManager->SetCurrentViewer(nullptr);
498}
void remove(G4VViewer *)
Definition: G4ViewerList.cc:30

References G4VSceneHandler::fViewerList, G4VisManager::GetInstance(), and G4ViewerList::remove().

Referenced by G4VViewer::~G4VViewer().

◆ RequestPrimitives()

void G4VSceneHandler::RequestPrimitives ( const G4VSolid solid)
protectedvirtualinherited

Reimplemented in G4ASCIITreeSceneHandler, and G4RayTracerSceneHandler.

Definition at line 516 of file G4VSceneHandler.cc.

517{
520
521 switch (style) {
522 default:
527 {
528 // Use polyhedral representation
530 G4Polyhedron* pPolyhedron = solid.GetPolyhedron ();
532 if (pPolyhedron) {
533 pPolyhedron -> SetVisAttributes (fpVisAttribs);
535 AddPrimitive (*pPolyhedron);
536 EndPrimitives ();
537 break;
538 } else { // Print warnings and drop through to cloud
540 static std::set<const G4VSolid*> problematicSolids;
541 if (verbosity >= G4VisManager::errors &&
542 problematicSolids.find(&solid) == problematicSolids.end()) {
543 problematicSolids.insert(&solid);
544 G4cerr <<
545 "ERROR: G4VSceneHandler::RequestPrimitives"
546 "\n Polyhedron not available for " << solid.GetName ();
547 G4PhysicalVolumeModel* pPVModel = dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
548 if (pPVModel) {
549 G4cerr << "\n Touchable path: " << pPVModel->GetFullPVPath();
550 }
551 static G4bool explanation = false;
552 if (!explanation) {
553 explanation = true;
554 G4cerr <<
555 "\n This means it cannot be visualized in the usual way on most systems."
556 "\n 1) The solid may not have implemented the CreatePolyhedron method."
557 "\n 2) For Boolean solids, the BooleanProcessor, which attempts to create"
558 "\n the resultant polyhedron, may have failed."
559 "\n Try RayTracer. It uses Geant4's tracking algorithms instead.";
560 }
561 G4cerr << "\n Drawing solid with cloud of points.";
562 G4cerr << G4endl;
563 }
564 }
565 }
566 [[fallthrough]];
567
569 {
570 // Form solid out of cloud of dots on surface of solid
571 G4Polymarker dots;
572 // Note: OpenGL has a fast implementation of polymarker so it's better
573 // to build a polymarker rather than add a succession of circles.
574 // And anyway, in Qt, in the latter case each circle would be a scene-tree
575 // entry, something we would want to avoid.
578 dots.SetSize(G4VMarker::screen,1.);
579 G4int numberOfCloudPoints = GetNumberOfCloudPoints(fpVisAttribs);
580 if (numberOfCloudPoints <= 0) numberOfCloudPoints = vp.GetNumberOfCloudPoints();
581 for (G4int i = 0; i < numberOfCloudPoints; ++i) {
583 dots.push_back(p);
584 }
586 AddPrimitive(dots);
587 EndPrimitives ();
588 break;
589 }
590 }
591}
const std::vector< G4PhysicalVolumeNodeID > & GetFullPVPath() const
void SetMarkerType(MarkerType)
void SetSize(SizeType, G4double)
Definition: G4VMarker.cc:94
G4int GetNumberOfCloudPoints(const G4VisAttributes *) const
G4int GetNoOfSides(const G4VisAttributes *)
virtual void EndPrimitives()
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())
virtual void AddPrimitive(const G4Polyline &)=0
G4String GetName() const
virtual G4ThreeVector GetPointOnSurface() const
Definition: G4VSolid.cc:152
virtual G4Polyhedron * GetPolyhedron() const
Definition: G4VSolid.cc:705
void SetVisAttributes(const G4VisAttributes *)
Definition: G4Visible.cc:96
static void SetNumberOfRotationSteps(G4int n)
static void ResetNumberOfRotationSteps()

References G4VSceneHandler::AddPrimitive(), G4VSceneHandler::BeginPrimitives(), G4ViewParameters::cloud, G4Polymarker::dots, G4VSceneHandler::EndPrimitives(), G4VisManager::errors, G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fpModel, G4VSceneHandler::fpViewer, G4VSceneHandler::fpVisAttribs, G4cerr, G4endl, G4VSceneHandler::GetDrawingStyle(), G4PhysicalVolumeModel::GetFullPVPath(), G4VSolid::GetName(), G4VSceneHandler::GetNoOfSides(), G4ViewParameters::GetNumberOfCloudPoints(), G4VSceneHandler::GetNumberOfCloudPoints(), G4VSolid::GetPointOnSurface(), G4VSolid::GetPolyhedron(), G4VisManager::GetVerbosity(), G4VViewer::GetViewParameters(), G4ViewParameters::hlhsr, G4ViewParameters::hlr, G4ViewParameters::hsr, HepPolyhedron::ResetNumberOfRotationSteps(), G4VMarker::screen, G4Polymarker::SetMarkerType(), HepPolyhedron::SetNumberOfRotationSteps(), G4VMarker::SetSize(), G4Visible::SetVisAttributes(), and G4ViewParameters::wireframe.

Referenced by G4VSceneHandler::AddSolidT(), and G4VSceneHandler::AddSolidWithAuxiliaryEdges().

◆ SetCurrentViewer()

void G4VSceneHandler::SetCurrentViewer ( G4VViewer )
inherited

◆ SetMarkForClearingTransientStore()

void G4VSceneHandler::SetMarkForClearingTransientStore ( G4bool  )
inherited

◆ SetModel()

void G4VSceneHandler::SetModel ( G4VModel )
inherited

◆ SetName()

void G4VSceneHandler::SetName ( const G4String )
inherited

◆ SetObjectTransformation()

void G4VSceneHandler::SetObjectTransformation ( const G4Transform3D )
inherited

◆ SetPlotterHistograms()

void G4ToolsSGSceneHandler::SetPlotterHistograms ( tools::sg::plots &  a_plots)
protected

Definition at line 690 of file G4ToolsSGSceneHandler.cc.

690 {
691 a_plots.clear();
693 if(UI==NULL) return;
694 {tools_vforcit(Region_h1,fRegionH1s,it) {
695 tools::sg::plotter* _plotter = a_plots.find_plotter((*it).first);
696 if(_plotter) {
697 int hid = (*it).second;
698 std::ostringstream os;
699 os << hid;
700 std::string cmd("/analysis/h1/get ");
701 cmd += std::string(os.str());
702 G4int status = UI->ApplyCommand(cmd.c_str());
704 G4String hexString = UI->GetCurrentValues("/analysis/h1/get");
705 if(hexString.size()) {
706 void* ptr;
707 std::istringstream is(hexString);
708 is >> ptr;
709 tools::histo::h1d* _h = (tools::histo::h1d*)ptr;
710 tools::sg::plottable* p = new tools::sg::h1d2plot_cp(*_h);
711 _plotter->add_plottable(p); //give ownership of p to sg::plotter.
712 }
713 }
714 }
715 }}
716 {tools_vforcit(Region_h2,fRegionH2s,it) {
717 tools::sg::plotter* _plotter = a_plots.find_plotter((*it).first);
718 if(_plotter) {
719 int hid = (*it).second;
720 std::ostringstream os;
721 os << hid;
722 std::string cmd("/analysis/h2/get ");
723 cmd += std::string(os.str());
724 G4int status = UI->ApplyCommand(cmd.c_str());
726 G4String hexString = UI->GetCurrentValues("/analysis/h2/get");
727 if(hexString.size()) {
728 void* ptr;
729 std::istringstream is(hexString);
730 is >> ptr;
731 tools::histo::h2d* _h = (tools::histo::h2d*)ptr;
732 tools::sg::plottable* p = new tools::sg::h2d2plot_cp(*_h);
733 _plotter->add_plottable(p); //give ownership of p to sg::plotter.
734 }
735 }
736 }
737 }}
738}
@ fCommandSucceeded
std::pair< unsigned int, int > Region_h2
std::pair< unsigned int, int > Region_h1
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:485
G4String GetCurrentValues(const char *aCommand)
Definition: G4UImanager.cc:164
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:77

References G4UImanager::ApplyCommand(), fCommandSucceeded, fRegionH1s, fRegionH2s, G4UImanager::GetCurrentValues(), and G4UImanager::GetUIpointer().

Referenced by AddPrimitive(), and TouchPlotters().

◆ SetScene()

void G4VSceneHandler::SetScene ( G4Scene pScene)
virtualinherited

Reimplemented in G4OpenGLStoredQtSceneHandler.

Definition at line 507 of file G4VSceneHandler.cc.

507 {
508 fpScene = pScene;
509 // Notify all viewers that a kernel visit is required.
511 for (i = fViewerList.begin(); i != fViewerList.end(); i++) {
512 (*i) -> SetNeedKernelVisit (true);
513 }
514}
std::vector< G4VViewer * >::iterator G4ViewerListIterator
Definition: G4ViewerList.hh:42

References G4VSceneHandler::fpScene, and G4VSceneHandler::fViewerList.

Referenced by G4OpenGLStoredQtSceneHandler::SetScene().

◆ SetTransientsDrawnThisEvent()

void G4VSceneHandler::SetTransientsDrawnThisEvent ( G4bool  )
inherited

◆ SetTransientsDrawnThisRun()

void G4VSceneHandler::SetTransientsDrawnThisRun ( G4bool  )
inherited

◆ SetViewerList()

G4ViewerList & G4VSceneHandler::SetViewerList ( )
inherited

◆ TouchPlotters()

void G4ToolsSGSceneHandler::TouchPlotters ( tools::sg::node &  a_sg)

Definition at line 770 of file G4ToolsSGSceneHandler.cc.

770 {
771 tools::sg::search_action sa(G4cout);
772 const tools::sg::search_action::paths_t& paths = tools::sg::find_paths<tools::sg::plots>(sa,a_sg);
773 tools_vforcit(tools::sg::path_t,paths,it) {
774 tools::sg::plots* _plots = tools::sg::tail<tools::sg::plots>(*it);
775 if(_plots) {
776 SetPlotterHistograms(*_plots);
777 }
778 }
779}

References G4cout, and SetPlotterHistograms().

Referenced by G4ToolsSGViewer< SG_SESSION, SG_VIEWER >::FinishView().

Field Documentation

◆ fFreetypeNode

tools::sg::base_freetype* G4ToolsSGSceneHandler::fFreetypeNode
protected

◆ fIdentityTransformation

const G4Transform3D G4VSceneHandler::fIdentityTransformation
protectedinherited

Definition at line 364 of file G4VSceneHandler.hh.

◆ fMarkForClearingTransientStore

G4bool G4VSceneHandler::fMarkForClearingTransientStore
protectedinherited

Definition at line 352 of file G4VSceneHandler.hh.

Referenced by G4VSceneHandler::ProcessScene().

◆ fName

G4String G4VSceneHandler::fName
protectedinherited

Definition at line 347 of file G4VSceneHandler.hh.

◆ fNestingDepth

G4int G4VSceneHandler::fNestingDepth
protectedinherited

◆ fObjectTransformation

G4Transform3D G4VSceneHandler::fObjectTransformation
protectedinherited

◆ fpModel

G4VModel* G4VSceneHandler::fpModel
protectedinherited

◆ fpPersistent2DObjects

tools::sg::separator G4ToolsSGSceneHandler::fpPersistent2DObjects
protected

◆ fpPersistent3DObjects

tools::sg::separator G4ToolsSGSceneHandler::fpPersistent3DObjects
protected

◆ fpPhysicalVolumeObjects

std::vector<G4ToolsSGNode*> G4ToolsSGSceneHandler::fpPhysicalVolumeObjects
protected

Definition at line 87 of file G4ToolsSGSceneHandler.hh.

Referenced by EstablishBaseNodes(), and GetOrCreateNode().

◆ fProcessing2D

G4bool G4VSceneHandler::fProcessing2D
protectedinherited

◆ fProcessingSolid

G4bool G4VSceneHandler::fProcessingSolid
protectedinherited

◆ fpScene

G4Scene* G4VSceneHandler::fpScene
protectedinherited

◆ fpTransient2DObjects

tools::sg::separator G4ToolsSGSceneHandler::fpTransient2DObjects
protected

◆ fpTransient3DObjects

tools::sg::separator G4ToolsSGSceneHandler::fpTransient3DObjects
protected

◆ fpViewer

G4VViewer* G4VSceneHandler::fpViewer
protectedinherited

Definition at line 350 of file G4VSceneHandler.hh.

Referenced by G4OpenInventorSceneHandler::AddCircleSquare(), G4VtkSceneHandler::AddCompound(), G4HepRepFileSceneHandler::AddHepRepInstance(), AddPrimitive(), G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitive(), G4OpenInventorSceneHandler::AddPrimitive(), G4OpenGLImmediateSceneHandler::AddPrimitivePreambleInternal(), G4OpenGLStoredSceneHandler::AddPrimitivePreambleInternal(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), G4OpenInventorSceneHandler::AddProperties(), G4HepRepFileSceneHandler::AddSolid(), G4VSceneHandler::AddSolidT(), G4VSceneHandler::AddSolidWithAuxiliaryEdges(), G4OpenInventorSceneHandler::AddTransform(), G4OpenGLImmediateSceneHandler::BeginPrimitives2D(), G4OpenGLStoredQtSceneHandler::ClearStore(), G4GMocrenFileSceneHandler::ClearTransientStore(), G4HepRepFileSceneHandler::ClearTransientStore(), G4OpenGLImmediateSceneHandler::ClearTransientStore(), G4OpenGLStoredQtSceneHandler::ClearTransientStore(), G4OpenGLStoredSceneHandler::ClearTransientStore(), G4VSceneHandler::CreateModelingParameters(), G4VSceneHandler::CreateSectionSolid(), G4OpenGLStoredSceneHandler::EndModeling(), G4OpenGLStoredQtSceneHandler::ExtraPOProcessing(), G4OpenInventorSceneHandler::GeneratePrerequisites(), G4VSceneHandler::GetAuxEdgeVisible(), G4VSceneHandler::GetColour(), G4VSceneHandler::GetDrawingStyle(), G4VSceneHandler::GetLineWidth(), G4VSceneHandler::GetMarkerSize(), G4VSceneHandler::GetNoOfSides(), G4VSceneHandler::GetNumberOfCloudPoints(), G4VSceneHandler::GetTextColour(), G4GMocrenFileSceneHandler::IsVisible(), G4VSceneHandler::RequestPrimitives(), and G4OpenGLStoredQtSceneHandler::SetScene().

◆ fpVisAttribs

const G4VisAttributes* G4VSceneHandler::fpVisAttribs
protectedinherited

◆ fReadyForTransients

G4bool G4VSceneHandler::fReadyForTransients
protectedinherited

◆ fRegionH1s

std::vector<Region_h1> G4ToolsSGSceneHandler::fRegionH1s
protected

Definition at line 93 of file G4ToolsSGSceneHandler.hh.

Referenced by AddPrimitive(), and SetPlotterHistograms().

◆ fRegionH2s

std::vector<Region_h2> G4ToolsSGSceneHandler::fRegionH2s
protected

Definition at line 94 of file G4ToolsSGSceneHandler.hh.

Referenced by AddPrimitive(), and SetPlotterHistograms().

◆ fSceneHandlerId

const G4int G4VSceneHandler::fSceneHandlerId
protectedinherited

Definition at line 346 of file G4VSceneHandler.hh.

◆ fSceneIdCount

G4int G4ToolsSGSceneHandler::fSceneIdCount = 0
staticprotected

Definition at line 79 of file G4ToolsSGSceneHandler.hh.

◆ fSystem

G4VGraphicsSystem& G4VSceneHandler::fSystem
protectedinherited

Definition at line 345 of file G4VSceneHandler.hh.

Referenced by G4VSceneHandler::AddPrimitive().

◆ fTransientsDrawnThisEvent

G4bool G4VSceneHandler::fTransientsDrawnThisEvent
protectedinherited

◆ fTransientsDrawnThisRun

G4bool G4VSceneHandler::fTransientsDrawnThisRun
protectedinherited

◆ fViewCount

G4int G4VSceneHandler::fViewCount
protectedinherited

Definition at line 348 of file G4VSceneHandler.hh.

◆ fViewerList

G4ViewerList G4VSceneHandler::fViewerList
protectedinherited

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