シングルトン・パターン
Geant4の主要クラスには「シングルトン・パターン」が採用されています。 このため、ユーザーはどこからでも同一のインスタンスにアクセスできます。
G4RunManager
1auto rm = G4RunManager::GetRunManager();
G4RunManager
はGeant4シミュレーション全体を統括する中核的なシングルトンです。
ジオメトリ構築(G4VUserDetectorConstruction
)、
物理プロセスの定義(G4VUserPhysicsList
)、および
ユーザーアクション(G4UserRunAction
など)を登録し、
初期化、実行、終了までの一連の流れを管理します。
参考
詳しくはRunManagerしたい(G4RunManagerFactory)に整理しました。
G4NistManager
1auto nm = G4NistManager::Instance();
G4NistManager
は、NISTに準拠した元素や物質を簡単に取得・生成できるシングルトンです。
参考
詳しくは 定義済みのマテリアルを使いたい(G4NistManager::Instance) に整理しました。
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) に整理しました。