SDManagerしたい(G4SDManager)
1auto sm = G4SDManager::GetSDMpointer();
GetSDMpointer()でG4SDManagerクラスを取得できます。
G4SDManagerクラスはスレッドローカルになっています。
また、シングルトンになっていて、どこからでもこの方法で参照できます。
有感検出器を登録したい(AddNewDetector)
1// 有感検出器を作成
2auto sensor = new Sensor("検出器名");
3
4// SDManagerに追加
5auto sm = G4SDManager::GetSDMpointer();
6sm->AddNewDetector(sensor);
有感検出器を一覧したい(ListTree)
1auto sm = G4SDManager::GetSDMpointer();
2sm->ListTree()
3
4// G4WT0 > /
5// G4WT0 > /TrackerSD *** Active
6// G4WT0 > /ShieldSD *** Active
ListTreeでSDManagerに登録されている有感検出器の名前と状態を確認できます。
G4VSensitiveDetector::Initializeの中で、
デバッグ用に確認したいときに便利です。
HCtableしたい(GetHCtable)
1auto sm = G4SDManager::GetSDMpointer();
2auto table = sm->GetHCtable();
3
4G4int n_tables = table->entries();
5G4debug << "HCtables= " << n_tables << G4endl;
6for (G4int i = 0; i < n_tables; i++) {
7 G4debug << "SDname= " << table->GetSDname(i) G4endl;
8 G4debug << "HCname= " << table->GetHCname(i) G4endl;
9}
GetHCtableでSDManagerに登録されているHCtableを確認できます。
またGetSDNameで有感検出器の名前、
GetHCnameでヒット配列の名前を取得できます。
ヒット配列のIDをしりたい(GetCollectionID)
1auto sm = G4SDManager::GetSDMpointer();
2G4int hcID = sm->GetCollectionID("ヒット配列名");
3G4ind hcID = sm->GetCollectionID(ヒット配列名オブジェクト);
GetCollectionIDでヒット配列のIDを取得できます。
IDをしりたいヒット配列の"名前"もしくはオブジェクトを引数に設定します。