diff --git a/README.md b/README.md
index f1663ba3d91b95326992dd6ca5b1248146e482d0..4186a2780d7855892bfb46c0009f13c712283f97 100644
--- a/README.md
+++ b/README.md
@@ -31,19 +31,18 @@ See [common_bench](https://eicweb.phy.anl.gov/EIC/benchmarks/common_bench) for d
 Here we setup to use our local build of the `juggler` library.
 First set some environment variables.
 ```
-export JUGGLER_INSTALL_PREFIX=$HOME/stow/juggler # if developing algorithms
+export JUGGLER_INSTALL_PREFIX=/usr/local 
 export JUGGLER_DETECTOR=athena   # athena is the default
 export BEAMLINE_CONFIG=ip6       # ip6 is the default
 ```
 
 ```
-git@eicweb.phy.anl.gov:EIC/benchmarks/physics_benchmarks.git && cd physics_benchmarks
+git clone https://eicweb.phy.anl.gov/EIC/benchmarks/physics_benchmarks.git && cd physics_benchmarks
 git clone https://eicweb.phy.anl.gov/EIC/benchmarks/common_bench.git setup
 source setup/bin/env.sh && ./setup/bin/install_common.sh
 source .local/bin/env.sh && build_detector.sh
 mkdir_local_data_link sim_output
-mkdir -p results
-mkdir -p config
+mkdir -p results config
 
 ```
 
diff --git a/benchmarks/dvcs/config.yml b/benchmarks/dvcs/config.yml
index 9b00dfebafd6f75f413700ef4f9d7565c1bf3957..204101bcc678c86c26faa21564afcef11dc5c33f 100644
--- a/benchmarks/dvcs/config.yml
+++ b/benchmarks/dvcs/config.yml
@@ -2,7 +2,7 @@ dvcs:process:
   stage: process
   extends: .phy_benchmark
   tags:
-    - s3
+    - phy
   needs: ["common:detector"]
   script:
     - compile_analyses.py dvcs
diff --git a/benchmarks/synchrotron/analysis/synchrotron_sim.cxx b/benchmarks/synchrotron/analysis/synchrotron_sim.cxx
index 00b0835b404c389f7b4b794758378842b8498dbb..f60a77b871598708b38b6db5beeb6a0ed2840653 100644
--- a/benchmarks/synchrotron/analysis/synchrotron_sim.cxx
+++ b/benchmarks/synchrotron/analysis/synchrotron_sim.cxx
@@ -6,6 +6,7 @@
 #include "ROOT/RDataFrame.hxx"
 #include "Math/Vector4D.h"
 #include "TCanvas.h"
+#include "TSystem.h"
 
 #include <nlohmann/json.hpp>
 using json = nlohmann::json;
@@ -27,15 +28,31 @@ void synchrotron_sim(const char* fname = "sim_synchrotron.root"){
   ROOT::EnableImplicitMT();
   ROOT::RDataFrame df("events", fname);
 
-  // Define variables
-  auto df0 = df
-    .Define("n_VertexBarrelHits", "VertexBarrelHits.size()")
-    .Define("n_VertexEndcapHits", "VertexEndcapHits.size()")
-  ;
-
-  auto n_VertexBarrelHits = df0.Mean("n_VertexBarrelHits");
-  auto n_VertexEndcapHits = df0.Mean("n_VertexEndcapHits");
-
-  std::cout << "n_VertexBarrelHits = " << *n_VertexBarrelHits << " / ev" << std::endl;
-  std::cout << "n_VertexEndcapHits = " << *n_VertexEndcapHits << " / ev" << std::endl;
+  // Detector version
+  std::string detector_version("default");
+  const char* juggler_detector_version = gSystem->Getenv("JUGGLER_DETECTOR_VERSION");
+  if (juggler_detector_version) {
+    detector_version = juggler_detector_version;
+  }
+
+  if (detector_version == "acadia") {
+    // Define variables
+    auto df0 = df
+      .Define("n_VertexBarrelHits", "VertexBarrelHits.size()")
+      .Define("n_VertexEndcapHits", "VertexEndcapHits.size()")
+    ;
+    auto n_VertexBarrelHits = df0.Mean("n_VertexBarrelHits");
+    auto n_VertexEndcapHits = df0.Mean("n_VertexEndcapHits");
+    std::cout << "n_VertexBarrelHits = " << *n_VertexBarrelHits << " / ev" << std::endl;
+    std::cout << "n_VertexEndcapHits = " << *n_VertexEndcapHits << " / ev" << std::endl;
+  } else if (detector_version == "canyonlands") {
+    // Define variables
+    auto df0 = df
+      .Define("n_VertexBarrelHits", "VertexBarrelHits.size()")
+    ;
+    auto n_VertexBarrelHits = df0.Mean("n_VertexBarrelHits");
+    std::cout << "n_VertexBarrelHits = " << *n_VertexBarrelHits << " / ev" << std::endl;
+  } else {
+    std::cout << "Detector version " << detector_version << " not supported in synchrotron_sim.cxx" << std::endl; 
+  }
 }
diff --git a/benchmarks/u_omega/config.yml b/benchmarks/u_omega/config.yml
index 40d5f4be7fc677d18f10492de31b484ace90d422..6b47401ab86c4b7a4b486e803ecede98275aa6e0 100644
--- a/benchmarks/u_omega/config.yml
+++ b/benchmarks/u_omega/config.yml
@@ -2,7 +2,7 @@ u_omega:process:
   stage: process
   extends: .phy_benchmark
   tags:
-    - s3
+    - phy
   needs: ["common:detector"]
   script:
     - compile_analyses.py u_omega
diff --git a/options/reconstruction.py b/options/reconstruction.py
index dee12c7af34b397bccbbd8203046858df3e13e88..84e04b4ca229a7f51261d22d81a5fe23c63be5ac 100644
--- a/options/reconstruction.py
+++ b/options/reconstruction.py
@@ -8,11 +8,17 @@ import json
 
 detector_name = "athena"
 if "JUGGLER_DETECTOR" in os.environ :
-  detector_name = str(os.environ["JUGGLER_DETECTOR"])
+    detector_name = str(os.environ["JUGGLER_DETECTOR"])
 
 detector_path = ""
 if "DETECTOR_PATH" in os.environ :
-  detector_path = str(os.environ["DETECTOR_PATH"])
+    detector_path = str(os.environ["DETECTOR_PATH"])
+
+detector_version = 'default'
+if "JUGGLER_DETECTOR_VERSION" in os.environ:
+    env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"])
+    if 'acadia' in env_version:
+        detector_version = 'acadia'
 
 compact_path = os.path.join(detector_path, detector_name)
 
@@ -45,7 +51,15 @@ services = []
 # auditor service
 services.append(AuditorSvc("AuditorSvc", Auditors=['ChronoAuditor', 'MemStatAuditor']))
 # geometry service
-services.append(GeoSvc("GeoSvc", detectors=["{}.xml".format(compact_path)], OutputLevel=WARNING))
+## only have material maps for acadia right now
+if detector_version == 'acadia':
+    services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)],
+                                     materials="config/material-maps.json",
+                                     OutputLevel=WARNING))
+else:
+    services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)],
+                                    #materials="config/material-maps.json",
+                                    OutputLevel=WARNING))
 # data service
 services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING))
 
