闪烁体桶形探测器



本示例构建了一个圆柱形闪烁体桶形探测器,由 48 个梯形闪烁条 排列成一个完整的环。它演示了如何使用 distribute_on_circle API 将 一个几何体沿圆周按相等的角度间隔复制,并展示了如何确定闪烁条的尺寸, 使相邻的面近乎彼此相接。

您可以在浏览器中运行本示例:


快速上手

将示例复制到当前目录。 创建几何并运行 3 个事件:

cp -r $GEMC_HOME/examples/basic/scintillator_barrel .
cd scintillator_barrel
./scintillator_barrel.py
gemc scintillator_barrel.yaml


几何

几何在 scintillator_barrel.py 中定义。世界体(一个名为 root 的盒状几何体)包含 48 个完全相同的 paddle 几何体,排列成一个环:

有关完整的 distribute_on_circle API 参考以及尺寸计算的几何原理,请参阅 结构辅助工具文档。

交互式查看器(包含全部 48 个闪烁条的桶形探测器):


物理列表

默认使用 QBBC,在 YAML 文件中通过 phys_list: QBBC 选择。

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: 500*MeV
    theta: 90*deg
    delta_phi: 360*deg
    multiplicity: 3

更多信息另请参阅内部发生器文档。


数字化

每个 paddle 都被指定使用 flux 数字化方式,并具有唯一的闪烁条标识符:

paddle.digitization = "flux"
# ...
v.set_identifier("paddle", i)

更多信息请参阅 Flux 文档。


distribute_on_circle API

GVolume 的 distribute_on_circle 方法会将模板几何体沿半径为 radius 的圆周 复制 n 次。当 align=True 时,每个副本还会绕所选的轴旋转其角位置 φᵢ 所对应的角度, 从而使每个闪烁条的局部坐标系保持径向对齐:

for i, v in enumerate(paddle.distribute_on_circle(n, radius, align=True, axis='z')):
    v.set_identifier("paddle", i)
    v.publish(cfg)

该方法返回一个由相互独立的 GVolume 副本组成的列表,每个角度步长对应一个副本,各自命名为 <name>_i,并定位于 (radius·cos φᵢ, radius·sin φᵢ, 0)。 完整的 API 参考请见结构辅助工具文档。


使用方法

构建探测器

使用 Python 脚本 scintillator_barrel.py 构建探测器。默认情况下,探测器配置 存储在一个名为 gemc.db 的 SQLite 文件中。命令行选项可以指定数据库类型、 变体和运行编号。

更多信息另请参阅构建几何。


运行 GEMC

文件 scintillator_barrel.yaml 用于运行仿真。添加 -gui 可以交互式运行:

gemc scintillator_barrel.yaml -gui

可按需修改 scintillator_barrel.yaml,例如更改事件数量、 增加线程数或选择输出格式。


运行事件

下图展示了运行一个事件后沿束流轴观察的桶形探测器端视图,其中 3 个质子 以 θ = 90° 沿径向向外发射。每个质子都穿过一个闪烁条。

Scintillator barrel viewed end-on along the beam axis. Three protons at θ = 90° travel radially outward, each depositing energy in one paddle.


输出

gstreamer 选项用于选择输出文件名和格式:

gstreamer:
  - format: csv
    filename: barrel

更多信息另请参阅输出文档。


使用 GEMC 分析器绘图

首先使用 GEMC 运行 1,000 个事件。默认的 YAML 文件会将分析器所需的数据流写入 CSV 文件。

gemc scintillator_barrel.yaml -n=1000

绘制每次击中的总沉积能量:

gemc-analyzer barrel_t0_digitized.csv totEdep --kind csv

scintillator_barrel 每次击中的总沉积能量

绘制粒子径迹的真实能量:

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

scintillator_barrel 粒子径迹的真实能量