Geant4-11
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends
G4VtkQtSceneHandler Class Reference

#include <G4VtkQtSceneHandler.hh>

Inheritance diagram for G4VtkQtSceneHandler:
G4VtkSceneHandler G4VSceneHandler G4VGraphicsScene

Public Types

enum  MarkerSizeType { world , screen }
 

Public Member Functions

void AddCompound (const G4Mesh &mesh)
 
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 &)
 
void AddPrimitive (const G4Circle &)
 
virtual void AddPrimitive (const G4Plotter &)
 
void AddPrimitive (const G4Polyhedron &)
 
void AddPrimitive (const G4Polyline &)
 
void AddPrimitive (const G4Polymarker &polymarker)
 
void AddPrimitive (const G4Square &)
 
void AddPrimitive (const G4Text &)
 
void AddPrimitiveBakedTransform (const G4Polyhedron &)
 
void AddPrimitiveTensorGlyph (const G4Polyhedron &)
 
void AddSolid (const G4Box &box)
 
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())
 
void Clear ()
 
virtual void ClearStore ()
 
virtual void ClearTransientStore ()
 
G4ModelingParametersCreateModelingParameters ()
 
void DrawEndOfRunModels ()
 
void DrawEvent (const G4Event *)
 
virtual void EndModeling ()
 
virtual void EndPrimitives ()
 
virtual void EndPrimitives2D ()
 
 G4VtkQtSceneHandler (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
 
G4SceneGetScene () const
 
G4int GetSceneHandlerId () const
 
const G4ColourGetTextColor (const G4Text &)
 
const G4ColourGetTextColour (const G4Text &)
 
G4bool GetTransientsDrawnThisEvent () const
 
G4bool GetTransientsDrawnThisRun () const
 
G4int GetViewCount () const
 
const G4ViewerListGetViewerList () const
 
G4int IncrementViewCount ()
 
G4bool IsReadyForTransients () const
 
void Modified ()
 
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 ()
 
virtual ~G4VtkQtSceneHandler ()
 

Protected Member Functions

virtual G4DisplacedSolidCreateCutawaySolid ()
 
virtual G4DisplacedSolidCreateSectionSolid ()
 
void LoadAtts (const G4Visible &, G4AttHolder *)
 
virtual void ProcessScene ()
 
virtual void RequestPrimitives (const G4VSolid &solid)
 

Protected Attributes

std::map< std::size_t, vtkSmartPointer< vtkPoints > > circleDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkVertexGlyphFilter > > circleFilterMap
 
std::map< std::size_t, vtkSmartPointer< vtkActor > > circlePolyDataActorMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > circlePolyDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > circlePolyDataMapperMap
 
std::map< std::size_t, const G4VisAttributes * > circleVisAttributesMap
 
const G4Transform3D fIdentityTransformation
 
G4bool fMarkForClearingTransientStore
 
G4String fName
 
G4int fNestingDepth
 
G4Transform3D fObjectTransformation
 
G4VModelfpModel
 
G4bool fProcessing2D
 
G4bool fProcessingSolid
 
G4ScenefpScene
 
G4VViewerfpViewer
 
const G4VisAttributesfpVisAttribs
 
G4bool fReadyForTransients
 
const G4int fSceneHandlerId
 
G4VGraphicsSystemfSystem
 
G4bool fTransientsDrawnThisEvent
 
G4bool fTransientsDrawnThisRun
 
G4int fViewCount
 
G4ViewerList fViewerList
 
std::map< std::size_t, vtkSmartPointer< vtkActor > > instanceActorMap
 
std::map< std::size_t, vtkSmartPointer< vtkDoubleArray > > instanceColoursMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > instancePolyDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkPoints > > instancePositionMap
 
std::map< std::size_t, vtkSmartPointer< vtkDoubleArray > > instanceRotationMap
 
std::map< std::size_t, vtkSmartPointer< vtkTensorGlyphColor > > instanceTensorGlyphMap
 
std::map< std::size_t, vtkSmartPointer< vtkPoints > > polyhedronDataMap
 
std::map< std::size_t, std::size_t > polyhedronPolyDataCountMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > polyhedronPolyDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkCellArray > > polyhedronPolyMap
 
std::map< std::size_t, const G4VisAttributes * > polyhedronVisAttributesMap
 
std::map< std::size_t, vtkSmartPointer< vtkPoints > > polylineDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkCellArray > > polylineLineMap
 
std::map< std::size_t, vtkSmartPointer< vtkActor > > polylinePolyDataActorMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > polylinePolyDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > polylinePolyDataMapperMap
 
std::map< std::size_t, const G4VisAttributes * > polylineVisAttributesMap
 
std::map< std::size_t, vtkSmartPointer< vtkPoints > > squareDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkVertexGlyphFilter > > squareFilterMap
 
std::map< std::size_t, vtkSmartPointer< vtkActor > > squarePolyDataActorMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > squarePolyDataMap
 
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > squarePolyDataMapperMap
 
std::map< std::size_t, const G4VisAttributes * > squareVisAttributesMap
 

Static Protected Attributes

static G4int fSceneIdCount = 0
 

Friends

class G4VtkQtViewer
 

Detailed Description

Definition at line 38 of file G4VtkQtSceneHandler.hh.

Member Enumeration Documentation

◆ MarkerSizeType

Enumerator
world 
screen 

Definition at line 58 of file G4VSceneHandler.hh.

Constructor & Destructor Documentation

◆ G4VtkQtSceneHandler()

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

Definition at line 46 of file G4VtkQtSceneHandler.cc.

47 :
48 G4VtkSceneHandler(system, name)
49{}
G4VtkSceneHandler(G4VGraphicsSystem &system, const G4String &name)
const char * name(G4int ptype)

◆ ~G4VtkQtSceneHandler()

G4VtkQtSceneHandler::~G4VtkQtSceneHandler ( )
virtual

Definition at line 51 of file G4VtkQtSceneHandler.cc.

51{}

Member Function Documentation

◆ AddCompound() [1/6]

void G4VtkSceneHandler::AddCompound ( const G4Mesh mesh)
virtualinherited

Reimplemented from G4VSceneHandler.

Definition at line 763 of file G4VtkSceneHandler.cc.

764{
765#ifdef G4VTKDEBUG
766 G4cout << "G4VtkSceneHandler::AddCompound" << G4endl;
767#endif
768
769 if(mesh.GetMeshType() != G4Mesh::rectangle || mesh.GetMeshDepth() != 3)
770 {
772 }
773
774 auto container = mesh.GetContainerVolume();
775 auto rep1 = container->GetLogicalVolume()->GetDaughter(0);
776 auto rep2 = rep1->GetLogicalVolume()->GetDaughter(0);
777 auto rep3 = rep2->GetLogicalVolume()->GetDaughter(0);
778
779 EAxis rep1_axis, rep2_axis, rep3_axis;
780 G4int rep1_nReplicas, rep2_nReplicas, rep3_nReplicas;
781 G4double rep1_width, rep2_width, rep3_width;
782 G4double rep1_offset, rep2_offset, rep3_offset;
783 G4bool rep1_consuming, rep2_consuming, rep3_consuming;
784
785 rep1->GetReplicationData(rep1_axis,rep1_nReplicas, rep1_width, rep1_offset, rep1_consuming);
786 rep2->GetReplicationData(rep2_axis,rep2_nReplicas, rep2_width, rep2_offset, rep2_consuming);
787 rep3->GetReplicationData(rep3_axis,rep3_nReplicas, rep3_width, rep3_offset, rep3_consuming);
788
789 // Instantiate a temporary G4PhysicalVolumeModel
791 tmpMP.SetCulling(false); // This avoids drawing transparent...
792 tmpMP.SetCullingInvisible(false); // ... or invisble volumes.
793 const G4bool useFullExtent = false; // To avoid calculating the extent
794
796 G4Transform3D(), &tmpMP, useFullExtent);
797
798 // Instantiate a pseudo scene so that we can make a "private" descent and fill vtkImageData
799 vtkSmartPointer<vtkImageData> imagedata = vtkSmartPointer<vtkImageData>::New();
800 imagedata->SetDimensions(rep1_nReplicas+1,rep2_nReplicas+1,rep3_nReplicas+1);
801 imagedata->SetSpacing(rep1_width,rep2_width,rep2_width);
802 imagedata->SetOrigin(0,0,0);
803 imagedata->AllocateScalars(VTK_DOUBLE, 1);
804
805 G4double halfX = 0., halfY = 0., halfZ = 0.;
806 struct PseudoScene : public G4PseudoScene
807 {
808 PseudoScene(
809 G4PhysicalVolumeModel* pvModel, // input...the following are output
810 vtkImageData *vtkId,
811 G4int nx, G4int ny, G4int nz,
812 G4double& halfX, G4double& halfY, G4double& halfZ) : fpPVModel(pvModel)
813 , fVtkId(vtkId)
814 , fNx(nx)
815 , fNy(ny)
816 , fNz(nz)
817 , fHalfX(halfX)
818 , fHalfY(halfY)
819 , fHalfZ(halfZ)
820 {}
821 using G4PseudoScene::AddSolid; // except for...
822 void AddSolid(const G4Box& box)
823 {
824 const G4Colour& colour = fpPVModel->GetCurrentLV()->GetVisAttributes()->GetColour();
825 // G4double density = fpPVModel->GetCurrentLV()->GetMaterial()->GetDensity();
826 const G4ThreeVector& position = fpCurrentObjectTransformation->getTranslation();
827 fHalfX = box.GetXHalfLength();
828 fHalfY = box.GetYHalfLength();
829 fHalfZ = box.GetZHalfLength();
830 fVtkId->SetScalarComponentFromDouble(int(position.x()/(2*fHalfX))+fNx,
831 int(position.y()/(2*fHalfY))+fNy,
832 int(position.z()/(2*fHalfZ))+fNz,
833 0,
834 (colour.GetRed() + colour.GetBlue() + colour.GetGreen())/3.0);
835 }
836 G4PhysicalVolumeModel* fpPVModel;
837 vtkImageData *fVtkId;
838 G4int fNx, fNy, fNz;
839 G4double &fHalfX, &fHalfY, &fHalfZ;
840 }
841 // construct the pseudoScene
842 pseudoScene(&tmpPVModel, imagedata, rep1_nReplicas, rep2_nReplicas, rep3_nReplicas, halfX, halfY, halfZ);
843
844 // Make private descent into the nested parameterisation
845 tmpPVModel.DescribeYourselfTo(pseudoScene);
846
847 vtkSmartPointer<vtkOpenGLGPUVolumeRayCastMapper> volumeMapper = vtkSmartPointer<vtkOpenGLGPUVolumeRayCastMapper>::New();
848 volumeMapper->SetInputData(imagedata);
849
850 vtkNew<vtkVolume> volume;
851 volume->SetMapper(volumeMapper);
852
853 vtkSmartPointer<vtkMatrix4x4> vtkMatrix = vtkSmartPointer<vtkMatrix4x4>::New();
854
855 vtkMatrix->SetElement(0,0,fObjectTransformation.xx());
856 vtkMatrix->SetElement(0,1,fObjectTransformation.xy());
857 vtkMatrix->SetElement(0,2,fObjectTransformation.xz());
858
859 vtkMatrix->SetElement(1,0,fObjectTransformation.yx());
860 vtkMatrix->SetElement(1,1,fObjectTransformation.yy());
861 vtkMatrix->SetElement(1,2,fObjectTransformation.yz());
862
863 vtkMatrix->SetElement(2,0,fObjectTransformation.zx());
864 vtkMatrix->SetElement(2,1,fObjectTransformation.zy());
865 vtkMatrix->SetElement(2,2,fObjectTransformation.zz());
866
867 vtkMatrix->SetElement(3,0, fObjectTransformation.dx());
868 vtkMatrix->SetElement(3,1, fObjectTransformation.dy());
869 vtkMatrix->SetElement(3,2, fObjectTransformation.dz());
870 vtkMatrix->SetElement(3,3, 1);
871
872 volume->SetUserMatrix(vtkMatrix);
873
874 auto *pVtkViewer = dynamic_cast<G4VtkViewer *>(fpViewer);
875 pVtkViewer->renderer->AddVolume(volume);
876}
HepGeom::Transform3D G4Transform3D
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
Definition: G4Box.hh:56
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
static G4bool GetColour(const G4String &key, G4Colour &result)
Definition: G4Colour.cc:161
G4double GetBlue() const
Definition: G4Colour.hh:154
G4double GetRed() const
Definition: G4Colour.hh:152
G4double GetGreen() const
Definition: G4Colour.hh:153
G4VPhysicalVolume * GetDaughter(const G4int i) const
MeshType GetMeshType() const
Definition: G4Mesh.hh:62
G4VPhysicalVolume * GetContainerVolume() const
Definition: G4Mesh.hh:61
@ rectangle
Definition: G4Mesh.hh:52
G4int GetMeshDepth() const
Definition: G4Mesh.hh:63
void SetCulling(G4bool)
void SetCullingInvisible(G4bool)
void AddSolid(const G4Box &solid)
G4LogicalVolume * GetLogicalVolume() const
virtual void GetReplicationData(EAxis &axis, G4int &nReplicas, G4double &width, G4double &offset, G4bool &consuming) const =0
G4Transform3D fObjectTransformation
G4VViewer * fpViewer
virtual void AddCompound(const G4VTrajectory &)
void AddSolid(const G4Box &box)
vtkNew< vtkRenderer > renderer
Definition: G4VtkViewer.hh:185
double dy() const
Definition: Transform3D.h:287
double zz() const
Definition: Transform3D.h:281
double yz() const
Definition: Transform3D.h:272
double dz() const
Definition: Transform3D.h:290
double dx() const
Definition: Transform3D.h:284
double xy() const
Definition: Transform3D.h:260
double zx() const
Definition: Transform3D.h:275
double yx() const
Definition: Transform3D.h:266
double zy() const
Definition: Transform3D.h:278
double xx() const
Definition: Transform3D.h:257
double yy() const
Definition: Transform3D.h:269
double xz() const
Definition: Transform3D.h:263
EAxis
Definition: geomdefs.hh:54

