diff --git a/.rootlogon.C b/.rootlogon.C
new file mode 100644
index 0000000000000000000000000000000000000000..39661747c35eb9bd1a37c217c7dc5d06f6122696
--- /dev/null
+++ b/.rootlogon.C
@@ -0,0 +1,14 @@
+{
+  // Ensure fmt is loaded
+  R__LOAD_LIBRARY(libfmt);
+  //
+  // top-level include-dir
+  gROOT->ProcessLine(".include include");
+
+  // setup a local build directory so we don't polute our source code with
+  // ROOT dictionaries etc. if desired
+  const char* build_dir = gSystem->Getenv("ROOT_BUILD_DIR");
+  if (build_dir) {
+    gSystem->SetBuildDir(build_dir);
+  }
+}
diff --git a/benchmarks/far_forward/scripts/gen_far_forward_protons.cxx b/benchmarks/far_forward/analysis/gen_far_forward_protons.cxx
similarity index 97%
rename from benchmarks/far_forward/scripts/gen_far_forward_protons.cxx
rename to benchmarks/far_forward/analysis/gen_far_forward_protons.cxx
index 1b363ca1e5e656967196307dd5586ba5bf0d78a8..a3c5ba621df93b20c5193f30df3fffc0a7a8b17d 100644
--- a/benchmarks/far_forward/scripts/gen_far_forward_protons.cxx
+++ b/benchmarks/far_forward/analysis/gen_far_forward_protons.cxx
@@ -4,10 +4,12 @@
 #include "HepMC3/Print.h"
 
 #include <iostream>
-#include<random>
-#include<cmath>
+#include <random>
+#include <cmath>
 #include <math.h>
+
 #include <TMath.h>
+#include <TRandom.h>
 
 using namespace HepMC3;
 
diff --git a/benchmarks/far_forward/scripts/hits_far_forward_protons.cxx b/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
similarity index 99%
rename from benchmarks/far_forward/scripts/hits_far_forward_protons.cxx
rename to benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
index 29ee91f1964ad726b740f3ffcf2bb6dc8081badf..860a1b6c5a4774cce25de8a6668bfef29ef5ed14 100644
--- a/benchmarks/far_forward/scripts/hits_far_forward_protons.cxx
+++ b/benchmarks/far_forward/analysis/hits_far_forward_protons.cxx
@@ -2,7 +2,9 @@
 #include "TCanvas.h"
 #include "TLegend.h"
 #include "TH1D.h"
+#include "THStack.h"
 #include "TProfile.h"
+#include "Math/Vector4D.h"
 
 #include <iostream>
 
diff --git a/benchmarks/far_forward/scripts/print_far_forward_protons.cxx b/benchmarks/far_forward/analysis/print_far_forward_protons.cxx
similarity index 100%
rename from benchmarks/far_forward/scripts/print_far_forward_protons.cxx
rename to benchmarks/far_forward/analysis/print_far_forward_protons.cxx
diff --git a/benchmarks/far_forward/scripts/rec_far_forward_protons.cxx b/benchmarks/far_forward/analysis/rec_far_forward_protons.cxx
similarity index 99%
rename from benchmarks/far_forward/scripts/rec_far_forward_protons.cxx
rename to benchmarks/far_forward/analysis/rec_far_forward_protons.cxx
index 493ae13a9703eee171b4fee241fed9e31d997259..a12c2d4059d87213d4ae8ca2f79b61d15e872041 100644
--- a/benchmarks/far_forward/scripts/rec_far_forward_protons.cxx
+++ b/benchmarks/far_forward/analysis/rec_far_forward_protons.cxx
@@ -2,7 +2,9 @@
 #include "TCanvas.h"
 #include "TLegend.h"
 #include "TH1D.h"
+#include "THStack.h"
 #include "TProfile.h"
+#include "Math/Vector4D.h"
 
 #include <iostream>
 
diff --git a/benchmarks/far_forward/config.yml b/benchmarks/far_forward/config.yml
index 21347be9428d80c592e17512c6f421b697c7d8e8..3aa931fed1dcab7f488889e45824e1b81066d0a9 100644
--- a/benchmarks/far_forward/config.yml
+++ b/benchmarks/far_forward/config.yml
@@ -3,4 +3,5 @@ B0_far_forward_protons:
   stage: run
   timeout: 24 hours
   script:
+    - compile_analyses.py far_forward
     - bash benchmarks/far_forward/far_forward_protons.sh
diff --git a/benchmarks/far_forward/far_forward_protons.sh b/benchmarks/far_forward/far_forward_protons.sh
index 494215c0becc9e70cf496e129828b0e419705ec3..44da60d2d30a1d7269456f394b38eacdb57ee28e 100644
--- a/benchmarks/far_forward/far_forward_protons.sh
+++ b/benchmarks/far_forward/far_forward_protons.sh
@@ -70,7 +70,7 @@ if [[ -z "${REC_ONLY}" && -z "${ANALYSIS_ONLY}" ]] ;
 then
 
   ## generate the input events
-  root -b -q "benchmarks/far_forward/scripts/gen_far_forward_protons.cxx(${JUGGLER_N_EVENTS}, \"${JUGGLER_FILE_NAME_TAG}.hepmc\")"
+  root -b -q "benchmarks/far_forward/analysis/gen_far_forward_protons.cxx+(${JUGGLER_N_EVENTS}, \"${JUGGLER_FILE_NAME_TAG}.hepmc\")"
   if [[ "$?" -ne "0" ]] ; then
     echo "ERROR running script"
     exit 1
@@ -108,19 +108,19 @@ mkdir -p results/far_forward/B0
 mkdir -p results/far_forward/RomanPot
 mkdir -p results/far_forward/OffMTracker
 
-root -b -q "benchmarks/far_forward/scripts/print_far_forward_protons.cxx(\"${JUGGLER_REC_FILE}\")"
+root -b -q "benchmarks/far_forward/analysis/print_far_forward_protons.cxx+(\"${JUGGLER_REC_FILE}\")"
 if [[ "$?" -ne "0" ]] ; then
   echo "ERROR running root script"
   exit 1
 fi
 
-root -b -q "benchmarks/far_forward/scripts/rec_far_forward_protons.cxx(\"${JUGGLER_REC_FILE}\")"
+root -b -q "benchmarks/far_forward/analysis/rec_far_forward_protons.cxx+(\"${JUGGLER_REC_FILE}\")"
 if [[ "$?" -ne "0" ]] ; then
   echo "ERROR running root script"
   exit 1
 fi
 
-root -b -q "benchmarks/far_forward/scripts/hits_far_forward_protons.cxx(\"${JUGGLER_SIM_FILE}\")"
+root -b -q "benchmarks/far_forward/analysis/hits_far_forward_protons.cxx+(\"${JUGGLER_SIM_FILE}\")"
 if [[ "$?" -ne "0" ]] ; then
   echo "ERROR running root script"
   exit 1