gminos subroutine call tree

This call tree was constructed from a static call list generated by ftnchek. What this means is that the order in which routines are called is not always discernable from their appearance in the code, so ftnchek alphabetizes them at each level. I (RWH) have endeavored to restore the almost linear calling order to that of actual practice, but beware. I've also separated out the branches as they got too deep (attempting to break at logical points).

Routines marked with a * are standard library (geant, CERNLIB, ADAMO) routines not normally modified by the user. Standard GEANT routines may, in turn, call user routines.

Top level

Tree of subprogram calls:
GMINOS
    TIMEST*
    GZEBRA*               ! start ZEBRA; define geant divisions etc
    HLIMIT*               ! start HBOOK
    UGINIT (see below)    ! begin-run initialization
    GRUN*                 ! event loop
        TIMEL*
        GTRIGI*           ! event initialization
            GMAIL*
            GRNDMQ*
            MZBOOK*
        GTRIG* (see below)! generate event
        GTRIGC*           ! event clear
            GRNDMQ*
            MZWIPE*
        GMAIL*
     UGLAST (see below)   ! end-of-run processing

Overall Initialization

UGINIT
    CURRENT_STAT                ! 'init' stage
    CNTCLR
    LBL_FILES
        INITAP                  ! start ADAMO
            CREOBJ              ! inform ADAMO of objects defined in .ddl
                ADDDFL*
                CREDFL*
                CREIND*
                CREREL*
                CRETAB*
                GETDFL*
                INSDFL*
                SETFOR*
            OPETAP*
        LOKLUN*
        CREGAF*
    GINIT*                      ! geant stuff ... just do it
    LBL_FFCARDS                 ! define FFREAD cards
        FFKEY*
        I4_FROM_C4
        MIX_CONCRETE
        UCTOH*
    FFSET*
    GFFGO*                      ! read the FFREAD input
    GZINIT*
    GPART*                      ! generic geant particles
    GMATE*                      ! generic geant materials
    LBL_PART                    ! define user particles
        GEANT2LUND*
        GSPART*
        LUCHGE*
        LUCOMP*
        LUNAME*
        ULMASS*
    LBL_MAT                     ! define user materials
        GFMATE*
        GSMIXT*
        MIX_CONCRETE
        MIX_DOLOMITE
        MIX_GLASS
        MIX_HDPE
        MIX_LDPE
        MIX_LSTGAS
        MIX_PLASTIC
        MIX_POLYPROP
        MIX_PSTYRENE
        MIX_PVC
        MIX_ROCK
        MIX_RPCGAS
        MIX_SCINTOIL
        UHTOC*
    LBL_MTRK                    ! define tracking media from materials
        GFMATE*
        GLOOK*
        GPMATE*
        GPTMED*
        GSTMED*
        GSTPAR*
        USR_TRKPAR
            I4_FROM_C4
    LBL_GEOM (see below)        ! define geometry
    GPHYSI*                     ! fill geant material/media tables
    LBL_HITDEF                  ! define "hits" structure
        COUTAB*
        GETTAB*
        HITDEF_LST
            HITDEF_GENERIC
                GSDET*
                GSDETH*
        HITDEF_FLS
            HITDEF_GENERIC (see above)
        HITDEF_RPC
            HITDEF_GENERIC (see above)
        HITDEF_TST
            HITDEF_GENERIC (see above)
        LEGAL_1CHAR entry LEGAL_ACTVKEY
    LBL_HIST                    ! book standard histograms
        GFTMED*
        HBOOK1*

Geometry Initialization

