Skip to content
Snippets Groups Projects

Tuning of KShhLines for 2025

Merged Davide Lancierini requested to merge BnoC_KSKstzLine_2025 into bnoc_run3
5 files
+ 167
114
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -930,11 +930,12 @@ def make_b2kshh(
name="BNOC_B2KSHHCombiner_{hash}",
asumpt_min=4400.0 * MeV,
amed_pt_min=750.0 * MeV,
hh_amaxpt_min=750.0 * MeV,
hh_amaxp_min=10.0 * GeV,
adoca23_max=15.0,
adoca12_max=25.0,
adoca13_max=25.0,
# hh_amaxpt_min=750.0 * MeV,
# hh_amaxp_min=10.0 * GeV,
docachi2_max=25.0, # here #25 there #25 in bbaryon_2body
# adoca23_max=15.0,
# adoca12_max=25.0,
# adoca13_max=25.0,
m_min=5000.0 * MeV,
m_max=6000.0 * MeV,
pt_min=1500 * MeV,
@@ -942,9 +943,10 @@ def make_b2kshh(
ksvtx_sep_min=15.0 * mm,
bpvipchi2_max=9.0,
bpvfdchi2_min=50.0,
bpvdira_min=0.999,
bpvdira_min=0.9995,
hh_bpvipchi2_min=50.0,
bpvipchi2_sum_min=300.0,
daughter_index=1,
):
"""
A generic 3body decay maker. Makes use of ThreeBodyCombiner
to be more efficient, first making a DOCAcut on the *2 first particles in the
decay descriptor*.
Parameters
----------
@@ -961,5+963,5 @@
Primary vertex maker function.
Remaining parameters define thresholds for the selection.
"""
combination12_cut = require_all(F.SDOCACHI2(1, 2) < adoca12_max)
# combination12_cut = require_all(F.SDOCACHI2(1, 2) < adoca12_max)
combination12_cut = require_all(F.MASS < m_max, F.MAXSDOCACHI2CUT(docachi2_max))
combination_cut = require_all(
in_range(m_min - 100 * MeV, F.MASS, m_max + 100 * MeV),
F.SUM(F.PT) > asumpt_min,
F.PT > pt_min,
F.MAXSDOCACHI2CUT(docachi2_max),
F.SUM(F.PT > amed_pt_min) >= 2,
F.SUBCOMB(Functor=F.MAX(F.P), Indices=[2, 3]) > hh_amaxp_min,
F.SUBCOMB(Functor=F.MAX(F.PT), Indices=[2, 3]) > hh_amaxpt_min,
F.SDOCACHI2(1, 3) < adoca13_max,
F.SDOCACHI2(2, 3) < adoca23_max,
# F.SUBCOMB(Functor=F.MAX(F.P), Indices=[2, 3]) > hh_amaxp_min,
# F.SUBCOMB(Functor=F.MAX(F.PT), Indices=[2, 3]) > hh_amaxpt_min,
# F.SDOCACHI2(1, 3) < adoca13_max,
# F.SDOCACHI2(2, 3) < adoca23_max,
)
hh_ipchi2_cut = (
F.CHILD(2, F.OWNPVIPCHI2) + F.CHILD(3, F.OWNPVIPCHI2)
) > hh_bpvipchi2_min
sum_ipchi2_cut = (
F.SUM_RANGE @ F.MAP(F.OWNPVIPCHI2) @ F.FILTER(F.HASOWNPV) @ F.GET_ALL_BASICS
) > bpvipchi2_sum_min
ksvtx_sep_cut = (F.CHILD(1, F.END_VZ) - F.END_VZ) > ksvtx_sep_min
# hh_ipchi2_cut = (
# F.CHILD(2, F.OWNPVIPCHI2) + F.CHILD(3, F.OWNPVIPCHI2)
# ) > hh_bpvipchi2_min
# sum_ipchi2_cut = (
# F.SUM_RANGE @ F.MAP(F.OWNPVIPCHI2) @ F.FILTER(F.HASOWNPV) @ F.GET_ALL_BASICS
# ) > bpvipchi2_sum_min
# ksvtx_sep_cut = (F.CHILD(1, F.END_VZ) - F.END_VZ) > ksvtx_sep_min
vertex_cut = require_all(
F.PT > pt_min,
in_range(m_min, F.MASS, m_max),
ksvtx_sep_cut,
F.CHI2DOF < vchi2pdof_max,
F.OWNPVDIRA > bpvdira_min,
F.OWNPVIPCHI2 < bpvipchi2_max,
F.OWNPVFDCHI2 > bpvfdchi2_min,
hh_ipchi2_cut,
sum_ipchi2_cut,
)
if hh_bpvipchi2_min is not None:
vertex_cut &= (
F.CHILD(2, F.OWNPVIPCHI2) + F.CHILD(3, F.OWNPVIPCHI2)
) > hh_bpvipchi2_min
if bpvipchi2_sum_min is not None:
vertex_cut &= (
F.SUM_RANGE @ F.MAP(F.OWNPVIPCHI2) @ F.FILTER(F.HASOWNPV) @ F.GET_ALL_BASICS
) > bpvipchi2_sum_min
if ksvtx_sep_min is not None:
vertex_cut &= (F.CHILD(daughter_index, F.END_VZ) - F.END_VZ) > ksvtx_sep_min
return ParticleCombiner(
particles,
name=name,
Loading