diff --git a/benchmarks/zdc_lambda/Snakefile b/benchmarks/zdc_lambda/Snakefile
index 08158fb813a4709bfb0e53a1e0027ca3e3a85f6e..d4f89fac1e48ab547a489c62b71bb4cfa37fb51c 100644
--- a/benchmarks/zdc_lambda/Snakefile
+++ b/benchmarks/zdc_lambda/Snakefile
@@ -1,31 +1,37 @@
 rule zdc_lambda_generate:
         input:
                 script="benchmarks/zdc_lambda/analysis/gen_lambda_decay.cxx",
-        params:
-                NEVENTS_GEN=1000,
         output:
-                GEN_FILE="sim_output/zdc_lambda/lambda_decay_{P}GeV.hepmc"
+                GEN_FILE="sim_output/zdc_lambda/lambda_decay_{P}GeV.hepmc",
+        params:
+                N_EVENTS=1000,
         shell:
                 """
-root -l -b -q '{input.script}({params.NEVENTS_GEN},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
+root -l -b -q '{input.script}({params.N_EVENTS},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
 """
 
 rule zdc_lambda_simulate:
         input:
                 GEN_FILE="sim_output/zdc_lambda/lambda_decay_{P}GeV.hepmc",
                 warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
-        params:
-                PHYSICS_LIST="FTFP_BERT"
+                geometry_lib=find_epic_libraries(),
         output:
-                SIM_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_sim_lambda_dec_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_sim_lambda_dec_{P}GeV_{INDEX}.edm4hep.root",
+        params:
+                N_EVENTS=200,
+                PHYSICS_LIST="FTFP_BERT",
+                DETECTOR_PATH=os.environ["DETECTOR_PATH"],
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                DD4HEP_HASH=get_spack_package_hash("dd4hep"),
+                NPSIM_HASH=get_spack_package_hash("npsim"),
+        cache: True
         shell:
                 """
-NEVENTS_SIM=200
 # Running simulation
 npsim \
-   --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
-   --skipNEvents $(( $NEVENTS_SIM * {wildcards.INDEX} )) \
-   --numberOfEvents $NEVENTS_SIM \
+   --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
+   --skipNEvents $(( {params.N_EVENTS} * {wildcards.INDEX} )) \
+   --numberOfEvents {params.N_EVENTS} \
    --physicsList {params.PHYSICS_LIST} \
    --inputFiles {input.GEN_FILE} \
    --outputFile {output.SIM_FILE}
@@ -33,13 +39,18 @@ npsim \
 
 rule zdc_lambda_recon:
         input:
-                SIM_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_sim_lambda_dec_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_sim_lambda_dec_{P}GeV_{INDEX}.edm4hep.root",
         output:
-                REC_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_rec_lambda_dec_{P}GeV_{INDEX}.edm4eic.root"
+                REC_FILE="sim_output/zdc_lambda/{DETECTOR_CONFIG}_rec_lambda_dec_{P}GeV_{INDEX}.edm4eic.root",
+        params:
+                N_EVENTS=200,
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                EICRECON_HASH=get_spack_package_hash("eicrecon"),
+        cache: True
         shell:
                 """
