Index: classes/DelphesLHEFReader.cc
===================================================================
--- classes/DelphesLHEFReader.cc	(revision 0a0a5ef3f81a80412f9c4c52dcf645e97085cefc)
+++ classes/DelphesLHEFReader.cc	(revision 0dc0eebc77702a17bd3c07fd223068f3c962648d)
@@ -41,5 +41,5 @@
 DelphesLHEFReader::DelphesLHEFReader() :
   fInputFile(0), fBuffer(0), fPDG(0),
-  fEventCounter(-1), fParticleCounter(-1)
+  fEventReady(kFALSE), fEventCounter(-1), fParticleCounter(-1)
 {
   fBuffer = new char[kBufferSize];
@@ -66,6 +66,8 @@
 void DelphesLHEFReader::Clear()
 {
+  fEventReady = kFALSE;
   fEventCounter = -1;
   fParticleCounter = -1;
+  fRwgtList.clear();
 }
 
@@ -74,5 +76,5 @@
 bool DelphesLHEFReader::EventReady()
 {
-  return (fEventCounter == 0) && (fParticleCounter == 0);
+  return fEventReady;
 }
 
@@ -85,8 +87,8 @@
 {
   int rc;
+  char *pch;
+  double weight;
 
   if(!fgets(fBuffer, kBufferSize, fInputFile)) return kFALSE;
-
-  DelphesStream bufferStream(fBuffer);
 
   if(strstr(fBuffer, "<event>"))
@@ -97,4 +99,6 @@
   else if(fEventCounter > 0)
   {
+    DelphesStream bufferStream(fBuffer);
+
     rc = bufferStream.ReadInt(fParticleCounter)
       && bufferStream.ReadInt(fProcessID)
@@ -114,4 +118,6 @@
   else if(fParticleCounter > 0)
   {
+    DelphesStream bufferStream(fBuffer);
+
     rc = bufferStream.ReadInt(fPID)
       && bufferStream.ReadInt(fStatus)
@@ -137,4 +143,28 @@
     --fParticleCounter;
   }
+  else if(strstr(fBuffer, "<wgt"))
+  {
+    pch = strstr(fBuffer, ">");
+    if(!pch)
+    {
+      cerr << "** ERROR: " << "invalid weight format" << endl;
+      return kFALSE;
+    }
+
+    DelphesStream bufferStream(pch + 1);
+    rc = bufferStream.ReadDbl(weight);
+
+    if(!rc)
+    {
+      cerr << "** ERROR: " << "invalid weight format" << endl;
+      return kFALSE;
+    }
+
+    fRwgtList.push_back(weight);
+  }
+  else if(strstr(fBuffer, "</event>"))
+  {
+    fEventReady = kTRUE;
+  }
 
   return kTRUE;
@@ -163,4 +193,19 @@
 //---------------------------------------------------------------------------
 
+void DelphesLHEFReader::AnalyzeRwgt(ExRootTreeBranch *branch)
+{
+  Weight *element;
+  vector<double>::const_iterator itRwgtList;
+
+  for(itRwgtList = fRwgtList.begin(); itRwgtList != fRwgtList.end(); ++itRwgtList)
+  {
+    element = static_cast<Weight *>(branch->NewEntry());
+
+    element->Weight = *itRwgtList;
+  }
+}
+
+//---------------------------------------------------------------------------
+
 void DelphesLHEFReader::AnalyzeParticle(DelphesFactory *factory,
   TObjArray *allParticleOutputArray,
Index: classes/DelphesLHEFReader.h
===================================================================
--- classes/DelphesLHEFReader.h	(revision 0a0a5ef3f81a80412f9c4c52dcf645e97085cefc)
+++ classes/DelphesLHEFReader.h	(revision 0dc0eebc77702a17bd3c07fd223068f3c962648d)
@@ -16,4 +16,6 @@
 
 #include <stdio.h>
+
+#include <vector>
 
 class TObjArray;
@@ -43,4 +45,6 @@
     TStopwatch *readStopWatch, TStopwatch *procStopWatch);
 
+  void AnalyzeRwgt(ExRootTreeBranch *branch);
+
 private:
 
@@ -56,4 +60,6 @@
   TDatabasePDG *fPDG;
 
+  bool fEventReady;
+
   int fEventCounter;
 
@@ -63,4 +69,6 @@
   int fPID, fStatus, fM1, fM2, fC1, fC2;
   double fPx, fPy, fPz, fE, fMass;
+  
+  std::vector<double> fRwgtList;
 };
 
Index: readers/DelphesLHEF.cpp
===================================================================
--- readers/DelphesLHEF.cpp	(revision 0a0a5ef3f81a80412f9c4c52dcf645e97085cefc)
+++ readers/DelphesLHEF.cpp	(revision 0dc0eebc77702a17bd3c07fd223068f3c962648d)
@@ -45,5 +45,5 @@
   TStopwatch readStopWatch, procStopWatch;
   ExRootTreeWriter *treeWriter = 0;
-  ExRootTreeBranch *branchEvent = 0;
+  ExRootTreeBranch *branchEvent = 0, *branchRwgt = 0;
   ExRootConfReader *confReader = 0;
   Delphes *modularDelphes = 0;
@@ -85,4 +85,5 @@
 
     branchEvent = treeWriter->NewBranch("Event", LHEFEvent::Class());
+    branchRwgt = treeWriter->NewBranch("Rwgt", Weight::Class());
 
     confReader = new ExRootConfReader;
@@ -177,4 +178,5 @@
 
             reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch);
+            reader->AnalyzeRwgt(branchRwgt);
 
             treeWriter->Fill();
