Message: A way to score charge deposition without slicing up geometry Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Idea A way to score charge deposition without slicing up geometry 

Forum: Hits, Digitization and Pileup
Date: 10 Sep, 2008
From: Mark Looper <Mark Looper>

One of the things I work on a lot is "deep dielectric charging" or "bulk charging," the phenomenon where energetic electrons in space come to a stop in insulating materials like circuit boards or wire insulation within a spacecraft, then discharge in a destructive manner when enough charge builds up. For my present study, I need to map out the location of charging events (either a charged particle coming to a stop in a material, or a secondary electron being ejected from the material) in very fine spatial detail.

I could use the G4PSCellCharge or G4PSCellCharge3D primitive scorers, or the similar approach in examples/advanced/cosmicray_charging, or the command-line scorers; these define volumes of interest, and simply add and subtract the charges of particles entering and leaving each volume. However, because of the spatial resolution I need, I would have to define huge numbers of very small volumes, and a lot of time would be wasted interrupting particle tracks to add and subtract the charge at the boundaries of volumes in which the particle neither originated nor stopped. What I want to do is define no geometric volumes (including those in a parallel world) that are not actually required by the physical experiment layout, and simply log the points where each charged particle is generated, is destroyed, or comes to rest. That is, I don't want to impose any tracking burden merely for purposes of histogramming the charge deposition.

Originally I did this kind of calculation in EGS4, and later EGSnrc; in fact, I had to do something besides define a lot of very fine "histogramming" regions, because these codes have trouble with tracking when region scales get too small. I was getting absurd results like all particles stopping in the topmost layer, no matter how thin! In these codes I was able, with much effort, to identify all the physical interactions that represent charging events, and log deposited or liberated charge at the location of each such physical interaction; however, I had no idea how to do this in Geant4.

Fortunately, there is enough information in a G4Track object to do this at the level of an individual particle's creation and destruction, rather than at each physical interaction as I had to do in EGS. Simply define a G4UserTrackingAction class with a PostUserTrackingAction method like so:

void MyTrackingAction::PostUserTrackingAction(const G4Track * aTrack)
G4ThreeVector vertex = aTrack->GetVertexPosition();
G4ThreeVector terminus = aTrack->GetPosition();
G4double chg = aTrack->GetDynamicParticle()->GetCharge();

if (chg != 0.)


At the XXX above, you would log charge deposit equal to chg at position terminus, and equal to -1. * chg at position vertex. Voilà! Unlike the agonies I had to go through to ensure that charge conservation was handled properly in EGS, here it is taken care of automatically. I don't know if this idea would be useful to the Geant4 developers in creating another kind of primitive scorer that doesn't burden the tracking system with more geometric regions (including in a parallel world) and their boundaries, but users who need another way to tot up charge deposition may find it useful.

 Add Message Add Message
to: "A way to score charge deposition without slicing up geometry"

 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 ]