Created attachment 325 [details] header and source code for fixing the Auger cascade problem Description of the problem: I am simulating radioactive decays of 40K. 10% of the time, 40K decays via electron capture into 40Ar. The 40Ar relaxes either by fluorescence or auger electrons. When plotting the total energy released, not all were around 3.1 keV. There are two peaks around 2.6 keV and 2.9 keV. Please see fixed_auger_before.pdf . Source of the problem: Through inspection of the source code of G4UAtomicDeexcitation, the problem is found to be the handling of Auger electron emissions. In fluorescence cascade, there is always one vacancy, but when Auger electron is emitted, there will be two vacancies, one from the electron that is relaxing, and the other from the Auger electron ejected. But in the Geant4 (4.10.01) only one vacancy from the electron being relaxed is kept track of. For example in argon-40 (see EADL datafile in Geant4), when vacancy in shell 1 gets filled by an e- from shell 5 and ejects an e- from shell 6, there should be two vacancies at shell 5 and shell 6, but Geant4.10.01 keeps track of only the vacancy at shell 5. Therefore energy released is not "conserved." Fix of the problem: This problem can be fixed by adding a vector to keep track of the IDs of vacancies. So I changed the source code as follows: 1) add a vector<G4int> member class in the .hh file. 2) In GenerateAuger and GenerateFluo functions, instead of passing the new vacancy by assigning it to newShellId, push_back the new vacancies into the member vector. Note that in case of Auger emission two vacancies are pushed into the vector. 3) In the GenerateParticle method, at the beginning push the givenShellId into the vector so that it is not empty. Next enter the while-loop. As long as the vector is not empty, stay in the loop. 4) In each iteration, process the first ID in the vector. Then erase it from the vector. Note that in this process new vacancy IDs are being pushed into the shells. I am attaching the modified codes in the attachment as well. Since I can only attach one file, I have appended .cc file in the .hh file of G4UAtomicDeexcitation. Hope Geant4 community can verify the problem and my solution! Best Regards,
Created attachment 326 [details] plot for the energy spectrum before the proposed fix. This file shows the total energy released in the relaxation before fix.
Created attachment 327 [details] energy spectrum after the fix
Dear Suerfu, Thanks very much for your detailed report. Could you please let us know how you calculate the peaks shown on your spectra ? With kind regards, SI
Dear Sebastien, The spectrum is generated by collecting the total energy released in the deexcitation process. For example, 40K deexcites and emits first a photon by (vacancy) moving to shell 3 from shell 1, and then the vacancy in shell 3 creates auger electron from shell 5. Then the energy of the auger electron and the photon is combined to give the total energy released as electrons/gamma in the deexcitation process. The binding energy of the K-shell electron of argon is approximately 3.2 keV, so the total energy released in deexcitation should be close to it. It is natural to have several mini-spikes in the spectrum around 3.2 keV since not all vacancies can relax via auger/fluorescence. For example, if the vacancy goes to shell 7, then according to Geant4 datafile, no fluorescence or auger process is allowed. In the current Geant4 distribution, it is missing vacancies when auger process happens, therefore energy is also missing. When Geant4 misses vacancy created in shell 6, it gives the peak around 2.9 keV since the auger electron from shell 6 has approximately 200 eV energy.
(In reply to comment #3) > Dear Suerfu, > > Thanks very much for your detailed report. > > Could you please let us know how you calculate the peaks shown on your spectra > ? > > With kind regards, > SI Dear Sebastien, The spectrum is generated by collecting the total energy released in the deexcitation process. For example, 40K deexcites and emits first a photon by (vacancy) moving to shell 3 from shell 1, and then the vacancy in shell 3 creates auger electron from shell 5. Then the energy of the auger electron and the photon is combined to give the total energy released as electrons/gamma in the deexcitation process. The binding energy of the K-shell electron of argon is approximately 3.2 keV, so the total energy released in deexcitation should be close to it. It is natural to have several mini-spikes in the spectrum around 3.2 keV since not all vacancies can relax via auger/fluorescence. For example, if the vacancy goes to shell 7, then according to Geant4 datafile, no fluorescence or auger process is allowed. In the current Geant4 distribution, it is missing vacancies when auger process happens, therefore energy is also missing. When Geant4 misses vacancy created in shell 6, it gives the peak around 2.9 keV since the auger electron from shell 6 has approximately 200 eV energy.
(In reply to comment #5) Ciao, > In the current Geant4 distribution, it is missing vacancies when auger process > happens, therefore energy is also missing. When Geant4 misses vacancy created > in shell 6, it gives the peak around 2.9 keV since the auger electron from > shell 6 has approximately 200 eV energy. if I understand correctly, you sum up the energy of all secondaries, without taking into account the local energy deposit? I mean, the Geant4 processes have an internal check "a posteriori" of the energy conservation. If the binding energy of the initial shell is not taken entirely by the secondaries, the difference is released locally (as a local energy deposit) and it is not attached to any secondary track. At the end of the day, the sum of all secondaries plus the local energy deposit should exactly match the binding energy of the initial vacancy. Did you try this test, or am I missing something? Ciao, Luciano
Ciao Luciano, Yes, I am summing only the secondaries without taking into account the energy that is deposited locally. If I understand correctly, after generating secondaries, the remaining energy is taken as deposited locally (such as heat or vibrations). In the case of Auger electrons, when vacancies are missing in the auger cascade, energy that should have come out as auger electrons / X-ray photons are now being deposited locally. Though energy is conserved, it may bias simulation results. Ciao Suerfu
Geant4 does not currently simulate whole Auger cascades. The proposed extension will be further discussed in the collaboration, in collaboration with Suerfu.
Ciao, (In reply to comment #7) > Yes, I am summing only the secondaries without taking into account the energy > that is deposited locally. If I understand correctly, after generating > secondaries, the remaining energy is taken as deposited locally (such as heat > or vibrations). yes, the residual energy which is not attributed to any specific secondary (e.g. because below threshold) is deposited locally, so to always guarantee the energy conservation. On the other hand, the total energy deposit is the only "physical observable", since the sum of the secondaries is not "measurable" (it is not the right Monte Carlo result to compare to). > In the case of Auger electrons, when vacancies are missing in the auger > cascade, energy that should have come out as auger electrons / X-ray photons > are now being deposited locally. Though energy is conserved, it may bias > simulation results. well, the simulation is not biased, but can be not precise on the length scale of the range of those secondaries. If you deposited 200 eV locally, instead of producing a 200-eV electron, you are disregarding the fact that the secondary electron would travel a fraction of mum from the first interaction point. So, this approximation is relevant only if you need to know the E vs. (x,y,z) dose deposition with a mub-micron precision. This kind of approximation is the core of the mixed Monte Carlo method and is at the basis of the cut-in-range approach... Ciao, Luciano > > Ciao > Suerfu