跳转至

在DaVinci中构建衰变候选者

学习目标

  • 了解LHCb中标准粒子的不同类别
  • 理解最小偏置数据与无偏置数据的区别
  • 学习如何从无偏置数据中构建候选者

LHCb的标准粒子

LHCb实验的重建过程分为多个步骤。首先,从追踪探测器(VELO、UT和SciFi)的击中信息出发,通过拟合构建径迹候选者。我们还利用calorimeters中的簇信息构建光子候选者,甚至 \(\pi^0\) 介子候选者( \(\pi^0\) 几乎总是衰变为两个光子)。这产生了原粒子(protoparticles):带有PID变量但未指定具体粒子种类的径迹。

光子和 \(\pi^0\) 候选者

光子不被归类为径迹,因为它们不会在追踪子探测器上留下击中信息。相反,我们通过电磁量能器(ECAL)中的簇来构建光子候选者。

然而,有时光子产生后,在与某些子探测器材料相互作用时会转换为一对电荷相反的粒子。我们称这些为转换光子(converted photons),有些分析可以利用它们提高衰变的分辨率。

另一个有趣的例子是\(\pi^0\) 介子。它们98%的概率衰变为两个光子。这两个光子有时会占据ECAL中的同一个单元,使得区分它们更加困难,我们称这些为合并的\( \pi^0\) (merged \(\pi^0\)s)。如果光子占据不同的单元,则称为分辨的π⁰(resolved \(\pi^0\)s)。

原粒子通过赋予相应的质量假设被分配粒子种类(例如,"π介子"只是被赋予140MeV质量的原粒子)。根据径迹类型,我们可以构建长寿命μ子、下游电子、上游K介子等。

在上面的代码片段中,我们可以使用RecoConf模块的standard_particles过滤事件中的π介子。

RecoConfHlt2Conf

从DaVinciv65r0开始,Hlt2Conf的部分模块被移植到了RecoConf中,包括standard_particlesalgorithms_thor

通过standard_particles,我们可以使用以下函数:

函数 描述
make_long_cb_{electrons, muons, pions, kaons, protons} 生成特定类型的长寿命带电基本粒子(ChargedBasic)
make_has_rich_long_cb_{pions, kaons} 生成需要 RICH 信息的特定类型长寿命带电基本粒子
make_photons 光子的基础构建器
make_long_electrons_{no, with}_brem 带或不带轫致辐射修正的长寿命电子基础构建器
make_long_and_{upstream, downstream}_electrons_{no, with}_brem 长寿命电子与上游、下游电子(带或不带轫致辐射修正)的基础构建器
make_long_upstream_and_downstream_electrons_{no, with}_brem 长寿命、上游和下游电子(带或不带轫致辐射修正)的基础构建器
make_long_{muons, pions, kaons, protons, deuterons, helium3} 长寿命 μ 子、π 介子、K 介子、质子、氘核、氦 3 的基础构建器
make_ismuon_long_muon 带有 ISMUON 条件的长寿命 μ 子基础构建器
make_{up, down}_{electrons_no_brem, muons, pions, kaons, protons, deuterons, helium3} 上游、下游电子(无轫致辐射修正)、μ 子、π 介子、K介子、质子、氘核、氦 3 的基础构建器
make_ttrack_{pions, protons, muons, kaons} T 径迹质子或 π 介子的基础构建器
make_has_rich_{long, down, up}_{pions, kaons, protons, deuterons, helium3} 长寿命、下游和上游 π 介子、K 介子、质子、氘核、氦 3(需 RICH信息)的基础构建器
make_has_rich_ttrack_{pions, protons, muons, kaons} 径迹 π 介子、质子(需 RICH 信息)的基础构建器
make_{resolved, merged}_pi0s 分辨的和合并的\pi^0的基础构建器
filter_leptons_loose 轻子预选择的基础过滤器
make_detached_{dielectron, mue, mumu} 分离双轻子构建器
make_detached_{dielectron, mue}_with_brem 包含轫致辐射修正的分离双轻子构建器
make_dimuon_base 双 μ 子组合的基础生成器

粒子的过滤与组合

如前所述,通过这些构建器得到的粒子可以随后使用ThOr函数子(Functors)和ParticleFilter进行过滤。例如,以下代码用于选择PID_K>5且动量大于 \(1~\mathrm{GeV}\) 的长寿命K介子:

make_kaons = standard_particles.make_long_kaons()
code_kaons = F.require_all(F.PID_K > 5, F.P > 1 * GeV)
kaons = algorithms_thor.ParticleFilter(make_kaons, F.FILTER(code_kaons))

