人类最难能可贵的智慧,就是对于未知的领域保有充分的好奇心。他们会穷尽一切手段,使用各种超出一般人认知的方法满足它。例如,在粒子物理领域,中微子的许多性质尚未确定。由于中微子只参与弱相互作用,以 IBD 为例: $$ \bar{\nu}_e+p\to e^+ +n $$ 其反应截面要比铀裂变低20个数量级。因此,妄图像化学家那样在烧杯中观察中微子是不现实的。
计算机科学的发展给了我们进一步开展中微子实验的底气。只要我们准备的质子足够多,总能观察到中微子的 IBD 反应。于是,一个个大坑相继出现。这之中较早的是超级神冈,虽然它一开始是设计用来观测质子衰变的,但是这个圆柱形的大坑很快成为了中微子实验的优质场地。而我们今天要讨论的探测器,是在建的江门地下中微子实验(JUNO)。其球对称的构造更是为数据处理带来了方便。
反应容器的增大带来的是探测器的数量的急剧增加。如果我们的反应容器只有一升,可能只需要一两个光电倍增管(PMT);而如果反应容器有一百万升,两个 PMT 显然不够。还好,我们的课程是大数据分析,其核心**就在于,两个和114514个的区别只在于数量。只要我们能够搞定一个,就能搞定17612个。
这一节看不懂会影响后面作业的完成。其中有一些公式,可以选择使用较新版本的 VS Code 预览。
在 JUNO 探测器中,最里面是一个装满了液体闪烁体(液闪,liquid scintillator, LS)的大球,液闪球的半径17.71m,粒子在这之中会发光;外面是一层水球包裹,水球外面有许多 PMT。这些 PMT 到球心的距离均为19.5m。液闪是一种特殊的有机物,在正负电子的激发下会发生能级跃迁,各向同性地发出光子,被 PMT 探测到。这些发光的点被称作顶点。
通常来说,MeV 量级的电子可以近似看作一个顶点,它们会迅速在某个位置耗尽所有动能。MeV 量级的正电子可以近似看作一个电子与两个方向相反的
顶点的动能不会完全转化为发光光子的总能量(也称为可见能量)。这之间的转化满足 Birks 定律:
$$
\frac{dL}{dx}=S\frac{\frac{dE}{dx}}{1+kB\frac{dE}{dx}}
$$
其中
光子进入 PMT,在光阴极上发生光电效应,打出光电子(PE)。PE 在 PMT 内经历放大过程,最终电子打到阳极上,生成波形信号。
这一阶段的工作是正向的模拟。为了响应教育部给大学增负的号召,我把基础要求定得低一些,并提供额外的加分项。我们强烈建议各位同学仔细考虑这些加分项的性价比,不要为了一两分影响暑假的美好心情。
给定 JUNO 探测器几何,随机生成4000个顶点,并给出17612个 PMT 上激发得到的 PE 的击中时间(hit time)。注意,并不一定所有 PMT 都会触发。击中时间的时间零点取为顶点的时间。
顶点对位置分布与动量分布有要求(20')。要求顶点在探测器内的数体积密度均匀。
要求顶点的动量为1 MeV,考虑到 Birks 定律不是考察重点,可以认为每个顶点产生约10000个光子。这些光子实际上经过非齐次泊松过程采样得到,这个泊松过程的期望可以认为
$$
\lambda(t)\propto \exp{\left(-\frac{t}{\tau}\right)}\otimes N(0,\sigma)
$$
这是一个指数衰减函数与一个高斯分布的卷积,其中
光子击中 PMT 后,有一定概率引发光电效应。为了简便起见,我们认为完全会引发光电效应,并一定产生一个 PE。
为了检验这些结果,需要通过编写画图的程序(20')。具体的要求见下文。
请注意,一个正常的图像应当有坐标轴标签和标题。如果有多种颜色,应当有图例。我们会根据生成的模拟数据画图,并和你的画图程序输出比较。
在实现探测器的响应的时候,最简单的方法是根据平方反比计算(10')。可以认为 PMT 是一个直径 50.8cm 的球体,我们的几何文件给出的是球心的位置。
然而,实际情况中,我们可能需要考虑一次反射的情况。考虑到一次反射,可能出现的情况主要有全反射(5')和折射(5')。你可以取水的折射率为1.33,液闪的折射率为1.48。对于光学过程的考察,不要求实现细节,但是要求给出 PMT 对于顶点的响应分布。
这个分布我们一般称为 Probe 函数(实际上是忽略了时间和能量的 Probe)。它表示一个 PMT 对探测器内任意一点的顶点的接收的光子产生的 PE 的电荷数期望。我们可以近似认为这上万个 PMT 除了位置不同,其它性质完全相同,因而这个函数只需要考虑顶点与 PMT 的相对位置
相对位置示意图 |
---|
![]() |
Probe 示意图 |
---|
![]() |
一个小提示:Probe 函数的图像与你是否考虑反射无关,仅与模拟输出数据有关。因此即使你不考虑反射,也能拿这画图的10分。
光子打到 PMT 上,激发出 PE,在 PMT 上留下波形输出。唯象地说,PE 激发得到的波形可以认为是一个双指数模型与随机的电子学噪声的叠加。其中这个双指数函数为 $$ t_l\sim\exp{\left(\frac{t}{\tau_d}\right)}\left(1-\exp{\left(\frac{t}{\tau_r}\right)}\right) $$ 其中$\tau_d$与$\tau_r$为两个待定常数,你可以分别取10ns和5ns,也可以取其它数据观察波形的变化,并在实验报告内说明。
根据电压的不同方向,PE 的波形既可以是向上的,也可以是向下的,不做要求。
当你计算得到波形之后,应该在0到1000ns每1ns采样一个数据点,作为波形的输出结果。这是因为 PMT 输出的并不是模拟信号,而是电子采样之后的信号(联想电视的模拟信号与数字信号)。
电子学噪声可以视作对一个周期无理(或者不是很有理)的正弦函数的采样。要求周期无理是因为看起来随机,要求正弦函数是因为要求很大的区域内积分趋近于0。如果你有别的好办法也可以,并在实验报告内说明。
此部分详见大作业公告。
提交所使用的代码的 git 仓库链接。代码应该符合下面的要求、能够运行,且能够在合理时间内(如:提交成绩前)停止(注意!时间太长会根据心情扣分)。不满足该条件作业记0分。
考虑到大家可能还没有学过 Makefile,这次我提供了基础模板。最终我们将使用 Makefile 测试,因此你不应该更改其内容。
关于 Makefile 的使用,下面列出你需要的命令:
$ make data.h5 # 生成 data.h5
$ make figures.pdf # 生成 figures.pdf
$ make all # 与 `make figures.pdf` 相同
$ make clean # 删除上述两个文件
这是模拟程序文件。我提供了一个基础的模板,处理了命令行参数。里面给出了基础的程序框架,但是你可以随意修改。尤其 for
循环是很慢的,如果你擅长使用 numpy
,也许能矢量化处理。
模拟输出文件为 data.h5
,该文件名在命令行中指定。其格式为:
ParticleTruth
表
名称 | 说明 | 类型 |
---|---|---|
EventID |
事件编号 | '<i4' |
x |
顶点坐标x/mm | '<f8' |
y |
顶点坐标y/mm | '<f8' |
z |
顶点坐标z/mm | '<f8' |
p |
顶点动量/MeV | '<f8' |
PETruth
表
名称 | 说明 | 类型 |
---|---|---|
EventID |
事件编号 | '<i4' |
ChannelID |
PMT 编号 | '<i4' |
PETime |
PE 击中时间/ns | '<f8' |
Waveform
表
名称 | 说明 | 类型 |
---|---|---|
EventID |
事件编号 | '<i4' |
ChannelID |
PMT 编号 | '<i4' |
Waveform |
波形 | '<i2', (1000,) |
这是画图程序文件。提供了一个比较详细的模板,理论上你只需要修改 Drawer
类里面的几个函数就可以完成任务。这个类在测试的时候用到,因此你不应该修改它的函数签名。
画图输出文件为 figures.pdf
,该文件名在命令行中指定。每页一张图像,一共包括:
- 顶点的数体积密度关于半径的图像
- PE 的击中时间的直方图
- Probe 的圆盘函数图像(极坐标)
你可以通过检查这些图像来验证自己的模拟正确性。
几何文件,其格式为:
Geometry
表
名称 | 说明 | 类型 |
---|---|---|
ChannelID |
PMT 编号 | '<u4' |
theta |
球坐标 |
'<f4' |
phi |
球坐标 |
'<f4' |
你可能会注意到,几何文件提供的 PMT 个数大于我的要求。这是因为我懒得删了。没错,我想过要求模拟更多的 PMT。
实验报告。在完成这个作业之前,建议先看看已经准备好的实验报告模板(report.md
),那里有一些温馨提示。你也可以选择使用 LaTeX 书写报告,但请在仓库中同时附上编译后的 PDF 文件,以便查阅。
注意:无论你完成了多少加分项,最终至多可加 10 分。
讨论正电子在液闪内可能的物理过程,尤其注意
这回我们不考虑一个顶点作为光源,而是一条线段,比如
这一项目不作具体实现要求,请自行探索合理的表现手法,并在报告中写明。
考虑到 PMT 的表面是玻璃,可能反射一些光子。因此你应该在模拟时考虑一定概率的反射。我们的基础要求画的图可能不会反映出这一光学过程。你应该考虑一些更明确的表现方式。