Report on Bugzilla 1612

1) Problem


2) Piece of code affected in G4LivermoreComptonModel and G4LowEPComptonModel

  if(fAtomDeexcitation && iteration < maxDopplerIterations) {
    G4int index = couple->GetIndex();
    if(fAtomDeexcitation->CheckDeexcitationActiveRegion(index)) {
      size_t nbefore = fvect->size();
      G4AtomicShellEnumerator as = G4AtomicShellEnumerator(shellIdx);
      const G4AtomicShell* shell = fAtomDeexcitation->GetAtomicShell(Z, as);
      fAtomDeexcitation->GenerateParticles(fvect, shell, Z, index);
      size_t nafter = fvect->size();
      if(nafter > nbefore) {
   for (size_t i=nbefore; i<nafter; ++i) {
     bindingE -= ((*fvect)[i])->GetKineticEnergy();
  if(bindingE < 0.0) { 
    bindingE = 0.0; 
    G4cout << "WARNING: kinetic energy of de-excitation secondaries "
      << "is larger than binding energy of donor shell!!"
      << G4endl;

3) Report on issue by Jeremy

This is an update on the progress of the fix for the energy violation seen in G4LivermoreComptonModel and G4LowEPComptonModel. Both Compton models utilises Biggs' profiles which assume that the target atom is in a ground state configuration and as such only one atomic configuration exists for each element. Whereas it appears that the fluoresence data allows for the existence multiple electronic configurations for an element. In short due to different assumption applied during the development of these packages it is not possible to fix this issue properly without recalculating multi-configurational Compton profiles for all 100 elements. This something I was planning to get to after completing the Monash photoelectric absorption model.

In the meantime I think it might be possible to alter the existing G4EMLOW Doppler data to be compatible with the de-excitation fluor data. This approach should address the energy conservation issue without altering the performance / current accuracy of both models.

However, as I stated previously, this would only act as a temporary fix until I am able to recalculate multi-configurational Compton profiles for all 100 elements at some stage next year (2015).

4) Proposition by Luciano

 for (size_t i=nbefore; i<nafter; ++i) {
    if (bindingE >= ((*fvect)[i])->GetKineticEnergy())
            bindingE -= ((*fvect)[i])->GetKineticEnergy();
       delete (*fvect)[i];

 if ((*fvect)[i])
   --> Generate the secondary

i.e. remove secondaries from the vector, if the proposed kinetic energy is larger than the available energy, and attribute the residual energy to the local deposit. This is of course a quick patch (which removes only the "visible part" of the problem), which should be followed by the full recalculation of the Compton profiles...

5) Fix

Fix has been committed by Luciano and tagged by Sebastien.

Sebastien performed tests with TestEm5 and mein_bichsel.mac provided by the user. See plots below.

Bug is fixed.

-- SebastienIncerti - 01 Oct 2014

Topic attachments
I Attachment History Action Size Date Who Comment
GIFgif bug.gif r1 manage 4.9 K 2014-10-01 - 08:21 SebastienIncerti  
GIFgif nobug.gif r1 manage 4.7 K 2014-10-01 - 08:21 SebastienIncerti  
Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r3 - 2014-10-01 - SebastienIncerti
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Geant4 All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback