Index: trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h
===================================================================
--- trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h	(revision 2604)
@@ -10,5 +10,4 @@
 #pragma link C++ class MReadReports+;
 #pragma link C++ class MReadMarsFile+;
-#pragma link C++ class MReadCurrents+;
 #pragma link C++ class MReadRflFile+;
 
Index: trunk/MagicSoft/Mars/mfileio/MCT1ReadPreProc.cc
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MCT1ReadPreProc.cc	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MCT1ReadPreProc.cc	(revision 2604)
@@ -905,6 +905,5 @@
     //  int   isecs_since_midday; // seconds passed since midday before sunset (JD of run start)
     //  int   isecfrac_200ns;     // fractional part of isecs_since_midday
-    fTime->SetCT1Time(event.isecfrac_200ns, event.isecs_since_midday);
-    fTime->SetDuration((Int_t)fRawRunHeader->GetMJD());
+    fTime->SetCT1Time((UInt_t)fRawRunHeader->GetMJD(), event.isecfrac_200ns, event.isecs_since_midday);
     fTime->SetReadyToSave();
 
Index: trunk/MagicSoft/Mars/mfileio/MReadCurrents.cc
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MReadCurrents.cc	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MReadCurrents.cc	(revision 2604)
@@ -223,5 +223,5 @@
     Int_t h, m, s, ms;
     *fIn >> h >> m >> s >> ms;
-    fTime->SetTime(h, m, s, ms*1000000);
+    fTime->Set(0, 0, 0, h, m, s, ms);
 
     for (int i=0; i<fNumPixel; i++)
Index: trunk/MagicSoft/Mars/mfileio/MReadReports.cc
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MReadReports.cc	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MReadReports.cc	(revision 2604)
@@ -82,5 +82,5 @@
 // Call SetOwner for fTrees and fChains
 //
-MReadReports::MReadReports()
+MReadReports::MReadReports() : fEnableAutoScheme(kFALSE)
 {
     fName  = "MRead";
@@ -140,4 +140,7 @@
     t->SetTitle(time?time:"");
 
+    if (!fEnableAutoScheme)
+        t->DisableAutoScheme();
+
     //FIXME!
     //t->DisableAutoScheme();
@@ -257,7 +260,4 @@
             MTime &t = **GetTime(c);
 
-            if (t.GetHour()<12)
-                t.SetTime((Byte_t)(t.GetHour()+24), t.GetMin(), t.GetSec(), t.GetNanoSec());
-
             if (i==0)
                 tmin = t;
@@ -276,14 +276,7 @@
 
         // FIXME: Use Stream ID and call CallProcess() ?
-        if (((MTask*)fTrees->GetList()->At(nmin))->CallProcess())
+        Bool_t rc = ((MTask*)fTrees->GetList()->At(nmin))->CallProcess();
+        if (rc)
         {
-            /*
-             *fLog << dbg << ((MReadTree*)fTrees->At(nmin))->GetTreeName() << " " << flush;
-
-             if (tmin.GetHour()>=24)
-             tmin.SetTime((Byte_t)(tmin.GetHour()-24), tmin.GetMin(), tmin.GetSec(), tmin.GetNanoSec());
-             tmin.Print();
-             */
-
             fList->SetStreamId(fTrees->GetList()->At(nmin)->GetName());
             return kTRUE;
@@ -292,6 +285,5 @@
         delete *GetTime(chain);
         delete  GetTime(chain);
-        // FIXME: Is it really deleted?
-        fChains->Remove(chain);
+        delete fChains->Remove(chain);
     }
 
Index: trunk/MagicSoft/Mars/mfileio/MReadReports.h
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MReadReports.h	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MReadReports.h	(revision 2604)
@@ -24,4 +24,6 @@
     MTask     *fList;   // pointer to the task list to set the stream id
 
+    Bool_t     fEnableAutoScheme;
+
     MTime** GetTime(TChain *c) const;
 
@@ -42,4 +44,6 @@
     void  PrintStatistics(const Int_t lvl=0, Bool_t title=kFALSE) const;
 
+    void  EnableAutoScheme(Bool_t e=kTRUE) { fEnableAutoScheme = e; }
+
     ClassDef(MReadReports, 0) // Reads events and reports from a root file ordered in time
 };
Index: trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc	(revision 2604)
@@ -192,5 +192,5 @@
 // is the name of the tree.
 //
-void MWriteRootFile::AddContainer(const char *cname, const char *tname, const char *ttitle)
+void MWriteRootFile::AddContainer(const char *cname, const char *tname, Bool_t must)
 {
     //
@@ -198,5 +198,5 @@
     // add the entry to the list.
     //
-    MRootFileBranch *entry = new MRootFileBranch(cname, tname, ttitle);
+    MRootFileBranch *entry = new MRootFileBranch(cname, tname, must);
     fBranches.AddLast(entry);
 
@@ -216,5 +216,5 @@
 //
 void MWriteRootFile::AddContainer(MParContainer *cont, const char *tname,
-                                  const char *ttitle)
+                                  Bool_t must)
 {
     //
@@ -222,5 +222,5 @@
     // add the entry to the list.
     //
-    MRootFileBranch *entry = new MRootFileBranch(cont, tname, ttitle);
+    MRootFileBranch *entry = new MRootFileBranch(cont, tname, must);
     fBranches.AddLast(entry);
 }
