[Gate-users] Gate dose to water problem

Andreas Resch andreas.resch at meduniwien.ac.at
Fri Feb 3 10:10:46 CET 2017


Am 2017-02-03 08:02, schrieb David Sarrut:
> Hello,
> 
> as a first workaround, Luc's suggestion is done here :
> https://github.com/OpenGATE/Gate/commit/90327e12eb4559dd838d02d2c1d97e5751251fda
> 
> Please test and report.
> 
> Sincerely,
> David
> 
> On Thu, Feb 2, 2017 at 6:01 PM, Grevillot Loic
> <loic.grevillot at medaustron.at> wrote:
> 
>> Hello,
>> 
>> Currently the DoseToWater part is incomplete and should contain
>> other particles, e.g. carbon ions, helium, etc.
>> 
>> The else part only means at the moment that if the system encounter
>> another type of particle, it will calculate the dose to water
>> assuming this particle is equivalent to a proton with an energy of
>> 100 MeV.
>> 
>> If we would remove the if (which could also be an option), then the
>> dose to water would be equal to the dose, as it would not be
>> rescaled by the stopping power ratio.
>> 
>> So currently the DoseToWater works for electrons, photons and proton
>> beams as far as I know.
>> 
>> I have in my to do list to upgrade it for particles up to carbon
>> ions, but did not have time yet, that being said it should not be
>> very difficult, just require a bit of time and also to find out the
>> correct naming convention used in Geant4 for the different particles
>> that can be generated.
>> 
>> Hope this help!
>> 
>> Best,
>> 
>> Loïc
>> 
>> FROM: Manuel Bardiès [mailto:manuel.bardies at inserm.fr]
>> SENT: Thursday, February 02, 2017 5:27 PM
>> TO: Luc SIMON
>> CC: Grevillot Loic; gate-users at lists.opengatecollaboration.org
>> SUBJECT: Re: [Gate-users] Gate dose to water problem
>> 
>> And thanks to Andreas as well (Luc missed his mail ;-)
>> 
>> Le 2 févr. 2017 à 17:23, Luc SIMON <uhqd75 at gmail.com> a écrit :
>> 
>> Dear all and in particular:
>> david.sarrut at creatis.insa-lyon.fr
>> gergely.patay at gmail.com
>> alexvergaragil at gmail.com
>> thomas at deschler.fr
>> 
>> AND ALL THE AUTHORS OF DOSEACTOR.CC [1] ...
>> 
>> FOLLOWING THE MAIL OF TONY YOUNES WE INVESTIGATED THIS BUG.
>> 
>> We found that the NaN values seem to come from DoseToActor.cc [2] at
>> this level (l 360)
>> 
>> // Other particles should be taken into account (Helium etc),
>> but bug ? FIXME
>> if (PartName== "proton" || PartName== "e-" || PartName== "e+" ||
>> PartName== "deuteron") {
>> 
>> DEDX = emcalc->ComputeTotalDEDX(Energy, PartName, material,
>> cut);
>> DEDX_Water = emcalc->ComputeTotalDEDX(Energy, PartName,
>> "G4_WATER", cut);
>> 
>> 
> doseToWater=edep/density/Volume/gray*(DEDX_Water/1.)/(DEDX/(density*e_SI));
>> }
>> else {
>> DEDX = emcalc->ComputeTotalDEDX(100, "proton", material, cut);
>> DEDX_Water = emcalc->ComputeTotalDEDX(100, "proton",
>> "G4_WATER", cut);
>> 
>> 
> doseToWater=edep/density/Volume/gray*(DEDX_Water/1.)/(DEDX/(density*e_SI));
>> }
>> 
>> IN THIS "IF" SECTION SOMETIMES DEDX AND DEDX_WATER ARE 0.0 AND THE
>> DIVISION 0 / 0 IS NAN (PLEASE NOTE THAT 3 / 0 IS INFINITE, WHICH IS
>> NOT A NAN VALUE...)
>> 
>> This problem is fixed. But now another question : why in the "else"
>> part DEDX_water is computed for proton ????? (while proton should be
>> considered in the first part... )
>> 
>> Moreover, photons should not contribute to "dose". So why do we need
>> this "else" part ????
>> 
>> Thank you for your help.
>> 
>> Luc & Tony
>> 
>> 2017-01-31 16:22 GMT+01:00 Grevillot Loic
>> <loic.grevillot at medaustron.at>:
>> 
>> Hi,
>> 
>> Could you send macros and output files?
>> 
>> Best,
>> 
>> Loïc
>> 
>> FROM: tony youness [mailto:tony_youness at live.com]
>> SENT: Tuesday, January 31, 2017 3:14 PM
>> TO: Grevillot Loic; gate-users at lists.opengatecollaboration.org
>> SUBJECT: Re: Gate dose to water problem
>> 
>> Hi,
>> 
>> I am simulating high energy photon beams (6 and 10 MeV) for external
>> radiotherapy applications.
>> 
>> I tried both ("Water" and "G4_WATER") and I am still getting NAN
>> values (only when the absorbed dose is reported as absorbed dose to
>> water). The voxel values between both absorbed dose report (Dose to
>> medium and Dose to water) are also different even though that the
>> medium is WATER.
>> 
>> Regards,
>> 
>> Tony
>> 
>> On 31/01/17 8:37 am, Grevillot Loic wrote:
>> 
>> Hello,
>> 
>> Which beam are you simulating? (photons, electrons, light ions,
>> etc.)
>> 
>> Which water did you define in your simulation? “Water” is
>> different from “GEANT4_WATER” -> could you try using
>> GEANT4_WATER?
>> 
>> Best,
>> 
>> Loïc
>> 
>> FROM: Gate-users
>> [mailto:gate-users-bounces at lists.opengatecollaboration.org] ON
>> BEHALF OF tony youness
>> SENT: Monday, January 30, 2017 1:04 PM
>> TO: gate-users at lists.opengatecollaboration.org
>> SUBJECT: [Gate-users] Gate dose to water problem
>> 
>> Dear All,
>> 
>> I am facing a problem with gate dose actor. When enabling dose to
>> water i get Nan values in some of the voxels in the water region of
>> my phantom. I also get different values in the water voxels between
>> both dose reports (dose to medium and dose to water). It seems like
>> there's a bug when gate tries to converts dose to medium into the
>> dose to water when in the water region. Has anyone already faced
>> this problem? Any help would be much appreciated.
>> 
>> Kind Regards,
>> 
>> Tony Younes
>> 
>> DISCLAIMER:
>> Please notice our E-Mail Disclaimer
>> http://www.medaustron.at/email-disclaimer/ [3]
>> 
>> DISCLAIMER:
>> Please notice our E-Mail Disclaimer
>> http://www.medaustron.at/email-disclaimer/ [3]
>> 
>> _______________________________________________
>> Gate-users mailing list
>> Gate-users at lists.opengatecollaboration.org
>> http://lists.opengatecollaboration.org/mailman/listinfo/gate-users
>> [4]
>> 
>> --
>> 
>> ___________________
>> 
>> SIMON Luc, Physicien Médical, PhD
>> Département d'Ingénierie et de Physique Médicale - IUCT-Oncopole
>> - Toulouse, FRANCE
>> 
>> INSERM UMR 1037 (CRCT) - Equipe 15 - Toulouse, FRANCE
>> 
>> _______________________________________________
>> Gate-users mailing list
>> Gate-users at lists.opengatecollaboration.org
>> http://lists.opengatecollaboration.org/mailman/listinfo/gate-users
>> [4]
> 
> DISCLAIMER:
> Please notice our E-Mail Disclaimer
> http://www.medaustron.at/email-disclaimer/ [3]
> 
> _______________________________________________
> Gate-users mailing list
> Gate-users at lists.opengatecollaboration.org
> http://lists.opengatecollaboration.org/mailman/listinfo/gate-users [4]
> 
> --
> 
> David Sarrut, Phd
> Directeur de recherche CNRS
> CREATIS, UMR CNRS 5220, Inserm U1206
> Centre de lutte contre le cancer Léon Bérard
> 28 rue Laënnec, 69373 Lyon cedex 08
> Tel : 04 78 78 51 51 / 06 74 72 05 42
> http://www.creatis.insa-lyon.fr/~dsarrut
> _________________________________
>  "2 + 2 = 5,  for extremely large values of 2"
> _________________________________
> 
> Links:
> ------
> [1] http://doseactor.cc
> [2] http://dosetoactor.cc
> [3] http://www.medaustron.at/email-disclaimer/
> [4] http://lists.opengatecollaboration.org/mailman/listinfo/gate-users
> _______________________________________________
> Gate-users mailing list
> Gate-users at lists.opengatecollaboration.org
> http://lists.opengatecollaboration.org/mailman/listinfo/gate-users

