How to add p(7Li, n)7Be reaction to the physics list?

Dear all the experts,
I’m a new hand for Geant4. I wanna do the simulation about p(7Li, n)7Be, namely the inverse kinematics reaction for 7Li(p, n)7Be. I tried all the PhysicsLists in Geant4, but none of them include the inverse kinematics for light ions. How to create this reaction?
It is appreciated if someone tells me.
Thanks a lot!

Here, two macros for example Hadr03 and their printout.
In, I selected G4HadronicPhysicsQGSP_BIC_AllHP and G4IonPhysicsPHP.
you need to have dataset G4TENDL1.4 installed.
azihao1.mac.txt (329 Bytes)
azihao1.out.txt (1.6 KB)

azihao2.mac.txt (338 Bytes)
azihao2.out.txt (2.1 KB)

1 Like

Dear maire,
Thanks for your help. According to your suggestion, I use example Hadr03 and get the following printout:
List of nuclear reactions:

                                       Li7 + H --> 2 alpha:     613   Q =  17.347 MeV
                                 Li7 + H --> neutron + Be7:     368   Q = -1.6444 MeV
                                  Li7 + H --> proton + Li7:     988   Q = 5.6153e-08 eV 

List of generated particles:
Be7: 368 Emean = 12.602 MeV ( 11.041 MeV → 14.304 MeV)
Li7: 988 Emean = 12.926 MeV ( 9.2501 MeV → 16.498 MeV)
alpha: 1226 Emean = 16.923 MeV ( 191.77 keV → 33.655 MeV)
neutron: 368 Emean = 2.2532 MeV ( 551.62 keV → 3.815 MeV)
proton: 988 Emean = 3.574 MeV ( 2.0329 keV → 7.2499 MeV)

Momentum balance: Pmean = 2.7355e-05 eV ( 1.0634e-07 eV → 0.0018597 eV )
But the secondary particles like neutrons are not displayed. Where’s the problem?

Thank you!

Readme, line 48 : An event is killed at the first interaction of the incident particle.

Thank you, maire! I see it. But how to display the secondary particles? What should I add or change?

I find it in the, i.e., G4RunManager::GetRunManager()->AbortEvent(), but when I delete this line,the program will flash back. I don’t know why. Does anyone meet this problem? It’s very helpful if someone can tell me. Thanks!

As explained in Readme, this example is designed to demonstrate nuclear reactions alone.
It is necessary to kill event at first interaction to identify properly nuclear channels and compute nuclear interaction length.

If you remove AbortEvent(), put at beginning of SteppingAction the protection :

//check trackID and stepNumber
G4int trackID = aStep->GetTrack()->GetTrackID();
G4int stepNb = aStep->GetTrack()->GetCurrentStepNumber();
if (trackID*stepNb != 1) return;

This will allow you to create and visualize secondaries, without disturbing the rest of the program.

For a more realistic simulation (eg. including electromagnetic interactions), start from Hadr06 or Hadr07

Thank you, maire! I solve it according to your advice. I learn a lot from you! Thanks again!

Dear all the experts,
I use exampleHadr03 to simulate p(7Li, n)7Be reaction according to maire’s advice. But I meet another problem. When I register electromagnetic process in the physicslist, neutrons will not be displayed in visualization. The following two pictures are seperately the situation before and after adding the eletromagnetic process.

Have you ever encountered such problems?I would appreciate it if someone could help me!

Did you run one event alone with /tracking/verbose 2. ?

Dear maire,
Thanks for your reply. I run a event after setting /tracking/verbose 2, and there are only ionisation for Li_7 and H. I found that two physical processes(G4HadronPhysicsQGSP_BIC_HP and G4EmStandardPhysics) cannot be used at the same time, maybe because p(7Li, n)7Be reaction cross section is much smaller than electromagnetism reaction. When I replace G4HadronPhysicsQGSP_BIC_HP with G4HadronInelasticQBBC, neutron will be produced but very few. So I wanna adding eventbiasing into simulation but I don’t know how to do it. Do you know that, maire?
Looking forward to your reply! Thank you!

I am not familiar with biasing techniques. Experts on this field are :
Marc Verderi (,
Alex Howard (

This mail comes too late: I guess you have already found what I will say ! Nevertheless I post it for completion.
With G4 examples we can estimate the rate of neutron production.

  • From TestEm0, we learn that stopping range by ionisation of a Li7 ion, 20 MeV, in liquid hydrogen (eg. G4_lH2) is ~548 um
  • From Hadr03, the nuclear inelastic interaction length (aka mean free path) of the same ion is 30.72 cm
    Hence, the probability to have an inelastic interaction within 548 um is 548 um/30.72 cm = ~17.84 e-4
    We also see that the nuclear channel Li7(p,Be7)n is only ~21.7% of the total inelastic interaction. So, probability to create Be7 + n is (0.217*14.84e-4) = ~3.87 e-4

-A run of Hadr07 gives 176 Be7 for 10ˆ6 incident Li7
azihao.out.txt (2.5 KB)

Dear maire,
Tahnks for your detailed answer! Now I’m sure it’s the problem of interaction length. I still find a way to solve it. If I have a solution, I will reply to you as soon as possible.
Thank you!

Ideally, there would be a multiplicative factor available when accessing the cross section dataset.
Ask or