Message: Re: Get Particle Name of Energy Deposit for Equivalent Dose Scorer Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Get Particle Name of Energy Deposit for Equivalent Dose Scorer 

Forum: Biasing and Scoring
Re: None Get Particle Name of Energy Deposit for Equivalent Dose Scorer (Matthew Lund)
Re: None Re: Get Particle Name of Energy Deposit for Equivalent Dose Scorer (Tsukasa Aso)
Date: 19 Mar, 2015
From: Matthew Lund <Matthew Lund>

I'm using the aStep->GetTotalEnergyDeposit(); to get the energy deposit, the GetKineticEnergy is for the weighting factor to multiple the dose. Attached below is more of the code to see what I'm doing. The scorer is correct for simple volumes with correct weighting factor; however, if there are multiple volumes of shielding, the weighting factor comes out higher than it should be. I assume that I'm getting the primary particle name and energy, not the actual particle name and energy that is doing the energy deposit within the scoring volume. Any ideas of how to correct that.

G4double edep = aStep->GetTotalEnergyDeposit();
  if ( edep == 0. ) return FALSE;

  G4int idx = ((G4TouchableHistory*)
	       (aStep->GetPreStepPoint()->GetTouchable()))
               ->GetReplicaNumber(indexDepth);
  G4double cubicVolume = ComputeVolume(aStep, idx);

  G4double density = aStep->GetTrack()->GetStep()->GetPreStepPoint()->GetMaterial()->GetDensity();
  G4double dose    = edep / ( density * cubicVolume );

    G4String particleName = aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName();
    G4double kineticEnergy = aStep->GetTrack()->GetDynamicParticle()->GetKineticEnergy();
    G4double weight = 1.;

    // from ICRP Publication 60 (1990)
    if (particleName == "gamma") {
        weight = 1.;
    } else if ((particleName == "e-")||(particleName == "e+")||(particleName == "mu-")||(particleName == "mu+")) {
        // still to be implemented "Excluding Auger electrons emitted from nuclei bound to DNA"
        weight = 1.;
    } else if (particleName == "neutron") {
            if (kineticEnergy<10*keV) {
                weight = 5.;
            } else if (kineticEnergy < 100 * keV) {
                weight = 10.;
            } else if (kineticEnergy <   2 * MeV) {
                weight = 20.;
            } else if (kineticEnergy <  20 * MeV) {
                weight = 10.;
            } else {
                weight = 5.;
            }
    } else if ((particleName == "proton") && (kineticEnergy > 2*MeV)) {
        // still to be implemented "other than recoil protons"
        weight = 5.;
    } else if ((particleName=="alpha") || (particleName=="GenericIon") || (particleName=="He3") || (particleName=="deuteron") || (particleName=="triton") ) {
        // check how to recognise the ions
        weight = 20.;
    } else {
        weight = 1.;
    }

  dose *= aStep->GetPreStepPoint()->GetWeight();
    G4double eqdose = dose*weight;
  G4int  index = GetIndex(aStep);
  EvtMap->add(index,eqdose);
  return TRUE;

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Get Particle Name of Energy Deposit for Equivalent Dose Scorer   (Daren Sawkey - 19 Mar, 2015)
 Add Message Add Message
to: "Re: Get Particle Name of Energy Deposit for Equivalent Dose Scorer"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews