Message: Re: How to get total energy for different particles? Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Re: How to get total energy for different particles? 

Forum: Event and Track Management
Re: Question How to get total energy for different particles? (gdss)
Date: Feb 28, 03:09
From: chunhui gong <chunhui gong>

Dear gdss,

I also recorded all secondary particles and found the same problems as you.

Do you have any ideas about this problem? Looking forward to your answer. Thank you.

Best, Chunhui

On Wed, 19 Apr 2017 16:26:14 GMT, gdss wrote:

> Dear,
> 
> Recently I tried to get track ID, parent ID and energy for all secondary
> particles in one simulation. Primary particle was electrons (kinetic
> energy: 1~8 MeV) and sensitive material was liquid scintillator. Process
> involved mainly included ionization, Compton scattering, photoelectric
> effect, bremsstrahlung, scintillation etc.
> 
> At first, I read total energy by the following codes:
> 
>     void AnaMgr::PreUserTrackingAction (const G4Track* aTrack)
>     {
>       ......
> 
>       G4double edep = 0;
>       G4int id = aTrack->GetTrackID();
>       if (aTrack->GetDefinition()->GetParticleName() == "e-"){
>         edep = aTrack->GetKineticEnergy();
>       } else {
>         edep = aTrack->GetTotalEnergy();
>       }
>       Second_Energy[id] = edep;
>       ......
>    }
> 
> But it very strange that some electrons has higher energies than their
> parent particles. Please refer to the attached picture. In the picture,
> Type 0 and type 1 represent electrons produced by Compton scattering and
> ionization respectively, and type 6 stands for gamma produced by
> bremsstrahlung. Energies are in the unit of keV.
> 
> Now I used the following new codes to read total energy and the strange
> proble described above disappeared:
> 
>     void AnaMgr::UserSteppingAction (const G4Step* step)
>     {
>       ......
>       G4int id = step->GetTrack()->GetTrackID();
>       G4double deltaE = step->GetDeltaEnergy();
>       if (deltaE < 0) deltaE = -1*deltaE;
>       Second_Energy[id] += deltaE;
>       ......
>     }
> 
> In both codes, std::map<int,float> Second_Energy was defined somewhere
> else.
> 
> Could somebody tell me what is the difference between those two codes
> block above and which is the right one to get total energy of any
> secondary particles?
> 
> I used Geant4.9.4.p04. Any help will be greatly appreciated.
> 
>    Attachment:
>       http://hypernews.slac.stanford.edu/HyperNews/geant4/get/AUX/2017/04/19/09.02-61984-question.png
> 

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

1 None: Re: How to get total energy for different particles?   (gdss - Mar 01, 21:33)
 Add Message Add Message
to: "Re: How to get total energy for different particles?"

 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 ]