-NEVENTS_REC=200
-eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Pdd4hep:xml_files=$DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml -Ppodio:output_collections=MCParticles,HcalFarForwardZDCClusters,HcalFarForwardZDCRecHits,HcalFarForwardZDCSubcellHits  -Pjana:nevents=$NEVENTS_REC
+env DETECTOR_CONFIG={params.DETECTOR_CONFIG} \
+  eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Ppodio:output_collections=MCParticles,HcalFarForwardZDCClusters,HcalFarForwardZDCRecHits,HcalFarForwardZDCSubcellHits -Pjana:nevents={params.N_EVENTS}
 """
 
 rule zdc_lambda_analysis:
diff --git a/benchmarks/zdc_lyso/Snakefile b/benchmarks/zdc_lyso/Snakefile
index 4e79e2279cab5079a3aef17f8c9278291f4297b0..cb77131e338e2635f3454daca3c3da6f3093aa1f 100644
--- a/benchmarks/zdc_lyso/Snakefile
+++ b/benchmarks/zdc_lyso/Snakefile
@@ -20,18 +20,24 @@ rule zdc_lyso_sim:
     input:
         hepmcfile="data/{PARTICLE}_{BEAM_ENERGY}GeV_theta_{THETA_MIN}deg_thru_{THETA_MAX}deg.hepmc",
         warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
+        geometry_lib=find_epic_libraries(),
     output:
         "sim_output/zdc_lyso/{DETECTOR_CONFIG}_{PARTICLE}_{BEAM_ENERGY}GeV_theta_{THETA_MIN}deg_thru_{THETA_MAX}deg.edm4hep.root",
     log:
         "sim_output/zdc_lyso/{DETECTOR_CONFIG}_{PARTICLE}_{BEAM_ENERGY}GeV_theta_{THETA_MIN}deg_thru_{THETA_MAX}deg.edm4hep.root.log",
     params:
         num_events=1000,
+        DETECTOR_PATH=os.environ["DETECTOR_PATH"],
+        DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+        DD4HEP_HASH=get_spack_package_hash("dd4hep"),
+        NPSIM_HASH=get_spack_package_hash("npsim"),
+    cache: True
     shell:
         """
 npsim \
   --runType batch \
   -v WARNING \
-  --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
+  --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
   --numberOfEvents {params.num_events} \
   --inputFiles {input.hepmcfile} \
   --outputFile {output}
@@ -45,10 +51,14 @@ rule zdc_lyso_reco:
         "sim_output/zdc_lyso/{DETECTOR_CONFIG}_{PARTICLE}_{BEAM_ENERGY}GeV_theta_{THETA_MIN}deg_thru_{THETA_MAX}deg.eicrecon.tree.edm4eic.root",
     log:
         "sim_output/zdc_lyso/{DETECTOR_CONFIG}_{PARTICLE}_{BEAM_ENERGY}GeV_theta_{THETA_MIN}deg_thru_{THETA_MAX}deg.eicrecon.tree.edm4eic.root.log",
+    params:
+        DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+        EICRECON_HASH=get_spack_package_hash("eicrecon"),
+    cache: True
     shell:
         """
-eicrecon -Ppodio:output_collections=HcalFarForwardZDCRawHits,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,EcalFarForwardZDCRawHits,EcalFarForwardZDCRecHits,EcalFarForwardZDCClusters,MCParticles {input}
-mv podio_output.root {output}
+env DETECTOR_CONFIG={params.DETECTOR_CONFIG} \
+  eicrecon -Ppodio:output_file={output} -Ppodio:output_collections=HcalFarForwardZDCRawHits,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,EcalFarForwardZDCRawHits,EcalFarForwardZDCRecHits,EcalFarForwardZDCClusters,MCParticles {input}
 """
 
 
diff --git a/benchmarks/zdc_neutron/config.yml b/benchmarks/zdc_neutron/config.yml
index 715a9b2033c286246e7bee4d2fe0426e1a75153a..ca8043044e024a98d178a74ae56ba1bd10dde19b 100644
--- a/benchmarks/zdc_neutron/config.yml
+++ b/benchmarks/zdc_neutron/config.yml
@@ -2,7 +2,7 @@ sim:zdc_neutron:
   extends: .det_benchmark
   stage: simulate
   script:
-    - snakemake --cache --cores 1 sim_output/zdc_neutron/epic_craterlake/fwd_neutrons.edm4eic.root 
+    - snakemake $SNAKEMAKE_FLAGS --cores 5 sim_output/zdc_neutron/epic_craterlake/fwd_neutrons.edm4eic.root
   retry:
     max: 2
     when:
@@ -14,7 +14,7 @@ bench:zdc_neutron:
   needs:
     - ["sim:zdc_neutron"]
   script:
-    - snakemake --cores 1 results/zdc_neutron/epic_craterlake/fwd_neutrons_geant.pdf 
+    - snakemake $SNAKEMAKE_FLAGS --cores 1 results/zdc_neutron/epic_craterlake/fwd_neutrons_geant.pdf
 
 collect_results:zdc_neutron:
   extends: .det_benchmark