References G4VSceneHandler::AddCompound(), G4VtkSceneHandler::AddSolid(), G4PseudoScene::AddSolid(), G4PhysicalVolumeModel::DescribeYourselfTo(), HepGeom::Transform3D::dx(), HepGeom::Transform3D::dy(), HepGeom::Transform3D::dz(), G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetBlue(), G4Colour::GetColour(), G4Mesh::GetContainerVolume(), G4LogicalVolume::GetDaughter(), G4Colour::GetGreen(), G4VPhysicalVolume::GetLogicalVolume(), G4Mesh::GetMeshDepth(), G4Mesh::GetMeshType(), G4Colour::GetRed(), G4VPhysicalVolume::GetReplicationData(), G4Box::GetXHalfLength(), G4Box::GetYHalfLength(), G4Box::GetZHalfLength(), G4Mesh::rectangle, G4VtkViewer::renderer, G4ModelingParameters::SetCulling(), G4ModelingParameters::SetCullingInvisible(), G4PhysicalVolumeModel::UNLIMITED, HepGeom::Transform3D::xx(), HepGeom::Transform3D::xy(), HepGeom::Transform3D::xz(), HepGeom::Transform3D::yx(), HepGeom::Transform3D::yy(), HepGeom::Transform3D::yz(), HepGeom::Transform3D::zx(), HepGeom::Transform3D::zy(), and HepGeom::Transform3D::zz().

◆ 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}
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
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
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 G4VtkSceneHandler::AddPrimitive ( const G4Circle circle)
virtualinherited

Implements G4VSceneHandler.

Definition at line 285 of file G4VtkSceneHandler.cc.

