例 b2



この例は Geant4 の基本例 B2 を再現したものです。flux デジタイゼーションを用いて、 真値情報とデジタイズされた情報を出力に保存します。

この例はブラウザ上で実行できます: geant4 basic/b2


クイックスタート

この例を現在のディレクトリにコピーします。 ジオメトリを作成し、10 イベントを実行して、ROOT と CSV の出力ファイルを生成するには、次のようにします:

cp -r $GEMC_HOME/examples/basic/b2 .
cd b2
./b2.py
gemc b2.yaml -n=10


ジオメトリ

下図に示すジオメトリは b2.py で定義されています。

ワールド(root という名前のボックス)には、次のものが含まれます:

インタラクティブビューア:


物理リスト

デフォルトでは FTFP_BERT が使用され、YAML ファイル内で phys_list: FTFP_BERT によって選択されます。

phys_list

The physics list can be selected using the option

gemc -phys_list <value>

where <value> can be a combination of the Geant4 physics constructors separated by the + sign. For example

gemc -phys_list="FTFP_BERT + G4NeutronCrossSectionXS"

To see a list of the available Geant4 constructors:

gemc -showPhysics


ジェネレータ

粒子の運動学的条件は YAML ファイルで定義されます:

gparticle:
  - name: proton
    p: 3000*MeV
    vz: -250*cm

詳細は 内部ジェネレータのドキュメント も参照してください。


デジタイゼーション

チェンバーボリュームの感度設定は、flux デジタイゼーション(GEMC にあらかじめ組み込まれたルーチンの 1 つ)を用いて b2.py 内で指定します。コピー番号が各チェンバーを識別します:

gvolume.digitization = 'flux'
gvolume.set_identifier('mychamber', copyNo)

この場合、identifier には mychamber という 1 つの名前のみが含まれます。

詳細は Flux のドキュメント を参照してください。

デジタイズされた変数に加えて、真値情報も出力ストリームに保存されます。

True Information

The true information is processed by GEMC and, in some cases, averaged and weighted by the energy deposition. For variables like pid, tid, or processName, the data come from the first step in the hit.

The complete list of variables is:

  • the sensitive element identifier, assigned by the user. For example:
    • sector
    • layer
  • hitn: hit number
  • pid: particle ID
  • tid: track ID
  • avgTime: average time
  • avglx: average local x position
  • avgly: average local y position
  • avglz: average local z position
  • avgx: average global x position
  • avgy: average global y position
  • avgz: average global z position
  • totalEDeposited: total energy deposited
  • processName: process name creating the first step of this hit


使い方

ディテクタの構築

ディテクタを構築するには Python スクリプト b2.py を使用します。デフォルトでは、セットアップは gemc.db という名前の SQLite ファイルに保存されます。コマンドラインオプションでデータベースの種類、バリエーション、ラン番号を指定できます。

詳細は ジオメトリの構築 も参照してください。


GEMC の実行

セットアップを実行するには b2.yaml ファイルを使用できます。インタラクティブに実行するには -gui を追加します:

gemc b2.yaml -gui

必要に応じて b2.yaml を変更します。特に、粒子を追加したり、スレッド数を制御したり、出力を変更したりできます。


イベントの実行

b2 simulation: proton beam traversing the target and tracker chambers.


出力

gstreamer オプションで出力ファイル名とフォーマットを選択します:

gstreamer:
  - format: csv
    filename: b2

flux はイベントごとのデジタイゼーションであるため、GEMC はスレッドごとに 1 つの出力ファイルを生成します。 ROOT ファイルの場合は、hadd を使用してファイルをマージできます。

詳細は 出力のドキュメント も参照してください。


GEMC Analyzer によるプロット

まず 1,000 イベントで GEMC を実行します。デフォルトの YAML ファイルは解析ツール用の CSV ストリームを書き出します。

gemc b2.yaml -n=1000

ヒットごとに付与された全エネルギーをプロットします:

gemc-analyzer b2_t0_digitized.csv totEdep --kind csv

b2 のヒットごとに付与された全エネルギー

粒子トラックの真のエネルギーをプロットします:

gemc-analyzer b2_t0_true_info.csv E --kind csv --data true_info

b2 の粒子トラックの真のエネルギー

陽子の極角残差をプロットします:

b2.yaml 内の save_original_track: true オプションは、真値情報の出力に otid と元の運動量成分 opx、 opy、opz を保存します。解析ツールは元の運動量方向と現在の運動量方向を用いて delta_theta を計算します。

gemc-analyzer b2_t0_true_info.csv delta_theta --kind csv --data true_info --pid 2212 --bins 100 --xlim -0.02 \
  0.2 --linear-y

b2 の陽子の極角残差