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