@@ -100,22 +114,25 @@ from Configurables import Jug__Reco__ParticleCollector as ParticleCollector
 
 # branches needed from simulation root file
 sim_coll = [
-    "mcparticles",
-    "EcalEndcapNHits",
-    "EcalEndcapPHits",
-    "EcalBarrelHits",
-    "EcalBarrelScFiHits",
-    "HcalBarrelHits",
-    "HcalEndcapPHits",
-    "HcalEndcapNHits",
-    "TrackerEndcapHits",
-    "TrackerBarrelHits",
-    "GEMTrackerEndcapHits",
-    "VertexBarrelHits",
-    "VertexEndcapHits",
-    "DRICHHits",
-    "MRICHHits"
+    'mcparticles',
+    'EcalEndcapNHits',
+    'EcalEndcapPHits',
+    'EcalBarrelHits',
+    'EcalBarrelScFiHits',
+    'HcalBarrelHits',
+    'HcalEndcapPHits',
+    'HcalEndcapNHits',
+    'TrackerEndcapHits',
+    'TrackerBarrelHits',
+    'GEMTrackerEndcapHits',
+    'VertexBarrelHits',
+    'DRICHHits',
 ]
+if 'acadia' in detector_version:
+    sim_coll.append('VertexEndcapHits')
+    sim_coll.append('MRICHHits')
+else:
+    sim_coll.append('MPGDTrackerBarrelHits')
 
 # list of algorithms
 algorithms = []
@@ -499,11 +516,18 @@ vtx_b_digi = TrackerDigi("vtx_b_digi",
         timeResolution=8)
 algorithms.append(vtx_b_digi)
 
