Overview Contents Previous Next Geant4 User's Guide
For Application Developers
Tracking and Physics

5.3 Particles

5.3.1 Basic concepts

There are three levels of classes to describe particles in Geant4.

G4ParticleDefinition defines a particle
G4DynamicParticle describes a particle interacting with materials
G4Track describes a particle traveling in space and time

G4ParticleDefinition aggregates information to characterize a particle's properties, such as name, mass, spin, life time, and decay modes. G4DynamicParticle aggregates information to describe the dynamics of particles, such as energy, momentum, polarization, and proper time, as well as ``particle definition'' information. G4Track includes all information necessary for tracking in a detector simulation, such as time, position, and step, as well as ``dynamic particle'' information.

G4Track has all the information necessary for tracking in Geant4. It includes position, time, and step, as well as kinematics. Details of G4Track will be described in Section 5.1.

Besides above three classes, G4ParticleWithCuts class plays an important role. It provides the functionality to convert the cut value in range into energy thresholds for all materials.

5.3.2 Definition of a particle

There are a large number of elementary particles and nuclei. Geant4 provides the G4ParticleDefinition class to represent particles, and various particles, such as the electron, proton, and gamma have their own classes derived from G4ParticleDefinition.

We do not need to make a class in Geant4 for every kind of particle in the world. There are more than 100 types of particles defined in Geant4 by default. Which particles should be included, and how to implement them, is determined according to the following criteria. (Of course, the user can define any particles he wants. Please see the User's Guide: For ToolKit Developers) Particle List in Geant4

This list includes all particles in Geant4 and you can see properties of particles such as Here is a list of particles in Geant4. This list is generated automatically by using Geant4 functionality, so listed values are same as those in your Geant4 application. (as far as you do not change source codes)

Categories Classification of particles

  1. elementary particles which should be tracked in Geant4
    All particles that can fly a finite length and interact with materials in detectors are included in this category. In addition, some particles with a very short lifetime are included.
    1. stable particles
      Stable means that the particle can not decay, or has a very small possibility to decay in detectors, e.g., gamma, electron, proton, and neutron.
    2. long life (>10-14sec) particles
      Particles which may travel a finite length, e.g., muon, charged pions.
    3. short life particles that need to decay in Geant4
      For example, p0,h
    4. K0 system
      K0 "decays" immediately into K0S or K0L, and then K0S/K0L decays according to its life time and decay modes.
    5. optical photons
      Gammas and optical photons are distinguished in the simulation view, though both are the same particle (photons with different energies). For example, optical photons are used for Cerenkov light and scintillation light.
    6. geantinos/charged geantinos
      Geantinos and charged geantinos are virtual particles for simulation which do not interact with materials and undertake transportation processes only.
  2. nuclei
    Any kinds of nucleus can be used in Geant4, such as alpha(He-4), uranium-238 and excited states of carbon-14. Nuclei in Geant4 are divided into two groups from the viewpoint of implementation.
    1. light nuclei
      Light nuclei frequently used in simulation, e.g., alpha, deuteron, He3, triton.
    2. heavy nuclei
      Nuclei other than those defined in the previous category.
    Note that G4ParticleDefinition represents nucleus state and G4DynamicParticle represents atomic state with some nucleus. Both alpha particle with charge of +2 and helium atom with no charge aggregates the same "particle definition" of G4Alpha, but different G4DynamicParticle objects should be assigned to them. (Details can be found below)
  3. short-lived particles
    Particles with very short life time decay immediately and are never tracked in the detector geometry. These particles are usually used only inside physics processes to implement some models of interactions. G4VShortLivedParticle is provided as the base class for these particles. All classes related to particles in this category can be found in shortlived sub-directory under the particles directory.
    1. quarks/di-quarks
      For example, all 6 quarks.
    2. gluons
    3. baryon excited states with very short life
      For example, spin 3/2 baryons and anti-baryons
    4. meson excited states with very short life
      For example, spin 1 vector bosons Implementation of particles

Singleton: Categories a, b-1
These particles are frequently used for tracking in Geant4. An individual class is defined for each particle in these categories. The object in each class is unique and defined as a static object (so-called singleton). The user can get pointers to these objects by using static methods in their own classes.
On-the-fly creation: Category b-2
Ions will travel in a detector geometry and should be tracked, however, the number of ions which may be used for hadronic processes is so huge that ions are dynamic rather than static. Each ion corresponds to one object of the G4Ions class, and it will be created on the fly in the G4ParticleTable::GetIon() method.
Dynamic creation by processes: Category c
Particle types in this category are are not created by default, but will only be created by request from processes or directly by users. Each shortlived particle corresponds to one object of a class derived from G4VshortLivedParticle, and it will be created dynamically during the ``initialization phase''. G4ParticleDefinition

The G4ParticleDefinition class has ``read-only'' properties to characterize individual particles, such as name, mass, charge, spin, and so on. These properties are set during initialization of each particle. Methods to get these properties are listed in Table 5.3.1.

G4String GetParticleName() particle name
G4double GetPDGMass() mass
G4double GetPDGWidth() decay width
G4double GetPDGCharge() electric charge
G4double GetPDGSpin() spin
G4int GetPDGiParity() parity (0:not defined)
G4int GetPDGiConjugation() charge conjugation (0:not defined)
G4double GetPDGIsospin() iso-spin
G4double GetPDGIsospin3() 3rd-component of iso-spin
G4int GetPDGiGParity() G-parity (0:not defined)
G4String GetParticleType() particle type
G4String GetParticleSubType() particle sub-type
G4int GetLeptonNumber() lepton number
G4int GetBaryonNumber() baryon number
G4int GetPDGEncoding() particle encoding number by PDG
G4int GetAntiPDGEncoding() encoding for anti-particle of this particle
Table 5.3.1
Methods to get particle properties.

Table 5.3.2 shows the methods of G4ParticleDefinition for getting information about decay modes and the life time of the particle.

G4bool GetPDGStable() stable flag
G4double GetPDGLifeTime() life time
G4DecayTable* GetDecayTable() decay table
Table 5.3.2
Methods to get particle decay modes and life time.

Users can modify these properties, though the other properties listed above can not be change without rebuilding the libraries.

G4ParticleDefinition provides methods for setting and/or getting cut off values, as shown in Table 5.3.3.

However, these methods only provide the functionality to set and get values. Calculation of energy cut-off values from a cut-off value in range is implemented in the G4ParticleWithCuts class, as described below.

In addition, each particle has its own G4ProcessManger object that manages a list of processes applicable to the particle.

5.3.3 Dynamic particle

The G4DynamicParticle class has kinematics information for the particle and is used for describing the dynamics of physics processes. The properties in G4DynamicParticle are listed in Table 5.3.4.

G4double theDynamicalMass dynamical mass
G4ThreeVector theMomentumDirection normalized momentum vector
G4ParticleDefinition* theParticleDefinition definition of particle
G4ThreeVector thePolarization polarization vector
G4double theKineticEnergy kinetic energy
G4double theProperTime proper time
G4ElectronOccupancy* theElectronOccupancy electron orbits for ions
Table 5.3.4
Methods to set/get cut off values.

Here, the dynamical mass is defined as the mass for the dynamic particle. For most cases, it is same as the mass defined in G4ParticleDefinition class ( i.e. mass value given by GetPDGMass() method). However, there are two exceptions.

Resonace particles have large mass width and the total energy of decay products at the center of mass system can be different event by event.

As for ions, G4ParticleDefintion defines a nucleus and G4DynamicParticle defines an atom. G4ElectronOccupancy describes state of orbital electrons. So, the dynaimc mass can be different from the PDG mass by the mass of electrons (and their binding energy).

Decay products of heavy flavor particles are given in many event generators. In such cases, G4VPrimaryGenerator sets this information in *thePreAssignedDecayProducts. In addition, decay time of the particle can be set arbitrarily time by using PreAssignedDecayProperTime.

About the authors