Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4RayTracerViewer Class Reference

#include <G4RayTracerViewer.hh>

Inheritance diagram for G4RayTracerViewer:

Public Member Functions

 G4RayTracerViewer (G4VSceneHandler &, const G4String &name, G4TheRayTracer *=0)
virtual ~G4RayTracerViewer ()
void Initialise ()
void SetView ()
void ClearView ()
void DrawView ()
G4TheRayTracerGetTracer ()
Public Member Functions inherited from G4VViewer
 G4VViewer (G4VSceneHandler &, G4int id, const G4String &name="")
virtual ~G4VViewer ()
virtual void ResetView ()
void RefreshView ()
virtual void ShowView ()
virtual void FinishView ()
virtual G4bool ReadyToDraw ()
std::vector< G4ThreeVectorComputeFlyThrough (G4Vector3D *)
virtual void DoneWithMasterThread ()
virtual void MovingToVisSubThread ()
virtual void SwitchToVisSubThread ()
virtual void DoneWithVisSubThread ()
virtual void MovingToMasterThread ()
virtual void SwitchToMasterThread ()
void InsertModelInSceneTree (G4VModel *)
const G4SceneTreeItemGetSceneTree ()
G4SceneTreeItemAccessSceneTree ()
void UpdateGUISceneTree ()
void UpdateGUIControlWidgets ()
void UpdateGUIDrawingStyle ()
void UpdateGUIProjectionStyle ()
void UpdateGUITransparencySlider ()
const G4StringGetName () const
const G4StringGetShortName () const
void SetName (const G4String &)
G4int GetViewId () const
G4VSceneHandlerGetSceneHandler () const
const G4ViewParametersGetViewParameters () const
const G4ViewParametersGetDefaultViewParameters () const
G4double GetKernelVisitElapsedTimeSeconds () const
virtual const std::vector< G4ModelingParameters::VisAttributesModifier > * GetPrivateVisAttributesModifiers () const
void SetViewParameters (const G4ViewParameters &vp)
void SetDefaultViewParameters (const G4ViewParameters &vp)
const G4VisAttributesGetApplicableVisAttributes (const G4VisAttributes *) const
void SetNeedKernelVisit (G4bool need)
void NeedKernelVisit ()
void ProcessView ()
void ProcessTransients ()
void ZoomFromMouseWheel (G4double delta, G4bool shift=false, G4double xPos=0, G4double yPos=0)
virtual G4bool GetWindowSize (unsigned int &a_w, unsigned int &a_h)
virtual G4double GetSceneNearWidth ()

Protected Attributes

G4int fFileCount
G4TheRayTracertheTracer
Protected Attributes inherited from G4VViewer
G4VSceneHandlerfSceneHandler
G4int fViewId
G4String fName
G4String fShortName
G4ViewParameters fVP
G4ViewParameters fDefaultVP
G4double fKernelVisitElapsedTimeSeconds = 999.
G4SceneTreeItem fSceneTree
G4bool fNeedKernelVisit
G4bool fTransientsNeedRedrawing

Additional Inherited Members

Public Attributes inherited from G4VViewer
const G4int fMaxAllTouchables = 10000
G4bool fCurtailDescent = false
Protected Member Functions inherited from G4VViewer
void SetTouchable (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath)
void TouchableSetVisibility (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, G4bool visibility)
void TouchableSetColour (const std::vector< G4PhysicalVolumeModel::G4PhysicalVolumeNodeID > &fullPath, const G4Colour &)

Detailed Description

Definition at line 37 of file G4RayTracerViewer.hh.

Constructor & Destructor Documentation

◆ G4RayTracerViewer()

G4RayTracerViewer::G4RayTracerViewer ( G4VSceneHandler & sceneHandler,
const G4String & name,
G4TheRayTracer * aTracer = 0 )

Definition at line 51 of file G4RayTracerViewer.cc.

55: G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name)
56, fFileCount(0)
57#ifdef G4MULTITHREADED
58, theTracer(aTracer? aTracer: G4TheMTRayTracer::Instance(new G4RTJpegMaker, new G4RTSimpleScanner))
59#else
60, theTracer(aTracer? aTracer: new G4TheRayTracer(new G4RTJpegMaker, new G4RTSimpleScanner))
61#endif
62{
63 if (!theTracer) {
64 G4warn << "G4RayTracerViewer::Initialise: No tracer" << G4endl;
65 fViewId = -1; // This flags an error.
66 return;
67 }
68}
#define G4warn
Definition G4Scene.cc:41
#define G4endl
Definition G4ios.hh:67
G4TheRayTracer * theTracer
static G4TheMTRayTracer * Instance()
G4int IncrementViewCount()
G4int fViewId
Definition G4VViewer.hh:269
G4VViewer(G4VSceneHandler &, G4int id, const G4String &name="")
Definition G4VViewer.cc:49

Referenced by G4RayTracerQtViewer::G4RayTracerQtViewer(), and G4RayTracerXViewer::G4RayTracerXViewer().

◆ ~G4RayTracerViewer()

G4RayTracerViewer::~G4RayTracerViewer ( )
virtual

Definition at line 70 of file G4RayTracerViewer.cc.

