| Summary: | problem in low energy neutron elastic scattering | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | jpinto |
| Component: | processes/hadronic/models | Assignee: | Hans-Peter.Wellisch |
| Status: | CLOSED FIXED | ||
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | 3.1 | ||
| Hardware: | PC | ||
| OS: | Linux | ||
as it turns out, your fix was not completely correct, but the difference is of small practical consequence. Using the momentum of CMS to define the prefered direction (rather tham neutron direction) is the correct thing to do. Fix will come with the next release. Many greetings, Hans-Peter. |
Hello, I am using geant4.31 with the neutron_hp model to simulate low energy neutron scattering in matter. The angular distribution for elastic scattering shows a dependency on the direction of the impinging neutron, which obviously is meaningless. This problem can be traced back to the calculus of the momentum of the neutron in the C. M. system. I solved the problem by introducing the following lines of code in the method G4ParticleChange * G4NeutronHPElasticFS::ApplyYourself() //(replacing the line (line number 194): //G4ThreeVector tempVector(en*sinth*cos(phi), en*sinth*sin(phi), en*cos(th eta) ); // //... G4ThreeVector np=theNeutron.GetMomentum(); G4double vartheta=np.theta(); G4double varphi=np.phi(); G4ThreeVector tempVector; tempVector.setX(cos(theta)*sin(vartheta)*cos(varphi) +sin(theta)*cos(phi)*cos(vartheta)*cos(varphi) -sin(theta)*sin(phi)*sin(varphi) ); tempVector.setY(cos(theta)*sin(vartheta)*sin(varphi) +sin(theta)*cos(phi)*cos(vartheta)*sin(varphi) +sin(theta)*sin(phi)*cos(varphi) ); tempVector.setZ(cos(theta)*cos(vartheta) -sin(theta)*cos(phi)*sin(vartheta) ); tempVector *= en; //G4ThreeVector tempVector(en*sinth*cos(phi), en*sinth*sin(phi), en*cos(th eta) ); //... I believe the effect of this change ought to be visible in the angular distributions of neutrons whenever the initial direction is not along the z axis, in each collision. Thanks. Cheers, jose' pinto da cunha