diff --git a/forward_ions_reader.cxx b/forward_ions_reader.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..a2886fdebdcced229bbfd74d9aed02da9e8d3eca
--- /dev/null
+++ b/forward_ions_reader.cxx
@@ -0,0 +1,44 @@
+#include "HepMC3/GenEvent.h"
+#include "HepMC3/ReaderAscii.h"
+#include "HepMC3/WriterAscii.h"
+#include "HepMC3/Print.h"
+
+#include "TH1F.h"
+#include <iostream>
+using namespace HepMC3;
+
+void forward_ions_reader(){
+
+  //-------------------------------------
+  ReaderAscii hepmc_input("data/forward_ions.hepmc");
+  int        events_parsed = 0;
+  GenEvent   evt(Units::GEV, Units::MM);
+
+  TH1F* h_neutron_energy = new TH1F("eta","; eta",100,0,10);
+
+  while(!hepmc_input.failed()) {
+    // Read event from input file
+    hepmc_input.read_event(evt);
+
+    // If reading failed - exit loop
+    if( hepmc_input.failed() ) break;
+
+    for(const auto& v : evt.vertices() ) {
+      for(const auto& p : v->particles_out() ) {
+        if(p->pid() == 2212) {
+          h_neutron_energy->Fill(p->momentum().eta());
+        }
+      }
+    }
+    evt.clear();
+    events_parsed++;
+  }
+  std::cout << "Events parsed and written: " << events_parsed << std::endl;
+
+  TCanvas* c = new TCanvas();
+  h_neutron_energy->Draw();
+  c->SaveAs("results/forward_ions_reader.png");
+  c->SaveAs("results/forward_ions_reader.pdf");
+}
+
+
diff --git a/results/forward_ions_reader.pdf b/results/forward_ions_reader.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6a7612828b868aa753d40760f7aa3a5a3e4f455e
Binary files /dev/null and b/results/forward_ions_reader.pdf differ
diff --git a/results/forward_ions_reader.png b/results/forward_ions_reader.png
new file mode 100644
index 0000000000000000000000000000000000000000..415d7548df1a2bc463f6f4a7b6fa1848ec907979
Binary files /dev/null and b/results/forward_ions_reader.png differ