Import Geant4 9.4.0 source tree
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4hadronic_util
|
||||
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_util
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 19:08:31 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -14,6 +14,19 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
11 Nov 2010 Dennis Wright (hadr-util-V09-03-01)
|
||||
-------------------------------------------------------------
|
||||
- G4HadronicWhiteBoard: fix uninitialized ptrs (theProjectile, theDef,
|
||||
theName)
|
||||
- G4Nucleus: add dtaBlackTrackEnergyfromAnnihilation and
|
||||
pnBlackTrackEnergyfromAnnihilation to copy ctor
|
||||
initialize theA, theZ. aEff, zEff to 0 in ctor
|
||||
|
||||
08 Mar 2010 G.Folger (hadr-util-V09-03-00)
|
||||
-------------------------------------------------------------
|
||||
- add interface for integer A&Z to G4Nucleus, and modify G4HadronicWhiteBoard
|
||||
G4LightMedia, and G4ReactionDynamics to use the new interface.
|
||||
|
||||
06 Mar 2009 D.H. Wright for Tatsumi Koi (hadr-util-V09-02-00)
|
||||
-------------------------------------------------------------
|
||||
- G4StableIsotopes.cc - fill in missing isotope names
|
||||
|
||||
@@ -34,45 +34,45 @@
|
||||
class G4HadronicWhiteBoard
|
||||
{
|
||||
public:
|
||||
G4HadronicWhiteBoard(){}
|
||||
G4HadronicWhiteBoard();
|
||||
|
||||
static G4HadronicWhiteBoard & Instance();
|
||||
static G4HadronicWhiteBoard& Instance();
|
||||
|
||||
void SetProjectile(const G4HadProjectile & aProjectile);
|
||||
void SetProjectile(const G4HadProjectile& aProjectile);
|
||||
|
||||
void SetTargetNucleus(const G4Nucleus & aTarget);
|
||||
void SetTargetNucleus(const G4Nucleus& aTarget);
|
||||
|
||||
void SetProcessName(const G4String& aProcessName);
|
||||
|
||||
void SetModelName(const G4String& aModelName);
|
||||
|
||||
const G4HadProjectile * GetProjectile();
|
||||
const G4Nucleus & GetTargetNucleus();
|
||||
G4ParticleDefinition * GetPDef();
|
||||
const G4HadProjectile* GetProjectile();
|
||||
const G4Nucleus& GetTargetNucleus();
|
||||
G4ParticleDefinition* GetPDef();
|
||||
G4String GetParticleName();
|
||||
G4double GetEnergy();
|
||||
G4double GetPx();
|
||||
G4double GetPy();
|
||||
G4double GetPz();
|
||||
G4double GetA();
|
||||
G4double GetZ();
|
||||
G4int GetA();
|
||||
G4int GetZ();
|
||||
|
||||
void Dump();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4HadProjectile * theProjectile;
|
||||
G4ParticleDefinition * theDef;
|
||||
char * theName;
|
||||
G4HadProjectile* theProjectile;
|
||||
G4ParticleDefinition* theDef;
|
||||
char* theName;
|
||||
G4double theE;
|
||||
G4double thePx;
|
||||
G4double thePy;
|
||||
G4double thePz;
|
||||
|
||||
G4Nucleus theTarget;
|
||||
G4double theA;
|
||||
G4double theZ;
|
||||
G4int theA;
|
||||
G4int theZ;
|
||||
|
||||
G4String theProcessName;
|
||||
G4String theModelName;
|
||||
|
||||
@@ -29,8 +29,9 @@
|
||||
// modified by J.L. Chuma, TRIUMF, 19-Nov-1996
|
||||
// last modified: 27-Mar-1997
|
||||
// Chr. Volcker, 10-Nov-1997: new methods and class variables.
|
||||
// M.G. Pia, 2 Oct 1998: modified GetFermiMomentum (original design was
|
||||
// the source of memory leaks)
|
||||
// M.G. Pia, 2 Oct 1998: modified GetFermiMomentum (original design was
|
||||
// the source of memory leaks)
|
||||
// G.Folger, spring 2010: add integer A/Z interface
|
||||
|
||||
#ifndef G4Nucleus_h
|
||||
#define G4Nucleus_h 1
|
||||
@@ -56,6 +57,8 @@
|
||||
|
||||
G4Nucleus( const G4double A, const G4double Z );
|
||||
|
||||
G4Nucleus( const G4int A, const G4int Z );
|
||||
|
||||
G4Nucleus( const G4Material *aMaterial );
|
||||
|
||||
~G4Nucleus();
|
||||
@@ -67,10 +70,16 @@
|
||||
{
|
||||
if( this != &right )
|
||||
{
|
||||
theA=right.theA;
|
||||
theZ=right.theZ;
|
||||
aEff=right.aEff;
|
||||
zEff=right.zEff;
|
||||
pnBlackTrackEnergy=right.pnBlackTrackEnergy;
|
||||
dtaBlackTrackEnergy=right.dtaBlackTrackEnergy;
|
||||
dtaBlackTrackEnergy=right.dtaBlackTrackEnergy;
|
||||
pnBlackTrackEnergyfromAnnihilation =
|
||||
right.pnBlackTrackEnergyfromAnnihilation;
|
||||
dtaBlackTrackEnergyfromAnnihilation =
|
||||
right.dtaBlackTrackEnergyfromAnnihilation;
|
||||
theTemp = right.theTemp;
|
||||
excitationEnergy = right.excitationEnergy;
|
||||
momentum = right.momentum;
|
||||
@@ -88,16 +97,30 @@
|
||||
void ChooseParameters( const G4Material *aMaterial );
|
||||
|
||||
void SetParameters( const G4double A, const G4double Z );
|
||||
void SetParameters( const G4int A, const G4int Z );
|
||||
|
||||
//deprecated Jan 2010, GF
|
||||
inline G4double GetN() const
|
||||
{ return aEff; }
|
||||
|
||||
inline G4double GetZ() const
|
||||
{ return zEff; }
|
||||
|
||||
//to be replaced by new
|
||||
inline G4int GetA_asInt() const
|
||||
{ return theA; }
|
||||
|
||||
inline G4int GetN_asInt() const
|
||||
{ return theA-theZ; }
|
||||
|
||||
inline G4int GetZ_asInt() const
|
||||
{ return theZ; }
|
||||
//... \GF
|
||||
|
||||
G4DynamicParticle *ReturnTargetParticle() const;
|
||||
|
||||
G4double AtomicMass( const G4double A, const G4double Z ) const;
|
||||
G4double AtomicMass( const G4int A, const G4int Z ) const;
|
||||
|
||||
G4double GetThermalPz( const G4double mass, const G4double temp ) const;
|
||||
|
||||
@@ -154,6 +177,8 @@
|
||||
|
||||
private:
|
||||
|
||||
G4int theA;
|
||||
G4int theZ;
|
||||
G4double aEff; // effective atomic weight
|
||||
G4double zEff; // effective atomic number
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4hadronic_util
|
||||
# Package: Geant4.src.G4processes.G4hadronic.G4hadronic_util
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.2 2010/11/29 17:58:56 bmorgan Exp $
|
||||
# GEANT4 Tag $Name: geant4-09-04 $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/bosons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/barions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/ions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/mesons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/leptons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4hadronic_util
|
||||
HEADERS
|
||||
DumpFrame.hh
|
||||
G4Bessel.hh
|
||||
G4Delete.hh
|
||||
G4DynamicParticleVector.hh
|
||||
G4GHEKinematicsVector.hh
|
||||
G4HadFinalState.hh
|
||||
G4HadParticleCodes.hh
|
||||
G4HadProjectile.hh
|
||||
G4HadReentrentException.hh
|
||||
G4HadSecondary.hh
|
||||
G4HadSignalHandler.hh
|
||||
G4HadTmpUtil.hh
|
||||
G4HadronicException.hh
|
||||
G4HadronicWhiteBoard.hh
|
||||
G4IsoResult.hh
|
||||
G4LightMedia.hh
|
||||
G4Nucleus.hh
|
||||
G4Pair.hh
|
||||
G4ReactionDynamics.hh
|
||||
G4ReactionKinematics.hh
|
||||
G4ReactionProduct.hh
|
||||
G4ReactionProductVector.hh
|
||||
G4StableIsotopes.hh
|
||||
G4ping.hh
|
||||
SOURCES
|
||||
G4Bessel.cc
|
||||
G4HadFinalState.cc
|
||||
G4HadProjectile.cc
|
||||
G4HadSecondary.cc
|
||||
G4HadSignalHandler.cc
|
||||
G4HadTmpUtil.cc
|
||||
G4HadronicWhiteBoard.cc
|
||||
G4IsoResult.cc
|
||||
G4LightMedia.cc
|
||||
G4Nucleus.cc
|
||||
G4ReactionDynamics.cc
|
||||
G4ReactionKinematics.cc
|
||||
G4ReactionProduct.cc
|
||||
G4StableIsotopes.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4ions
|
||||
G4leptons
|
||||
G4materials
|
||||
G4mesons
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -26,6 +26,11 @@
|
||||
#include "G4HadronicWhiteBoard.hh"
|
||||
|
||||
|
||||
G4HadronicWhiteBoard::G4HadronicWhiteBoard()
|
||||
: theProjectile(0), theDef(0), theName(0)
|
||||
{}
|
||||
|
||||
|
||||
G4HadronicWhiteBoard & G4HadronicWhiteBoard::Instance()
|
||||
{
|
||||
static G4HadronicWhiteBoard theInstance;
|
||||
@@ -48,8 +53,8 @@ G4double G4HadronicWhiteBoard::GetEnergy() {return theE;}
|
||||
G4double G4HadronicWhiteBoard::GetPx(){return thePx;}
|
||||
G4double G4HadronicWhiteBoard::GetPy(){return thePy;}
|
||||
G4double G4HadronicWhiteBoard::GetPz(){return thePz;}
|
||||
G4double G4HadronicWhiteBoard::GetA(){return theA;}
|
||||
G4double G4HadronicWhiteBoard::GetZ(){return theZ;}
|
||||
G4int G4HadronicWhiteBoard::GetA(){return theA;}
|
||||
G4int G4HadronicWhiteBoard::GetZ(){return theZ;}
|
||||
|
||||
|
||||
void G4HadronicWhiteBoard::SetProjectile(const G4HadProjectile & aProjectile)
|
||||
@@ -67,8 +72,8 @@ void G4HadronicWhiteBoard::SetProjectile(const G4HadProjectile & aProjectile)
|
||||
void G4HadronicWhiteBoard::SetTargetNucleus(const G4Nucleus & aTarget)
|
||||
{
|
||||
theTarget = aTarget;
|
||||
theA = theTarget.GetN();
|
||||
theZ = theTarget.GetZ();
|
||||
theA = theTarget.GetA_asInt();
|
||||
theZ = theTarget.GetZ_asInt();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
G4ParticleDefinition* aNeutron = G4Neutron::Neutron();
|
||||
G4ParticleDefinition* aPiZero = G4PionZero::PionZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
G4ParticleDefinition* aKaonZS = G4KaonZeroShort::KaonZeroShort();
|
||||
G4ParticleDefinition* aKaonZL = G4KaonZeroLong::KaonZeroLong();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
G4ParticleDefinition* aKaonPlus = G4KaonPlus::KaonPlus();
|
||||
G4ParticleDefinition* aKaonZL = G4KaonZeroLong::KaonZeroLong();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
{
|
||||
G4ParticleDefinition* aNeutron = G4Neutron::Neutron();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
G4ParticleDefinition* aProton = G4Proton::Proton();
|
||||
G4ParticleDefinition* anAntiNeutron = G4AntiNeutron::AntiNeutron();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
{
|
||||
G4ParticleDefinition* aProton = G4Proton::Proton();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
G4ParticleDefinition* aNeutron = G4Neutron::Neutron();
|
||||
G4ParticleDefinition* anAntiProton = G4AntiProton::AntiProton();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus();
|
||||
G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -363,7 +363,7 @@
|
||||
G4ParticleDefinition* anAntiSigmaMinus = G4AntiSigmaMinus::AntiSigmaMinus();
|
||||
G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -442,7 +442,7 @@
|
||||
G4ParticleDefinition* aLambda = G4Lambda::Lambda();
|
||||
G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -504,7 +504,7 @@
|
||||
G4ParticleDefinition* aLambda = G4Lambda::Lambda();
|
||||
G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -566,7 +566,7 @@
|
||||
G4ParticleDefinition* anAntiLambda = G4AntiLambda::AntiLambda();
|
||||
G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -625,7 +625,7 @@
|
||||
G4ParticleDefinition* anAntiLambda = G4AntiLambda::AntiLambda();
|
||||
G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -688,7 +688,7 @@
|
||||
G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus();
|
||||
G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -772,7 +772,7 @@
|
||||
G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus();
|
||||
G4ParticleDefinition* aXiZero = G4XiZero::XiZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -861,7 +861,7 @@
|
||||
G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus();
|
||||
G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -949,7 +949,7 @@
|
||||
G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus();
|
||||
G4ParticleDefinition* aXiZero = G4XiZero::XiZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -1035,7 +1035,7 @@
|
||||
G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus();
|
||||
G4ParticleDefinition* aXiZero = G4XiZero::XiZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
@@ -1136,7 +1136,7 @@
|
||||
G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus();
|
||||
G4ParticleDefinition* aXiZero = G4XiZero::XiZero();
|
||||
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle();
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
// Chr. Volcker, 10-Nov-1997: new methods and class variables.
|
||||
// HPW added utilities for low energy neutron transport. (12.04.1998)
|
||||
// M.G. Pia, 2 Oct 1998: modified GetFermiMomentum to avoid memory leaks
|
||||
// G.Folger, spring 2010: add integer A/Z interface
|
||||
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4NucleiProperties.hh"
|
||||
@@ -44,6 +45,7 @@
|
||||
#include "G4HadronicException.hh"
|
||||
|
||||
G4Nucleus::G4Nucleus()
|
||||
: theA(0), theZ(0), aEff(0.0), zEff(0)
|
||||
{
|
||||
pnBlackTrackEnergy = 0.0;
|
||||
dtaBlackTrackEnergy = 0.0;
|
||||
@@ -68,6 +70,19 @@ G4Nucleus::G4Nucleus( const G4double A, const G4double Z )
|
||||
theTemp = 293.16*kelvin;
|
||||
}
|
||||
|
||||
G4Nucleus::G4Nucleus( const G4int A, const G4int Z )
|
||||
{
|
||||
SetParameters( A, Z );
|
||||
pnBlackTrackEnergy = 0.0;
|
||||
dtaBlackTrackEnergy = 0.0;
|
||||
pnBlackTrackEnergyfromAnnihilation = 0.0;
|
||||
dtaBlackTrackEnergyfromAnnihilation = 0.0;
|
||||
excitationEnergy = 0.0;
|
||||
momentum = G4ThreeVector(0.,0.,0.);
|
||||
fermiMomentum = 1.52*hbarc/fermi;
|
||||
theTemp = 293.16*kelvin;
|
||||
}
|
||||
|
||||
G4Nucleus::G4Nucleus( const G4Material *aMaterial )
|
||||
{
|
||||
ChooseParameters( aMaterial );
|
||||
@@ -135,31 +150,59 @@ G4ReactionProduct G4Nucleus::GetThermalNucleus(G4double targetMass, G4double tem
|
||||
G4Nucleus::ChooseParameters( const G4Material *aMaterial )
|
||||
{
|
||||
G4double random = G4UniformRand();
|
||||
G4double sum = 0;
|
||||
G4double sum = aMaterial->GetTotNbOfAtomsPerVolume();
|
||||
const G4ElementVector *theElementVector = aMaterial->GetElementVector();
|
||||
unsigned int i;
|
||||
for(i=0; i<aMaterial->GetNumberOfElements(); ++i )
|
||||
G4double running(0);
|
||||
G4Element* element(0);
|
||||
for(unsigned int i=0; i<aMaterial->GetNumberOfElements(); ++i )
|
||||
{
|
||||
sum += aMaterial->GetAtomicNumDensityVector()[i];
|
||||
}
|
||||
G4double running = 0;
|
||||
for(i=0; i<aMaterial->GetNumberOfElements(); ++i )
|
||||
{
|
||||
running += aMaterial->GetAtomicNumDensityVector()[i];
|
||||
if( running/sum > random ) {
|
||||
aEff = (*theElementVector)[i]->GetA()*mole/g;
|
||||
zEff = (*theElementVector)[i]->GetZ();
|
||||
running += aMaterial->GetVecNbOfAtomsPerVolume()[i];
|
||||
if( running > random*sum ) {
|
||||
element=(*theElementVector)[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( element->GetNumberOfIsotopes() > 0 ) {
|
||||
G4double randomAbundance = G4UniformRand();
|
||||
G4double sumAbundance = element->GetRelativeAbundanceVector()[0];
|
||||
unsigned int iso=0;
|
||||
while ( iso < element->GetNumberOfIsotopes() &&
|
||||
sumAbundance < randomAbundance ) {
|
||||
++iso;
|
||||
sumAbundance += element->GetRelativeAbundanceVector()[iso];
|
||||
}
|
||||
theA=element->GetIsotope(iso)->GetN();
|
||||
theZ=element->GetIsotope(iso)->GetZ();
|
||||
aEff=theA;
|
||||
zEff=theZ;
|
||||
} else {
|
||||
aEff = element->GetN();
|
||||
zEff = element->GetZ();
|
||||
theZ = G4int(zEff + 0.5);
|
||||
theA = G4int(aEff + 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
G4Nucleus::SetParameters( const G4double A, const G4double Z )
|
||||
{
|
||||
G4int myZ = G4int(Z + 0.5);
|
||||
G4int myA = G4int(A + 0.5);
|
||||
if( myA<1 || myZ<0 || myZ>myA )
|
||||
theZ = G4int(Z + 0.5);
|
||||
theA = G4int(A + 0.5);
|
||||
if( theA<1 || theZ<0 || theZ>theA )
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__,
|
||||
"G4Nucleus::SetParameters called with non-physical parameters");
|
||||
}
|
||||
aEff = A; // atomic weight
|
||||
zEff = Z; // atomic number
|
||||
}
|
||||
|
||||
void
|
||||
G4Nucleus::SetParameters( const G4int A, const G4int Z )
|
||||
{
|
||||
theZ = Z;
|
||||
theA = A;
|
||||
if( theA<1 || theZ<0 || theZ>theA )
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__,
|
||||
"G4Nucleus::SetParameters called with non-physical parameters");
|
||||
@@ -188,6 +231,13 @@ G4ReactionProduct G4Nucleus::GetThermalNucleus(G4double targetMass, G4double tem
|
||||
return G4NucleiProperties::GetNuclearMass(A, Z);
|
||||
}
|
||||
|
||||
G4double
|
||||
G4Nucleus::AtomicMass( const G4int A, const G4int Z ) const
|
||||
{
|
||||
// Now returns (atomic mass - electron masses)
|
||||
return G4NucleiProperties::GetNuclearMass(A, Z);
|
||||
}
|
||||
|
||||
G4double
|
||||
G4Nucleus::GetThermalPz( const G4double mass, const G4double temp ) const
|
||||
{
|
||||
|
||||
@@ -183,8 +183,8 @@
|
||||
currentParticle.SetMomentum( m );
|
||||
veryForward = true;
|
||||
}
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
const G4double protonMass = aProton->GetPDGMass()/MeV;
|
||||
|
||||
if (originalIncident->GetDefinition()->GetParticleSubType() == "kaon"
|
||||
@@ -1123,9 +1123,9 @@
|
||||
numberofFinalStateNucleons = std::max(1, numberofFinalStateNucleons);
|
||||
|
||||
G4int PinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetZ()) - protonsInFinalState);
|
||||
targetNucleus.GetZ_asInt() - protonsInFinalState);
|
||||
G4int NinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState);
|
||||
targetNucleus.GetN_asInt() - neutronsInFinalState);
|
||||
|
||||
pseudoParticle[3].SetMomentum( 0.0, 0.0, pOriginal*GeV );
|
||||
pseudoParticle[3].SetMass( mOriginal*GeV );
|
||||
@@ -1355,8 +1355,8 @@
|
||||
G4double eAvailable = cmEnergy - mOriginal - targetMass;
|
||||
for (G4int i = 0; i < vecLen; i++) eAvailable -= vec[i]->GetMass()/GeV;
|
||||
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
const G4double pOriginal = modifiedOriginal.GetTotalMomentum()/GeV;
|
||||
|
||||
G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus();
|
||||
@@ -1501,8 +1501,8 @@
|
||||
veryForward = true;
|
||||
}
|
||||
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
//
|
||||
// particles have been distributed in forward and backward hemispheres
|
||||
// in center of mass system of the hadron nucleon interaction
|
||||
@@ -2032,9 +2032,9 @@
|
||||
numberofFinalStateNucleons = std::max(1, numberofFinalStateNucleons);
|
||||
|
||||
G4int PinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetZ()) - protonsInFinalState);
|
||||
targetNucleus.GetZ_asInt() - protonsInFinalState);
|
||||
G4int NinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState);
|
||||
targetNucleus.GetN_asInt() - neutronsInFinalState);
|
||||
//
|
||||
// for various reasons, the energy balance is not sufficient,
|
||||
// check that, energy balance, angle of final system, etc.
|
||||
@@ -2269,7 +2269,7 @@
|
||||
G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV;
|
||||
|
||||
targetMass = targetParticle.GetMass()/GeV;
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
|
||||
G4double etCurrent = currentParticle.GetTotalEnergy()/GeV;
|
||||
G4double pCurrent = currentParticle.GetTotalMomentum()/GeV;
|
||||
@@ -2429,9 +2429,9 @@
|
||||
G4int neutronsInFinalState = finalStateNucleons.second;
|
||||
|
||||
G4int PinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetZ()) - protonsInFinalState);
|
||||
targetNucleus.GetZ_asInt() - protonsInFinalState);
|
||||
G4int NinNucleus = std::max(0,
|
||||
G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState);
|
||||
targetNucleus.GetN_asInt() - neutronsInFinalState);
|
||||
|
||||
// DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen);
|
||||
if( atomicWeight >= 1.5 )
|
||||
@@ -2819,7 +2819,7 @@
|
||||
// Rotate in direction of z-axis, this does disturb in some way our
|
||||
// inclusive distributions, but it is necessary for momentum conservation
|
||||
//
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
const G4double logWeight = std::log(atomicWeight);
|
||||
|
||||
G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus();
|
||||
@@ -3095,8 +3095,8 @@
|
||||
G4ParticleDefinition *anAlpha = G4Alpha::Alpha();
|
||||
|
||||
const G4double ekOriginal = modifiedOriginal.GetKineticEnergy()/MeV;
|
||||
const G4double atomicWeight = targetNucleus.GetN();
|
||||
const G4double atomicNumber = targetNucleus.GetZ();
|
||||
const G4double atomicWeight = G4double(targetNucleus.GetA_asInt());
|
||||
const G4double atomicNumber = G4double(targetNucleus.GetZ_asInt());
|
||||
|
||||
const G4double ika1 = 3.6;
|
||||
const G4double ika2 = 35.56;
|
||||
@@ -3835,7 +3835,7 @@
|
||||
|
||||
if( currentParticle.GetDefinition() == aNeutron )
|
||||
{
|
||||
const G4double A = targetNucleus.GetN(); // atomic weight
|
||||
const G4double A = G4double(targetNucleus.GetA_asInt()); // atomic weight
|
||||
if( G4UniformRand() > ((A-1.0)/230.0)*((A-1.0)/230.0) )
|
||||
qval[0] = 0.0;
|
||||
if( G4UniformRand() >= currentKinetic/7.9254*A )
|
||||
|
||||
Reference in New Issue
Block a user