Make radioactive secondaries new events

I want to simulate the energy spectrum of a Germanium detector with a U/Th source. The time window of the detector is short, so it is not likely that mother nucleus (like U238) and its daughter (like Th234) deposit energy in the “same event” of the detector. These, depite daughter comes from mother, are two events.
So currently I’m simulating the spectrum by simulating each of the element from the U/Th chain seperately. To do this, I have to kill all the radioactive secondaries from the mother nucleus to prevent them from further decay. This way I can get the correct energy deposition by collecting energy deposition in each step and add them up. This depostion only come from the mother nucleus. If I dont do this, the result will be like all elements from the chain decayed in the detector at the same time, and the energy will clearly be wrong.
So here is the question: Is it possible that I can make the radioactive daughter become the mother of the next event automatically? This way I can get the whole spectrum by only simulating the head of the chain like U238/Th232.
I know there is a “postpone to next event” track status, but I’m not sure in this “next event”, if only the postponed tracks are simulated? Or those postponed tracks are simulated with a new mother track?

The “postpone” action is not what you want. That puts the postponed tracks into the next event with a new mother track (pileup), just as you suspect.

The decay daughters are assigned time stamps corresponding to the halflife of the decaying parent. So you could apply a time cut (corresponding to your device’s trigger window) in your stepping action. If you’re recording the individual hits directly into an N-tuple, make sure you include the time stamp and you can apply that cut in your analysis.

You could also use a StackingAction in your application with a time limit, killing new tracks (daughters) with a time stamp later than your trigger window.

… just my two cents here …

you can also do this in your Sensitive Detector. If the hit is within the experimental window… add to current hit… else, create a new one. As @mkelsey say, don’t forget to have the GlobalTime to assist you in your analysis.

Also, you can limit your decays ‘one step at a time’ by using different applicability limits for radioactive decay /grdm/nucleusLimits.

Just a word of warning, the global time of long-lived isotopes may not be useful for this kind of trigger-time-window discrimination by default. If your U238 takes 10 billion years to decay and your trigger time window is 10 ms, that’s a ratio of 10^19 which is much smaller than the precision of a double. So for example all the hits produced by Bi-214 and Po-214 will have the exact same value for their global timestamp even if separated by 100s of ms.

I think there might be built-in ways now to override the decay times in gdrm. In our sims we subclass the G4RadioactiveDecay class and set a hard limit to the max decay time.

Hi bloer. I am in a similar situation where I want to force my radioactive nucleus and all its daughter particle to decay immediately or within some time on the order of ns. Could you please give some hints on how can I do that? More specifically, if I want to write a user defined radioactive decay class, which base class should I use from Geant4 and which member function should allow putting a limit on decaying time?