520 lines
19 KiB
Plaintext
520 lines
19 KiB
Plaintext
$Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $
|
|
|
|
1) Decide which graphics systems drivers you want. The choice depends
|
|
on what graphics libraries you have access to. Set the appropriate
|
|
environment variables. Here are the current possibilities (see
|
|
example "rc" script in Appendix A):
|
|
|
|
setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # Uses Fukui Renderer DAWN
|
|
# with file connection
|
|
# (recommended)
|
|
setenv G4VIS_BUILD_DAWN_DRIVER 1 # Uses Fukui Renderer DAWN
|
|
# with network connection
|
|
# (for remote visualization)
|
|
|
|
setenv G4VIS_BUILD_OPACS_DRIVER 1 # Uses OPACS graphics libraries
|
|
|
|
setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # Uses OpenGL libraries
|
|
setenv G4VIS_BUILD_OPENGLXM_DRIVER 1 # Uses OpenGL and Motif
|
|
# libraries
|
|
|
|
setenv G4VIS_BUILD_OIX_DRIVER 1 # Uses OpenInventor X11
|
|
|
|
setenv G4VIS_BUILD_RAYTRACER_DRIVER 1 # Uses G4RayTracer
|
|
|
|
setenv G4VIS_BUILD_VRMLFILE_DRIVER 1 # Writes VRML ascii files
|
|
# to a local host
|
|
# (recommended)
|
|
setenv G4VIS_BUILD_VRML_DRIVER 1 # Sends VRML ascii files
|
|
# to a remote host
|
|
# (for remote visualization)
|
|
|
|
Setting any of these sets a C-pre-processor flag of the same name
|
|
and a C-pre-processor flag G4VIS_BUILD.
|
|
|
|
In some cases you will need additional variables, e.g.:
|
|
|
|
setenv DAWN_HOME /afs/cern.ch/rd44/dev/DAWN/AIX-xlC
|
|
|
|
set path=( $path $DAWN_HOME )
|
|
|
|
setenv OPACS_HOME ~/private/GEANT4/OPACS
|
|
|
|
setenv OGLHOME /usr/local
|
|
setenv OGLFLAGS "-I$(OGLHOME)/include"
|
|
setenv OGLLIBS "-L$OGLHOME/lib -lMesaGLU -lMesaGL"
|
|
|
|
If you are going to use widgets, then you might need to set the
|
|
environment variable:
|
|
|
|
setenv XKEYSYMDB /usr/lib/X11/XKeysymDB
|
|
|
|
If you decided to use the Fukui Renderer DAWN, you will also need
|
|
to set, on rsplus,
|
|
|
|
setenv TCL_LIBRARY /usr/local/lib/tcl8.0
|
|
setenv TK_LIBRARY /usr/local/lib/tk8.0
|
|
|
|
Such setting is not necessary on other machines, where only one version
|
|
of Tcl/Tk is installed.
|
|
|
|
|
|
2) Compile and build the Geant4 libraries:
|
|
|
|
cd $G4INSTALL/source
|
|
gmake
|
|
|
|
If you have already built the Geant4 libraries and only wish to
|
|
include/change visualization, you need to rebuild visualization and
|
|
interfaces (since some graphics drivers share resources, such as X
|
|
event handling, with interfaces) and rebuild the libary map (in
|
|
case new libraries have been made):
|
|
|
|
cd $G4INSTALL/source/visualization
|
|
gmake clean
|
|
gmake
|
|
cd $G4INSTALL/source/interfaces
|
|
gmake clean
|
|
gmake
|
|
cd $G4INSTALL/source
|
|
gmake libmap
|
|
|
|
*******************************************************************
|
|
NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN
|
|
YOU WILL HAVE TO REPEAT THE ABOVE OPERATIONS.
|
|
*******************************************************************
|
|
|
|
|
|
3) Decide which graphics systems you want to use in your particular
|
|
excutable. Of course, this has to be chosen from the set you
|
|
installed in (2) above. Here are the current possibilities:
|
|
|
|
setenv G4VIS_USE_DAWNFILE 1
|
|
setenv G4VIS_USE_DAWN 1
|
|
setenv G4VIS_USE_OPACS 1
|
|
setenv G4VIS_USE_OPENGLX 1
|
|
setenv G4VIS_USE_OPENGLXM 1
|
|
setenv G4VIS_USE_OIX 1
|
|
setenv G4VIS_USE_RAYTRACER 1
|
|
setenv G4VIS_USE_VRML 1
|
|
|
|
Setting any of these sets a C-pre-processor flag of the same name.
|
|
Also, setting any of these sets the G4VIS_USE C-pre-processor flag
|
|
- see examples/novices/N02/exampleN02.cc to see a use of this.
|
|
|
|
The default graphics systems are registered when you execute
|
|
G4VisManager::Initialise() (or G4VisManager::Initialize()). Note
|
|
also that you can register graphics systems directly, e.g.,
|
|
pVisManager->RegisterGraphicsSystem ( new DAWNFILE ). You can
|
|
also register your own graphics system, e.g.,
|
|
pVisManager->RegisterGraphicsSystem (new MyGraphicsSystem).
|
|
|
|
|
|
4) Compile and link your code. This assumes, in the current
|
|
directory, you have a GNUmakefile like
|
|
$G4INSTALL/examples/novice/N01/GNUmakefile and your main program.
|
|
Also your header files are in include/ and your source files are in
|
|
src/ - see, e.g., $G4INSTALL/examples/novice/N01 (this is the
|
|
"canonical" user code structure).
|
|
|
|
gmake clean
|
|
gmake
|
|
|
|
*******************************************************************
|
|
NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN
|
|
YOU WILL HAVE TO REPEAT THE ABOVE gmake clean AND gmake COMMANDS, OR
|
|
AT THE VERY LEAST, RECOMPILE YOUR MAIN PROGRAM AND YOUR DERIVED VIS
|
|
MANAGER CLASS, E.G.,
|
|
touch myprog.cc; touch src/MyVisManager.cc; gmake
|
|
*******************************************************************
|
|
|
|
|
|
5) To run:
|
|
|
|
setenv DISPLAY <local IP address>:0
|
|
$G4WORKDIR/bin/$G4SYSTEM/myprog
|
|
|
|
|
|
Appendix A: An "rc" example
|
|
---------------------------
|
|
|
|
---------------------- g4rc ------------------------------------------
|
|
## Must be installed one level above $G4INSTALL and "sourced", i.e.,
|
|
## using '. g4rc'.
|
|
|
|
if [ -e `pwd`/geant4 ]; then
|
|
|
|
export G4INSTALL=`pwd`/geant4
|
|
export G4WORKDIR=$G4INSTALL
|
|
export G4LIB=$G4INSTALL/lib
|
|
export G4SYSTEM=Linux-g++
|
|
export G4LEVELGAMMADATA=$G4INSTALL/data/PhotonEvaporation
|
|
|
|
export CLHEP_BASE_DIR=/usr/local
|
|
|
|
##export CVSROOT=:pserver:allison@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs
|
|
export CVSROOT=/afs/cern.ch/sw/geant4/cvs
|
|
export CVSEDITOR=emacs
|
|
|
|
########## DAWN (Fukui) Renderer
|
|
export G4VIS_BUILD_DAWN_DRIVER=1
|
|
export G4VIS_BUILD_DAWNFILE_DRIVER=1
|
|
export G4VIS_USE_DAWN=1
|
|
export G4VIS_USE_DAWNFILE=1
|
|
export DAWN_BSD_UNIX_DOMAIN=1
|
|
export DAWN_GUI_ALWAYS=1
|
|
export DAWN_HOME=/home/johna/GEANT4/DAWN
|
|
export G4DAWNFILE_VIEWER=NONE
|
|
#export PATH=$PATH:$DAWN_HOME ###### Moved to .g4profile ??????????????
|
|
|
|
############ Ray Tracer
|
|
export G4VIS_BUILD_RAYTRACER_DRIVER=1
|
|
export G4VIS_USE_RAYTRACER=1
|
|
|
|
########## OPACS graphics
|
|
export G4VIS_BUILD_OPACS_DRIVER=1
|
|
export G4VIS_USE_OPACS=1
|
|
export OPACS_HOME=/disc2/OPACS
|
|
export OPACS_VERSION=v3
|
|
export OPACS_SYSTEM=Linux-gxx
|
|
export OCONFIG=Linux
|
|
. /disc2/OPACS/OPACS/$OPACS_VERSION/setup.sh
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disc2/HEPVis/new/Linux-gxx-SF/
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disc2/SoFree/new/Linux-gxx
|
|
OPATH="$OPATH $G4INSTALL/source/visualization/test/OPACS"
|
|
|
|
########### OpenGL
|
|
export G4VIS_BUILD_OPENGLX_DRIVER=1
|
|
export G4VIS_USE_OPENGLX=1
|
|
export G4VIS_BUILD_OPENGLXM_DRIVER=1
|
|
export G4VIS_USE_OPENGLXM=1
|
|
export XKEYSYMDB=/usr/lib/X11/XKeysymDB
|
|
export OGLHOME=/usr/X11
|
|
|
|
########### OpenInventor
|
|
export G4VIS_BUILD_OIX_DRIVER=1
|
|
export G4VIS_USE_OIX=1
|
|
export OIVFLAGS="-I/disc2/HEPVis/new/include -DINVENTOR2_1 -I/disc2/SoFree/new/include"
|
|
export OIVLIBS="-L/disc2/HEPVis/new/Linux-gxx-SF -lHEPVis -L/disc2/SoFree/new/Linux-gxx -lSoFree"
|
|
export SOFREEUSER=/disc2/SoFree/new/user/
|
|
|
|
############ VRML
|
|
export G4VIS_BUILD_VRML_DRIVER=1
|
|
export G4VIS_USE_VRML=1
|
|
export G4VIS_BUILD_VRMLFILE_DRIVER=1
|
|
export G4VIS_USE_VRMLFILE=1
|
|
|
|
########### Interfaces
|
|
export G4UI_BUILD_TERMINAL_SESSION=1
|
|
export G4UI_USE_TERMINAL=1
|
|
export G4UI_BUILD_GAG_SESSION=1
|
|
export G4UI_USE_GAG=1
|
|
export G4UI_BUILD_XM_SESSION=1
|
|
export G4UI_USE_XM=1
|
|
export G4UI_BUILD_WO_SESSION=1
|
|
export G4UI_USE_WO=1
|
|
#export G4UI_BUILD_XAW_SESSION=1
|
|
#export G4UI_USE_XAW=1
|
|
|
|
############ Persistency
|
|
# export G4USE_HEPODBMS=1
|
|
# . $G4INSTALL/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh
|
|
# export OS=`uname`
|
|
# oocheckls -notitle `hostname` || \
|
|
# oolockserver -notitle -noauto
|
|
|
|
else
|
|
echo No geant4 here.
|
|
fi
|
|
|
|
|
|
Appendix B: Sample session
|
|
--------------------------
|
|
|
|
The Visualization Manager has been constructed with verbosity == 1.
|
|
|
|
$ test19 dumb 1
|
|
RunManager is constructing....
|
|
Constructing Visualization Manager....
|
|
Initialising Visualization Manager....
|
|
|
|
The following graphics systems drivers are supported in the GEANT4 distribution:
|
|
|
|
DAWN (socket connection to the Fukui Renderer DAWN) High quality technical renderer.
|
|
Features: exact hidden line, hidden surface algorithms.
|
|
high (unlimited) resolution.
|
|
renders to PostScript for viewing and/or hardcopy.
|
|
remote rendering.
|
|
off-line rendering.
|
|
graphical user interface.
|
|
Disadvantages: compute intensive, takes time (use a fast graphics
|
|
system, such as OpenGL, to select view, then copy
|
|
to this renderer - /vis~/copy/view, /vis~/set/view).
|
|
|
|
DAWNFILE (file connection to the Fukui Renderer DAWN ) High quality technical renderer.
|
|
Features: exact hidden line, hidden surface algorithms.
|
|
high (unlimited) resolution.
|
|
renders to PostScript for viewing and/or hardcopy.
|
|
remote rendering.
|
|
off-line rendering.
|
|
graphical user interface.
|
|
connection via g4.prim file to Fukui Renderer DAWN etc.
|
|
Disadvantages: compute intensive, takes time (use a fast graphics
|
|
system, such as OpenGL, to select view, then copy
|
|
to this renderer - /vis~/copy/view, /vis~/set/view).
|
|
|
|
OPACS (the Orsay Package)
|
|
|
|
OpenGLIX (direct/immediate drawing on X Windows)
|
|
Dumb single buffered X Window, No Graphics Database.
|
|
Advantages: does not gobble server memory.
|
|
good for drawing steps and hits.
|
|
Disadvantages: needs G4 kernel for re-Draw.
|
|
cannot take advantage of graphics accelerators.
|
|
|
|
OpenGLSX (display List/stored drawing on X Windows)
|
|
Dumb double buffered X Window with Graphics Database.
|
|
Advantages: uses display lists as graphics database.
|
|
fastest possible redraw, e.g., on simple change
|
|
of viewpoint.
|
|
uses client-server model for remote viewing
|
|
(but only if you have a full client-server
|
|
implementation of OpenGL, i.e., not Mesa).
|
|
Disadvantages: not advised for viewing large numbers of steps
|
|
and/or hits, because it gobbles memory for database.
|
|
|
|
OpenGLIXm (with Motif widgets)
|
|
Smart single buffered X Window, No Graphics Database.
|
|
Advantages: resizeable, and has Motif-based view-control panel.
|
|
does not gobble server memory.
|
|
good for drawing steps and hits.
|
|
Disadvantages: currently locks out GEANT4 commands, until "exit".
|
|
needs G4 kernel for re-Draw.
|
|
cannot take advantage of graphics accelerators.
|
|
|
|
OpenGLSXm (with Motif widgets)
|
|
Smart double buffered X Window with Graphics Database.
|
|
Advantages: resizeable, and has Motif-based view-control panel.
|
|
uses display lists as graphics database.
|
|
fastest possible redraw, e.g., on simple change
|
|
of viewpoint.
|
|
uses client-server model for remote viewing
|
|
(but only if you have a full client-server
|
|
implementation of OpenGL, i.e., not Mesa).
|
|
Disadvantages: currently locks out GEANT4 commands, until "exit".
|
|
not advised for viewing large numbers of steps
|
|
and/or hits, because it gobbles memory for database.
|
|
|
|
Open Inventor Open Inventor Window/View/Scene.
|
|
Advantages: Open Inventor feature set (interactivity, scene control).
|
|
Disadvantages: Requires Open Inventor license ($$), Hepvis library (Free).
|
|
|
|
VRML1 (produces VRML 1 file over network)
|
|
VRML1FILE (produces VRML 1 file locally )
|
|
|
|
VRML2 (produces VRML 2 file over network)
|
|
|
|
VRML2FILE (produces VRML 2 file locally )
|
|
|
|
The following graphics systems drivers are installed on your system:
|
|
DAWN (socket connection to the Fukui Renderer DAWN)
|
|
DAWNFILE (file connection to the Fukui Renderer DAWN)
|
|
OPACS (the Orsay Package)
|
|
OpenGLIX (direct/immediate drawing on X Windows)
|
|
OpenGLSX (display List/stored drawing on X Windows)
|
|
OpenGLIXm (with Motif widgets)
|
|
OpenGLSXm (with Motif widgets)
|
|
VRML1 (produces VRML 1 file over network)
|
|
VRML2 (produces VRML 2 file over network), in preparation
|
|
VRML1File (produces VRML 1 file locally)
|
|
VRML2File (produces VRML 2 file locally), in preparation
|
|
|
|
You have instantiated your own Visualization Manager, inheriting
|
|
G4VisManager and implementing RegisterGraphicsSystems. An example
|
|
class MyVisManager is provided which is controlled by the
|
|
following environment variables:
|
|
G4VIS_USE_DAWN
|
|
G4VIS_USE_DAWNFILE
|
|
G4VIS_USE_OPACS
|
|
G4VIS_USE_OPENGLX
|
|
G4VIS_USE_OPENGLXM
|
|
G4VIS_USE_VRML
|
|
G4VIS_USE_VRMLFILE
|
|
Thus, in your main() you have something like:
|
|
G4VisManager* visManager = new MyVisManager;
|
|
visManager -> Initialize ();
|
|
(Don't forget to delete visManager;)
|
|
Registering graphics systems....
|
|
G4VisManager::RegisterGraphicsSystem: FukuiRenderer (DAWN) registered.
|
|
G4VisManager::RegisterGraphicsSystem: DAWNFILE (DAWNFILE) registered.
|
|
G4VisManager::RegisterGraphicsSystem: Wo registered.
|
|
G4VisManager::RegisterGraphicsSystem: Xo registered.
|
|
G4VisManager::RegisterGraphicsSystem: OpenGLImmediateX (OGLIX) registered.
|
|
G4VisManager::RegisterGraphicsSystem: OpenGLStoredX (OGLSX) registered.
|
|
G4VisManager::RegisterGraphicsSystem: OpenGLImmediateXm (OGLIXm) registered.
|
|
G4VisManager::RegisterGraphicsSystem: OpenGLStoredXm (OGLSXm) registered.
|
|
G4VisManager::RegisterGraphicsSystem: VRML1 (VRML1) registered.
|
|
G4VisManager::RegisterGraphicsSystem: VRML2 (VRML2) registered.
|
|
G4VisManager::RegisterGraphicsSystem: VRML1FILE (VRML1FILE) registered.
|
|
G4VisManager::RegisterGraphicsSystem: VRML2FILE (VRML2FILE) registered.
|
|
|
|
You have successfully chosen to use the following graphics systems.
|
|
Current available graphics systems are:
|
|
FukuiRenderer (DAWN)
|
|
DAWNFILE (DAWNFILE)
|
|
Wo
|
|
Xo
|
|
OpenGLImmediateX (OGLIX)
|
|
OpenGLStoredX (OGLSX)
|
|
OpenGLImmediateXm (OGLIXm)
|
|
OpenGLStoredXm (OGLSXm)
|
|
VRML1 (VRML1)
|
|
VRML2 (VRML2)
|
|
VRML1FILE (VRML1FILE)
|
|
VRML2FILE (VRML2FILE)
|
|
Reading test19.g4m file....
|
|
# This is test19.g4m
|
|
#
|
|
# Switch on echoing of commands and history mechanism.
|
|
#
|
|
/control/saveHistory
|
|
#
|
|
# John's personal preferences
|
|
/vis/lights/move_with_camera true
|
|
/vis~/lights/move_with_camera true
|
|
Issue Draw or refresh to see effect.
|
|
Current value of lights move flag is 1
|
|
/vis/set/marker_choices 1
|
|
/vis~/set/marker_choices 1
|
|
Marker choice is now: hidden by surfaces.
|
|
Issue Draw or refresh to see effect.
|
|
#
|
|
# See list of detector possibilities.
|
|
/test19det/detector
|
|
Available detectors:
|
|
0) Part of original test calorimeter
|
|
1) Example1 (LBNO, no rotation)
|
|
2) Example2 (embryo LBNO, rotated volumes)
|
|
3) A parametrised volume
|
|
4) MyDetector
|
|
Choose by specifying integer parameter.
|
|
# Select detector.
|
|
#/test19det/detector 1
|
|
#/test19det/detector 4
|
|
#
|
|
# Initialise run, i.e., create geometry, set cuts, etc.
|
|
/run/initialize
|
|
Detector not established - constructing default detector.
|
|
/test19det/detector 4
|
|
MyPhysicsList::SetCuts:
|
|
...
|
|
#
|
|
# Set gun for demo (detector 1)
|
|
#/gun/particle e+
|
|
#/gun/position 0 -100 0 cm
|
|
#/gun/direction 0 1 0
|
|
#
|
|
# Create empty scene.
|
|
/vis/scene/create
|
|
/vis/camera/reset
|
|
/vis~/camera/reset
|
|
New empty scene "scene-0" created.
|
|
#
|
|
# Add volume to scene - "world" is default.
|
|
/vis/scene/add/volume
|
|
/vis/camera/reset
|
|
/vis~/camera/reset
|
|
First occurrence of "expHall_P", copy no. 0, found at depth 0,
|
|
with further requested depth of descent -1, has been added to scene "scene-0"
|
|
#
|
|
# See list of graphics systems possibilities.
|
|
help /vis/sceneHandler/create
|
|
#
|
|
# Create a scene handler for a specific graphics system.
|
|
# Edit the next line(s) to choose another graphic system
|
|
/vis/sceneHandler/create DAWNFILE
|
|
G4VisManager::SetCurrentGraphicsSystem: system now DAWNFILE
|
|
Graphics system set to DAWNFILE
|
|
1 DAWNFILE scenes extanct.
|
|
New scene handler "scene-handler-0" created.
|
|
/vis/sceneHandler/attach
|
|
Scene "scene-0" attached to scene handler "scene-handler-0.
|
|
#/vis/sceneHandler/create DAWN
|
|
#/vis/sceneHandler/create OGLIX
|
|
#/vis/sceneHandler/create OGLSX
|
|
#/vis/sceneHandler/create VRML1
|
|
#/vis/sceneHandler/create VRML1FILE
|
|
#/vis/sceneHandler/create Xo
|
|
#/vis/sceneHandler/create Wo
|
|
#
|
|
# Create a viewer.
|
|
/vis/viewer/create
|
|
G4VisManager::CreateViewer: new viewer created: view parameters are:
|
|
View parameters and options:
|
|
Drawing style: wireframe
|
|
Representation style: polyhedron
|
|
Culling: on
|
|
Culling invisible objects: on
|
|
Density culling: off
|
|
Culling daughters covered by opaque mothers: off
|
|
Section flag: false
|
|
Cutaway flag: false
|
|
Explode flag: false
|
|
No. of sides used in circle polygon approximation: 24
|
|
Viewpoint direction: (0,0,1)
|
|
Up vector: (0,1,0)
|
|
Field half angle: 0
|
|
Zoom factor: 1
|
|
Current target point: (0,0,0)
|
|
Dolly distance: 0
|
|
Light moves with camera
|
|
Relative lightpoint direction: (1,1,1)
|
|
Actual lightpoint direction: (1,1,1)
|
|
Derived parameters for standard view of object of unit radius:
|
|
Camera distance: 1
|
|
Near distance: 1e-06
|
|
Far distance: 2
|
|
Front half height: 1
|
|
View geometry: true
|
|
View hits : true
|
|
View digits : true
|
|
Default VisAttributes:
|
|
G4VisAttributes: visible, daughters visible, colour: (1,1,1,1)
|
|
linestyle: solid, line width: 1
|
|
drawing style unforced
|
|
Default TextVisAttributes:
|
|
G4VisAttributes: visible, daughters visible, colour: (0,0,1,1)
|
|
linestyle: solid, line width: 1
|
|
drawing style unforced
|
|
Default marker: G4VMarker: position: (0,0,0), world size: 0, screen size: 5
|
|
fill style: no fill
|
|
No Visualization Attributes
|
|
Global marker scale: 1
|
|
Marker hidden by surfaces.
|
|
Window size hint: 600x600
|
|
NOTE: objects with visibility flag set to "false" will not be drawn!
|
|
"/vis~/set/culling off" to Draw such objects.
|
|
Also see other "/vis~/set" commands.
|
|
New viewer "viewer-0 (DAWNFILE)" created.
|
|
#
|
|
# Draw current scene
|
|
/vis/scene/notifyHandlers
|
|
===========================================
|
|
Output file: g4.prim
|
|
Muximal number of file in the destination directory: 1
|
|
(Customizable as: setenv G4DAWNFILE_MAX_FILE_NUM number)
|
|
===========================================
|
|
Traversing scene data...
|
|
File g4.prim is generated.
|
|
No viewer is invoked.
|
|
Viewer "viewer-0 (DAWNFILE)" of scene handler "scene-handler-0"
|
|
refreshed at request of scene "scene-0".
|
|
#
|
|
# for drawing the tracks
|
|
# if too many tracks cause core dump => storeTrajectory 0
|
|
/tracking/storeTrajectory 1
|
|
/vis/scene/include/trajectories
|
|
Trajectories will be drawn in scene "scene-0".
|
|
Choose a detector with /test19det/detector (or let default be constructed).
|
|
Idle>
|