71 fminimalEnergy = 1.0*
eV;
74 fAtomDeexcitation = 0;
76 fSandiaCof.resize(4,0.0);
114 return fSandiaCof[0]/energy + fSandiaCof[1]/energy2 +
115 fSandiaCof[2]/energy3 + fSandiaCof[3]/energy4;
133 return SandiaCof[0]/energy + SandiaCof[1]/energy2 +
134 SandiaCof[2]/energy3 + SandiaCof[3]/energy4;
161 for(; i<nShells; ++i) {
182 if(fAtomDeexcitation) {
189 if(eshell > bindingEnergy && eshell <= energy) {
190 bindingEnergy = eshell;
193 size_t nbefore = fvect->size();
195 size_t nafter = fvect->size();
196 if(nafter > nbefore) {
197 for (
size_t j=nbefore; j<nafter; ++j) {
198 G4double e = ((*fvect)[j])->GetKineticEnergy();
199 if(esec + e > edep) {
210 for (
size_t jj=j; jj<nafter; ++jj) {
delete (*fvect)[jj]; }
211 for (
size_t jj=j; jj<nafter; ++jj) { fvect->pop_back(); }
223 if (elecKineEnergy > fminimalEnergy) {
229 fvect->push_back(aParticle);
231 edep += elecKineEnergy;
232 elecKineEnergy = 0.0;
234 if(fabs(energy - elecKineEnergy - esec - edep) >
eV) {
235 G4cout <<
"### G4PEffectFluoModel dE(eV)= "
236 << (energy - elecKineEnergy - esec -
edep)/
eV
238 <<
" E(keV)= " << energy/
keV
239 <<
" Ebind(keV)= " << bindingEnergy/
keV
240 <<
" Ee(keV)= " << elecKineEnergy/
keV
241 <<
" Esec(keV)= " << esec/
keV
242 <<
" Edep(keV)= " << edep/
keV
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
static G4LossTableManager * Instance()
G4int GetNbOfAtomicShells() const
G4double GetKineticEnergy() const
G4VEmAngularDistribution * GetAngularDistribution()
G4double BindingEnergy() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4SandiaTable * GetSandiaTable() const
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
const G4MaterialCutsCouple * CurrentCouple() const
G4GLOB_DLL std::ostream G4cout
G4double GetSandiaCofForMaterial(G4int, G4int)
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double, G4double)
void GetSandiaCofPerAtom(G4int Z, G4double energy, std::vector< G4double > &coeff)
void SetCurrentCouple(const G4MaterialCutsCouple *)
void SetAngularDistribution(G4VEmAngularDistribution *)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
static G4Electron * Electron()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
virtual ~G4PEEffectFluoModel()
G4VAtomDeexcitation * AtomDeexcitation()
G4double GetAtomicShell(G4int index) const
void ProposeTrackStatus(G4TrackStatus status)
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
void SetDeexcitationFlag(G4bool val)
G4double bindingEnergy(G4int A, G4int Z)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
G4PEEffectFluoModel(const G4String &nam="PhotoElectric")
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
const G4Material * GetMaterial() const