@@ -24,7 +24,7 @@ collect_results:zdc_neutron:
   script:
     - ls -lrht
     - mv results{,_save}/ # move results directory out of the way to preserve it
-    - snakemake --cores 1 --delete-all-output results/zdc_neutron/epic_craterlake/fwd_neutrons_geant.pdf
+    - snakemake $SNAKEMAKE_FLAGS --cores 1 --delete-all-output results/zdc_neutron/epic_craterlake/fwd_neutrons_geant.pdf
     - mv results{_save,}/
     # convert to png
     - |
diff --git a/benchmarks/zdc_photon/Snakefile b/benchmarks/zdc_photon/Snakefile
index 6963ed7f9ee4daf54f6d5cef97065aaaa1c61a49..3e653a13e84fa80f939adc5f3844be507d45368a 100644
--- a/benchmarks/zdc_photon/Snakefile
+++ b/benchmarks/zdc_photon/Snakefile
@@ -1,35 +1,41 @@
 rule zdc_photon_generate:
         input:
                 script="benchmarks/zdc_photon/analysis/gen_particles.cxx",
+        output:
+                GEN_FILE="sim_output/zdc_photon/zdc_photon_{P}GeV.hepmc",
         params:
                 th_max=0.23,
-                th_min=0
-        output:
-                GEN_FILE="sim_output/zdc_photon/zdc_photon_{P}GeV.hepmc"
+                th_min=0,
+                N_EVENTS=1000,
         shell:
                 """
-NEVENTS_GEN=200
 mkdir -p sim_output/zdc_photon
-root -l -b -q '{input.script}('$NEVENTS_GEN',"{output.GEN_FILE}", "gamma", {params.th_min}, {params.th_max}, 0., 360., {wildcards.P})'
+root -l -b -q '{input.script}('{params.N_EVENTS}',"{output.GEN_FILE}", "gamma", {params.th_min}, {params.th_max}, 0., 360., {wildcards.P})'
 """
 
 rule zdc_photon_simulate:
         input:
                 GEN_FILE="sim_output/zdc_photon/zdc_photon_{P}GeV.hepmc",
                 warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
-        params:
-                PHYSICS_LIST="FTFP_BERT"
+                geometry_lib=find_epic_libraries(),
         output:
-                SIM_FILE="sim_output/zdc_photon/{DETECTOR_CONFIG}_sim_zdc_photon_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_photon/{DETECTOR_CONFIG}_sim_zdc_photon_{P}GeV_{INDEX}.edm4hep.root",
+        params:
+                N_EVENTS=200,
+                PHYSICS_LIST="FTFP_BERT",
+                DETECTOR_PATH=os.environ["DETECTOR_PATH"],
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                DD4HEP_HASH=get_spack_package_hash("dd4hep"),
+                NPSIM_HASH=get_spack_package_hash("npsim"),
+        cache: True
         shell:
                 """
 # Running simulation
-NEVENTS_SIM=200
 npsim \
-   --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
+   --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
    --physicsList {params.PHYSICS_LIST} \
-   --skipNEvents $(( $NEVENTS_SIM * {wildcards.INDEX} )) \
-   --numberOfEvents $NEVENTS_SIM \
+   --skipNEvents $(( {params.N_EVENTS} * {wildcards.INDEX} )) \
+   --numberOfEvents {params.N_EVENTS} \
    --inputFiles {input.GEN_FILE} \
    --outputFile {output.SIM_FILE}
 """
@@ -39,10 +45,15 @@ rule zdc_photon_recon:
                 SIM_FILE="sim_output/zdc_photon/{DETECTOR_CONFIG}_sim_zdc_photon_{P}GeV_{INDEX}.edm4hep.root"
         output:
                 REC_FILE="sim_output/zdc_photon/{DETECTOR_CONFIG}_rec_zdc_photon_{P}GeV_{INDEX}.edm4eic.root"
