| Summary: | overflow in photon evaporation for Xe154 | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | Davide Mancusi <davide.mancusi> |
| Component: | processes/hadronic/models/de_excitation | Assignee: | Vladimir.Ivantchenko |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | alexander.howard |
| Priority: | P4 | ||
| Version: | 10.3 | ||
| Hardware: | All | ||
| OS: | All | ||
Hi Davide, for 10.4beta the energy and the time of life inside internal nuclear level database are double and not float anymore. Vladimir |
I ran into an FPE yesterday with Geant4 v10.3.p01. Here is the interesting part of the backtrace: (gdb) bt #0 0x00002aaab2cf6c70 in G4LevelReader::LevelManager (this=this@entry=0x197c18d0, Z=Z@entry=54, A=A@entry=134, nlev=nlev@entry=0, infile=...) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4LevelReader.cc:553 #1 0x00002aaab2cf8cc8 in G4LevelReader::CreateLevelManagerNEW (this=0x197c18d0, Z=Z@entry=54, A=A@entry=134) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4LevelReader.cc:455 #2 0x00002aaab2cfca1d in G4NuclearLevelData::InitialiseForIsotope (this=this@entry=0x2aaab417baa0 <G4NuclearLevelData::GetInstance()::theData>, Z=54, A=134) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4NuclearLevelData.cc:409 #3 0x00002aaab2cfcab8 in G4NuclearLevelData::GetLevelManager (this=0x2aaab417baa0 <G4NuclearLevelData::GetInstance()::theData>, Z=54, A=<optimized out>) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4NuclearLevelData.cc:362 #4 0x00002aaab2d176a1 in G4PhotonEvaporation::InitialiseLevelManager (A=<optimized out>, Z=<optimized out>, this=0x197c17e0) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/include/G4PhotonEvaporation.hh:156 #5 G4PhotonEvaporation::GenerateGamma (this=this@entry=0x197c17e0, nucleus=nucleus@entry=0x1cb657d0) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4PhotonEvaporation.cc:271 #6 0x00002aaab2d193e3 in G4PhotonEvaporation::BreakUpChain (this=0x197c17e0, products=0x197c16f8, nucleus=0x1cb657d0) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4PhotonEvaporation.cc:148 #7 0x00002aaab2ca9daa in G4Evaporation::BreakFragment (this=0x197c1750, theResult=0x197c16f8, theResidualNucleus=0x1cb657d0) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc:215 #8 0x00002aaab2cf26ea in G4ExcitationHandler::BreakItUp (this=0x197c1690, theInitialState=...) at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/handler/src/G4ExcitationHandler.cc:336 The FPE is actually an overflow within photon evaporation, and it is connected with Xe134, as you can see from the backtrace. The culprit is the following line (G4LevelReader.cc:553): fTime *= fTimeFactor; where (gdb) p fTime $40 = 1.83033999e+30 (gdb) p fTimeFactor $41 = 1.44269504e+09 fTime and fTimeFactor are both floats, hence the overflow FPE. The value of fTime comes from the first line of data file PhotonEvaporation4.3.2/correlated_gamma/z54.a134: 0 - 0 1.83034e+30 0.0 0 I ran the same code with v10.2.p03 and it works fine. Diffing the source files between v10.2.p03 and v10.3.p01 shows that fTime and fTimeFactor (along with some other attributes) have recently been demoted from double to float, which might explain the issue. Other isotopes are probably affected. It should be possible to reproduce it by passing the following G4Fragment to G4PhotonEvaporation::BreakUpChain(): (gdb) p *nucleus $44 = {theA = 134, theZ = 54, theExcitationEnergy = 5.6448892244516173, theGroundStateMass = 124704.68388613772, theMomentum = {pp = { dx = -1836.9722472263795, dy = 1060.5399372169402, dz = 1808.7782486594756, static tolerance = 2.22045e-14}, ee = 124741.48064700555, static tolerance = 2.22045e-14, static metric = 1}, thePolarization = 0x0, creatorModel = -1, numberOfParticles = 1, numberOfCharged = 0, numberOfHoles = 56, numberOfChargedHoles = 0, numberOfShellElectrons = 0, xLevel = 0, theParticleDefinition = 0x0, spin = 0, theCreationTime = 0, static minFragExcitation = 9.9999999999999991e-06} Cheers, Davide