Open kylechampley opened 1 month ago
@lc82111, I assume you've seen the demo scripts here, here, and here.
Modeling the spectra involves three major components: 1) x-ray source spectra 2) filtering of the source spectra 3) detector response.
The XrayPhysics library provides models for all three of these. The hardest one to get right is the detector response because vendors don't always disclose details about how the x-ray detector is constructed. For example, the materials used in the front face of the detector (which is usually plastic and/ or aluminum) must be included in item (2) above, the x-ray filters. The best way to model the detector response is with a Monte Carlo simulation, but this is very difficult to do. So here are the main components you will need to model each of the items above
X-ray Source Spectra kV setting, anode take-off angle, and the anode material type. Most x-ray tubes use a Tungsten (W) anode and a take-off angle between 11 and 30 degrees.
X-ray Filters the chemical formula, density, and thickness of all materials the x-ray passes through include the materials in the front face of the detector (but do not include anything in the object you are scanning)
Detector Response We use just a simple model of the product of stopping power of the scintillator material and a linear conversion of x-ray energy to photodiode response. For this you need the chemical formula, density, and thickness of the scintillator. The XrayPhysics library has many of the detector types in its material library which you can use. This includes: GOS, CsI, LSO, LYSO, NaI, BGO, GSO, and CZT.
If you get all of these specified accurately and you employ all the correction algorithms, you should be able to remove most of the artifacts. If you goal is absolute quantitative accuracy, then you will want to calibrate your spectra by scanning well-known references and tuning the spectra model until the model matches the measurement. I will add spectral calibration algorithms to LEAP sometime in the future.
I am on the work to convert BHC example into native c++ with xrayphysics library. And comments are helpful for me too.
What questions do you guys have?
Originally posted by @lc82111 in https://github.com/LLNL/LEAP/issues/71#issuecomment-2380564686