285 {
286
287 MarkerSizeType sizeType;
288 G4double size= GetMarkerSize(circle, sizeType);
289 if(fProcessing2D) {sizeType = screen;}
290 else {sizeType = world;}
291
292 // Get vis attributes - pick up defaults if none.
294 G4Color colour = pVA->GetColour();
295 G4double opacity = colour.GetAlpha();
296 // G4bool isVisible = pVA->IsVisible();
297
298#ifdef G4VTKDEBUG
299 G4cout << "=================================" << G4endl;
300 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Circle& circle) called> " << " radius:" << size << " sizeType:" << sizeType << G4endl;
301 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Circle& circle) called> colour: " << colour.GetRed() << " " << colour.GetBlue() << " " << colour.GetGreen() << G4endl;
302 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Circle& circle) called> alpha: " << colour.GetAlpha() << G4endl;
303#endif
304
305 if (sizeType == world) {
306 std::size_t hash = std::hash<G4VisAttributes>{}(*pVA);
308 circleVisAttributesMap.insert(std::pair<std::size_t, const G4VisAttributes *>(hash, pVA));
309
310 vtkSmartPointer<vtkPoints> data = vtkSmartPointer<vtkPoints>::New();
311 vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
312 vtkSmartPointer<vtkVertexGlyphFilter> filter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
313 vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
314 vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
315
316 polyData->SetPoints(data);
317 filter->SetInputData(polyData);
318 mapper->SetInputConnection(filter->GetOutputPort());
319 actor->SetMapper(mapper);
320
321 // Setup actor and mapper
322 actor->GetProperty()->SetColor(colour.GetRed(), colour.GetGreen(), colour.GetBlue());
323 actor->GetProperty()->SetOpacity(opacity);
324 actor->SetVisibility(1);
325 actor->GetProperty()->SetRenderPointsAsSpheres(true);
326 actor->GetProperty()->SetPointSize(size*5);
327
328 auto *pVtkViewer = dynamic_cast<G4VtkViewer *>(fpViewer);
329 pVtkViewer->renderer->AddActor(actor);
330
331 circleDataMap.insert(std::pair<std::size_t,vtkSmartPointer<vtkPoints>>(hash, data));
332 circlePolyDataMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkPolyData>>(hash, polyData));
333 circleFilterMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkVertexGlyphFilter>>(hash, filter));
334 circlePolyDataMapperMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkPolyDataMapper>>(hash, mapper));
335 circlePolyDataActorMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkActor>>(hash, actor));
336 }
337
338 // Data data point
340 G4Point3D posPrime = rot*circle.GetPosition();
341 circleDataMap[hash]->InsertNextPoint(fObjectTransformation.dx() + posPrime.x(),
342 fObjectTransformation.dy() + posPrime.y(),
343 fObjectTransformation.dz() + posPrime.z());
344 }
345 else if (sizeType == screen) {
346
347 }
348}
G4double GetAlpha() const
Definition: G4Colour.hh:155
G4Point3D GetPosition() const
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
const G4VisAttributes * GetApplicableVisAttributes(const G4VisAttributes *) const
const G4Colour & GetColour() const
const G4VisAttributes * GetVisAttributes() const
std::map< std::size_t, vtkSmartPointer< vtkVertexGlyphFilter > > circleFilterMap
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > circlePolyDataMap
std::map< std::size_t, vtkSmartPointer< vtkPoints > > circleDataMap
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > circlePolyDataMapperMap
std::map< std::size_t, const G4VisAttributes * > circleVisAttributesMap
std::map< std::size_t, vtkSmartPointer< vtkActor > > circlePolyDataActorMap
CLHEP::HepRotation getRotation() const
static unsigned long FASTCALL hash(XML_Parser parser, KEY s)
Definition: xmlparse.cc:5967

References G4VtkSceneHandler::circleDataMap, G4VtkSceneHandler::circleFilterMap, G4VtkSceneHandler::circlePolyDataActorMap, G4VtkSceneHandler::circlePolyDataMap, G4VtkSceneHandler::circlePolyDataMapperMap, G4VtkSceneHandler::circleVisAttributesMap, HepGeom::Transform3D::dx(), HepGeom::Transform3D::dy(), HepGeom::Transform3D::dz(), G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fProcessing2D, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetAlpha(), G4VViewer::GetApplicableVisAttributes(), G4Colour::GetBlue(), G4VisAttributes::GetColour(), G4Colour::GetGreen(), G4VSceneHandler::GetMarkerSize(), G4VMarker::GetPosition(), G4Colour::GetRed(), HepGeom::Transform3D::getRotation(), G4Visible::GetVisAttributes(), hash(), G4VtkViewer::renderer, G4VSceneHandler::screen, G4VSceneHandler::world, HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().

◆ AddPrimitive() [2/7]

void G4VSceneHandler::AddPrimitive ( const G4Plotter )
virtualinherited

Implements G4VGraphicsScene.

Reimplemented in G4DAWNFILESceneHandler, G4GMocrenFileSceneHandler, G4HepRepFileSceneHandler, G4OpenGLImmediateSceneHandler, G4OpenGLSceneHandler, G4OpenGLStoredSceneHandler, G4OpenInventorSceneHandler, G4Qt3DSceneHandler, G4RayTracerSceneHandler, G4ToolsSGSceneHandler, G4VTreeSceneHandler, and G4VRML2FileSceneHandler.

Definition at line 501 of file G4VSceneHandler.cc.

501 {
502 G4cerr << "WARNING: Plotter not implemented for " << fSystem.GetName() << G4endl;
503 G4cerr << " Open a plotter-aware graphics system or remove plotter with" << G4endl;
504 G4cerr << " /vis/scene/removeModel Plotter" << G4endl;
505}
G4GLOB_DLL std::ostream G4cerr
const G4String & GetName() const
G4VGraphicsSystem & fSystem

References G4VSceneHandler::fSystem, G4cerr, G4endl, and G4VGraphicsSystem::GetName().

◆ AddPrimitive() [3/7]

void G4VtkSceneHandler::AddPrimitive ( const G4Polyhedron polyhedron)
virtualinherited

Implements G4VSceneHandler.

Definition at line 417 of file G4VtkSceneHandler.cc.

417 {
418 AddPrimitiveTensorGlyph(polyhedron);
419}
void AddPrimitiveTensorGlyph(const G4Polyhedron &)

References G4VtkSceneHandler::AddPrimitiveTensorGlyph().

◆ AddPrimitive() [4/7]

void G4VtkSceneHandler::AddPrimitive ( const G4Polyline polyline)
virtualinherited

Implements G4VSceneHandler.

Definition at line 144 of file G4VtkSceneHandler.cc.

144 {
145
147 // GetMarkerSize(text,sizeType);
148 if(fProcessing2D) {sizeType = screen;}
149 else {sizeType = world;}
150
151 // Get vis attributes - pick up defaults if none.
152 const G4VisAttributes* pVA = fpViewer -> GetApplicableVisAttributes(polyline.GetVisAttributes());
153 G4Color colour = pVA->GetColour();
154 G4double opacity = colour.GetAlpha();
155 G4double lineWidth = pVA->GetLineWidth();
156
157#ifdef G4VTKDEBUG
158 G4cout << "=================================" << G4endl;
159 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> vis hash: " << sizeType << " " << std::hash<G4VisAttributes>{}(*pVA) << G4endl;
160 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> sizeType: " << sizeType << G4endl;
161 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> isVisible: " << pVA->IsVisible() << G4endl;
162 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> isDaughtersInvisible: " << pVA->IsDaughtersInvisible() << G4endl;
163 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> colour: " << colour.GetRed() << " " << colour.GetGreen() << " " << colour.GetBlue() << G4endl;
164 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> alpha: " << colour.GetAlpha() << G4endl;
165 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyline& polyline) called> lineWidth: " << lineWidth << G4endl;
166#endif
167
168 if(sizeType == world) {
169 std::size_t hash = std::hash<G4VisAttributes>{}(*pVA);
171 polylineVisAttributesMap.insert(std::pair<std::size_t, const G4VisAttributes *>(hash, pVA));
172
173 vtkSmartPointer <vtkPoints> data = vtkSmartPointer<vtkPoints>::New();
174 vtkSmartPointer <vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();
175 vtkSmartPointer <vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
176 vtkSmartPointer <vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
177 vtkSmartPointer <vtkActor> actor = vtkSmartPointer<vtkActor>::New();
178
179 polyData->SetPoints(data);
180 polyData->SetLines(lines);
181 mapper->SetInputData(polyData);
182 actor->SetMapper(mapper);
183
184 // Setup actor and mapper
185 actor->GetProperty()->SetLineWidth(lineWidth);
186 actor->GetProperty()->SetColor(colour.GetRed(), colour.GetGreen(),
187 colour.GetBlue());
188 actor->GetProperty()->SetOpacity(opacity);
189 actor->SetVisibility(1);
190 // actor->GetProperty()->BackfaceCullingOn();
191 // actor->GetProperty()->FrontfaceCullingOn();
192
193 auto pVtkViewer = dynamic_cast<G4VtkViewer*>(fpViewer);
194 pVtkViewer->renderer->AddActor(actor);
195
196 polylineDataMap.insert(
197 std::pair<std::size_t, vtkSmartPointer<vtkPoints>>(hash, data));
198 polylineLineMap.insert(
199 std::pair<std::size_t, vtkSmartPointer<vtkCellArray>>(hash, lines));
200 polylinePolyDataMap.insert(
201 std::pair<std::size_t, vtkSmartPointer<vtkPolyData>>(hash, polyData));
203 std::pair<std::size_t, vtkSmartPointer<vtkPolyDataMapper>>(hash,
204 mapper));
206 std::pair<std::size_t, vtkSmartPointer<vtkActor>>(hash, actor));
207 }
208
209 // Data data
210 const size_t nLines = polyline.size();
211
212 for (size_t i = 0; i < nLines; ++i) {
213 auto id = polylineDataMap[hash]->InsertNextPoint(polyline[i].x(),
214 polyline[i].y(),
215 polyline[i].z());
216 if (i < nLines - 1) {
217 vtkSmartPointer <vtkLine> line = vtkSmartPointer<vtkLine>::New();
218 line->GetPointIds()->SetId(0, id);
219 line->GetPointIds()->SetId(1, id + 1);
220 polylineLineMap[hash]->InsertNextCell(line);
221 }
222 }
223 }
224 else if (sizeType == screen ) {
225
226 }
227}
G4double GetLineWidth() const
G4bool IsDaughtersInvisible() const
G4bool IsVisible() const
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > polylinePolyDataMapperMap
std::map< std::size_t, vtkSmartPointer< vtkCellArray > > polylineLineMap
std::map< std::size_t, const G4VisAttributes * > polylineVisAttributesMap
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > polylinePolyDataMap
std::map< std::size_t, vtkSmartPointer< vtkActor > > polylinePolyDataActorMap
std::map< std::size_t, vtkSmartPointer< vtkPoints > > polylineDataMap

