跳转至

分析流程与分析保存

学习目标

  • 了解分析工具

  • 了解分析保存

大多数LHCb分析具有相似的结构,并遵循标准化的处理流程。作为用户,您通常从检索所需的数据和模拟样本开始开发您的分析。

分析入门课程的首要目标,正是为您提供获取这些样本的工具。

数据流课程要点回顾

LHCb 数据流的最后阶段,Run 3 的 Sprucing 或 Turbo 流的 HLT2选择线,其输出结果可直接供用户访问。 这些阶段的筛选条件由用户自行定义,最终产物被写入磁盘,随后借助 DaVinci 软件包生成仅含用户所需信息的数据文件,用于后续物理分析。

获取数据文件

在 Stripping(Run 1/2)、Sprucing(Run 3)或触发步骤完成数据预选后,用户可以通过运行 DaVinci 应用程序来生成包含元组的 ROOT文件。元组是一种(通常较为复杂的)数据结构,通常存储在ROOT文件中,它包含数据样本中事例或候选体的相关信息,例如候选体的质量等或触发决策标志。

  • 数据样本:对于真实数据样本,可用的信息仅来源于探测器重建过程。

  • 模拟样本: 对于模拟样本,用户既可以请求获取观测量/变量的重建值,也可以请求获取其生成器最初产生的原始值(级值)。

  • 重建值 (Reconstructed Values): 是指物理对象(如粒子、顶点)的测量值,这些值经过了包含探测器效应在内的完整重建流水线的处理。

  • 生成器级值 (Generator-level Values /Truth Values): 是指事例生成器产生的原始理论值,代表了未经探测器效应和重建过程影响的“真实”物理信息。

某些变量,例如顶点质量或触发决策,只能在重建级别访问。这些信息对于研究分析中涉及的不同重建效应和探测器效应至关重要。

运行 DaVinci 的方式:

  • 本地运行 lxplus :适用于小规模测试任务。

  • 分布式网格(Grid):通过 Analysis Productions提交,其界面更友好,并内置验证流程,确保作业按预期执行且错误率最低。此外,Analysis Productions 对于分析成果的长期保存也具有重要作用,相关内容将在本课后续部分详细讨论。

实用高能物理分析工具

获取元组后,用户通常会开发新的分析代码或扩展合作者使用的现有代码。分析代码通常基于流行的高能物理软件工具或更通用的数据分析工具(如 numpy 或 pandas)。

高能物理领域流行数据分析工具

LHCb 合作者使用多种软件包。其中部分由 CERN 支持,部分由 LHCb合作者开发,部分由外部社区维护。此清单并不完全,若您常用其他工具,欢迎贡献至本课程内容。

  • ROOT :由 CERN 开发的开源数据分析框架,在高能物理社区中占据核心地位;其 Python 接口 PyROOT 可直接在 Python 中调用全部 ROOT 功能。
  • Scikit-HEP project:社区驱动的 Python 粒子物理大数据分析项目,包含多个互补、可互操作的模块。

    • uproot:用于读取 ROOT 文件(DaVinci 软件包输出)的Python 模块。
    • awkward-array:支持粒子物理常见数据结构(如嵌套、变长数据,包括任意长度列表、记录、混合类型和缺失数据)操作的 Python 模块,采用类 NumPy 语法
    • boost-histogram:C++14 库 Boost::Histogram 的 Python 版本,用于直方图统计。
    • iminuit:为极小化工具包 Minuit2 提供的 Jupyter 友好型 Python 接口。
    • mplhep:为 matplotlib 定制的高能物理辅助工具集。
    • etc
  • RooFit:CERN ROOT 团队支持的拟合、模型定义、绘图及“toy Monte Carlo”生成包,支持 C++ 与 Python 。

  • zfit:深度集成于 Scikit-HEP 分析生态系统的 Python 拟合与模型定义库 。

关于可能对 LHCb 社区有用的新型分析工具的讨论,在数据处理与分析项目(DPA)的 Work Package 4 中持续进行。

分析成果保存规范

当样本准备就绪后,即可着手编写宏与脚本,完成后续分析步骤,比如施加额外选区、分布拟合、效率与接受度计算等。从 ntuples 出发,一项典型的分析通常包含以下阶段:

  1. 定义与应用筛选条件:包括运动学筛选、粒子识别、多变量分析、通过拟合实现信号/背景分离等。

  2. 计算并应用校准与修正:部分校准(如径迹校准 TrackCalib 和粒子识别校准 PIDCalib2由合作者集中标定,用户可直接使用。其他修正,如调整模拟样本的运动学分布以最大限度匹配数据,通常需按分析需求独立估计。

  3. 计算效率、接受度及测量探测器分辨率效应及整合上述结果以测量目标物理参数。

  4. 将上述步骤整合,提取感兴趣的物理参数。

在获取目标物理参数后,分析工作必须依次通过物理工作组 (Physics Working Group, PWG) 和 LHCb 合作组的严格评审。成功评审的一项核心要求即是分析代码的妥善保存。 这源于科学完整性的基本原则,它要求研究步骤透明且结果可复现。对此,LHCb 与 CERN 均制定了明确的规范:LHCb 的具体规范在 DPA 项目的 Work Package 6 中讨论与实施;CERN 的通用规范可参见其官方指南

为了有效实施分析保存,需遵循以下关键步骤:

  1. 详尽文档化:分析必须详细记录分析方法、技术及结果,撰写清晰全面的分析说明,该说明随后通过CDS system向全体 LHCb 合作者公开。

  2. 代码版本控制:分析代码应提交至所属物理工作组的 GitLab代码库中(例如:QEE working group)。这样做的好处在于, GitLab 能有效追踪个人及合作者的代码变更,并通过 GitLab CI 检测潜在缺陷(更多使用细节可参考相关课程)。

  3. 构建可复现工作流:仅提交代码是远远不够的。至关重要的是, 需要编写明确的分步执行指令,因为即使是开发者本人,数月后也可能遗忘代码的具体运行方式。为此, 强烈推荐使用Snakemake工作流管理系统。它能够自动识别步骤间的层级依赖关系以及输入(样本/代码)的变更。理想情况下, Snakemake 工作流应在分析开发初期就开始构建,并最终随代码一同提交至 GitLab 库。

  4. 样本与配置保存:产生的样本也应妥善保存。其中, 分析产出机制可帮助保存经过测试的 DaVinci 选项文件,确保未来能用相同的软件版本复现元组。此外,分析所用的元组必须上传至工作组的 EOS 存储区域

  5. 软件环境固化: 必须固化分析所依赖的所有软件包版本(包括 ROOT、NumPy 等通用工具)。这可以通过以下方式实现, 创建 Docker 容器、构建 Conda 环境,或使用 lb-conda 环境,该方案依托于 CERN 虚拟机文件系统,又名 CVMFS ,并受到 LHCb 社区官方支持。