G4RKFieldIntegrator Class Reference

#include <G4RKFieldIntegrator.hh>

Inheritance diagram for G4RKFieldIntegrator:

G4FieldPropagation

Public Member Functions

 G4RKFieldIntegrator ()
 G4RKFieldIntegrator (const G4RKFieldIntegrator &)
 ~G4RKFieldIntegrator ()
const G4RKFieldIntegratoroperator= (const G4RKFieldIntegrator &)
int operator== (const G4RKFieldIntegrator &) const
int operator!= (const G4RKFieldIntegrator &) const
void Transport (G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep)
G4double GetExcitationEnergy (G4int nHitNucleons, const G4KineticTrackVector &theParticles)
void Init (G4int z, G4int a)
G4double GetNeutronPotential (G4double radius)
G4double GetNeutronPotential (G4ThreeVector &aPosition)
G4double GetProtonPotential (G4double radius)
G4double GetProtonPotential (G4ThreeVector &aPosition)
G4double GetAntiprotonPotential (G4double radius)
G4double GetAntiprotonPotential (G4ThreeVector &aPosition)
G4double GetKaonPotential (G4double radius)
G4double GetKaonPotential (G4ThreeVector &aPosition)
G4double GetPionPotential (G4double radius)
G4double GetPionPotential (G4ThreeVector &aPosition)

Detailed Description

Definition at line 31 of file G4RKFieldIntegrator.hh.


Constructor & Destructor Documentation

G4RKFieldIntegrator::G4RKFieldIntegrator (  )  [inline]

Definition at line 34 of file G4RKFieldIntegrator.hh.

00034 {}

G4RKFieldIntegrator::G4RKFieldIntegrator ( const G4RKFieldIntegrator  )  [inline]

Definition at line 35 of file G4RKFieldIntegrator.hh.

00035 :G4FieldPropagation() {}

G4RKFieldIntegrator::~G4RKFieldIntegrator (  )  [inline]

Definition at line 37 of file G4RKFieldIntegrator.hh.

00037 {}


Member Function Documentation

G4double G4RKFieldIntegrator::GetAntiprotonPotential ( G4ThreeVector aPosition  )  [inline, virtual]

Implements G4FieldPropagation.

Definition at line 61 of file G4RKFieldIntegrator.hh.

References GetAntiprotonPotential().

00061 {return GetAntiprotonPotential(aPosition.mag());};

G4double G4RKFieldIntegrator::GetAntiprotonPotential ( G4double  radius  )  [virtual]

Implements G4FieldPropagation.

Definition at line 291 of file G4RKFieldIntegrator.cc.

Referenced by GetAntiprotonPotential().

00292 {
00293    /*
00294    //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
00295    G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 
00296       + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
00297       + G4CreateNucleus::GetBindingEnergy(theZ, theA);
00298       
00299    const G4double Mp  = 938.27231 * MeV; // mass of proton
00300    G4double mu = (theM * Mp)/(theM + Mp);
00301    
00302    // antiproton's potential coefficient
00303    //   V = coeff_antiproton * nucleus_density
00304    G4double coeff_antiproton = -2.*pi/mu * (1. + Mp) * a_antiproton;
00305    
00306    G4VNuclearDensity *theDencity;
00307    if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
00308    else          theDencity = new G4NuclearFermiDensity(theA, theZ);
00309    
00310    // GetDencity() accepts only G4ThreeVector so build it:   
00311    G4ThreeVector aPosition(0.0, 0.0, radius);
00312    G4double density = theDencity->GetDensity(aPosition);
00313    delete theDencity;
00314    
00315    return coeff_antiproton * density;
00316    */
00317 
00318    return 0.0;
00319 }

G4double G4RKFieldIntegrator::GetExcitationEnergy ( G4int  nHitNucleons,
const G4KineticTrackVector theParticles 
) [virtual]

Implements G4FieldPropagation.

Definition at line 180 of file G4RKFieldIntegrator.cc.

References G4UniformRand.