LBL_GEOM
    CLETAB*
    FILL_NEARFAR            ! decide whether user intended near/far hall
        I4_FROM_C4
    FILL_VHALL              ! set HALL size (but no GSVOLU)
    INSTAB
    ITMED_FROM_NAME (see above)
        CLTOU*
        GFTMED*
    GSVOLU*                 ! in particular, define the world "MARS"
    NOMINAL_PLN_GEOM        ! setup initial "palette" of plane types
        I4_FROM_C4
        SET_VOL_PAR
            I4_FROM_C4
            ISET_GPAR
                I4_FROM_C4
                LEGAL_1CHAR entry LEGAL_ACTVKEY
                LEGAL_KEYINST
            ITMED_FROM_NAME (see above)
            LEGAL_KEYINST
            RSET_GPAR
                I4_FROM_C4
                LEGAL_KEYINST
            VZERO*
    UPK_GCARDS              ! unpack cards that modify geometry
        C4_FROM_I4
        I4_FROM_C4
        ISET_GPAR (see above)
        RSET_GPAR (see above)
    GEOM_ROTM               ! define standard rotation matrices
        GSROTM*
    FILTAB_SUPER            ! define the super-module structure
        C4_FROM_I4
        CLETAB*
        CLTOU*
        COUTAB*
        I4_FROM_C4
        IGET_GPAR
            I4_FROM_C4
            LEGAL_KEYINST
        INSTAB*
        NOMINAL_SUP_GEOM    ! supply default setup as necessary
            CLTOU*
            I4_FROM_C4
            LEGAL_1CHAR entry LEGAL_ROTM
        NULWIN*
        REPTAB*
        SETFOR_SUPER
            SETFOR*
    GETTAB*
    GSPOS*
    GEOM_PLNS               ! define the actual plane geometry
        BLD_A_PL            ! Aluminum
            GENERIC_BLD_PL  ! build a generic plane
                C4MED_FROM_IMED
                    GFTMED*
                GET_VOL_PAR
                    C4_FROM_I4
                    IGET_GPAR (see above)
                    ITMED_FROM_NAME (see above)
                    RGET_GPAR
                        I4_FROM_C4
                        LEGAL_KEYINST
                GFMATE*
                GSVOLU*
                I4_FROM_C4
                IMAT_FROM_IMED
                    GFTMED*
                INSTAB*
                NULWIN*
                VOL2GEANT   ! convert to geant-style volume parameters
                    VZERO*
        BLD_B_PL            ! Magnetized iron (B-field)
            GENERIC_BLD_PL (see above)
        BLD_C_PL            ! Concrete
            GENERIC_BLD_PL (see above)
        BLD_F_PL            ! Fiber & Liquid Scintillator
            GENERIC_BLD_PL (see above)
            INSERT_XT2PL    ! divide the plane into extrusions
                GET_VOL_PAR (see above)
                GSDVN*
                GSPOS*
                GSVOLU*
                REPTAB*
                VOL2GEANT (see above)
            INSERT_CL2XT    ! insert substructure (cells) into extrusions
                GET_VOL_PAR (see above)
                GFMATE*
                GSPOS*
                GSVOLU*
                IMATE_FROM_NAME
                    CLTOU*
                    GFMATE*
                IMAT_FROM_IMED (see above)
                REMIX_MATERIALS   ! calculate "average" material for plane
                    GFMIXT (see above)
                    GSMIXT*
                    VZERO*
                REPTAB*
                VOL2GEANT (see above)
        BLD_G_PL            ! glass
            GENERIC_BLD_PL (see above)
        BLD_K_PL            ! air (sKip)
            GENERIC_BLD_PL (see above)
        BLD_L_PL            ! Limited Streamer Tube
            GENERIC_BLD_PL (see above)
            INSERT_CL2XT (see above)
            INSERT_XT2PL (see above)
        BLD_P_PL            ! Lead (Pb)
            GENERIC_BLD_PL (see above)
        BLD_R_PL            ! Resistive Plate Chamber
            GENERIC_BLD_PL (see above)
            INSERT_CL2XT (see above)
            INSERT_XT2PL (see above)
        BLD_S_PL            ! Steel (unmagnetized)
            GENERIC_BLD_PL (see above)
        BLD_T_PL            ! Test (available for user geometries)
            GENERIC_BLD_PL (see above)
            INSERT_CL2XT (see above)
            INSERT_XT2PL (see above)
        BLD_Z_PL            ! User specified absorber
            GENERIC_BLD_PL (see above)
        CLETAB*
        CLOTAB*
        COUTAB*
        GETTAB*
        GLOOK*
        I4_FROM_C4
        LEGAL_1CHAR entry LEGAL_ACTVKEY
        LEGAL_KI_REAL
        LEGAL_1CHAR entry LEGAL_PASVKEY
        REPTAB*
        SETFOR_PLANESPEC
            SETFOR*
        VZERO*
    GEOM_SUPMDL             ! build/insert (super)modules
        CLOTAB*
        COUTAB*
        FILWIN_MDLORG       ! recover module organization
            COUTAB*
            GETTAB*
            NULWIN*
            SETTPO*
        FILWIN_PLANESPEC    ! recover plane specification
            COUTAB*
            GETTAB*
            NULWIN*
        GEOM_COIL           ! generate/insert coil windings
            COIL_XY
                VZERO*
            GETTAB*
            GSPOS*
            GSROTM*
            GSVOLU*
            ITMED_FROM_NAME (see above)
        GETTAB*
        GSPOS*
        GSVOLU*
        ITMED_FROM_NAME (see above)
        MROT_FROM_CH
        REPTAB*
    GEOM_E803                ! ... relative placement of E803 if near
    GEOM_MINE                ! volumes for Soudan2, tunnels, shafts
        GETTAB*
        GSPOS*
        GSROTM*
        GSVOLU*
        ITMED_FROM_NAME (see above)
    CLOTAB*
    GGCLOS*
    FILTAB_PLANEPOS          ! fill table of individual plane positions
        CLETAB*
        CLOTAB*
        COUTAB*
        FILWIN_MDLORG (see above)
        FILWIN_PLANESPEC (see above)
        GETTAB*
        I4_FROM_C4
        INSREL*
        INSTAB*
        NULWIN*
        REPENT*
    FILTAB_BEAM             ! ...beam placement in this co-ord system
        CLETAB*
        INSTAB*
    FILTAB_GEANT            ! record tables of GEANT-style info
        CLETAB*
        GFMATE*
        GFMIXT
            UHTOC*
        GFTMED*
        INSTAB*

