G4hQAOModel Class Reference

#include <G4hQAOModel.hh>

Inheritance diagram for G4hQAOModel:

G4VhElectronicStoppingPower

Public Member Functions

 G4hQAOModel ()
 ~G4hQAOModel ()
G4bool HasMaterial (const G4Material *)
G4double StoppingPower (const G4Material *material, G4double kineticEnergy)
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const

Detailed Description

Definition at line 57 of file G4hQAOModel.hh.


Constructor & Destructor Documentation

G4hQAOModel::G4hQAOModel (  ) 

Definition at line 59 of file G4hQAOModel.cc.

00059                         :G4VhElectronicStoppingPower(),
00060   numberOfMaterials(6),
00061   sizeL0(67),
00062   sizeL1(22),
00063   sizeL2(14),
00064   currentMaterial(0),
00065   currentElement(0)
00066 {
00067   theZieglerFactor = eV*cm2*1.0e-15;
00068   thePlasmonFactor = 28.816 * 28.816  * 1e-6;
00069 }

G4hQAOModel::~G4hQAOModel (  ) 

Definition at line 73 of file G4hQAOModel.cc.

00074 {}


Member Function Documentation

G4double G4hQAOModel::ElectronicStoppingPower ( G4double  z,
G4double  kineticEnergy 
) const [virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 100 of file G4hQAOModel.cc.

Referenced by StoppingPower().

00102 {
00103   G4int Z = (G4int)z;
00104   G4int nbOfShell = GetNumberOfShell(Z);
00105   if(nbOfShell < 1) nbOfShell = 1;
00106 
00107   G4double dedx=0.0;
00108 
00109   G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
00110   G4double coeff = twopi*proton_mass_c2*z / (electron_mass_c2*theZieglerFactor) ;
00111   G4double fBetheVelocity = fine_structure_const * c_light / v;
00112   coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
00113            kineticEnergy ;
00114 
00115   G4double l0Term = 0, l1Term = 0, l2Term = 0;
00116 
00117   for (G4int nos = 0 ; nos < nbOfShell ; nos++){
00118 
00119     G4double l0 = 0, l1 = 0, l2 = 0;
00120     G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v  ) /
00121                           ( c_squared * GetShellEnergy(Z, nos) );
00122     G4double shStrength = GetShellStrength(Z, nos);
00123 
00124     l0 = GetL0(NormalizedEnergy);
00125     l0Term += shStrength  * l0;
00126 
00127     l1 = GetL1(NormalizedEnergy);
00128     l1Term += shStrength * l1;
00129 
00130     l2 = GetL2(NormalizedEnergy);
00131     l2Term += shStrength * l2;
00132 
00133 /*
00134     //if(Z == 6){
00135     G4cout << nos << ". "
00136            << " E(MeV)= " << kineticEnergy/MeV
00137            << " normE= "  << NormalizedEnergy
00138            << " sh en= "  << GetShellEnergy(Z,nos)
00139            << " str= "  << shStrength
00140            << " v0/v= " << fBetheVelocity
00141            << " l0= " << l0Term
00142            << " l1= " << l1Term
00143            << " l2= " << l2Term
00144            << G4endl;
00145         //   }
00146 */
00147   }
00148 
00149   dedx = coeff * (l0Term - fBetheVelocity*l1Term + fBetheVelocity*fBetheVelocity*l2Term);
00150 
00151   //G4cout << " E(MeV)= " << kineticEnergy/MeV
00152   //       << " dedx(Mev/mm)= " << dedx*mm/MeV << G4endl;
00153 
00154   if(dedx < 0.0) dedx = 0.0;
00155   return dedx;
00156 }

G4bool G4hQAOModel::HasMaterial ( const G4Material  )  [inline, virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 66 of file G4hQAOModel.hh.

00066 {return true;};

G4double G4hQAOModel::StoppingPower ( const G4Material material,
G4double  kineticEnergy 
) [virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 78 of file G4hQAOModel.cc.

References ElectronicStoppingPower(), G4Material::GetAtomicNumDensityVector(), G4Material::GetElementVector(), G4Material::GetNumberOfElements(), and G4Element::GetZ().

00080 {
00081   G4double eloss = 0.0 ;
00082   G4int numberOfElements = material->GetNumberOfElements() ;
00083   const G4ElementVector* theElementVector   = material->GetElementVector();
00084   const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector() ;
00085   currentMaterial = material;
00086 
00087   //  loop for the elements in the material
00088   for (G4int i=0; i<numberOfElements; i++)
00089     {
00090       currentElement = (*theElementVector)[i] ;
00091       G4double z = currentElement->GetZ() ;
00092       eloss += ElectronicStoppingPower(z,kineticEnergy)*theAtomicNumDensityVector[i];
00093     }
00094 
00095   return eloss;
00096 }


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