What does gstar_part.g do anyway?

Standard geant defines particle IDs 1-50.  The gstar_part module HOWTO: Print the list of particles available in STARSIM [1].  
 
The gstar_part module:
  1. Redefines some existing particles
  2. Defines some additional particles using the agstar/mortran syntax.
It should be noted that PDG ids are made known to gstar in some cases, but not for others.
 
The code responsible for parsing the "Particle" commands in gstar_part.g is asps/Simulation/starsim/atgeant/axparticle.age.
The mapping between PDG id and geant ID is handled in the subroutine asps/Simulation/starsim/agzio/apdg2gea.age.
 

 
Four particles are redefined. These are:
GEANT 3 Original:

0Part                         Options        Mass    Charge    Life time                  User words
   35 D +                        4       0.1869E+01     1.    0.10620E-11
   36 D -                        4       0.1869E+01    -1.    0.10620E-11
   37 D 0                        3       0.1865E+01     0.    0.42800E-12
   38 ANTI D 0                   3       0.1865E+01     0.    0.42800E-12
 GSTAR Replacements:

0Part                         Options        Mass    Charge    Life time                  User words
   35 D_PLUS                     4       0.1869E+01     1.    0.10570E-11
   36 D_MINUS                    4       0.1869E+01     1.    0.10570E-11
   37 D0                         3       0.1865E+01     0.    0.41500E-12
   38 D0_BAR                     3       0.1865E+01     0.    0.41500E-12
Same particles with different life times.  Probably somebody looked in the PDB at some point and updated these with the current "best" lifetimes.
For the record I will note that the D0 is out of date... July 2008 PDB value for the lifetime is (410.1 +/- 1.5)×10-15 s.
 
When the gstar_part module is run, there is a warning issued:
  SET_PDGEA warning:  particle PDG code         4122  known to geant as           41  is redefined as          207
Seems to indicate that (1) geant or at least gstar knows about particle data group IDs, and (2) geant ID 41 / Lambda C + is redefined as geant ID 207 / LAC2...
0Part                         Options        Mass    Charge    Life time                  User words
41  LAMBDA C +                 4       0.2285E+01     1.    0.17900E-12
207 LAC2                       3       0.2285E+01     1.    0.20600E-12
In addition to changing the lifetime, it switches the tracking routine used from hadrons to neutrons... (but these don't travel far, so this change had better not matter).
 
Let's look at the gstar_part module in detail.  Here is how the "dalitz" particle gets defined:
* special pi0 decay: 50% normal, 50% dalitz
  Particle Dalitz    code=149        TrkTyp=4 mass=0.135  charge=0 tlife=8.4e-17,
                     pdg=100111 bratio= { 0.5, 0.5}  mode= { 101, 10203}
So the module provides both a geant ID (aka code) and a particle data group ID.  In this case the PDG id is 100111.  The "dalitz" particle is just a pi0 with an enhanced π0-->e+e-γ branch.  
 

[1] NOTE: This means we could not (if we wanted to) use geant's GPIONS subroutine to define heavy ions, because they would overwrite or be overwritten by gstar's particle definitions.