G4NeutronField Class Reference

#include <G4NeutronField.hh>

Inheritance diagram for G4NeutronField:

G4VNuclearField

Public Member Functions

 G4NeutronField (G4V3DNucleus *nucleus)
virtual ~G4NeutronField ()
virtual G4double GetField (const G4ThreeVector &aPosition)
virtual G4double GetBarrier ()

Detailed Description

Definition at line 48 of file G4NeutronField.hh.


Constructor & Destructor Documentation

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]

Definition at line 77 of file G4NeutronField.cc.

00078 { }


Member Function Documentation

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 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:35 2013 for Geant4 by  doxygen 1.4.7