論理ボリュームに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しています。
詳しくは次のページを参照してください。