-vtx_ec_digi = TrackerDigi("vtx_ec_digi",
-        inputHitCollection="VertexEndcapHits",
-        outputHitCollection="VertexEndcapRawHits",
-        timeResolution=8)
-algorithms.append(vtx_ec_digi)
+if 'acadia' in detector_version:
+    vtx_ec_digi = TrackerDigi("vtx_ec_digi", 
+            inputHitCollection="VertexEndcapHits",
+            outputHitCollection="VertexEndcapRawHits",
+            timeResolution=8)
+    algorithms.append( vtx_ec_digi )
+else:
+    mm_b_digi = TrackerDigi("mm_b_digi", 
+            inputHitCollection="MPGDTrackerBarrelHits",
+            outputHitCollection="MPGDTrackerBarrelRawHits",
+            timeResolution=8)
+    algorithms.append( mm_b_digi )
 
 gem_ec_digi = TrackerDigi("gem_ec_digi",
         inputHitCollection="GEMTrackerEndcapHits",
@@ -527,26 +551,37 @@ vtx_b_reco = TrackerHitReconstruction("vtx_b_reco",
         outputHitCollection="VertexBarrelRecHits")
 algorithms.append(vtx_b_reco)
 
-vtx_ec_reco = TrackerHitReconstruction("vtx_ec_reco",
-        inputHitCollection = vtx_ec_digi.outputHitCollection,
-        outputHitCollection="VertexEndcapRecHits")
-algorithms.append(vtx_ec_reco)
+if 'acadia' in detector_version:
+    vtx_ec_reco = TrackerHitReconstruction("vtx_ec_reco",
+            inputHitCollection = vtx_ec_digi.outputHitCollection,
+            outputHitCollection="VertexEndcapRecHits")
+    algorithms.append( vtx_ec_reco )
+else:
+    mm_b_reco = TrackerHitReconstruction("mm_b_reco",
+            inputHitCollection = mm_b_digi.outputHitCollection,
+            outputHitCollection="MPGDTrackerBarrelRecHits")
+    algorithms.append( mm_b_reco )
 
 gem_ec_reco = TrackerHitReconstruction("gem_ec_reco",
         inputHitCollection=gem_ec_digi.outputHitCollection,
         outputHitCollection="GEMTrackerEndcapRecHits")
 algorithms.append(gem_ec_reco)
 
-# Tracking hit collector
+input_tracking_hits = [
+    str(trk_b_reco.outputHitCollection),
+    str(trk_ec_reco.outputHitCollection),
+    str(vtx_b_reco.outputHitCollection),
+    str(gem_ec_reco.outputHitCollection) ]
+if 'acadia' in detector_version:
+    input_tracking_hits.append(str(vtx_ec_reco.outputHitCollection))
+else:
+    input_tracking_hits.append(str(mm_b_reco.outputHitCollection))
+
 trk_hit_col = TrackingHitsCollector("trk_hit_col",
-        inputTrackingHits=[
-            str(trk_b_reco.outputHitCollection),
-            str(trk_ec_reco.outputHitCollection),
-            str(vtx_b_reco.outputHitCollection),
-            str(vtx_ec_reco.outputHitCollection),
-            str(gem_ec_reco.outputHitCollection) ],
-        trackingHits="trackingHits")
-algorithms.append(trk_hit_col)
+        inputTrackingHits=input_tracking_hits,
+        trackingHits="trackingHits",
+        OutputLevel=VERBOSE)
+algorithms.append( trk_hit_col )
 
 # Hit Source linker
 sourcelinker = TrackerSourceLinker("trk_srcslnkr",
@@ -634,22 +669,16 @@ algorithms.append(drich_reco)
 #        outputClusterCollection="ForwardRICHClusters")
 
 # MRICH
-mrich_digi = PhotoMultiplierDigi("mrich_digi",
-        inputHitCollection="MRICHHits",
-        outputHitCollection="MRICHRawHits",
-        quantumEfficiency=[(a*units.eV, b) for a, b in qe_data])
-algorithms.append(mrich_digi)
-
-mrich_reco = PhotoMultiplierReco("mrich_reco",
-        inputHitCollection=mrich_digi.outputHitCollection,
-        outputHitCollection="MRICHRecHits")
-algorithms.append(mrich_reco)
-
-# FIXME
-#mrich_cluster = PhotoRingClusters("drich_cluster",
-#        inputHitCollection=pmtreco.outputHitCollection,
-#        #inputTrackCollection="ReconstructedParticles",
-#        outputClusterCollection="ForwardRICHClusters")
+if 'acadia' in detector_version:
+    mrich_digi = PhotoMultiplierDigi("mrich_digi",
+            inputHitCollection="MRICHHits",
+            outputHitCollection="MRICHRawHits",
+            quantumEfficiency=[(a*units.eV, b) for a, b in qe_data])
+    algorithms.append(mrich_digi)
+    mrich_reco = PhotoMultiplierReco("mrich_reco",
+            inputHitCollection=mrich_digi.outputHitCollection,
+            outputHitCollection="MRICHRecHits")
+    algorithms.append(mrich_reco)
 
 # Electron kinematics
 electron_incl_kin = InclusiveKinematicsElectron("electron_incl_kin",
diff --git a/options/reconstruction.raw.py b/options/reconstruction.raw.py
index a4013e8025bfb5de6f6d359a89e6530398c53a30..dc706826c1f5cb06d7d6649312f80ba484f58a11 100644
--- a/options/reconstruction.raw.py
+++ b/options/reconstruction.raw.py
@@ -8,11 +8,17 @@ import json
 
 detector_name = "athena"
 if "JUGGLER_DETECTOR" in os.environ :
-  detector_name = str(os.environ["JUGGLER_DETECTOR"])
+    detector_name = str(os.environ["JUGGLER_DETECTOR"])
 
 detector_path = ""
 if "DETECTOR_PATH" in os.environ :
-  detector_path = str(os.environ["DETECTOR_PATH"])
+    detector_path = str(os.environ["DETECTOR_PATH"])
+
+detector_version = 'default'
+if "JUGGLER_DETECTOR_VERSION" in os.environ:
+    env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"])
+    if 'acadia' in env_version:
+        detector_version = 'acadia'
 
 compact_path = os.path.join(detector_path, detector_name)
 
@@ -42,21 +48,25 @@ from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi
 
 # branches needed from simulation root file
 sim_coll = [
-    "EcalEndcapNHits",
-    "EcalEndcapPHits",
-    "EcalBarrelHits",
-    "EcalBarrelScFiHits",
-    "HcalBarrelHits",
-    "HcalEndcapPHits",
-    "HcalEndcapNHits",
-    "TrackerEndcapHits",
-    "TrackerBarrelHits",
-    "GEMTrackerEndcapHits",
-    "VertexBarrelHits",
-    "VertexEndcapHits",
-    "DRICHHits",
-    "MRICHHits"
+    'mcparticles',
+    'EcalEndcapNHits',
+    'EcalEndcapPHits',
+    'EcalBarrelHits',
+    'EcalBarrelScFiHits',
+    'HcalBarrelHits',
+    'HcalEndcapPHits',
+    'HcalEndcapNHits',
+    'TrackerEndcapHits',
+    'TrackerBarrelHits',
+    'GEMTrackerEndcapHits',
+    'VertexBarrelHits',
+    'DRICHHits',
 ]
+if 'acadia' in detector_version:
+    sim_coll.append('VertexEndcapHits')
+    sim_coll.append('MRICHHits')
+else:
+    sim_coll.append('MPGDTrackerBarrelHits')
 
 # list of algorithms
 algorithms = []
@@ -177,11 +187,18 @@ vtx_b_digi = TrackerDigi("vtx_b_digi",
         timeResolution=8)
 algorithms.append(vtx_b_digi)
 
-vtx_ec_digi = TrackerDigi("vtx_ec_digi",
-        inputHitCollection="VertexEndcapHits",
-        outputHitCollection="VertexEndcapRawHits",
-        timeResolution=8)
-algorithms.append(vtx_ec_digi)
+if 'acadia' in detector_version:
+    vtx_ec_digi = TrackerDigi("vtx_ec_digi", 
+            inputHitCollection="VertexEndcapHits",
+            outputHitCollection="VertexEndcapRawHits",
+            timeResolution=8)
+    algorithms.append( vtx_ec_digi )
+else:
+    mm_b_digi = TrackerDigi("mm_b_digi", 
+            inputHitCollection="MPGDTrackerBarrelHits",
+            outputHitCollection="MPGDTrackerBarrelRawHits",
+            timeResolution=8)
+    algorithms.append( mm_b_digi )
 
 gem_ec_digi = TrackerDigi("gem_ec_digi",
         inputHitCollection="GEMTrackerEndcapHits",
@@ -197,11 +214,12 @@ drich_digi = PhotoMultiplierDigi("drich_digi",
 algorithms.append(drich_digi)
 
 # MRICH
-mrich_digi = PhotoMultiplierDigi("mrich_digi",
-        inputHitCollection="MRICHHits",
-        outputHitCollection="MRICHRawHits",
-        quantumEfficiency=[(a*units.eV, b) for a, b in qe_data])
-algorithms.append(mrich_digi)
+if 'acadia' in detector_version:
+    mrich_digi = PhotoMultiplierDigi("mrich_digi",
+            inputHitCollection="MRICHHits",
+            outputHitCollection="MRICHRawHits",
+            quantumEfficiency=[(a*units.eV, b) for a, b in qe_data])
+    algorithms.append(mrich_digi)
 
 # Output
 podout = PodioOutput("out", filename=output_rec)