When using the HP models for neutrons 0-20 MeV simulating a Germanium detector "NeutornInelastic" gives a Ga out instead of Ge. The gammas emitted are also from Ga. i.e., instead of getting (nGe,n'gammasGe) one gets (nGe,n'gammasGa)...
Hi, what is the version of G4NDL that you are using? Many greetings, Hans-Peter.
Since you did not come back on this, I did some investigation of my own with G4NDL3.7. I cannot reproduce the problem, so I have to assume it is resolved with the last version of hte data files. Many greetings, Hans-Peter.
Hi, I've must have done something wrong... I still have the problem when using G4NDL3.7. It, however seems to be specific for Ge. cheers Joa
Hi, I am experiencing the same problem. System: Geant4 7.0, Redhat 7.3 G4NDL3.7 Symptoms: When I use the HP neutron models to bombard a simulated, enriched HPGe detector with 3 MeV neutrons, the interactions are dominantly (n Ge, n' Ga ). The accompanying gammas rays are also those of Ga and not Ge. This is obviously incorrect. I have the following clues: 1.) It only happens when I build the germanium element out of isotopes and do not use the natural germanium. I believe that Joa experienced the same effect. 2.) I have tracked down the code that "changes" the value for Z. It is : ------>> G4bool G4NeutronHPChannel::Register(G4NeutronHPFinalState *theFS) { registerCount++; G4int Z = G4lrint(theElement->GetZ()); if(registerCount<5) { Z = Z-registerCount; } <<-------- The G4NeutronHPInelastic class that eventually calls this method, calls it twice, hence the second time registerCount == 1 and causes germanium to become gallium. I ran the code with text output to verify that this is the case. What is the function of "registerCount" and why does it affect Z? Below is a dump from Geant 4 when I activated some of the g4cout statements already present, as well as some of my own: i 7 Element: Germanium-Enr86 Ge Z = 32.0 N = 75.7 A = 75.64 g/mole ---> Isotope: Germanium74 Z = 32 N = 74 A = 73.92 g/mole abundance: 14.00 % ---> Isotope: Germanium76 Z = 32 N = 76 A = 75.92 g/mole abundance: 86.00 % Registering i 7 Element: Germanium-Enr86 Ge Z = 32.0 N = 75.7 A = 75.64 g/mole ---> Isotope: Germanium74 Z = 32 N = 74 A = 73.92 g/mole abundance: 14.00 % ---> Isotope: Germanium76 Z = 32 N = 76 A = 75.92 g/mole abundance: 86.00 % 32 2 Init: normal case Getting initialized for: 74 32 Init: normal case Getting initialized for: 76 32 32 2 Init: normal case Init: normal case 32 2 Init: normal case Init: normal case ... last 3 lines repeated many times ... Registering i 7 Element: Germanium-Enr86 Ge Z = 32.0 N = 75.7 A = 75.64 g/mole ---> Isotope: Germanium74 Z = 32 N = 74 A = 73.92 g/mole abundance: 14.00 % ---> Isotope: Germanium76 Z = 32 N = 76 A = 75.92 g/mole abundance: 86.00 % 31 2 Init: mean case: 2 31 Element: Germanium-Enr86 Ge Z = 32.0 N = 75.7 A = 75.64 g/mole ---> Isotope: Germanium74 Z = 32 N = 74 A = 73.92 g/mole abundance: 14.00 % ---> Isotope: Germanium76 Z = 32 N = 76 A = 75.92 g/mole abundance: 86.00 % Getting initialized for: 69 31 Getting initialized for: 71 31 31 2 Init: mean case: 2 31 Element: Germanium-Enr86 Ge Z = 32.0 N = 75.7 A = 75.64 g/mole ---> Isotope: Germanium74 Z = 32 N = 74 A = 73.92 g/mole abundance: 14.00 % ---> Isotope: Germanium76 Z = 32 N = 76 A = 75.92 g/mole abundance: 86.00 % ... last 4 lines repeated many times... HasData? Channel : 0 HasData? Channel : 3 HasData? Channel : 4 HasData? Channel : 5 HasData? Channel : 9 HasData? Channel : 12 HasData? Channel : 22 HasData? Channel : 23 HasData? Channel : 24 HasData? Channel : 25 HasData? Channel : 26 HasData? Channel : 28 The last lines were produced by the code snippet inside class G4NeutronHPHPChannelList: inline G4bool HasDataInAnyFinalState() { G4bool result = false; G4int i; for(i=0; i<nChannels; i++) { if(theChannels[i]->HasDataInAnyFinalState()) { result = true; G4cout << "HasData? Channel : " << i << G4endl; } } return result; }
Removing the files: G4NDL3.7/Inelastic/CrossSection/32_70_Germanium G4NDL3.7/Inelastic/CrossSection/32_72_Germanium G4NDL3.7/Inelastic/CrossSection/32_73_Germanium G4NDL3.7/Inelastic/CrossSection/32_74_Germanium G4NDL3.7/Inelastic/CrossSection/32_76_Germanium eliminates the production of Ga. i have not verfied that the resulting gamma spectrum is correct.
Reopened
I think that the problem comes from the way the name of the database files is retrieved by processes/hadronic/models/neutron_hp/G4NeutronHPNames.cc. In fact Germanium has ISOTOPIC data files in the CrossSection/ directory, but only "natural" data files in the final state (i.e. FXX) directories. The existence-check is done on the CrossSection/ files. In other words, since CrossSection/32_70_Germanium does exist, the final state file is looked for as F01/32_70_Germanium. (the same in F02, etc). For G4NDL3.7, all the final state directories have ONLY the "_nat_" files for Germanium and the vector of possible final states is therefore empty. If the vector is empty, the program tries to read the data files from the previous element, which is Gallium. A possible solution (I don't know if it has some unwanted side-effect) is to correct G4NeutronHPNames.cc to check for the existence also in the FXX directories. In other words, if CrossSection/32_70_Germanium exists but FXX/32_70_Germanium does not, then try to read the final state infos from FXX/32_nat_Germanium. Luciano
Attempting to reopen, as user requested, to address new information.
This problem disappered after G4NDL3.8.(06Feb released) Deleted wrong data file which caused this trouble.