390 lines
14 KiB
Plaintext
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).
|