Low energy photon simulations

Hi all

I’m trying to simulate a source of photons with an energy of just 3eV and have not been able to get the simulation running.

Just wondering if anyone has any work arounds for this error

RuntimeError: ERROR: ERROR: Source energy below range of energies of at least one cross section table ERROR: Source energy below range of energies of at least one cross section ERROR: ERROR: ERROR: Source energy below range of energies of at least one cross sectiontable table Source energy below range of energies of at least one cross section Source energy below range of energies of at least one cross sectionSource energy below range of energies of at least one cross section table free(): corrupted unsorted chunks table table ERROR: Source energy below range of energies of at least one cross section table

Photons at energies on the order of eV are down in the visible or UV spectrum and the data that we use (and pretty much every other MC code you’ve heard of) is not appropriate because it doesn’t account for molecular effects which are dominant down in that energy range. Single atom photoelectric thresholds are generally around 10 eV, so if you try using our normal data, there are no cross sections. To simulate photons of such low energy, you would need to account for photoexcitation effects in molecules and I’m not even sure where you’d get such data. The closest capability I know of is the optical photon capability in Geant4 which have been used to study scintillation and Cerenkov radiation. Even there, I think you as the user have to provide cross sections.

1 Like

Dear @Shimwell,

I think that this is due to the transport cutoff (1keV) of OpenMC. At these energies, there is also the Heisenberg wave-particle duality aspect to consider. It is one of the reasons that Cullen and Salvat do not allow the use of their cross sections below 1keV. OpenMC seems to follow these recommendations. This is what Lund and Romano mention:

Because photon interactions depend on material properties below ∼ 1 keV, this is typically the cutoff energy used in photon calculations to ensure that the free atom model remains valid. The data needed to model photon interactions and photon production comes primarily from ENDF sublibraries, but additional sources are needed in some cases.

The Geant4-DNA (G4EmDNAPhysicsList) library could be appropriate for your problem. It is based on micro-dosimetry models for radiobiology, from 0.025 eV to 10MeV.

Thanks for the helpful answers. Sounds much trickier than I originally thought and I see now why neutronic codes in general don’t have this feature. Thanks for the pointer to G4EmDNAPhysicsList, impressive features, I shall have a read up on how that works.

All the best

Jon

1 Like

I would also note that Geant4 DNA extends the energy range down primarily for electrons and other charged particles. For photons, the physics processes used in the G4 DNA physics list are the same ones used in the standard electromagnetic physics, meaning they come with the same limitations that we’ve been discussing:

Yes, @paulromano is right. It is also clearly written: " [For G4EmDNAPhysicsList], Gamma interactions are based on the Geant4 Livermore/EADL97 models and they are included by default in all G4EmDNAPhysics constructors.*", so based on the old Cullen EPICS data.

In the same subject, I would like to add a note on this which may be useful in the future. One can perfectly modify the cuts in his Geant-4 application, e.g. I did the test with these modifications in my input files, so for secondaries,

SetCutValue(0.02 * eV, “gamma”);
SetCutValue(0.02 * eV, “e-”);
SetCutValue(0.02 * eV, “e+”);

and these modifications for transport cuts,

G4double lowLimit = 0.02 * eV;
G4double highLimit = 100.0 * MeV;
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowLimit, highLimit)

without forgetting:

/process/em/deexcitationIgnoreCut true

I tried something close to @Shimwell question; a 3eV photon beam irradiating a Uranium slab. I used the G4EmLivermorePhysicsList (so EPICS data for all particles), and it works (the output file for 10 events).

Even if the data (or Geant-4) seems to allow it, this is strongly discouraged by Cullen and Salvat, here is a reminder of what Cullen said (page 5-6) about it for the EPICS-2017 data:

The electron and photon data used in EPICS are limited to ATOMIC DATA, elemental, cold, neutral, isolated atoms; this is in line with its intent for use in engineering applications. This limits the data to be used ONLY at higher energies. I recommend that it should not be used in applications below 100 eV; Francesc Salvat recommends not below 1 keV [3]. Users should be aware that the EPICS data extends to low energy (eV range) ONLY to allow data such as anomalous and coherent scattering factors to be calculated (this involves an integral over the entire energy range of the photoelectric cross sections). At lower energies atomic effects become progressively more important and invalidate the designed features, again: EPICS data are limited to ATOMIC elemental, cold, neutral, isolated atoms. This does not include NUCLEAR data, which at high energies can be substantial. WARNING: CAVEAT EMPTOR: Do not try to use this data at lower energies (eV range) – if you do, your results can be very inaccurate, and you will have nobody to blame except yourself.

In conclusion, I find safer the OpenMC cuts.

Hope this helps @Shimwell.

2 Likes

@Shimwell
you might want to look at something like the McXtrace package https://www.mcxtrace.org/
it is used for accelerator based light source instrument design, and works off the same basic code as McStas for low energy neutron instrument design. not sure if it will go down to 3 eV, but it might be more likely than traditional nuclear MC codes.