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,
     )