Improving resolution to distinguish between Co60 peaks

Hi everyone,

I am trying to generate a spectrum of Co60 in geant4 by counting the number of scintillation photons produced. However, The two photopeaks are not resolved properly.

I tried increasing the scintillation yield, and the resolution increased only a bit, however computational times increased highly.

Does anyone know how can we improve the resolution between peaks in geant4?

Is there any parameter(s) for that, or maybe shall I change the detector geometry?

Thank You

The resolution is determined by fluctuation of the number of scintillation photons produced through a Poisson process. So if you have already correctly specified the optical properties of your scintillator material, the only thing you can do is reduce the value of the parameter RESOLUTIONSCALE. (Its default value is 1, meaning that the variance in the statistical fluctuations is multiplied by a factor of 1.) If it is set to 0, there should be no fluctuation in production of scintillation photons. So it is essentially like a Fano factor, if I understand it correctly. (See the Section on Scintillation in Chapter 5 of the Book for Application Developers - page 245 in Version 11.0.0 pdf file).

The geometry will not affect the intrinsic resolution. It will affect the number of events required to be able to effectively measure it.

Thank You Sir for the info,
I tried changing the RESOLUTIONSCALE parameter, however, there was no change in the resolution between the two peaks.

Can you suggest some way through which we can separate the two peaks in the image below?
I will also recheck my scintillation parameters as well for any errors.


PS: This is the pulse height spectra obtained from the number of scintillation photons produced.

Thank You

There is really not enough information to help you. Can you please provide information about the scintillator material, its size, wrapping, source-scintillator geometry and how you are counting the scintillation photons.

Sir, basically I modified the example OpNovice2.
The relevant info is
Scintillation Material: CsI

Size: Cylindrical(2inch by 2inch)

Wrapping; Aluminum

The source Co60 (through gun/ion) is situated at the center of the crystal.

Counting of Scintillation Photons: OpNovice2 already provided us with the counting of scintillation photons (through getting process name I suppose). So I used as it is.

I am not modeling the PMT as such all I am assuming is that the fraction of photons hitting PMT will be constant. So the shape of the spectra will not vary if we count the total number of scintillation photons or the number of scintillation photons hitting PMT.

Please correct me if this assumption will not be valid.

Thank You

Are you trying to simulate the scintillator CsI(Tl) or CsI? (The latter’s resolution is significantly poorer than the former’s.) What are the optical parameters that you have provided for the scintillator (index of refraction, absorption length, scintillator yield, etc.)? Am I correct in assuming that you are running OpNovice2 via a macro file? If so, is it possible for you post it?


I am trying to simulate the CsI(Tl) scintillator however I forgot to define and add thallium.

Also, I modified the example OpNovice, sorry for mentioning OpNovice2 again and again. Hence, I defined all the optical properties in the macro itself.

Relevant Optical Properties are

PhotonEnergies: {1.378eV, 1.577eV, 1.776eV, 1.855eV, 1.915eV, 1.975eV, 2.024eV, 2.074eV, 2.144eV, 2.194eV, 2.253eV, 2.273eV, 2.373eV, 2.452eV, 2.522eV, 2.552eV, 2.592eV, 2.611eV, 2.651eV, 2.711eV, 2.791eV, 2.940eV, 3.049eV, 3.149eV, 3.258eV, 3.368eV, 3.517eV, 3.845eV, 4.144eV, 4.512eV,
4.830eV, 5.089eV, 5.388eV, 5.726eV, 6.054eV, 6.203eV }

Refractive Index: 1.55(const)

Absorption Length: 7 m

scintComponent1 = { 0.0000, 0.0001, 0.0001,0.0002,0.0003,0.0005,0.0006,0.0007,0.0008,

scintComponent2 = { 0.0000, 0.0003, 0.0006, 0.0009, 0.0012, 0.0017, 0.0022, 0.0027, 0.0031, 0.0035, 0.0038, 0.0041, 0.0041, 0.0039, 0.0037, 0.0035, 0.0032, 0.0029, 0.0026, 0.0021, 0.0017, 0.0015, 0.0012, 0.0009, 0.0006, 0.0003, 0.0001, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000 , 0.0000, 0.0000, 0.0000, 0.0000};

Scintillation Yield : 6500/MeV




Thank You

Were you able to modify your material definition to include the thallium doping? If so, do you see better results when you run your simulation with that geometry?

Actually I am unable to find a value(percentage) of thallium to include in CsI for simulation?

Can you suggest a rough estimate for the same?

Thank You

The Tl doping fraction of CsI(Tl) is small, ~ 0.001 mole fraction. However, its inclusion will have no affect on the simulation resolution. The poor resolution is due to the SCINTILLATION YIELD being set to 6500/MeV. That is more than an order of magnitude too low. It should be ~54000/MeV for CsI(Tl). (6500 possibly may be correct for pure CsI whose resolution is very roughly 5 times worse than CsI(Tl) at Co60 energies.)

Also, your decay time constants are incorrect. The ones you are using are for NE213. For CsI(Tl) they should be something like 679ns and 3340ns, although there is a lot of variation in the literature.

Sir, I made the scintillation yield to be 60k.

The resolution between peaks has improved, however only a very small amount. The computation time has increased significantly, for 10k events(two gamma each) it is taking 40 mins.

Is there any other way we can obtain the spectra from scintillation photons? I am flexible in changing the suitable detector/geometry for the same.

Your resolution should be ~1% just based on scintillation photon yield statistics. If it is dramatically worse, something is wrong. Changing the geometry just changes the number of gamma events that interact with the scintillator; not the inherent resolution. You might try to increase the scintillator size to increase the photofraction.

To increase speed, I can only suggest the obvious; Run in multithreaded mode and/or use a faster computer. Depending on what you intend to use the simulation for, you could also just collect a spectrum of deposited energy (i.e., do not use the optical physics at all). If desired, you could use Matlab or other software to artificially broaden the spectrum with a Gaussian having resolution obtained from the literature.


Actually, I am trying to collect a spectrum of deposited energy. I have also broadened the peaks using an external code. However, the Compton continuum is not distinguishable in that graph.

Can you suggest some solution or if possible please share the code? I tried reducing the number of counts bud it also helped only a little.

Thank You

The spectra that I am getting (after broadening)

I’ll reply in your other thread, since this is really a change of topic.