トラックしたい(G4Track

G4Trackは、トラック情報を管理するオブジェクトです。 トラック粒子の進む方向のオブジェクトです。 ステップと同等の情報を持っていますが、薄皮一枚くらい上位のオブジェクト(というイメージ)です。

トラック情報はG4UserTrackingActionクラスをフックにしてカスタマイズするのに使います。

トラック番号をしりたい(GetTrackID

1G4int track_id = aTrack->GetTrackID();

ステップをしりたい(GetStep

1G4Step step = aTrack->GetStep();

ステップの長さをしりたい(GetStepLength

1G4double step_length = aTrack->GetStepLength();

粒子をしりたい

1aTrack->GetDynamicParticle();
2aTrack->GetParticleDefinition();
3aTrack->GetDefinition();

座標をしりたい(GetPosition

1G4ThreeVector position = aTrack->GetPosition();

トラックの座標を取得できます。 座標の原点はワールドボリュームの中心です。

時刻をしりたい(GetLocalTime

1G4double local_time = aTrack->GetLocalTime();
2G4double global_time = aTrack->GetGlobalTime();
3G4double proper_time = aTrack->GetProperTime();

GetLocalTimeでトラックが生成されてからの経過時間、 GetGlobalTimeでトラックが含まれるイベントが生成されてからの経過時間、 GetProperTimeで固有時間(トラックが生成されてからの経過時間の静止系の時刻)を取得できます。

運動量をしりたい(GetMomentum

1G4double momentum = aTrack->GetMomentum();
2G4ThreeVector momentum_direction = aTrack->GetMomentumDirection();

GetMomentumDirectionで運動量の単位ベクトル成分、 GetMomentumで運動量の合計を取得できます。

エネルギーをしりたい(GetTotalEnergy

1G4double energy = aTrack->GetTotalEnergy();
2G4double kinetic_energy = aTrack->GetKineticEnergy();

GetTotalEnergyでエネルギーの合計、 GetKineticEnergyで運動エネルギーの合計を取得できます。

ボリュームをしりたい(GetVolume

1G4VPhysicalVolume *physical_volume = aTrack->GetVolume();
2G4VPhysicalVolume *next_volume = aTrack->GetNextVolume();
3G4LogicalVolume *logical_volume = aTrack->GetLogicalVolumeAtVertex();

GetVolumeでトラックがある物理ボリュームを取得できます。 GetNextVolumeで、トラックの進む先の物理ボリュームも取得できます。 これはステップとトラックのコンセプトの違いを感じられる部分だと思います。

また、GetLogicalVolumeAtVertexで論理ボリュームを直接取得できます。

注釈

未チェックですが、 トラック:aTrack->GetLogicalVolumeAtVertex()と ステップ:aStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()は 同じになるはずです。

一次粒子をしりたい(GetVertexPosition

1G4ThreeVector vertex_position = aTrack->GetVertexPosition();
2G4ThreeVector vertex_momentum_direction = aTrack->GetVertexMomentumDirection();
3G4Double vertex_kinetic_energy = aTrack->GetVertexKineticEnergy();