#include <G4NeutronField.hh>
Inheritance diagram for G4NeutronField:
Public Member Functions | |
G4NeutronField (G4V3DNucleus *nucleus) | |
virtual | ~G4NeutronField () |
virtual G4double | GetField (const G4ThreeVector &aPosition) |
virtual G4double | GetBarrier () |
Definition at line 48 of file G4NeutronField.hh.
G4NeutronField::G4NeutronField | ( | G4V3DNucleus * | nucleus | ) |
Definition at line 45 of file G4NeutronField.cc.
References G4V3DNucleus::GetCharge(), G4V3DNucleus::GetMassNumber(), G4V3DNucleus::GetOuterRadius(), G4FermiMomentum::Init(), and G4VNuclearField::theNucleus.
00045 : 00046 G4VNuclearField(aNucleus), theDensity(theNucleus->GetNuclearDensity()) 00047 { 00048 theA = theNucleus->GetMassNumber(); 00049 theZ = theNucleus->GetCharge(); 00050 theFermi.Init(theA, theZ); 00051 theR = 2.*theNucleus->GetOuterRadius(); 00052 G4double aR=0; 00053 while(aR<theR) 00054 { 00055 G4ThreeVector aPosition(0,0,aR); 00056 G4double density = GetDensity(aPosition); 00057 G4double fermiMom = GetFermiMomentum(density); 00058 theFermiMomBuffer.push_back(fermiMom); 00059 aR+=0.3*fermi; 00060 } 00061 { 00062 G4ThreeVector aPosition(0,0,theR); 00063 G4double density = GetDensity(aPosition); 00064 G4double fermiMom = GetFermiMomentum(density); 00065 theFermiMomBuffer.push_back(fermiMom); 00066 } 00067 { 00068 G4ThreeVector aPosition(0,0,theR+0.001*fermi); 00069 theFermiMomBuffer.push_back(0); 00070 } 00071 { 00072 G4ThreeVector aPosition(0,0,1.*m); 00073 theFermiMomBuffer.push_back(0); 00074 } 00075 }
G4NeutronField::~G4NeutronField | ( | ) | [virtual] |
G4double G4NeutronField::GetBarrier | ( | ) | [virtual] |
Implements G4VNuclearField.
Definition at line 93 of file G4NeutronField.cc.
00094 { 00095 /* 00096 * G4double A = theNucleus->GetMassNumber(); 00097 * G4double Z = theNucleus->GetCharge(); 00098 * 00099 * return G4NucleiPropertiesTable::GetBindingEnergy(Z, A)/A; 00100 */ 00101 return 0.; 00102 }
G4double G4NeutronField::GetField | ( | const G4ThreeVector & | aPosition | ) | [virtual] |
Implements G4VNuclearField.
Definition at line 80 of file G4NeutronField.cc.
00081 { 00082 G4double x = aPosition.mag(); 00083 G4int index = static_cast<G4int>(x/(0.3*fermi) ); 00084 if(index+2> static_cast<G4int>(theFermiMomBuffer.size())) return theFermiMomBuffer.back(); 00085 G4double y1 = theFermiMomBuffer[index]; 00086 G4double y2 = theFermiMomBuffer[index+1]; 00087 G4double x1 = (0.3*fermi)*index; 00088 G4double x2 = (0.3*fermi)*(index+1); 00089 G4double fermiMom = y1 + (x-x1)*(y2-y1)/(x2-x1); 00090 return -1*(fermiMom*fermiMom)/(2*neutron_mass_c2); 00091 }