Foreword

+-------------+                                               +----------##
| Geant 3.15  |               GEANT User's Guide              | AAAA001  ##
+-------------+                                               +----------##
                                   

Author(s) : GEANT team Submitted: 01/10/84 Origin : all contributors Revised: 27/01/93

As the scale and complexity of High Energy Physics experiments increase, simulation studies require more and more care and become essential to

      design and optimize the detectors,
      develop and test the reconstruction and analysis programs, and
      interpret the experimental data.
                                  

GEANT3 is a system of detector description and simulation tools that help physicists in such studies. The GEANT3 system can be obtained from CERN as six Patchy/CMZ files: GEANT, GEANG, GEANH, GEANF, GEANE and GEANX. The program runs everywhere the CERN Program Library has been installed At the moment of writing these are the systems on which the CERN Program Library has been installed: VM/CMS-HPO-XA-ESA, SUN Sparc, Silicon Graphics, CRAY Y-XMP, Apollo 3000 series, Apollo 10000, HP 400 series, HP 700 series, IBM RS/6000, IBM AIX/370, VAX/VMS, Alliant, Dec Ultrix, NeXT, IBM MVS-HPO-XA-ESA, Convex, MAC/MPW (partial implementation), Data General, Gould, Meiko Computing Surface T-800, Norsk Data. .

The GEANT and GEANG files contain most of the basic code. The GEANH file contains the code for the hadronic showers simulation from the program GHEISHA Program GHEISHA, H. Fesefeldt, AACHEN 3rd Inst.. The GEANF file contains the source of the routines for hadronic showers development from the FLUKA P.A.Aarnio et al.: FLUKA User's guide CERN TIS-RP (1990): TIS-RP-190(1987) program which is interfaced with GEANT as an alternative to GHEISHA to simulate hadronic cascades. The GEANE file Program GEANE, V. Innocente, INFN Napoli, M. Maire, ANNECY LAPP, E. NAGY, BUDAPEST CRIP and CERN contains a tracking package to be used in the context of event reconstration, for trajectory estimate and error propagation. The GEANX file contains the main program for the interactive version of GEANT (GXINT) and a few examples of application programs which may help users to get started with GEANT.

General information concerning GEANT3, for example access to the source code, the list of problems and their proposed corrections, the context of utilisation on the CERN machines, the status of some application programs, the acquisition of documentation, etc., are kept up to date through the CERN news and an electronic mailing list which is installed on the CERN IBM mainframe (BITnet/EARN node CERNVM). The name of the list is LGEANT.

The first version of GEANT was written in 1974 as a bare framework which initially emphasized tracking of a few particles per event through relatively simple detectors. The system has been developed with some continuity over the yearsGEANT User's Guide, CERN DD/78/2; GEANT2 User's Guide, CERN DD/EE/83 1.

The main structural concepts of GEANT3 includes: The description of the geometrical setup and of the sensitive detectors is new, the overall strategy for the tracking has been rethought and most of the physics routines have been upgraded. From version 3.10 onward, GEANT3 uses the Memory Manager ZEBRAZEBRA User Guide, CERN Program Library Q100. From version 3.12 onward, an experimental parallel tracking mode has been made optionally available to users. In this mode tracking proceeds by volume rather than by track. One volume is selected and all tracks in it are tracked up to the its boundaries. Then another volume is selected and so on till no volumes containing tracks are left.

The current version differs significantly from the previous ones. Some of the modifications may lead to backward incompatibilities. The user is therefore invited to read carefully the Patch HISTORY of the current GEANT3 file where all changes are described in detail.

The development and the maintenance of a program like GEANT3 are possible only thanks to the devoted and continuous collaboration of physicists around the world who use the program and contribute their feedback to the authors and maintainers at CERN. It would be unrealistic to try to mention all of them, and new names are added every day to the list of the contributors.

GEANT3 originated from an idea of R.Brun and was designed mainly by R.Brun, F.Bruyant, M.Maire, A.McPherson. An early contribution in the area of graphics and user interface came from P.Zanarini. From that moment on many more people contributed their work or their experience. Their names are mentioned in the manual pages and we apologize for any omissions.

Special mention should be made here of the following contributions:

  L. Urban (Budapest),        upgrade of electromagnetic processes
  F. Carminati (CERN CN),     interface with the program GHEISHA
  G.N. Patrick (RAL),         basic electromagnetic processes
  D. Ward (Cambridge),        many useful suggestions
  J. Allison (Manchester),    interface with the program CASCADE84 (obsolete)
                                  
The responsibility for the maintenance and the development of the GEANT program is now with the Simulation Section, Application Software Group of the Computing and Networks division at CERN, whose Section Leader is F.Carminati.

Any reader who is not familiar with GEANT should first have a glance at the notes numbered 001 to 009 in each section of this manual. Many colleagues have kindly accepted to read draft copies of this write-up. Their remarks and corrections have been most appreciated. We would like to acknowledge especially the suggestions made by :

                    R. Hemingway (Carleton U., Ottawa)
                           H. Newman (Caltech)
             S. O'Neale (CERN PPE) and F. Ranjard (CERN ECP).
                                  

