トラックしたい(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();