diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/dielectron_persist_photons.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/dielectron_persist_photons.py
index 504bbefe2386f0bfa46fb34d94ace4a4102765d4..4b44210fd23361c7fb4d57e9aded49dfe79b08e3 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/dielectron_persist_photons.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/dielectron_persist_photons.py
@@ -28,7 +28,6 @@ from RecoConf.standard_particles import (
     make_has_rich_long_pions,
     make_long_electrons_no_brem,
     make_photons,
-    make_prompt_dielectron_with_brem,
 )
 
 full_lines = {}
@@ -67,35 +66,16 @@ def charged_pion_filter(pi_minpt):
 
 
 @configurable
-def dielectron_maker_prompt(e_minpt, isOS):
-    return make_prompt_dielectron_with_brem(
-        electron_maker=make_long_electrons_no_brem,
-        opposite_sign=isOS,
-        PIDe_min=0.0,
-        pt_e=e_minpt,
-        maxipchi2=2.0,
-        trghostprob=0.25,
-        dielectron_ID="J/psi(1S)",
-        pt_diE=0 * MeV,
-        m_diE_min=5 * MeV,
-        m_diE_max=300 * MeV,
-        adocachi2cut=30,
-        bpvvdchi2=None,
-        vfaspfchi2ndof=10,
-    )
-
-
-@configurable
-def dielectron_maker_displaced(e_minpt, isOS):
+def dielectron_maker_displaced(e_minpt, isOS, minipchi2=4.0):
     return make_detached_dielectron_with_brem(
         electron_maker=make_long_electrons_no_brem,
         opposite_sign=isOS,
         PIDe_min=0.0,
         pt_e=e_minpt,
-        minipchi2=2.0,
+        minipchi2=minipchi2,
         trghostprob=0.25,
         dielectron_ID="J/psi(1S)",
-        pt_diE=0 * MeV,
+        pt_diE=500 * MeV,  # HLT1 cuts on the SumPT > 1000
         m_diE_min=5 * MeV,
         m_diE_max=300 * MeV,
         adocachi2cut=30,
@@ -104,89 +84,138 @@ def dielectron_maker_displaced(e_minpt, isOS):
     )
 
 
-# OS Prompt lines (one to turbo, prescaled to full)
-@register_line_builder(turbo_lines)
-@configurable
-def dielectron_sp_prompt_line(
-    name="Hlt2QEE_DiElectronPrompt_PersistPhotons",
-    prescale=1,
-    persistreco=False,
-    e_minpt=0.0,
-    make_pvs=make_pvs,
-):
-    """Aiming for prompt pi0/eta -> gamma e+ e- decays. Label the dielectron
-    as J/psi(1S) [during brem-recovery-reconstruction of dielectron pair] and
-    save photons if Pi0/eta in mass range of [5, 700]MeV."""
-    pvs = make_pvs()
-
-    dielectrons_prompt = dielectron_maker_prompt(e_minpt, isOS=True)
-
-    photons_table = WeightedRelTableAlg(
-        InputCandidates=photon_filter(),
-        ReferenceParticles=dielectrons_prompt,
-        Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
-    )
-
-    return Hlt2Line(
-        name=name,
-        algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
-        persistreco=persistreco,
-        extra_outputs=[
-            (
-                "DiElectronPrompt_Photons",
-                SelectionFromRelationTable(
-                    InputRelations=photons_table.OutputRelations
-                ).OutputLocation,
-            )
-        ],
-        prescale=prescale,
-        monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_massSlice.*_promptDecision"],
-    )
-
-
-@register_line_builder(full_lines)
-@configurable
-def dielectron_sp_prompt_line_full(
-    name="Hlt2QEE_DiElectronPrompt_PersistPhotons_Full",
-    prescale=0.05,
-    persistreco=True,
-    e_minpt=0.0,
-    make_pvs=make_pvs,
-):
-    """Copy of turbo line, but strongly prescaled, which allows full-event
-    studies e.g. of brem correction and background template for e+e- pairs
-    combined with a random photon (4-vector deduced from e+e- in same event
-    and charged pion momentum)"""
-    pvs = make_pvs()
-
-    dielectrons_prompt = dielectron_maker_prompt(e_minpt, isOS=True)
-
-    photons_table = WeightedRelTableAlg(
-        InputCandidates=photon_filter(),
-        ReferenceParticles=dielectrons_prompt,
-        Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
-    )
-
-    extra_pions = charged_pion_filter(pi_minpt=75.0 * MeV)
-
-    return Hlt2Line(
-        name=name,
-        algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
-        persistreco=persistreco,
-        extra_outputs=[
-            (
-                "DiElectronPrompt_Photons",
-                SelectionFromRelationTable(
-                    InputRelations=photons_table.OutputRelations
-                ).OutputLocation,
-            ),
-            ("ChargedPions", extra_pions),
-        ],
-        prescale=prescale,
-        monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_massSlice.*_promptDecision"],
-    )
+# Add regular and Normalization line to. The Norm line is intended to normalize the displace yield to the prompt
+# because of the different PID cuts in HLT1.
+for kind in "", "Norm":
+    e_pt_cut = 0 if kind == "Norm" else 300
+
+    # OS Prompt lines (one to turbo, prescaled to full)
+    @register_line_builder(turbo_lines)
+    @configurable
+    def dielectron_sp_noip_line(
+        name=f"Hlt2QEE_DiElectronNoIP{kind}_PersistPhotons",
+        prescale=0.1 if kind == "Norm" else 1,
+        persistreco=False,
+        e_minpt=e_pt_cut,  # HLT1 cuts on the PT
+        make_pvs=make_pvs,
+    ):
+        """Aiming for prompt pi0/eta -> gamma e+ e- decays. Label the dielectron
+        as J/psi(1S) [during brem-recovery-reconstruction of dielectron pair] and
+        save photons if Pi0/eta in mass range of [5, 700]MeV."""
+        pvs = make_pvs()
+
+        dielectrons_prompt = dielectron_maker_displaced(
+            e_minpt, isOS=True, minipchi2=-1
+        )
+
+        photons_table = WeightedRelTableAlg(
+            InputCandidates=photon_filter(),
+            ReferenceParticles=dielectrons_prompt,
+            Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
+        )
+
+        return Hlt2Line(
+            name=name,
+            algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
+            persistreco=persistreco,
+            extra_outputs=[
+                (
+                    f"DiElectronPrompt{kind}_Photons",
+                    SelectionFromRelationTable(
+                        InputRelations=photons_table.OutputRelations
+                    ).OutputLocation,
+                )
+            ],
+            prescale=prescale,
+            monitoring_variables=_default_monitoring_variables,
+            hlt1_filter_code=[f"Hlt1DiElectronLowMass_NoIP{kind}Decision"],
+        )
+
+    @register_line_builder(full_lines)
+    @configurable
+    def dielectron_sp_noip_line_full(
+        name=f"Hlt2QEE_DiElectronNoIP{kind}_PersistPhotons_Full",
+        prescale=0.05,
+        persistreco=True,
+        e_minpt=e_pt_cut,
+        make_pvs=make_pvs,
+    ):
+        """Copy of turbo line, but strongly prescaled, which allows full-event
+        studies e.g. of brem correction and background template for e+e- pairs
+        combined with a random photon (4-vector deduced from e+e- in same event
+        and charged pion momentum)"""
+        pvs = make_pvs()
+
+        dielectrons_prompt = dielectron_maker_displaced(
+            e_minpt, isOS=True, minipchi2=-1
+        )
+
+        photons_table = WeightedRelTableAlg(
+            InputCandidates=photon_filter(),
+            ReferenceParticles=dielectrons_prompt,
+            Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
+        )
+
+        extra_pions = charged_pion_filter(pi_minpt=75.0 * MeV)
+
+        return Hlt2Line(
+            name=name,
+            algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
+            persistreco=persistreco,
+            extra_outputs=[
+                (
+                    f"DiElectronPrompt{kind}_Photons",
+                    SelectionFromRelationTable(
+                        InputRelations=photons_table.OutputRelations
+                    ).OutputLocation,
+                ),
+                ("ChargedPions", extra_pions),
+            ],
+            prescale=prescale,
+            monitoring_variables=_default_monitoring_variables,
+            hlt1_filter_code=[f"Hlt1DiElectronLowMass_NoIP{kind}Decision"],
+        )
+
+    @register_line_builder(turbo_lines)
+    @configurable
+    def dielectron_sp_noip_same_sign_line(
+        name=f"Hlt2QEE_DiElectronNoIP{kind}_PersistPhotonsSS",
+        prescale=0.1,
+        persistreco=False,
+        e_minpt=e_pt_cut,
+        make_pvs=make_pvs,
+    ):
+        """Aiming to normalize prompt pi0/eta -> gamma e+ e+ or gamma e- e- decays. Label
+        the doubly-charged dielectron as J/psi(1S) and save photons if Pi0/eta in
+        mass range of [5, 700]MeV."""
+        pvs = make_pvs()
+
+        dielectrons_prompt = dielectron_maker_displaced(
+            e_minpt, isOS=True, minipchi2=-1
+        )
+
+        photons_table = WeightedRelTableAlg(
+            InputCandidates=photon_filter(),
+            ReferenceParticles=dielectrons_prompt,
+            Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
+        )
+
+        return Hlt2Line(
+            name=name,
+            algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
+            persistreco=persistreco,
+            extra_outputs=[
+                (
+                    f"DiElectronPrompt{kind}_ss_Photons",
+                    SelectionFromRelationTable(
+                        InputRelations=photons_table.OutputRelations
+                    ).OutputLocation,
+                )
+            ],
+            prescale=prescale,
+            monitoring_variables=_default_monitoring_variables,
+            hlt1_filter_code=[f"Hlt1DiElectronLowMass_SS_NoIP{kind}Decision"],
+        )
 
 
 # OS displaced lines (one to turbo, prescaled to full)
@@ -226,7 +255,10 @@ def dielectron_sp_displaced_line(
         ],
         prescale=prescale,
         monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_massSlice.*_displacedDecision"],
+        hlt1_filter_code=[
+            "Hlt1DiElectronLowMass_NoIPDecision",
+            "Hlt1DiElectronLowMass_DisplacedDecision",
+        ],
     )
 
 
@@ -270,47 +302,10 @@ def dielectron_sp_displaced_line_full(
         ],
         prescale=prescale,
         monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_massSlice.*_displacedDecision"],
-    )
-
-
-@register_line_builder(turbo_lines)
-@configurable
-def dielectron_sp_prompt_same_sign_line(
-    name="Hlt2QEE_DiElectronPrompt_PersistPhotonsSS",
-    prescale=0.1,
-    persistreco=False,
-    e_minpt=0.0,
-    make_pvs=make_pvs,
-):
-    """Aiming for prompt pi0/eta -> gamma e+ e+ or gamma e- e- decays. Label
-    the doubly-charged dielectron as J/psi(1S) and save photons if Pi0/eta in
-    mass range of [5, 700]MeV."""
-    pvs = make_pvs()
-
-    dielectrons_prompt = dielectron_maker_prompt(e_minpt, isOS=False)
-
-    photons_table = WeightedRelTableAlg(
-        InputCandidates=photon_filter(),
-        ReferenceParticles=dielectrons_prompt,
-        Cut=in_range(comb_mass_limits[0], F.COMB_MASS(), comb_mass_limits[1]),
-    )
-
-    return Hlt2Line(
-        name=name,
-        algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
-        persistreco=persistreco,
-        extra_outputs=[
-            (
-                "DiElectronPrompt_ss_Photons",
-                SelectionFromRelationTable(
-                    InputRelations=photons_table.OutputRelations
-                ).OutputLocation,
-            )
+        hlt1_filter_code=[
+            "Hlt1DiElectronLowMass_NoIPDecision",
+            "Hlt1DiElectronLowMass_DisplacedDecision",
         ],
-        prescale=prescale,
-        monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_SS_massSlice.*_promptDecision"],
     )
 
 
@@ -349,5 +344,8 @@ def dielectron_sp_displaced_same_sign_line(
         ],
         prescale=prescale,
         monitoring_variables=_default_monitoring_variables,
-        hlt1_filter_code=["Hlt1DiElectronLowMass_SS_massSlice.*_displacedDecision"],
+        hlt1_filter_code=[
+            "Hlt1DiElectronLowMass_SS_NoIPDecision",
+            "Hlt1DiElectronLowMass_SS_DisplacedDecision",
+        ],
     )
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee.py
index 1de20e0414bffbd5bdc97893c7cff1d4aada88ed..049afb007c1d50ede72b432a7c6394222293c3ab 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee.py
@@ -36,9 +36,8 @@ from Hlt2Conf.lines.qee.diboson import (
 from Hlt2Conf.lines.qee.dielectron_persist_photons import (
     charged_pion_filter,
     dielectron_maker_displaced,
-    dielectron_maker_prompt,
     dielectron_sp_displaced_line_full,
-    dielectron_sp_prompt_line_full,
+    dielectron_sp_noip_line_full,
     photon_filter,
 )
 from Hlt2Conf.lines.qee.high_mass_dielec import (
@@ -1000,7 +999,7 @@ def TrijetsTwoSVTag_sprucing_line(name="SpruceQEE_TrijetsTwoSVTag", prescale=1):
 
 @register_line_builder(sprucing_lines)
 @configurable
-def dielectron_sp_prompt_sprucing_line(
+def dielectron_sp_noip_sprucing_line(
     name="SpruceQEE_DiElectronPrompt_PersistPhotons", prescale=0.1
 ):
     """Sprucing of full stream lines selecting prompt pi0/eta -> e+e-gamma
@@ -1010,22 +1009,22 @@ def dielectron_sp_prompt_sprucing_line(
 
     pvs = make_pvs()
 
-    dielectrons_prompt = dielectron_maker_prompt(e_minpt=0.0, isOS=True)
+    dielectrons_noip = dielectron_maker_displaced(e_minpt=300, isOS=True, minipchi2=-1)
 
     photons_table = WeightedRelTableAlg(
         InputCandidates=photon_filter(),
-        ReferenceParticles=dielectrons_prompt,
-        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 600.0 * MeV),
+        ReferenceParticles=dielectrons_noip,
+        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 700.0 * MeV),
     )
 
     charged_pions = charged_pion_filter(pi_minpt=75.0 * MeV)
 
     return SpruceLine(
         name=name,
-        algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_prompt],
+        algs=upfront_reconstruction() + [require_pvs(pvs), dielectrons_noip],
         extra_outputs=[
             (
-                "DiElectronPrompt_Photons",
+                "DiElectronNoIP_Photons",
                 SelectionFromRelationTable(
                     InputRelations=photons_table.OutputRelations
                 ).OutputLocation,
@@ -1033,7 +1032,7 @@ def dielectron_sp_prompt_sprucing_line(
             ("ChargedPions", charged_pions),
         ],
         prescale=prescale,
-        hlt2_filter_code=_hlt2_decision_regex(dielectron_sp_prompt_line_full),
+        hlt2_filter_code=_hlt2_decision_regex(dielectron_sp_noip_line_full),
     )
 
 
@@ -1054,7 +1053,7 @@ def dielectron_sp_displaced_sprucing_line(
     photons_table = WeightedRelTableAlg(
         InputCandidates=photon_filter(),
         ReferenceParticles=dielectrons_displaced,
-        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 600.0 * MeV),
+        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 700.0 * MeV),
     )
 
     charged_pions = charged_pion_filter(pi_minpt=75.0 * MeV)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee_pp_ref_2024.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee_pp_ref_2024.py
index 14dfe9635367f871ffb4a560f5749eb4fdac9164..d834a6b759435aa47b7c4d5e85dd5709d9f22e3f 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee_pp_ref_2024.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/spruce_qee_pp_ref_2024.py
@@ -35,9 +35,8 @@ from Hlt2Conf.lines.qee.diboson import (
 from Hlt2Conf.lines.qee.dielectron_persist_photons import (
     charged_pion_filter,
     dielectron_maker_displaced,
-    dielectron_maker_prompt,
     dielectron_sp_displaced_line_full,
-    dielectron_sp_prompt_line_full,
+    dielectron_sp_noip_line_full,
     photon_filter,
 )
 from Hlt2Conf.lines.qee.high_mass_dielec import (
@@ -995,12 +994,14 @@ def dielectron_sp_prompt_sprucing_line(
 
     pvs = make_pvs()
 
-    dielectrons_prompt = dielectron_maker_prompt(e_minpt=0.0, isOS=True)
+    dielectrons_prompt = dielectron_maker_displaced(
+        e_minpt=300.0, isOS=True, minipchi2=-1
+    )
 
     photons_table = WeightedRelTableAlg(
         InputCandidates=photon_filter(),
         ReferenceParticles=dielectrons_prompt,
-        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 600.0 * MeV),
+        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 700.0 * MeV),
     )
 
     charged_pions = charged_pion_filter(pi_minpt=75.0 * MeV)
@@ -1018,7 +1019,7 @@ def dielectron_sp_prompt_sprucing_line(
             ("ChargedPions", charged_pions),
         ],
         prescale=prescale,
-        hlt2_filter_code=_hlt2_decision_regex(dielectron_sp_prompt_line_full),
+        hlt2_filter_code=_hlt2_decision_regex(dielectron_sp_noip_line_full),
     )
 
 
@@ -1039,7 +1040,7 @@ def dielectron_sp_displaced_sprucing_line(
     photons_table = WeightedRelTableAlg(
         InputCandidates=photon_filter(),
         ReferenceParticles=dielectrons_displaced,
-        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 600.0 * MeV),
+        Cut=in_range(5.0 * MeV, F.COMB_MASS(), 700.0 * MeV),
     )
 
     charged_pions = charged_pion_filter(pi_minpt=75.0 * MeV)