diff --git a/MooreOnlineConf/options/reco.py b/MooreOnlineConf/options/reco.py
index dcfc04c8b548bd2bbbfef6a6b04ecde2b228327a..872d86bb13a0724d30201f92d8dac4ed40a2d68f 100644
--- a/MooreOnlineConf/options/reco.py
+++ b/MooreOnlineConf/options/reco.py
@@ -9,12 +9,66 @@
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
 import os
-from Moore import options, run_reconstruction
+from Moore import options
+from Moore.config import run_allen_reconstruction
 from Moore.config import Reconstruction
 from RecoConf.standalone import reco_prefilters, standalone_hlt2_global_reco
 from Hlt2Conf.settings.hlt2_binds import config_pp_2024_with_monitoring
+from RecoConf.hlt1_allen import allen_gaudi_config
+from RecoConf.legacy_rec_hlt1_tracking import make_RetinaCluster_raw_bank, make_velo_full_clusters, make_RetinaClusters
+from PyConf.Algorithms import VertexCompare
+
+from RecoConf.legacy_rec_hlt1_tracking import (
+    make_reco_pvs,
+    make_PatPV3DFuture_pvs,
+    make_VeloClusterTrackingSIMD,
+)
+from RecoConf.hlt2_tracking import (
+    make_PrKalmanFilter_noUT_tracks,
+    make_PrKalmanFilter_Seed_tracks,
+    make_PrKalmanFilter_Velo_tracks,
+    make_TrackBestTrackCreator_tracks,
+)
 from MooreOnlineConf.utils import update_and_reset
 
+from Moore import options, run_moore
+from RecoConf.global_tools import stateProvider_with_simplified_geom, trackMasterExtrapolator_with_simplified_geom
+from RecoConf.reconstruction_objects import reconstruction
+from RecoConf.hlt2_global_reco import reconstruction as hlt2_reconstruction, make_light_reco_pr_kf_without_UT
+from RecoConf.hlt2_tracking import (
+    make_TrackBestTrackCreator_tracks,
+    make_PrKalmanFilter_noUT_tracks,
+    make_PrKalmanFilter_Velo_tracks,
+    make_PrKalmanFilter_Seed_tracks,
+)
+from RecoConf.decoders import default_VeloCluster_source
+from RecoConf.protoparticles import make_charged_protoparticles
+from RecoConf.event_filters import require_gec
+from Hlt2Conf.settings.defaults import get_default_hlt1_filter_code_for_hlt2
+from Moore.streams import Stream, Streams
+from Hlt2Conf.lines.semileptonic import all_lines as full_lines  # all full-stream lines
+import sys
+from DDDB.CheckDD4Hep import UseDD4Hep
+
+from Moore import options, run_moore
+from RecoConf.global_tools import stateProvider_with_simplified_geom, trackMasterExtrapolator_with_simplified_geom
+from RecoConf.reconstruction_objects import reconstruction
+from RecoConf.hlt2_global_reco import reconstruction as hlt2_reconstruction, make_light_reco_pr_kf_without_UT
+from RecoConf.hlt2_tracking import (
+    make_TrackBestTrackCreator_tracks,
+    make_PrKalmanFilter_noUT_tracks,
+    make_PrKalmanFilter_Velo_tracks,
+    make_PrKalmanFilter_Seed_tracks,
+)
+from RecoConf.decoders import default_VeloCluster_source
+from RecoConf.protoparticles import make_charged_protoparticles
+from RecoConf.event_filters import require_gec
+from Hlt2Conf.settings.defaults import get_default_hlt1_filter_code_for_hlt2
+from Moore.streams import Stream, Streams
+from Hlt2Conf.lines.semileptonic import all_lines as full_lines  # all full-stream lines
+import sys
+from DDDB.CheckDD4Hep import UseDD4Hep
+
 task_type = os.getenv("TASK_TYPE", "GenericTask")
 
 ## Global event cut specifications:
@@ -70,6 +124,7 @@ def with_update_and_reset():
                     IOVReset(ODIN=make_odin()),
                     update_and_reset(), odin_bb_filter, rb_filter
                 ])
+
     return reco
 
 