00181 {
00182    const G4double MeanE = 50;
00183    G4double Sum = 0;
00184    for(G4int c1 = 0; c1 < nHitNucleons; c1++)
00185        {
00186        Sum += -MeanE*std::log(G4UniformRand());
00187        }
00188    return Sum;
00189 }

G4double G4RKFieldIntegrator::GetKaonPotential ( G4ThreeVector aPosition  )  [inline, virtual]

Implements G4FieldPropagation.

Definition at line 64 of file G4RKFieldIntegrator.hh.

References GetKaonPotential().

00064 {return GetKaonPotential(aPosition.mag());}

G4double G4RKFieldIntegrator::GetKaonPotential ( G4double  radius  )  [virtual]

Implements G4FieldPropagation.

Definition at line 321 of file G4RKFieldIntegrator.cc.

Referenced by GetKaonPotential().

00322 {
00323    /*
00324    //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
00325    G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 
00326       + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
00327       + G4CreateNucleus::GetBindingEnergy(theZ, theA);
00328       
00329    const G4double Mk  = 496. * MeV;      // mass of "kaon"
00330    G4double mu = (theM * Mk)/(theM + Mk);
00331    
00332    // kaon's potential coefficient
00333    //   V = coeff_kaon * nucleus_density
00334    G4double coeff_kaon = -2.*pi/mu * (1. + Mk/theM) * a_kaon;
00335    
00336    G4VNuclearDensity *theDencity;
00337    if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
00338    else          theDencity = new G4NuclearFermiDensity(theA, theZ);
00339    
00340    // GetDencity() accepts only G4ThreeVector so build it:   
00341    G4ThreeVector aPosition(0.0, 0.0, radius);
00342    G4double density = theDencity->GetDensity(aPosition);
00343    delete theDencity;
00344    
00345    return coeff_kaon * density;
00346    */
00347 
00348    return 0.0;
00349 }

G4double G4RKFieldIntegrator::GetNeutronPotential ( G4ThreeVector aPosition  )  [inline, virtual]

Implements G4FieldPropagation.

Definition at line 55 of file G4RKFieldIntegrator.hh.

References GetNeutronPotential().

00055 {return GetNeutronPotential(aPosition.mag());}

G4double G4RKFieldIntegrator::GetNeutronPotential ( G4double  radius  )  [virtual]

Implements G4FieldPropagation.

Definition at line 234 of file G4RKFieldIntegrator.cc.

Referenced by GetNeutronPotential().

00235 {
00236    /*
00237    const G4double Mn  = 939.56563 * MeV; // mass of nuetron
00238 
00239    G4VNuclearDensity *theDencity;
00240    if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
00241    else          theDencity = new G4NuclearFermiDensity(theA, theZ);
00242    
00243    // GetDencity() accepts only G4ThreeVector so build it:   
00244    G4ThreeVector aPosition(0.0, 0.0, radius);
00245    G4double density = theDencity->GetDensity(aPosition);
00246    delete theDencity;
00247    
00248    G4FermiMomentum *fm = new G4FermiMomentum();
00249    fm->Init(theA, theZ);
00250    G4double fermiMomentum = fm->GetFermiMomentum(density);
00251    delete fm;
00252    
00253    return sqr(fermiMomentum)/(2 * Mn) 
00254       + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA;
00255       //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA;
00256    */
00257    
00258    return 0.0;
00259 }

G4double G4RKFieldIntegrator::GetPionPotential ( G4ThreeVector aPosition  )  [inline, virtual]

Implements G4FieldPropagation.

Definition at line 67 of file G4RKFieldIntegrator.hh.

References GetPionPotential().

00067 {return GetPionPotential(aPosition.mag());}

G4double G4RKFieldIntegrator::GetPionPotential ( G4double  radius  )  [virtual]

Implements G4FieldPropagation.

Definition at line 351 of file G4RKFieldIntegrator.cc.

Referenced by GetPionPotential().

00352 {
00353    /*
00354    //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
00355    G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 
00356       + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
00357       + G4CreateNucleus::GetBindingEnergy(theZ, theA);
00358       
00359    const G4double Mpi = 139. * MeV;      // mass of "pion"
00360    G4double mu = (theM * Mpi)/(theM + Mpi);
00361 
00362    // pion's potential coefficient
00363    //   V = coeff_pion * nucleus_density
00364    G4double coeff_pion = -2.*pi/mu * (1. + Mpi) * a_pion;
00365    
00366    G4VNuclearDensity *theDencity;
00367    if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
00368    else          theDencity = new G4NuclearFermiDensity(theA, theZ);
00369    
00370    // GetDencity() accepts only G4ThreeVector so build it:   
00371    G4ThreeVector aPosition(0.0, 0.0, radius);
00372    G4double density = theDencity->GetDensity(aPosition);
00373    delete theDencity;
00374    
00375    return coeff_pion * density;
00376    */
00377 
00378    return 0.0;
00379 }

G4double G4RKFieldIntegrator::GetProtonPotential ( G4ThreeVector aPosition  )  [inline, virtual]

Implements G4FieldPropagation.

Definition at line 58 of file G4RKFieldIntegrator.hh.

References GetProtonPotential().

00058 {return GetProtonPotential(aPosition.mag());}

G4double G4RKFieldIntegrator::GetProtonPotential ( G4double  radius  )  [virtual]

Implements G4FieldPropagation.

Definition at line 261 of file G4RKFieldIntegrator.cc.

Referenced by GetProtonPotential().

00262 {
00263    /*
00264    // calculate Coulomb barrier value
00265    G4double theCoulombBarrier = coulomb * theZ/(1. + std::pow(theA, 1./3.));
00266    const G4double Mp  = 938.27231 * MeV; // mass of proton
00267 
00268    G4VNuclearDensity *theDencity;
00269    if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
00270    else          theDencity = new G4NuclearFermiDensity(theA, theZ);
00271    
00272    // GetDencity() accepts only G4ThreeVector so build it:   
00273    G4ThreeVector aPosition(0.0, 0.0, radius);
00274    G4double density = theDencity->GetDensity(aPosition);
00275    delete theDencity;
00276    
00277    G4FermiMomentum *fm = new G4FermiMomentum();
00278    fm->Init(theA, theZ);
00279    G4double fermiMomentum = fm->GetFermiMomentum(density);
00280    delete fm;
00281 
00282    return sqr(fermiMomentum)/ (2 * Mp) 
00283       + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA;
00284       //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA 
00285       + theCoulombBarrier;
00286    */
00287 
00288    return 0.0;
00289 }

void G4RKFieldIntegrator::Init ( G4int  z,
G4int  a 
) [inline, virtual]

Implements G4FieldPropagation.

Definition at line 51 of file G4RKFieldIntegrator.hh.

00051 {theZ = z;  theA = a;} // prepare potentials' functions

int G4RKFieldIntegrator::operator!= ( const G4RKFieldIntegrator  )  const [inline]

Definition at line 43 of file G4RKFieldIntegrator.hh.

00043 {return 1;}

const G4RKFieldIntegrator& G4RKFieldIntegrator::operator= ( const G4RKFieldIntegrator  )  [inline]

Definition at line 40 of file G4RKFieldIntegrator.hh.

00040 {return *this;}

int G4RKFieldIntegrator::operator== ( const G4RKFieldIntegrator  )  const [inline]

Definition at line 42 of file G4RKFieldIntegrator.hh.

00042 {return 1;}

void G4RKFieldIntegrator::Transport ( G4KineticTrackVector theActive,
const G4KineticTrackVector theSpectators,
G4double  theTimeStep 
) [virtual]

Implements G4FieldPropagation.

Definition at line 42 of file G4RKFieldIntegrator.cc.

00043 {
00044    (void)theActive;
00045    (void)theSpectators;
00046    (void)theTimeStep;
00047 }


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