Despite their efforts, the documentation is still incomplete and far from perfect. We accept full responsibility for its present status.

We express our thanks to Michel Goossens for translating the SCRIPT/SGML source of the original GEANT manual into LaTeX.

Documentation

The main source of documentation on GEANT is this manual. Users are invited to notify any correction or suggestion to the authors.

A detailed description of the history of modifications to the GEANT code is contained in the HISTORY Patch in the GEANT file.

GEANT is part of the CERN Program Library, and problems or questions about GEANT should be directed to the Program Library Office (see next section).

A mailing list is maintained on CERN central IBM machine (BITnet node CERNVM) via the LISTSERV mechanism. The listserv acts as a rudimentary conferencing system, which forwards the mail received to all subscribed users. This list is accessible to all users who have an e-mail connection to CERNVM. To subscribe to the list from a BITnet node a user has to send the following message to LISTSERV at CERNVM using the local BITnet message facility:

                        SUBSCRIBE LGEANT
                                  

From a non-BITnet node, the user can send an ordinary mail message to the user LISTSERV at CERNVM containing that single line.

On LISTSERV is stored the correction cradle (see section on maintainance policy) which contains the history of the modifications to the current version of the GEANT program. This file is accessible to all users of the list via the command:

                        GET GCORRxxx CAR
                                  

where xxx is the version number.

Documentation on the elements of the CERN Program Library used by the GEANT program is available from the CERN Program Library Office.

Update policy

The GEANT program is constantly updated to reflect corrections, most of the time originating from the users' feed-back, and improvements to the code. This constant evolution, which is one of the reasons of the success of GEANT, poses the serious problem of managing change without disrupting stability, which is very important for physicists doing long production runs.

In the CERN Program Library maintenance scheme, three versions of any product are present at the same time on the central systems, in the OLD, PRO and NEW area with the same name. This scheme does not apply to GEANT because every new release usually contains modifications in the physics which can produce, we hope, better but often different results with respect to the previous version. It is therefore appropriate to offer to the users an extra level of protection against running inadvertedly the wrong version by appending the version number to all the files of GEANT. In this way the users will have to change his/her procedure to change the version of GEANT.

On the other hand, the new user should not bother about version numbers and correction files, and so an alias is installed on all systems without any version number, always pointing to the latest released version.

As said before, users' feed-back is of paramount importance in detecting problems or areas for improvement in the system, so the new version is made available in the NEW area well before the official release. If, on the one hand, those who use this version are doing it at their own risk, on the other hand users are encouraged to perform as much testing as possible, in order to detect the maximum number of problems before the release. Modifications in the pre-release version are made directly in the source code.

When a problem is discovered which may seriously affect the validity of the results of the simulation, it is of course not enough to correct it in the new version, as users who are doing long productions cannot rely on it. In this case the correction is also made in the production version in the PRO area. To minimize network transfer for remote users and in the interest of the stability of the system, the source code of the released version in PRO is not touched, but rather the correction is applied via a so-called correction cradle which is a file containing the differences between the original and the corrected version in a format peculiar to PATCHY/CMZ. Both these programs can read the original source and the correction cradle and produce the corrected source. On the production area the binary libraries are re-generated and the new correction cradle installed.

Users at CERN should not need to use the correction cradle other than for documentation purposes. Remote users may want to obtain the cradle and apply the corrections. For this, the cradle is installed on the LISTSERV where it can be retrieved by registered users. Once a new version is released, the correction cradle is obviously empty, as all corrections have been applied in the code directly. The correction cradle for the OLD version is available but has to be considered frozen. No correction is ever applied to an old version.

New versions of GEANT are moved in the PRO area synchronously with releases of the CERN Program Library. If no new version of GEANT is available at the time of the release of the Program Library, the GEANT files do not change their location and the production version remains the same.

Availability of the documentation

This document has been produced using LaTeXLeslie Lamport, LaTeX -- A Document Preparation System. Addison--Wesley, 1985 with the cernman and cerngeant style options, developed at CERN. A printable version of each of the sections described in this manual can be obtained as a compressed PostScript file from CERN by anonymous ftp. You can look in the directory described in the procedure below for mor details. For instance, if you want to transfer the description of the physics routines, then you can type the following (commands that you have to type are underlined):You can of course issue multiple get commands in one run.

      ftp asis01.cern.ch
      ------------------
      Trying 128.141.201.136...
      Connected to asis01.cern.ch.
      220 asis01 FTP server (SunOS 4.1) ready.
      Name (asis01:username): anonymous
                    ##        ---------
      Password: your#mailaddress
      ftp> binary---------------
           ------
      ftp> cd cernlib/doc/ps.dir/geant
           ---------------------------
      ftp> get phys.ps.Z
           -------------
      ftp> quit
           ----