@@ -78,5 +133,6 @@ def with_update_and_reset():
 with config_pp_2024_with_monitoring(), reco_prefilters.bind(
         gec=False,
         gec_cut=GEC_cut,
-):
-    run_reconstruction(options, with_update_and_reset)
+),\
+    VertexCompare.bind(produceNtuple=False,produceHistogram=False,monitoring=True):
+    run_allen_reconstruction(options, with_update_and_reset)
diff --git a/MooreOnlineConf/options/vp_veloSP.py b/MooreOnlineConf/options/vp_veloSP.py
new file mode 100644
index 0000000000000000000000000000000000000000..12676520553920a34d5bf4cb047a0e93d80e91a2
--- /dev/null
+++ b/MooreOnlineConf/options/vp_veloSP.py
@@ -0,0 +1,15 @@
+###############################################################################
+# (c) Copyright 2024 CERN for the benefit of the LHCb Collaboration           #
+#                                                                             #
+# This software is distributed under the terms of the GNU General Public      #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
+#                                                                             #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization  #
+# or submit itself to any jurisdiction.                                       #
+###############################################################################
+from RecoConf.decoders import default_VeloCluster_source
+from AllenConf.velo_reconstruction import decode_velo
+
+default_VeloCluster_source.global_bind(bank_type="VP")
+decode_velo.global_bind(retina_decoding=False)
diff --git a/MooreScripts/CMakeLists.txt b/MooreScripts/CMakeLists.txt
index db82a5e1628613e07c4216e3558d17f9856c549e..5537a4e859937d839f652fe6eb605349445527b9 100644
--- a/MooreScripts/CMakeLists.txt
+++ b/MooreScripts/CMakeLists.txt
@@ -26,6 +26,20 @@ if(BUILD_TESTING AND NOT USE_DD4HEP)
     )
 endif()
 
+if(BUILD_TESTING AND BINARY_TAG MATCHES ".*cuda.*")
+    # When compiling for GPU, vertex resolution monitoring call the device algorithms
+    # since these are incompatible with calling from Moore / Gaudi, disable the monitoring tests
+    set_property(
+        TEST
+           MooreScripts.beamspotmon
+           MooreScripts.calomon
+           MooreScripts.recomon
+           MooreScripts.velomon
+        PROPERTY
+            DISABLED TRUE
+    )
+endif()
+
 # FIXME the following does not work as I don't know how to run cmsetup.py as part of the install
 # because xenv is not in available. Maybe find_package(xenv) would work?
 
diff --git a/MooreScripts/job/runRecoMon.sh b/MooreScripts/job/runRecoMon.sh
index 96a323050e3a2f969e6ba36d592a9ebd2ecef726..4b2cca1ab3561addfae3c9d10878b2c66b60f270 100755
--- a/MooreScripts/job/runRecoMon.sh
+++ b/MooreScripts/job/runRecoMon.sh
@@ -19,7 +19,7 @@ settings=$(python -c 'import OnlineEnvBase; print(OnlineEnvBase.HLTType)')
 vp_options=$MOOREONLINECONFROOT/options/vp_retina_clusters.py
 if [[ $settings == *"veloSP" ]]; then
     echo "RecoMon: configuring VELO SP algorithms based on current trigger config $settings"
-    vp_options=
+    vp_options=$MOOREONLINECONFROOT/options/vp_veloSP.py
 fi
 
 exec_gaudirun \
diff --git a/MooreScripts/tests/qmtest/recomon.qmt b/MooreScripts/tests/qmtest/recomon.qmt
index 05066b627121434c1a91c1dea0820690de372201..b92254d585896e2336c117be9668669ad6602da0 100644
--- a/MooreScripts/tests/qmtest/recomon.qmt
+++ b/MooreScripts/tests/qmtest/recomon.qmt
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?><!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
 <!--
     (c) Copyright 2021 CERN for the benefit of the LHCb Collaboration
 
@@ -28,7 +28,7 @@ Run an RecoMon job in the Online testbench
 import glob
 workdir = self._common_tmpdir
 for fn in glob.glob(workdir + "/recomon/*.*"):
-    if not fn.endswith(".mdf"):
+    if not fn.endswith(".mdf") and not fn.endswith(".root"):
         result[os.path.basename(fn)] = open(fn).read()
 
 </text></argument>