97 intrinsicLowEnergyLimit(10*
eV),
98 intrinsicHighEnergyLimit(100*
GeV),
99 cutForLowEnergySecondaryPhotons(250.*
eV),
100 cutForLowEnergySecondaryElectrons(250.*
eV)
105 G4Exception(
"G4LowEnergyPhotoElectric::G4LowEnergyPhotoElectric()",
107 "Energy limit outside intrinsic process validity range!");
141 G4String crossSectionFile =
"phot/pe-cs-";
145 G4String shellCrossSectionFile =
"phot/pe-ss-cs-";
189 std::vector<G4DynamicParticle*>* photonVector = 0;
190 std::vector<G4DynamicParticle*> electronVector;
199 if (eKineticEnergy > 0.)
215 electronVector.push_back(electron);
219 energyDeposit += eKineticEnergy;
224 bindingEnergy = photonEnergy;
227 G4int nElectrons = electronVector.size();
228 size_t nTotPhotons = 0;
246 if (Z > 5 && (bindingEnergy > cutg || bindingEnergy > cute))
249 nTotPhotons = photonVector->size();
250 for (
size_t k=0;
k<nTotPhotons;
k++)
252 aPhoton = (*photonVector)[
k];
259 if (itsEnergy > itsCut && itsEnergy <= bindingEnergy)
265 bindingEnergy -= itsEnergy;
271 (*photonVector)[
k] = 0;
279 G4int nSecondaries = nElectrons + nPhotons;
282 for (
G4int l = 0; l<nElectrons; l++ )
284 aPhoton = electronVector[l];
289 for (
size_t ll = 0; ll < nTotPhotons; ll++)
291 aPhoton = (*photonVector)[ll];
299 if (energyDeposit < 0)
302 <<
"G4LowEnergyPhotoElectric::PostStepDoIt - Negative energy deposit"
340 if(cross > 0.0) meanFreePath = 1.0/
cross;
370 if (name ==
"default")
376 else if (name ==
"standard")
382 else if (name ==
"polarized")
390 G4Exception(
"G4LowEnergyPhotoElectric::SetAngularGenerator()",
392 "Generator does not exist!");