跳转至

函数集合

Abstract

  • 了解什么是函数集合以及如何实现它们。

在上一节中,我们学习了如何向元组中添加多种不同的函数。这可能导致生成非常庞大的 DaVinci 脚本,有时甚至容易遗漏您原本打算包含的某个函数。虽然这种功能非常强大,因为它允许我们精确指定需要计算的值以节省资源,但有时您可能希望应用预定义的函数集合。我们将介绍其中几个集合及其包含的内容,并提供一个使用示例!

候选级函数集合

我们从最简单的函数集合 FC.Kinematics 开始,它将添加:

F.MASS
F.P
F.PT
F.PX
F.PY
F.PZ
F.ENERGY

如以下代码片段所示,可以轻松包含它:

all_vars += FC.Kinematics()

这会将所有 7 个函数应用于所有变量,如果你只想将特定集合应用于轨迹或复合粒子,只需这样做:

track_variables += FC.Kinematics()
composite_variables += FC.Kinematics()

此处的文档中可以找到各种各样的其他函数集合。我将讨论一些可能会引起兴趣的其他常见集合。

对于 PID 变量,你可以添加:

track_variables += FC.ParticleID()
其中包含:
F.PARTICLE_ID
F.PROBNN_D
F.PROBNN_E
F.PROBNN_GHOST
F.PROBNN_K
F.PROBNN_MU
F.PROBNN_P
F.PROBNN_PI

通过传递 FC.ParticleID(extra_info = True) ,还将提供标准的 PID 变量。

这里我再重点介绍另外两个函数集合:ParticlePVInfoFC.ChargedCaloInfo。前者提供与粒子归属的主顶点 (PV) 相关的信息 OWNPVX , OWNPVY , OWNPVZ , OWNPV_NDOF ,而后者则提供基于电磁量能器(ECAL)和强子量能器 (HCAL) 的能量沉积信息。

事件级函数集合

到目前为止,所有这些函数集合都是候选级变量,它们作用于每个重建的候选对象。不过,我们也关注事件级信息。这些信息可以很容易地集成到我们的函数元组算法中,如下所示:

funtuple = Funtuple(
    name=line,
    tuple_name="DecayTree",
    fields=fields,
    variables=variables,
    inputs=data,
    event_variables=evt_variables,  # This additional event variables argument
)

在这里,你可以只添加一个名为evt_variables的新函数集合,并向其中添加事件级数量。这些集合的一些示例包括:

AllPrimaryVertexInfo
RecSummary
LHCInfo
EventInfo
每个集合都可以在此处的文档中查找。每个集合都可以像这样添加:
evt_variables = FC.LHCInfo(),
evt_variables += FC.EventInfo(),