diff --git a/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx b/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx
index 69e4c641003f43c66adba91cd304dfca599ee792..925141dfcb9d3894fada3c0289c664cf10fed530 100644
--- a/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx
+++ b/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx
@@ -9,6 +9,10 @@
 #include "dd4pod/Geant4ParticleCollection.h"
 #include "dd4pod/CalorimeterHitCollection.h"
 
+#include <benchmark.h>
+#include <mt.h>
+#include <util.h>
+
 #include "TCanvas.h"
 #include "TStyle.h"
 #include "TMath.h"
@@ -32,6 +36,19 @@ void emcal_barrel_pions_analysis(const char* input_fname = "sim_output/sim_emcal
   gStyle->SetPadLeftMargin(0.14);
   gStyle->SetPadRightMargin(0.14);
 
+  //Tests
+  std::string test_tag = "Barrel_emcal_pi0";
+  //TODO: Change test_tag to something else
+  std:string detector = "Barrel_emcal";
+  double resolutionTarget = 0.1;
+  eic::util::Test pion0_Energy_resolution{
+      {{"name", fmt::format("{}_energy_resolution", test_tag)},
+       {"title", "Pion0 Energy resolution"},
+       {"description",
+        fmt::format("Pion0 energy resolution with {}, estimated using a Gaussian fit.", detector)},
+       {"quantity", "resolution (in %)"},
+       {"target", std::to_string(resolutionTarget)}}};
+
   ROOT::EnableImplicitMT();
   ROOT::RDataFrame d0("events", input_fname);
 
@@ -70,6 +87,8 @@ void emcal_barrel_pions_analysis(const char* input_fname = "sim_output/sim_emcal
 	      .Define("nhits", nhits, {"EcalBarrelHits"})
 	      .Define("Esim",  Esim,  {"EcalBarrelHits"})
 	      .Define("fsam",  fsam,  {"Esim","Ethr"})
+        .Define("dE", "Ethr-Esim")
+        .Define("dE_rel", "(Ethr - Esim)/Esim")
 	      ;
 
   // Define Histograms
@@ -77,6 +96,7 @@ void emcal_barrel_pions_analysis(const char* input_fname = "sim_output/sim_emcal
   auto hNhits = d1.Histo1D({"hNhits", "Number of hits per events; Number of hits; Events", 100,  0.0, 2000.0}, "nhits");
   auto hEsim  = d1.Histo1D({"hEsim",  "Energy Deposit; Energy Deposit [GeV]; Events",      100,  0.0,    1.0}, "Esim");
   auto hfsam  = d1.Histo1D({"hfsam",  "Sampling Fraction; Sampling Fraction; Events",      100,  0.0,    0.1}, "fsam");
+ 
 
   // Event Counts
   auto nevents_thrown      = d1.Count();
@@ -121,4 +141,40 @@ void emcal_barrel_pions_analysis(const char* input_fname = "sim_output/sim_emcal
   hfsam->DrawClone();
   c4->SaveAs("results/emcal_barrel_pions_fsam.png");
   c4->SaveAs("results/emcal_barrel_pions_fsam.pdf");
+
+  //Energy Resolution Work
+  auto hdE     = d1.Histo1D({"hdE",      "dE; dE[GeV]; Events",              100, -7.5,    7.5}, "dE");
+  auto hdE_rel = d1.Histo1D({"hdE_rel",  "dE Relative; dE Relative; Events", 100, -7.5,    7.5}, "dE_rel");
+  auto f1      = hdE_rel->Fit("gaus", "S");
+  const double* res = f1->GetParams();
+  if (res[2] <= resolutionTarget) {
+    pion0_energy_resolution.pass(res[2]);
+  } else {
+    pion0_energy_resolution.fail(res[2]);
+  }
+
+  auto *cdE = new TCanvas("cdE", "cdE", 700, 500);
+  cDE->SetLogy(1);
+  hdE->GetYaxis()->SetTitleOffset(1.4);
+  hdE->SetLineWidth(2);
+  hdE->SetLineColor(kBlue);
+  hdE->DrawClone();
+  cdE->SaveAs("results/emcal_barrel_pi0_dE.png");
+  cdE->SaveAs("results/emcal_barrel_pi0_dE.pdf");
+
+  auto *cdE_rel = new TCanvas("cdE_rel", "cdE_rel", 700, 500);
+  cdE_rel->SetLogy(1);
+  hdE_rel->GetYaxis()->SetTitleOffset(1.4);
+  hdE_rel->SetLineWidth(2);
+  hdE_rel->SetLineColor(kBlue);
+  f1->SetLineWidth(2);
+  f1->SetLineColor(kRed);
+  hdE_rel->DrawClone();
+  f1->Draw("SAME");
+  cdE_rel->SaveAs("results/emcal_barrel_pi0_dE_rel.png");
+  cdE_rel->SaveAs("results/emcal_barrel_pi0_dE_rel.pdf");
+
+  eic::util::write_test({pion0_Energy_resolution}, fmt::format("{}_pions.json", detector));
+
+
 }