Import Geant4 6.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:41:53 +02:00
parent 4aea781e80
commit 96686e0c8f
6560 changed files with 153347 additions and 238155 deletions
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4AlphaDecayChannel_h
#define G4AlphaDecayChannel_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4AlphaDecayChannel.hh
//
// Version: 0.b.3
// Date: 29/02/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
#include "G4RadioactiveDecayMode.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4AlphaDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Alpha decay proceess.
//
// class description - end
public:
G4AlphaDecayChannel (G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR,
G4double theEndPointEnergy=0.0,
G4double theDaughterExcitation=0.0) :
G4NuclearDecayChannel (Alpha, Verbose, theParentNucleus, theBR,
theEndPointEnergy,
(theParentNucleus->GetBaryonNumber())-4,
int(theParentNucleus->GetPDGCharge()/eplus)-2,
theDaughterExcitation, "alpha")
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout <<"G4AlphaDecayChannel constructor" << G4endl;
#endif
}
~G4AlphaDecayChannel () {;}
};
#endif
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4BetaFermiFunction_h
#define G4BetaFermiFunction_h 1
#include "globals.hh"
class G4BetaFermiFunction
{
// class description
// It is to calculate the Coulomb correction to beta particles
//
public: // with description
G4BetaFermiFunction(G4int const fA, G4int const fZ) :
A(fA), Z(fZ)
{};
// constructor: fA the daughter nucleus mass.
// fZ the daughter nucleus charge. Negative value for
// beta+ decays.
//
~G4BetaFermiFunction()
// desctructor
//
{};
G4double GetFF(const G4double E);
// Returns the BetaFermi factor at energy E.
// E kinetic energy of the beta particle in unit of Me.
//
G4double GetFFN(const G4double E0);
// Returns the BetaFermi factor normalisation, i.e. the maximum
// value for beta decay with end-point energy E0.
// E0 dose not including beta particle rest mass in unit
// of Me.
//
private:
G4int A;
G4int Z;
static const G4double PI;
private:
G4double Gamma(G4double X);
};
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4BetaMinusDecayChannel_h
#define G4BetaMinusDecayChannel_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4BetaMinusDecayChannel.hh
//
// Version: 0.b.3
// Date: 29/02/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
#include "G4RadioactiveDecayMode.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4BetaMinusDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Beta- decay proceess.
//
// class description - end
public:
G4BetaMinusDecayChannel (G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR,
G4double theEndPointEnergy=0.0,
G4double theDaughterExcitation=0.0,
G4double theFFN=1.0,
G4bool theBetaSimple = false,
RandGeneral* theRandEnergy = NULL):
G4NuclearDecayChannel (BetaMinus, Verbose, theParentNucleus, theBR,
theFFN,
theBetaSimple,
theRandEnergy,
theEndPointEnergy,
theParentNucleus->GetBaryonNumber(),
int(theParentNucleus->GetPDGCharge()/eplus)+1,
theDaughterExcitation, "e-", "anti_nu_e")
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout <<"G4BetaMinusDecayChannel constructor" <<G4endl;
#endif
}
~G4BetaMinusDecayChannel () {;}
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4BetaPlusDecayChannel_h
#define G4BetaPlusDecayChannel_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4BetaPlusDecayChannel.hh
//
// Version: 0.b.3
// Date: 29/02/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
#include "G4RadioactiveDecayMode.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4BetaPlusDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Beta+ decay proceess.
//
// class description - end
//
//
public:
G4BetaPlusDecayChannel (G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR,
G4double theEndPointEnergy=0.0,
G4double theDaughterExcitation=0.0,
G4double theFFN=0.0,
G4bool theBetaSimple = false,
RandGeneral* theRandEnergy = NULL) :
G4NuclearDecayChannel (BetaPlus,
Verbose,
theParentNucleus,
theBR,
theFFN,
theBetaSimple,
theRandEnergy,
theEndPointEnergy,
theParentNucleus->GetBaryonNumber(),
int(theParentNucleus->GetPDGCharge()/eplus)-1,
theDaughterExcitation, "e+", "nu_e")
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout <<"G4BetaPlusDecayChannel constructor" <<G4endl;
#endif
}
~G4BetaPlusDecayChannel () {;}
};
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4ITDecayChannel_h
#define G4ITDecayChannel_h 1
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4ITDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Isomeric Transitions
//
// class description - end
public:
G4ITDecayChannel (G4int Verbose,
const G4Ions *theParentNucleus,
G4double theBR) :
G4NuclearDecayChannel (IT, Verbose, theParentNucleus, theBR, 0.0,
theParentNucleus->GetBaryonNumber(),
int(theParentNucleus->GetPDGCharge()/eplus),
theParentNucleus->GetExcitationEnergy())
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout <<"G4ITDecayChannel constructor" << G4endl;
#endif
}
~G4ITDecayChannel () {;}
};
#endif
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4KshellECDecayChannel_h
#define G4KshellECDecayChannel_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4KshellECDecayChannel.hh
//
// Version: 0.b.3
// Date: 29/02/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
#include "G4RadioactiveDecayMode.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4KshellECDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Electron Capture proceess with electron from the K shell
//
// class description - end
public:
G4KshellECDecayChannel (G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR,
G4double theQtransit=0.0,
G4double theDaughterExcitation=0.0) :
G4NuclearDecayChannel (KshellEC, Verbose, theParentNucleus, theBR,
theQtransit, theParentNucleus->GetBaryonNumber(),
int(theParentNucleus->GetPDGCharge()/eplus)-1,
theDaughterExcitation, "nu_e")
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cout <<"G4KshellECDecayChannel constructor" << G4endl;
#endif
}
~G4KshellECDecayChannel () {;}
};
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4LshellECDecayChannel_h
#define G4LshellECDecayChannel_h 1
#include "globals.hh"
#include "G4NuclearDecayChannel.hh"
#include "G4RadioactiveDecayMode.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4LshellECDecayChannel : public G4NuclearDecayChannel
{
// class description
//
// Derived class from G4NuclearDecayChannel. It is specific for
// Electron Capture proceess with electron from the L shell
//
// class description - end
public:
G4LshellECDecayChannel (G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR,G4double theQtransit=0.0,
G4double theDaughterExcitation=0.0) :
G4NuclearDecayChannel (LshellEC, Verbose, theParentNucleus, theBR,
theQtransit, theParentNucleus->GetBaryonNumber(),
int(theParentNucleus->GetPDGCharge()/eplus)-1,
theDaughterExcitation,
"nu_e")
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cerr <<"G4LshellECDecayChannel constructor" << G4endl;
#endif
}
~G4LshellECDecayChannel () {;}
};
#endif
@@ -0,0 +1,137 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4NuclearDecayChannel_h
#define G4NuclearDecayChannel_h 1
#include "globals.hh"
#include "G4VDecayChannel.hh"
#include "G4Ions.hh"
#include "G4IonTable.hh"
#include "G4DynamicParticle.hh"
#include "G4ParticleTable.hh"
#include "G4GeneralPhaseSpaceDecay.hh"
#include "G4RadioactiveDecayMode.hh"
#include "CLHEP/Random/RandGeneral.h"
////////////////////////////////////////////////////////////////////////////////
//
class G4NuclearDecayChannel : public G4GeneralPhaseSpaceDecay
{
// class description
//
// G4NuclearDecayChannel is a derived class from G4GeneralPhaseSpaceDecay,
// itself a derived class from G4VDecayChannel. It provides the required
// decay channels for all nuclear decay modes and through the DecayIt()
// member function returns the decay products.
//
// class description - end
public: // with description
G4NuclearDecayChannel (const G4RadioactiveDecayMode &, G4int Verbose) :
G4GeneralPhaseSpaceDecay (Verbose) {;}
// default constructor
//
G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR, G4double theQtransition, G4int A,
G4int Z, G4double theDaughterExcitation);
// constructor decay channel with one decay product
//
G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR, G4double theQtransition, G4int A,
G4int Z, G4double theDaughterExcitation,
const G4String theDaughterName1);
// constructor decay channel with two decay products
//
G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose,
const G4ParticleDefinition *theParentNucleus,
G4double theBR, G4double theFFN,
G4bool betaS, RandGeneral* randBeta,
G4double theQtransition, G4int A, G4int Z,
G4double theDaughterExcitation,
const G4String theDaughterName1,
const G4String theDaughterName2);
// constructor decay channel with three decay product
//
~G4NuclearDecayChannel () {;}
// destructor
//
G4DecayProducts *DecayIt (G4double theParentMass);
// Returns the decay products
//
inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
// Returns the decay mode
//
inline G4double GetDaughterExcitation () {return daughterExcitation;}
// Returns the excitaion energy of the daughter nuclide
//
inline G4ParticleDefinition* GetDaughterNucleus () {return daughterNucleus;}
// Returns the daughter nuclide.
//
private:
G4NuclearDecayChannel (const G4String &theName, const G4String &theParentName,
G4double theBR, G4int theNumberOfDaughters,
const G4String theDaughterName1,
const G4String theDaughterName2,
const G4String theDaughterName3,
const G4String theDaughterName4);
G4NuclearDecayChannel (const G4String &theParentName,
G4double theBR, G4int theNumberOfDaughters,
const G4String& theDaughterName1,
const G4String& theDaughterName2 = "",
const G4String& theDaughterName3 = "");
G4NuclearDecayChannel (const G4String &theParentName,
G4double theParentMass, G4double theBR,
G4int theNumberOfDaughters,
const G4String& theDaughterName1,
const G4String& theDaughterName2 = "",
const G4String& theDaughterName3 = "");
void FillDaughterNucleus (G4int index, G4int A, G4int Z,
G4double theDaughterExcitation);
G4DecayProducts* BetaDecayIt();
// to replace the ThreeBodyDecayIt() to generate the correct beta spectrum
protected:
G4RadioactiveDecayMode decayMode;
static const G4double pTolerance;
static const G4double levelTolerance;
G4double daughterExcitation;
G4int daughterA;
G4int daughterZ;
G4ParticleDefinition *daughterNucleus;
G4DynamicParticle *dynamicDaughter;
G4double Qtransition;
G4double FermiFN;
G4bool BetaSimple;
RandGeneral* RandomEnergy;
};
#endif
@@ -0,0 +1,107 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4NucleusLimits_h
#define G4NucleusLimits_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4NucleusLimits.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include <iostream>
////////////////////////////////////////////////////////////////////////////////
//
class G4NucleusLimits
{
// class description
// The G4NucleusLimits class is used to contain information identifying a
// range bounded by A [aMin, aMax], and Z on [zMin, zMax].
//
// class description - end
public: // with description
G4NucleusLimits ();
// Default constructor where: aMin=1, aMax=240, aMin=1, and
// zMax=100.
//
G4NucleusLimits
(G4int aMin1, G4int aMax1, G4int zMin1, G4int zMax1);
// Constructor defining new values for aMin, aMax, zMin, and zMax
// respectively.
//
~G4NucleusLimits();
// Destructor
private:
G4int aMin;
G4int aMax;
G4int zMin;
G4int zMax;
//
//
// INLINE DECLARATIONS/DEFINTIONS:
//
public: // with description
inline G4int GetAMin () const {return aMin;}
// Returns the value of aMin.
//
inline G4int GetAMax () const {return aMax;}
// Returns the value of aMax.
//
inline G4int GetZMin () const {return zMin;}
// Returns the value of zMin.
//
inline G4int GetZMax () const {return zMax;}
// Return the value of zmax.
//
friend std::ostream &operator << (std::ostream &s, const G4NucleusLimits &q);
};
////////////////////////////////////////////////////////////////////////////////
#endif
@@ -0,0 +1,142 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RIsotopeTable_h
#define G4RIsotopeTable_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4RIsotopeTable.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
#include "G4IsotopeProperty.hh"
#include "G4VIsotopeTable.hh"
#include "G4Ions.hh"
#include "G4IonTable.hh"
#include "G4DecayTable.hh"
#include <vector>
////////////////////////////////////////////////////////////////////////////////
//
class G4RIsotopeTable : public G4VIsotopeTable
{
// class description
// G4RIsotopeTable is the table of pointers to G4IsotopeProperty.
// It is derived from the abstract base class G4VIsotopeTable
// class description - end
public:
//
typedef std::vector<G4IsotopeProperty*> G4IsotopeList;
typedef std::vector<G4String> G4IsotopeNameList;
public:
// constructor
//
G4RIsotopeTable ();
protected:
// hide copy construictor as protected
G4RIsotopeTable(const G4RIsotopeTable &right);
public:
// destructor
virtual ~G4RIsotopeTable();
public:
// with description
//
virtual G4bool FindIsotope(G4IsotopeProperty* property);
// The FindIsotope function will replace the pure virtual one defined in the
// abstract base class G4VIstopeTable. We don't use this fuction in this
// implementation, instead we use the next function.
//
virtual G4IsotopeProperty* GetIsotope(G4int Z, G4int A, G4double E);
//
// again it will replace the pure virtual one in the abstract base class.
//
// Z: Atomic Number
// A: Atomic Mass
// E: Excitaion energy
private:
G4String GetIsotopeName(G4int Z, G4int A, G4double E);
//
// To generate a name for the isotope
G4double GetMeanLifeTime (G4int Z, G4int A, G4double& E);
// to get the mean life time and its decaytable from the database
//
G4IsotopeProperty* GetIsotope(G4int index) const;
// Return the pointer of index-th isotope in the table
G4int GetVerboseLevel() const;
// get Verbose Level defined in G4ParticleTable
G4int Entries() const;
private:
G4IsotopeList fIsotopeList;
G4IsotopeNameList fIsotopeNameList;
static const G4double levelTolerance;
};
inline G4int G4RIsotopeTable::Entries() const
{return fIsotopeNameList.size();}
inline G4IsotopeProperty* G4RIsotopeTable::GetIsotope(G4int index) const
{
if ( (index >=0 ) && (index < Entries()) ){
return fIsotopeList[index];
} else {
return 0;
}
}
#endif
@@ -0,0 +1,283 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RadioactiveDecay_h
#define G4RadioactiveDecay_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4RadioactiveDecay.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4ios.hh"
#include "globals.hh"
#include "G4VRestDiscreteProcess.hh"
#include "G4ParticleChangeForRadDecay.hh"
#include "G4RadioactiveDecaymessenger.hh"
#include "G4NucleusLimits.hh"
#include "G4RadioactiveDecayRate.hh"
#include "G4RadioactiveDecayRateVector.hh"
#include "G4RIsotopeTable.hh"
#include <vector>
//class G4UserlimitsForRD;
////////////////////////////////////////////////////////////////////////////////
//
class G4RadioactiveDecaymessenger;
typedef std::vector<G4RadioactiveDecayRateVector> G4RadioactiveDecayRateTable;
typedef std::vector<G4RadioactiveDecayRate> G4RadioactiveDecayRates;
class G4RadioactiveDecay : public G4VRestDiscreteProcess
{
// class description
// Implementation of nuclear radioactive decay process.
// It simulates the decays of radioactive nuclei, which is submitted to RDM in the form
// of G4Ions. Half-liffe and decay schemes are hold in the Radioactivity database
// All decay products are submitted back to the particle tracking process through
// the G4ParticleChangeForRadDecay object.
// class description - end
public: // with description
G4RadioactiveDecay (const G4String& processName="RadioactiveDecay");
~G4RadioactiveDecay();
// constructor and destructor
//
G4bool IsApplicable(const G4ParticleDefinition &);
// Returns true if the specified isotope is
// 1) defined as "nucleus" and
// 2) it is within theNucleusLimit
//
G4bool IsLoaded (const G4ParticleDefinition &);
// Returns true if the decay table of the specified nuclei is ready.
//
void SelectAVolume(const G4String aVolume);
// Select a logical volume in which RDM applies.
//
void DeselectAVolume(const G4String aVolume);
// remove a logical volume from the RDM applied list
//
void SelectAllVolumes();
// Select all logical volumes for the application of RDM.
//
void DeselectAllVolumes();
// Remove all logical volumes from RDM applications.
//
void SetDecayBias (G4String filename);
// Sets the decay biasing scheme using the data in "filename"
//
void SetSourceTimeProfile (G4String filename) ;
// Sets source exposure function using histograms in "filename"
//
G4bool IsRateTableReady(const G4ParticleDefinition &);
// Returns true if the coefficient and decay time table for all the
// descendants of the specified isotope are ready.
//
// used in VR decay mode only
//
void AddDecayRateTable(const G4ParticleDefinition &);
// Calculates the coefficient and decay time table for all the descendants
// of the specified isotope. Adds the calculated table to the private data
// member "theDecayRateTableVector".
//
//
// used in VR decay mode only
//
void GetDecayRateTable(const G4ParticleDefinition &);
// Used to retrieve the coefficient and decay time table for all the
// descendants of the specified isotope from "theDecayRateTableVector"
// and place it in "theDecayRateTable".
//
//
// used in VR decay mode only
//
void SetDecayRate(G4int,G4int,G4double, G4int, std::vector<G4double>,
std::vector<G4double>);
// Sets "theDecayRate" with data supplied in the arguements.
//
// //
// used in VR decay mode only
//
G4DecayTable *LoadDecayTable (G4ParticleDefinition & theParentNucleus);
// Load the decay data of isotope theParentNucleus.
//
inline void SetVerboseLevel(G4int value) {verboseLevel = value;}
// Sets the VerboseLevel which controls duggering display.
//
inline G4int GetVerboseLevel() const {return verboseLevel;}
// Returns the VerboseLevel which controls level of debugging output.
//
inline void SetNucleusLimits(G4NucleusLimits theNucleusLimits1)
{theNucleusLimits = theNucleusLimits1 ;}
// Sets theNucleusLimits which specifies the range of isotopes
// the G4RadioactiveDecay applies.
//
inline G4NucleusLimits GetNucleusLimits() const
{return theNucleusLimits;}
// Returns theNucleusLimits which specifies the range of isotopes
// the G4RadioactiveDecay applies.
//
inline void SetAnalogueMonteCarlo (G4bool r ) { AnalogueMC = r; }
// Controls whether G4RadioactiveDecay runs in analogue mode or
// variance reduction mode.
inline void SetFBeta (G4bool r ) { FBeta = r; }
// Controls whether G4RadioactiveDecay uses fast beta simulation mode
//
inline G4bool IsAnalogueMonteCarlo () {return AnalogueMC;}
// Returns true if the simulation is an analogue Monte Carlo, and false if
// any of the biassing schemes have been selected.
//
inline void SetBRBias (G4bool r ) { BRBias = r;
SetAnalogueMonteCarlo(0);}
// Sets whether branching ration bias scheme applies.
//
inline void SetSplitNuclei (G4int r) { NSplit = r; SetAnalogueMonteCarlo(0); }
// Sets the N number for the Nuclei spliting bias scheme
//
inline G4int GetSplitNuclei () {return NSplit;}
// Returns the N number used for the Nuclei spliting bias scheme
//
public:
void BuildPhysicsTable(const G4ParticleDefinition &);
protected:
G4VParticleChange* DecayIt( const G4Track& theTrack,
const G4Step& theStep);
G4DecayProducts* DoDecay(G4ParticleDefinition& theParticleDef);
G4double GetMeanFreePath(const G4Track& theTrack,
G4double previousStepSize,
G4ForceCondition* condition);
G4double GetMeanLifeTime(const G4Track& theTrack,
G4ForceCondition* condition);
G4double GetTaoTime(G4double,G4double);
G4double GetDecayTime();
G4int GetDecayTimeBin(const G4double aDecayTime);
private:
G4RadioactiveDecay(const G4RadioactiveDecay &right);
G4RadioactiveDecay & operator=(const G4RadioactiveDecay &right);
private:
G4RadioactiveDecaymessenger *theRadioactiveDecaymessenger;
G4PhysicsTable *aPhysicsTable;
G4RIsotopeTable *theIsotopeTable;
G4NucleusLimits theNucleusLimits;
const G4double HighestBinValue;
const G4double LowestBinValue;
const G4int TotBin;
G4bool AnalogueMC;
G4bool BRBias;
G4bool FBeta;
G4int NSplit;
G4int NSourceBin;
G4double SBin[99];
G4double SProfile[99];
G4int NDecayBin;
G4double DBin[99];
G4double DProfile[99];
std::vector<G4String> LoadedNuclei;
std::vector<G4String> ValidVolumes;
G4RadioactiveDecayRate theDecayRate;
G4RadioactiveDecayRates theDecayRateVector;
G4RadioactiveDecayRateVector theDecayRateTable;
G4RadioactiveDecayRateTable theDecayRateTableVector;
static const G4double levelTolerance;
// Remainder of life time at rest
G4double fRemainderLifeTime;
G4int verboseLevel;
// ParticleChange for decay process
G4ParticleChangeForRadDecay fParticleChangeForRadDecay;
inline G4double AtRestGetPhysicalInteractionLengt
(const G4Track& track, G4ForceCondition* condition)
{fRemainderLifeTime = G4VRestDiscreteProcess::
AtRestGetPhysicalInteractionLength(track, condition );
return fRemainderLifeTime;}
inline G4VParticleChange* AtRestDoIt
(const G4Track& theTrack, const G4Step& theStep)
{return DecayIt(theTrack, theStep);}
inline G4VParticleChange* PostStepDoIt
(const G4Track& theTrack, const G4Step& theStep)
{return DecayIt(theTrack, theStep);}
};
#endif
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RadioactiveDecayMode_h
#define G4RadioactiveDecayMode_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: RadioactiveDecayMode.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// DESCRIPTION
// -----------
//
// Identifies a type G4RadioactiveDecayMode to assign a specific decay mode
// description to decay channels.
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "globals.hh"
////////////////////////////////////////////////////////////////////////////////
//
enum G4RadioactiveDecayMode
{ERROR=-1, IT=0, BetaMinus=1, BetaPlus=2, KshellEC=3, LshellEC=4, MshellEC=5, Alpha=6};
std::istream &operator >> (std::istream &s, G4RadioactiveDecayMode &q);
////////////////////////////////////////////////////////////////////////////////
#endif
@@ -0,0 +1,131 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RadioactiveDecayRate_h
#define G4RadioactiveDecayRate_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: RadioactiveDecayRate.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4ios.hh"
#include "globals.hh"
#include <vector>
////////////////////////////////////////////////////////////////////////////////
//
class G4RadioactiveDecayRate
{
// class description
// This class contains the coefficient and decay times of the
// progeny of a give isotope (A,Z,E).
//
// class description - end
public:
// Constructors
G4RadioactiveDecayRate();
// Destructor
virtual ~G4RadioactiveDecayRate();
public:
// copy constructor and assignment operator
G4RadioactiveDecayRate(const G4RadioactiveDecayRate &);
G4RadioactiveDecayRate & operator=(const G4RadioactiveDecayRate &);
public:
// equality operators
G4int operator==(const G4RadioactiveDecayRate &right) const
{return (this == &right);};
G4int operator!=(const G4RadioactiveDecayRate &right) const
{return (this != &right);};
// less-than operator is defined for G4DecayTable
// G4int operator<(const G4RadioactiveDecayRate &right) const;
public: // with description
//
// the inline member functions are self explanatory.
//
inline G4int GetZ() const {return Z;}
inline G4int GetA() const { return A;}
inline G4double GetE() const { return E;}
inline G4int GetGeneration() const { return generation;}
inline std::vector<G4double> GetDecayRateC() const
{ return decayRateC; }
inline std::vector<G4double> GetTaos() const { return taos; }
inline void SetZ(G4int value) {Z = value;}
inline void SetA(G4int value) {A = value;}
inline void SetE(G4double value) {E = value;}
inline void SetGeneration(G4int value) {generation = value;}
inline void SetDecayRateC(std::vector<G4double> value)
{decayRateC = value;}
inline void SetTaos(std::vector<G4double> value) {taos = value;}
protected:
G4int Z;
G4int A;
G4double E;
G4int generation;
std::vector<G4double> decayRateC;
std::vector<G4double> taos;
public:
inline void SetVerboseLevel(G4int value)
{ verboseLevel = value; }
inline G4int GetVerboseLevel() const
{ return verboseLevel; }
void DumpInfo();
private:
G4int verboseLevel;
// control flag for output message
// G4int verboseLevel;
// 0: Silent
// 1: Warning message
// 2: More
};
#endif
@@ -0,0 +1,110 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RadioactiveDecayRateVector_h
#define G4RadioactiveDecayRateVector_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: RadioactiveDecayRateVector.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4ios.hh"
#include "globals.hh"
#include "G4RadioactiveDecayRate.hh"
#include <vector>
////////////////////////////////////////////////////////////////////////////////
//
class G4RadioactiveDecayRateVector
{
// class description
// This class contains the decay times and coefficients for calculating
// all the descendants of the named isotope. These data can be used to
// calculate their radioactivity at any given time
// class description - end
public:
typedef std::vector<G4RadioactiveDecayRate> G4RadioactiveDecayRates;
public:
//Constructors
G4RadioactiveDecayRateVector();
// Destructor
virtual ~G4RadioactiveDecayRateVector();
public:
// copy constructor and assignment operatotr
G4RadioactiveDecayRateVector(const G4RadioactiveDecayRateVector &);
G4RadioactiveDecayRateVector
& operator=(const G4RadioactiveDecayRateVector &);
public:
// equality operators
G4int operator==(const G4RadioactiveDecayRateVector &right) const
{return (this == &right);}
G4int operator!=(const G4RadioactiveDecayRateVector &right) const
{return (this != &right);}
public: // with description
inline G4String GetIonName() const {return ionName;}
//
// To retrieve the name of the isotope.
inline G4RadioactiveDecayRates GetItsRates() const {return itsRates; }
//
// To retrieve the coefficients and decays of all its descendants along the
// decay chain.
inline void SetIonName(G4String name) {ionName = name;}
//
// To set the name of the isotope.
inline void SetItsRates(G4RadioactiveDecayRates arate) {itsRates = arate;}
//
// To fill the coefficient and decay time table
protected:
G4String ionName;
G4RadioactiveDecayRates itsRates;
};
#endif
@@ -0,0 +1,109 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4RadioactiveDecaymessenger_h
#define G4RadioactiveDecaymessenger_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: RadioactiveDecaymessenger.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4UImessenger.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
#include "G4UIcmdWith3Vector.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "globals.hh"
#include "G4RadioactiveDecay.hh"
#include "G4UIcmdWithNucleusLimits.hh"
class G4RadioactiveDecay;
////////////////////////////////////////////////////////////////////////////////
//
class G4RadioactiveDecaymessenger: public G4UImessenger
{
// class description
// The G4RadioactiveDecaymessenger is instantiated by the G4RadioactiveDecay
// process and introduces into the UI menu commands to control the running
// of G4RadioactiveDecay
public: //with description
G4RadioactiveDecaymessenger (G4RadioactiveDecay*
theRadioactiveDecayContainer);
// Constructor introduces commands into the UI menu to control
// G4RadioactiveDecay. theRadioactiveDecayContainer1 is used to identify
// to this class (when instatiated) the associated G4RadioactiveDecay
// process whose parameters are going to be changed as a result
// of the UI commands.
~G4RadioactiveDecaymessenger ();
// Destructor deletes G4UIdirectory and G4UIcommand objects.
//
void SetNewValue (G4UIcommand *command, G4String newValues);
// Identifies the command which has been invoked by the user, extracts the
// parameters associated with that command (held in newValues, and uses
// these values with the appropriate member function of G4RadioactiveDecay.
//
private:
G4RadioactiveDecay *theRadioactiveDecayContainer;
G4UIdirectory *grdmDirectory;
G4UIcmdWithNucleusLimits *nucleuslimitsCmd;
G4UIcmdWithAString *sourcetimeprofileCmd;
G4UIcmdWithAString *decaybiasprofileCmd;
G4UIcmdWithABool *analoguemcCmd;
G4UIcmdWithABool *fbetaCmd;
G4UIcmdWithABool *brbiasCmd;
G4UIcmdWithAnInteger *splitnucleiCmd;
G4UIcmdWithAnInteger *verboseCmd;
G4UIcmdWithAString *avolumeCmd;
G4UIcmdWithAString *deavolumeCmd;
G4UIcmdWithoutParameter *allvolumesCmd;
G4UIcmdWithoutParameter *deallvolumesCmd;
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4UIcmdWithNucleusLimits_h
#define G4UIcmdWithNucleusLimits_h 1
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// MODULE: G4UIcmdWithNucleusAndUnit.hh
//
// Version: 0.b.4
// Date: 14/04/00
// Author: F Lei & P R Truscott
// Organisation: DERA UK
// Customer: ESA/ESTEC, NOORDWIJK
// Contract: 12115/96/JG/NL Work Order No. 3
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// Class Description
//
// The G4UIcmdWithNucleusLimits permits input of the range of nuclides
// that will be treated in the G4RadioactiveDecay Class. Input is expected in
// the form:
//
// AMin AMax ZMin ZMax
//
// where AMin, AMax, ZMin, ZMax are respectively the upper and lower limits
// in A (atomic mass), and the upper and lower limits in Z (atomic number)
// which define the range of nuclides treated by the G4RadioactiveDecay.
//
// Class Description - end:
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// CHANGE HISTORY
// --------------
//
// 29 February 2000, P R Truscott, DERA UK
// 0.b.3 release.
//
//
// 13 April 2000, F Lei, DERA UK
// 0.b.4 release. No change to this file
//
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
////////////////////////////////////////////////////////////////////////////////
//
#include "G4UIcommand.hh"
#include "globals.hh"
#include "G4NucleusLimits.hh"
////////////////////////////////////////////////////////////////////////////////
//
class G4UIcmdWithNucleusLimits : public G4UIcommand
{
public: // With description
G4UIcmdWithNucleusLimits
(const char * theCommandPath,G4UImessenger * theMessenger);
// Constructor identifying the command path in the User Interface and the
// associated G4UImessenger which will use this G4UIcommand object.
//
~G4UIcmdWithNucleusLimits();
// Destructor
//
G4NucleusLimits GetNewNucleusLimitsValue(G4String paramString);
// Extracts the values aMin, aMax, zMin, zMax from paramString.
// Values returned have aMin, aMax, zMin, and zMax (within the
// G4NucleusLimits variable).
G4String ConvertToString(G4NucleusLimits nuclimit);
// Converts the G4NucleusLimits defined by vec into a G4String.
void SetParameterName(const char * theNameAMin,const char * theNameAMax,
const char * theNameZMin, const char * theNameZMax,
G4bool omittable, G4bool currentAsDefault=true);
// Identifies the parameter names associated with each of the G4doubles
// used to define the G4NucleusLimits variable.
void SetDefaultValue(G4NucleusLimits defVal);
// Sets the default G4NucleusLimits if the command is invoked without any
// parameters.
};
////////////////////////////////////////////////////////////////////////////////
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef G4UserLimitsForRD_h
#define G4UserLimitsForRD_h 1
#include "globals.hh"
#include "G4UserLimits.hh"
class G4Track;
////////////////////////////////////////////////////////////////////////////////
//
class G4UserLimitsForRD : public G4UserLimits
{
// class description
//
// Derived class from G4UserLimits. It is specific for
// RDM to select and deselect volumes in which RDM is applied
//
// class description - end
public:
G4UserLimitsForRD ( const G4String aType="RD") :
G4UserLimits (aType)
{
#ifdef G4VERBOSE
if (GetVerboseLevel()>1)
G4cerr <<"G4UserLimitsForRD constructor" <<endl;
#endif
}
~G4UserLimitsForRD () {;}
// G4bool IsRDActive(const G4Track&);
};
#endif