Hi,

I am not sure about the exact definition of dose-to-water, so I might be 
wrong. However, I would suggest to use the mean energy of post and pre 
step point for stopping power calculation (it is defined in this way for 
LET in ICRU 73)? Why do we need this if "proton" in the first place? 
Couldn't we just say: if not photon get DEDX?  Sth like this for 
example:

	 const G4Material* materialTest = 
step->GetPreStepPoint()->GetMaterial();//->GetName();
      double energy1 = step->GetPreStepPoint()->GetKineticEnergy();
      double energy2 = step->GetPostStepPoint()->GetKineticEnergy();
      double energy=(energy1+energy2)/2;
      const G4ParticleDefinition* partname = 
step->GetTrack()->GetDefinition();//->GetParticleName();

	//G4double dedxAR = emcalc->ComputeElectronicDEDX(energyAR, partnameAR, 
materialAR);
	G4double DEDX = 1;
	G4double DEDX_Water = 1;
	// if not a photon get DEDX
	if ( partname->GetPDGEncoding() != 22  )
	{
		DEDX = emcalc->ComputeTotalDEDX(energy,partname,materialTest, cut);
                 DEDX_Water = emcalc->ComputeTotalDEDX(energy, PartName, 
"G4_WATER", cut);

	}
	doseToWater=edep/density/Volume/gray*(DEDX_Water/1.)/(DEDX/(density*e_SI));

	if (DEDX_Water == 0 || DEDX == 0) {
		GateWarning("DEDX = 0 in doseToWater, Edep ommited");
		G4cout<<"PartName: "<< PartName<<" Edep: "<<edep/gray<<G4endl;
		doseToWater = 0.0;
	}


ANDREAS RESCH, M.SC.
PhD student, Medical Physics

MEDICAL UNIVERSITY OF VIENNA
Department of Radiotherapy
Christian Doppler Laboratory for Medical Radiation Physics for Radiation
Oncology


More information about the Gate-users mailing list