Problem 2223

Summary: non-Maxwellian target nuclei distribution
Product: Geant4 Reporter: Artem Zontikov <zontikov.a>
Component: processes/hadronic/models/neutron_hpAssignee: dennis.herbert.wright
Status: RESOLVED WONTFIX    
Severity: minor    
Priority: P4    
Version: 10.6   
Hardware: All   
OS: All   
See Also: https://bugzilla-geant4.kek.jp/show_bug.cgi?id=1191
Attachments: thermal distributions

Description Artem Zontikov 2020-01-30 18:19:24 CET
Created attachment 605 [details]
thermal distributions

Hello. 

Prior to simulating a collision in the target rest or center-of-momentum frame particle_hp model generates a target nucleus in the LAB frame. The target nucleus in the LAB frame is supposed to be in thermal equilibrium with the media so it should have kinetic energy from the Maxwell distribution and isotropic momentum direction. 

Particle_hp samples target nucleus from G4Nucleus::GetBiasedThermalNucleus(). This method applies some bias to the returned result making the distribution of target nuclei to be non-Maxwellian. 

Attached there are plots with energy, speed and momentum direction distributions sampled 1E+08 times in LAB frame with GetThermalNucleus() and GetBiasedThermalNucleus() methods of G4Nucleus class. The result from GetThermalNucleus() is fitted with Maxwell distribution to show their consistency. The result from GetBiasedThermalNucleus() is shifted towards higher energies/speeds and could not be fitted with Maxwell distribution at 293K. Also, it has non-isotropic momentum direction distribution. 

It stands to reason that as long as the projectile and target are both in the LAB frame (which is true for each case of calling GetBiasedThermalNucleus() in particle_hp) the target should be sampled from Maxwell distribution. I propose to drop the usage of GetBiasedThermalNucleus() in favor of using GetThermalNucleus().
Comment 1 dennis.herbert.wright 2020-02-25 19:00:28 CET
Hi Artem, 

  After speaking to Emilio Mendoza, our expert in this area, I have decided not to implement your propose fix.  I forward here his explanation:

"I don't agree with the proposed change. The reason is the following. In the free gas approximation the velocity of the target nuclei follow a Maxwellian distribution. However, the velocity of the nuclei when interacting with the neutron do not follow a Maxwellian distribution, since the interaction probability is not constant with the velocity of the nuclei. This is more or less well explained in MCNP manual version 4c.
I think that this is the reason why the person who made the code decided to use GetBiasedThermalNucleus instead of GetThermalNucleus. And this is the correct decision. Indeed, I am not 100% sure that the thermal treatment in Geant4 is correct, but for sure it is not correct to take a Maxwellian distribution to sample the velocity of the target nuclei when interacting with the neutrons."


Dennis