+        params:
+                N_EVENTS=200,
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                EICRECON_HASH=get_spack_package_hash("eicrecon"),
+        cache: True
         shell:
                 """
-NEVENTS_REC=200
-eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Pdd4hep:xml_files=$DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml -Ppodio:output_collections=MCParticles,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,HcalFarForwardZDCSubcellHits -Pjana:nevents=$NEVENTS_REC
+env DETECTOR_CONFIG={params.DETECTOR_CONFIG} \
+  eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Ppodio:output_collections=MCParticles,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,HcalFarForwardZDCSubcellHits -Pjana:nevents={params.N_EVENTS}
 """
 
 rule zdc_photon_analysis:
diff --git a/benchmarks/zdc_pi0/Snakefile b/benchmarks/zdc_pi0/Snakefile
index 7c82f743cb2506e15fbb48a359511c184824a08f..320a20f31c6ea99992a8936bca6f79083789afc8 100644
--- a/benchmarks/zdc_pi0/Snakefile
+++ b/benchmarks/zdc_pi0/Snakefile
@@ -1,32 +1,38 @@
 rule zdc_pi0_generate:
         input:
                 script="benchmarks/zdc_pi0/analysis/gen_pi0_decay.cxx",
-        params:
-                NEVENTS_GEN=1000,
         output:
-                GEN_FILE="sim_output/zdc_pi0/zdc_pi0_{P}GeV.hepmc"
+                GEN_FILE="sim_output/zdc_pi0/zdc_pi0_{P}GeV.hepmc",
+        params:
+                N_EVENTS=1000,
         shell:
                 """
 mkdir -p sim_output/zdc_pi0
-root -l -b -q '{input.script}({params.NEVENTS_GEN},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
+root -l -b -q '{input.script}({params.N_EVENTS},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
 """
 
 rule zdc_pi0_simulate:
         input:
                 GEN_FILE="sim_output/zdc_pi0/zdc_pi0_{P}GeV.hepmc",
                 warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
-        params:
-                PHYSICS_LIST="FTFP_BERT"
+                geometry_lib=find_epic_libraries(),
         output:
-                SIM_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_sim_zdc_pi0_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_sim_zdc_pi0_{P}GeV_{INDEX}.edm4hep.root",
+        params:
+                N_EVENTS=200,
+                PHYSICS_LIST="FTFP_BERT",
+                DETECTOR_PATH=os.environ["DETECTOR_PATH"],
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                DD4HEP_HASH=get_spack_package_hash("dd4hep"),
+                NPSIM_HASH=get_spack_package_hash("npsim"),
+        cache: True
         shell:
                 """
-NEVENTS_SIM=200
 # Running simulation
 npsim \
-   --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
-   --skipNEvents $(( $NEVENTS_SIM * {wildcards.INDEX} )) \
-   --numberOfEvents $NEVENTS_SIM \
+   --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
+   --skipNEvents $(( {params.N_EVENTS} * {wildcards.INDEX} )) \
+   --numberOfEvents {params.N_EVENTS} \
    --physicsList {params.PHYSICS_LIST} \
    --inputFiles {input.GEN_FILE} \
    --outputFile {output.SIM_FILE}
@@ -34,13 +40,18 @@ npsim \
 
 rule zdc_pi0_recon:
         input:
-                SIM_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_sim_zdc_pi0_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_sim_zdc_pi0_{P}GeV_{INDEX}.edm4hep.root",
         output:
-                REC_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_rec_zdc_pi0_{P}GeV_{INDEX}.edm4eic.root"
+                REC_FILE="sim_output/zdc_pi0/{DETECTOR_CONFIG}_rec_zdc_pi0_{P}GeV_{INDEX}.edm4eic.root",
+        params:
+                N_EVENTS=200,
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                EICRECON_HASH=get_spack_package_hash("eicrecon"),
+        cache: True
         shell:
                 """
