B1したい(examples/basic/B1/

basic/B1は、Geant4アプリケーションの最小構成を示すサンプルです。 簡単な検出器の形状を定義し、一次粒子を入射させ、物質中でのエネルギー損失を記録する、という基本的な流れを確認できます。

まず、B1サンプルをビルドして実行し、 マクロファイルを編集して、粒子の種類やエネルギーを変更してみるとよいです。

ビルドしたい(cmake

$ cd B1
(B1) $ mkdir build
(B1) $ cd build
(B1/build) $ cmake ..
(B1/build) $ make
(B1/build) $ ./exampleB1 run1.mac
(B1/build) $ ./exampleB1 run2.mac

cmakeでビルドし、exampleB1という実行ファイルを作成します。 まず、examples/basic/B1/の下にビルド用ディレクトリ(build)を作成し、その中で``cmake …makeを実行します。 ./exampleB1を実行するときにマクロファイル(run1.mac`など)を指定します。

メイン(exampleB1.cc

 1//////////////////////////////////////////////////
 2// exampleB1.cc
 3//////////////////////////////////////////////////
 4auto *runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default)
 5// Detector construction
 6runManager->SetUserInitialization(new DetectorConstruction());
 7
 8// Physics list
 9G4VModularPhysicsList* physicsList = new QBBC;
10physicsList->SetVerboseLevel(1);
11runManager->SetUserInitialization(physicsList);
12
13// User action initialization
14runManager->SetUserInitialization(new ActionInitialization());
15
16G4UIExecutive *ui = new G4UIExecutive(argc, argv);
17G4VisManager *visManager = new G4VisExecutive;
18G4UImanager *uiManager = G4UImanager::GetUIpointer();

メインプログラムはexampleB1.ccです。 ここでは、Geant4アプリケーション全体を制御するための各種マネージャーが生成・設定されています。

まず G4RunManagerFactoryによってランマネージャーが作成され、 検出器(DetectorConstruction)、 物理リスト、 ユーザーアクション(ActionInitialization) が登録されます。 その後、 G4UIExecutiveG4VisManagerなど、 UIや可視化を担当するマネージャーが初期化されます。 これらのマネージャーにより、マクロコマンドの入力や、 イベント・検出器の表示が可能になります。

このように exampleB1では、 シミュレーションを構成する各要素を組み立て、 実行を開始する準備を行なっています。

検出器したい(DetectorConstruction

検出器の形状や材料はDetectorConstructionクラスで定義します。 basic/B1では、 シミュレーション空間全体を表すWorldボリュームを作成し、 その内部に検出器となる単純な箱形状のボリュームを配置しています。

また、エネルギー損失を記録するためのScoring Volumeもここで設定しています。

注釈

basic/B1はSensitive Detectorを使いません。 Sensitive Detectorを使ったヒット情報の扱いは、 basic/B2などのサンプルを参照してください。

物理リストしたい(QBBC

basic/B1では、Geant4標準のモジュール型物理リストにあるQBBCモデルを使っています。 QBBCは、電磁相互作用、ハドロン相互作用、崩壊過程などを含んだ汎用的で安全な物理リストです。

入射粒子したい(PrimaryGeneratorAction

basic/B1の入射粒子は、 PrimaryGeneratorActionG4ParticleGunを使って定義されています。 初期状態では、電子を6 MeVで +Z方向に入射しています。

入射粒子の設定はマクロで変更できます。 粒子の種類やエネルギー、イベント数などをマクロファイルで指定できるため、再ビルドせずに条件を切り替えて試すことができます。

ディレクトリ構造

$ tree B1 -L 2
B1
├── CMakeLists.txt
├── GNUmakefile
├── History
├── README
├── exampleB1.cc
├── include
│   ├── ActionInitialization.hh
│   ├── DetectorConstruction.hh
│   ├── EventAction.hh
│   ├── PrimaryGeneratorAction.hh
│   ├── RunAction.hh
│   └── SteppingAction.hh
├── src
│   ├── ActionInitialization.cc
│   ├── DetectorConstruction.cc
│   ├── EventAction.cc
│   ├── PrimaryGeneratorAction.cc
│   ├── RunAction.cc
│   └── SteppingAction.cc
├── init_vis.mac
├── vis.mac
├── exampleB1.in
├── exampleB1.out
├── run1.mac
├── run2.mac
└── tsg_offscreen.mac

B1のディレクトリ構造は上のようになっています。 メインのプログラムはexampleB1.ccで、include/*.hhsrc/*.ccに関係するソースコードが格納されています。 *.macは実行ファイルの引数に指定できるマクロファイルです。

exampleB1.inもマクロファイルです。 これを読み込んだときの出力がexampleB1.outです。

リファレンス