I am looking at time-of-flight PET and need sub-nanosecond timing for the interactions of the gammas within the detectors. Using short-lived isotopes (Ga-68 and F-18) modeled using G4ParticleDefinition* ion = G4IonTable::GetIonTable()->GetIon(Z, A, excitEnergy), I have been able to use the GetGlobalTime() command to subtract the decay time from the interactions in order to get time of flight with sub-ns accuracy. Unfortunately when I use a Na-22 source (2.6 years halflife), the precision of the stored global time does store enough digits (for example, here the positron creation time is: 206181057557627744 ns = 2.06e17 = 6.5 years. The G4double seems to max out at 18 digits, not giving any more digits.
So, my primary question: is there a way to increase the precision (or number of digits) of the output from fStep->GetPreStepPoint()->GetGlobalTime()?
I have considered other options, but not really sure how or want to implement them if the above is not possible. First option is reset the global time back to zero after the decay, but the the SetGlobalTime() doesn’t seem to do anything. Second option is to not simulate the full radioactive decay of the isotope, but just the resulting positrons, but this is not ideal because requires more work and each isotope would need to be individually simulated (plus wouldn’t get the 1.27 MeV gamma from Na-22).
Thanks for your thoughts and suggestions, Steve