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;
}

[Status of this chapter]

Nov. 2008 cretad by H. Kurashige