使用TISTOS和TriggerCalib评估触发效率
学习目标
- 了解TISTOS方法如何用于计算触发效率
- 学习如何使用TriggerCalib应用TISTOS方法
- 这里可以找到运行TriggerCalib工具的Python脚本示例。
其他文档
本节总结了两个主要资料来源:
1."TriggerCalib:用于估算LHCb触发效率的一站式工具包"J.Albrecht等人,2025年,[arXiv:2505.15951](已提交至JINST) 2.官方TriggerCalib文档
这些资料对TISTOS和TriggerCalib都有更详细的阐述------如果您有疑问,这些资料很可能会给出答案!
在分析中,深入理解应用于数据的选择条件至关重要。 通常,效率可以通过在蒙特卡洛(MC)中检查选择条件的影响来计算,将选择前后的候选者数量之比作为效率。 这种方法对于运动学分布等简单属性很有效,但当应用于复杂属性时会失效,因为这些属性在数据中可能无法被很好地建模。 触发选择就是一个典型例子,它通常依赖于许多属性,包括粒子鉴别(PID)变量等。 若要理解触发效率,我们必须寻找一种可以直接利用数据的方法。
TISTOS方法
TISTOS方法为我们提供了一种数据驱动的触发效率评估替代方案。 如果我们尝试将上述方法直接应用于数据,触发效率\varepsilon 可表示为:
\varepsilon_\mathrm{Trig.} = \frac{N_\mathrm{Trig.}}{N_\mathrm{Sel.}}
N_\mathrm{Sel.} 和 N_\mathrm{Trig.} 分别是触发后和触发前的事件数量。 问题在于,触发具有内在的"破坏性":我们不会保存未被触发的事件! 而TISTOS方法为我们提供了绕过这一问题的途径。
简要总结该方法(如文献[1]所述):我们首先在事件中定义信号候选者,例如B^+\to J/\psi\left(\mu^+\mu^-\right) K^+ 衰变。 触发决策为正可能是由信号候选者(或其一部分,例如其中一个\mu^\pm粒子 1) 引起的,我们称之为触发信号TOS);也可能是由事件中的其他部分引起的,我们称之为独立于信号的触发(TIS)。 还有一种情况是事件同时属于TIS和TOS,即信号候选者足以触发,但触发也由其他物体引起(例如,产生B^+的b\overline{b}夸克对中另一个b-夸克衰变产生的物体)。 我们将这类事件标记为TISTOS。
为了得到触发效率,我们需要对事件计数进行一些处理。 首先,将\varepsilon_\mathrm{Trig.}展开:
\varepsilon_\mathrm{Trig.} = \frac{N_\mathrm{Trig}}{N_\mathrm{Sel}} = \frac{N_\mathrm{Trig}}{N_\mathrm{TIS}} \frac{N_\mathrm{TIS}}{N_\mathrm{Sel}} = \frac{N_\mathrm{Trig}}{N_\mathrm{TIS}} \varepsilon_\mathrm{TIS}.
如果我们假设TIS效率\varepsilon_\mathrm{TIS}在任何数据子样本中都是相同的,那么我们可以在TOS事件子样本中计算它:
\varepsilon_\mathrm{TIS} = \varepsilon_\mathrm{TIS|TOS} = \frac{N_\mathrm{TISTOS}}{N_\mathrm{TOS}}.
将这些整合起来,我们就能用已知量表示触发效率了!
\varepsilon_\mathrm{Trig.} = \frac{N_\mathrm{Trig}}{N_\mathrm{Sel}} = \frac{N_\mathrm{Trig}}{N_\mathrm{TIS}} \frac{N_\mathrm{TISTOS}}{N_\mathrm{TOS}}.
我们做出的假设并非绝对成立:TIS和TOS类别可能(且确实)存在相关性。 这种相关性可以通过分箱计算计数来规避------在足够小的相空间bins 中,相关性会很小。 应用这一思路,我们最终得到:
\varepsilon_\mathrm{Trig.} = \frac{N_\mathrm{Trig}}{\sum\limits_i \frac{N^i_\mathrm{TIS}N^i_\mathrm{TOS}}{N^i_\mathrm{TISTOS}}}.
该方法的实现存在一些注意事项和潜在问题。 幸运的是,现在有了TriggerCalib软件包,它提供了该方法的集中式实现。
何时不使用TISTOS
TISTOS方法不适用于"顶层"触发决策,例如,来自HLT2的数据中的HLT2触发,以及经过精选(sprucing)的数据中的精选触发。 这是因为我们采用了该层级的重建结果,因此所有事件都是TOS。 这会导致N_\mathrm{TIS}=N_\mathrm{TISTOS}, i.e., \varepsilon_\mathrm{TIS|TOS} = 1,显然不合理。
使用TriggerCalib计算效率
TriggerCalib是一个独立的Python包,可通过pip
安装,旨在简化触发效率修正过程。
这里不详细展开,但文献[2]中提供了完整的用户指南和教程。
使用TriggerCalib,特别是HltEff
计算器,计算效率的步骤如下:
- 指定分箱方案:可以直接指定bin的边界,或者指定变量和bin的数量,让TriggerCalib自动处理。
- 选择背景抑制方法:TriggerCalib支持边带扣除、拟合计数和实时计算s权重。
此外,您也可以将现有的逐事件权重(包括预先确定的s权重)传入
HltEff
。 - 将数据集传入
HltEff
,然后保存/检查所得效率。
更多细节可参考文献[2]如有疑问,欢迎在TriggerCalib support Mattermost channel提问。
-
这通常适用于包容性触发,这类触发通常会寻找事件中有趣的部分。例如,
Hlt1TrackMVA
在HLT1层级寻找高质量的径迹,这些径迹构成了触发线路所针对的信号候选者的一部分。 更多细节可参考文献[2],如有疑问,欢迎在 TriggerCalib support Mattermost channel。 ↩