ブール演算ソリッドの例
この例では、GEMC のソリッドに対するブール演算を示します。未配置の構成ボリュームから、 配置する 3 つのソリッドを構築します。穴をくり抜いたプレート、和集合で作った十字形、 2 つの球の共通部分で作ったレンズです。
クイックスタート
この例を現在のディレクトリにコピーします。 ジオメトリを作成して 10 イベントを実行するには、次のようにします。
cp -r $GEMC_HOME/examples/basic/boolean_solids .
cd boolean_solids
./boolean_solids.py
gemc boolean_solids.yaml -n=10
ジオメトリ
ジオメトリは boolean_solids.py で定義されています。
ワールド(root という名前のボックス)には、3 つの可視のブール演算ボリュームが含まれます。
| ボリューム | 演算 | 構成要素 |
|---|---|---|
| plate_with_hole | 差集合 | plate_box - plate_hole |
| cross | 和集合 | bar + bar_rotated |
| lens | 共通部分 | sphere_one * sphere_two |
構成ボリュームは特別なマテリアル Component を使用します。これらはブール式の
オペランドを定義しますが、可視の検出器ボリュームとしては配置されません。演算結果のボリュームは、
他の GVolume と同様に、それぞれのマテリアル、色、位置、回転を指定して配置します。
インタラクティブビューア:
ブール式
solidsOpr に式を設定することで、ブール演算ソリッドを指定します。
plate.solidsOpr = 'plate_box - plate_hole'
cross.solidsOpr = 'bar + bar_rotated'
lens.solidsOpr = 'sphere_one * sphere_two'
最初のオペランドは、それ自身の原点で評価されます。2 番目のオペランドには、最初のオペランドを基準とした 自身の位置と回転が適用されます。例えば、plate_hole は plate_box から差し引かれる前に 30 mm 移動されるため、穴は中心からずれた位置にできます。
ジェネレータ
粒子の運動学的条件は YAML ファイルで定義されます。
gparticle:
- name: e-
p: 500*MeV
theta: 90*deg
vx: -40*cm
delta_vx: 12*cm
randomVertexModel: uniform
詳細については、内部ジェネレータのドキュメント も参照してください。
使い方
検出器の構築
Python スクリプト boolean_solids.py を使って検出器を構築します。デフォルトでは、構成は
gemc.db という名前の SQLite ファイルに保存されます。
./boolean_solids.py
詳細については、ジオメトリの構築 も参照してください。
GEMC の実行
boolean_solids.yaml ファイルを使って、この構成でシミュレーションを実行できます。対話的に実行するには
-gui を追加します。
gemc boolean_solids.yaml -gui
イベントの実行