3.3.  Particles

3.3.1.  Properties of particles

The G4ParticleDefinition class contains the properties which characterize individual particles, such as name, mass, charge, spin, and so on. Properties of particles are set during the initialization of each particle type. The default values of these properties are described in each particle class. In the case of heavy nuclei properties may be given by external files. Once initialized, particle properties cannot be changed except for those related to its decay; these are life time, branching ratio of each decay mode and the ``stable'' flag. Geant4 proivides a method to override these properties by using external files.

Properties of nuclei

Individual classes are provided for light nuclei (i.e. deuteron, triton, He3, and He4) with default values of their properties. Other nuclei are dynamically created by requests from processes (and users). G4IonTable class handles the creation of such ions. Default properties of nuclei are determined with help of G4NuclearProperties.

Users can register a G4IsotopeTable to the G4IonTable. G4IsotopeTable which describes the properties used to create ions. Excitation energy, decay modes, and life times for relatively long-lived nuclei can be obtained by using G4RIsotopeTable and data files such as those pointed to by the G4RADIOACTIVEDATA environment variable. G4IsotopeMagneticMomentTable provides a table of nuclear magnetic moments using the data file G4IsotopeMagneticMoment.table. The environment variable G4IONMAGNETICMOMENT should be set to point to this file.

Changing particle properties

Only in the ``PreInit'' phase can properties be modified with the help of the G4ParticlePropertyTable class. Particle properties can be overridden with the method

G4bool SetParticleProperty(const G4ParticlePropertyData& newProperty)

by setting new values in G4ParticlePropertyData . In addition, the current particle property values can be extracted to text files by using G4TextPPReporter . On the other hand, G4TextPPRetriever can change particle properties according to text files.

3.3.2.  Adding New Particles

A new particle can be added by creating a new class for it. The new class should be derived from G4ParticleDefinition. You can find an example under examples/extended/exoticphysics/monopole. There, the new class for the monopole is defined as follows:

class G4Monopole : public G4ParticleDefinition
{
private:
  static G4Monopole*  theMonopole;

  G4Monopole(
       const G4String&     aName,        G4double            mass,
       G4double            width,        G4double            charge,   
       G4int               iSpin,        G4int               iParity,    
       G4int               iConjugation, G4int               iIsospin,   
       G4int               iIsospin3,    G4int               gParity,
       const G4String&     pType,        G4int               lepton,      
       G4int               baryon,       G4int               encoding,
       G4bool              stable,       G4double            lifetime,
       G4DecayTable        *decaytable );

public: 
   virtual ~G4Monopole();
   static G4Monopole* MonopoleDefinition();
   static G4Monopole* Monopole();
}

The static methods above must be defined and implemented so that the new particle instance will be created in the ConstructParticles method of your physics list. New properties may be added if necessary (G4Monopole has a a property for magnetic charge). Values of properties need to be given in the static method as other particle classes.

G4Monopole* G4Monopole::MonopoleDefinition(G4double mass, G4int mCharge, G4int eCharge)
{    
  if(!theMonopole) {
    theMonopole = new G4Monopole(
              "monopole",         mass,       0.0*MeV,           0, 
                    0,               0,             0,          
                    0,               0,             0,             
              "boson",               0,             0,           0,
                 true,            -1.0,             0);
  }
  return theMonopole;
}

3.3.3.  Nuclide properties from Evaluated Nuclear Structure Data File

G4NuclideTable

G4NuclideTable was introduced in Geant4 V10 to provide properties of nuclide states. The excitation energy and decay times of each state are listed in this table. The spin and dipole magnetic moment are also given for some states. The source of the data in this table is ENSDF of August 2012. 24,359 states were extracted from the source and ground states and excited states having half-lives longer than 1 nanosecond were implemented in the source code of the class. The total number of hard-coded states, 6807, is sufficient for most use cases and so G4NuclideTable uses these by default. The full set of 24,359 states is contained in a data file. G4NuclideTable accesses the data file pointed to by the environment variable "G4ENSDFSTATEDATA". To get very fine position and time information about level transitions of nuclides, users may want to transport very short-lived excited states in his simulation. An environment variable must be set by the user to activate such a simulation. To improve performance, ground states and long-lived excited states are prepared at initialization time and loaded into the kernel. G4NuclideTable controls the half-life threshold of these preloaded states. The default value of the threshold is 1 microsecond and users may modify this value. If users want to make the value shorter than 1 nanosecond, then he must set the environment variable before.

Isomer levels

G4NuclideTable provides an integer that represents the isomer level of each state. Due to PDG code limitations, only level numbers from 0 to 9 are allowed. All ground states have a level number of 0, lowest energy state isomers have level number 1, next lowest have level number 2, and so on. This continues up to level 8. All excited states above this will have level number 9. This numbering scheme is used only for the preloaded states. In general the isomer level number for certain excited states depends on the half-life threshold for preloaded states. All excited states dynamically generated within the event loop will have 9 as its isomer level.

Adding states

Users are able to add states to the table with specific values of excitation energy, decay constant, spin and dipole magnetic moment. This should be done at initialization time and then user-defined states will be preloaded. However they always have an isomer level of 9 and neglect the numbering of isomer levels of other states.

Currently G4RadioactiveDecay and G4PhotoEvporation models share the state information with G4NuclideTable. Other models are encouraged to follow these.

Status of this chapter

Nov. 2008 created by H. Kurashige
Dec. 2013 G4NuclideTable added by T. Koi
Jan. 2014 spelling and grammar revision by D.H. Wright