飞行时间质谱模拟器 TOF Simulator
本工具模拟飞行时间质谱仪(Time-of-Flight Mass Spectrometer) 的完整物理过程:
激光脉冲电离样品,离子在引出区与加速区被静电场加速,随后在无场漂移管中自由飞行,
最终按质荷比 M/q 先后抵达探测器形成谱峰。内置 NIST 354 条同位素数据,
可解析分子式、自动枚举同位素组合并计算丰度,输出谱图、峰表与分辨率指标。
354 内嵌 NIST 同位素
2×10⁶ 最大模拟粒子数
1000 谱图时间道数
0 外部依赖 / 需联网
⚛ 飞行时间质谱原理 Principle of TOF-MS
① 电离与引出。 脉冲激光聚焦于样品(光斑半径 ds ),瞬间电离产生离子团。
离子初始位置在引出区中心附近呈高斯分布,初始速度服从温度为 T 的麦克斯韦分布,
沿电场方向速度分量的标准差为 σv = √(kB T/M)。
② 双级加速。 离子先在长度为 s 、电压 Vs 的引出区加速,
再经长度为 d 、电压 Vd 的加速区进一步获得动能。两级加速的组合可以对
初始位置分散造成的飞行时间离散实现一阶聚焦(空间聚焦) 。
③ 自由漂移。 离子进入长度为 D 的无场漂移管,以恒定速度飞行;
质量越大速度越慢,因此到达探测器的时间不同。
ttotal = ts + td + tD ≈ C · √(M / q)
④ 探测与谱图。 探测器记录各离子的到达时刻,经时间数字转换(TDC)或
瞬态记录仪形成强度—时间谱。由于 t ∝ √(M/q) ,时间轴可通过
M/q = (t/C)² 线性化为质量轴,各同位素的丰度直接反映为峰高。
分辨率来源: 峰宽主要由初始空间分散(Δx)、
初始速度分散(Δv,随温度升高而增大)、激光脉冲宽度(dt )和探测器时间精度共同决定。
提高 Vs/Vd 与延长 D 可提升质量分辨率,但会增大仪器尺寸。
📐 TOF 结构示意图 Instrument Schematic
真空腔体 (10⁻⁶ ~ 10⁻⁷ mbar)
s (引出区)
d (加速区)
D (自由漂移)
V = 0
−Vs
−(Vs+Vd)
E = 0
激光脉冲
dt (ns)
ds
MCP
探测器
到达时间谱(M/q 分离)
轻
中
重
t → (t ∝ √(M/q))
离子自左向右依次穿过引出区(s, Vs)、加速区(d, Vd)与自由漂移区(D, E=0),
质量越大轨迹弯曲度越小、到达越晚。图中三条彩色轨迹分别对应轻/中/重三种离子。
🚀 三步开始使用
1 选择样品
在「模拟 Run」页从下拉菜单选择物质(如 Kr、Ar、CO₂、SF₆、UF₆),或直接输入任意分子式与电荷。
2 调节仪器参数
拖动滑块设置 s / d / D / Vs / Vd、气体温度、光斑半径与脉冲宽度,点击「开始模拟」即可实时看到谱形变化。
3 查看与导出结果
在「结果 Result」页查看峰表、分辨率雷达图与峰高柱状图,并导出 CSV 数据或 PNG 谱图用于报告。
📊 结果总览 Simulation Summary
← 返回模拟页调整参数
🔍 结果解读 Automated Interpretation
尚无模拟结果,请先在「模拟 Run」页点击「开始模拟」。
峰高柱状图 Peak Height by Ion
质量—飞行时间散布图 t vs √(M/q)
分辨率雷达图 Resolution Fingerprint
完整峰表(含相对强度与分辨率)
离子 M/q 峰位 t (µs) 峰高 相对强度 % 1/e 宽度 (ns) R = t/Δt
导出与说明 Export
💾 导出数据 CSV
📈 导出谱图 PNG
📊 导出解读图表
📄 导出报告 HTML
计算内核: 完整移植自
fiolj/tof-simulator
(Juan Fiol,GPL-3.0)的
tof.py:三段运动方程、麦克斯韦初始速度分布、
光斑空间分布(normal/uniform)、激光脉冲时间抖动、小孔径向过滤、蒙特卡洛密度直方图与抛物线峰拟合。
数据来源: NIST Atomic Weights and Isotopic Compositions(354 条同位素,
相对原子质量与同位素丰度)。
可信度: 物质解析与飞行时间计算已与 Python 原版逐项比对(质量/丰度 6 位小数一致,
飞行时间 9 位小数一致);谱峰位置与理论 √(M/q) 值偏差通常 < 2 ns(受蒙特卡洛统计涨落影响)。
免责声明: 本工具用于教学演示与量级估算,未包含空间电荷效应、离子—中性碰撞、
探测器饱和与死时间等真实仪器效应,不应用于精密定量分析。
二、操作流程
首页 Home: 了解原理与仪器结构,确认概念后再进入模拟。
模拟 Run → 选择样品: 从「常用物质」下拉菜单直接选择(Kr / Ar / CO₂ / SF₆ / UF₆ 等),
或在下方的「自定义分子式」输入框键入任意化学式。支持多电荷写法 Ar^2+、Xe^3+,
支持逗号分隔混合样品 Ar,Kr,CO2。
设置同位素阈值: 默认 1.5%,只保留丰度高于该值的同位素碎片,避免谱图碎片过多。
阈值过高会丢失弱峰,过低会使模拟变慢。
调节仪器参数:
s / Vs:引出区长度与电压 —— 影响空间聚焦与整体时间尺度
d / Vd:加速区长度与电压 —— 提升能量分散,改善分辨率
D:自由漂移长度 —— 越长分辨率越高,但峰位时间也越长
ds / dt:光斑半径与激光脉宽 —— 直接决定峰的展宽
T:气体温度 —— 温度升高速度分散增大、峰变宽
点击「开始模拟」: 程序执行蒙特卡洛抽样 → 计算飞行时间 → 直方图统计 → 绘制谱图。
状态栏显示粒子数、通过小孔数及耗时。
结果 Result: 查看自动解读、峰高柱状图、t–√(M/q) 散布图与分辨率雷达图;
底部完整峰表含相对强度与分辨率 R。
导出: CSV(时间-信号-各离子分量)、PNG 谱图、解读图表、以及一份包含当前参数与峰表的 HTML 报告。
明暗场: 右上角 🌙/☀️ 按钮可切换暗场模式,适合投影演示或暗室环境。
三、参数含义速查
s (cm) 引出区长度,离子由光斑位置到第一个电极的距离
d (cm) 加速区长度,两级电极之间的间距
D (cm) 自由漂移区长度(无场)
Vs (V) 引出电压,作用于 2s 距离上(Es =Vs/2s)
Vd (V) 加速电压,作用于 d 距离上(Ed =Vd/d)
ds (mm) 激光光斑半径,决定初始空间分散
dt (ns) 激光脉冲持续时间,决定初始时间分散
t0 (µs) 时间轴偏移(实验延迟校正)
r0 引出后小孔半径,用于横向准直过滤
T (K) 样品气体温度,决定初始速度分布宽度
四、常见问题(FAQ)
Q1:为什么谱图上出现很多个小峰?
这是同位素峰簇。每种元素有多个稳定同位素(如 Kr 有 80/82/83/84/86),
分子的同位素组合会形成一组质量相近、时间相近的峰。降低「同位素阈值」可以看到更多弱峰,
提高阈值则只保留强峰。
Q2:为什么分辨率 R 不是固定值?
R = t/(2Δt),其中 Δt 既包含随质量增大的时间尺度(t ∝ √M),
也包含几乎不随质量变化的仪器展宽(脉冲宽度、时间精度)。因此低质量端 R 通常较高,
高质量端因 Δt 相对占比下降而略降,雷达图会呈现这种"指纹"。
Q3:如何提高质量分辨率?
增大 D(延长漂移距离)、提高 Vd(增加动能、减小相对速度分散)、
减小 ds(缩小光斑)、缩短 dt(更短激光脉冲)、降低温度 T。
真实仪器中还会采用反射式(Reflectron)或离子阱进一步提升分辨率。
Q4:模拟结果每次都不一样?
蒙特卡洛模拟每次重新抽样,峰高有统计涨落(约 1/√N 量级)。
增大粒子数可降低涨落;峰位则稳定在理论值附近,偏差通常 < 2 ns。
Q5:能否模拟多电荷离子?
可以。写法为 Ar^2+、Xe^3+。
计算时 t 按 √(M/q) 缩放,因此 Ar²⁺ 会出现在 Ar⁺ 时间的一半位置附近(更靠前)。
Q6:本工具与原 Python 程序有何差异?
计算内核逐行移植,数值一致。差异在于:随机数发生器不同(PCG/JS Math.random vs NumPy),
因此单次采样序列不同但统计分布等价;原程序的 GTK/Streamlit 界面被替换为单文件 HTML 界面。
五、参考文献与致谢
[1] Juan Fiol, tof-simulator: Time-of-flight spectrometer Simulator , v4.0,
GNU GPL v3, https://github.com/fiolj/tof-simulator
[2] NIST, Atomic Weights and Isotopic Compositions with Relative Atomic Masses ,
https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions
[3] Wiley, W. C.; McLaren, I. H. Time-of-Flight Mass Spectrometer with Improved Resolution ,
Rev. Sci. Instrum. 26, 1150 (1955). —— 双级加速空间聚焦的原始文献
[4] Mamyrin, B. A. et al. The mass-reflectron, a time-of-flight mass analyzer with high resolution ,
Sov. Phys. JETP 37, 45 (1973).
本独立版由 HTML/CSS/JS 单文件实现,无任何外部依赖,可离线运行、任意分发(遵循 GPL-3.0)。