Files
geant4/source/visualization/README
T
2016-06-01 15:25:35 +02:00

390 lines
14 KiB
Plaintext

$Id: README,v 2.4 1998/07/19 05:53:49 allison 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. 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/rd44/cvs
setenv G4SYSTEM AIX-AFS
setenv G4INSTALL ~/GEANT4/geant4beta
setenv G4WORKDIR /scratch/geant4beta_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_DAWN_DRIVER 1 # DAWN is the Fukui Renderer
setenv G4VIS_BUILD_DAWNFILE_DRIVER 1
setenv G4VIS_BUILD_OPACS_DRIVER 1 # Uses OPACS graphics libraries
setenv G4VIS_BUILD_OPENGLX_DRIVER 1
setenv G4VIS_BUILD_OPENGLXM_DRIVER 1
setenv G4VIS_BUILD_OPENINVENTOR_DRIVER 1
setenv G4VIS_BUILD_RAYX_DRIVER 1 # GEANT4 Ray Tracing
setenv G4VIS_BUILD_VRML_DRIVER 1 # Spawns VRML viewer
setenv G4VIS_BUILD_VRMLFILE_DRIVER 1 # Writes VRML ascii file
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-AFS
# setenv G4DAWN_NAMED_PIPE 1
# Comment out this line at cernsp. (See DAWN/README)
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 mught 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 (it is not always necessary on other machines):
setenv TCL_LIBRARY /usr/local/lib/tcl7.4
setenv TK_LIBRARY /usr/local/lib/tk4.0
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; make global)
*******************************************************************
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_DAWN 1
setenv G4VIS_USE_DAWNFILE 1
setenv G4VIS_USE_OPACS 1
setenv G4VIS_USE_OPENGLX 1
setenv G4VIS_USE_OPENGLXM 1
setenv G4VIS_USE_OPENINVENTOR 1
setenv G4VIS_USE_RAYX 1
setenv G4VIS_USE_VRML 1
setenv G4VIS_USE_VRMLFILE 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 FukuiRenderer). 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) Optional environment variables specific to the test/GNUmakefile:
(a) If you want the visualization components, i.e., visualization/
and graphics_reps/, compiled in debug mode:
setenv G4VISDEBUG 1
(b) If you want the non-visualization components compiled in debug mode:
setenv G4DEBUG 1
7) To compile and link the current test program (currently test19):
cd source/visualization/test
gmake anew
To save time (it checks only graphics_reps and visualization):
gmake quick
10) To run:
setenv DISPLAY <local IP address>:0
$G4WORKDIR/bin/$G4SYSTEM/test19
(On my machine, echo $G4WORKDIR/bin/$G4SYSTEM/test19 gives
/scratch/geant4beta_workdir/bin/G++-Linux/test19. You can always
make a symbolic link or an alias if the above is too long to type.
Or even better, add $G4WORKDIR/bin/$G4SYSTEM to your PATH.)
Note: because the test program uses the command macro facility, you
have to run it in the directory visualization/test which contains
the macros test19.g4m. Edit these files to change startup
behaviour.
test19 takes optional arguments:
$G4WORKDIR/bin/$G4SYSTEM/test19 <session-type> <verbosity-integer>
where defaults are GAG and 0 respectively.
On other machines.
------------------
OpenGL: You might find libGLX.a and/or libGLU.a are missing. Ask your system
administrator to make a link:
ln -s libGL.a libGLX.a
ln -s libGL.a libGLU.a
Also, if you are using Mesa, you might need:
ln -s libMesaGL.a libGL.a
etc.
As an example of environment variables on another machine
---------------------------------------------------------
export G4SYSTEM=G++-Linux
export G4INSTALL=~/GEANT4/geant4beta
#########export G4WORKDIR=/scratch/geant4beta_workdir
export G4WORKDIR=$G4INSTALL
export PATH=$G4WORKDIR/bin/$G4SYSTEM:$PATH
export CLHEP_BASE_DIR=/usr/local
export RWBASE=/usr/local
export G4VIS_DEBUG=1
export G4DEBUG=1
export MOMOPATH=~/GEANT4/geant4beta/environments/Momo/tcltk
export CVSROOT=:pserver:allison@g4cvs.cern.ch:/afs/cern.ch/rd44/cvs
export CVSEDITOR=emacs
########## DAWN (Fukui) Renderer
export G4VIS_BUILD_DAWN_DRIVER=1
export G4VIS_USE_DAWN=1
export DAWN_BSD_UNIX_DOMAIN=1
export DAWN_GUI_ALWAYS=1
export DAWN_HOME=/home/johna/GEANT4/DAWN
#export PATH=$PATH:$DAWN_HOME ###### Moved to .g4profile
########## OPACS graphics
#export G4VIS_BUILD_OPACS_DRIVER=1
#export G4VIS_USE_OPACS=1
#export OPACS_HOME=/home/johna/GEANT4/OPACS
#export OPACS_VERSION=v3
#export OPACS_SYSTEM=Linux-gxx
#export OCONFIG=Linux-gxx
#. ~/GEANT4/OPACS/OPACS/v3/setup.sh
########### OpenGL
export G4VIS_BUILD_OPENGLX_DRIVER=1
export G4VIS_USE_OPENGLX=1
export G4VIS_BUILD_OPENGLXM_DRIVER=1
export G4VIS_USE_OPENGLXM=1
export XM_INSTALLED=1
export XKEYSYMDB=/usr/lib/X11/XKeysymDB
export OGLHOME=/usr/X11
########### OpenInventor
#export G4VIS_BUILD_OIX_DRIVER=1
#export G4VIS_USE_OIX=1
#export OIHOME=/home/johna
#export HEPVISINC=/home/johna/include/Hepvis
############ RayX
export G4VIS_BUILD_RAYX_DRIVER=1
export G4VIS_USE_RAYX=1
############ 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
Here is a sample session.
-------------------------
$ test19
RunManager construction starting....
Constructing Visualization Manager.
Initialising Visualization Manager.
The following graphics systems drivers are supported in the GEANT4 distribution:
DAWN (the Fukui Renderer: socket connection) 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).
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
G4RayX (ray tracing on X Windows)
GEANT4 Ray Tracing to a dumb single buffered X Window.
Advantages: uses GEANT4's own tracking algorithms.
photo-realistic.
Disadvantages: slow.
VRML1 (produces VRML1 file)
The following graphics systems drivers are installed on your system:
DAWN (the Fukui Renderer: socket connection)
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)
G4RayX (ray tracing on X Windows)
VRML1 (produces VRML1 file)
You can accept the default, which is to register all of the above,
or instantiate 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_OPACS
G4VIS_USE_OPENGLX
G4VIS_USE_OPENGLXM
G4VIS_USE_RAYX
G4VIS_USE_VRML
G4VIS_USE_VRMLFILE
Thus, in your main() you should have:
G4VisManager* visManager = new G4VisManager;
or:
G4VisManager* visManager = new MyVisManager;
then in either case:
visManager -> initialize (); // or visManager -> Initialise ();
(Don't forget to delete visManager;)
Registering graphics systems.
G4VisManager::RegisterGraphicsSystem: FukuiRenderer (DAWN) 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: G4RayX (RayX) registered.
G4VisManager::RegisterGraphicsSystem: VRML1.0 (VRML1) registered.
G4VisManager::RegisterGraphicsSystem: VRML1.0File (VRML1File) registered.
You have successfully chosen to use the following graphics systems.
Current available graphics systems are:
FukuiRenderer (DAWN)
Wo
Xo
OpenGLImmediateX (OGLIX)
OpenGLStoredX (OGLSX)
OpenGLImmediateXm (OGLIXm)
OpenGLStoredXm (OGLSXm)
G4RayX (RayX)
VRML1.0 (VRML1)
VRML1.0File (VRML1File)
PreInit> vis/create_view/new_graphics_system OGLIX
1 OpenGLImmediateX scenes extanct.
OpenGLImmediateX.0.0 (i.e., scene 0, view 0) instantiated.
Got standard cmap
Window name: OpenGLStoredX.0.0
G4VisManager::CreateView: new view created:
NOTE: objects with visibility flag set to "false" will not be drawn!
"/vis~/set/culling off" to draw such objects.
ALSO: covered objects in solid mode will not be part of the scene!
"/vis~/set/cull_covered_daughters off" to reverse this.
Also see other "/vis~/set" commands.
#/vis~/create_view/new_graphics_system VRML1
#/vis~/create_view/new_graphics_system VRML1File
#/vis~/create_view/new_graphics_system Xo
#/vis~/create_view/new_graphics_system Wo
#
# Draw current scene
G4VisManager: scene has been set to "world".
Traverse geometry tree and draw expHall_P
Choose a detector with /test19det/detector (or let default be constructed).