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をしりたいヒット配列の"名前"もしくはオブジェクトを引数に設定します。

リファレンス