Incorrect Rn222 decay spectrum

Dear Geant4 users and experts,
I’m trying to simulate a Silicon detector for alpha spectrometry using a Rn222 source.
In my experimental set-up I have a volume filled with air in which using GPS(General Particle Source) macro commands I generate Rn222 ion. I use QGSP_BERT_HP PhysicsList.
These are the macro commands:
/analysis/h1/set 0 800 0.0 40000 keV
/gps/particle ion
/gps/ion 86 222 0 0
/gps/pos/centre 0. 0. 0. cm
/gps/pos/type Volume
/gps/pos/shape Para
/gps/pos/halfx 14 mm
/gps/pos/halfy 14 mm
/gps/pos/halfz 0.1 mm
/gps/ang/type iso
/run/printProgress 1000
/run/beamOn 10000

The resulting spectrum is


the expected spectrum should have peaks at 5486, 6003 and 7680 keV but I also see peaks at higher energies which do not make sense.
Could you please recommend me a solution to this issue?
What I’m doing wrong?
Thank you for reading, and in advance for the help!

Lewis

Ciao,

basically, Geant4 will decay Rn222 and all daughter unstable nuclei, down to Pb206. So, your spectrum is the sum of decays which can potentially take place days apart. Geant4 will provide the proper timing for each step of the decay chain, but you should keep this information into account when summing the energy deposit. The other alternative it to kill the unstable daughters upon production (e.g. at the StackAction) and hence let Geant4 simulate only Rn222 → Po218.

Besides what @pandola has said, you can also configure G4RadioactiveDecay directly to suppress the decay chain, using the command /grdm/nucleusLimits (which will become /process/had/rdm/nucleusLimits soon).

or run example rdecay01 with attached macro
lewis.mac.txt (265 Bytes)

Thank you all very much for the help!
My purpose is to study the full decay chain Rn222 ->Pb206. How can I get proper time provided by Geant4 and keep this information into account when I sum the energy deposit?
Is there an example that do this?
Thank you again for the help!

How are you collecting your data? If you’re using a SteppingAction or SD to create hit objects or to fill N-tuples, then just get the timestamp from the step/track (G4Step::PostStepPoint()->GetGlobalTime(), G4Track::GetGlobalTime()). If you’re using scorers, I presume there’s some way to filter the data, but I’m not familar with it.

Thank you for the help, I use SteppingAction to collect my data(I copied it from exampleB4a). I’m sorry but I do not understand, please could you be more specific?
Here you can find my SteppingAction file
B1SteppingAction.cc (3.0 KB)

Best regards

G4double time = step->GetPostStepPoint()->GetGlobalTime();

What you may want to do is to cache the decay time of the initial Rn-222 in the event (which you can identify easily because it’ll have both trackID = 1 and parentID = 0). Then you can apply a cut that you only record steps that are within some very short time of that decay.

Thank you again, I’m also trying to use

/grdm/nucleusLimits

I want to generate only Po218->Pb214 and Po214->Pb210 alpha peaks using the following commands

/gps/particle ion
/gps/ion 84 218 0 0
/process/had/rdm/nucleusLimits 210 222 84 86
/gps/pos/centre 0. 0. 0. cm
/gps/pos/type Volume
/gps/pos/shape Para
/gps/pos/halfx 14 mm
/gps/pos/halfy 14 mm
/gps/pos/halfz 0.1 mm
/gps/ang/type iso
/run/printProgress 2000
/run/beamOn 10000

the resulting spectrum is


Why do not I see Po214 peak? What am I doing wrong?
Thank you for your help.

lewis.mac.txt (260 Bytes)

Thank you for your answer, it’s very helpful.