I used Cf-252 Decay with macro file for simulating the neutron generation.
Unfortunately, when I want to get the global time of each reaction, the global time only reflect the decay time (roughly same as the half-life of californium-252, ~2.62 years). Alike below table.
#column string Detector Name
#column string Particle Name
#column string Pre Reaction Name
#column string Post Reaction Name
#column string Pre Global Time
#column string Post Global Time
#column double Pre Reaction Local Time (ns)
#column double Post Reaction Local Time (ns)
#column double Deposited Energy (keV)
#column double Pre Reaction Kinetic Energy (keV)
#column double Post Reaction Kinetic Energy (keV)
#column int Parent ID
#column int Track ID
#column int Event ID
LSDSensitiveDetector
neutron
Transportation
hadElastic
7.69029E+16
7.69029E+16
38.9556
43.9667
36.7529
291.746
255.013
1
13
7465
LSDSensitiveDetector
neutron
hadElastic
hadElastic
7.69029E+16
7.69029E+16
43.9667
49.6278
42.5737
255.013
212.455
1
13
7465
LSDSensitiveDetector
neutron
hadElastic
hadElastic
7.69029E+16
7.69029E+16
49.6278
50.1838
0
212.455
13.1352
1
13
7465
LSDSensitiveDetector
neutron
hadElastic
hadElastic
7.69029E+16
7.69029E+16
50.1838
63.4412
3.49121
13.1352
9.64594
1
13
7465
To get the real global time of each reaction, Which code do I have to modify?
Geant4 Version: 10.7.3 Operating System: Windows 11 Compiler/Version: Windows Visual Studio 2022 CMake Version: 3.28.0
We had a similar problem in our simulation framework. Because we developed our code with older G4 versions, we introduced our own wrapper process around G4RadioactiveDecay.
What the process does is to reset the global times of all the secondaries from a primary decay (i.e., if the Cf-252 or whatever has G4Track::ParentID()==0) to be zero. More precisely, we reset the secondaries to have their timestamp set equal to the global time of the Cf-252 primary track.
That eliminates the initial decay half-life from the rest of the event. But for any other decays along the way (the Cf-252 alpha chain, induced radioisotopes, whatever), those half-lives are properly accounted for.
It’s possible that G4RadioactiveDecay includes a flag to do this automatically now, but I just don’t know for sure.
I am definitely not recommending modifying the Geant4 source code. If you do that, you lose all hope of getting help and support, because the developers cannot know what code you’re actually running.
Geant4 provides the ability to define a “WrapperProcess”, where you can do stuff on top of the official code. I suggest reviewing the documentation for that, including the Geant4 tutorials, and see whether it is suitable to your purpose.
It is possible that the specific problem you have has been addressed in one of the Geant4 11-Series releases. I suggest reviewing the documentation for radioactive decay and see whether there’s a macro command or other configuration setting you could use to achieve your desired goal.