はじめてのGeant4~main関数~

はじめに

本稿ではGeant4のmain関数を作成します。

筆者の環境

ソースコード

以下のようなサンプルコードtest.ccを作成します。

#include "G4RunManager.hh"
#include "G4UIExecutive.hh"
#include "G4VisExecutive.hh"
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"

int main(int argc, char** argv)
{
    G4RunManager* runManager = new G4RunManager();

    auto physicsList = new FTFP_BERT;
    runManager->SetUserInitialization(physicsList);

    G4UIExecutive* ui = new G4UIExecutive(argc, argv);
    G4VisExecutive* visManager = new G4VisExecutive();
    visManager->Initialise();
    G4UImanager* UIManager = G4UImanager::GetUIpointer();
    ui->SessionStart();

    delete runManager;
    delete ui;
    delete visManager;
    return 0;
}

簡単に解説します。

    G4RunManager* runManager = new G4RunManager();

    auto physicsList = new FTFP_BERT;
    runManager->SetUserInitialization(physicsList);

G4RunManagerはGeant4の心臓みたいなもので、シミュレーションの一連の流れを管理します。実際にシミュレーションする際には、G4RunManagerにジオメトリの情報、物理過程、初期粒子などの情報を登録します。ここでは、ジオメトリや初期粒子などをまだ実装していないので、物理過程だけ登録しています。FTFP_BERTは公式が提供する物理過程リストの一つです。公式サンプルコードを見ると、これがよく使われているようです。また、公式レファレンスを見ると色々な物理過程リストが提供されています。

G4UIExecutive* ui = new G4UIExecutive(argc, argv);
G4VisExecutive* visManager = new G4VisExecutive();
visManager->Initialise();
G4UImanager* UIManager = G4UImanager::GetUIpointer();
ui->SessionStart();

VisualizationやUI関係をいい感じにやってくれます。この辺は公式サンプルコードのコピー&ペーストでOK。

実行

先程のサンプルコードをビルドして実行します。ビルド方法や実行方法も本ブログで解説しています。 当然ですが、ジオメトリを登録していないので何も表示されません。

まとめ

本稿ではGeant4のmain関数を作成しました。何か間違いなどあれば教えてください。次回はジオメトリを作成します。