Safety vs Prod cut (doesn't work as expected)

I built a box made of G4_Si with (x,y,z) full dimensions (0.3um, 0.3um, 0.5um). I shoot an alpha particle along z towards the center of the volume. I attached to that volume a customized primitive scorer from which I access info. The physics is QGSP_BIC_EMY.

When applying a production cut of 1um, I get a few hundreds of delta electrons (as I would expect). When I apply a production cut of 1mm, there are no electrons produced. Given that in the volume I described above, the safety would be always smaller than 1um, why does the production cut prevail and there are no electrons produced? I would expect approximately the same number of electrons as with the 1um cut.

Thanks in advance for any hint

What is the kinetic energy of alpha particles ?

It’s 7MeV. I tried also at 60MeV, with the same result. For higher energies the number of delta electrons produced with 1um cut is of course smaller than for lower energies.

New edit: I did the same test for 10.03.p03 and for 10.06.p02, with the same result.

1- the 2 concepts are independent. It is not true that, ‘on fly’, we would recompute currentCut = min(cut, safety).
2- If you run the attached macro, you will read that, for an alpha (7 MeV) on silicon, the maximum energy transferable is ~ 4 keV. Cut = 1 mm gives min delta ray energy = ~ 550 keV. Therefore there are no delta rays produced : the cross section is null.
gdedes.mac.txt (313 Bytes)

Thanks for the reply. In reverse order:

  1. that’s right, for 1mm cut it’s perfectly reasonable not to have any electrons produced

  2. I’m really puzzled by the fact currentCut = min(cut, safety) is not applied. I remember it differently from slides by Makoto Asai and some past documentation from the old Geant4 website, where this was advertised:

Case3, firgure 3 even showcases that. That’s also what I understand (maybe wrongly) when I read the the respective part of the new manual:

There’s also the statement “The particle is stacked if range > min(cut,safety)”. This is stated under the case “ApplyCut in ON”. Does the user need to set this flag ON? I did from the physics list and I can see in the tracking that this flag is then true, but still the result is the same.

Maybe I misunderstood what I’m reading in the manual. If in any case currentCut = min(cut, safety) is not recomputed as I interpret the documentation, is there a way to do activate this?

thanks to recall me this old story ( 15 years ago …)
I tried to redo the exercice with attached macro ( subcutoff.mac) but result is the opposite of what I expected : d-rays seems to be generated below safety !
We will have to submit a bug report.
subcutoff.mac.txt (607 Bytes)

thanks for looking into this. I guess you take care of the bug report, or should I do something about it?

Regardless of the bug, I would still expect to have electrons created below the prod threshold when they’re near the boundary (safety). That’s something still unclear to me, because you mentioned in one of your previous replies that it doesn’t work like that. But aren’t electrons supposed to be created below the prod threshold when the safety<prod_thres as shown here:

1- Yes, I will make a bug report, but after the December release.
2- My answer was too quick. The sub cutoff production possibility exists, but it is optional, and governed by the 2 commands :

/process/eLoss/subsec true World
/process/eLoss/minsubsec 0.01

where minsubsec is the ratio new_subCut/defaultCut
Then the code will (should !) generate d-rays with range > max (new_subCut, safety)

I’m reviving this after some testing. Actually I can’t make it work properly. I found out that the value next to the /process/eLoss/subsec true needs to be the name of a region. In my simulation I have two regions, one of them being the DefaultRegionForTheWorld and a second one, which is my custom region.

I run 1 particle and switch the tracking/verbose to 1 in order to get some information printed out. I set the cuts to 1*mm and without the /process/eLoss/subsec and the /process/eLoss/minsubsec no delta-rays are created. Then I use the commands and start changing the argument of the /process/eLoss/minsubsec to lower and lower fractions. No delta rays will be created until I reach a value (0.001 for my custom region and 0.00001 for the DefaultRegionForTheWorld) when there’s a crash every time a primary enters the region specified by the /process/eLoss/subsec. I tried both 10.06.2 and 10.03.03