シングルトン・パターン

Geant4の主要クラスには「シングルトン・パターン」が採用されています。 このため、ユーザーはどこからでも同一のインスタンスにアクセスできます。

G4RunManager

1auto rm = G4RunManager::GetRunManager();

G4RunManagerはGeant4シミュレーション全体を統括する中核的なシングルトンです。 ジオメトリ構築(G4VUserDetectorConstruction)、 物理プロセスの定義(G4VUserPhysicsList)、および ユーザーアクション(G4UserRunActionなど)を登録し、 初期化、実行、終了までの一連の流れを管理します。

参考

詳しくはRunManagerしたい(G4RunManagerFactory)に整理しました。

G4NistManager

1auto nm = G4NistManager::Instance();

G4NistManagerは、NISTに準拠した元素や物質を簡単に取得・生成できるシングルトンです。

G4MaterialTable

1auto table = G4MaterialTable::GetMaterialTable();
2for (auto* material: *table) {
3    G4cout << material->GetName() << " rho= " << material->GetDensity()/(g/cm3) << " g/cm3" << G4endl;
4}

G4MaterialTableは、すべての物質(G4Materialなど)のインスタンスの一覧を保持する静的テーブルです。

参考

詳しくは 材料を確認したい(G4Material::GetMaterialTable) に整理しました。

G4ParticleTable

1auto pt = G4ParticleTable::GetParticleTable();

G4ParticleTableは、Geant4内の粒子が定義されたテーブルです。 このテーブルから粒子の情報を検索できます。

G4ProcessTable

1auto pt = G4ProcessTable::GetProcessTable();

G4ProcessTableで物理プロセスを一覧できます。

G4SDManager

1auto sm = G4SDManager::GetSDMpointer();

G4UIManager

1auto um = G4UIManager::GetUIpointer();

G4GeometryManager

1auto gm = G4GeometryManager::GetInstance();

G4GeometryManagerはすべてのジオメトリを管理するインスタンスです。

G4PhysicalVolumeStore

1auto pvs = G4PhysicalVolumeStore::GetInstance();

G4PhysicalVolumeStoreはすべての物理ボリュームを管理するインスタンスです。 物理ボリュームを定義すると、自動でこのインスタンスに追加されます。 登録された物理ボリュームを検索できます。

G4LogicalVolumeStore

1auto lvs = G4LogicalVolumeStore::GetInstance();

G4LogicalVolumeStoreはすべての論理ボリュームを管理するインスタンスです。 論理ボリュームを定義すると、自動でこのインスタンスに追加されます。 登録された論理ボリュームを検索できます。

G4SolidStore

1auto ss = G4SolidStore::GetInstance();

G4SolidStoreはすべてのソリッド(形状)を管理するインスタンスです。 ソリッドを定義すると、自動でこのインスタンスに追加されます。 登録されたソリッドを検索できます。


G4ProductionCutsTable

1auto pct = G4ProductionCutsTable::GetProductionCutsTable();

G4ProductionCutsTableはすべての領域(G4Region)に設定されたカット値を統括管理するインスタンスです。 このテーブルには、各粒子をトラッキングする際のエネルギーしきい値などが含まれています。

G4TransportationManager

1auto tm = G4TransportationManager::GetTransportationManager();

G4TransportationManagerはナビゲーションとフィールドの統合管理を行うシングルトンです。 トラッキング時の空間移動処理や電磁場の適用に関係します。

G4LossTableManager

1auto ltm = G4LossTableManager::Instance();

G4LossTableManagerは、電磁過程(とくにエネルギー損失)に関する情報を一括して管理するためのインスタンスです。 G4EmProcessOptions などと連携して使用します。

G4FieldManagerStore

1auto fms = G4FieldManagerStore::GetInstance();

G4FieldManagerStoreは、複数の電磁場管理オブジェクト(G4FieldManager)を保持するストアです。 それぞれの論理ボリュームに設定されたフィールド管理を一元的に扱います。

G4AnalysisManager

1auto am = G4AnalysisManager::Instance();

G4AnalysisManagerは、シミュレーションで得られた結果を管理するインスタンスです。 ROOT、CSV、XMLなど複数の形式に出力できます。

参考

詳しくは ファイル出力したい(G4VAnalysisManager) に整理しました。