| Summary: | G4ParticleHPAngular overwriting aHadron kinetic energy | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | osipenko |
| Component: | processes/hadronic/models/neutron_hp | Assignee: | dennis.herbert.wright |
| Status: | RESOLVED WONTFIX | ||
| Severity: | minor | CC: | dennis.herbert.wright |
| Priority: | P4 | ||
| Version: | 10.3 | ||
| Hardware: | All | ||
| OS: | All | ||
I asked one of our neutron experts about this. His response: For many cases it is better to sample aHadron energy in G4ParticleHPAngular: in two body reactions the kinetic energy of the outgoing particle is obtained from the angle of the emitted particle + energy and momentum consevation. It is true that in some cases maybe this re-sampling is not appropriate, but in those cases I think it is better to re-fix the outgoing particle energy after calling G4ParticleHPAngular. Indeed, G4ParticleHPInelasticCompFS is not the only one class using G4ParticleHPAngular. As for setting frameFlag = 2, this sounds correct, but does not follow ENDF rules. We are discussing splitting ParticleHP into two parts, one that allows energy/momentum conservation and one that follows ENDF rules. If we do this, your suggestion could be implemented. For now, however, we will not make thus fix. |
Hi, few comments on G4ParticleHPAngular.cc: 1) at lines 251-262 it overwrites aHadron kinetic energy, but apparently it was already sampled e.g. in G4ParticleHPInelasticCompFS.cc and reaction could be different from one assumed in G4ParticleHPAngular.cc (2->2). I solved it temporary by adding "HadronEnergyFlag" in G4ParticleHPAngular.hh and setting it at energy sampling in G4ParticleHPInelasticCompFS. Are there cases when re-sampling of aHadron energy is really needed in G4ParticleHPAngular? 2) Perhaps you can add: frameFlag=2; after line 48, because isotropic sampling makes sense in CM only. 3) lines 264-281 can be substituted with just two lines: G4ReactionProduct theCMS = *fCache.Get().theProjectileRP + *fCache.Get().theTarget; // CMS in LAB aHadron.Lorentz(aHadron, -1.*theCMS); // CMS --> LAB