Geant4 获取粒子信息
Step文件里
G4StepPoint* preStepPoint = step->GetPreStepPoint();//step的前端点
G4StepPoint* postStepPoint = step->GetPostStepPoint();//step的后端点
G4String particleID = step->GetTrack()->GetParticleDefinition()->GetParticleName();//获取粒子名称
//printf("%s\n", particleID.c_str());//在终端实时打印粒子名称
if (preStepPoint->GetStepStatus() == fGeomBoundary){
G4double xStep = step->GetPreStepPoint()->GetPosition().x();//x坐标
G4double yStep = step->GetPreStepPoint()->GetPosition().y();//y坐标
G4double zStep = step->GetPreStepPoint()->GetPosition().z();//z坐标
G4double energy = step->GetTrack()->GetDynamicParticle()->GetKineticEnergy();//粒子动能
}
- 我通常定义一个 真空volum作为探测器,使用判断边界的方法获取某特定平面上的粒子分布情况。
其他:
step‐>GetPreStepPoint()‐>GetGlobalTime();
// get current track information
G4Track* track = step‐>GetTrack();
/* some examples of track information */
track‐>GetParticleDefinition()
// ‐> Get Particle informations
track‐>GetTrackID();
track‐>GetParentID();
track‐>GetCurrentStepNumber();
track‐>GetKineticEnergy();