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.
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)
Dynamic creation by user's physics list: | 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 should be created in the physics list and should be unique.
The user can get pointers to these objects by using static methods in their own classes.
WARNING: Beginning with Geant4 version 8.0, all particle definitions are revised to "non-static" objects. | |
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. | |
: | 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''. |
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.
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.
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.