@@ -264,7 +264,15 @@
                 // No corresponding container is found
                 //
-                *fLog << err << "Cannot find parameter container '" << cname << "'." << endl;
-                return kFALSE;
+                if (entry->MustHave())
+                {
+                    *fLog << err << "Cannot find parameter container '" << cname << "'." << endl;
+                    return kFALSE;
+                }
+
+                *fLog << inf << "Unnecessary parameter container '" << cname << "' not found..." << endl;
+                delete fBranches.Remove(entry);
+                continue;
             }
+
             //
             // The container is found. Put the pointer into the entry.
@@ -276,7 +284,7 @@
         // Get container name, tree name and tree title of this entry.
         //
-        const char *cname  = cont->GetName();
-        const char *tname  = entry->GetName();
-        const char *ttitle = entry->GetTitle();
+        const char *cname = cont->GetName();
+        const char *tname = entry->GetName();
+        const TString ttitle(Form("Tree containing %s", cont->GetDescriptor()));
 
         //
@@ -301,5 +309,5 @@
             fOut->cd();
 
-            tree = new TTree(tname, ttitle ? ttitle : tname);
+            tree = new TTree(tname, ttitle);
             fTrees.AddLast(tree);
 
@@ -494,6 +502,6 @@
 
         out << ", \"" << entry->GetName() << "\"";
-        if ((TString)entry->GetTitle()!="")
-            out << ", \"" << entry->GetTitle() << "\"";
+        if (!entry->MustHave())
+            out << ", kFALSE";
 
         out <<");" << endl;
Index: trunk/MagicSoft/Mars/mfileio/MWriteRootFile.h
===================================================================
--- trunk/MagicSoft/Mars/mfileio/MWriteRootFile.h	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/MWriteRootFile.h	(revision 2604)
@@ -22,28 +22,30 @@
     TString        fContName;
 
-    void Init(const char *name, const char *title)
+    Bool_t         fMust;
+
+    void Init(const char *name, Bool_t must)
     {
         SetName(name?name:"");
-        SetTitle(title?title:"");
+        fMust = must;
     }
 
 public:
-    MRootFileBranch() : fTree(NULL), fBranch(NULL), fContainer(NULL)
+    MRootFileBranch() : fTree(NULL), fBranch(NULL), fContainer(NULL), fMust(0)
     {
-        Init(NULL, NULL);
+        Init(NULL, kFALSE);
         fContName = "";
     }
 
-    MRootFileBranch(const char *cname, const char *tname=NULL, const char *ttitle=NULL)
-        : fTree(NULL), fBranch(NULL), fContainer(NULL)
+    MRootFileBranch(const char *cname, const char *tname=NULL, Bool_t must=kFALSE)
+        : fTree(NULL), fBranch(NULL), fContainer(NULL), fMust(0)
     {
-        Init(tname, ttitle);
+        Init(tname, must);
         fContName = cname;
     }
 
-    MRootFileBranch(MParContainer *cont, const char *tname=NULL, const char *ttitle=NULL)
-        : fTree(NULL), fBranch(NULL), fContName("")
+    MRootFileBranch(MParContainer *cont, const char *tname=NULL, Bool_t must=kFALSE)
+        : fTree(NULL), fBranch(NULL), fContName(""), fMust(0)
     {
-        Init(tname, ttitle);
+        Init(tname, must);
         fContainer = cont;
     }
@@ -54,4 +56,5 @@
     TBranch       *GetBranch() const    { return fBranch; }
     const char    *GetContName() const  { return fContName; }
+    Bool_t         MustHave() const     { return fMust; }
 
     void SetContainer(MParContainer *cont) { fContainer = cont; }
@@ -98,8 +101,6 @@
 
 
-    void AddContainer(const char *cname,
-                      const char *tname=NULL, const char *ttitle=NULL);
-    void AddContainer(MParContainer *cont,
-                      const char *tname=NULL, const char *ttitle=NULL);
+    void AddContainer(const char *cname,   const char *tname=NULL, Bool_t must=kTRUE);
+    void AddContainer(MParContainer *cont, const char *tname=NULL, Bool_t must=kTRUE);
 
 
Index: trunk/MagicSoft/Mars/mfileio/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mfileio/Makefile	(revision 2590)
+++ trunk/MagicSoft/Mars/mfileio/Makefile	(revision 2604)
@@ -36,5 +36,4 @@
 	   MReadTree.cc \
            MReadReports.cc \
-           MReadCurrents.cc \
            MReadMarsFile.cc \
            MReadRflFile.cc \
