A Pointer system for referencing the BES TRKLST common block


Introduction

Within the BES code system there are many different, and confusing methods for accessing the data within the BES TRKLST common block. Among the most common is the use of ISUB3 to reference the beginning of the Drift chamber section of the track list. This usage requires the user to know which subsystem corresponds to which subtype. This document proposes an alternate, more intuitive system.

The system

Under the old system, The contents of the track list for Subtype = S, Track = T and Item = I, is given by TRK(TRKSUB(S,T)+I). For example, TRK(TRKSUB(3,5)+7) gives the momentum of the 5th track in the track list.

Under the new pointer system, the pointers (commonly called some variation on ISUBn) would have standardized names defined by which subsystem that the pointer references. Added to these pointers would be the offsets needed to access the individual data elements. Each of the offsets is a mnemonic for the data it references. For example to get the charge of a particle in the track identification block, one would use the offset id_ichrg. The subsystem level pointers for the TRKLST common block follow.

      id_ptr          ! Track identification block
      cdc_ptr         ! Spare for Central Drift Chamber
      vd_ptr          ! Spare for vertex detector
      mdc_ptr         ! Main Drift Chamber track
      tof_ptr         ! TOF counter information
      sc_ptr          ! Shower counter information
      mu_ptr          ! Muon counter information
      dedx_ptr        ! dE/dx information
      vcn_ptr         ! Vertex constrained track fit
      dcdat_ptr       ! Drift Chamber data pointers
      scdat_ptr       ! Shower counter data pointers
      projdc_ptr      ! Proj. coordinates of DC tracks
      sec_ptr         ! Secondary vertex information
Under this system, the same information as in the example above would be accessed by
      mdc_ptr = trksub(mdc_sub,5)
      Ptrack = TRK(mdc_ptr+mdc_p)
Similarly, the pointer names for EVLST would be
      vid_ptr         ! vertex identification block
      sim_ptr         ! simple vertex determination
      bmp_ptr         ! beam position
      cnf_ptr         ! vertex constrained fit vtx block
      spr_ptr         ! spare
      nprng_ptr       ! N-prong vertex list
      secv_ptr        ! secondary vertex block
      tagd_ptr        ! tagged D block
The element level pointers are documented in trktype.inc and vtxtype.inc. Compare these with the names in trklst.