diff --git a/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx b/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
index 374f5861f4001e3fb8959a0cfb6f421702327333..976ad546ed7c15843926edfa64f23258f16618ec 100644
--- a/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
+++ b/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
@@ -106,7 +106,7 @@ int hits_far_forward_protons(const char* fname = "sim_far_forward_protons.edm4he
                  //.Define("delta_p_over_p2",delta_p_over_p, {"p_track2", "p_thrown"})
                  //.Define("N_VtxBarrelHits",[](std::vector<eic::TrackerHitData> hits) { return hits.size();},{"VertexBarrelRecHits"})
                  .Define("N_BarrelHits", [](std::vector<edm4hep::SimTrackerHitData> hits) { return hits.size();}, {"TrackerBarrelHits"})
-                 .Define("N_EndcapHits", [](std::vector<edm4hep::SimTrackerHitData> hits) { return hits.size();}, {"TrackerEndcapHits"})
+                 .Define("N_EndcapHits", [](std::vector<edm4hep::SimTrackerHitData> hits) { return hits.size();}, {"TrackerEndcapHits1"})
                  ;
 
   auto hBarrel_x_vs_y = df0.Histo2D({"hBarrel_x_vs_y", "; x ; y ",   100, -900, 900,100, -900, 900 }, "TrackerBarrelHits.position.x", "TrackerBarrelHits.position.y");
diff --git a/benchmarks/far_forward/config.yml b/benchmarks/far_forward/config.yml
index 81dda4710e6edf8ad4d4d8d02e3e1f920db6c4b2..b965eaf677bbe126a2ee17d8eff6a5c320141a02 100644
--- a/benchmarks/far_forward/config.yml
+++ b/benchmarks/far_forward/config.yml
@@ -1,23 +1,26 @@
+far_forward:compile:
+  stage: compile
+  extends: .compile_benchmark
+  script:
+    - compile_analyses.py far_forward
+
 B0_far_forward_protons:
   extends: .rec_benchmark
   stage: run
-  timeout: 24 hours
+  needs: ["far_forward:compile"]
   script:
-    - compile_analyses.py far_forward
     - bash benchmarks/far_forward/far_forward_protons.sh
 
 ZDC_far_forward_neutrons:
   extends: .rec_benchmark
   stage: run
-  timeout: 24 hours
+  needs: ["far_forward:compile"]
   script:
-    - compile_analyses.py far_forward
     - bash benchmarks/far_forward/run_zdc_neutrons.sh
 
 ZDC_far_forward_photons:
   extends: .rec_benchmark
   stage: run
-  timeout: 24 hours
+  needs: ["far_forward:compile"]
   script:
-    - compile_analyses.py far_forward
     - bash benchmarks/far_forward/run_zdc_photons.sh
diff --git a/benchmarks/far_forward/options/far_forward_reconstruction.py b/benchmarks/far_forward/options/far_forward_reconstruction.py
index 78f4c8b4f981ca4c49ff335060e7db6423aeb671..7aef3b7dccc184e5d8d9e429fa607b75e4bf56c8 100644
--- a/benchmarks/far_forward/options/far_forward_reconstruction.py
+++ b/benchmarks/far_forward/options/far_forward_reconstruction.py
@@ -33,15 +33,23 @@ from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitRecon
 
 sim_colls = [
     "MCParticles",
-    "B0TrackerHits",
+    "B0TrackerHits"
+]
+
+ffi_romanpot_collections = [
     "ForwardRomanPotHits1",
-    "ForwardRomanPotHits2",
+    "ForwardRomanPotHits2"
+]
+
+ffi_offmtracker_collections = [
     "ForwardOffMTrackerHits1",
     "ForwardOffMTrackerHits2",
     "ForwardOffMTrackerHits3",
     "ForwardOffMTrackerHits4"
 ]
 
+sim_colls += ffi_romanpot_collections + ffi_offmtracker_collections
+
 # list of algorithms
 algorithms = []
 
@@ -51,13 +59,11 @@ algorithms.append(podin)
 
 ## Roman pots
 ffi_romanpot_coll = SimTrackerHitsCollector("ffi_romanpot_coll",
-        inputSimTrackerHits = [
-                "ForwardRomanPotHits1",
-                "ForwardRomanPotHits2"],
-        outputSimTrackerHits = "ForwardRomanPotHits")
+        inputSimTrackerHits = ffi_romanpot_collections,
+        outputSimTrackerHits = "ForwardRomanPotAllHits")
 algorithms.append(ffi_romanpot_coll)
 ffi_romanpot_digi = TrackerDigi("ffi_romanpot_digi",
-        inputHitCollection = "ForwardRomanPotHits",
+        inputHitCollection = ffi_romanpot_coll.outputSimTrackerHits,
         outputHitCollection = "ForwardRomanPotRawHits",
         timeResolution = 8)
 algorithms.append(ffi_romanpot_digi)
@@ -74,15 +80,11 @@ algorithms.append(ffi_romanpot_parts)
 
 ## Off momentum tracker
 ffi_offmtracker_coll = SimTrackerHitsCollector("ffi_offmtracker_coll",
-        inputSimTrackerHits = [
-                "ForwardOffMTrackerHits1",
-                "ForwardOffMTrackerHits2",
-                "ForwardOffMTrackerHits3",
-                "ForwardOffMTrackerHits4"],
-        outputSimTrackerHits = "ForwardOffMTrackerHits")
-algorithms.append(ffi_romanpot_coll)
+        inputSimTrackerHits = ffi_offmtracker_collections,
+        outputSimTrackerHits = "ForwardOffMTrackerAllHits")
+algorithms.append(ffi_offmtracker_coll)
 ffi_offmtracker_digi = TrackerDigi("ffi_offmtracker_digi",
-        inputHitCollection = "ForwardOffMTrackerHits",
+        inputHitCollection = ffi_offmtracker_coll.outputSimTrackerHits,
         outputHitCollection = "ForwardOffMTrackerRawHits",
         timeResolution = 8)
 algorithms.append(ffi_offmtracker_digi)