镜面示例


本示例展示 GEMC 的光学表面(”镜面”)。三个完全相同的 1 GeV 电子穿过一段低折射率气体辐射体, 每个电子都瞄准一块反射板的中心。切伦科夫光子沿每个电子保持在一个狭窄的前向锥内,并落在该电子对应的 反射板上。每块板演示一种不同的镜面定义:

每块板将其光子反射回它自己上游的光子探测器面板(使用 gPhotonDetector 数字化,并以其镜面的 颜色绘制),因此各面板看到的条件完全相同,仅反射方式不同。第四块面板在光子穿越半透明板后面一段大间隙 后统计透射的光子。典型的相对光子计数(以平板面板为 1):

面板 表面 相对计数
平板(金色) polished,R = 0.90 1.00
粗糙(番茄红) 镜面反射瓣,sigmaAlpha = 0.03 约 0.99(图像模糊,略有泄漏)
半透明(蓝色) 反射,R = 0.60 约 0.69(= 0.60 / 0.90)
后方(蓝色) 透射,T = 0.30 约 0.37(= 0.30 / 0.90)


快速开始

将示例复制到当前目录。 要创建几何体、运行 10 个事例并生成 CSV 输出文件,请运行:

cp -r $GEMC_HOME/examples/optical/mirrors .
cd mirrors
./mirrors.py
gemc mirrors.yaml -n=10


几何

几何体在 mirrors.py 中定义。世界体 root 包含一个 1 m^3 的气体辐射体 (radiatorGas,一种折射率约为 1.001 的演示用气体)。辐射体内部包含:

交互式查看器:

Mirrors simulation with 1 generated event.


镜面定义

每面镜面都是一个随几何体一同发布的 GMirror:

polished = GMirror("polished_metal")
polished.type = "dielectric_metal"
polished.finish = "polished"
polished.model = "unified"
polished.border = "SkinSurface"
polished.photonEnergy = "2.0*eV 3.0*eV 4.0*eV 5.0*eV 6.0*eV"
polished.reflectivity = "0.90 0.90 0.89 0.88 0.87"
polished.publish(cfg)

各体积通过名称引用它们:

plate.mirror = "polished_metal"

完整的字段参考请参阅镜面文档。


物理

steering card 启用光学物理:

phys_list: FTFP_BERT + G4OpticalPhysics

运行该示例会打印 GEMC 创建的表面:

G4World: created optical surface <mirrors/polished_metal> type <dielectric_metal>,
finish <polished>, model <unified>
G4World: created 3 optical surfaces, attached to 2 skin and 1 border logical surfaces

使用 GEMC Analyzer 绘图

请先用 10 个事例运行 GEMC。默认的 YAML 文件会写出 analyzer 的 CSV 数据流。

gemc mirrors.yaml -n=10

各面板的 y 对 x

下面的图将光学光子的击中位置按 panel 拆分。后方的透射面板单独作为一幅图展示,不与半透明反射 面板的图合并。每幅图上显示的计数是从真信息数据流(true-information stream)中选出的行数。

   
flat panel y vs x rough panel y vs x
平板反射面板
计数 = 2,445
粗糙反射面板
计数 = 2,269
semi panel y vs x back panel y vs x
半透明反射面板
计数 = 1,681
后方透射面板
计数 = 918