How to add resolution and energy efficiency to energy deposited spectrum?

Hi everyone. I am recording energy deposited in HPGe detectors and scintillation detectors. I got the histograms through user event actions in event class and stepping action class.
I got my energy deposited spectrum, but it is not so similar compared with real spectrum. For instance, the width of photo peak at 662 keV in real life is bigger. Also, the counts are less. Due to energy efficiency 32 keV photo peak has almost the same counts that 662 keV, even though the last one is more emitted.
Someone who can help me to add resolution and energy efficiency to my simulation?
I will thank you a lot!

1 Like

Hello,

I’m guessing you are simulating a 137Cs source. The width of the peak in your detectors must be included by you. Your detector is unique, is it new? old? fully biased? all those factors will affect its energy resolution.

You should “smear” the energy you detect to match the FWHM of your detector.

For the efficiency… if the simulated peak is too high it could be due to various things: Is your source too intense? too close to the detector such that it gets summed up? Maybe you have not added all the Al casing. 32keV photons are relatively easy to stop.

Hope this helps.

Hello pico,

I am having a similar situation as it is mentioned in this post. I am simulating Cs-137 isotope from cables around HPGe detectors and recording the energy deposition in HPGe detectors. I have the correct simulated spectrum as shown below but i want to add detector resolution to it. Could you tell me how can one do it? Do i need to put it during simulation or can i add detector response after having simulated spectrum?

cesium_decay

I really appreciate your help.

Thanks!

Dear @khushbakht123,

normally the FWHM of the detectors depend on the energy, often but not limited to a sqrt(E) function.

So… what you can do is to add/remove energy to the recorded energy (the one you plot) directly in Geant4 something like:

auto Edep = Energy in keV or MeV
FWHM = a + b * std::sqrt(Edep);

auto smear = 0.0;
do {
        smear = FWHM * noise();
}
while ((Edep + smear) <= 0);
      Edep += smear;

where noise is a random funcion that returns a gaussian with FWHM of 1. (The same goes for sigma but it is common to have detector resolutions in FWHM.)

The reason to do it in a while loop is to avoid low energies to be smeared to negative values.

HOWEVER!!! That being said… I THINK this is good ONLY if you are 100% sure of your detector resolution, never want to change it and you, arguably, have only 1 detector. If you don’t, just do a similar process but smear the counts of the spectrum you show in post processing. That is… after the simulation, just apply to the “result” basically.

1 Like