507 lines
18 KiB
Plaintext
507 lines
18 KiB
Plaintext
$Id: README,v 1.6 1999/08/27 07:57:12 johna Exp $
|
|
|
|
Below are some steps for making GEANT4 with visualization run on
|
|
rsplus.cern.ch.
|
|
|
|
On other machines, in other locations, you will have to check the
|
|
availability and location of graphics libraries. Also, you will need
|
|
RogueWave tools.h++ - headers usually in /usr/local/include/rw/,
|
|
library in /usr/local/lib. Instead of RogueWave tools.h++,
|
|
you can also use STL. See global/GNUmakefile.architecture for clues
|
|
to what is required.
|
|
|
|
We will assume that you have a checked-out or updated version of
|
|
geant4 with the visualization/ directory and sub-directories. For
|
|
that you will needed to have done the following.
|
|
|
|
1) Set the following environment variables:
|
|
|
|
setenv CVSROOT /afs/cern.ch/sw/geant4/cvs
|
|
setenv G4SYSTEM AIX-xlC
|
|
setenv G4INSTALL <your-geant4-wd>/geant4
|
|
setenv G4WORKDIR <your-scratch>/geant4_workdir
|
|
setenv G4LIB $G4WORKDIR
|
|
|
|
Now, here are the visualization-specific actions.
|
|
|
|
2) 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:
|
|
|
|
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_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 /afs/cern.ch/rd44/dev/Mesa/Mesa-1.2.8
|
|
|
|
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.
|
|
|
|
3) Compile and build the visualization and interfaces libraries from clean.
|
|
|
|
*******************************************************************
|
|
NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN
|
|
YOU WILL HAVE TO:
|
|
a) "gmake clean" IN THE APPROPRIATE SUBDIRECTORY - E.G.,
|
|
(cd visualization/OpenGL/; gmake clean; gmake)
|
|
b) TOUCH AND RECOMPILE G4VisManager - E.G.
|
|
(cd visualization/; touch management/src/G4VisManager.cc; gmake)
|
|
*******************************************************************
|
|
|
|
|
|
4) 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_VRMLFILE 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).
|
|
|
|
|
|
5) Compile and link your code.
|
|
|
|
*******************************************************************
|
|
NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN
|
|
YOU WILL HAVE TO RECOMPILE YOUR DERIVED VIS MANAGER CLASS, E.G.,
|
|
touch src/MyVisManager.cc; gmake
|
|
*******************************************************************
|
|
|
|
|
|
6) To compile and link your program, e.g.:
|
|
|
|
cd examples/novice/N03
|
|
gmake
|
|
|
|
7) To run:
|
|
|
|
setenv DISPLAY <local IP address>:0
|
|
$G4WORKDIR/bin/$G4SYSTEM/exampleN03
|
|
|
|
On other machines.
|
|
------------------
|
|
|
|
OpenGL: If you are using Mesa, you might need:
|
|
ln -s libMesaGL.a libGL.a
|
|
ln -s libMesaGLU.a libGLU.a
|
|
|
|
As an example of a setup file on another machine
|
|
------------------------------------------------
|
|
|
|
export G4SYSTEM=Linux-g++
|
|
export G4INSTALL=~/GEANT4/geant4_my_development/geant4
|
|
export G4WORKDIR=/scratch/geant4_workdir
|
|
export G4LIB=$G4INSTALL/lib
|
|
export G4LEVELGAMMADATA=$G4INSTALL/data/PhotonEvaporation
|
|
|
|
export CLHEP_BASE_DIR=/usr/local
|
|
export RWBASE=/usr/local
|
|
|
|
export G4DEBUG=1
|
|
|
|
#export TCL_LIBRARY=/usr/lib/tcl7.5 # DAWN works OK without...
|
|
#export TK_LIBRARY=/usr/lib/tk4.1 # ...these two lines!
|
|
|
|
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
|
|
|
|
########## OPACS graphics
|
|
export G4VIS_BUILD_OPACS_DRIVER=1
|
|
export G4VIS_USE_OPACS=1
|
|
export OPACS_HOME=/export/data26//OPACS
|
|
export OPACS_VERSION=v3
|
|
export OPACS_SYSTEM=Linux-gxx
|
|
export OCONFIG=Linux
|
|
. /export/data26/OPACS/OPACS/v3/setup.sh
|
|
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 (with SoFree implementation on Linux)
|
|
export G4VIS_BUILD_OIX_DRIVER=1
|
|
export G4VIS_USE_OIX=1
|
|
export OIVFLAGS="-I/export/data26/HEPVis/v5r0/include -DINVENTOR2_1 -I/export/data26/SoFree/v2r2/include"
|
|
export OIVLIBS="-L/export/data26/HEPVis/v5r0/Linux-gxx-SF -lHEPVis -L/export/data26/SoFree/v2r2/Linux-gxx -lSoFree"
|
|
export SOFREEUSER=/export/data26/SoFree/v2r2/user/
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/export/data26/HEPVis/v5r0/Linux-gxx-SF
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/export/data26/SoFree/v2r2/Linux-gxx
|
|
|
|
############ 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
|
|
|
|
--------------------------------------------------------------------
|
|
Here is a sample session (with the Visualization Manager 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>
|