78 lowEnergyLimit(1.022000*
MeV),
79 highEnergyLimit(100*
GeV),
80 intrinsicLowEnergyLimit(1.022000*
MeV),
81 intrinsicHighEnergyLimit(100*
GeV),
88 G4Exception(
"G4LowEnergyGammaConversion::G4LowEnergyGammaConversion()",
90 "Energy limit outside intrinsic process validity range!");
121 G4String crossSectionFile =
"pair/pp-cs-";
164 G4cout <<
"G4LowEnergyGammaConversion::PostStepDoIt - element = 0" <<
G4endl;
169 G4cout <<
"G4LowEnergyGammaConversion::PostStepDoIt - ionisation = 0" <<
G4endl;
174 if (photonEnergy > 50. *
MeV) fZ += 8. * (element->
GetfCoulomb());
178 G4double screenMax = std::exp ((42.24 - fZ)/8.368) - 0.952 ;
182 G4double epsilon1 = 0.5 - 0.5 * std::sqrt(1. - screenMin / screenMax) ;
184 G4double epsilonRange = 0.5 - epsilonMin ;
198 epsilon = 0.5 - epsilonRange * std::pow(
G4UniformRand(), 0.3333) ;
199 screen = screenFactor / (epsilon * (1. -
epsilon));
205 screen = screenFactor / (epsilon * (1 -
epsilon));
219 electronTotEnergy = (1. -
epsilon) * photonEnergy;
220 positronTotEnergy = epsilon * photonEnergy;
224 positronTotEnergy = (1. -
epsilon) * photonEnergy;
225 electronTotEnergy = epsilon * photonEnergy;
251 G4double dxEle= std::sin(thetaEle)*std::cos(phi),dyEle= std::sin(thetaEle)*std::sin(phi),dzEle=std::cos(thetaEle);
252 G4double dxPos=-std::sin(thetaPos)*std::cos(phi),dyPos=-std::sin(thetaPos)*std::sin(phi),dzPos=std::cos(thetaPos);
271 electronDirection.
rotateUz(photonDirection);
280 localEnergyDeposit += electronKineEnergy ;
289 localEnergyDeposit += positronKineEnergy ;
290 positronKineEnergy = 0. ;
294 positronDirection.
rotateUz(photonDirection);
298 positronDirection, positronKineEnergy);
324 size_t materialIndex = couple->
GetIndex();
339 if (screenVariable > 1.)
340 value = 42.24 - 8.368 * std::log(screenVariable + 0.952);
342 value = 42.392 - screenVariable * (7.796 - 1.961 * screenVariable);
353 if (screenVariable > 1.)
354 value = 42.24 - 8.368 * std::log(screenVariable + 0.952);
356 value = 41.405 - screenVariable * (5.828 - 0.8945 * screenVariable);