OpenGATE / Gate

Official public repository of Gate
http://www.opengatecollaboration.org
GNU Lesser General Public License v3.0
236 stars 263 forks source link

customize fastI124 source code to achieve any non-pure positron emitter #384

Closed albertnew2012 closed 3 years ago

albertnew2012 commented 3 years ago

I think there is a high demand for fast non-pure beta emitter sources in GATE simulation. In the past ten years, there are many kinds of research conducted on simultaneous multiple tracer PET imaging utilizing a pure and a non-pure positron emitter [1,2,3,4] as it may open a new field for PET imaging. So far, researchers across the world who work on this topic heavily rely on the built-in ion source for the simulation of the non-pure beta emitter. The built-in ion source is extremely slow ( ~10 times slower than back-to-back gamma source), which render the simulation for many NEMA measurements simulation infeasible even running with 56 core on a server as it can take up to a month-long.

There was a clear effort to tackle this problem in the GATE simulation package, such as fastI124 source. However, a fast I-124 source is far from enough to quench the need for fast simulation of non-pure beta emitter isotopes because of different branching ratios, like Sc44, Ga68, Y90, and many others. I looked into fastI124.cc, it seems to be easy for an average GATE user to adapt fastI124 source code into any other non-pure beta emitter source, such as Sc44 and Ga68. But unfortunately, I could not do so because I don't understand and can't find the exact values of amplitude of majoring function and normalisation factor for energy distribution (Fermi function) in the following fastI124 source code for any other isotopes.

 // This defines the 13 transitions forming the simplified scheme
 // Entries are:
 //             for gammas :      current state / next state / cumulative probability / particle emitted (gamma)    / energy
 //             for e+     :      current state / next state / cumulative probability / particle emitted (e+)       / max energy ...
 //                               ... / amplitude of majoring function / normalisation factor for energy distribution (Fermi function) / atomic number

    m_simpleDecay = new GateSimplifiedDecay();
    m_particleVector = new std::vector<psd>;

  m_simpleDecay->addTransition( new GateSimplifiedDecayTransition(0, 1, 0.0175,  mem_fn( &GateSimplifiedDecayTransition::issueGamma),     1.376   )  );
  m_simpleDecay->addTransition( new GateSimplifiedDecayTransition(0, 1, 0.0488,  mem_fn( &GateSimplifiedDecayTransition::issueGamma),     1.509   )  );
  m_simpleDecay->addTransition( new GateSimplifiedDecayTransition(0, 1, 0.1189,  mem_fn( &GateSimplifiedDecayTransition::issueNone )              )  );
  m_simpleDecay->addTransition( new GateSimplifiedDecayTransition(0, 2, 0.2359,  mem_fn( &GateSimplifiedDecayTransition::issuePositron),  1.534,  1.4,  0.4407471595713562, 53) );

Could GATE developers let users know where to find these values for a specific isotope, say Ga68 for example? Meanwhile, on top of modifying the transitions forming the simplified scheme, is there anything else that a user needs to modify to achieve the simulation of fast Sc44, Ga68, Y90, and many others? It will be very helpful to get official guidance on how to customize fastI124 source code to achieve another fast non-pure positron emitter source rather than using an extremely slow built-in ion source.

dsarrut commented 3 years ago

Below is not a real reply, but some thoughts from colleagues: "For gamma emission, it seems that only the BR the initial, final state and the energy of the emitted gamma are employed. However, for beta decay, I do not know where to find those amplitude and normalisation factors. For example here for the positron emission of 124I the last two input parameters before the atomic number (Z=53) of addTransition function. m_simpleDecay->addTransition( new GateSimplifiedDecayTransition(0, 2, 0.2359, mem_fn( &GateSimplifiedDecayTransition::issuePositron), 1.534, 1.4, 0.4407471595713562, 53) );" "Maybe Nudat2 can bring information about transitions: https://www.nndc.bnl.gov/nudat2/decaysearchdirect.jsp?nuc=124I&unc=nds"

"The two parameters to be defined in GATE are:

I don't see what the "majoring function" is. We would have to look in the code. I am pretty sure that there is no database for these quantities. They depend on the theoretical physical model used to model the spectrum of emitted betas. " See : https://en.wikipedia.org/wiki/Beta_decay#Beta_emission_spectrum (see also approximations of the Fermi function in related papers)

This is the code here : https://github.com/OpenGATE/Gate/blob/develop/source/digits_hits/src/GateSimplifiedDecayTransition.cc Majoring function is used line 58.