Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 2708)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 2709)
@@ -21,4 +21,8 @@
    * mreport/Makefile, mreport/ReportLinkDef.h:
      - added MReportRun
+
+   * merpp.cc:
+     - added a first implementation to be able searching report
+       files for the run number
 
 
Index: /trunk/MagicSoft/Mars/merpp.cc
===================================================================
--- /trunk/MagicSoft/Mars/merpp.cc	(revision 2708)
+++ /trunk/MagicSoft/Mars/merpp.cc	(revision 2709)
@@ -21,4 +21,7 @@
 #include "MRawEvtHeader.h"
 #include "MRawCrateArray.h"
+
+#include "MFilterList.h"
+#include "MFDataMember.h"
 
 using namespace std;
@@ -70,4 +73,5 @@
     gLog << "     --start=yyyy-mm-dd/hh:mm:ss.mmm: Start event time for merpping report files" << endl;
     gLog << "     --stop=yyyy-mm-dd/hh:mm:ss.mmm:  Stop  event time for merpping report files" << endl;
+    gLog << "     --run=#:                         Only merpp data corresponding to this run number" << endl;
     gLog << "     -?/-h: This help" << endl << endl;
     gLog << "   REMARK: At the moment you can process a .raw _or_ a .rep file, only!" << endl << endl;
@@ -115,4 +119,6 @@
     kTimeStop.SetName("MTimeStop");
 
+    const Int_t kRunNumber = arg.HasOption("--run=") ? arg.GetIntAndRemove("--run=") : -1;
+
     if (!kTimeStart)
         cout << "No start time!" << endl;
@@ -219,28 +225,11 @@
     // be created by MRawFileRead::PreProcess
     //
-    MTask *read  = 0;
-    MTask *write = 0;
+    MTask       *read   = 0;
+    MFilterList *filter = 0;
+    MTask       *write  = 0;
 
     const TString option(kUpdate ? "UPDATE" : "RECREATE");
     if (isreport || isdc)
     {
-        MReportFileRead *r = new MReportFileRead(kNamein);
-        r->SetTimeStart(kTimeStart);
-        r->SetTimeStop(kTimeStop);
-        if (isdc)
-        {
-            r->SetHasNoHeader();
-            r->AddToList("MReportCurrents");
-        }
-        else
-        {
-            r->AddToList("MReportCC");
-            r->AddToList("MReportDAQ");
-            r->AddToList("MReportDrive");
-            r->AddToList("MReportCamera");
-            r->AddToList("MReportTrigger");
-        }
-        read = r;
-
         MWriteRootFile *w = new MWriteRootFile(kNameout, option, "Magic root-file", kComprlvl);
         if (isdc)
@@ -270,4 +259,32 @@
         }
         write = w;
+
+        MReportFileRead *r = new MReportFileRead(kNamein);
+        r->SetTimeStart(kTimeStart);
+        r->SetTimeStop(kTimeStop);
+        if (isdc)
+        {
+            r->SetHasNoHeader();
+            r->AddToList("MReportCurrents");
+        }
+        else
+        {
+            r->AddToList("MReportCC");
+            r->AddToList("MReportDAQ");
+            r->AddToList("MReportDrive");
+            r->AddToList("MReportCamera");
+            r->AddToList("MReportTrigger");
+            if (kRunNumber>0)
+            {
+                r->AddToList("MReportRun");
+                // FIXME: Too difficult!
+                filter = new MFilterList;
+                filter->SetOwner();
+                filter->AddToList(new MFDataMember("MReportRun.fRunNumber", '>', kRunNumber-0.5));
+                filter->AddToList(new MFDataMember("MReportRun.fRunNumber", '<', kRunNumber+0.5));
+                w->SetFilter(filter);
+            }
+        }
+        read = r;
     }
     else
@@ -278,4 +295,6 @@
 
     tasks.AddToList(read);
+    if (filter)
+        tasks.AddToList(filter);
     tasks.AddToList(write);
 
