Index: readers/DelphesHepMC.cpp
===================================================================
--- readers/DelphesHepMC.cpp	(revision d7d2da362406b9e37fdf238970417c94779b54b0)
+++ readers/DelphesHepMC.cpp	(revision 4b17b1e91cc2f12701a66696d903e14ce3ae2171)
@@ -51,5 +51,5 @@
   TObjArray *stableParticleOutputArray = 0, *allParticleOutputArray = 0, *partonOutputArray = 0;
   DelphesHepMCReader *reader = 0;
-  Int_t i;
+  Int_t i, maxEvents, skipEvents;
   Long64_t length, eventCounter;
 
@@ -88,4 +88,17 @@
     confReader = new ExRootConfReader;
     confReader->ReadFile(argv[1]);
+
+    maxEvents = confReader->GetInt("::MaxEvents", 0);
+    skipEvents = confReader->GetInt("::SkipEvents", 0);
+
+    if(maxEvents < 0)
+    {
+      throw runtime_error("MaxEvents must be zero or positive");
+    }
+
+    if(skipEvents < 0)
+    {
+      throw runtime_error("SkipEvents must be zero or positive");
+    }
 
     modularDelphes = new Delphes("Delphes");
@@ -146,5 +159,6 @@
       reader->Clear();
       readStopWatch.Start();
-      while(reader->ReadBlock(factory, allParticleOutputArray,
+      while((maxEvents <= 0 || eventCounter - skipEvents < maxEvents) &&
+        reader->ReadBlock(factory, allParticleOutputArray,
         stableParticleOutputArray, partonOutputArray) && !interrupted)
       {
@@ -154,13 +168,18 @@
 
           readStopWatch.Stop();
-          procStopWatch.Start();
-          modularDelphes->ProcessTask();
-          procStopWatch.Stop();
-
-          reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
-
-          treeWriter->Fill();
-
-          treeWriter->Clear();
+
+          if(eventCounter > skipEvents)
+          {
+            procStopWatch.Start();
+            modularDelphes->ProcessTask();
+            procStopWatch.Stop();
+
+            reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
+
+            treeWriter->Fill();
+
+            treeWriter->Clear();
+          }
+
           modularDelphes->Clear();
           reader->Clear();
Index: readers/DelphesLHEF.cpp
===================================================================
--- readers/DelphesLHEF.cpp	(revision d7d2da362406b9e37fdf238970417c94779b54b0)
+++ readers/DelphesLHEF.cpp	(revision 4b17b1e91cc2f12701a66696d903e14ce3ae2171)
@@ -51,5 +51,5 @@
   TObjArray *stableParticleOutputArray = 0, *allParticleOutputArray = 0, *partonOutputArray = 0;
   DelphesLHEFReader *reader = 0;
-  Int_t i;
+  Int_t i, maxEvents, skipEvents;
   Long64_t length, eventCounter;
 
@@ -88,4 +88,17 @@
     confReader = new ExRootConfReader;
     confReader->ReadFile(argv[1]);
+
+    maxEvents = confReader->GetInt("::MaxEvents", 0);
+    skipEvents = confReader->GetInt("::SkipEvents", 0);
+
+    if(maxEvents < 0)
+    {
+      throw runtime_error("MaxEvents must be zero or positive");
+    }
+
+    if(skipEvents < 0)
+    {
+      throw runtime_error("SkipEvents must be zero or positive");
+    }
 
     modularDelphes = new Delphes("Delphes");
@@ -146,5 +159,6 @@
       reader->Clear();
       readStopWatch.Start();
-      while(reader->ReadBlock(factory, allParticleOutputArray,
+      while((maxEvents <= 0 || eventCounter - skipEvents < maxEvents) &&
+        reader->ReadBlock(factory, allParticleOutputArray,
         stableParticleOutputArray, partonOutputArray) && !interrupted)
       {
@@ -154,13 +168,19 @@
 
           readStopWatch.Stop();
-          procStopWatch.Start();
-          modularDelphes->ProcessTask();
-          procStopWatch.Stop();
-
-          reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
-
-          treeWriter->Fill();
-
-          treeWriter->Clear();
+
+          if(eventCounter > skipEvents)
+          {
+            readStopWatch.Stop();
+            procStopWatch.Start();
+            modularDelphes->ProcessTask();
+            procStopWatch.Stop();
+
+            reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
+
+            treeWriter->Fill();
+
+            treeWriter->Clear();
+          }
+
           modularDelphes->Clear();
           reader->Clear();
Index: readers/DelphesSTDHEP.cpp
===================================================================
--- readers/DelphesSTDHEP.cpp	(revision d7d2da362406b9e37fdf238970417c94779b54b0)
+++ readers/DelphesSTDHEP.cpp	(revision 4b17b1e91cc2f12701a66696d903e14ce3ae2171)
@@ -51,5 +51,5 @@
   TObjArray *stableParticleOutputArray = 0, *allParticleOutputArray = 0, *partonOutputArray = 0;
   DelphesSTDHEPReader *reader = 0;
-  Int_t i;
+  Int_t i, maxEvents, skipEvents;
   Long64_t length, eventCounter;
 
@@ -88,4 +88,17 @@
     confReader = new ExRootConfReader;
     confReader->ReadFile(argv[1]);
+
+    maxEvents = confReader->GetInt("::MaxEvents", 0);
+    skipEvents = confReader->GetInt("::SkipEvents", 0);
+
+    if(maxEvents < 0)
+    {
+      throw runtime_error("MaxEvents must be zero or positive");
+    }
+
+    if(skipEvents < 0)
+    {
+      throw runtime_error("SkipEvents must be zero or positive");
+    }
 
     modularDelphes = new Delphes("Delphes");
@@ -146,5 +159,6 @@
       reader->Clear();
       readStopWatch.Start();
-      while(reader->ReadBlock(factory, allParticleOutputArray,
+      while((maxEvents <= 0 || eventCounter - skipEvents < maxEvents) &&
+        reader->ReadBlock(factory, allParticleOutputArray,
         stableParticleOutputArray, partonOutputArray) && !interrupted)
       {
@@ -154,13 +168,18 @@
 
           readStopWatch.Stop();
-          procStopWatch.Start();
-          modularDelphes->ProcessTask();
-          procStopWatch.Stop();
-
-          reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
-
-          treeWriter->Fill();
-
-          treeWriter->Clear();
+
+          if(eventCounter > skipEvents)
+          {
+            procStopWatch.Start();
+            modularDelphes->ProcessTask();
+            procStopWatch.Stop();
+
+            reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
+
+            treeWriter->Fill();
+
+            treeWriter->Clear();
+          }
+
           modularDelphes->Clear();
           reader->Clear();
