diff --git a/src/docs/part5/reconstruction_analysis.md b/src/docs/part5/reconstruction_analysis.md
index 1245a5bcbce0653b5f96525e30de65c1f4971bdd..304505c79b2d4bb955de1fbb1322789db3f13a6d 100644
--- a/src/docs/part5/reconstruction_analysis.md
+++ b/src/docs/part5/reconstruction_analysis.md
@@ -250,6 +250,35 @@ TNetXNGFile**           root://sci-xrootd.jlab.org//osgpool/eic/ATHENA/RECO/SING
   KEY: TTree    events;1        Events tree
   KEY: TTree    metadata;1      Metadata tree
 events->Draw("ReconstructedParticlesInitFromTruth.p.px")
-events->Draw("EcalBarrelClusters.energy")
-events->Draw("EcalBarrelClusters.polar.theta:EcalBarrelClusters.polar.phi")
+events->Draw("EcalBarrelClusters.polar.phi:EcalBarrelClusters.polar.theta", "EcalBarrelClusters.edep", "colz")
+```
+
+## Analysis of full simulation reconstruction output with RDataFrame commands
+
+```console
+auto momenta_from_reconstruction(const std::vector<eic::ReconstructedParticleData>& parts) {
+  std::vector<ROOT::Math::PxPyPzEVector> momenta{parts.size()};
+  std::transform(parts.begin(), parts.end(), momenta.begin(), [](const auto& part) {
+    return ROOT::Math::PxPyPzEVector{part.p.x, part.p.y, part.p.z, part.energy};
+  });
+  return momenta;
+}
+
+auto Q2(const std::vector<ROOT::Math::PxPyPzEVector>& mom) {
+  std::vector<double> Q2Vec(mom.size() );
+  ROOT::Math::PxPyPzEVector beamMom = {0, 0, 18, 18};
+  std::transform(mom.begin(), mom.end(), Q2Vec.begin(), [beamMom](const auto& part) {
+    return -(part - beamMom).M2();
+  });
+  return Q2Vec;
+}
+
+ROOT::RDataFrame d("events", "s3https://dtn01.sdcc.bnl.gov:9000/eictest/ATHENA/RECO/SINGLE/e-/1GeV/45to135deg/e-_1GeV_45to135deg.0001.root");
+
+auto d0 = d.Define("p", momenta_from_reconstruction, {"ReconstructedParticles"}).Define("Q2", Q2, {"p"});
+
+auto h_Q2_sim = d0.Histo1D({"h_Q2_sim", "; GeV; counts", 100, -5, 25}, "Q2");
+auto& h1_Q2_sim = *h_Q2_sim;
+h1_Q2_sim.DrawClone("hist");
+
 ```