News:

:) You cannot see "members only" boards if you are not a member, so please join the forum!

Main Menu

X-ray spectrum simulation without Poisson noise and cutoff

Started by ZhaiQ, June 10, 2025, 03:27:03 PM

Previous topic - Next topic

ZhaiQ

Hi everyone,

I'm currently running X-ray spectra simulations using the Monte Carlo method. However, I've encountered a couple of issues:
1. The simulation results consistently include Poisson noise, even though I have specified in the script:withPoisson=False2. The generated X-ray spectra appear to be limited to a fixed energy range (10 keV in my case) and a fixed bin size (5 eV in my case).

Could anyone advise on how to: 1) Eliminate the Poisson noise from the simulation results? 2) Modify the energy range of the X-ray spectra within the script? 3) Adjust the bin size within the script?

I'd appreciate any insights or suggestions. Thank you very much!

My script for your reference:
import dtsa2.mcSimulate3 as mc3
mc3.multiFilm([[Graphite,2e-6]],d1,e0=200.0,withPoisson=False,nTraj=50000,dose=50000).display()

Nicholas Ritchie

I think the problem is your detector 'd1'.  You might define a custom detector with the parameters you want.  Let's call it 'ZhaiQ detector' and then load it using 'findDetector(..)'

> det = findDetector("ZhaiQ detector")
> mc3.multiFilm([[Graphite,2e-6]],det,e0=200.0,withPoisson=False,nTraj=50000,dose=50000).display()
"Do what you can, with what you have, where you are"
  - Teddy Roosevelt

ZhaiQ

The detector labeled 'd1' refers to a custom detector I defined based on my experimental conditions. It indeed has a bin size of 5 eV. Could this be the reason for the fixed energy bin size and energy range in the output?

If so, may I ask how I can extract the theoretical spectra without the limitations on bin size and energy range? At the same time, I would like to retain the collection angle and solid angle.

Additionally, I noticed that the noisy spectra may be related to the Monte Carlo method? Increasing the number of 'nTraj' seems to smooth the results, but it increases computation time a lot. Is there a way to solve this issue without heavily increasing the number of trajectories?

Thank you very much for your help!