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 ofrztog4
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 methodG4BuildGeom
from theG3toG4DetectorConstruction
class, builds the geometry and exits.clGeometry
, is more complete and is patterned as for the basic 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 enabled
GEANT4_USE_G3TOG4
at the build configuration of Geant4. The G3toG4
libraries are not built by default.
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 solidsG4Polycone
andG4Polyhedra
.GEANT 3.21
MANY
feature is only partially supported.MANY
positions are resolved in theG3toG4MANY()
function, which has to be processed beforeG3toG4BuildTree()
(it is not called by default). In order to resolveMANY
, the user code has to provide additional info usingG4gsbool(G4String volName, G4String manyVolName)
function for all the overlapping volumes. Daughters of overlapping volumes are then resolved automatically and should not be specified viaGsbool
.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, usingG4PVReplica
s, 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 hierarchies based on plain CSG solids are implemented through theG3Division
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.