Converting Geometries from Geant3.21
Approach
G3toG4 is the Geant4 facility to convert
GEANT 3.21 geometries into Geant4. This is done in two stages:
The user supplies a GEANT 3.21 RZ-file (.rz) containing the
initialization data structures. An executable rztog4 reads
this file and produces an ASCII call list file containing
instructions on how to build the geometry. The source code of
rztog4 is FORTRAN.
A call list interpreter (G4BuildGeom.cc) reads these
instructions and builds the geometry in the user's client code for
Geant4.
Importing converted geometries into Geant4
Two examples of how to use the call list interpreter are
supplied in the directory examples/extended/g3tog4:
cltog4 is a simple example which simply invokes the
call list interpreter method G4BuildGeom from the
G3toG4DetectorConstruction class, builds the geometry and
exits.
clGeometry, is more complete and is patterned as for
the novice Geant4 examples. It also invokes the call list
interpreter, but in addition, allows the geometry to be visualized
and particles to be tracked.
To compile and build the G3toG4 libraries, you need to have set in
your environment the variable G4LIB_BUILD_G3TOG4 at the
time of installation. The G3toG4 libraries are not built by
default. Then, simply type
gmake
from the top-level source/g3tog4 directory.
To build the converter executable rztog4, simply
type
gmake bin
To make everything, simply type:
gmake global
To remove all G3toG4 libraries, executables and .d files,
simply type
gmake clean
Current Status
The package has been tested with the geometries from experiments
like: BaBar, CMS, Atlas, Alice, Zeus, L3, and Opal.
Here is a comprehensive list of features supported and not
supported or implemented in the current version of the package:
Supported shapes: all GEANT 3.21 shapes except for
GTRA, CTUB.
PGON, PCON are built using the
specific solids G4Polycone and
G4Polyhedra.
GEANT 3.21 MANY feature is only partially
supported.
MANY positions are resolved in the
G3toG4MANY() function, which has to be processed before
G3toG4BuildTree() (it is not called by default).
In order to resolve MANY, the user code has to provide
additional info using G4gsbool(G4String volName, G4String
manyVolName) function for all the overlapping volumes.
Daughters of overlapping volumes are then resolved automatically
and should not be specified via Gsbool.
Limitation: a volume with a
MANY position can have
only this one position; if more than one position is needed a new
volume has to be defined (gsvolu()) for each
position.
GSDV* routines for dividing volumes are implemented,
using G4PVReplicas, for shapes:
BOX, TUBE,
TUBS, PARA - all axes;
CONE, CONS - axes 2, 3;
TRD1, TRD2,
TRAP - axis 3;
PGON, PCON - axis 2;
PARA -axis 1; axis 2,3 for a special case
GSPOSP is implemented via individual logical volumes
for each instantiation.
GSROTM is implemented. Reflections of hierachies based
on plain CSG solids are implemented through the G3Division
class.
Hits are not implemented.
Conversion of GEANT 3.21 magnetic field is currently not
supported. However, the usage of magnetic field has to be turned on.