Separation of Compton scattering and Full absorption peak from the spectrum

Dear all,
I am playing around with silicon micro-strip sensors and as an exercise, I was trying to separate photons from Compton scattering and full absorption peak (photopeak) from the rest of the spectrum.

gamma source: 137Cs
world material: air
sensitive detector: silicon (0.8m* 0.8m* 0.4m)

The part in the stepping action, which is supposed to detect certain photon interactions and save deposited energies:

void MySteppingAction::UserSteppingAction(const G4Step *step)
{    
    G4LogicalVolume *volume = step->GetPreStepPoint()->GetTouchableHandle()->GetVolume()->GetLogicalVolume();
    const MyDetectorConstruction *detectorConstruction = static_cast<const MyDetectorConstruction*> (G4RunManager::GetRunManager()->GetUserDetectorConstruction());
    G4LogicalVolume *fScoringVolume = detectorConstruction->GetScoringVolume();
    if(volume != fScoringVolume)
        return;

    G4Track* track = step->GetTrack();
    G4double edep = step->GetTotalEnergyDeposit();
    if(edep > 0.) { fEventAction->AddEdep(edep);} 

    const G4ParticleDefinition* particle = track->GetDefinition();	
    if(particle->GetParticleName() == "gamma") {
        G4String processName = step->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName();
        if(processName == "compt") {
            G4double edepcompt = step->GetTotalEnergyDeposit();
            if(edepcompt > 0.) {fEventAction->AddEdepCompt(edepcompt);
        }
        else if(processName == "phot") {
            G4double edepfap = step->GetTotalEnergyDeposit();
            if(edepfap > 0.) {fEventAction->AddEdepFAP(edepfap);}
        }  
	}
}

However, the results are looking incorrect:
Full energy deposited in silicon
A normal-looking 137Cs spectrum (all the particles including photons): clear Compton edge at 0.45 MeV and full absorption peak 0.664 MeV.

energy deposited due photo effect
Registered photo effect energies.“0” bin has too many entries and no 0.664 MeV peak.

energy deposited due Compton scattering
Registered Compton scattering energies. Again, “0” bin has too many entries, and the rest of bin has very low entry counts (<100).

I’m not quite sure what the problem is since every method of separation I found uses the same approach.
I guess that I might be registering the wrong processes.

Many thanks in advance!

Geant4 Version: 4.10.07.p02
Operating System: Ubuntu 20.04.6 LTS
Compiler/Version: GCC 9.4.0
CMake Version: 3.16.3


Hello,

have you considered that by selecting the gamma-ray as your particle you are only recording the energy deposition to the “first electron” in that interaction. You are not scoring the many ionizations/energy lose that said electron is later depositing in the material.

Maybe you can register the track ID of that first electron coming from “phot” or “compt” and see if you can add the energies of them and their respective secondaries into the corresponding histograms… it should be easy for the direct secondaries of those “first secondaries”… but it might ger hairy to track the many generations.

I think it might be better to run two simulation with the same statistics… and use the SteppingAction to AVOID energy deposition (kill secondaries and don’t put the energy in the histogram) when the interaction is of a given type. Of course it is not strictly what you are asking but if you run enough statistics they should be statistically equivalent.

Cheers,

/Pico

1 Like

@pico is right. Currently you enforce that the particle is a gamma and then undergoes compton (or photoelectric) so the energy deposited will be of just the first step of the electron which will be a tiny fraction of the total energy (the “0” bin).

One way to do this is to check if compton ever occurs in your stepping action and set a flag in the event action. Accumulate all energy (gamma, electron, whatever) deposited in your volume. At end of event action populate “compton” and “photopeak” histograms depending on the flag setting. Then reset the flag for the next event. However this will just get you compton events that subsequently deliver full energy (so will account for events in the photopeak).

To get just the compton electron’s energy you would kill the compton photon. The fastest way to kill that photon without killing the initial incident gamma is by parent ID. The incident 662 keV gamma ray will have a parent ID of 0, all other gammas will be 1 or higher. This could be checked in the PreUserTrackingAction instead of the stepping action for speed and would prevent the generation of undesired secondaries.

1 Like