-NEVENTS_REC=200
-eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Pdd4hep:xml_files=$DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml -Ppodio:output_collections=MCParticles,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,HcalFarForwardZDCSubcellHits  -Pjana:nevents=$NEVENTS_REC
+env DETECTOR_CONFIG={params.DETECTOR_CONFIG} \
+  eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Ppodio:output_collections=MCParticles,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,HcalFarForwardZDCSubcellHits -Pjana:nevents={params.N_EVENTS}
 """
 
 rule zdc_pi0_analysis:
diff --git a/benchmarks/zdc_sigma/Snakefile b/benchmarks/zdc_sigma/Snakefile
index 1f93e2754ba1e8d279b8bec2cbd236d3e0b18301..b7836e82ca1bf944566e099e6720a5a2b444e9ec 100644
--- a/benchmarks/zdc_sigma/Snakefile
+++ b/benchmarks/zdc_sigma/Snakefile
@@ -1,31 +1,37 @@
 rule zdc_sigma_generate:
         input:
                 script="benchmarks/zdc_sigma/analysis/gen_sigma_decay.cxx",
-        params:
-                NEVENTS_GEN=100000,
         output:
-                GEN_FILE="sim_output/zdc_sigma/sigma_decay_{P}GeV.hepmc"
+                GEN_FILE="sim_output/zdc_sigma/sigma_decay_{P}GeV.hepmc",
+        params:
+                N_EVENTS=100000,
         shell:
                 """
-root -l -b -q '{input.script}({params.NEVENTS_GEN},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
+root -l -b -q '{input.script}({params.N_EVENTS},0,"{output.GEN_FILE}",{wildcards.P},{wildcards.P})'
 """
 
 rule zdc_sigma_simulate:
         input:
                 GEN_FILE="sim_output/zdc_sigma/sigma_decay_{P}GeV.hepmc",
                 warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
-        params:
-                PHYSICS_LIST="FTFP_BERT"
+                geometry_lib=find_epic_libraries(),
         output:
-                SIM_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_sim_sigma_dec_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_sim_sigma_dec_{P}GeV_{INDEX}.edm4hep.root",
+        params:
+                N_EVENTS=200,
+                PHYSICS_LIST="FTFP_BERT",
+                DETECTOR_PATH=os.environ["DETECTOR_PATH"],
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                DD4HEP_HASH=get_spack_package_hash("dd4hep"),
+                NPSIM_HASH=get_spack_package_hash("npsim"),
+        cache: True
         shell:
                 """
-NEVENTS_SIM=200
 # Running simulation
 npsim \
-   --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
-   --skipNEvents $(( $NEVENTS_SIM * {wildcards.INDEX} )) \
-   --numberOfEvents $NEVENTS_SIM \
+   --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
+   --skipNEvents $(( {params.N_EVENTS} * {wildcards.INDEX} )) \
+   --numberOfEvents {params.N_EVENTS} \
    --physicsList {params.PHYSICS_LIST} \
    --inputFiles {input.GEN_FILE} \
    --outputFile {output.SIM_FILE}
@@ -33,13 +39,18 @@ npsim \
 
 rule zdc_sigma_recon:
         input:
-                SIM_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_sim_sigma_dec_{P}GeV_{INDEX}.edm4hep.root"
+                SIM_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_sim_sigma_dec_{P}GeV_{INDEX}.edm4hep.root",
         output:
-                REC_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_rec_sigma_dec_{P}GeV_{INDEX}.edm4eic.root"
+                REC_FILE="sim_output/zdc_sigma/{DETECTOR_CONFIG}_rec_sigma_dec_{P}GeV_{INDEX}.edm4eic.root",
+        params:
+                N_EVENTS=200,
+                DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
+                EICRECON_HASH=get_spack_package_hash("eicrecon"),
+        cache: True
         shell:
                 """
-NEVENTS_REC=200
-eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Pdd4hep:xml_files=$DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml -Ppodio:output_collections=MCParticles,HcalFarForwardZDCClusters,HcalFarForwardZDCRecHits,HcalFarForwardZDCSubcellHits  -Pjana:nevents=$NEVENTS_REC
+env DETECTOR_CONFIG={params.DETECTOR_CONFIG} \
+  eicrecon {input.SIM_FILE} -Ppodio:output_file={output.REC_FILE} -Ppodio:output_collections=MCParticles,HcalFarForwardZDCClusters,HcalFarForwardZDCRecHits,HcalFarForwardZDCSubcellHits -Pjana:nevents={params.N_EVENTS}
 """
 
 rule zdc_sigma_analysis: