Switching off elastic scattering

Hello, I am modeling low-energy electrons (< 300 keV) going through Silicon, and would like to do assume there is no elastic scattering, so no deflection in the trajectory, just energy loss. Is there a way to achieve this? I saw a feature in the Book for application developers, namely a method “InactivateProcess()”, that sounds like a way to do what I want, but I could not find any example of its use. An example of how to use this method to switch off elastic scattering would be immensely helpful, as I’m not very expert in C++. Thanks!

  • eliminate multiple scattering : in your macro, after /run/initialize
    /process/inactivate msc

  • in addition, if you wish to prevent delta-rays and brems production :
    /run/setCut 1 km

    See example extended/electromagnetic/TestEm1 : erange.mac

1 Like

Thanks very much, Maire. I am using the single-scattering model, G4EmStandardPhysicsSS. Would your advice apply to this as well, or is there a specific switch for the single-scattering case?


If you add the command /process/list, you will see the name of the process : CoulombScat

So, /process/inactivate CoulombScat

1 Like

Thanks very much again, Maire.

Best regards,

By the way, since you said that this command should be placed after the /run/initialize, I was wondering if my other commands in the macro file are placed correctly. (I have some /run/… that are before /run/initialize). Could you please confirm for me that the order here is correct:

/run/numberOfWorkers 4
/cuts/setLowEdge 10 eV
/cuts/setMaxCutEnergy 1 GeV
/run/setCut 200 nm
/process/em/lowestElectronEnergy 0 eV
/process/inactivate CoulombScat
/control/verbose 0
/run/verbose 1
/event/verbose 0
/tracking/verbose 0
/gun/particle e-
/gun/energy 300 keV
/run/printProgress 1000
/run/beamOn 10000

Thank you,

I believe that they are ok.

1 Like

Sorry to bother again. The switching off of CoulombScat worked well, but still some deflections of the trajectories remain, caused by the inelastic events. Is there a way to impose zero deflection angle, and just keep the energy loss at each collision?

Thank you,

This is depending of your list of physics processes. If there are only electromagnetic processes, setCut = 1 km to prevent any delta rays or brems creation.
If you have hadronic processes, you can not avoid secondaries creation.

1 Like

Is that completely true? My understanding was that G4VUserPhysicsList::SetApplyCuts(true, "all") causes a configuration of the stepping(?) manager, such that secondaries from any process would be killed.

1 Like

Thank you Maire and Mkelsey. The setting of the range cut to 1 km actually worked well, as I don’t have any hadronic processes in my case, yielding perfectly straight trajectories. :+1:


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.