diff --git a/.gitignore b/.gitignore
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aa8b5a9b9b9ee5e9b2b549a22ad448633a23efb3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,3 @@
+results/*
+data/*
+datasets/*
diff --git a/calorimeters/zdc_neutrons_reader.cxx b/calorimeters/zdc_neutrons_reader.cxx
index d6e8c5ee33ce55a8a9b7c5aa9d906c13a7de987b..fcd763e99364bbe758a2bfb93e9bd72191ad948c 100644
--- a/calorimeters/zdc_neutrons_reader.cxx
+++ b/calorimeters/zdc_neutrons_reader.cxx
@@ -5,23 +5,35 @@
 
 #include "TH1F.h"
 #include <iostream>
+#include <cstdlib>
 using namespace HepMC3;
 
 void zdc_neutrons_reader(){
 
   //-------------------------------------
   ReaderAscii hepmc_input("data/neutrons_zdc.hepmc");
+  if( hepmc_input.failed() ) {
+    std::cerr << " could not find data file\n";
+    std::quick_exit(1);
+  }
+
+
   int        events_parsed = 0;
   GenEvent   evt(Units::GEV, Units::MM);
 
   TH1F* h_neutron_energy = new TH1F("n energy","; E [GeV]",100,0,200);
 
+  // Read event from input file
+  hepmc_input.read_event(evt);
+  // If reading failed before loop then fail hard
+  // because the data wasn't found.
+  if( hepmc_input.failed() ) {
+    std::cerr << " could not find first event\n";
+    std::quick_exit(1);
+  }
+
   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() ) {
@@ -32,6 +44,7 @@ void zdc_neutrons_reader(){
     }
     evt.clear();
     events_parsed++;
+    hepmc_input.read_event(evt);
   }
   std::cout << "Events parsed and written: " << events_parsed << std::endl;