ステップポイントの境界判断したい(G4StepPoint::GetStepStatus

1// 始点の状態
2auto pre_step = aStep->GetPreStepPoint();
3G4StepStatus status = pre_step->GetStepStatus();
4
5// 終点の状態
6auto post_step = aStep->GetPostStepPoint();
7G4StepStatus status = post_step->GetStepStatus();

GetStepStatusで、ステップ点の境界の状態を取得できます。

fWorldBoundaryはステップ点がワールド境界に到達した状態、 fGeomBoundaryはステップ点が物質の境界に到達した状態です。 他の状態はenum G4StepStatusで確認できます。

ヒント

シミュレーションの結果を保存する際、測定器の中で起きたステップかどうかを毎回確認する必要があります。 そのあたりを適切に処理してくれるのがG4VSensitiveDetectorクラスです。

ステップがジオメトリに入ったことをしりたい

1auto step_point = aStep->GetPreStepPoint();
2auto status = step_point->GetStepStatus();
3if (status == fGeomBoundary) {
4    // ジオメトリ内にある場合の処理
5}

ステップが新しいジオメトリに入ったことは 「始点がfGeomBoundary」かどうかで判断できます。

ステップがジオメトリから出たことをしりたい

1auto step_point = aStep->GetPostStepPoint();
2auto status = step_point->GetStepStatus();
3if (status == fGeomBoundary) {
4    // ジオメトリ内にある場合の処理
5}

ステップが現在のジオメトリから出たことは 「終点がfGeomBoundary」かどうかで判断できます。