References G4VSceneHandler::fProcessing2D, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetAlpha(), G4Colour::GetBlue(), G4VisAttributes::GetColour(), G4Colour::GetGreen(), G4VisAttributes::GetLineWidth(), G4Colour::GetRed(), G4Visible::GetVisAttributes(), hash(), G4VisAttributes::IsDaughtersInvisible(), G4VisAttributes::IsVisible(), G4VtkSceneHandler::polylineDataMap, G4VtkSceneHandler::polylineLineMap, G4VtkSceneHandler::polylinePolyDataActorMap, G4VtkSceneHandler::polylinePolyDataMap, G4VtkSceneHandler::polylinePolyDataMapperMap, G4VtkSceneHandler::polylineVisAttributesMap, G4VtkViewer::renderer, G4VSceneHandler::screen, and G4VSceneHandler::world.

◆ AddPrimitive() [5/7]

void G4VtkSceneHandler::AddPrimitive ( const G4Polymarker polymarker)
inlinevirtualinherited

Reimplemented from G4VSceneHandler.

Definition at line 97 of file G4VtkSceneHandler.hh.

98 {
99#ifdef G4VTKDEBUG
100 G4cout << "=================================" << G4endl;
101 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polymarker& polymarker) called." << G4endl;
102#endif
104 }
virtual void AddPrimitive(const G4Polyline &)=0

References G4VSceneHandler::AddPrimitive(), G4cout, and G4endl.

◆ AddPrimitive() [6/7]

void G4VtkSceneHandler::AddPrimitive ( const G4Square square)
virtualinherited

Implements G4VSceneHandler.

Definition at line 350 of file G4VtkSceneHandler.cc.

350 {
351
352 MarkerSizeType sizeType;
353 G4double size = GetMarkerSize (square, sizeType);
354
355 // Get vis attributes - pick up defaults if none.
356 const G4VisAttributes* pVA = fpViewer -> GetApplicableVisAttributes(square.GetVisAttributes());
357 G4Color colour = pVA->GetColour();
358 G4double opacity = colour.GetAlpha();
359 // G4bool isVisible = pVA->IsVisible();
360
361 // Draw in world coordinates.
362 vtkSmartPointer<vtkRegularPolygonSource> polygonSource = vtkSmartPointer<vtkRegularPolygonSource>::New();
363 polygonSource->SetNumberOfSides(4);
364 polygonSource->SetRadius(size);
365
366
367#ifdef G4VTKDEBUG
368 G4cout << "=================================" << G4endl;
369 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Square& square) called" << G4endl;
370 G4cout << square.GetPosition().x() << " " << square.GetPosition().y() << " " << square.GetPosition().z() << G4endl;
371 //PrintThings();
372#endif
373
374 if (sizeType == world) {
375 std::size_t hash = std::hash<G4VisAttributes>{}(*pVA);
377 squareVisAttributesMap.insert(std::pair<std::size_t, const G4VisAttributes *>(hash, pVA));
378
379 vtkSmartPointer<vtkPoints> data = vtkSmartPointer<vtkPoints>::New();
380 vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
381 vtkSmartPointer<vtkVertexGlyphFilter> filter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
382 vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
383 vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
384
385 polyData->SetPoints(data);
386 filter->SetInputData(polyData);
387 mapper->SetInputConnection(filter->GetOutputPort());
388 actor->SetMapper(mapper);
389
390 // Setup actor and mapper
391 actor->GetProperty()->SetColor(colour.GetRed(), colour.GetGreen(), colour.GetBlue());
392 actor->GetProperty()->SetOpacity(opacity);
393 actor->SetVisibility(1);
394 actor->GetProperty()->SetPointSize(size*5);
395
396 auto *pVtkViewer = dynamic_cast<G4VtkViewer *>(fpViewer);
397 pVtkViewer->renderer->AddActor(actor);
398
399 squareDataMap.insert(std::pair<std::size_t,vtkSmartPointer<vtkPoints>>(hash, data));
400 squarePolyDataMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkPolyData>>(hash, polyData));
401 squareFilterMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkVertexGlyphFilter>>(hash, filter));
402 squarePolyDataMapperMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkPolyDataMapper>>(hash, mapper));
403 squarePolyDataActorMap.insert(std::pair<std::size_t, vtkSmartPointer < vtkActor>>(hash, actor));
404 }
405
406 // Data data point
408 G4Point3D posPrime = rot*square.GetPosition();
409 squareDataMap[hash]->InsertNextPoint(fObjectTransformation.dx() + posPrime.x(),
410 fObjectTransformation.dy() + posPrime.y(),
411 fObjectTransformation.dz() + posPrime.z());
412 }
413 else if (sizeType == screen) {
414
415 }
416}
std::map< std::size_t, vtkSmartPointer< vtkVertexGlyphFilter > > squareFilterMap
std::map< std::size_t, vtkSmartPointer< vtkPoints > > squareDataMap
std::map< std::size_t, const G4VisAttributes * > squareVisAttributesMap
std::map< std::size_t, vtkSmartPointer< vtkActor > > squarePolyDataActorMap
std::map< std::size_t, vtkSmartPointer< vtkPolyDataMapper > > squarePolyDataMapperMap
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > squarePolyDataMap

References HepGeom::Transform3D::dx(), HepGeom::Transform3D::dy(), HepGeom::Transform3D::dz(), G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetAlpha(), G4Colour::GetBlue(), G4VisAttributes::GetColour(), G4Colour::GetGreen(), G4VSceneHandler::GetMarkerSize(), G4VMarker::GetPosition(), G4Colour::GetRed(), HepGeom::Transform3D::getRotation(), G4Visible::GetVisAttributes(), hash(), G4VtkViewer::renderer, G4VSceneHandler::screen, G4VtkSceneHandler::squareDataMap, G4VtkSceneHandler::squareFilterMap, G4VtkSceneHandler::squarePolyDataActorMap, G4VtkSceneHandler::squarePolyDataMap, G4VtkSceneHandler::squarePolyDataMapperMap, G4VtkSceneHandler::squareVisAttributesMap, G4VSceneHandler::world, HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().

◆ AddPrimitive() [7/7]

void G4VtkSceneHandler::AddPrimitive ( const G4Text text)
virtualinherited

Implements G4VSceneHandler.

Definition at line 229 of file G4VtkSceneHandler.cc.

