Message: Re: Proton and Heavy Ion Radiotherapy Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Proton and Heavy Ion Radiotherapy 

Forum: Medical Applications
Re: Question Proton and Heavy Ion Radiotherapy
Date: 23 Jan, 2010
From: Tsukasa Aso <Tsukasa Aso>


 As your comment, some of heavy particles are created during simulation.

In particle filter, we assumes the particle must be created before the beamOn.
i.e. Inside particle filter, the particle names are converted to its object 
when the particle name is given into the particle filter. This is because
the comparison by its particle name (e.g. String) requires much CPU cost. 

 There are two solution for your question.
1) Create heavy ions before beamOn
2) Develop your own particle filter for heavy ion (As you wrote by charge etc.)

1) How to create and check the name of ions
  For example, 
  i) create C11, 
    /gun/particle ion
    /gun/ion   6 11      <-- Z=6, A=11

  ii) And check its name by dumping a particle list
    This command lists all of the particle names so that you need to
    look for your creating particle in the list.
    For example, C11 is named C11[0.0].

  iii) Then, you can add it for a particle filter.

2) How to describe the ion filter as SDFilter.
   i) Define sub-class of G4VSDFilter class.
      Please look at geant4/sources/digits_hits/scorer/include/ ant src/
     for example.

   ii) You have to describe a virtual method G4bool Accept() for 
     checking the condition in the filter.

     If you need C11 filter, the method may be as follows,

  G4bool G4SDParticleFilter::Accept(const G4Step* aStep) const
    // Current implementation
     for ( size_t i = 0; i < thePdef.size(); i++){
       if ( thePdef[i] == aStep->GetTrack()->GetDefinition() ) return TRUE;

    // (Solution 1)
    // If checking its charge is enough for your purpose 
    if(aStep->GetPreStepPoint()->GetCharge() != 6 ) return TRUE;

    // (Solution 2)
    // If you check it by Z and A
    const G4ParticleDefinition* pdef = aStep->GetTrack()->GetDefinition();
    if( pdef->GetAtomicNumber() == 6 && pdef->GetAtomicMass() == 11 ){
       return TRUE;

    return FALSE;

Best regards,
Tsukasa Aso

 Add Message Add Message
to: "Re: Proton and Heavy Ion Radiotherapy"

 Subscribe Subscribe

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

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]