diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix0.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix0.py index ad8057bc229cabc4d4a2f164e9e745e9dc7439ae..4623a8d26ebd796ca3b2710ba410dbf9656d1520 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix0.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/b_to_jpsix0.py @@ -42,6 +42,7 @@ def make_B2JpsiX0( dira_min=0.9995, vtxchi2pdof_max=10, delta_mass=None, + combiner="ParticleVertexFitter", ): """ A generic B->MuMu(H)(HH)(G)(GG) decay maker. @@ -82,6 +83,20 @@ def make_B2JpsiX0( DecayDescriptor=descriptor, CombinationCut=combination_code, CompositeCut=vertex_code, + ParticleCombiner=combiner, + ) + + +def make_B2JpsiX0_noBvtx(particles, descriptor, assignvtx: int, **kwargs): + """ + A generic B->MuMu(H)(HH)(G)(GG) decay maker configured for where the B has no vertex i.e. it is just Jpsi+neutrals + """ + return make_B2JpsiX0( + particles, + descriptor, + vtxchi2pdof_max=None, + combiner="ParticleAdderAssignVtx" + str(assignvtx), + **kwargs, ) @@ -97,8 +112,7 @@ def make_B2JpsiKst2KPi0R_line( "Line must be defined as Hlt2 or Sprucing line!" ) - jpsi = basic_builder.make_selected_jpsi2mumu() - + jpsi = make_detached_jpsi() kstr = x0_builder.make_selected_kst2kpi0r(pi0pt_min=pi0pt_min) b2jpsikstr = make_B2JpsiX0( @@ -165,9 +179,10 @@ def make_B2JpsiEtaGG_line( eta = x0_builder.make_resolved_etas() - b2jpsieta = make_B2JpsiX0( + b2jpsieta = make_B2JpsiX0_noBvtx( particles=[jpsi, eta], descriptor="B0 -> J/psi(1S) eta", + assignvtx=1, name="B2CC_B2JpsiEtaGG_Combiner_{hash}", comb_m_min=comb_m_min, comb_m_max=comb_m_max, @@ -197,9 +212,10 @@ def make_B2JpsiPi0GG_line( jpsi = basic_builder.make_selected_jpsi2mumu() pi0 = x0_builder.make_resolved_pizeros() - b2jpsipi0 = make_B2JpsiX0( + b2jpsipi0 = make_B2JpsiX0_noBvtx( particles=[jpsi, pi0], descriptor="B0 -> J/psi(1S) pi0", + assignvtx=1, name="B2CC_B2JpsiPi0GG_Combiner_{hash}", comb_m_min=comb_m_min, comb_m_max=comb_m_max, @@ -272,28 +288,23 @@ def make_Lb0ToJpsiSigma0_DD_line(process): def make_BuToJpsimumuEtaPiplus_line( process, - comb_m_min=4800 * MeV, - comb_m_max=6000 * MeV, + comb_m_min=4700 * MeV, + comb_m_max=6100 * MeV, vtx_m_min=4800 * MeV, vtx_m_max=6000 * MeV, - delta_mass=( - 4250 * MeV, - 5450 * MeV, - 2, - ), # 2 here for cut on the second child i.e Eta. lifetime=0.2 * picosecond, dira_min=0.9999, - ipchi2_max=10, + ipchi2_max=20, ip_max=0.1, - vtxchi2pdof_max=5, + vtxchi2pdof_max=10, ): assert process in ["hlt2", "spruce"], ( "Line must be defined as Hlt2 or Sprucing line!" ) jpsi = make_detached_jpsi() - eta = eta = x0_builder.make_resolved_etas(mass_window=105 * MeV) - pip = basic_builder.make_pions(pid=1.0, pt=300 * MeV, p=1.5 * GeV, mipchi2_min=11) + eta = eta = x0_builder.make_resolved_etas() + pip = basic_builder.make_pions(pid=None, pt=300 * MeV, p=1.5 * GeV, mipchi2_min=11) line_alg = make_B2JpsiX0( name="B2CC_BuToJpsimumuEtaPiplus_Combiner_{hash}", @@ -303,7 +314,6 @@ def make_BuToJpsimumuEtaPiplus_line( comb_m_max=comb_m_max, vtx_m_min=vtx_m_min, vtx_m_max=vtx_m_max, - delta_mass=delta_mass, lifetime=lifetime, dira_min=dira_min, ipchi2_max=ipchi2_max, diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/x0_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/x0_builder.py index 65e49bc10baa86f4e14fd69ed7002827b9ac974d..c4baa387030a809bd771089e8007594ef91d8a40 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/x0_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/builders/x0_builder.py @@ -15,28 +15,24 @@ from Functors import require_all from Functors.math import in_range from GaudiKernel.SystemOfUnits import GeV, MeV from RecoConf.algorithms_thor import ParticleCombiner, ParticleFilter -from RecoConf.standard_particles import make_photons, make_resolved_pi0s +from RecoConf.standard_particles import make_photons from Hlt2Conf.lines.b_to_charmonia.builders import basic_builder +from Hlt2Conf.lines.charmonium_to_dimuon_detached import make_detached_jpsi _ETA_M = 547.862 * MeV # +/- 0.017 _pi0_M = 134.977 * MeV -def filter_pi0s(particles, pi0pt_min=1.5 * GeV): - code = require_all(F.PT > pi0pt_min) +def filter_gammas(particles, gpt_min=250.0 * MeV, gpt_max=200.0 * GeV, isnoth_min=0.2): + code = require_all(in_range(gpt_min, F.PT, gpt_max), F.IS_NOT_H > isnoth_min) return ParticleFilter(particles, F.FILTER(code)) -def filter_gammas(particles, gpt_min=500.0 * MeV, gpt_max=200.0 * GeV): - code = require_all(in_range(gpt_min, F.PT, gpt_max)) - return ParticleFilter(particles, F.FILTER(code)) - - -def make_resolved_pizeros(): +def make_resolved_pizeros(mass_window=100 * MeV, pi0_pt_min=1.5 * GeV): photons = filter_gammas(make_photons()) - combination_code = in_range(_pi0_M - 60 * MeV, F.MASS, _pi0_M + 60 * MeV) - vertex_code = F.require_all(F.PT > 1500 * MeV) + combination_code = in_range(_pi0_M - mass_window, F.MASS, _pi0_M + mass_window) + vertex_code = F.require_all(F.PT > pi0_pt_min) return ParticleCombiner( Inputs=[photons, photons], name="B2CC_Resolved_pi0_{hash}", @@ -47,7 +43,7 @@ def make_resolved_pizeros(): ) -def make_resolved_etas(mass_window=50 * MeV): +def make_resolved_etas(mass_window=150 * MeV): photons = filter_gammas(make_photons()) combination_code = in_range(_ETA_M - mass_window, F.MASS, _ETA_M + mass_window) composite_code = F.PT > 2000 * MeV @@ -132,8 +128,8 @@ def make_twobodyg( def make_selected_kst2kpi0r( name="B2CC_Kst2KPi0R_Filter_{hash}", descriptor="[K*(892)+ -> K+ pi0]cc", - comb_m_min=792.0 * MeV, - comb_m_max=992.0 * MeV, + comb_m_min=692.0 * MeV, + comb_m_max=1092.0 * MeV, pi0pt_min=1000.0 * MeV, pt=1500.0 * MeV, pid_k=0, @@ -141,7 +137,7 @@ def make_selected_kst2kpi0r( ): kaon = basic_builder.make_kaons(pid=pid_k, pt=pt_k) - pi0 = filter_pi0s(make_resolved_pi0s(), pi0pt_min=pi0pt_min) + pi0 = make_resolved_pizeros(pi0_pt_min=pi0pt_min) return make_onebodygg( particles=[kaon, pi0], @@ -208,12 +204,12 @@ def make_sigma0_dd( def make_selected_chic2jpsig( name="B2CC_Chic2JpsiG_Filter_{hash}", descriptor="chi_c1(1P) -> J/psi(1S) gamma", - comb_m_min=3410 * MeV, - comb_m_max=3610 * MeV, + comb_m_min=3310 * MeV, + comb_m_max=3710 * MeV, gpt_min=500.0 * MeV, pt=1000.0 * MeV, ): - jpsi = basic_builder.make_selected_jpsi2mumu() + jpsi = make_detached_jpsi() gamma = filter_gammas(make_photons(), gpt_min=gpt_min) 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 907a7847fa2b27a3cede7cd1eefb582efe8eaa46..183cb7eae272d08e101562b59fb0ce7ed2d0792f 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 @@ -589,6 +589,8 @@ def BuToJpsiKstPlus(name="Hlt2B2CC_BuToJpsiKstPlus", prescale=1.0, persistreco=F persistreco=persistreco, tagging_particles=False, pv_tracks=False, + calo_digits=True, + calo_clusters=True, ) @@ -605,6 +607,8 @@ def BuToChicKPlus(name="Hlt2B2CC_BuToChicKPlus", prescale=1.0, persistreco=False tagging_particles=False, persistreco=persistreco, pv_tracks=False, + calo_digits=True, + calo_clusters=True, ) @@ -621,6 +625,8 @@ def BToJpsiEtaGG(name="Hlt2B2CC_BToJpsiEtaGG", prescale=1.0, persistreco=False): persistreco=persistreco, tagging_particles=True, pv_tracks=True, + calo_digits=True, + calo_clusters=True, ) @@ -637,6 +643,8 @@ def BToJpsiPi0GG(name="Hlt2B2CC_BToJpsiPi0GG", prescale=1.0, persistreco=False): persistreco=persistreco, tagging_particles=True, pv_tracks=True, + calo_digits=True, + calo_clusters=True, ) @@ -725,3 +733,20 @@ def Bs0ToJpsippPhi( tagging_particles=False, pv_tracks=False, ) + + +@register_line_builder(all_lines) +def BuToJpsiEtaPiplus_JpsiToMuMu( + name="Hlt2B2CC_BuToJpsiEtaPiplus_Detached", prescale=1 +): + line_alg = b_to_jpsix0.make_BuToJpsimumuEtaPiplus_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, + calo_digits=True, + calo_clusters=True, + ) diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/spruce_b2cc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/spruce_b2cc.py index 35b69e9a623c62f353c995473164939b06956528..e77c82fb388e211a3a5f093049f0b329eaf63e73 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/spruce_b2cc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_charmonia/spruce_b2cc.py @@ -91,6 +91,8 @@ def Lb0ToJpsiSigma0_LL_line(name="SpruceB2CC_Lb0ToJpsiSigma0_LL", prescale=1): algs=b2cc_prefilters() + line_alg, pv_tracks=True, extra_outputs=iso_parts, + calo_digits=True, + calo_clusters=True, ) @@ -111,20 +113,6 @@ def Lb0ToJpsiSigma0_DD_line(name="SpruceB2CC_Lb0ToJpsiSigma0_DD", prescale=1): algs=b2cc_prefilters() + line_alg, pv_tracks=True, extra_outputs=iso_parts, - ) - - -@register_line_builder(sprucing_lines) -@configurable -def BuToJpsiEtaPiplus_JpsiToMuMu_sprucing_line( - name="SpruceB2CC_BuToJpsiEtaPiplus_Detached", prescale=1 -): - line_alg = b_to_jpsix0.make_BuToJpsimumuEtaPiplus_line(process=PROCESS) - - return SpruceLine( - name=name, - prescale=prescale, - algs=b2cc_prefilters() + line_alg, - tagging_particles=True, - pv_tracks=True, + calo_digits=True, + calo_clusters=True, )