Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 9387)
+++ trunk/MagicSoft/Mars/Changelog	(revision 9388)
@@ -22,4 +22,10 @@
    * mreport/MReportCamera.cc:
      - fixed a problem if the HVFIL section is empty
+
+   * merpp.cc:
+     - added --dev-null option to Usage output
+
+   * mjobs/MJMerpp.[h,cc]:
+     - fixed operation in --dev-null mode
 
 
Index: trunk/MagicSoft/Mars/merpp.cc
===================================================================
--- trunk/MagicSoft/Mars/merpp.cc	(revision 9387)
+++ trunk/MagicSoft/Mars/merpp.cc	(revision 9388)
@@ -110,4 +110,5 @@
     gLog << "   --only=Name               Read only reports described by MReportName. See the" << endl;
     gLog << "                                mreport-directory for available classes." << endl;
+    gLog << "   --dev-null                Suppress output of files (for test purpose)" << endl;
     gLog << endl;
     gLog << "   --version, -V             Show startup message with version number" << endl;
Index: trunk/MagicSoft/Mars/mjobs/MJMerpp.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJMerpp.cc	(revision 9387)
+++ trunk/MagicSoft/Mars/mjobs/MJMerpp.cc	(revision 9388)
@@ -67,17 +67,18 @@
 }
 
-MFilter *MJMerpp::SetupCurrents(MReportFileReadCC &read, MWriteRootFile &write) const
+void MJMerpp::SetupCurrents(MReportFileReadCC &read, MWriteRootFile *write) const
 {
     read.SetHasNoHeader();
     read.AddToList("MReportCurrents");
 
-    write.AddContainer("MTimeCurrents",      "Currents");
-    write.AddContainer("MCameraDC",          "Currents");
-    write.AddContainer("MReportCurrents",    "Currents");
-
-    return 0;
-}
-
-MFilter *MJMerpp::SetupReports(MReportFileReadCC &read, MWriteRootFile &write) const
+    if (!write)
+        return;
+
+    write->AddContainer("MTimeCurrents",      "Currents");
+    write->AddContainer("MCameraDC",          "Currents");
+    write->AddContainer("MReportCurrents",    "Currents");
+}
+
+MFilter *MJMerpp::SetupReports(MReportFileReadCC &read, MWriteRootFile *write) const
 {
     read.SetTelescope(fTelescope);
@@ -95,37 +96,43 @@
     // AddTree(read, "DAQ",  fOnly);
 
+    if (fReportRun!=(UInt_t)-1)
+        read.AddToList("MReportRun");
+
+    if (!write)
+        return 0;
+
     const Bool_t required = fOnly.IsNull();
-    write.AddContainer("MReportCamera",      "Camera",     required);
-    write.AddContainer("MTimeCamera",        "Camera",     required);
-    write.AddContainer("MCameraAUX",         "Camera",     required);
-    write.AddContainer("MCameraCalibration", "Camera",     required);
-    write.AddContainer("MCameraCooling",     "Camera",     required);
-    write.AddContainer("MCameraActiveLoad",  "Camera",     required);
-    write.AddContainer("MCameraHV",          "Camera",     required);
-    write.AddContainer("MCameraDC",          "Camera",     required);
-    write.AddContainer("MCameraLV",          "Camera",     required);
-    write.AddContainer("MCameraLids",        "Camera",     required);
-    write.AddContainer("MReportTrigger",     "Trigger",    required);
-    write.AddContainer("MTimeTrigger",       "Trigger",    required);
-    write.AddContainer("MTriggerBit",        "Trigger",    required);
-    write.AddContainer("MTriggerIPR",        "Trigger",    required);
-    write.AddContainer("MTriggerCell",       "Trigger",    required);
-    write.AddContainer("MTriggerPrescFact",  "Trigger",    required);
-    write.AddContainer("MTriggerLiveTime",   "Trigger",    required);
-    write.AddContainer("MReportDrive",       "Drive",      required);
-    write.AddContainer("MTimeDrive",         "Drive",      required);
-    write.AddContainer("MCameraTH",          "Rec",        required);
-    write.AddContainer("MCameraTD",          "Rec",        required);
-    write.AddContainer("MCameraRecTemp",     "Rec",        required);
-    write.AddContainer("MReportRec",         "Rec",        required);
-    write.AddContainer("MTimeRec",           "Rec",        required);
-    write.AddContainer("MReportCC",          "CC",         required);
-    write.AddContainer("MTimeCC",            "CC",         required);
-    write.AddContainer("MReportStarguider",  "Starguider", required);
-    write.AddContainer("MTimeStarguider",    "Starguider", required);
-    write.AddContainer("MReportPyrometer",   "Pyrometer",  required);
-    write.AddContainer("MTimePyrometer",     "Pyrometer",  required);
-    // write.AddContainer("MReportDAQ",         "DAQ");
-    // write.AddContainer("MTimeDAQ",           "DAQ");
+    write->AddContainer("MReportCamera",      "Camera",     required);
+    write->AddContainer("MTimeCamera",        "Camera",     required);
+    write->AddContainer("MCameraAUX",         "Camera",     required);
+    write->AddContainer("MCameraCalibration", "Camera",     required);
+    write->AddContainer("MCameraCooling",     "Camera",     required);
+    write->AddContainer("MCameraActiveLoad",  "Camera",     required);
+    write->AddContainer("MCameraHV",          "Camera",     required);
+    write->AddContainer("MCameraDC",          "Camera",     required);
+    write->AddContainer("MCameraLV",          "Camera",     required);
+    write->AddContainer("MCameraLids",        "Camera",     required);
+    write->AddContainer("MReportTrigger",     "Trigger",    required);
+    write->AddContainer("MTimeTrigger",       "Trigger",    required);
+    write->AddContainer("MTriggerBit",        "Trigger",    required);
+    write->AddContainer("MTriggerIPR",        "Trigger",    required);
+    write->AddContainer("MTriggerCell",       "Trigger",    required);
+    write->AddContainer("MTriggerPrescFact",  "Trigger",    required);
+    write->AddContainer("MTriggerLiveTime",   "Trigger",    required);
+    write->AddContainer("MReportDrive",       "Drive",      required);
+    write->AddContainer("MTimeDrive",         "Drive",      required);
+    write->AddContainer("MCameraTH",          "Rec",        required);
+    write->AddContainer("MCameraTD",          "Rec",        required);
+    write->AddContainer("MCameraRecTemp",     "Rec",        required);
+    write->AddContainer("MReportRec",         "Rec",        required);
+    write->AddContainer("MTimeRec",           "Rec",        required);
+    write->AddContainer("MReportCC",          "CC",         required);
+    write->AddContainer("MTimeCC",            "CC",         required);
+    write->AddContainer("MReportStarguider",  "Starguider", required);
+    write->AddContainer("MTimeStarguider",    "Starguider", required);
+    write->AddContainer("MReportPyrometer",   "Pyrometer",  required);
+    write->AddContainer("MTimePyrometer",     "Pyrometer",  required);
+    // write->AddContainer("MReportDAQ",         "DAQ");
+    // write->AddContainer("MTimeDAQ",           "DAQ");
 
     if (fReportRun==(UInt_t)-1)
@@ -138,22 +145,23 @@
                            f1.Data(), f2.Data());
 
