From 7678d248cd6ebdfb57459c197de3bc7a02ca8d22 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 20:55:46 +0800 Subject: [PATCH 01/17] Add neutron channel for B->JpsiK --- .../lines/b_to_charmonia/b_to_jpsix.py | 50 +++++ .../b_to_charmonia/builders/basic_builder.py | 173 +++++++++++++++++- .../lines/b_to_charmonia/hlt2_b2cc.py | 27 +++ 3 files changed, 249 insertions(+), 1 deletion(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 42345998816..340e75627b0 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -139,6 +139,56 @@ def make_B2JpsiX( CompositeCut=vertex_code, ) +def make_BuToJpsiK_Neutron( + particles, + descriptor, + name="B2CC_BuToJpsiK_Neutron_Combiner_{hash}", + am_min=2100 * MeV, # Adjust these values as needed + am_max=4400 * MeV, # Adjust these values as needed + asumpt_min=2000 * MeV, + asumpt_max=22 * GeV, + max_vtxchi2pdof=10, + max_ipchi2=None, + AllowDiffInputsForSameIDChildren=False, +): + combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) + #vertex_code = require_all( + # in_range(am_min, F.MASS, am_max), + # (F.CHI2DOF < max_vtxchi2pdof), + #) + #if max_ipchi2: + # vertex_code = require_all(vertex_code, F.OWNPVIPCHI2 < max_ipchi2) + if asumpt_min is not None: + combination_code &= F.SUM(F.PT) > asumpt_min + if asumpt_max is not None: + combination_code &= F.SUM(F.PT) < asumpt_max + return ParticleCombiner( + particles, + name=name, + DecayDescriptor=descriptor, + CombinationCut=combination_code, + AllowDiffInputsForSameIDChildren=AllowDiffInputsForSameIDChildren, + ) + +### Define function for each line +def make_BuToJpsiK_Neutron_line(process): + assert process in ["hlt2", "spruce"], ( + "Line must be defined as Hlt2 or Sprucing line!" + ) + + Jpsi = basic_builder.make_Neutron_Jpsi() + Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( + pid=2, mipchi2_min=9, ghostProb_max=0.1 + ) + #Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) + line_alg = make_BuToJpsiK_Neutron( + particles=[Jpsi, Kaons], + descriptor="[B+ -> J/psi(1S) K+]cc" + ) + + return [Jpsi, Kaons, line_alg] + + def make_Bs2Jpsif0( particles, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index d6e460bd49b..6753ab3a3cd 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -51,16 +51,25 @@ def make_selected_particles( mipchi2_min=0, pt_min=250 * MeV, p_min=0 * GeV, + pt_max=None, + p_max=None, pt_with_brem_min=None, max_eta=None, pid=None, + Geometry_cut=None, max_trghostprob=None, + mipchi2dvprimary_min=None, + track_chisquareperdof_max=None, isMuon=None, nPVs=None, ): code = require_all(F.PT > pt_min, F.P > p_min) if mipchi2_min is not None: code = code & (F.MINIPCHI2(make_pvs()) > mipchi2_min) + if pt_max is not None: + code &= F.PT < pt_max + if p_max is not None: + code &= F.P < p_max if pid is not None: code &= pid if isMuon is not None: @@ -73,7 +82,13 @@ def make_selected_particles( code &= F.SIZE(make_pvs()) < nPVs if max_trghostprob is not None: code &= F.GHOSTPROB < max_trghostprob - + if mipchi2dvprimary_min is not None: + code &= F.OWNPVIPCHI2 > mipchi2dvprimary_min + if track_chisquareperdof_max is not None: + F.CHI2DOF < track_chisquareperdof_max + if Geometry_cut is not None: + code &= F.PX < Geometry_cut[0] * (F.PZ - Geometry_cut[1]) + code &= F.PX > Geometry_cut[0] * (Geometry_cut[1] - F.PZ) return ParticleFilter(make_particles(), F.FILTER(code)) @@ -93,6 +108,36 @@ def make_pions(pid=5, pt=200 * MeV, p=1 * GeV, mipchi2_min=0, **decay_arguments) **decay_arguments, ) +@configurable +def make_PionsforB2JpsiK( + pid=0, + p_min=1.5 * GeV, + pt_min=500 * MeV, + p_max= 200* GeV, + pt_max=10 * GeV, + mipchi2_min=9, + track_chisquareperdof_max=2, + ghostProb_max=None, + mipchi2dvprimary_min=10, +): + """Return pions filtered by thresholds common to BnoC decay product selections.""" + if pid is not None: + pid = F.PID_K < pid + pid &= F.ISMUON == 0 + return make_selected_particles( + make_particles=make_has_rich_long_pions, + pt_min=pt_min, + p_min=p_min, + pt_max=pt_max, + p_max=p_max, + pid=pid, + mipchi2_min=mipchi2_min, + max_trghostprob=ghostProb_max, + mipchi2dvprimary_min=mipchi2dvprimary_min, + track_chisquareperdof_max=track_chisquareperdof_max, + + ) + @configurable def make_kaons(pid=-3, pt=200 * MeV, p=2 * GeV, **decay_arguments): @@ -106,6 +151,68 @@ def make_kaons(pid=-3, pt=200 * MeV, p=2 * GeV, **decay_arguments): **decay_arguments, ) +@configurable +def make_BachelorKaonsforB2JpsiK( + pid=2.0, + p_min=1.5 * GeV, + pt_min=500 * MeV, + p_max=200 * GeV, + pt_max=15 * GeV, + mipchi2_min=9, + track_chisquareperdof_max=2, + invert_pid=False, + ghostProb_max=None, + mipchi2dvprimary_min=10, + Geometry_cut=(0.294, 2000 * MeV) + #alpha=0.294, + #p0=2000 * MeV, +): + """Return pions filtered by thresholds common to BnoC decay product selections.""" + #kaons = filter_particles( + # make_particles=make_has_rich_long_kaons, + # p_min=p_min, + # pt_min=pt_min, + # mipchi2_min=mipchi2_min, + #) + #pvs = make_pvs() + #kanos = make_has_rich_long_kaons + #code = F.require_all(F.PT > pt_min, F.P > p_min, F.MINIPCHI2(pvs) > mipchi2_min) + #if k_pidk_min is not None: + # code = F.PID_K > k_pidk_min + # if invert_pid: + # code = F.PID_K < k_pidk_min + # kaons = ParticleFilter(kaons, F.FILTER(code)) + #code &= F.require_all(F.OWNPVIPCHI2 > mipchi2dvprimary_min + #, F.CHI2DOF < track_chisquareperdof_max + #) + #if ghostProb_max is not None: + # code &= F.GHOSTPROB < ghostProb_max + #if Geometry_cut: + # code &= F.PX < Geometry[0] * (F.PZ - Geometry[1]) + # code &= F.PX > Geometry[0] * (Geometry[1] - F.PZ) + #kaons = ParticleFilter(kaons, F.FILTER(code)) + #return kaons + + if pid is not None: + pid = F.PID_K > pid + pid &= F.ISMUON == 0 + + return make_selected_particles( + make_particles=make_has_rich_long_kaons, + pt_min=pt_min, + p_min=p_min, + pt_max=pt_max, + p_max=p_max, + pid=pid, + mipchi2_min=mipchi2_min, + max_trghostprob=ghostProb_max, + mipchi2dvprimary_min=mipchi2dvprimary_min, + track_chisquareperdof_max=track_chisquareperdof_max, + Geometry_cut=Geometry_cut + ) + + + @configurable def make_muons( @@ -170,6 +277,39 @@ def make_protons( **decay_arguments, ) +@configurable +def make_ProtonsforB2JpsiK( + pid=0, + p_pid_pkdiff=-5.0, + p_min=1.5 * GeV, + pt_min=500 * MeV, + p_max=200 * GeV, + pt_max=15 * GeV, + mipchi2_min=9, + track_chisquareperdof_max=2, + ghostProb_max=None, + mipchi2dvprimary_min=10, +): + """Return protons filtered by thresholds common to BnoC decay product selections.""" + if pid is not None: + pid = F.PID_P > pid + pid &= F.ISMUON == 0 + pid &= F.PID_P - F.PID_K > p_pid_pkdiff + return make_selected_particles( + make_particles=make_has_rich_long_protons, + pt_min=pt_min, + p_min=p_min, + pt_max=pt_max, + p_max=p_max, + pid=pid, + mipchi2_min=mipchi2_min, + max_trghostprob=ghostProb_max, + mipchi2dvprimary_min=mipchi2dvprimary_min, + track_chisquareperdof_max=track_chisquareperdof_max, + + ) + + @configurable def make_down_pions(p_min=2.0 * GeV, pt_min=250 * MeV, mipchi2_min=4.0, pid=None): @@ -1105,3 +1245,34 @@ def make_dedicated_lambda_DD( CombinationCut=combination_code, CompositeCut=vertex_code, ) + +@configurable +def make_Neutron_Jpsi( + name="B2CC_Neutron_Jpsi_{hash}", + make_pvs=make_pvs, + adoca_chi2_max=10.0, + p_min=600.0 * MeV, + pt_min=100.0 * MeV, + am_min=1000 * MeV, + am_max=2200 * MeV, + maxVertexChi2=25, +): + pions = make_PionsforB2JpsiK(pid=0, ghostProb_max=0.1) + protons = make_ProtonsforB2JpsiK(pid=0, ghostProb_max=0.1) + descriptor = "[J/psi(1S) -> p+ pi-]cc" + combination_code = F.require_all( + in_range(am_min, F.MASS, am_max), F.SDOCACHI2(1, 2) < adoca_chi2_max + ) + vertex_code = F.require_all( + F.P > p_min, + F.PT > pt_min + ) + return ParticleCombiner( + [protons, pions], + name=name, + DecayDescriptor=descriptor, + CombinationCut=combination_code, + CompositeCut=vertex_code, + ) + + diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 5792c4b2e64..c5dd144e43e 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -212,6 +212,18 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa pv_tracks=True, ) +@register_line_builder(all_lines) +def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=True): + line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) + return Hlt2Line( + name=name, + prescale=prescale, + algs=b2cc_prefilters() + line_alg, + persistreco=persistreco, + calo_digits=False, + calo_clusters=False, + ) + @register_line_builder(all_lines) def LbToJpsipH_line(name="Hlt2B2CC_LbToJpsipH", prescale=1, persistreco=False): @@ -586,6 +598,21 @@ def BuToJpsiKstPlus(name="Hlt2B2CC_BuToJpsiKstPlus", prescale=1.0, persistreco=F pv_tracks=True, ) +@register_line_builder(all_lines) +def BuToJpsiK_Neutron(name="Hlt2B2CC_BuToJpsiKi_Neutron", prescale=0.01, persistreco=False): + line_alg = b_to_jpsix0.make_BuToJpsiK_neutron_line(process=PROCESS) + iso_parts = isolation.make_iso_particles(line_alg, name="B") + + return Hlt2Line( + name=name, + prescale=prescale, + algs=b2cc_prefilters() + line_alg, + extra_outputs=iso_parts, + persistreco=persistreco, + pv_tracks=True, + ) + + @register_line_builder(all_lines) def BuToChicKPlus(name="Hlt2B2CC_BuToChicKPlus", prescale=1.0, persistreco=False): -- GitLab From 4283916c624992ea8ce6a4946f07673ab9a05570 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 21:00:01 +0800 Subject: [PATCH 02/17] remove persistreco --- Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index c5dd144e43e..faba68e1c85 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -213,7 +213,7 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa ) @register_line_builder(all_lines) -def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=True): +def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=False): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( name=name, -- GitLab From 8b4eabd739293828b80fb76dd51f83ba9b2e6e12 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 21:06:59 +0800 Subject: [PATCH 03/17] remove commented content --- .../b_to_charmonia/builders/basic_builder.py | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index 6753ab3a3cd..beeb990870c 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -164,35 +164,8 @@ def make_BachelorKaonsforB2JpsiK( ghostProb_max=None, mipchi2dvprimary_min=10, Geometry_cut=(0.294, 2000 * MeV) - #alpha=0.294, - #p0=2000 * MeV, ): """Return pions filtered by thresholds common to BnoC decay product selections.""" - #kaons = filter_particles( - # make_particles=make_has_rich_long_kaons, - # p_min=p_min, - # pt_min=pt_min, - # mipchi2_min=mipchi2_min, - #) - #pvs = make_pvs() - #kanos = make_has_rich_long_kaons - #code = F.require_all(F.PT > pt_min, F.P > p_min, F.MINIPCHI2(pvs) > mipchi2_min) - #if k_pidk_min is not None: - # code = F.PID_K > k_pidk_min - # if invert_pid: - # code = F.PID_K < k_pidk_min - # kaons = ParticleFilter(kaons, F.FILTER(code)) - #code &= F.require_all(F.OWNPVIPCHI2 > mipchi2dvprimary_min - #, F.CHI2DOF < track_chisquareperdof_max - #) - #if ghostProb_max is not None: - # code &= F.GHOSTPROB < ghostProb_max - #if Geometry_cut: - # code &= F.PX < Geometry[0] * (F.PZ - Geometry[1]) - # code &= F.PX > Geometry[0] * (Geometry[1] - F.PZ) - #kaons = ParticleFilter(kaons, F.FILTER(code)) - #return kaons - if pid is not None: pid = F.PID_K > pid pid &= F.ISMUON == 0 -- GitLab From bf265ec6ed44d18d18ad24f0bc2e15980d1ad713 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 21:34:22 +0800 Subject: [PATCH 04/17] remove unused variables and commented content --- .../python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 340e75627b0..858f014884b 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -147,17 +147,9 @@ def make_BuToJpsiK_Neutron( am_max=4400 * MeV, # Adjust these values as needed asumpt_min=2000 * MeV, asumpt_max=22 * GeV, - max_vtxchi2pdof=10, - max_ipchi2=None, AllowDiffInputsForSameIDChildren=False, ): combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) - #vertex_code = require_all( - # in_range(am_min, F.MASS, am_max), - # (F.CHI2DOF < max_vtxchi2pdof), - #) - #if max_ipchi2: - # vertex_code = require_all(vertex_code, F.OWNPVIPCHI2 < max_ipchi2) if asumpt_min is not None: combination_code &= F.SUM(F.PT) > asumpt_min if asumpt_max is not None: -- GitLab From dc82d730278f214753de56d849ab61f3bc79e7aa Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 22:10:05 +0800 Subject: [PATCH 05/17] fix format --- Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 858f014884b..9a957661410 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -154,6 +154,7 @@ def make_BuToJpsiK_Neutron( combination_code &= F.SUM(F.PT) > asumpt_min if asumpt_max is not None: combination_code &= F.SUM(F.PT) < asumpt_max + return ParticleCombiner( particles, name=name, -- GitLab From a85f173249b68a0d5fdbe743a9a7ac5e84ea7302 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 22:14:23 +0800 Subject: [PATCH 06/17] calo_digits=True, calo_cluster=True --- .../python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index faba68e1c85..37546b6d35a 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -220,8 +220,8 @@ def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=prescale, algs=b2cc_prefilters() + line_alg, persistreco=persistreco, - calo_digits=False, - calo_clusters=False, + calo_digits=True, + calo_clusters=True, ) -- GitLab From 8463ba22d0f1340116d33c5e999b3682adf64dd5 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 20 Mar 2025 22:28:51 +0800 Subject: [PATCH 07/17] fix format --- .../Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index beeb990870c..87c54242c63 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -1236,10 +1236,12 @@ def make_Neutron_Jpsi( combination_code = F.require_all( in_range(am_min, F.MASS, am_max), F.SDOCACHI2(1, 2) < adoca_chi2_max ) + vertex_code = F.require_all( F.P > p_min, F.PT > pt_min ) + return ParticleCombiner( [protons, pions], name=name, -- GitLab From d814347c5b43b62e7c9137daeadb4b4edfe96791 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Thu, 20 Mar 2025 14:29:33 +0000 Subject: [PATCH 08/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/53061356 --- .../lines/b_to_charmonia/b_to_jpsix.py | 10 +++---- .../b_to_charmonia/builders/basic_builder.py | 26 +++++++------------ .../lines/b_to_charmonia/hlt2_b2cc.py | 13 +++++++--- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 9a957661410..7a45477a2de 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -139,6 +139,7 @@ def make_B2JpsiX( CompositeCut=vertex_code, ) + def make_BuToJpsiK_Neutron( particles, descriptor, @@ -163,6 +164,7 @@ def make_BuToJpsiK_Neutron( AllowDiffInputsForSameIDChildren=AllowDiffInputsForSameIDChildren, ) + ### Define function for each line def make_BuToJpsiK_Neutron_line(process): assert process in ["hlt2", "spruce"], ( @@ -171,18 +173,16 @@ def make_BuToJpsiK_Neutron_line(process): Jpsi = basic_builder.make_Neutron_Jpsi() Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( - pid=2, mipchi2_min=9, ghostProb_max=0.1 + pid=2, mipchi2_min=9, ghostProb_max=0.1 ) - #Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) + # Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) line_alg = make_BuToJpsiK_Neutron( - particles=[Jpsi, Kaons], - descriptor="[B+ -> J/psi(1S) K+]cc" + particles=[Jpsi, Kaons], descriptor="[B+ -> J/psi(1S) K+]cc" ) return [Jpsi, Kaons, line_alg] - def make_Bs2Jpsif0( particles, descriptor, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index 87c54242c63..6f70f48b80e 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -85,7 +85,7 @@ def make_selected_particles( if mipchi2dvprimary_min is not None: code &= F.OWNPVIPCHI2 > mipchi2dvprimary_min if track_chisquareperdof_max is not None: - F.CHI2DOF < track_chisquareperdof_max + F.CHI2DOF < track_chisquareperdof_max if Geometry_cut is not None: code &= F.PX < Geometry_cut[0] * (F.PZ - Geometry_cut[1]) code &= F.PX > Geometry_cut[0] * (Geometry_cut[1] - F.PZ) @@ -108,12 +108,13 @@ def make_pions(pid=5, pt=200 * MeV, p=1 * GeV, mipchi2_min=0, **decay_arguments) **decay_arguments, ) + @configurable def make_PionsforB2JpsiK( pid=0, p_min=1.5 * GeV, pt_min=500 * MeV, - p_max= 200* GeV, + p_max=200 * GeV, pt_max=10 * GeV, mipchi2_min=9, track_chisquareperdof_max=2, @@ -135,7 +136,6 @@ def make_PionsforB2JpsiK( max_trghostprob=ghostProb_max, mipchi2dvprimary_min=mipchi2dvprimary_min, track_chisquareperdof_max=track_chisquareperdof_max, - ) @@ -151,6 +151,7 @@ def make_kaons(pid=-3, pt=200 * MeV, p=2 * GeV, **decay_arguments): **decay_arguments, ) + @configurable def make_BachelorKaonsforB2JpsiK( pid=2.0, @@ -163,13 +164,13 @@ def make_BachelorKaonsforB2JpsiK( invert_pid=False, ghostProb_max=None, mipchi2dvprimary_min=10, - Geometry_cut=(0.294, 2000 * MeV) + Geometry_cut=(0.294, 2000 * MeV), ): """Return pions filtered by thresholds common to BnoC decay product selections.""" if pid is not None: pid = F.PID_K > pid pid &= F.ISMUON == 0 - + return make_selected_particles( make_particles=make_has_rich_long_kaons, pt_min=pt_min, @@ -181,12 +182,10 @@ def make_BachelorKaonsforB2JpsiK( max_trghostprob=ghostProb_max, mipchi2dvprimary_min=mipchi2dvprimary_min, track_chisquareperdof_max=track_chisquareperdof_max, - Geometry_cut=Geometry_cut + Geometry_cut=Geometry_cut, ) - - @configurable def make_muons( pid=None, @@ -250,6 +249,7 @@ def make_protons( **decay_arguments, ) + @configurable def make_ProtonsforB2JpsiK( pid=0, @@ -279,11 +279,9 @@ def make_ProtonsforB2JpsiK( max_trghostprob=ghostProb_max, mipchi2dvprimary_min=mipchi2dvprimary_min, track_chisquareperdof_max=track_chisquareperdof_max, - ) - @configurable def make_down_pions(p_min=2.0 * GeV, pt_min=250 * MeV, mipchi2_min=4.0, pid=None): """ @@ -1219,6 +1217,7 @@ def make_dedicated_lambda_DD( CompositeCut=vertex_code, ) + @configurable def make_Neutron_Jpsi( name="B2CC_Neutron_Jpsi_{hash}", @@ -1237,10 +1236,7 @@ def make_Neutron_Jpsi( in_range(am_min, F.MASS, am_max), F.SDOCACHI2(1, 2) < adoca_chi2_max ) - vertex_code = F.require_all( - F.P > p_min, - F.PT > pt_min - ) + vertex_code = F.require_all(F.P > p_min, F.PT > pt_min) return ParticleCombiner( [protons, pions], @@ -1249,5 +1245,3 @@ def make_Neutron_Jpsi( CombinationCut=combination_code, CompositeCut=vertex_code, ) - - diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 37546b6d35a..154b8a02630 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -212,8 +212,11 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa pv_tracks=True, ) + @register_line_builder(all_lines) -def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=False): +def BuToJpsiK_NeutronPrescaled_line( + name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=False +): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( name=name, @@ -221,7 +224,7 @@ def BuToJpsiK_NeutronPrescaled_line(name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", algs=b2cc_prefilters() + line_alg, persistreco=persistreco, calo_digits=True, - calo_clusters=True, + calo_clusters=True, ) @@ -598,8 +601,11 @@ def BuToJpsiKstPlus(name="Hlt2B2CC_BuToJpsiKstPlus", prescale=1.0, persistreco=F pv_tracks=True, ) + @register_line_builder(all_lines) -def BuToJpsiK_Neutron(name="Hlt2B2CC_BuToJpsiKi_Neutron", prescale=0.01, persistreco=False): +def BuToJpsiK_Neutron( + name="Hlt2B2CC_BuToJpsiKi_Neutron", prescale=0.01, persistreco=False +): line_alg = b_to_jpsix0.make_BuToJpsiK_neutron_line(process=PROCESS) iso_parts = isolation.make_iso_particles(line_alg, name="B") @@ -613,7 +619,6 @@ def BuToJpsiK_Neutron(name="Hlt2B2CC_BuToJpsiKi_Neutron", prescale=0.01, persist ) - @register_line_builder(all_lines) def BuToChicKPlus(name="Hlt2B2CC_BuToChicKPlus", prescale=1.0, persistreco=False): line_alg = b_to_jpsix0.make_B2Chic2JpsiGK_line(process=PROCESS) -- GitLab From b7bc14b347ee1067ffbc9e217152b1379de1ba99 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Mon, 24 Mar 2025 14:19:13 +0800 Subject: [PATCH 09/17] prescale to 0.002 --- .../lines/b_to_charmonia/hlt2_b2cc.py | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 154b8a02630..b5119ebe36f 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -215,7 +215,7 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa @register_line_builder(all_lines) def BuToJpsiK_NeutronPrescaled_line( - name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.01, persistreco=False + name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.002, persistreco=False ): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( @@ -602,23 +602,6 @@ def BuToJpsiKstPlus(name="Hlt2B2CC_BuToJpsiKstPlus", prescale=1.0, persistreco=F ) -@register_line_builder(all_lines) -def BuToJpsiK_Neutron( - name="Hlt2B2CC_BuToJpsiKi_Neutron", prescale=0.01, persistreco=False -): - line_alg = b_to_jpsix0.make_BuToJpsiK_neutron_line(process=PROCESS) - iso_parts = isolation.make_iso_particles(line_alg, name="B") - - return Hlt2Line( - name=name, - prescale=prescale, - algs=b2cc_prefilters() + line_alg, - extra_outputs=iso_parts, - persistreco=persistreco, - pv_tracks=True, - ) - - @register_line_builder(all_lines) def BuToChicKPlus(name="Hlt2B2CC_BuToChicKPlus", prescale=1.0, persistreco=False): line_alg = b_to_jpsix0.make_B2Chic2JpsiGK_line(process=PROCESS) -- GitLab From fe8d1111d4bb123f7f7ff95208088351dfc0778c Mon Sep 17 00:00:00 2001 From: Youhua Yang <youhua.yang@cern.ch> Date: Wed, 26 Mar 2025 15:51:14 +0000 Subject: [PATCH 10/17] Lb->nJ/psi Ks reduction more bw --- .../lines/b_to_charmonia/b_to_jpsix.py | 37 ++++++++++++++----- .../b_to_charmonia/builders/basic_builder.py | 11 +++++- .../lines/b_to_charmonia/hlt2_b2cc.py | 8 ++-- .../lines/b_to_charmonia/prefilters.py | 19 ++++++++-- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 1f2c5fd2d85..7177549b8cf 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -19,6 +19,7 @@ from Functors.math import in_range from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond from PyConf.Tools import ParticleVertexFitter from RecoConf.algorithms_thor import ParticleCombiner, ParticleContainersMerger +from RecoConf.reconstruction_objects import make_pvs from RecoConf.standard_particles import make_long_muons from Hlt2Conf.lines.b_to_charmonia.builders import basic_builder, special_builder @@ -212,11 +213,11 @@ def make_LbToJpsiKs_Neutron_tight( particles, descriptor, name="B2CC_LbToJpsiKshort_Neutron_Combiner_{hash}", + pvs=make_pvs, comb_m_min=6050 * MeV, comb_m_max=6555 * MeV, ): combination_code = in_range(comb_m_min, F.MASS, comb_m_max) - return ParticleCombiner( name=name, Inputs=particles, @@ -607,7 +608,7 @@ def make_LbToJpsipH_line( def make_LbToJpsiKs_LL_Neutron_tight_line( process, - comb_m_min_jpsi=2916 * MeV, + comb_m_min_jpsi=3016 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -615,18 +616,23 @@ def make_LbToJpsiKs_LL_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) + pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) + # jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( + # muons=muons, max_vchi2pdof=4 + # ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4 + muons=muons, max_vchi2pdof=4, max_docachi2=9 ) kshort_LL = basic_builder.make_ks_LL(bpvvdchi2=4, chi2vx=4, pi_mipchi2pv=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_LL], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", + pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) @@ -636,7 +642,7 @@ def make_LbToJpsiKs_LL_Neutron_tight_line( def make_LbToJpsiKs_DD_Neutron_tight_line( process, - comb_m_min_jpsi=2916 * MeV, + comb_m_min_jpsi=3016 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -644,18 +650,24 @@ def make_LbToJpsiKs_DD_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) + pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4 + muons=muons, max_vchi2pdof=4, max_docachi2=9 ) + # jpsi = basic_builder.make_selected_jpsi2mumu( + # max_vchi2pdof=9, + # max_docachi2=9, + # ) kshort_DD = basic_builder.make_ks_DD(bpvvdchi2=4, chi2vx=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_DD], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", + pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) @@ -665,7 +677,7 @@ def make_LbToJpsiKs_DD_Neutron_tight_line( def make_LbToJpsiKs_LD_Neutron_tight_line( process, - comb_m_min_jpsi=2916 * MeV, + comb_m_min_jpsi=3016 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -673,18 +685,23 @@ def make_LbToJpsiKs_LD_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) + pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4 + muons=muons, max_vchi2pdof=4, max_docachi2=9 ) + # jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( + # muons=muons, max_vchi2pdof=4 + # ) kshort_LD = basic_builder.make_ks_LD(bpvvdchi2=4, chi2vx=4, pi_mipchi2pv=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_LD], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", + pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index 82c72724532..b75ac95e3f9 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -486,7 +486,12 @@ def make_selected_jpsi2mumu( @configurable def make_selected_jpsi_bd2jpsimumukshort( - muons, admass=100 * MeV, admass_vtx=100 * MeV, max_vchi2pdof=20, psi2S=False + muons, + admass=100 * MeV, + admass_vtx=100 * MeV, + max_vchi2pdof=20, + psi2S=False, + max_docachi2=None, ): """ Filter jpsi candiates for B2CC. Default cuts refered to Bd2JpsimumuKshort. @@ -503,6 +508,10 @@ def make_selected_jpsi_bd2jpsimumukshort( combination_code = require_all( in_range(reference_mass - admass, F.MASS, reference_mass + admass) ) + if max_docachi2 is not None: + combination_code = require_all( + combination_code, F.MAXSDOCACHI2CUT(float(max_docachi2)) + ) vertex_code = require_all( in_range(reference_mass - admass_vtx, F.MASS, reference_mass + admass_vtx), F.CHI2DOF < max_vchi2pdof, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 96166a2ae06..784aca4ff73 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -237,7 +237,7 @@ def LbToJpsiKs_Neutron_LL_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters() + line_alg, + algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, @@ -253,10 +253,11 @@ def LbToJpsiKs_Neutron_DD_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters() + line_alg, + algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, + raw_banks=["Calo"], ) @@ -268,10 +269,11 @@ def LbToJpsiKs_Neutron_LD_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters() + line_alg, + algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, + raw_banks=["Calo"], ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py index 2702c3d7891..12ccbc6679a 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py @@ -15,11 +15,22 @@ from RecoConf.event_filters import require_gec, require_pvs from RecoConf.reconstruction_objects import make_pvs, upfront_reconstruction +from Hlt2Conf.lines.topological_b import require_topo_candidate + # make sure we have a PV # at the momement GEC not mandatory -def b2cc_prefilters(require_GEC=False): +def b2cc_prefilters( + require_GEC=False, require_topo=False, min_twobody_mva=0.1, min_threebody_mva=0.1 +): + filters = list(upfront_reconstruction()) # create a copy if require_GEC: - return upfront_reconstruction() + [require_gec(), require_pvs(make_pvs())] - else: - return upfront_reconstruction() + [require_pvs(make_pvs())] + filters.append(require_gec()) + filters.append(require_pvs(make_pvs())) + if require_topo: + filters.append( + require_topo_candidate( + min_twobody_mva=min_twobody_mva, min_threebody_mva=min_threebody_mva + ) + ) + return filters -- GitLab From 8b5f8fd180f1fd33c2f641fa5ef0ba98cc57913b Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 27 Mar 2025 00:45:57 +0800 Subject: [PATCH 11/17] further reduce bw --- .../lines/b_to_charmonia/b_to_jpsix.py | 109 +++++++++++++++++- .../b_to_charmonia/builders/basic_builder.py | 93 ++++++++++++--- .../lines/b_to_charmonia/hlt2_b2cc.py | 5 +- .../lines/b_to_charmonia/prefilters.py | 18 ++- .../lines/bandq/builders/dimuon_lines.py | 1 + 5 files changed, 199 insertions(+), 27 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 7a45477a2de..8c6b7863e91 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -16,7 +16,8 @@ Definition of B -> J/psi X HLT2/Sprucing lines for B2CC. import Functors as F from Functors import require_all from Functors.math import in_range -from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond +from RecoConf.reconstruction_objects import make_pvs +from GaudiKernel.SystemOfUnits import GeV, MeV, mm, picosecond from RecoConf.algorithms_thor import ParticleCombiner, ParticleContainersMerger from RecoConf.standard_particles import make_long_muons @@ -139,28 +140,34 @@ def make_B2JpsiX( CompositeCut=vertex_code, ) - def make_BuToJpsiK_Neutron( particles, descriptor, name="B2CC_BuToJpsiK_Neutron_Combiner_{hash}", am_min=2100 * MeV, # Adjust these values as needed - am_max=4400 * MeV, # Adjust these values as needed + am_max=5500 * MeV, # Adjust these values as needed asumpt_min=2000 * MeV, asumpt_max=22 * GeV, + bpvfdchi2_min=450, + vchi2pdof_max=25, AllowDiffInputsForSameIDChildren=False, ): + pvs= make_pvs() combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) if asumpt_min is not None: combination_code &= F.SUM(F.PT) > asumpt_min if asumpt_max is not None: combination_code &= F.SUM(F.PT) < asumpt_max - + composite_code = F.require_all( + F.CHI2 < vchi2pdof_max, + F.BPVFDCHI2(pvs) > bpvfdchi2_min, + ) return ParticleCombiner( particles, name=name, DecayDescriptor=descriptor, CombinationCut=combination_code, + CompositeCut=composite_code, AllowDiffInputsForSameIDChildren=AllowDiffInputsForSameIDChildren, ) @@ -173,7 +180,7 @@ def make_BuToJpsiK_Neutron_line(process): Jpsi = basic_builder.make_Neutron_Jpsi() Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( - pid=2, mipchi2_min=9, ghostProb_max=0.1 + pid=5, mipchi2_min=16, ghostProb_max=0.05 ) # Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) line_alg = make_BuToJpsiK_Neutron( @@ -183,6 +190,98 @@ def make_BuToJpsiK_Neutron_line(process): return [Jpsi, Kaons, line_alg] + + +#def make_BuToJpsiK_Neutron( +# particles, +# descriptor, +# name="B2CC_BuToJpsiK_Neutron_Combiner_{hash}", +# am_min=2350 * MeV, # Adjust these values as needed +# am_max=4400 * MeV, # Adjust these values as needed +# am12_min=1150 * MeV, +# am12_max=2200 * MeV, +# asumpt_min=2000 * MeV, +# asumpt_max=22 * GeV, +# adoca_chi2_max=5.0, +# adoca_max= 0.2 * mm, +# dira=-10.0, +# max_ipchi2=25, +# max_vtxchi2pdof=25, +# AllowDiffInputsForSameIDChildren=False, +#): +# +# combination12_code = F.require_all( +# in_range(am12_min, F.MASS, am12_max), +# (F.MASSWITHHYPOTHESES(("K+", "pi-")) < 1750 * MeV) | +# (F.MASSWITHHYPOTHESES(("K+", "pi-")) > 1950 * MeV), +# (F.MASSWITHHYPOTHESES(("pi+", "pi-")) < 1750 * MeV) | +# (F.MASSWITHHYPOTHESES(("pi+", "pi-")) > 1950 * MeV), +# (F.MASSWITHHYPOTHESES(("p+", "p~-")) < 2950 * MeV) | +# (F.MASSWITHHYPOTHESES(("p+", "p~-")) > 3150 * MeV), +# ) +# combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) +# composite_code = F.require_all( +# F.SDOCACHI2(1, 2) < adoca_chi2_max, +# F.SDOCA(1, 2) < adoca_max, +# (F.SUBCOMB(Functor=F.MASS, Indices=[2, 3]) < 1750 * MeV ) | +# (F.SUBCOMB(Functor=F.MASS, Indices=[2, 3]) > 1950 * MeV), +# (F.MASSWITHHYPOTHESES(("p+", "pi-", "pi+")) < 2200 * MeV) | +# (F.MASSWITHHYPOTHESES(("p+", "pi-", "pi+")) > 2340 * MeV), +# (F.MASSWITHHYPOTHESES(("p+", "K-", "pi+")) < 2200 * MeV) | +# (F.MASSWITHHYPOTHESES(("p+", "K-", "pi+")) > 2340 * MeV), +# in_range(0., F.ALV(1,2), 1), +# in_range(0., F.ALV(1,3), 1), +# in_range(0., F.ALV(2,3), 1), +# (F.OWNPVDIRA > dira), +# (F.CHI2DOF < max_vtxchi2pdof), +# +# ) +# if max_ipchi2: +# composite_code = require_all(composite_code, F.OWNPVIPCHI2 < max_ipchi2) +# +# if asumpt_min is not None: +# combination_code &= F.SUM(F.PT) > asumpt_min +# if asumpt_max is not None: +# combination_code &= F.SUM(F.PT) < asumpt_max +# +# return ParticleCombiner( +# particles, +# name=name, +# DecayDescriptor=descriptor, +# Combination12Cut=combination12_code, +# CombinationCut=combination_code, +# CompositeCut=composite_code, +# AllowDiffInputsForSameIDChildren=AllowDiffInputsForSameIDChildren, +# ) +# +# +#### Define function for each line +#def make_BuToJpsiK_Neutron_line(process): +# assert process in ["hlt2", "spruce"], ( +# "Line must be defined as Hlt2 or Sprucing line!" +# ) +# +# #Jpsi = basic_builder.make_Neutron_Jpsi() +# Protons = basic_builder.make_ProtonsforB2JpsiK( +# pid=5, mipchi2_min=16, ghostProb_max=0.05 +# ) +# Pions = basic_builder.make_PionsforB2JpsiK( +# pid=-5, mipchi2_min=16, ghostProb_max=0.05 +# ) +# Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( +# pid=5, mipchi2_min=16, ghostProb_max=0.05 +# ) +# +# #persistable_photons = basic_builder.make_photons_to_preserve(Kaons) +# #print("persistable_photons.OutputLocation ", persistable_photons.OutputLocation) +# # Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) +# line_alg = make_BuToJpsiK_Neutron( +# particles=[Protons, Pions, Kaons], descriptor="[B+ -> p+ pi- K+]cc" +# ) +# +# return [Protons, Pions, Kaons, line_alg] + + def make_Bs2Jpsif0( particles, descriptor, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index 6f70f48b80e..aaad1a035ad 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -20,6 +20,7 @@ from RecoConf.algorithms_thor import ( ParticleContainersMerger, ParticleFilter, ) +from PyConf.Algorithms import SelectionFromRelationTable, WeightedRelTableAlg from RecoConf.reconstruction_objects import make_pvs from RecoConf.standard_particles import ( _make_dielectron_with_brem, @@ -37,6 +38,7 @@ from RecoConf.standard_particles import ( make_long_electrons_no_brem, make_long_pions_for_V0, make_up_pions_for_V0, + make_photons, ) #################################### @@ -119,7 +121,7 @@ def make_PionsforB2JpsiK( mipchi2_min=9, track_chisquareperdof_max=2, ghostProb_max=None, - mipchi2dvprimary_min=10, + mipchi2dvprimary_min=16, ): """Return pions filtered by thresholds common to BnoC decay product selections.""" if pid is not None: @@ -155,22 +157,32 @@ def make_kaons(pid=-3, pt=200 * MeV, p=2 * GeV, **decay_arguments): @configurable def make_BachelorKaonsforB2JpsiK( pid=2.0, - p_min=1.5 * GeV, - pt_min=500 * MeV, + p_min=2. * GeV, + pt_min=800 * MeV, p_max=200 * GeV, pt_max=15 * GeV, mipchi2_min=9, track_chisquareperdof_max=2, invert_pid=False, ghostProb_max=None, - mipchi2dvprimary_min=10, + mipchi2dvprimary_min=16, Geometry_cut=(0.294, 2000 * MeV), ): """Return pions filtered by thresholds common to BnoC decay product selections.""" if pid is not None: pid = F.PID_K > pid pid &= F.ISMUON == 0 - + print("PID_K ", F.PID_K()) + print("CALOCELLID_ALL ", F.CALOCELLID_ALL()) + print("CALOCELLID_COLUMN ", F.CALOCELLID_COLUMN()) + print("CALOCELLID_ROW ", F.CALOCELLID_ROW()) + print("CALO_NEUTRAL_1TO9_ENERGY_RATIO ", F.CALO_NEUTRAL_1TO9_ENERGY_RATIO()) + print("CALO_CLUSTER_MASS ", F.CALO_CLUSTER_MASS()) + print("CALO_NEUTRAL_ECAL_ENERGY ", F.CALO_NEUTRAL_ECAL_ENERGY()) + print("CALO_NEUTRAL_HCAL2ECAL_ENERGY_RATIO ", F.CALO_NEUTRAL_HCAL2ECAL_ENERGY_RATIO()) + print("CALO_NEUTRAL_SHOWER_SHAPE ", F.CALO_NEUTRAL_SHOWER_SHAPE()) + print("CALO_NEUTRAL_ID ", F.CALO_NEUTRAL_ID()) + print("CALO_NUM_SATURATED_CELLS ", F.CALO_NUM_SATURATED_CELLS()) return make_selected_particles( make_particles=make_has_rich_long_kaons, pt_min=pt_min, @@ -185,6 +197,31 @@ def make_BachelorKaonsforB2JpsiK( Geometry_cut=Geometry_cut, ) +@configurable +def make_photons_to_preserve(tracks): + """Return photon maker filtered to preserve photons near the dielectron candidates.""" + photons = ParticleFilter( + make_photons(), + F.FILTER( + F.require_all( + F.PT > 100 * MeV, + F.P > 0 * MeV, + F.IS_PHOTON > 0.0, + F.IS_NOT_H > 0.2, + F.CALO_NEUTRAL_SHOWER_SHAPE > 0, + ), + ), + ) + + photons_table = WeightedRelTableAlg( + InputCandidates=photons, + ReferenceParticles=tracks, + Cut=in_range(0.0 * MeV, F.COMB_MASS(), 600.0 * MeV), + ) + + return SelectionFromRelationTable(InputRelations=photons_table.OutputRelations) + + @configurable def make_muons( @@ -261,7 +298,7 @@ def make_ProtonsforB2JpsiK( mipchi2_min=9, track_chisquareperdof_max=2, ghostProb_max=None, - mipchi2dvprimary_min=10, + mipchi2dvprimary_min=16, ): """Return protons filtered by thresholds common to BnoC decay product selections.""" if pid is not None: @@ -1132,6 +1169,7 @@ def make_dedicated_lambda_LL( bpvltime_min=1.0 * ps, vchi2pdof_max=15.0, endvz_min=0 * mm, + endvz_max=200 * mm, ): protons = make_protons( p_min=p_p_min, @@ -1150,7 +1188,7 @@ def make_dedicated_lambda_LL( in_range(mass_window_min, F.MASS, mass_window_max), F.PT > lambda_pt_min, F.CHI2DOF < vchi2pdof_max, - F.END_VZ > endvz_min, + F.math.in_range(endvz_min, F.END_VZ, endvz_max), F.OWNPVLTIME > bpvltime_min, F.OWNPVFDCHI2 > bpvfdchi2_min, F.OWNPVVDZ > bpvvdz_min, @@ -1222,21 +1260,44 @@ def make_dedicated_lambda_DD( def make_Neutron_Jpsi( name="B2CC_Neutron_Jpsi_{hash}", make_pvs=make_pvs, - adoca_chi2_max=10.0, - p_min=600.0 * MeV, - pt_min=100.0 * MeV, - am_min=1000 * MeV, + adoca_chi2_max=5.0, + adoca_max= 0.2 * mm, + p_min=1000.0 * MeV, + pt_min=500.0 * MeV, + am_min=1150 * MeV, am_max=2200 * MeV, - maxVertexChi2=25, + minRho=3, + minVDz=0.0, + maxVDz=200.0, + ownpvdira_min=0.0, + maxVz=650 * mm, + max_vtxchi2pdof=9, ): - pions = make_PionsforB2JpsiK(pid=0, ghostProb_max=0.1) - protons = make_ProtonsforB2JpsiK(pid=0, ghostProb_max=0.1) + pions = make_PionsforB2JpsiK(pid=-5, mipchi2_min=16, ghostProb_max=0.05) + protons = make_ProtonsforB2JpsiK(pid=5, mipchi2_min=16, ghostProb_max=0.05) descriptor = "[J/psi(1S) -> p+ pi-]cc" combination_code = F.require_all( - in_range(am_min, F.MASS, am_max), F.SDOCACHI2(1, 2) < adoca_chi2_max + in_range(am_min, F.MASS, am_max), + F.SDOCACHI2(1, 2) < adoca_chi2_max, + F.SDOCA(1, 2) < adoca_max, + in_range(0.2, F.ALV(1,2), 1.), + (F.MASSWITHHYPOTHESES(("K+", "pi-")) < 1750 * MeV) | + (F.MASSWITHHYPOTHESES(("K+", "pi-")) > 1950 * MeV), + (F.MASSWITHHYPOTHESES(("pi+", "pi-")) < 1750 * MeV) | + (F.MASSWITHHYPOTHESES(("pi+", "pi-")) > 1950 * MeV), + (F.MASSWITHHYPOTHESES(("p+", "p~-")) < 2950 * MeV) | + (F.MASSWITHHYPOTHESES(("p+", "p~-")) > 3150 * MeV), ) - vertex_code = F.require_all(F.P > p_min, F.PT > pt_min) + vertex_code = F.require_all( + F.P > p_min, + F.PT > pt_min, + F.CHI2 < max_vtxchi2pdof, + F.math.in_range(minVDz, F.OWNPVVDZ, maxVDz), + F.OWNPVDIRA > ownpvdira_min, + F.END_VZ < maxVz, + F.END_VRHO < minRho, + ) return ParticleCombiner( [protons, pions], diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index b5119ebe36f..0df9f44f017 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -215,16 +215,17 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa @register_line_builder(all_lines) def BuToJpsiK_NeutronPrescaled_line( - name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.002, persistreco=False + name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.4, persistreco=False ): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters() + line_alg, + algs=b2cc_prefilters(require_GEC=True, require_topo=True, min_twobody_mva=0.9, min_threebody_mva=0.9) + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, + raw_banks=["Calo"], ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py index 2702c3d7891..1225f2bb0da 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py @@ -14,12 +14,22 @@ from RecoConf.event_filters import require_gec, require_pvs from RecoConf.reconstruction_objects import make_pvs, upfront_reconstruction +from Hlt2Conf.lines.topological_b import require_topo_candidate # make sure we have a PV # at the momement GEC not mandatory -def b2cc_prefilters(require_GEC=False): +def b2cc_prefilters( + require_GEC=False, require_topo=False, min_twobody_mva=0.1, min_threebody_mva=0.1 +): + filters = list(upfront_reconstruction()) # create a copy if require_GEC: - return upfront_reconstruction() + [require_gec(), require_pvs(make_pvs())] - else: - return upfront_reconstruction() + [require_pvs(make_pvs())] + filters.append(require_gec()) + filters.append(require_pvs(make_pvs())) + if require_topo: + filters.append( + require_topo_candidate( + min_twobody_mva=min_twobody_mva, min_threebody_mva=min_threebody_mva + ) + ) + return filters diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py index bfb05f4c7c1..b018fe82a71 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py @@ -273,3 +273,4 @@ def make_loose_samesign_dimuon( minMass_dimuon=minMass_dimuon, minPt_muon=minPt_muon, ) + -- GitLab From 78aa454bdc1b0450ff6c37c61271756a56838eee Mon Sep 17 00:00:00 2001 From: Yiming Liu <yiming.liu@cern.ch> Date: Wed, 26 Mar 2025 17:47:56 +0100 Subject: [PATCH 12/17] Revert "Merge branch 'optimize_LbTonJpsiKs_b2cc' into 'b2cc_202501'" This reverts commit 37d9ad2857fce05d5868e0308edf8ae2a24f5c3b, reversing changes made to 6472e33139b4af1e78821cf17669a02d92271958. --- .../lines/b_to_charmonia/b_to_jpsix.py | 37 +++++-------------- .../b_to_charmonia/builders/basic_builder.py | 11 +----- .../lines/b_to_charmonia/hlt2_b2cc.py | 8 ++-- .../lines/b_to_charmonia/prefilters.py | 19 ++-------- 4 files changed, 18 insertions(+), 57 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 7177549b8cf..1f2c5fd2d85 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -19,7 +19,6 @@ from Functors.math import in_range from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond from PyConf.Tools import ParticleVertexFitter from RecoConf.algorithms_thor import ParticleCombiner, ParticleContainersMerger -from RecoConf.reconstruction_objects import make_pvs from RecoConf.standard_particles import make_long_muons from Hlt2Conf.lines.b_to_charmonia.builders import basic_builder, special_builder @@ -213,11 +212,11 @@ def make_LbToJpsiKs_Neutron_tight( particles, descriptor, name="B2CC_LbToJpsiKshort_Neutron_Combiner_{hash}", - pvs=make_pvs, comb_m_min=6050 * MeV, comb_m_max=6555 * MeV, ): combination_code = in_range(comb_m_min, F.MASS, comb_m_max) + return ParticleCombiner( name=name, Inputs=particles, @@ -608,7 +607,7 @@ def make_LbToJpsipH_line( def make_LbToJpsiKs_LL_Neutron_tight_line( process, - comb_m_min_jpsi=3016 * MeV, + comb_m_min_jpsi=2916 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -616,23 +615,18 @@ def make_LbToJpsiKs_LL_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) - pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) - # jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - # muons=muons, max_vchi2pdof=4 - # ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4, max_docachi2=9 + muons=muons, max_vchi2pdof=4 ) kshort_LL = basic_builder.make_ks_LL(bpvvdchi2=4, chi2vx=4, pi_mipchi2pv=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_LL], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", - pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) @@ -642,7 +636,7 @@ def make_LbToJpsiKs_LL_Neutron_tight_line( def make_LbToJpsiKs_DD_Neutron_tight_line( process, - comb_m_min_jpsi=3016 * MeV, + comb_m_min_jpsi=2916 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -650,24 +644,18 @@ def make_LbToJpsiKs_DD_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) - pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4, max_docachi2=9 + muons=muons, max_vchi2pdof=4 ) - # jpsi = basic_builder.make_selected_jpsi2mumu( - # max_vchi2pdof=9, - # max_docachi2=9, - # ) kshort_DD = basic_builder.make_ks_DD(bpvvdchi2=4, chi2vx=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_DD], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", - pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) @@ -677,7 +665,7 @@ def make_LbToJpsiKs_DD_Neutron_tight_line( def make_LbToJpsiKs_LD_Neutron_tight_line( process, - comb_m_min_jpsi=3016 * MeV, + comb_m_min_jpsi=2916 * MeV, comb_m_max_jpsi=3276 * MeV, comb_m_min=3550 * MeV, comb_m_max=4750 * MeV, @@ -685,23 +673,18 @@ def make_LbToJpsiKs_LD_Neutron_tight_line( assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) - pvs = make_pvs() muons = basic_builder.filter_muons_loose( particles=make_long_muons(), mu_pidk=10, mu_pidp=10 ) jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - muons=muons, max_vchi2pdof=4, max_docachi2=9 + muons=muons, max_vchi2pdof=4 ) - # jpsi = basic_builder.make_selected_jpsi_bd2jpsimumukshort( - # muons=muons, max_vchi2pdof=4 - # ) kshort_LD = basic_builder.make_ks_LD(bpvvdchi2=4, chi2vx=4, pi_mipchi2pv=4) Lb2jpsiKs = make_LbToJpsiKs_Neutron_tight( + name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", particles=[jpsi, kshort_LD], descriptor="[Lambda_b0 -> J/psi(1S) KS0 ]cc", - name="B2CC_LbToJpsiKshort_neutron_Combiner_{hash}", - pvs=pvs, comb_m_min=comb_m_min, comb_m_max=comb_m_max, ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index b75ac95e3f9..82c72724532 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -486,12 +486,7 @@ def make_selected_jpsi2mumu( @configurable def make_selected_jpsi_bd2jpsimumukshort( - muons, - admass=100 * MeV, - admass_vtx=100 * MeV, - max_vchi2pdof=20, - psi2S=False, - max_docachi2=None, + muons, admass=100 * MeV, admass_vtx=100 * MeV, max_vchi2pdof=20, psi2S=False ): """ Filter jpsi candiates for B2CC. Default cuts refered to Bd2JpsimumuKshort. @@ -508,10 +503,6 @@ def make_selected_jpsi_bd2jpsimumukshort( combination_code = require_all( in_range(reference_mass - admass, F.MASS, reference_mass + admass) ) - if max_docachi2 is not None: - combination_code = require_all( - combination_code, F.MAXSDOCACHI2CUT(float(max_docachi2)) - ) vertex_code = require_all( in_range(reference_mass - admass_vtx, F.MASS, reference_mass + admass_vtx), F.CHI2DOF < max_vchi2pdof, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 784aca4ff73..96166a2ae06 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -237,7 +237,7 @@ def LbToJpsiKs_Neutron_LL_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, + algs=b2cc_prefilters() + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, @@ -253,11 +253,10 @@ def LbToJpsiKs_Neutron_DD_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, + algs=b2cc_prefilters() + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, - raw_banks=["Calo"], ) @@ -269,11 +268,10 @@ def LbToJpsiKs_Neutron_LD_tight_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters(require_GEC=True, require_topo=True) + line_alg, + algs=b2cc_prefilters() + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, - raw_banks=["Calo"], ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py index 12ccbc6679a..2702c3d7891 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py @@ -15,22 +15,11 @@ from RecoConf.event_filters import require_gec, require_pvs from RecoConf.reconstruction_objects import make_pvs, upfront_reconstruction -from Hlt2Conf.lines.topological_b import require_topo_candidate - # make sure we have a PV # at the momement GEC not mandatory -def b2cc_prefilters( - require_GEC=False, require_topo=False, min_twobody_mva=0.1, min_threebody_mva=0.1 -): - filters = list(upfront_reconstruction()) # create a copy +def b2cc_prefilters(require_GEC=False): if require_GEC: - filters.append(require_gec()) - filters.append(require_pvs(make_pvs())) - if require_topo: - filters.append( - require_topo_candidate( - min_twobody_mva=min_twobody_mva, min_threebody_mva=min_threebody_mva - ) - ) - return filters + return upfront_reconstruction() + [require_gec(), require_pvs(make_pvs())] + else: + return upfront_reconstruction() + [require_pvs(make_pvs())] -- GitLab From 65e41bf613756ac769f8f014321f0f9d28314d5c Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 27 Mar 2025 00:49:27 +0800 Subject: [PATCH 13/17] delete unused variable and commented content --- .../lines/b_to_charmonia/b_to_jpsix.py | 93 ------------------- .../b_to_charmonia/builders/basic_builder.py | 11 --- .../lines/bandq/builders/dimuon_lines.py | 1 - 3 files changed, 105 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 8c6b7863e91..25071213592 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -182,7 +182,6 @@ def make_BuToJpsiK_Neutron_line(process): Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( pid=5, mipchi2_min=16, ghostProb_max=0.05 ) - # Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) line_alg = make_BuToJpsiK_Neutron( particles=[Jpsi, Kaons], descriptor="[B+ -> J/psi(1S) K+]cc" ) @@ -190,98 +189,6 @@ def make_BuToJpsiK_Neutron_line(process): return [Jpsi, Kaons, line_alg] - - -#def make_BuToJpsiK_Neutron( -# particles, -# descriptor, -# name="B2CC_BuToJpsiK_Neutron_Combiner_{hash}", -# am_min=2350 * MeV, # Adjust these values as needed -# am_max=4400 * MeV, # Adjust these values as needed -# am12_min=1150 * MeV, -# am12_max=2200 * MeV, -# asumpt_min=2000 * MeV, -# asumpt_max=22 * GeV, -# adoca_chi2_max=5.0, -# adoca_max= 0.2 * mm, -# dira=-10.0, -# max_ipchi2=25, -# max_vtxchi2pdof=25, -# AllowDiffInputsForSameIDChildren=False, -#): -# -# combination12_code = F.require_all( -# in_range(am12_min, F.MASS, am12_max), -# (F.MASSWITHHYPOTHESES(("K+", "pi-")) < 1750 * MeV) | -# (F.MASSWITHHYPOTHESES(("K+", "pi-")) > 1950 * MeV), -# (F.MASSWITHHYPOTHESES(("pi+", "pi-")) < 1750 * MeV) | -# (F.MASSWITHHYPOTHESES(("pi+", "pi-")) > 1950 * MeV), -# (F.MASSWITHHYPOTHESES(("p+", "p~-")) < 2950 * MeV) | -# (F.MASSWITHHYPOTHESES(("p+", "p~-")) > 3150 * MeV), -# ) -# combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) -# composite_code = F.require_all( -# F.SDOCACHI2(1, 2) < adoca_chi2_max, -# F.SDOCA(1, 2) < adoca_max, -# (F.SUBCOMB(Functor=F.MASS, Indices=[2, 3]) < 1750 * MeV ) | -# (F.SUBCOMB(Functor=F.MASS, Indices=[2, 3]) > 1950 * MeV), -# (F.MASSWITHHYPOTHESES(("p+", "pi-", "pi+")) < 2200 * MeV) | -# (F.MASSWITHHYPOTHESES(("p+", "pi-", "pi+")) > 2340 * MeV), -# (F.MASSWITHHYPOTHESES(("p+", "K-", "pi+")) < 2200 * MeV) | -# (F.MASSWITHHYPOTHESES(("p+", "K-", "pi+")) > 2340 * MeV), -# in_range(0., F.ALV(1,2), 1), -# in_range(0., F.ALV(1,3), 1), -# in_range(0., F.ALV(2,3), 1), -# (F.OWNPVDIRA > dira), -# (F.CHI2DOF < max_vtxchi2pdof), -# -# ) -# if max_ipchi2: -# composite_code = require_all(composite_code, F.OWNPVIPCHI2 < max_ipchi2) -# -# if asumpt_min is not None: -# combination_code &= F.SUM(F.PT) > asumpt_min -# if asumpt_max is not None: -# combination_code &= F.SUM(F.PT) < asumpt_max -# -# return ParticleCombiner( -# particles, -# name=name, -# DecayDescriptor=descriptor, -# Combination12Cut=combination12_code, -# CombinationCut=combination_code, -# CompositeCut=composite_code, -# AllowDiffInputsForSameIDChildren=AllowDiffInputsForSameIDChildren, -# ) -# -# -#### Define function for each line -#def make_BuToJpsiK_Neutron_line(process): -# assert process in ["hlt2", "spruce"], ( -# "Line must be defined as Hlt2 or Sprucing line!" -# ) -# -# #Jpsi = basic_builder.make_Neutron_Jpsi() -# Protons = basic_builder.make_ProtonsforB2JpsiK( -# pid=5, mipchi2_min=16, ghostProb_max=0.05 -# ) -# Pions = basic_builder.make_PionsforB2JpsiK( -# pid=-5, mipchi2_min=16, ghostProb_max=0.05 -# ) -# Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( -# pid=5, mipchi2_min=16, ghostProb_max=0.05 -# ) -# -# #persistable_photons = basic_builder.make_photons_to_preserve(Kaons) -# #print("persistable_photons.OutputLocation ", persistable_photons.OutputLocation) -# # Kaons = basic_builder.make_kaons(pt=1.0 * GeV, pid=5, p=4.0 * GeV) -# line_alg = make_BuToJpsiK_Neutron( -# particles=[Protons, Pions, Kaons], descriptor="[B+ -> p+ pi- K+]cc" -# ) -# -# return [Protons, Pions, Kaons, line_alg] - - def make_Bs2Jpsif0( particles, descriptor, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index aaad1a035ad..8316195bbcd 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -172,17 +172,6 @@ def make_BachelorKaonsforB2JpsiK( if pid is not None: pid = F.PID_K > pid pid &= F.ISMUON == 0 - print("PID_K ", F.PID_K()) - print("CALOCELLID_ALL ", F.CALOCELLID_ALL()) - print("CALOCELLID_COLUMN ", F.CALOCELLID_COLUMN()) - print("CALOCELLID_ROW ", F.CALOCELLID_ROW()) - print("CALO_NEUTRAL_1TO9_ENERGY_RATIO ", F.CALO_NEUTRAL_1TO9_ENERGY_RATIO()) - print("CALO_CLUSTER_MASS ", F.CALO_CLUSTER_MASS()) - print("CALO_NEUTRAL_ECAL_ENERGY ", F.CALO_NEUTRAL_ECAL_ENERGY()) - print("CALO_NEUTRAL_HCAL2ECAL_ENERGY_RATIO ", F.CALO_NEUTRAL_HCAL2ECAL_ENERGY_RATIO()) - print("CALO_NEUTRAL_SHOWER_SHAPE ", F.CALO_NEUTRAL_SHOWER_SHAPE()) - print("CALO_NEUTRAL_ID ", F.CALO_NEUTRAL_ID()) - print("CALO_NUM_SATURATED_CELLS ", F.CALO_NUM_SATURATED_CELLS()) return make_selected_particles( make_particles=make_has_rich_long_kaons, pt_min=pt_min, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py index b018fe82a71..bfb05f4c7c1 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bandq/builders/dimuon_lines.py @@ -273,4 +273,3 @@ def make_loose_samesign_dimuon( minMass_dimuon=minMass_dimuon, minPt_muon=minPt_muon, ) - -- GitLab From 57aafc63004fec72a32de106a1b1e6e8fb559b73 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Wed, 26 Mar 2025 16:50:11 +0000 Subject: [PATCH 14/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/53349893 --- .../lines/b_to_charmonia/b_to_jpsix.py | 5 ++- .../b_to_charmonia/builders/basic_builder.py | 42 +++++++++---------- .../lines/b_to_charmonia/hlt2_b2cc.py | 8 +++- .../lines/b_to_charmonia/prefilters.py | 1 + 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 25071213592..c387dcd5df1 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -16,9 +16,9 @@ Definition of B -> J/psi X HLT2/Sprucing lines for B2CC. import Functors as F from Functors import require_all from Functors.math import in_range -from RecoConf.reconstruction_objects import make_pvs from GaudiKernel.SystemOfUnits import GeV, MeV, mm, picosecond from RecoConf.algorithms_thor import ParticleCombiner, ParticleContainersMerger +from RecoConf.reconstruction_objects import make_pvs from RecoConf.standard_particles import make_long_muons from Hlt2Conf.lines.b_to_charmonia.builders import basic_builder, special_builder @@ -140,6 +140,7 @@ def make_B2JpsiX( CompositeCut=vertex_code, ) + def make_BuToJpsiK_Neutron( particles, descriptor, @@ -152,7 +153,7 @@ def make_BuToJpsiK_Neutron( vchi2pdof_max=25, AllowDiffInputsForSameIDChildren=False, ): - pvs= make_pvs() + pvs = make_pvs() combination_code = F.require_all(in_range(am_min, F.MASS, am_max)) if asumpt_min is not None: combination_code &= F.SUM(F.PT) > asumpt_min diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index 8316195bbcd..4da5d1d2311 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -15,12 +15,12 @@ from Functors import require_all from Functors.math import in_range from GaudiKernel.SystemOfUnits import GeV, MeV, mm, ps from PyConf import configurable +from PyConf.Algorithms import SelectionFromRelationTable, WeightedRelTableAlg from RecoConf.algorithms_thor import ( ParticleCombiner, ParticleContainersMerger, ParticleFilter, ) -from PyConf.Algorithms import SelectionFromRelationTable, WeightedRelTableAlg from RecoConf.reconstruction_objects import make_pvs from RecoConf.standard_particles import ( _make_dielectron_with_brem, @@ -37,8 +37,8 @@ from RecoConf.standard_particles import ( make_long_and_upstream_electrons_no_brem, make_long_electrons_no_brem, make_long_pions_for_V0, - make_up_pions_for_V0, make_photons, + make_up_pions_for_V0, ) #################################### @@ -157,7 +157,7 @@ def make_kaons(pid=-3, pt=200 * MeV, p=2 * GeV, **decay_arguments): @configurable def make_BachelorKaonsforB2JpsiK( pid=2.0, - p_min=2. * GeV, + p_min=2.0 * GeV, pt_min=800 * MeV, p_max=200 * GeV, pt_max=15 * GeV, @@ -186,6 +186,7 @@ def make_BachelorKaonsforB2JpsiK( Geometry_cut=Geometry_cut, ) + @configurable def make_photons_to_preserve(tracks): """Return photon maker filtered to preserve photons near the dielectron candidates.""" @@ -211,7 +212,6 @@ def make_photons_to_preserve(tracks): return SelectionFromRelationTable(InputRelations=photons_table.OutputRelations) - @configurable def make_muons( pid=None, @@ -1250,7 +1250,7 @@ def make_Neutron_Jpsi( name="B2CC_Neutron_Jpsi_{hash}", make_pvs=make_pvs, adoca_chi2_max=5.0, - adoca_max= 0.2 * mm, + adoca_max=0.2 * mm, p_min=1000.0 * MeV, pt_min=500.0 * MeV, am_min=1150 * MeV, @@ -1266,27 +1266,27 @@ def make_Neutron_Jpsi( protons = make_ProtonsforB2JpsiK(pid=5, mipchi2_min=16, ghostProb_max=0.05) descriptor = "[J/psi(1S) -> p+ pi-]cc" combination_code = F.require_all( - in_range(am_min, F.MASS, am_max), + in_range(am_min, F.MASS, am_max), F.SDOCACHI2(1, 2) < adoca_chi2_max, F.SDOCA(1, 2) < adoca_max, - in_range(0.2, F.ALV(1,2), 1.), - (F.MASSWITHHYPOTHESES(("K+", "pi-")) < 1750 * MeV) | - (F.MASSWITHHYPOTHESES(("K+", "pi-")) > 1950 * MeV), - (F.MASSWITHHYPOTHESES(("pi+", "pi-")) < 1750 * MeV) | - (F.MASSWITHHYPOTHESES(("pi+", "pi-")) > 1950 * MeV), - (F.MASSWITHHYPOTHESES(("p+", "p~-")) < 2950 * MeV) | - (F.MASSWITHHYPOTHESES(("p+", "p~-")) > 3150 * MeV), + in_range(0.2, F.ALV(1, 2), 1.0), + (F.MASSWITHHYPOTHESES(("K+", "pi-")) < 1750 * MeV) + | (F.MASSWITHHYPOTHESES(("K+", "pi-")) > 1950 * MeV), + (F.MASSWITHHYPOTHESES(("pi+", "pi-")) < 1750 * MeV) + | (F.MASSWITHHYPOTHESES(("pi+", "pi-")) > 1950 * MeV), + (F.MASSWITHHYPOTHESES(("p+", "p~-")) < 2950 * MeV) + | (F.MASSWITHHYPOTHESES(("p+", "p~-")) > 3150 * MeV), ) vertex_code = F.require_all( - F.P > p_min, - F.PT > pt_min, - F.CHI2 < max_vtxchi2pdof, - F.math.in_range(minVDz, F.OWNPVVDZ, maxVDz), - F.OWNPVDIRA > ownpvdira_min, - F.END_VZ < maxVz, - F.END_VRHO < minRho, - ) + F.P > p_min, + F.PT > pt_min, + F.CHI2 < max_vtxchi2pdof, + F.math.in_range(minVDz, F.OWNPVVDZ, maxVDz), + F.OWNPVDIRA > ownpvdira_min, + F.END_VZ < maxVz, + F.END_VRHO < minRho, + ) return ParticleCombiner( [protons, pions], diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 0df9f44f017..4524757393a 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -221,7 +221,13 @@ def BuToJpsiK_NeutronPrescaled_line( return Hlt2Line( name=name, prescale=prescale, - algs=b2cc_prefilters(require_GEC=True, require_topo=True, min_twobody_mva=0.9, min_threebody_mva=0.9) + line_alg, + algs=b2cc_prefilters( + require_GEC=True, + require_topo=True, + min_twobody_mva=0.9, + min_threebody_mva=0.9, + ) + + line_alg, persistreco=persistreco, calo_digits=True, calo_clusters=True, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py index 1225f2bb0da..12ccbc6679a 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/prefilters.py @@ -14,6 +14,7 @@ from RecoConf.event_filters import require_gec, require_pvs from RecoConf.reconstruction_objects import make_pvs, upfront_reconstruction + from Hlt2Conf.lines.topological_b import require_topo_candidate -- GitLab From ff9200154f5095ee24101a0eb11d97a31053bc71 Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 27 Mar 2025 02:17:34 +0800 Subject: [PATCH 15/17] update new requirement --- .../python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py | 6 ++++-- .../lines/b_to_charmonia/builders/basic_builder.py | 7 ++----- .../python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index c8205ac5365..752a2f5c99a 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -91,7 +91,8 @@ def make_BuToJpsiK_Neutron( asumpt_min=2000 * MeV, asumpt_max=22 * GeV, bpvfdchi2_min=450, - vchi2pdof_max=25, + vchi2pdof_max=9, + maxVDz=100.0, AllowDiffInputsForSameIDChildren=False, ): pvs = make_pvs() @@ -103,6 +104,7 @@ def make_BuToJpsiK_Neutron( composite_code = F.require_all( F.CHI2 < vchi2pdof_max, F.BPVFDCHI2(pvs) > bpvfdchi2_min, + F.OWNPVVDZ< maxVDz, ) return ParticleCombiner( particles, @@ -122,7 +124,7 @@ def make_BuToJpsiK_Neutron_line(process): Jpsi = basic_builder.make_Neutron_Jpsi() Kaons = basic_builder.make_BachelorKaonsforB2JpsiK( - pid=5, mipchi2_min=16, ghostProb_max=0.05 + pid=5, mipchi2_min=16, ghostProb_max=0.1 ) line_alg = make_BuToJpsiK_Neutron( particles=[Jpsi, Kaons], descriptor="[B+ -> J/psi(1S) K+]cc" diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py index b80c4378304..88ec7aa2e74 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/basic_builder.py @@ -1256,14 +1256,12 @@ def make_Neutron_Jpsi( am_min=1150 * MeV, am_max=2200 * MeV, minRho=3, - minVDz=0.0, - maxVDz=200.0, ownpvdira_min=0.0, maxVz=650 * mm, max_vtxchi2pdof=9, ): - pions = make_PionsforB2JpsiK(pid=-5, mipchi2_min=16, ghostProb_max=0.05) - protons = make_ProtonsforB2JpsiK(pid=5, mipchi2_min=16, ghostProb_max=0.05) + pions = make_PionsforB2JpsiK(pid=-5, mipchi2_min=16, ghostProb_max=0.1) + protons = make_ProtonsforB2JpsiK(pid=5, mipchi2_min=16, ghostProb_max=0.1) descriptor = "[J/psi(1S) -> p+ pi-]cc" combination_code = F.require_all( in_range(am_min, F.MASS, am_max), @@ -1282,7 +1280,6 @@ def make_Neutron_Jpsi( F.P > p_min, F.PT > pt_min, F.CHI2 < max_vtxchi2pdof, - F.math.in_range(minVDz, F.OWNPVVDZ, maxVDz), F.OWNPVDIRA > ownpvdira_min, F.END_VZ < maxVz, F.END_VRHO < minRho, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 0e2e7974550..4abb1bd2495 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -218,7 +218,7 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa @register_line_builder(all_lines) def BuToJpsiK_NeutronPrescaled_line( - name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.4, persistreco=False + name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.3, persistreco=False ): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( -- GitLab From 4ad18f8c8e58310ada49c23d40a6c3c074eed86d Mon Sep 17 00:00:00 2001 From: yangyouhua <yangyh@lzulogin02.hep.lzu.edu.cn> Date: Thu, 27 Mar 2025 02:37:19 +0800 Subject: [PATCH 16/17] update prescale to 0.6 --- Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py index 4abb1bd2495..722b64d19c8 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/hlt2_b2cc.py @@ -218,7 +218,7 @@ def BsToJpsikstar_line(name="Hlt2B2CC_BsToJpsiKstar", prescale=1, persistreco=Fa @register_line_builder(all_lines) def BuToJpsiK_NeutronPrescaled_line( - name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.3, persistreco=False + name="Hlt2B2CC_BuToJpsiK_NeutronPrescaled", prescale=0.6, persistreco=False ): line_alg = b_to_jpsix.make_BuToJpsiK_Neutron_line(process=PROCESS) return Hlt2Line( -- GitLab From a8a3976a9928dcc97197df1ccd7731243000a589 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Wed, 26 Mar 2025 18:38:01 +0000 Subject: [PATCH 17/17] pre-commit fixes patch generated by https://gitlab.cern.ch/lhcb/Moore/-/jobs/53358281 --- Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py index 752a2f5c99a..07ecea83c94 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix.py @@ -104,7 +104,7 @@ def make_BuToJpsiK_Neutron( composite_code = F.require_all( F.CHI2 < vchi2pdof_max, F.BPVFDCHI2(pvs) > bpvfdchi2_min, - F.OWNPVVDZ< maxVDz, + F.OWNPVVDZ < maxVDz, ) return ParticleCombiner( particles, -- GitLab