I'm using geant4.5.0.p01. These lines work perfect: G4ParticleDefinition * particleType = aTrack->GetDefinition(); G4String particleName = particleType->GetParticleName(); I have correct particle name for any particle, but particleType->GetPDGEncoding() gives correct particle code only for selected particles: =11 for electron =-11 for positron =13 for mu- =-13 for mu+ 2212 for proton probably correct codes for neutrinos. For heavy particles (D,T,He3,alpha) particleType->GetPDGEncoding() returns zero. The behavior is the same in my own simulation and in examples lAr_calorimeter,underground_physics. Do you have any idea what is wrong? Best regards, Vladimir Tumakov
PDG encoding convention does not cover nuclei. Thus the return values for nuclei are zeros. Note that zero is not used by PDG encoding convention. By the same reason, artificial particles such as geantino return zeros as well.