Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
visualization
RayTracer
include
G4TheRayTracer.hh
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// $Id$
28
//
29
//
30
31
32
#ifndef G4TheRayTracer_H
33
#define G4TheRayTracer_H 1
34
35
// class description:
36
//
37
// G4TheRayTracer
38
// This is a graphics driver of Geant4 which generates a figure file by
39
// ray tracing technique. The format of output figure file can be selected
40
// by assigning a pointer of G4VFigureFileMaker concrete class object.
41
// The main entry of ray tracing is Trace() method, which is available
42
// only at Idle state. G4TheRayTracer shoots rays and controls its own event
43
// loop. It generates G4Event objects used for its own purpose. When ray
44
// tracing is working, all sensitive detectors are inactivated and all
45
// user action classes are swapped out. Still, verbosities set to Geant4
46
// manager classes are concerned. Thus, it is recommended to set verbosities
47
// to minimum (usually zero).
48
// G4TheRayTracer can visualise absolutely all kinds of geometrical shapes
49
// which G4Navigator can deal with. Instead, it can NOT visualise hits
50
// nor trajectories generated by usual simulation.
51
52
#include "
globals.hh
"
53
#include "
G4ThreeVector.hh
"
54
#include "
G4Colour.hh
"
55
56
class
G4Event
;
57
class
G4EventManager
;
58
class
G4UserEventAction
;
59
class
G4UserStackingAction
;
60
class
G4UserTrackingAction
;
61
class
G4UserSteppingAction
;
62
class
G4RTTrackingAction
;
63
class
G4RTSteppingAction
;
64
class
G4RTMessenger
;
65
class
G4RayShooter
;
66
class
G4VFigureFileMaker
;
67
class
G4RayTrajectoryPoint
;
68
class
G4VisAttributes
;
69
class
G4VRTScanner
;
70
71
72
class
G4TheRayTracer
73
{
74
public
:
// with description
75
G4TheRayTracer
(
G4VFigureFileMaker
* figMaker = 0,
76
G4VRTScanner
* scanner = 0);
77
// Constructor. The argument is the pointer to G4VFigureFileMaker
78
// concrete class object. If it is not set and
79
// SetFigureFileMaker() method is not invoked before Trace()
80
// command is invoked, then G4RTJpegMaker will be used and JPEG
81
// file will be generated. The second argument is a scanner that
82
// produces a sequence of window coordinates. If it is not set
83
// here or if SetScanner is not invoked before Trace(), a default
84
// G4RTSimpleScanner will be used.
85
86
public
:
87
~G4TheRayTracer
();
88
89
public
:
// with description
90
void
Trace
(
G4String
fileName);
91
// The main entry point which triggers ray tracing. "fileName" is output
92
// file name, and it must contain extention (e.g. myFigure.jpg). This
93
// method is available only if Geant4 is at Idle state.
94
95
protected
:
96
G4bool
CreateBitMap
();
97
// Event loop
98
void
CreateFigureFile
(
G4String
fileName);
99
// Create figure file after an event loop
100
G4bool
GenerateColour
(
G4Event
* anEvent);
101
// Calcurate RGB for one trajectory
102
void
StoreUserActions
();
103
void
RestoreUserActions
();
104
// Store and restore user action classes if defined
105
106
G4Colour
GetSurfaceColour
(
G4RayTrajectoryPoint
* point);
107
G4Colour
GetMixedColour
(
G4Colour
surfCol,
G4Colour
transCol,
G4double
weight
=0.5);
108
G4Colour
Attenuate
(
G4RayTrajectoryPoint
* point,
G4Colour
sourceCol);
109
G4bool
ValidColour
(
const
G4VisAttributes
* visAtt);
110
111
public
:
// with description
112
inline
void
SetFigureFileMaker
(
G4VFigureFileMaker
* figMaker)
113
// Set a concrete class of G4VFigureFileMaker for assigning the format of
114
// output figure file.
115
{
theFigMaker
= figMaker; }
116
inline
G4VFigureFileMaker
*
GetFigureFileMaker
() {
return
theFigMaker
;}
117
inline
void
SetScanner
(
G4VRTScanner
* scanner)
118
// Set a concrete class of G4VRTScanner for producing a sequence
119
// of window coordinates.
120
{
theScanner
= scanner; }
121
inline
G4VRTScanner
*
GetScanner
() {
return
theScanner
;}
122
123
protected
:
124
G4RayShooter
*
theRayShooter
;
125
G4VFigureFileMaker
*
theFigMaker
;
126
G4RTMessenger
*
theMessenger
;
127
G4VRTScanner
*
theScanner
;
128
129
G4EventManager
*
theEventManager
;
130
131
G4UserEventAction
*
theUserEventAction
;
132
G4UserStackingAction
*
theUserStackingAction
;
133
G4UserTrackingAction
*
theUserTrackingAction
;
134
G4UserSteppingAction
*
theUserSteppingAction
;
135
136
G4UserEventAction
*
theRayTracerEventAction
;
137
G4UserStackingAction
*
theRayTracerStackingAction
;
138
G4RTTrackingAction
*
theRayTracerTrackingAction
;
139
G4RTSteppingAction
*
theRayTracerSteppingAction
;
140
141
unsigned
char
*
colorR
;
142
unsigned
char
*
colorG
;
143
unsigned
char
*
colorB
;
144
145
G4int
nColumn
;
146
G4int
nRow
;
147
148
G4ThreeVector
eyePosition
;
149
G4ThreeVector
targetPosition
;
150
G4ThreeVector
eyeDirection
;
151
G4ThreeVector
lightDirection
;
152
G4ThreeVector
up
;
153
G4double
headAngle
;
154
G4double
viewSpan
;
// Angle per 100 pixels
155
G4double
attenuationLength
;
156
157
G4bool
distortionOn
;
158
G4bool
antialiasingOn
;
159
160
G4Colour
rayColour
;
161
G4Colour
backgroundColour
;
162
163
public
:
164
inline
void
SetNColumn
(
G4int
val) {
nColumn
= val; }
165
inline
G4int
GetNColumn
()
const
{
return
nColumn
; }
166
inline
void
SetNRow
(
G4int
val) {
nRow
= val; }
167
inline
G4int
GetNRow
()
const
{
return
nRow
; }
168
inline
void
SetEyePosition
(
const
G4ThreeVector
& val) {
eyePosition
= val; }
169
inline
G4ThreeVector
GetEyePosition
()
const
{
return
eyePosition
; }
170
inline
void
SetTargetPosition
(
const
G4ThreeVector
& val) {
targetPosition
= val; }
171
inline
G4ThreeVector
GetTargetPosition
()
const
{
return
targetPosition
; }
172
inline
void
SetLightDirection
(
const
G4ThreeVector
& val) {
lightDirection
= val.
unit
(); }
173
inline
G4ThreeVector
GetLightDirection
()
const
{
return
lightDirection
; }
174
inline
void
SetUpVector
(
const
G4ThreeVector
& val) {
up
= val; }
175
inline
G4ThreeVector
GetUpVector
()
const
{
return
up
; }
176
inline
void
SetHeadAngle
(
G4double
val) {
headAngle
= val; }
177
inline
G4double
GetHeadAngle
()
const
{
return
headAngle
; }
178
inline
void
SetViewSpan
(
G4double
val) {
viewSpan
= val; }
179
inline
G4double
GetViewSpan
()
const
{
return
viewSpan
; }
180
inline
void
SetAttenuationLength
(
G4double
val) {
attenuationLength
= val; }
181
inline
G4double
GetAttenuationLength
()
const
{
return
attenuationLength
; }
182
inline
void
SetDistortion
(
G4bool
val) {
distortionOn
= val; }
183
inline
G4bool
GetDistortion
()
const
{
return
distortionOn
; }
184
inline
void
SetBackgroundColour
(
G4Colour
val) {
backgroundColour
= val; }
185
inline
G4Colour
GetBackgroundColour
()
const
{
return
backgroundColour
; }
186
};
187
188
#endif
Generated on Sat May 25 2013 14:34:18 for Geant4 by
1.8.4