トラックの粒子をしりたい(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}