-    read.AddToList("MReportRun");
-
     MFilter *filter = new MFDataPhrase(f.Data());
-    write.SetFilter(filter);
+    write->SetFilter(filter);
     return filter;
 }
 
-void MJMerpp::SetupRaw(MRawFileRead &read, MWriteRootFile &write) const
+void MJMerpp::SetupRaw(MRawFileRead &read, MWriteRootFile *write) const
 {
     read.SetInterleave(fInterleave);
     read.SetForceMode(fForceProcessing);
 
-    write.AddContainer("MRawRunHeader",  "RunHeaders");
-    write.AddContainer("MTime",          "Events");
-    write.AddContainer("MRawEvtHeader",  "Events");
-    write.AddContainer("MRawEvtData",    "Events");
-    write.AddContainer("MRawEvtData2",   "Events");
-    write.AddContainer("MRawCrateArray", "Events");
+    if (!write)
+        return;
+
+    write->AddContainer("MRawRunHeader",  "RunHeaders");
+    write->AddContainer("MTime",          "Events");
+    write->AddContainer("MRawEvtHeader",  "Events");
+    write->AddContainer("MRawEvtData",    "Events");
+    write->AddContainer("MRawEvtData2",   "Events");
+    write->AddContainer("MRawCrateArray", "Events");
 }
 
@@ -205,4 +213,7 @@
     }
 
+    if (HasNullOut())
+        return kTRUE;
+
     const Bool_t fileexist = !gSystem->AccessPathName(fPathOut, kFileExists);
     const Bool_t writeperm = !gSystem->AccessPathName(fPathOut, kWritePermission);
@@ -233,6 +244,7 @@
     *fLog << inf;
     fLog->Separator(GetDescriptor());
-    *fLog << "In:  " << fPathIn << endl;;
-    *fLog << (fUpdate?"Upd":"Out") << ": " << fPathOut << endl;;
+    *fLog << "In:  " << fPathIn << endl;
+    if (!HasNullOut())
+        *fLog << (fUpdate?"Upd":"Out") << ": " << fPathOut << endl;;
     *fLog << endl;
 
@@ -276,5 +288,5 @@
     MTask          *read   = 0;
     MFilter        *filter = 0;
-    MWriteRootFile *write  = new MWriteRootFile(fPathOut, option, "Magic root-file", fCompression);
+    MWriteRootFile *write  = HasNullOut() ? 0 : new MWriteRootFile(fPathOut, option, "Magic root-file", fCompression);
 
     if (isreport || isdc)
@@ -285,7 +297,7 @@
 
         if (isdc)
-            filter = SetupCurrents(*r, *write);
+            SetupCurrents(*r, write);
         else
-            filter = SetupReports(*r, *write);
+            filter = SetupReports(*r, write);
 
         read = r;
@@ -294,5 +306,5 @@
     {
         MRawFileRead *r = new MRawFileRead(fPathIn);
-        SetupRaw(*r, *write);
+        SetupRaw(*r, write);
         read = r;
     }
@@ -302,5 +314,5 @@
         tasks.AddToList(filter);
 
-    if (!HasNullOut())
+    if (write)
         tasks.AddToList(write);
 
Index: trunk/MagicSoft/Mars/mjobs/MJMerpp.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJMerpp.h	(revision 9387)
+++ trunk/MagicSoft/Mars/mjobs/MJMerpp.h	(revision 9388)
@@ -42,8 +42,7 @@
     void AddTree(MReportFileReadCC &read, const TString &rep, const TString &only) const;
 
-    MFilter *SetupCurrents(MReportFileReadCC &read, MWriteRootFile &write) const;
-    MFilter *SetupReports(MReportFileReadCC &read, MWriteRootFile &write) const;
-
-    void SetupRaw(MRawFileRead &read, MWriteRootFile &write) const;
+    void     SetupCurrents(MReportFileReadCC &read, MWriteRootFile *write) const;
+    MFilter *SetupReports(MReportFileReadCC &read, MWriteRootFile *write) const;
+    void     SetupRaw(MRawFileRead &read, MWriteRootFile *write) const;
 
     Bool_t GetTimeFromFile();
