#include <G4hQAOModel.hh>
Inheritance diagram for G4hQAOModel:
Public Member Functions | |
G4hQAOModel () | |
~G4hQAOModel () | |
G4bool | HasMaterial (const G4Material *) |
G4double | StoppingPower (const G4Material *material, G4double kineticEnergy) |
G4double | ElectronicStoppingPower (G4double z, G4double kineticEnergy) const |
Definition at line 57 of file G4hQAOModel.hh.
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 | ( | ) |
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] |
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 }