这些末态粒子随后可以被组合,以形成一个母粒子对象。这可以是实际的母粒子(例如,\(D_s^-\) 衰变为两个K介子和一个π介子),也可以只是两个径迹的容器,我们可以利用它轻松地对不一定来自同一顶点的粒子组合应用切割。

对于这两种情况,我们都使用algorithms_thorParticleCombiner算法。该函数接受多个关键字参数,包括名称、输入粒子列表、衰变描述符,以及对组合(CombinationCut)和顶点(CompositeCut)的切割。

组合切割通常包括对DOCA(轨道最近距离 \(\chi^2\) )的选择,以及对组合输入粒子不变质量的选择。顶点切割还可以包括对顶点拟合得到的不变质量变量的切割(通常该质量更精确,因此选择往往更严格)。

其他顶点切割可包括对CHI2DOF(顶点质量,即卡方自由度比)、母粒子寿命(BPVLTIME)、母粒子最小 IP 或 IP \(\chi^2\) (MINIPMINIPCHI2)、\(z\) 坐标飞行距离(BPVVDZ)等的选择。

此外,你可以为ParticleCombiner参数提供算法;ParticleVertexFitter用于通过粒子径迹拟合重建顶点;ParticleAdder用于仅组合径迹而不进行顶点拟合。

例如,假设我们想要构建一个双K介子对象,以便对该对粒子应用切割,随后再与π介子组合形成 \(D_s^-\) :

dikaon = ParticleCombiner(
    Inputs=[kaons, kaons],
    ParticleCombiner="ParticleAdder",
    DecayDescriptor="phi(1020) -> K+ K-",
    CombinationCut=F.require_all(F.SDOCA(1,2) < 0.2 * mm),
    CompositeCut=F.require_all(F.MINIP(pvs)>1 * mm),
)

ds = ParticleCombiner(
    Inputs=[dikaon, pions],
    ParticleCombiner="ParticleVertexFitter",
    DecayDescriptor="[D_s^- -> phi(1020) pi-]cc",
    CombinationCut=F.require_all(in_range(1900 * MeV, F.MASS, 2030 * MeV)),
    CompositeCut=F.require_all(in_range(1920 * MeV, F.MASS, 2010 * MeV), F.CHI2DOF < 4)
)

在最小偏置数据上运行

正如在"首次分析步骤"课程中所见,无偏置(NoBias)流收集未通过任何触发选择的数据,每几十万个事件中随机选择一个事件。

最小偏置 vs 无偏置

在LHCb中,有两个容易混淆的概念:"最小偏置MC(Minimum Bias MC)"和"无偏置数据(NoBias data)"。最小偏置MC指的是没有偏好任何衰变的模拟样本,是对现实中观测结果的模拟近似。它们有时用于检查MC中的分布是否真实,或研究触发线路的预期吞吐量,也可用于研究假径迹等。

另一方面,无偏置是完全不做选择的触发线路(数据仅通过触发进行格式转换)。无偏置流可能包含没有束流-束流碰撞的事件,而在最小偏置模拟中,质子-质子碰撞是被强制产生的。

这些数据可供分析师和合作组成员用于各种目的,包括各种检查甚至分析。类似地,我们可以通过让质子碰撞并允许LHCb接受度内的粒子按PDG分支比衰变来模拟最小偏置数据。最小偏置模拟中可访问的衰变列表及其概率列在庞大的DECAY.dec文件中。

无偏置流保留了所有信息,因此我们可以离线使用ParticleAdderParticleCombiner等函数构建自己的衰变候选者。我们甚至可以使用前面的脚本,只需在YAML文件中修改流信息即可。

但需要注意的是,由于使用无偏置数据,只有极少数事件会包含我们感兴趣的衰变,因此要看到信号需要处理大量事件(以下示例中为100,000个事件)。

在以下示例中,我们在无偏置数据上运行(配置文件见此处): input_files:

input_files:
- /eos/lhcb/wg/dpa/wp7/Run3SK/NoBias/00246705_00000054_1.nobias.dst
- /eos/lhcb/wg/dpa/wp7/Run3SK/NoBias/00246705_00000055_1.nobias.dst
input_type: ROOT
output_type: ROOT
input_raw_format: 0.5
simulation: false
input_process: 'TurboPass'
input_stream: 'NoBias'
lumi: true
data_type: 'Upgrade'
evt_max: 100000
print_freq: 10000
ntuple_file: tuple.root
geometry_version: run3/2024.Q1.2-v00.00
conditions_version: master