在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
过滤事件中的π介子。
RecoConf
与Hlt2Conf
从DaVinciv65r0
开始,Hlt2Conf
的部分模块被移植到了RecoConf
中,包括standard_particles
和algorithms_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_thor
中ParticleCombiner
算法。该函数接受多个关键字参数,包括名称、输入粒子列表、衰变描述符,以及对组合(CombinationCut
)和顶点(CompositeCut
)的切割。
组合切割通常包括对DOCA(轨道最近距离 \(\chi^2\) )的选择,以及对组合输入粒子不变质量的选择。顶点切割还可以包括对顶点拟合得到的不变质量变量的切割(通常该质量更精确,因此选择往往更严格)。
其他顶点切割可包括对CHI2DOF
(顶点质量,即卡方自由度比)、母粒子寿命(BPVLTIME
)、母粒子最小 IP 或 IP \(\chi^2\) (MINIP
或MINIPCHI2
)、\(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
文件中。
无偏置流保留了所有信息,因此我们可以离线使用ParticleAdder
、ParticleCombiner
等函数构建自己的衰变候选者。我们甚至可以使用前面的脚本,只需在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