跳转至

替换质量假设

学习目标

  • 从stripping线路输出开始创建新的选择

  • 修改stripping线路做出的粒子假设

在某些情况下,我们可能希望交换两个粒子的质量假设或粒子鉴别(PID)信息。 以D_s^-\to K^-K^+\pi^-为例,其中 K^-\pi^- 有时会被误鉴别。这种情况下,我们会对 D_s^-\to K^-K^+\pi^-D_s^-\to \pi^-K^+ K^-(质量交换)的顺序都感兴趣, 因为衰变描述符中输入粒子的顺序很重要。

这正是本课程将涵盖的情况,我们将创建三个n元组(nTuples), 一个对应原始情况D_s^-\to K^-K^+\pi^- ,一个对应交换质量假设的情况 D_s^-\to \pi^-K^+ K^- , 第三个则合并前两种情况。

我们有一条剥离线用于选择这些候选粒子,其中 D_s^- 来自B^0。我们可以通过选择剥离线中的候选粒子,并使用 SubstitutePID 函数创建一个第二个 Funtuple 来覆盖质量假设交换的情况,从而交换两个质量假设。

\(D_s^-\to K^-K^+\pi^-\) 候选者位于以下B_Data容器中:

from PyConf.reading import get_particles

B_Line = "SpruceB2OC_BdToDsmK_DsmToKpKmPim_LTU"
B_Data = get_particles(f"/Event/Spruce/{B_Line}/Particles")

我们现在可以应用SubstitutePID在新的Funtuple上修改衰变描述符:

from DaVinciTools import SubstitutePID

Swapped_Data = SubstitutePID(
    "Subs_SwapKpi",  # name of the algorithm
    B_Data,  # input particle container
    substitutions=[
        "[ B0  -> ( D_s- -> K-{{pi-}} K+ pi-{{K-}} ) K+ ]CC",
    ],
).Particles

tuple_swapped = Funtuple(
    name="SwappedTuple",
    tuple_name="DecayTree",
    fields=fields,
    variables=variables,
    event_variables=evt_vars,
    inputs=Swapped_Data,
)

其中,fieldsvariablesevt_vars此处完整示例中提供。 在这个示例中,我们将第一个带电K介子赋予π介子质量假设, 而将D_s^-衰变中的带电π介子赋予K介子质量假设。

此外,我们还可以创建另一个元组, 合并两种情况:正确PID的情况和"错误"PID的情况。 为此,我们创建一个合并上述两个数据容器的容器:

from PyConf.Algorithms import ParticleContainerMerger

MergedContainer = ParticleContainerMerger(
    name="HypothesisMerger",
    InputContainers=[B_Data, Swapped_Data],
    OutputLevel=INFO,
).OutputContainer

tuple_merged = Funtuple(
    name="MergedTuple",
    tuple_name="DecayTree",
    fields=fields,
    variables=variables,
    event_variables=evt_vars,
    inputs=MergedContainer,
)

我们可以使用以下配置文件B2OC工作组的模拟样本上运行这个示例:

input_files:
- root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp7/Run3SK/exampleDST/my_spruce_output-B2OCstream.dst
input_type: ROOT
output_type: ROOT
input_raw_format: 0.5
simulation: true
input_process: Spruce
conddb_tag: sim10-2024.W37.39-v00.00-md100
dddb_tag: dddb-20240427
lumi: false
data_type: '2024'
evt_max: 10000
print_freq: 2000
ntuple_file: tuple.root

可通过以下命令运行代码:

$ lb-run -c x86_64_v3-el9-gcc13+detdesc-opt+g DaVinci/v65r0 lbexec DVoptions:main options.yaml

结果将是一个包含三个 TTree 对象的 tuple.root文件。 OriginalTuple包含通过剥离线且满足原始衰变描述符的候选粒子。 以下是D_s^- 不变质量分布图:

Original Mass Hypothesis

SwappedTuple包含满足π介子和K介子交换后的衰变描述符的候选者。 如下方直方图所示,其峰值更宽。 这是因为我们仅交换了应用于π介子和K介子径迹的质量假设,而未修改选择要求。 因此,现在被我们鉴别为π介子的径迹仍保留Sprucing线路中PID_K\>5, 而被鉴别为K介子的径迹则有PID_K<5

Swapped Mass Hypothesis

最后,MergedTuple包含前两个元组的合并结果:

Merged Mass Hypothesis