229 {
230
232 if(fProcessing2D) {sizeType = screen;}
233 else {sizeType = world;}
234
235 const G4VisAttributes* pVA = fpViewer -> GetApplicableVisAttributes(text.GetVisAttributes());
236 G4Color colour = pVA->GetColour();
237 G4double opacity = colour.GetAlpha();
238 // G4Text::Layout layout = text.GetLayout();
239 // G4double xOffset = text.GetXOffset();
240 // G4double yOffset = text.GetYOffset();
241
242 double x = text.GetPosition().x();
243 double y = text.GetPosition().y();
244 double z = text.GetPosition().z();
245
246#ifdef G4VTKDEBUG
247 G4cout << "=================================" << G4endl;
248 G4cout << "G4VtkSeneHandler::AddPrimitive(const G4Text& text) called> text: " << text.GetText() << " sizeType:" << sizeType << " " << fProcessing2D << G4endl;
249 G4cout << "G4VtkSeneHandler::AddPrimitive(const G4Text& text) called> colour: " << colour.GetRed() << " " << colour.GetBlue() << " " << colour.GetGreen() << G4endl;
250 G4cout << "G4VtkSeneHandler::AddPrimitive(const G4Text& text) called> alpha: " << colour.GetAlpha() << G4endl;
251 G4cout << "G4VtkSeneHandler::AddPrimitive(const G4Text& text) called> position: " << x << " " << y << " " << z << G4endl;
252#endif
253
254 switch (sizeType) {
255 default:
256 case (screen): {
257 vtkSmartPointer <vtkTextActor> actor = vtkSmartPointer<vtkTextActor>::New();
258 actor->SetInput(text.GetText().c_str());
259 actor->GetPositionCoordinate()->SetCoordinateSystemToNormalizedViewport();
260 // actor->SetTextScaleModeToViewport();
261 actor->SetPosition((x+1.)/2.0, (y+1.)/2.);
262 actor->GetTextProperty()->SetFontSize(text.GetScreenSize());
263 actor->GetTextProperty()->SetColor(colour.GetRed(), colour.GetBlue(), colour.GetGreen());
264 actor->GetTextProperty()->SetOpacity(opacity);
265
266 auto *pVtkViewer = dynamic_cast<G4VtkViewer *>(fpViewer);
267 pVtkViewer->renderer->AddActor(actor);
268 break;
269 }
270 case world: {
271 vtkSmartPointer <vtkBillboardTextActor3D> actor = vtkSmartPointer<vtkBillboardTextActor3D>::New();
272 actor->SetInput(text.GetText().c_str());
273 actor->SetPosition(x, y, z);
274 actor->GetTextProperty()->SetFontSize(text.GetScreenSize());
275 actor->GetTextProperty()->SetColor(colour.GetRed(), colour.GetBlue(), colour.GetGreen());
276 actor->GetTextProperty()->SetOpacity(opacity);
277
278 auto *pVtkViewer = dynamic_cast<G4VtkViewer*>(fpViewer);
279 pVtkViewer->renderer->AddActor(actor);
280 break;
281 }
282 }
283}
G4String GetText() const
G4double GetScreenSize() const

References G4VSceneHandler::fProcessing2D, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetAlpha(), G4Colour::GetBlue(), G4VisAttributes::GetColour(), G4Colour::GetGreen(), G4VMarker::GetPosition(), G4Colour::GetRed(), G4VMarker::GetScreenSize(), G4Text::GetText(), G4Visible::GetVisAttributes(), G4VtkViewer::renderer, G4VSceneHandler::screen, G4VSceneHandler::world, HepGeom::BasicVector3D< T >::x(), HepGeom::BasicVector3D< T >::y(), and HepGeom::BasicVector3D< T >::z().

◆ AddPrimitiveBakedTransform()

void G4VtkSceneHandler::AddPrimitiveBakedTransform ( const G4Polyhedron polyhedron)
inherited

Definition at line 589 of file G4VtkSceneHandler.cc.

590{
591 // only have a single polydata object for each LV but bake in the PV
592 // transformation so clippers and cutters can be implemented
593 AddPrimitiveTensorGlyph(polyhedron);
594}

References G4VtkSceneHandler::AddPrimitiveTensorGlyph().

◆ AddPrimitiveTensorGlyph()

void G4VtkSceneHandler::AddPrimitiveTensorGlyph ( const G4Polyhedron polyhedron)
inherited

Definition at line 421 of file G4VtkSceneHandler.cc.

421 {
422 // only have a single polydata object for each LV but bake in the PV
423 // transformation so clippers and cutters can be implemented
424
425 //Get colour, etc..
426 if (polyhedron.GetNoFacets() == 0) {return;}
427
428 // Get vis attributes - pick up defaults if none.
430 G4Color colour = pVA->GetColour();
431 // G4bool isVisible = pVA->IsVisible();
432 // G4double lineWidth = pVA->GetLineWidth();
433 // G4VisAttributes::LineStyle lineStyle = pVA->GetLineStyle();
434
435 // G4double lineWidthScale = drawing_style.GetGlobalLineWidthScale();
436
437 // Get view parameters that the user can force through the vis attributes, thereby over-riding the current view parameter.
439 //G4bool isAuxEdgeVisible = GetAuxEdgeVisible (pVA);
440
441#ifdef G4VTKDEBUG
442 G4cout << "=================================" << G4endl;
443 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called> " << G4endl;
444 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called> colour:" << colour.GetRed() << " " << colour.GetBlue() << " " << colour.GetGreen() << G4endl;
445 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called> alpha:" << colour.GetAlpha() << G4endl;
446 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called> lineWidth:" << lineWidth << G4endl;
447 G4cout << "G4VtkSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called> lineStyle:" << lineStyle << G4endl;
448#endif
449
450 //std::size_t vhash = std::hash<G4VisAttributes>{}(*pVA);
451
452 std::size_t vhash = 0;
453 std::hash_combine(vhash,static_cast<int>(drawing_style));
454
455 std::size_t phash = std::hash<G4Polyhedron>{}(polyhedron);
456
457 std::size_t hash = 0;
458 std::hash_combine(hash, phash);
459 std::hash_combine(hash, vhash);
460
462
463 vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
464 vtkSmartPointer<vtkCellArray> polys = vtkSmartPointer<vtkCellArray>::New();
465 vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
466
467 G4bool notLastFace;
468 int iVert = 0;
469 do {
470 G4Point3D vertex[4];
471 G4int edgeFlag[4];
472 G4Normal3D normals[4];
473 G4int nEdges;
474 notLastFace = polyhedron.GetNextFacet(nEdges, vertex, edgeFlag, normals);
475
476 vtkSmartPointer<vtkIdList> poly = vtkSmartPointer<vtkIdList>::New();
477 // loop over vertices
478 for (int i = 0; i < nEdges; i++) {
479 points->InsertNextPoint(vertex[i].x(), vertex[i].y(), vertex[i].z());
480 poly->InsertNextId(iVert);
481 iVert++;
482 }
483 polys->InsertNextCell(poly);
484
485 } while (notLastFace);
486
487 polydata->SetPoints(points);
488 polydata->SetPolys(polys);
489
490 polyhedronDataMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkPoints>>(hash, points));
491 polyhedronPolyMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkCellArray>>(hash, polys));
492 polyhedronPolyDataMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkPolyData>>(hash, polydata));
493 polyhedronPolyDataCountMap.insert(std::pair<std::size_t, std::size_t>(hash, 0));
494
495 vtkSmartPointer<vtkPoints> instancePosition = vtkSmartPointer<vtkPoints>::New();
496 vtkSmartPointer<vtkDoubleArray> instanceRotation = vtkSmartPointer<vtkDoubleArray>::New();
497 vtkSmartPointer<vtkDoubleArray> instanceColors = vtkSmartPointer<vtkDoubleArray>::New();
498 vtkSmartPointer<vtkPolyDataMapper> instanceMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
499 vtkSmartPointer<vtkActor> instanceActor = vtkSmartPointer<vtkActor>::New();
500 instanceColors->SetName("colors");
501
502 instanceColors->SetNumberOfComponents(4);
503 instanceRotation->SetNumberOfComponents(9);
504
505 vtkSmartPointer<vtkPolyData> instancePolyData = vtkSmartPointer<vtkPolyData>::New();
506 instancePolyData->SetPoints(instancePosition);
507 instancePolyData->GetPointData()->SetTensors(instanceRotation);
508 instancePolyData->GetPointData()->SetVectors(instanceColors);
509 instancePolyData->GetPointData()->SetScalars(instanceColors);
510
511 vtkSmartPointer<vtkCleanPolyData> filterClean = vtkSmartPointer<vtkCleanPolyData>::New();
512 filterClean->PointMergingOn();
513 filterClean->AddInputData(polydata);
514
515 vtkSmartPointer<vtkTriangleFilter> filterTriangle = vtkSmartPointer<vtkTriangleFilter>::New();
516 filterTriangle->SetInputConnection(filterClean->GetOutputPort());
517
518 vtkSmartPointer<vtkPolyDataNormals> filterNormals = vtkSmartPointer<vtkPolyDataNormals>::New();
519 filterNormals->SetFeatureAngle(45);
520 filterNormals->SetInputConnection(filterTriangle->GetOutputPort());
521
522 vtkSmartPointer<vtkFeatureEdges> filterEdge = vtkSmartPointer<vtkFeatureEdges>::New();
523 filterEdge->SetFeatureEdges(1);
524 filterEdge->SetManifoldEdges(0);
525 filterEdge->SetBoundaryEdges(0);
526 filterEdge->SetFeatureAngle(45); // TODO need to have a function and command to set this
527 filterEdge->SetInputConnection(filterTriangle->GetOutputPort());
528
529 vtkSmartPointer<vtkTensorGlyphColor> tensorGlyph = vtkSmartPointer<vtkTensorGlyphColor>::New();
530 tensorGlyph->SetInputData(instancePolyData);
531 tensorGlyph->SetSourceConnection(filterNormals->GetOutputPort());
532 tensorGlyph->ColorGlyphsOn();
533 tensorGlyph->ScalingOff();
534 tensorGlyph->ThreeGlyphsOff();
535 tensorGlyph->ExtractEigenvaluesOff();
536 tensorGlyph->SetColorModeToScalars();
537 tensorGlyph->Update();
538
539 instanceMapper->SetInputData(tensorGlyph->GetOutput());
540 instanceMapper->SetColorModeToDirectScalars();
541
542 instanceActor->SetMapper(instanceMapper);
543 // instanceActor->GetProperty()->SetLineWidth(10);
544 instanceActor->SetVisibility(1);
545
546 if(drawing_style == G4ViewParameters::hsr) {
547
548 }
549
550 if(drawing_style == G4ViewParameters::hlr) {
551 }
552
553 if(drawing_style == G4ViewParameters::wireframe) {
554 instanceActor->GetProperty()->SetRepresentationToWireframe();
555 }
556
557 auto *pVtkViewer = dynamic_cast<G4VtkViewer *>(fpViewer);
558 pVtkViewer->renderer->AddActor(instanceActor);
559
560 instancePositionMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkPoints>>(hash, instancePosition));
561 instanceRotationMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkDoubleArray>>(hash, instanceRotation));
562 instanceColoursMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkDoubleArray>>(hash, instanceColors));
563 instancePolyDataMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkPolyData>>(hash,instancePolyData));
564 instanceActorMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkActor>>(hash, instanceActor));
565 instanceTensorGlyphMap.insert(std::pair<std::size_t, vtkSmartPointer<vtkTensorGlyphColor>>(hash, tensorGlyph));
566 }
567
569
570 double red = colour.GetRed();
571 double green = colour.GetGreen();
572 double blue = colour.GetBlue();
573 double alpha = colour.GetAlpha();
574
575 instanceColoursMap[hash]->InsertNextTuple4(red, green, blue, alpha);
576
580
582
583 instanceRotationMap[hash]->InsertNextTuple9(fInvObjTrans.xx(), fInvObjTrans.xy(),fInvObjTrans.xz(),
584 fInvObjTrans.yx(), fInvObjTrans.yy(),fInvObjTrans.yz(),
585 fInvObjTrans.zx(), fInvObjTrans.zy(),fInvObjTrans.zz());
586
587}
static const G4double alpha
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > instancePolyDataMap
std::map< std::size_t, vtkSmartPointer< vtkDoubleArray > > instanceColoursMap
std::map< std::size_t, vtkSmartPointer< vtkDoubleArray > > instanceRotationMap
std::map< std::size_t, vtkSmartPointer< vtkPoints > > instancePositionMap
std::map< std::size_t, vtkSmartPointer< vtkPolyData > > polyhedronPolyDataMap
std::map< std::size_t, std::size_t > polyhedronPolyDataCountMap
std::map< std::size_t, vtkSmartPointer< vtkActor > > instanceActorMap
std::map< std::size_t, vtkSmartPointer< vtkCellArray > > polyhedronPolyMap
std::map< std::size_t, vtkSmartPointer< vtkTensorGlyphColor > > instanceTensorGlyphMap
std::map< std::size_t, vtkSmartPointer< vtkPoints > > polyhedronDataMap
Transform3D inverse() const
Definition: Transform3D.cc:141
G4int GetNoFacets() const
G4bool GetNextFacet(G4int &n, G4Point3D *nodes, G4int *edgeFlags=0, G4Normal3D *normals=0) const
void hash_combine(std::size_t)

