Problem 1451

Summary: velocity of neutron is wrong after hadron elastic process
Product: Geant4 Reporter: celaeno1119
Component: processes/hadronicAssignee: Vladimir.Ivantchenko
Status: RESOLVED FIXED    
Severity: normal    
Priority: P5    
Version: 9.6   
Hardware: PC   
OS: Linux   

Description celaeno1119 2013-03-01 03:17:39 CET
Velocity of neutron is as same as incident velocity after hadron elastic process, such as H(n,np).
In G4HadronElasticProcess.cc (4.9.6) / G4WHadronElasticProcess.cc (4.9.5),
energy and momentum is calculated but velocity is not.
But in G4ParticleChange.cc,
// --------------------------------------------
if (!isVelocityChanged) theVelocityChange = pStep->GetTrack()->CalculateVelocity();
// --------------------------------------------
will apply velocity improper.
This problem may have same origin as problem 1275.

Above problem can be fixed by calling following code in G4HadronElasticProcess::PostStepDoIt.
// --------------------------------------------
 G4double mass = dynParticle->GetMass();
 G4double T = efinal/mass;
 G4double velocity = c_light*std::sqrt(T*(T+2.))/(T+1.0);
 theTotalResult->ProposeVelocity(velocity);
// --------------------------------------------
Comment 1 Vladimir.Ivantchenko 2013-04-07 22:15:01 CEST
Hello,

Thank you very much for identification of the bug. It is fixed and willbe available with the next public patch.

VI