布尔实体示例
本示例演示 GEMC 的布尔实体运算。它利用未放置的组件几何体构建三个已放置的实体: 一块通过差集运算得到的带孔板、一个通过并集运算得到的十字形实体,以及一个 通过对两个球体取交集得到的透镜形实体。
快速开始
将示例复制到当前目录。 要创建几何模型并运行 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 的盒形体)包含三个可见的布尔几何体:
| 几何体 | 运算 | 组件 |
|---|---|---|
| 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'
第一个操作数以自身原点为基准进行求值。第二个操作数使用自身相对于 第一个操作数的位置和旋转。例如,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
运行事件