論理ボリュームにSensitiveDetectorを設定したい(SetSensitiveDetector

1// class SensitiveDetector: public G4VSensitiveDetector とする
2auto sensitive_detector = new SensitiveDetector{};
3auto logical_volume = G4LogicalVolume{...};
4logical_volume->SetSensitiveDetector(sensitive_detector);
5
6// SDManagerに追加
7auto sm = G4SDManager::GetSDMpoint();
8sm->AddNewDetector(sensitive_detector);

ヒット情報を取得したい論理ボリュームをSensitiveDetectorに設定します。 SensitiveDetectorは、G4VSensitiveDetectorクラスを継承してユーザーが作成します。 また、G4SDManagerにも追加する必要があります。

SDに設定した論理ボリュームに粒子が入射するとProcessHits(G4Step *aStep)が呼ばれます。 そのメソッドの中で、ヒット情報を取捨選択します。

具体的な設定は 自作ヒットしたい(std::tuple)./geant4-scoring-hitscollection.mdに 整理しました。

参考

ここでは個別の論理ボリュームにSensitiveDetectorを設定する方法を紹介しましたが、多くのサンプルでは、ジオメトリ用クラスのConstructSDandFieldの中で SetSensitiveDetectorしています。 詳しくは次のページを参照してください。

リファレンス