References alpha, HepGeom::Transform3D::dx(), HepGeom::Transform3D::dy(), HepGeom::Transform3D::dz(), G4VSceneHandler::fObjectTransformation, G4VSceneHandler::fpViewer, G4cout, G4endl, G4Colour::GetAlpha(), G4VViewer::GetApplicableVisAttributes(), G4Colour::GetBlue(), G4VisAttributes::GetColour(), G4VSceneHandler::GetDrawingStyle(), G4Colour::GetGreen(), HepPolyhedron::GetNextFacet(), HepPolyhedron::GetNoFacets(), G4Colour::GetRed(), G4Visible::GetVisAttributes(), hash(), std::hash_combine(), G4ViewParameters::hlr, G4ViewParameters::hsr, G4VtkSceneHandler::instanceActorMap, G4VtkSceneHandler::instanceColoursMap, G4VtkSceneHandler::instancePolyDataMap, G4VtkSceneHandler::instancePositionMap, G4VtkSceneHandler::instanceRotationMap, G4VtkSceneHandler::instanceTensorGlyphMap, HepGeom::Transform3D::inverse(), G4VtkSceneHandler::polyhedronDataMap, G4VtkSceneHandler::polyhedronPolyDataCountMap, G4VtkSceneHandler::polyhedronPolyDataMap, G4VtkSceneHandler::polyhedronPolyMap, G4VtkViewer::renderer, G4ViewParameters::wireframe, HepGeom::Transform3D::xx(), HepGeom::Transform3D::xy(), HepGeom::Transform3D::xz(), HepGeom::Transform3D::yx(), HepGeom::Transform3D::yy(), HepGeom::Transform3D::yz(), HepGeom::Transform3D::zx(), HepGeom::Transform3D::zy(), and HepGeom::Transform3D::zz().

Referenced by G4VtkSceneHandler::AddPrimitive(), and G4VtkSceneHandler::AddPrimitiveBakedTransform().

◆ AddSolid() [1/14]

void G4VtkSceneHandler::AddSolid ( const G4Box box)
virtualinherited

Reimplemented from G4VSceneHandler.

Definition at line 724 of file G4VtkSceneHandler.cc.

724 {
725
727
728#if 0
729 return;
730
731 const G4VModel* pv_model = GetModel();
732 if (!pv_model) { return ; }
733
734 G4PhysicalVolumeModel* pPVModel = dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
735 if (!pPVModel) { return ; }
736
737 //-- debug information
738 if(1) {
739 G4VPhysicalVolume *pv = pPVModel->GetCurrentPV();
741 G4cout << "name=" << box.GetName() << " volumeType=" << pv->VolumeType() << " pvName=" << pv->GetName() << " lvName=" << lv->GetName() << " multiplicity=" << pv->GetMultiplicity() << " isparametrised=" << pv->IsParameterised() << " isreplicated=" << pv->IsReplicated() << " parametrisation=" << pv->GetParameterisation() << G4endl;
742 }
743
744 if(0) {
745 G4Material *mat = pPVModel->GetCurrentMaterial();
746 G4String name = mat->GetName();
747 G4double dens = mat->GetDensity()/(g/cm3);
748 G4int copyNo = pPVModel->GetCurrentPV()->GetCopyNo();
749 G4int depth = pPVModel->GetCurrentDepth();
750 G4cout << " name : " << box.GetName() << G4endl;
751 G4cout << " copy no.: " << copyNo << G4endl;
752 G4cout << " depth : " << depth << G4endl;
753 G4cout << " density : " << dens << " [g/cm3]" << G4endl;
754 G4cout << " location: " << pPVModel->GetCurrentPV()->GetObjectTranslation() << G4endl;
755 G4cout << " Multiplicity : " << pPVModel->GetCurrentPV()->GetMultiplicity() << G4endl;
756 G4cout << " Is replicated? : " << pPVModel->GetCurrentPV()->IsReplicated() << G4endl;
757 G4cout << " Is parameterised? : " << pPVModel->GetCurrentPV()->IsParameterised() << G4endl;
758 G4cout << " top phys. vol. name : " << pPVModel->GetTopPhysicalVolume()->GetName() << G4endl;
759 }
760#endif
761}
static constexpr double cm3
Definition: G4SIunits.hh:101
static constexpr double g
Definition: G4SIunits.hh:168
const G4String & GetName() const
G4double GetDensity() const
Definition: G4Material.hh:176
const G4String & GetName() const
Definition: G4Material.hh:173
G4VPhysicalVolume * GetCurrentPV() const
G4VPhysicalVolume * GetTopPhysicalVolume() const
G4Material * GetCurrentMaterial() const
virtual G4bool IsReplicated() const =0
virtual EVolume VolumeType() const =0
virtual G4int GetMultiplicity() const
virtual G4int GetCopyNo() const =0
const G4String & GetName() const
virtual G4VPVParameterisation * GetParameterisation() const =0
G4ThreeVector GetObjectTranslation() const
virtual G4bool IsParameterised() const =0
G4VModel * GetModel() const
virtual void AddSolid(const G4Box &)
G4String GetName() const

