Equivalent dose calculation in slices

Good morning everyone,I need to calculate the equivalent dose in my phantom, but I have a problem in the quality factor using this equation (H = Q (L) .D) for the carbon ion beam. Can someone help me please.
cordially.

Quality factors are provided in ICRU reports.

greetings dear @guatelli ;
yes i have already found it in this report. but i don’t know the way to implement it in my code because it has three conditions. if you have any idea please help me.
cordially.
G4double dedxtot=emCal.ComputeElectronicDEDX(energy1,particle1,material1);
G4double LET=dedxtot;
G4double Dosetot=edep/mass;

if(LET<10.keV/um){ Q=1;}
else if(10
keV/um<=LET && LET<=100keV/um){Q=0.32/pow(LET,2.2);}
else if(LET>100
keV/um){Q=300./sqrt(LET);}

H = Dosetot*Q;

Here it seems that the nuclear stopping power is neglected. I would calculate the edep in the sensitive volume (SV), with high cut and switching off the energy loss fluctuations and multiple scattering, and divide the edep value by the track length in the SV.

Hello, i am also interested in this topic so can you please tell me in which class (stepping action or event action) you are calculating equivalent dose ? and how ? apart from this quality factor consideration.
actually i am throwing some different-2 energy particle on my detector and now i want to write equivalent dose in a file and in which class i should do that but i am unable to do this so can you please help me with this, it will be very helpful.
Thanks

Hello,

Check out example B5 it might help clarify things.

Have you defined one of your logical volumes as a sensitive detector volume in your detector construction?

I would record the energy deposition within the event action by accessing your sensitive detector hits.

Recording the dose via the stepping action adds some complexity and will likely slow down your code. It’s best to stick with the event action in your case.

What do you mean by “throwing two energy particles?” Do you mean that your primary generator action generates two primary particles with different energies at once?

If you want the total dose deposited by each particle you’ll need to keep track of the parent ID (under step->track) within the sensitive detector class.

Happy coding!

Charles

As mentioned above, you can calculate the dose in a SV and then, based on the LET, you multiply by Q. As far as I know there is no example in Geant4 calculating directly the equivalent dose.

Hello, I followed exact procedure you suggested here. I calculated the absorbed dose by dividing the edep by the mass of the absorber. I used the quality factor provided by the ICRU report and multiply the absorbed dose based on the LET.

I expected the dose equivalent to be lower in low density hydrogenous materials but i am getting a contrary result.

Please do I get it wrong

ok, let me first say that in this case we should talk about “dose equivalent” rather than “equivalent dose”. Which ICRU report did you refer to? where do you calculate the dose? in addition, in order to understand better the results, compare the various shielding solutions in terms of : secondary radiation field emerging from the shielding itself, energy deposition, dose and then dose equivalent.
Cheers

1 Like

I used ICRP 2013. Assessment of Radiation Exposure of Astronauts in Space. https://doi.org/10.1016/j.icrp.2013.05.004. I calculate the dose using TestEm5 under the Geant4 extended example. This is the how I modify the code in obtaining the dose

const G4Material* material = fDetector->GetAbsorberMaterial();
G4double length = fDetector->GetAbsorberThickness();
G4double density = material->GetDensity();
G4String partName = fParticle->GetParticleName();

G4EmCalculator emCalculator;
G4double dEdxTable = 0., dEdxFull = 0.;
if (fParticle->GetPDGCharge()!= 0.) {
dEdxTable = emCalculator.GetDEDX(fEkin,fParticle,material);
dEdxFull = emCalculator.ComputeTotalDEDX(fEkin,fParticle,material);
}
G4double stopTable = dEdxTable/density;
G4double stopFull = dEdxFull /density;

G4double mass = fDetector->GetAbsorberThickness()* fDetector->GetAbsorberSizeYZ()* density;
G4double dose = fEnergyDeposit / mass;