There are identical sub-expressions 'trk1.GetDefinition() == G4Neutron::Neutron()' to the left and to the right of the '||' operator. g4scatterer.cc 140 Error: if(( trk1.GetDefinition() == G4Neutron::Neutron() || trk1.GetDefinition() == G4Neutron::Neutron() ) && Correct: if(( trk1.GetDefinition() == G4Neutron::Neutron() || trk2.GetDefinition() == G4Neutron::Neutron() ) && I used The Best C++ static code analysis Tools "PVS-Studio 4.77" under Visual Studio 2012 to analyze the Geant4.9.6 code There is many warnings and performance optimization so I recommend using PVS-Studio http://files.viva64.com/beta/PVS-Studio_setup.exe Please correct me if I am wrong Thanks in Advance.
Fixed in development version. The only problem this causes will be a performance penality, as a shortcut may not be taken. Shortcut is to avoid calculation of cross section, when it is easy to estimate that particles will not interact.
*** This problem has been marked as a duplicate of problem 1334 ***