150{
153
155
156
158
159
160
161
162
163
166 for(; i<nShells; ++i) {
167
168
169
170
171
172
174 }
175
177
178
179
180 if ( (fPEBelowKShell || 0 == i) && i < nShells ) {
181
185
186
187
188 if(nullptr != fAtomDeexcitation) {
195 if(eshell > bindingEnergy && eshell <= energy) {
197 edep = eshell;
198 }
199 std::size_t nbefore = fvect->size();
201 std::size_t nafter = fvect->size();
202 for (std::size_t j=nbefore; j<nafter; ++j) {
203 G4double e = ((*fvect)[j])->GetKineticEnergy();
204 if(esec + e > edep) {
205
206 e = edep - esec;
207 ((*fvect)[j])->SetKineticEnergy(e);
208 esec += e;
209
210
211
212
213
214
215
216
217
218
219
220 for (std::size_t jj=nafter-1; jj>j; --jj) {
221 delete (*fvect)[jj];
222 fvect->pop_back();
223 }
224 break;
225 }
226 esec += e;
227 }
228 edep -= esec;
229 }
230 }
231
232
234 if (elecKineEnergy > fminimalEnergy) {
237 elecKineEnergy,
239 elecKineEnergy);
240 fvect->push_back(aParticle);
241 } else {
242 edep += elecKineEnergy;
243 elecKineEnergy = 0.0;
244 }
245 if(std::abs(energy - elecKineEnergy - esec - edep) > CLHEP::eV) {
246 G4cout <<
"### G4PEffectFluoModel dE(eV)= "
247 << (
energy - elecKineEnergy - esec - edep)/eV
248 << " shell= " << i
249 << " E(keV)= " << energy/keV
250 << " Ebind(keV)= " << bindingEnergy/keV
251 << " Ee(keV)= " << elecKineEnergy/keV
252 << " Esec(keV)= " << esec/keV
253 << " Edep(keV)= " << edep/keV
255 }
256 }
257
258
261 if(edep > 0.0) {
263 }
264}
G4GLOB_DLL std::ostream G4cout
G4double BindingEnergy() const
G4double GetKineticEnergy() const
G4int GetNbOfAtomicShells() const
G4double GetAtomicShell(G4int index) const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
G4VEmAngularDistribution * GetAngularDistribution()
void SetCurrentCouple(const G4MaterialCutsCouple *)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double bindingEnergy(G4int A, G4int Z)