|Message: Bug? G4UserSpecialCuts kills stopping particles||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
I encountered the following problem: I have set up G4UserLimits to my physical volumes, to limit the track length or time (whatever), and I have left the MinEkine and MinRange fields of this UserLimits class at its default value (0). Then I found much less eplus annihilations than before, so I increased the timelimit and track length cuts to their default (DBL_MAX): now everything is at its default value, so I would expect that in this case using or not using these (dummy) G4UserLimits should make no difference. But it still does: there are less eplus annihilations.
I *guess* the problem is the following:
1. If I don't use G4UserLimits, or do not add the G4UserSpecialCuts process to my particles, the positrons, when they loose all their energy and stop, nicely annihilate
2. If I use G4UserLimits and add the G4UserSpecialCuts process to my particles, and leave the MinEkin and MinRange at their default values (0), then the process G4UserSpecialCuts proposes a step length, during which the particles loose their energy completely, and stop.In many cases this process is the winner, and its PostStepDoIt function is called for the particles - which KILLS the particles, not leaving time for their annihilation. I think the G4UserSpecialCuts process should ignore the particle range or minimum kin. energy cuts, if they are set to 0, and only use them, if they are set to a positive value. Otherwise the above problem occurs.
I tried to validate the above assumption by deriving a class from G4UserSpecialCuts, and registering this process for the particles, instead of G4UserSpecialCuts. I overwrote the PostStepGetPhysicalInteractionLength function of G4UserSpecialCuts, so I could cut out that piece of code, which suggests a steplength based on the energy or range of the particle. If I did this, the number of positron annihilations became the same as if I did not use any UserLimits.
However, I am a newbie to geant4, so I might be wrong. Does anybody have any other idea, why 'dummy' UserLimits change the number of positron annihilations?
-- some more comments:
I have got one more idea: the process ordering might play an important role here. The page http://geant4.web.cern.ch/geant4/G4UsersDocuments/UsersGuides/ForApplicationDeveloper/html/TrackingAndPhysics/thresholdVScut.html has an example: pmanager->AddProcess(new G4UserSpecialCuts(),-1,-1,1); which I also used. I thought now that this example might be wrong, and G4UserSpecialCuts should not be the first process (as here), but the last one, so I changed the last argument to ordLast. To my greatest surprise the number of eplus annihilations further decreased in this case.
|Inline Depth:||Outline Depth:||Add message:|