70{}

Member Function Documentation

◆ ClearView()

void G4RayTracerViewer::ClearView ( void )
virtual

Implements G4VViewer.

Definition at line 107 of file G4RayTracerViewer.cc.

107{}

◆ DrawView()

void G4RayTracerViewer::DrawView ( )
virtual

Implements G4VViewer.

Definition at line 109 of file G4RayTracerViewer.cc.

110{
111 // Trap recursive call
112 static G4bool called = false;
113 if (called) return;
114 called = true;
115
116 if (fVP.GetFieldHalfAngle() == 0.) { // Orthogonal (parallel) projection.
117 G4double fieldHalfAngle = perMillion;
118 fVP.SetFieldHalfAngle(fieldHalfAngle);
119 G4warn <<
120 "WARNING: G4RayTracerViewer::DrawView: true orthogonal projection"
121 "\n not yet implemented. Doing a \"long shot\", i.e., a perspective"
122 "\n projection with a half field angle of "
123 << fieldHalfAngle <<
124 " radians."
125 << G4endl;
126 SetView(); // With this fieldHalfAngle
127 ProcessView();
128 fVP.SetFieldHalfAngle(0.);
129 }
130 else {
131 ProcessView();
132 }
133
134 // Normally it's ProcessView() that takes the time, but for RayTracer it's Trace()
135 G4Timer timer;
136 timer.Start();
137 std::ostringstream filename;
138 filename << "g4RayTracer." << fShortName << '_'
139 << std::setw(4) << std::setfill('0') << fFileCount++ << ".jpeg";
140 theTracer->Trace(filename.str());
141 timer.Stop();
143
144 // Reset call flag
145 called = false;
146}
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
void Stop()
void Start()
G4double GetRealElapsed() const
Definition G4Timer.cc:113
void ProcessView()
Definition G4VViewer.cc:112
G4String fShortName
Definition G4VViewer.hh:271
G4double fKernelVisitElapsedTimeSeconds
Definition G4VViewer.hh:274
G4ViewParameters fVP
Definition G4VViewer.hh:272

◆ GetTracer()

G4TheRayTracer * G4RayTracerViewer::GetTracer ( )
inline

Definition at line 47 of file G4RayTracerViewer.hh.

47{return theTracer;}

Referenced by G4RTMessenger::SetNewValue().

◆ Initialise()

void G4RayTracerViewer::Initialise ( )
virtual

Reimplemented from G4VViewer.

Reimplemented in G4RayTracerXViewer.

Definition at line 72 of file G4RayTracerViewer.cc.

73{
74 theTracer->SetNColumn(fVP.GetWindowSizeHintX());
75 theTracer->SetNRow(fVP.GetWindowSizeHintY());
76}

Referenced by G4RayTracerQtViewer::Initialise(), and G4RayTracerXViewer::Initialise().

◆ SetView()

void G4RayTracerViewer::SetView ( )
virtual

Implements G4VViewer.

Definition at line 78 of file G4RayTracerViewer.cc.

79{
80 // Get radius of scene, etc. (See G4OpenGLViewer::SetView().)
81 // Note that this procedure properly takes into account zoom, dolly and pan.
82 const G4Point3D& targetPoint
83 = fSceneHandler.GetScene()->GetStandardTargetPoint()
84 + fVP.GetCurrentTargetPoint();
85 G4double radius = // See G4ViewParameters for following procedure.
86 fSceneHandler.GetScene()->GetExtent().GetExtentRadius();
87 if(radius<=0.) radius = 1.;
88 const G4double cameraDistance = fVP.GetCameraDistance(radius);
89 const G4Point3D cameraPosition =
90 targetPoint + cameraDistance * fVP.GetViewpointDirection().unit();
91 const G4double nearDistance = fVP.GetNearDistance(cameraDistance,radius);
92 const G4double frontHalfHeight = fVP.GetFrontHalfHeight(nearDistance,radius);
93 const G4double frontHalfAngle = std::atan(frontHalfHeight / nearDistance);
94
95 // Calculate and set ray tracer parameters.
96 theTracer->
97 SetViewSpan(200. * frontHalfAngle / theTracer->GetNColumn());
98 theTracer->SetTargetPosition(targetPoint);
99 theTracer->SetEyePosition(cameraPosition);
100 theTracer->SetUpVector(fVP.GetUpVector());
101 const G4Vector3D
102 actualLightpointDirection(-fVP.GetActualLightpointDirection());
103 theTracer->SetLightDirection(actualLightpointDirection);
104 theTracer->SetBackgroundColour(fVP.GetBackgroundColour());
105}
HepGeom::Point3D< G4double > G4Point3D
Definition G4Point3D.hh:34
HepGeom::Vector3D< G4double > G4Vector3D
Definition G4Vector3D.hh:34
G4VSceneHandler & fSceneHandler
Definition G4VViewer.hh:268

Referenced by DrawView().

Member Data Documentation

◆ fFileCount

G4int G4RayTracerViewer::fFileCount
protected

Definition at line 49 of file G4RayTracerViewer.hh.

Referenced by DrawView(), and G4RayTracerViewer().

◆ theTracer


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