References G4VSceneHandler::AddSolid(), cm3, G4VSceneHandler::fpModel, g, G4cout, G4endl, G4VPhysicalVolume::GetCopyNo(), G4PhysicalVolumeModel::GetCurrentDepth(), G4PhysicalVolumeModel::GetCurrentMaterial(), G4PhysicalVolumeModel::GetCurrentPV(), G4Material::GetDensity(), G4VPhysicalVolume::GetLogicalVolume(), G4VSceneHandler::GetModel(), G4VPhysicalVolume::GetMultiplicity(), G4LogicalVolume::GetName(), G4VPhysicalVolume::GetName(), G4VSolid::GetName(), G4Material::GetName(), G4VPhysicalVolume::GetObjectTranslation(), G4VPhysicalVolume::GetParameterisation(), G4PhysicalVolumeModel::GetTopPhysicalVolume(), G4VPhysicalVolume::IsParameterised(), G4VPhysicalVolume::IsReplicated(), G4InuclParticleNames::name(), and G4VPhysicalVolume::VolumeType().

Referenced by G4VtkSceneHandler::AddCompound().

◆ 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}
const G4VisAttributes * fpVisAttribs
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().

◆ Clear()

void G4VtkSceneHandler::Clear ( )
inherited

Definition at line 679 of file G4VtkSceneHandler.cc.

679 {
680
682 polylineDataMap.clear();
683 polylineLineMap.clear();
684 polylinePolyDataMap.clear();
687
688 for (auto& v : polylineDataMap)
689 {v.second->Reset();}
690 for (auto& v : polylineLineMap)
691 {v.second->Reset();}
692
694 circleDataMap.clear();
695 circlePolyDataMap.clear();
696 circleFilterMap.clear();
699
701 squareDataMap.clear();
702 squarePolyDataMap.clear();
703 squareFilterMap.clear();
706
707 for (auto& v : squareDataMap)
708 {v.second->Reset();}
709
711 polyhedronDataMap.clear();
712 polyhedronPolyMap.clear();
713 polyhedronPolyDataMap.clear();
715
716 instancePositionMap.clear();
717 instanceRotationMap.clear();
718 instanceColoursMap.clear();
719 instancePolyDataMap.clear();
721 instanceActorMap.clear();
722}
std::map< std::size_t, const G4VisAttributes * > polyhedronVisAttributesMap

References G4VtkSceneHandler::circleDataMap, G4VtkSceneHandler::circleFilterMap, G4VtkSceneHandler::circlePolyDataActorMap, G4VtkSceneHandler::circlePolyDataMap, G4VtkSceneHandler::circlePolyDataMapperMap, G4VtkSceneHandler::circleVisAttributesMap, G4VtkSceneHandler::instanceActorMap, G4VtkSceneHandler::instanceColoursMap, G4VtkSceneHandler::instancePolyDataMap, G4VtkSceneHandler::instancePositionMap, G4VtkSceneHandler::instanceRotationMap, G4VtkSceneHandler::instanceTensorGlyphMap, G4VtkSceneHandler::polyhedronDataMap, G4VtkSceneHandler::polyhedronPolyDataCountMap, G4VtkSceneHandler::polyhedronPolyDataMap, G4VtkSceneHandler::polyhedronPolyMap, G4VtkSceneHandler::polyhedronVisAttributesMap, G4VtkSceneHandler::polylineDataMap, G4VtkSceneHandler::polylineLineMap, G4VtkSceneHandler::polylinePolyDataActorMap, G4VtkSceneHandler::polylinePolyDataMap, G4VtkSceneHandler::polylinePolyDataMapperMap, G4VtkSceneHandler::polylineVisAttributesMap, G4VtkSceneHandler::squareDataMap, G4VtkSceneHandler::squareFilterMap, G4VtkSceneHandler::squarePolyDataActorMap, G4VtkSceneHandler::squarePolyDataMap, G4VtkSceneHandler::squarePolyDataMapperMap, and G4VtkSceneHandler::squareVisAttributesMap.

Referenced by G4VtkViewer::ClearView().

◆ ClearStore()

void G4VSceneHandler::ClearStore ( )
virtualinherited

◆ ClearTransientStore()

void G4VSceneHandler::ClearTransientStore ( )
virtualinherited

◆ 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
const G4VisExtent & GetExtent() const
const G4ViewParameters & GetViewParameters() 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().

◆ 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

◆ 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 IsAuxEdgeVisible() const
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(), G4ToolsSGSceneHandler::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}

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 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(), G4ToolsSGSceneHandler::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

◆ 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

◆ 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().

◆ Modified()

void G4VtkSceneHandler::Modified ( )
inherited

Definition at line 595 of file G4VtkSceneHandler.cc.

595 {
596 for (auto it = polylineDataMap.begin(); it != polylineDataMap.end(); it++)
597 {
598 it->second->Modified();
599 }
600
601 for (auto it = polylineLineMap.begin(); it != polylineLineMap.end(); it++)
602 {
603 it->second->Modified();
604 }
605 for (auto it = circleDataMap.begin(); it != circleDataMap.end(); it++)
606 {
607 it->second->Modified();
608 }
609
610 for (auto it = squareDataMap.begin(); it != squareDataMap.end(); it++)
611 {
612 it->second->Modified();
613 }
614
615 for(auto it = instancePositionMap.begin(); it != instancePositionMap.end(); it++)
616 {
617 it->second->Modified();
618 }
619
620 for(auto it = instanceRotationMap.begin(); it != instanceRotationMap.end(); it++)
621 {
622 it->second->Modified();
623 }
624
625 for(auto it = instanceColoursMap.begin(); it != instanceColoursMap.end(); it++)
626 {
627 it->second->Modified();
628 }
629
630 for(auto it = instancePolyDataMap.begin(); it != instancePolyDataMap.end(); it++)
631 {
632 it->second->Modified();
633 }
634
635 for(auto it = instanceActorMap.begin(); it != instanceActorMap.end(); it++)
636 {
637 it->second->Modified();
638 }
639
640 for(auto it = instanceTensorGlyphMap.begin(); it != instanceTensorGlyphMap.end(); it++)
641 {
642 it->second->Update();
643 }
644
645#ifdef G4VTKDEBUG
646 G4cout << "G4VtkSceneHandler::Modified() polyline styles: " << polylineVisAttributesMap.size() << G4endl;
647 for (auto it = polylineLineMap.begin(); it != polylineLineMap.end(); it++)
648 {
649 G4cout << "G4VtkSceneHandler::Modified() polyline segments: "
650 << it->second->GetNumberOfCells() << G4endl;
651 }
652 G4cout << "G4VtkSceneHandler::Modified() circle styles: " << circleVisAttributesMap.size() << G4endl;
653 for (auto it = circleDataMap.begin(); it != circleDataMap.end(); it++)
654 {
655 G4cout << "G4VtkSceneHandler::Modified() circles: "
656 << it->second->GetNumberOfPoints() << G4endl;
657 }
658
659 G4cout << "G4VtkSceneHandler::Modified() square styles: " << squareVisAttributesMap.size() << G4endl;
660 for (auto it = squareDataMap.begin(); it != squareDataMap.end(); it++)
661 {
662 G4cout << "G4VtkSceneHanler::Modified() squares: "
663 << it->second->GetNumberOfPoints() << G4endl;
664 }
665
666 G4cout << "G4VtkSceneHandler::Modified() unique polyhedra: " << polyhedronDataMap.size() << G4endl;
667
668 int nPlacements = 0;
669 int nCells = 0;
670 for (auto it = polyhedronPolyDataMap.begin(); it != polyhedronPolyDataMap.end(); it++) {
671 G4cout << "G4VtkSceneHandler::Modified() polyhedronPolyData: " << it->second->GetPoints()->GetNumberOfPoints() << " " << it->second->GetPolys()->GetNumberOfCells() << " " << polyhedronPolyDataCountMap[it->first] <<G4endl;
672 nCells += it->second->GetPolys()->GetNumberOfCells()*polyhedronPolyDataCountMap[it->first];
673 nPlacements += polyhedronPolyDataCountMap[it->first];
674 }
675 G4cout << "G4VtkSceneHandler::Modified() polyhedronPolyData: " << nPlacements << " " << nCells << G4endl;
676#endif
677}

