函数集合
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 变量。
这里我再重点介绍另外两个函数集合:ParticlePVInfo 和 FC.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(),