1. Here http://www-geant4.kek.jp/lxr/source/processes/hadronic/models/particle_hp/src/G4ParticleHPCaptureFS.cc#L78 theNeutron.Lorentz(theNeutron, -1*theTarget); Obviously, it should be theNeutron.Lorentz(theNeutron, theTarget); 2. The same thing here http://www-geant4.kek.jp/lxr/source/processes/hadronic/models/particle_hp/src/G4ParticleHPCaptureFS.cc#L182 thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), theTarget); should be put as thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), -1*theTarget); Also, here http://www-geant4.kek.jp/lxr/source/processes/hadronic/models/particle_hp/src/G4ParticleHPCaptureFS.cc#L75 theTarget.SetDefinition( G4IonTable::GetIonTable()->GetIon( G4int(theBaseZ), G4int(theBaseA) , 0.0 ) ); sets target kinetic energy to zero. It is better to use SetDefinitionAndUpdateE()-method instead.
Bug fixed as prescribed.