References G4VtkSceneHandler::circleDataMap, G4VtkSceneHandler::circleVisAttributesMap, G4cout, G4endl, G4VtkSceneHandler::instanceActorMap, G4VtkSceneHandler::instanceColoursMap, G4VtkSceneHandler::instancePolyDataMap, G4VtkSceneHandler::instancePositionMap, G4VtkSceneHandler::instanceRotationMap, G4VtkSceneHandler::instanceTensorGlyphMap, G4VtkSceneHandler::polyhedronDataMap, G4VtkSceneHandler::polyhedronPolyDataCountMap, G4VtkSceneHandler::polyhedronPolyDataMap, G4VtkSceneHandler::polylineDataMap, G4VtkSceneHandler::polylineLineMap, G4VtkSceneHandler::polylineVisAttributesMap, G4VtkSceneHandler::squareDataMap, and G4VtkSceneHandler::squareVisAttributesMap.

Referenced by G4VtkViewer::FinishView(), and G4VtkViewer::ShowView().

◆ 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
@ JustWarning
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 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

◆ 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

Friends And Related Function Documentation

◆ G4VtkQtViewer

friend class G4VtkQtViewer
friend

Definition at line 39 of file G4VtkQtSceneHandler.hh.

Field Documentation

◆ circleDataMap

std::map<std::size_t, vtkSmartPointer<vtkPoints> > G4VtkSceneHandler::circleDataMap
protectedinherited

◆ circleFilterMap

std::map<std::size_t, vtkSmartPointer<vtkVertexGlyphFilter> > G4VtkSceneHandler::circleFilterMap
protectedinherited

◆ circlePolyDataActorMap

std::map<std::size_t, vtkSmartPointer<vtkActor> > G4VtkSceneHandler::circlePolyDataActorMap
protectedinherited

◆ circlePolyDataMap

std::map<std::size_t, vtkSmartPointer<vtkPolyData> > G4VtkSceneHandler::circlePolyDataMap
protectedinherited

◆ circlePolyDataMapperMap

std::map<std::size_t, vtkSmartPointer<vtkPolyDataMapper> > G4VtkSceneHandler::circlePolyDataMapperMap
protectedinherited

◆ circleVisAttributesMap

std::map<std::size_t, const G4VisAttributes*> G4VtkSceneHandler::circleVisAttributesMap
protectedinherited

◆ 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

◆ fProcessing2D

G4bool G4VSceneHandler::fProcessing2D
protectedinherited

◆ fProcessingSolid

G4bool G4VSceneHandler::fProcessingSolid
protectedinherited

◆ fpScene

G4Scene* G4VSceneHandler::fpScene
protectedinherited

◆ fpViewer

G4VViewer* G4VSceneHandler::fpViewer
protectedinherited

Definition at line 350 of file G4VSceneHandler.hh.

Referenced by G4OpenInventorSceneHandler::AddCircleSquare(), G4VtkSceneHandler::AddCompound(), G4HepRepFileSceneHandler::AddHepRepInstance(), G4ToolsSGSceneHandler::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

◆ fSceneHandlerId

const G4int G4VSceneHandler::fSceneHandlerId
protectedinherited

Definition at line 346 of file G4VSceneHandler.hh.

◆ fSceneIdCount

G4int G4VtkQtSceneHandler::fSceneIdCount = 0
staticprotected

Definition at line 46 of file G4VtkQtSceneHandler.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

◆ instanceActorMap

std::map<std::size_t, vtkSmartPointer<vtkActor> > G4VtkSceneHandler::instanceActorMap
protectedinherited

◆ instanceColoursMap

std::map<std::size_t, vtkSmartPointer<vtkDoubleArray> > G4VtkSceneHandler::instanceColoursMap
protectedinherited

◆ instancePolyDataMap

std::map<std::size_t, vtkSmartPointer<vtkPolyData> > G4VtkSceneHandler::instancePolyDataMap
protectedinherited

◆ instancePositionMap

std::map<std::size_t, vtkSmartPointer<vtkPoints> > G4VtkSceneHandler::instancePositionMap
protectedinherited

◆ instanceRotationMap

std::map<std::size_t, vtkSmartPointer<vtkDoubleArray> > G4VtkSceneHandler::instanceRotationMap
protectedinherited

◆ instanceTensorGlyphMap

std::map<std::size_t, vtkSmartPointer<vtkTensorGlyphColor> > G4VtkSceneHandler::instanceTensorGlyphMap
protectedinherited

◆ polyhedronDataMap

std::map<std::size_t, vtkSmartPointer<vtkPoints> > G4VtkSceneHandler::polyhedronDataMap
protectedinherited

◆ polyhedronPolyDataCountMap

std::map<std::size_t, std::size_t> G4VtkSceneHandler::polyhedronPolyDataCountMap
protectedinherited

◆ polyhedronPolyDataMap

std::map<std::size_t, vtkSmartPointer<vtkPolyData> > G4VtkSceneHandler::polyhedronPolyDataMap
protectedinherited

◆ polyhedronPolyMap

std::map<std::size_t, vtkSmartPointer<vtkCellArray> > G4VtkSceneHandler::polyhedronPolyMap
protectedinherited

◆ polyhedronVisAttributesMap

std::map<std::size_t, const G4VisAttributes*> G4VtkSceneHandler::polyhedronVisAttributesMap
protectedinherited

Definition at line 149 of file G4VtkSceneHandler.hh.

Referenced by G4VtkSceneHandler::Clear().

◆ polylineDataMap

std::map<std::size_t, vtkSmartPointer<vtkPoints> > G4VtkSceneHandler::polylineDataMap
protectedinherited

◆ polylineLineMap

std::map<std::size_t, vtkSmartPointer<vtkCellArray> > G4VtkSceneHandler::polylineLineMap
protectedinherited

◆ polylinePolyDataActorMap

std::map<std::size_t, vtkSmartPointer<vtkActor> > G4VtkSceneHandler::polylinePolyDataActorMap
protectedinherited

◆ polylinePolyDataMap

std::map<std::size_t, vtkSmartPointer<vtkPolyData> > G4VtkSceneHandler::polylinePolyDataMap
protectedinherited

◆ polylinePolyDataMapperMap

std::map<std::size_t, vtkSmartPointer<vtkPolyDataMapper> > G4VtkSceneHandler::polylinePolyDataMapperMap
protectedinherited

◆ polylineVisAttributesMap

std::map<std::size_t, const G4VisAttributes*> G4VtkSceneHandler::polylineVisAttributesMap
protectedinherited

◆ squareDataMap

std::map<std::size_t, vtkSmartPointer<vtkPoints> > G4VtkSceneHandler::squareDataMap
protectedinherited

◆ squareFilterMap

std::map<std::size_t, vtkSmartPointer<vtkVertexGlyphFilter> > G4VtkSceneHandler::squareFilterMap
protectedinherited

◆ squarePolyDataActorMap

std::map<std::size_t, vtkSmartPointer<vtkActor> > G4VtkSceneHandler::squarePolyDataActorMap
protectedinherited

◆ squarePolyDataMap

std::map<std::size_t, vtkSmartPointer<vtkPolyData> > G4VtkSceneHandler::squarePolyDataMap
protectedinherited

◆ squarePolyDataMapperMap

std::map<std::size_t, vtkSmartPointer<vtkPolyDataMapper> > G4VtkSceneHandler::squarePolyDataMapperMap
protectedinherited

◆ squareVisAttributesMap

std::map<std::size_t, const G4VisAttributes*> G4VtkSceneHandler::squareVisAttributesMap
protectedinherited

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