During ATLAS production, the reproducible error below occurs. >>> G4CascadeInterface::ApplyYourself() has non-conserving cascade after 100 attempts. Energy conservation violated by -0.288364 GeV (-0.185188) Momentum conservation violated by 0.111654 GeV/c (0.185188) Final event output, for debugging: Bullet: px 0 py 0 pz 0.60292185971307 pmod 0.60292185971307 E 0.61886556030682 creator model 0 Particle: pi+ type 3 mass 0.1395701 ekin 0.47929546030682 Target: px 0 py 0 pz 0 pmod 0 E 0.938272013 creator model 0 Particle: proton type 1 mass 0.938272013 ekin 0 Output: Outgoing Particles: 2 px 0 py 0 pz 0.27124867449982 pmod 0.27124867449982 E 0.30505025197813 creator model 3 Particle: pi+ type 3 mass 0.1395701 ekin 0.16548015197813 px 0 py 0 pz 0.22001899733687 pmod 0.22001899733687 E 0.96372336776079 creator model 3 Particle: proton type 1 mass 0.938272013 ekin 0.025451354760786 Outgoing Nuclei: 0 In src/G4CascadeInterface.cc, line 483: ===> G4CascadeInterface::ApplyYourself() - EnergyMomentum non-conservation. More info in output. Call for Bertini Cascade Target element Hydrogen Z= 1 A= 1 Unrecoverable error in the method ApplyYourself of PionPlusInelastic TrackID= 1410300 ParentID= 36 pi+ Ekin(GeV)= 0.47929546030682; direction= (0.029415204700998,-0.10924482395656,-0.99357954597058) Position(mm)= (56.485628415656,158.91882363275,-3700.9245185166); material BoratedPolyethelyne PhysicalVolume <LArMgr::ModeratorTube> *** G4Exception : 007 issued by : G4HadronicProcess PostStepDoIt failed. *** Fatal Exception *** core dump *** *** G4Exception: Aborting execution ***
This is found in 9.4 patch 1 which is being used in production.
The same crash was reported by Andrea Dotti in development releases of 9.4, and fixed in the trunk of the SVN repository, by doing a better job of zero-testing in G4LorentzConvertor::rotate(). I have copied the trunk version of G4LorentzConvertor.cc into the 9.4-patch series branch and created a tag, "hadr-casc-V09-03-91", which may be used on top of 9.4-patch02. I will not marking this bug report resolved until this tag has been shown to eliminate the non-conservation exception by reproducing the same ATLAS event.
Better fix, avoiding elastic-scatter output entirely, is now at HEAD of SVN, tagged hadr-casc-V09-04-15. In this tag, G4CascadeInterface "trivializes" the output for the case where no inelastic collision can be generated; that is, the input projectile and target are copied to the results vector as is. This tag needs to be validated before I replicate it in the 9.4-patch branch.
Changes described in Comment #3 were not correct. Per V.Ivantchenko, "do nothing" is reported back to hadronic process via empty G4HadFinalState, with status "isAlive." Input should not be copied. Correct behavior deployed in hadr-casc-V09-04-16 (and later tags). Because this changes the physics, it will not be backported to a 9.4 patch build.