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 - rztog4reads this file and produces an ASCII call list file containing instructions on how to build the geometry. The source code of- rztog4is 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:
- cltog4is a simple example which simply invokes the call list interpreter method- G4BuildGeomfrom the- G3toG4DetectorConstructionclass, 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,- PCONare built using the specific solids- G4Polyconeand- G4Polyhedra.
- GEANT 3.21 - MANYfeature is only partially supported.- MANYpositions 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 - MANYposition 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
 
- GSPOSPis implemented via individual logical volumes for each instantiation.
- GSROTMis implemented. Reflections of hierarchies based on plain CSG solids are implemented through the- G3Divisionclass.
- 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.