Event Loop

GTRIG*
    GUKINE                  ! read/generate event; place particles in geometry
        CLEAR_EVENT
            CLETAB*
        READ_HEPEVT
        HEPLST*
        GSVERT*
        GSKINE*
        GUKINE_VETO
            HFILL
        LUND2GEANT*
        GRNDM*
        RNDM*
    GDKINE*
    GUTREV*                 ! track event through geometry
        GTREVE*
            GUTRAK*         ! track particle
                GTRACK*
                    many library routines ! geant tracking/physics stuff ...
                    GUPARA*
                    GUFLD   ! calculate B(x,y,z) in world co-ordinates
                        GETIND*
                        SELTAB*
                        FETTAB*
                        VZERO*
                        GETTAB*
                        BFLD_MAP1  ! B(x,y,z) in plane co-ordinates
                    GUSTEP  (see below) ! record secondaries, record step
    GUDIGI
        FILTAB_HITS         ! unpack hits; digitize hits
            COUTAB*
            GETTAB*
            INSTAB*
            NATREL*
            NULWIN*
            PRITAB*
            UPKHIT_LST_PLN
                GFHITS*     ! unpack geant hits structure
                NULWIN*     
                INSTAB*     ! insert hit into ADAMO table
            UPKHIT_FLS_PLN
                GFHITS*     ! unpack geant hits structure
                NULWIN*
                INSTAB*     ! insert hit into ADAMO table
            UPKHIT_RPC_PLN
                GFHITS*     ! unpack geant hits structure
                NULWIN*
                INSTAB*     ! insert hit into ADAMO table
            UPKHIT_TST_PLN
                GFHITS*     ! unpack geant hits structure
        DIGIT_LST           ! generate LST digitizations
        DIGIT_FLS           ! generate FLS digitizations
        DIGIT_RPC           ! generate RPC digitizations
    GUOUT                   ! end-of-event processing (write out event)
        CLETAB*
        CURRENT_STAT        ! 'evnt' processing complete
        FILTAB_STDHEP       ! fill table from STDHEP common
            CLETAB*
            INSTAB*
            SETFOR_STDHEP
                SETFOR*
        FILTAB_NEUVTX       ! fill table with event vertex
            CLETAB*
            INSTAB*
        FILTAB_NEUKIN       ! fill table with event kinematics
            CLETAB*
            CNTEVT*
            INSTAB*
            SETFOR_NEUKIN
                SETFOR*
            VZERO*
        INSTAB*            ! new `event' in "gaf" table
        INSGAF*            ! write out event to "gaf" file

Step Processing

GUSTEP
    GFINDS*                 ! geant stuff...just do it
    GSXYZ*                  ! optionally record XYZ
    THRESH_2ND              ! place secondaries on stack only?
        C4_FROM_I4
        HFILL*
    GSKING*                 ! store the secondaries (stack/JKINE)
    GUSTEP_GEANTINO
        CNTEVT
    CHECK_EXIT2MARS         ! boring ol' particles leaving hall into world?
        C4_FROM_I4
        CNTEVT
        GEANT2LUND
        HEPNAM
        LENSTR
    C4_FROM_I4
    CNTEVT
    KEEP_STEP_HISTORY       ! (to debug geant oddity)
        C4_FROM_I4
    LOCAL_STEP_INFO         ! calculate local co-ords, sum dE for hit info
        C4_FROM_I4
        KEEP_STEP_HISTORY entry DUMP_STEP_HISTORY
            C4_FROM_I4
        GLOOK*
        GMTOD*
    GUSTEP_LST              ! record hit for LST
        GUSTEP_GENERIC
            GEANT2LUND
            GSAHIT*
    GUSTEP_FLS              ! record hit for FLS
        GUSTEP_GENERIC (see above)
    GUSTEP_RPC              ! record hit for RPC
        GUSTEP_GENERIC (see above)
    GUSTEP_TST              ! record hit for TST
        GUSTEP_GENERIC (see above)

End-of-Run Processing

    UGLAST                  ! end-of-run processing
        GLAST*              ! geant cleanup
        CLOGAF*             ! close ADAMO "gaf" file
        HRFILE*             ! open/write/close histogram file
        HROUT*
        HREND*
        CNTPRT              ! print out accumulated counters
        CURRENT_STAT        ! 'done' stage
        CLOTAP*             ! shutdown ADAMO

Robert Hatcher <hatcher@astro.indiana.edu>
Last modified: Tue May 14 10:47:59 1996