トラックの粒子をしりたい(G4Track::GetParticleDefinition

1// G4Track *aTrack
2auto particle = aTrack->GetParticleDefinition();
3
4// その他
5aTrack->GetDynamicParticle();
6aTrack->GetDefinition();

粒子名をしりたい(GetParticleName

1G4String particle_name = particle->GetParticleName();
2G4debug << "ParticleName=" << particle_name << G4endl;
3// ParticleName=gamma
4// ParticleName=mu-

PDG番号をしりたい(GetPDGEncoding

1G4int particle_id = particle->GetPDGEncoding();
2G4debug << "PDGEncoding=" << particle_id << G4endl;
3// PDGEncoding=22    // gamma
4// PDGEncoding=13    // mu-

GetPDGEncodingでPDG(Particle Data Group)でMC用に定義された粒子の固有番号を取得します。 解析でフィルタリングするとき、粒子名ではなく、この番号を使うと便利なこともあるので、出力データに追加しておくとよいと思います。

粒子を判別したい

1if (aTrack->GetDefinition() == G4OpticalPhoton::OpticalPhotonDefinition())
2{
3  // 光子の場合の処理;
4};
5
6if (aTrack->GetDefinition() == G4Electron::ElectronDefinition())
7{
8  // 電子の場合の処理;
9}

リファレンス