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 4234599881658391c2e90304a0336597ae025384..88e51bdc68d2d8473d7c0c67df737f2a705895df 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 @@ -255,6 +255,23 @@ def make_Bd2JpsimumuKshortKshort_detached( ) +def make_LbToJpsiKs_Neutron_tight( + particles, + descriptor, + name="B2CC_LbToJpsiKshort_Neutron_Combiner_{hash}", + 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, + DecayDescriptor=descriptor, + CombinationCut=combination_code, + ) + + ### Define function for each line def make_BsToJpsiPhi_detached_line(process): assert process in ["hlt2", "spruce"], ( @@ -655,6 +672,93 @@ def make_LbToJpsipH_line( return [jpsi, lambda0, Lb2jpsipH] +def make_LbToJpsiKs_LL_Neutron_tight_line( + process, + comb_m_min_jpsi=2916 * MeV, + comb_m_max_jpsi=3276 * MeV, + comb_m_min=3550 * MeV, + comb_m_max=4750 * MeV, +): + assert process in ["hlt2", "spruce"], ( + "Line must be defined as Hlt2 or Sprucing line!" + ) + 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 + ) + 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", + comb_m_min=comb_m_min, + comb_m_max=comb_m_max, + ) + + return [jpsi, kshort_LL, Lb2jpsiKs] + + +def make_LbToJpsiKs_DD_Neutron_tight_line( + process, + comb_m_min_jpsi=2916 * MeV, + comb_m_max_jpsi=3276 * MeV, + comb_m_min=3550 * MeV, + comb_m_max=4750 * MeV, +): + assert process in ["hlt2", "spruce"], ( + "Line must be defined as Hlt2 or Sprucing line!" + ) + 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 + ) + 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", + comb_m_min=comb_m_min, + comb_m_max=comb_m_max, + ) + + return [jpsi, kshort_DD, Lb2jpsiKs] + + +def make_LbToJpsiKs_LD_Neutron_tight_line( + process, + comb_m_min_jpsi=2916 * MeV, + comb_m_max_jpsi=3276 * MeV, + comb_m_min=3550 * MeV, + comb_m_max=4750 * MeV, +): + assert process in ["hlt2", "spruce"], ( + "Line must be defined as Hlt2 or Sprucing line!" + ) + 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 + ) + 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", + comb_m_min=comb_m_min, + comb_m_max=comb_m_max, + ) + + return [jpsi, kshort_LD, Lb2jpsiKs] + + def make_BdToJpsieeKshort_LL_detached_line(process): assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" 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 5792c4b2e64e9bfadfbee799dc50fc139cc34866..70c6e5d85f7f9970adaf36900c0564f91ad98af9 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 @@ -225,6 +225,52 @@ def LbToJpsipH_line(name="Hlt2B2CC_LbToJpsipH", prescale=1, persistreco=False): ) +@register_line_builder(all_lines) +def LbToJpsiKs_Neutron_LL_tight_line( + name="Hlt2B2CC_LbToJpsiKs_LL_Neutron_tight", prescale=1, persistreco=False +): + line_alg = b_to_jpsix.make_LbToJpsiKs_LL_Neutron_tight_line(process=PROCESS) + return Hlt2Line( + name=name, + prescale=prescale, + algs=b2cc_prefilters() + line_alg, + persistreco=persistreco, + calo_digits=True, + calo_clusters=True, + raw_banks=["Calo"], + ) + + +@register_line_builder(all_lines) +def LbToJpsiKs_Neutron_DD_tight_line( + name="Hlt2B2CC_LbToJpsiKs_DD_Neutron_tight", prescale=1, persistreco=False +): + line_alg = b_to_jpsix.make_LbToJpsiKs_DD_Neutron_tight_line(process=PROCESS) + return Hlt2Line( + name=name, + prescale=prescale, + algs=b2cc_prefilters() + line_alg, + persistreco=persistreco, + calo_digits=True, + calo_clusters=True, + ) + + +@register_line_builder(all_lines) +def LbToJpsiKs_Neutron_LD_tight_line( + name="Hlt2B2CC_LbToJpsiKs_LD_Neutron_tight", prescale=1, persistreco=False +): + line_alg = b_to_jpsix.make_LbToJpsiKs_LD_Neutron_tight_line(process=PROCESS) + return Hlt2Line( + name=name, + prescale=prescale, + algs=b2cc_prefilters() + line_alg, + persistreco=persistreco, + calo_digits=True, + calo_clusters=True, + ) + + @register_line_builder(all_lines) def BdToJpsieeKshort_LL_detached_line( name="Hlt2B2CC_BdToJpsiKshort_JpsiToEE_LL_Detached", prescale=1, persistreco=False