3.3.  Particles

3.3.1.  Properties of particles

The G4ParticleDefinition class has properties to characterize individual particles, such as name, mass, charge, spin, and so on. Properties of particles are set during initialization of each particle. Default values of particle properties are described in each particles class. In addition, properties of heavy nuclei can be given by external files. Basicaly, these properties can not be changed after initialization phase except for ones related its decay; life time, branching ratio of each decay mode and the ``stable'' flag. However, 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 creation of such ions. Default properties of nuclei are determined with help of G4NuclearProperties.

Users can register a G4IsotopeTable to the G4IonTable. G4IsotopeTable describes properties of ions which are used to create ions. You can get exited energy, decay modes, and life time for relatively long life nuclei by using G4RIsotopeTable and data files (G4RADIOACTIVEDATA should be set to the directory where data files exist). G4IsotopeMagneticMomentTable provides a table of magnetic moment of nuclei with the data file of G4IsotopeMagneticMoment.table (The file name should be set to G4IONMAGNETICMOMENT )

Changing particle properties

Only in ``PreInit'' phase, properties can be modified with help of 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 values of particles properties can be extracted into text files by using G4TextPPReporter . On the other hand, G4TextPPRetriever can change particle properties according to text files.

3.3.2.  Adding New Particles

You can add a new particle 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. A new class for the monople 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();
}

Static methods above need to be defined and implemented so that this new particle instance will be created in ConstructParticls method of your physics list. You can add new properties if necessary (G4Monopole has 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 have been introduced at Geant4 v10 to provide properties of nuclide states. Excitation energy and decay constant of each state are listed in the table. Spin and dipole magnetic moment are given for some states. Source of data of the table is ENSDF of August 2012. 24,359 states are extracted from the source. Ground states and excite states having longer half-life than 1 nano second are implemented in source code of the class. Total number of the hard coded states is 6807 and they are sufficient for most use cases, thus the G4NuclideTable works within them by default. Full set of 24,359 states is embodied in a data file. G4NuclideTable will use the data file by getting an environment variable of "G4ENSDFSTATEDATA". To get very fine position and time record about level transitions of nuclides, user may want to transport very short lived excite states in his simulation. The environment variable must be set by user in calculating such simulation. To improve performance, ground states and long lived excite states are prepared in initialization and loaded into kernel. G4NuclideTable controls the threshold of half-life of these preload states. Default value of the threshold is 1 micro second and user can modify the value. If user wants to change the value shorter than 1 nano second, then he must set the environment variable before.

Isomer levels

G4NuclideTable provides an integer that represents isomer level of each state. Because of limitation of PDG codes, only a number from 0 to 9 is allowed as the value of level. All ground states have 0 as the value. The lowest energy state isomers in preloaded states have the isomer level of 1. Two will be given for the second lowest isomers among preloaded states and this procedure continues until 8. After this all excite states will have 9 as its isomer level. This numbering scheme of isomer levels only happens within preload states and value of isomer level for certain excite state depends on threshold of half-life for preloaded states. All excite states dynamically generated within event loop will have 9 as its isomer level.

Adding states

User is able to add states into the table with user specific value of excitation energy, decay constant, spin and dipole magnetic moment. This should be done in initialization phase then user-defined states will be in preload states. However they always have isomer level of 9 and be neglected in numbering of isomer level 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 cretad by H. Kurashige
Dec. 2013 add G4NuclideTable by T. Tatsumi