Index: /trunk/MagicSoft/Mars/mbase/MParList.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 2556)
@@ -493,5 +493,5 @@
         {
         case 1:
-            *fLog << "gROOT->GetClass(\"" << cname << "\" returned NULL." << endl;
+            *fLog << "gROOT->GetClass() returned NULL." << endl;
             return NULL;
         case 2:
Index: /trunk/MagicSoft/Mars/mbase/MTask.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 2556)
@@ -144,12 +144,12 @@
     TString s = str;
 
-    while (1)
+    while (!s.IsNull())
     {
         Int_t fst = s.First(',');
 
         if (fst<0)
-            return;
-
-        AddToBranchList(TString(s(0, fst)));
+            fst = s.Length();
+
+        AddToBranchList((const char*)TString(s(0, fst)));
 
         s.Remove(0, fst+1);
Index: /trunk/MagicSoft/Mars/mbase/MTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 2556)
@@ -51,8 +51,8 @@
 void MTime::Print(Option_t *) const
 {
-    *fLog << GetDescriptor() << ": " << dec;
-    *fLog << setfill('0') << setw(2) << (int)fHour << ":";
-    *fLog << setfill('0') << setw(2) << (int)fMin  << ":";
-    *fLog << setfill('0') << setw(2) << (int)fSec  << ".";
-    *fLog << setfill('0') << setw(9) << fNanoSec << endl;
+    *fLog << GetDescriptor() << ": " << dec << setfill('0');
+    *fLog << setw(2) << (int)fHour << ":";
+    *fLog << setw(2) << (int)fMin  << ":";
+    *fLog << setw(2) << (int)fSec  << ".";
+    *fLog << setw(9) << fNanoSec << endl;
 } 
Index: /trunk/MagicSoft/Mars/mbase/MTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 2556)
@@ -96,9 +96,4 @@
     }
 
-    MTime *GetTime()
-    {
-        return this;
-    }
-
     UInt_t GetDuration()
     {
@@ -108,5 +103,5 @@
     operator double() const //[s]
     {
-        return fNanoSec/1e9+(fHour*24*60*60+fMin*60+fSec);
+        return fNanoSec/1e9+(fHour*60*60+fMin*60+fSec);
     }
     double operator()() const //[s]
Index: /trunk/MagicSoft/Mars/mcamera/MCameraAUX.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraAUX.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraAUX.h	(revision 2556)
@@ -15,5 +15,5 @@
     Bool_t fStatusFansFADC;  // Monitored status: o=off, 1=on, Cam.FADC.Fans_state
 public:
-    ClassDef(MCameraAUX, 0)
+    ClassDef(MCameraAUX, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraCalibration.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraCalibration.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraCalibration.h	(revision 2556)
@@ -21,5 +21,5 @@
 
 public:
-    ClassDef(MCameraCalibration, 0)
+    ClassDef(MCameraCalibration, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraCooling.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraCooling.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraCooling.h	(revision 2556)
@@ -29,5 +29,24 @@
 
 public:
-    ClassDef(MCameraCooling, 0)
+
+    Byte_t  GetStatus() const              { return fStatus;              }
+
+    Bool_t  GetStatusPressureHi() const    { return fStatusPressureHi;    }
+    Bool_t  GetStatusPressureLo() const    { return fStatusPressureLo;    }
+    Bool_t  GetStatusPump() const          { return fStatusPump;          }
+    Bool_t  GetStatusRefrigrerator() const { return fStatusRefrigrerator; }
+    Bool_t  GetStatusValve() const         { return fStatusValve;         }
+    Bool_t  GetStatusResistor() const      { return fStatusResistor;      }
+    Bool_t  GetStatusFans() const          { return fStatusFans;          }
+
+    Float_t GetTempCenter() const          { return fTempCenter;          }
+    Float_t GetTempWall() const            { return fTempWall;            }
+    Float_t GetTempOptLink() const         { return fTempOptLink;         }
+    Float_t GetTempWater() const           { return fTempWater;           }
+
+    Byte_t  GetHumWall() const             { return fHumWall;             }
+    Byte_t  GetHumCenter() const           { return fHumCenter;           }
+
+    ClassDef(MCameraCooling, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraHV.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraHV.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraHV.h	(revision 2556)
@@ -26,5 +26,5 @@
 public:
     MCameraHV() : fHV(577) { }
-    ClassDef(MCameraHV, 0)
+    ClassDef(MCameraHV, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraLV.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraLV.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraLV.h	(revision 2556)
@@ -17,6 +17,6 @@
     Bool_t  fRequestPowerSupply;        // Requested status: o=off, 1=on, blv_ps_status
 
-    Float_t  fStatusTemp;               // Measured status: o=off, 1=on, blv_temp
-    Float_t  fStatusHumidity;           // Measured status: o=off, 1=on, blv_RelativeHumidity
+    Float_t fTemp;                     // Measured status: o=off, 1=on, blv_temp
+    Byte_t  fHumidity;                 // Measured status: o=off, 1=on, blv_RelativeHumidity
 
     MCameraPowerSupply fPowerSupplyA;   // power supply camera part A
@@ -24,5 +24,5 @@
 
 public:
-    ClassDef(MCameraLV, 0)
+    ClassDef(MCameraLV, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraLid.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraLid.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraLid.h	(revision 2556)
@@ -2,9 +2,11 @@
 #define MARS_MCameraLid
 
-#ifndef ROOT_TObject
-#include <TObject.h>
+// Derived from MParContainer instead of TObject
+// to supress writing fUniqueId and fBits
+#ifndef MARS_MParContainer
+#include <MParContainer.h>
 #endif
 
-class MCameraLid : public TObject
+class MCameraLid : public MParContainer
 {
     friend class MReportCamera;
@@ -17,5 +19,5 @@
      Byte_t fStatusMotor;      // 0=stopped, 1=opening, 2=closing
 public:
-    ClassDef(MCameraLid, 0)
+    ClassDef(MCameraLid, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraLids.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraLids.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraLids.h	(revision 2556)
@@ -19,5 +19,5 @@
     Byte_t fStatus; // CaCo monitored lid status, Cam.LID_state [0-9]
 public:
-    ClassDef(MCameraLids, 0)
+    ClassDef(MCameraLids, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mcamera/MCameraPowerSupply.h
===================================================================
--- /trunk/MagicSoft/Mars/mcamera/MCameraPowerSupply.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mcamera/MCameraPowerSupply.h	(revision 2556)
@@ -18,8 +18,8 @@
      Float_t fCurrentPos12V;        // [A] current_pos12 (+12V)
      Float_t fCurrentNeg12V;        // [A] current_neg12 (-12V)
-     Float_t fCurrentOptLinkPos12V; // [V] current_opt_link_pos12 (+12V)
+     Float_t fCurrentOptLinkPos12V; // [A] current_opt_link_pos12 (+12V)
 
 public:
-    ClassDef(MCameraPowerSupply, 0)
+    ClassDef(MCameraPowerSupply, 1)
 };
 
Index: /trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mfileio/FileIOLinkDef.h	(revision 2556)
@@ -8,4 +8,5 @@
 #pragma link C++ class MRead+;
 #pragma link C++ class MReadTree+;
+#pragma link C++ class MReadReports+;
 #pragma link C++ class MReadMarsFile+;
 #pragma link C++ class MReadCurrents+;
Index: /trunk/MagicSoft/Mars/mfileio/MReadReports.cc
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/MReadReports.cc	(revision 2556)
+++ /trunk/MagicSoft/Mars/mfileio/MReadReports.cc	(revision 2556)
@@ -0,0 +1,237 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2003
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MReadReports                                                                   //
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "MReadReports.h"
+
+#include <TChain.h>
+#include <TChainElement.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#include "MTime.h"
+#include "MParList.h"
+#include "MReadTree.h"
+#include "MTaskList.h"
+
+ClassImp(MReadReports);
+
+using namespace std;
+
+MReadReports::MReadReports()
+{
+    fName = "MRead";
+    fTitle = "MReadReports";
+
+    fTrees  = new MTaskList("MReadReports");
+    fChains = new TList;
+
+    fTrees->SetOwner();
+    fChains->SetOwner();
+}
+
+MReadReports::~MReadReports()
+{
+    TObject *o=0;
+    TIter NextC(fChains);
+    while ((o=NextC()))
+    {
+        delete *GetTime((TChain*)o);
+        delete  GetTime((TChain*)o);
+    }
+
+    delete fTrees;
+    delete fChains;
+}
+
+void MReadReports::AddToBranchList(const char *name)
+{
+    MTask::AddToBranchList(name);
+}
+
+void MReadReports::AddTree(const char *tree, const char *time)
+{
+    /*
+    if (fTrees->GetNumTasks()>0)
+    {
+        *fLog << warn << "WARNING - AddTree must be called before AddFile... ignored." << endl;
+        *fLog << dbg << fTrees->GetNumTasks() << endl;
+        return kFALSE;
+    }
+    */
+    MReadTree *t = new MReadTree(tree);
+    t->SetName(tree);
+    t->SetTitle(time?time:"");
+
+    //FIXME!
+    //t->DisableAutoScheme();
+
+    fTrees->AddToList(t);
+    //    return kTRUE;
+}
+
+Int_t MReadReports::AddFile(const char *fname, Int_t entries=-1)
+{
+    Int_t n=0;
+
+    TIter NextT(fTrees->GetList());
+    MReadTree *tree=0;
+    while ((tree=(MReadTree*)NextT()))
+        n += tree->AddFile(fname, entries);
+
+    return n;
+}
+
+Int_t MReadReports::PreProcess(MParList *plist)
+{
+    fList = (MTask*)plist->FindObject("MTaskList");
+
+    fChains->Delete();
+
+    Int_t i=0;
+
+    TIter NextT(fTrees->GetList());
+    MReadTree *tree=0;
+    while ((tree=(MReadTree*)NextT()))
+    {
+        TString tn(tree->GetTitle());
+        if (tn.IsNull())
+        {
+            tn += "MTime";
+            tn += tree->GetName();
+            tn += ".";
+        }
+
+        TString tn2(tn);
+        tn2 += "*";
+
+        // FIXME: Should be tree->AddToBranchList such that
+        //        each run a new 'table' is created, but
+        //        MRead is searching for MTaskList in the
+        //        parameter list.
+        //AddToBranchList((const char*)tn2);
+
+        //
+        // SetBranchStatus wants to have a pointer to a pointer
+        //
+        MTime **tx = new MTime*;
+        *tx = new MTime;
+
+        TChain *c=new TChain(tree->GetName());
+        c->SetBranchStatus("*", 0);
+        c->SetBranchAddress(tn, tx);
+        tn+="*";
+        c->SetBranchStatus(tn, 1);
+        c->Add((TChain*)tree->fChain);
+        c->GetEntry(0);
+
+        fChains->Add(c);
+
+        i++;
+    }
+
+    fPos.Set(i);
+
+    return fTrees->CallPreProcess(plist);
+}
+
+MTime** MReadReports::GetTime(TChain *c) const
+{
+    TChainElement *e=(TChainElement*)c->GetStatus()->At(1);
+    return (MTime**)e->GetBaddress();
+}
+
+Int_t MReadReports::Process()
+{
+    while (fChains->GetSize())
+    {
+        Int_t i=0;
+
+        MTime tmin;
+
+        Int_t nmin=0;
+
+        TIter NextC(fChains);
+        TChain *c=0;
+        while ((c=(TChain*)NextC()))
+        {
+            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;
+
+            if (t < tmin)
+            {
+                tmin = t;
+                nmin = i;
+            }
+            i++;
+        }
+
+        TChain *chain = (TChain*)fChains->At(nmin);
+
+        chain->GetEntry(++fPos[nmin]);
+
+        // FIXME: Use Stream ID and call CallProcess() ?
+        if (((MTask*)fTrees->GetList()->At(nmin))->CallProcess())
+        {
+            /*
+             *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;
+        }
+
+        delete *GetTime(chain);
+        delete  GetTime(chain);
+        // FIXME: Is it really deleted?
+        fChains->Remove(chain);
+    }
+
+    return kFALSE;
+}
+
+Int_t MReadReports::PostProcess()
+{
+    return fTrees->CallPostProcess();
+}
+
+void MReadReports::PrintStatistics(const Int_t lvl, Bool_t title) const
+{
+    MRead::PrintStatistics(lvl, title);
+    fTrees->PrintStatistics(lvl, title);
+}
Index: /trunk/MagicSoft/Mars/mfileio/MReadReports.h
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/MReadReports.h	(revision 2556)
+++ /trunk/MagicSoft/Mars/mfileio/MReadReports.h	(revision 2556)
@@ -0,0 +1,47 @@
+#ifndef MARS_MReadReports
+#define MARS_MReadReports
+
+#ifndef MARS_MRead
+#include "MRead.h"
+#endif
+
+#ifndef ROOT_TArrayL
+#include <TArrayL.h>
+#endif
+
+class TChain;
+class MTime;
+class MTaskList;
+
+class MReadReports : public MRead
+{
+private:
+    MTaskList *fTrees;
+    TList *fChains;
+
+    TArrayL fPos;
+
+    MTask *fList;
+
+    MTime** GetTime(TChain *c) const;
+
+    UInt_t GetEntries() { return 0; }
+
+public:
+    MReadReports(); 
+    ~MReadReports(); 
+
+    void  AddTree(const char *tree, const char *time=NULL);
+    Int_t AddFile(const char *fname, Int_t entries=-1);
+    void  AddToBranchList(const char *name);
+
+    void PrintStatistics(const Int_t lvl=0, Bool_t title=kFALSE) const;
+
+    Int_t PreProcess(MParList *plist);
+    Int_t Process();
+    Int_t PostProcess();
+
+    ClassDef(MReadReports, 0)	// Base class for a reading task
+};
+
+#endif
Index: /trunk/MagicSoft/Mars/mfileio/MReadTree.h
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/MReadTree.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mfileio/MReadTree.h	(revision 2556)
@@ -11,4 +11,6 @@
 class MReadTree : public MRead
 {
+    friend class MReadReports;
+
 private:
     MChain *fChain;            // Pointer to tree
Index: /trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mfileio/MWriteRootFile.cc	(revision 2556)
@@ -264,5 +264,5 @@
                 // No corresponding container is found
                 //
-                *fLog << dbginf << "Cannot find parameter container '" << cname << "'." << endl;
+                *fLog << err << "Cannot find parameter container '" << cname << "'." << endl;
                 return kFALSE;
             }
@@ -312,5 +312,5 @@
             gDirectory = save;
 
-            *fLog << "Created Tree " << tname << "." << endl;
+            *fLog << inf << "Tree " << tname << " created." << endl;
         }
 
@@ -337,5 +337,5 @@
         if (branch)
         {
-            *fLog << dbginf << "Branch '" << cname << "' is already existing." << endl;
+            *fLog << err << "Branch '" << cname << "' already existing." << endl;
             return kFALSE;
         }
@@ -358,5 +358,5 @@
         if (!branch)
         {
-            *fLog << dbginf << "Unable to create branch '" << cname << "'." << endl;
+            *fLog << err << "Unable to create branch '" << cname << "'." << endl;
             return kFALSE;
         }
@@ -367,5 +367,5 @@
         //
         entry->SetBranch(branch);
-        *fLog << "Created Branch " << cname << " of " << cont->ClassName() << "." << endl;
+        *fLog << inf << "Created Branch " << cname << " of " << cont->ClassName() << "." << endl;
     }
     return kTRUE;
Index: /trunk/MagicSoft/Mars/mfileio/Makefile
===================================================================
--- /trunk/MagicSoft/Mars/mfileio/Makefile	(revision 2555)
+++ /trunk/MagicSoft/Mars/mfileio/Makefile	(revision 2556)
@@ -35,4 +35,5 @@
            MChain.cc \
 	   MReadTree.cc \
+           MReadReports.cc \
            MReadCurrents.cc \
            MReadMarsFile.cc \
Index: /trunk/MagicSoft/Mars/mhist/HistLinkDef.h
===================================================================
--- /trunk/MagicSoft/Mars/mhist/HistLinkDef.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mhist/HistLinkDef.h	(revision 2556)
@@ -10,4 +10,5 @@
 #pragma link C++ class MHArray+;
 #pragma link C++ class MH3+;
+#pragma link C++ class MHVsTime+;
 
 #pragma link C++ class MBinning+;
Index: /trunk/MagicSoft/Mars/mhist/MFillH.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MFillH.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mhist/MFillH.cc	(revision 2556)
@@ -154,4 +154,7 @@
     fParContainerName = par;
 
+    AddToBranchList(Form("%s.*", (const char*)ExtractName(hist)));
+    AddToBranchList(Form("%s.*", (const char*)ExtractName(par)));
+
     if (title)
         return;
@@ -196,4 +199,7 @@
     fParContainerName = par->GetName();
 
+    AddToBranchList(Form("%s.*", (const char*)ExtractName(hist)));
+    AddToBranchList(Form("%s.*", par->GetName()));
+
     if (!title)
         fTitle = "Fill " + fHName + " from " + par->GetDescriptor();
@@ -218,4 +224,5 @@
 
     AddToBranchList(fH->GetDataMember());
+    AddToBranchList(Form("%s.*", (const char*)ExtractName(par)));
 
     if (title)
@@ -248,4 +255,5 @@
 
     AddToBranchList(fH->GetDataMember());
+    AddToBranchList(Form("%s.*", par->GetName()));
 
     if (!title)
Index: /trunk/MagicSoft/Mars/mhist/MHVsTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHVsTime.cc	(revision 2556)
+++ /trunk/MagicSoft/Mars/mhist/MHVsTime.cc	(revision 2556)
@@ -0,0 +1,247 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
+!
+!   Copyright: MAGIC Software Development, 2000-2003
+!
+!
+\* ======================================================================== */
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// MHVsTime
+//
+// Preliminary: the docu may be wrong!
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "MHVsTime.h"
+
+#include <ctype.h>   // tolower
+#include <fstream>
+
+#include <TPad.h>
+#include <TStyle.h>
+#include <TCanvas.h>
+
+#include <TGraph.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#include "MTime.h"
+#include "MParList.h"
+#include "MDataChain.h"
+
+ClassImp(MHVsTime);
+
+using namespace std;
+
+static const TString gsDefName  = "MHVsTime";
+static const TString gsDefTitle = "Container for a graph vs time";
+
+// --------------------------------------------------------------------------
+//
+// Default constructor.
+//
+MHVsTime::MHVsTime(const char *rule)
+    : fHist(NULL), fData(NULL), fScale(1)
+{  
+    fName  = gsDefName;
+    fTitle = gsDefTitle;
+
+    if (!rule)
+        return;
+
+    fHist = new TGraph;
+    fData = new MDataChain(rule);
+}
+
+// --------------------------------------------------------------------------
+//
+// Deletes the histogram
+//
+MHVsTime::~MHVsTime()
+{
+    if (fHist)
+        delete fHist;
+
+    if (fData)
+        delete fData;
+}
+
+// --------------------------------------------------------------------------
+//
+// Return the data members used by the data chain to be used in
+// MTask::AddBranchToList
+//
+TString MHVsTime::GetDataMember() const
+{
+    *fLog << dbg << fData->GetDataMember() << endl;
+    return fData ? fData->GetDataMember() : (TString)"";
+}
+
+// --------------------------------------------------------------------------
+//
+// Setup the Binning for the histograms automatically if the correct
+// instances of MBinning are found in the parameter list
+// For a more detailed description see class description above.
+//
+Bool_t MHVsTime::SetupFill(const MParList *plist)
+{
+    // reset histogram (necessary if the same eventloop is run more than once) 
+    //fHist->Reset();
+
+    if (fData && !fData->PreProcess(plist))
+        return kFALSE;
+
+    if (fHist)
+    {
+        delete fHist;
+        fHist = new TGraph;
+    }
+
+    TString title(fData ? GetRule() : (TString)"Histogram");
+    title += " vs Time";
+
+    fHist->SetNameTitle(fName, title);
+
+    return kTRUE;
+}
+
+// --------------------------------------------------------------------------
+//
+// Set the name of the histogram ant the MHVsTime container
+//
+void MHVsTime::SetName(const char *name)
+{
+    fHist->SetName(name);
+    MParContainer::SetName(name);
+}
+
+// --------------------------------------------------------------------------
+//
+// Set the title of the histogram ant the MHVsTime container
+//
+void MHVsTime::SetTitle(const char *title)
+{
+    fHist->SetTitle(title);
+    MParContainer::SetTitle(title);
+}
+
+// --------------------------------------------------------------------------
+//
+// Fills the one, two or three data members into our histogram
+//
+Bool_t MHVsTime::Fill(const MParContainer *par, const Stat_t w)
+{
+    const MTime *t = dynamic_cast<const MTime*>(par);
+    if (!t)
+    {
+        *fLog << err << dbginf << "No MTime found..." << endl;
+        return kFALSE;
+    }
+
+    const Double_t v = fData->GetValue()*fScale;
+    const Double_t T = (*t);///3600;
+
+    fHist->SetPoint(fHist->GetN(), T>12*3600?T-24*3600:T, v);
+
+    return kTRUE;
+}
+
+// --------------------------------------------------------------------------
+//
+// Creates a new canvas and draws the histogram into it.
+//
+// Possible options are:
+//   PROFX: Draw a x-profile into the histogram (for 2D histograms only)
+//   PROFY: Draw a y-profile into the histogram (for 2D histograms only)
+//   ONLY:  Draw the profile histogram only (for 2D histograms only)
+//
+// If the kIsLog?-Bit is set the axis is displayed lkogarithmically.
+// eg this is set when applying a logarithmic MBinning
+//
+// Be careful: The histogram belongs to this object and won't get deleted
+// together with the canvas.
+//
+void MHVsTime::Draw(Option_t *opt)
+{
+    if (fHist->GetN()==0)
+        return;
+
+    TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(fHist);
+    pad->SetBorderMode(0);
+
+    AppendPad("");
+
+    TString str(opt);
+
+    fHist->GetHistogram()->SetXTitle("Time");
+    fHist->GetHistogram()->SetYTitle(GetRule());
+    fHist->GetHistogram()->GetXaxis()->SetTimeFormat("%H:%M:%S");
+    fHist->GetHistogram()->GetXaxis()->SetTimeDisplay(1);
+    fHist->GetHistogram()->GetXaxis()->SetLabelSize(0.033);
+    fHist->Draw("AP");
+    if (fHist->TestBit(kIsLogy))
+        pad->SetLogy();
+
+    pad->Modified();
+    pad->Update();
+}
+
+// --------------------------------------------------------------------------
+//
+// Used to rebuild a MHVsTime object of the same type (data members,
+// dimension, ...)
+//
+MParContainer *MHVsTime::New() const
+{
+    MHVsTime *h=new MHVsTime(fData ? (const char*)GetRule() : NULL);
+    h->SetScale(fScale);
+    return h;
+}
+
+TString MHVsTime::GetRule() const
+{
+    return fData ? fData->GetRule() : (TString)"";
+}
+
+// --------------------------------------------------------------------------
+//
+// Returns the total number of bins in a histogram (excluding under- and
+// overflow bins)
+//
+Int_t MHVsTime::GetNbins() const
+{
+    return fHist->GetN();
+}
+
+TH1 *MHVsTime::GetHist()
+{
+    return fHist ? fHist->GetHistogram() : 0;
+}
+
+const TH1 *MHVsTime::GetHist() const
+{
+    return fHist ? fHist->GetHistogram() : 0;
+}
+
+TH1 *MHVsTime::GetHistByName(const TString name)
+{
+    return GetHist();
+}
Index: /trunk/MagicSoft/Mars/mhist/MHVsTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHVsTime.h	(revision 2556)
+++ /trunk/MagicSoft/Mars/mhist/MHVsTime.h	(revision 2556)
@@ -0,0 +1,51 @@
+#ifndef MARS_MHVsTime
+#define MARS_MHVsTime
+
+#ifndef MARS_MH
+#include "MH.h"
+#endif
+
+class TGraph;
+class MDataChain;
+
+class MHVsTime : public MH
+{
+protected:
+    // Could be const but root < 3.02/06 doesn't like this...
+    TGraph     *fHist;  // Histogram to fill
+    MDataChain *fData;  // Object from which the data is filled
+    Double_t    fScale; // Scale for axis (eg unit)
+
+    enum {
+        kIsLogy = BIT(18)
+    };
+
+public:
+    MHVsTime(const char *rule=NULL);
+    ~MHVsTime();
+
+    void SetScale(Double_t scale) { fScale = scale; }
+
+    Int_t GetNbins() const;
+
+    void SetName(const char *name);
+    void SetTitle(const char *title);
+
+    Bool_t SetupFill(const MParList *pList);
+    Bool_t Fill(const MParContainer *par, const Stat_t w=1);
+
+    TString GetDataMember() const;
+    TString GetRule() const;
+
+    const TH1 *GetHist() const;
+    TH1 *GetHist();
+    TH1 *GetHistByName(const TString name="");
+
+    void Draw(Option_t *opt=NULL);
+
+    MParContainer *New() const;
+
+    ClassDef(MHVsTime, 1) // Generalized 1/2/3D-histogram for Mars variables
+};
+
+#endif
Index: /trunk/MagicSoft/Mars/mhist/Makefile
===================================================================
--- /trunk/MagicSoft/Mars/mhist/Makefile	(revision 2555)
+++ /trunk/MagicSoft/Mars/mhist/Makefile	(revision 2556)
@@ -33,4 +33,5 @@
            MBinning.cc \
            MH.cc \
+           MHVsTime.cc \
            MHArray.cc \
            MWeight.cc \
Index: /trunk/MagicSoft/Mars/mraw/MRawFileWrite.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawFileWrite.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mraw/MRawFileWrite.cc	(revision 2556)
@@ -105,5 +105,5 @@
 //  - MRawEvtData
 //  - MRawCrateArray
-//  - MRawEvtTime <MTime>
+//  - MTime
 //  - MRawRunHeader
 // if a container isn't found the eventloop is stopped.
@@ -154,8 +154,8 @@
     }
 
-    fRawEvtTime = (MTime*)pList->FindObject("MRawEvtTime");
-    if (!fRawEvtTime)
-    {
-        *fLog << err << dbginf << "MRawEvtTime not found... aborting." << endl;
+    fTime = (MTime*)pList->FindObject("MTime");
+    if (!fTime)
+    {
+        *fLog << err << dbginf << "MTime not found... aborting." << endl;
         return kFALSE;
     }
@@ -186,7 +186,7 @@
     // create data trees for the three types of data
     //
-    fTData        = new TTree("Events",    "Normal Triggered Events");
-    fTPedestal    = new TTree("PedEvents", "Pedestal Triggered Events");
-    fTCalibration = new TTree("CalEvents", "Calibration Triggered Events");
+    fTData        = new TTree("Events",      "Normal Triggered Events");
+    fTPedestal    = new TTree("Pedestals",   "Pedestal Triggered Events");
+    fTCalibration = new TTree("Calibration", "Calibration Triggered Events");
 
     //
@@ -213,7 +213,7 @@
     // FIXME: Can we calculate a good buffer size out of the event size?
     //        using splitlevel=0 sppeds up writing by a factor of 5-10%
-    fTData       ->Branch("MTime.",          "MTime",          &fRawEvtTime,    32000);
-    fTPedestal   ->Branch("MTime.",          "MTime",          &fRawEvtTime,    32000);
-    fTCalibration->Branch("MTime.",          "MTime",          &fRawEvtTime,    32000);
+    fTData       ->Branch("MTime.",          "MTime",          &fTime,          32000);
+    fTPedestal   ->Branch("MTime.",          "MTime",          &fTime,          32000);
+    fTCalibration->Branch("MTime.",          "MTime",          &fTime,          32000);
     fTData       ->Branch("MRawEvtHeader.",  "MRawEvtHeader",  &fRawEvtHeader,  32000);
     fTPedestal   ->Branch("MRawEvtHeader.",  "MRawEvtHeader",  &fRawEvtHeader,  32000);
Index: /trunk/MagicSoft/Mars/mraw/MRawFileWrite.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawFileWrite.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mraw/MRawFileWrite.h	(revision 2556)
@@ -21,5 +21,5 @@
     MParList *pParList;
 
-    MTime          *fRawEvtTime;
+    MTime          *fTime;
     MRawRunHeader  *fRawRunHeader;
     MRawEvtHeader  *fRawEvtHeader;
Index: /trunk/MagicSoft/Mars/mreport/MReportCamera.h
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportCamera.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mreport/MReportCamera.h	(revision 2556)
@@ -10,4 +10,5 @@
 class MCameraHV;
 class MCameraLV;
+class MCameraAUX;
 class MCameraCalibration;
 
@@ -20,4 +21,5 @@
     MCameraCooling     *fCooling;
     MCameraLids        *fLids;
+    MCameraAUX         *fAUX;
     MCameraHV          *fHV;
     MCameraLV          *fLV;
@@ -27,4 +29,5 @@
     Bool_t CheckTag(TString &str, const char *tag) const;
 
+    Bool_t InterpreteCamera(TString &str);
     Bool_t InterpreteDC(TString &str);
     Bool_t InterpreteHV(TString &str);
Index: /trunk/MagicSoft/Mars/mreport/MReportFileRead.cc
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportFileRead.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mreport/MReportFileRead.cc	(revision 2556)
@@ -32,4 +32,5 @@
 #include <fstream>
 
+#include <TClass.h>
 #include <TRegexp.h>
 #include <THashTable.h>
@@ -55,5 +56,52 @@
 
 public:
-    MReportHelp(MReport *rep) : fReport(rep), fNumReports(0) { }
+    MReportHelp(const char *name, MLog *fLog) : fReport(NULL), fNumReports(0)
+    {
+        TClass *cls = gROOT->GetClass(name);
+        Int_t rc = 0;
+        if (!cls)
+            rc =1;
+        else
+        {
+            if (!cls->Property())
+                rc = 5;
+            if (!cls->Size())
+                rc = 4;
+            if (!cls->IsLoaded())
+                rc = 3;
+            if (!cls->HasDefaultConstructor())
+                rc = 2;
+        }
+
+        if (rc)
+        {
+            *fLog << err << dbginf << "Cannot create new instance of class '" << name << "': ";
+            switch (rc)
+            {
+            case 1:
+                *fLog << "gROOT->GetClass() returned NULL." << endl;
+                return;
+            case 2:
+                *fLog << "no default constructor." << endl;
+                return;
+            case 3:
+                *fLog << "not loaded." << endl;
+                return;
+            case 4:
+                *fLog << "zero size." << endl;
+                return;
+            case 5:
+                *fLog << "no property." << endl;
+                return;
+            }
+        }
+
+        //
+        // create the parameter container of the the given class type
+        //
+        fReport = (MReport*)cls->New();
+    }
+    ~MReportHelp() { if (fReport) delete fReport; }
+
     const char *GetName() const { return fReport->GetIdentifier(); }
     ULong_t GetNumReports() const { return fNumReports; }
@@ -113,6 +161,12 @@
 }
 
-Bool_t MReportFileRead::AddToList(MReport *rep) const
-{
+Bool_t MReportFileRead::AddToList(const char *name) const
+{
+    MReportHelp *help = new MReportHelp(name, fLog);
+
+    MReport *rep = NULL;
+    if (!(rep=help->GetReport()))
+        return kFALSE;
+
     if (GetReport(rep->GetIdentifier()))
     {
@@ -120,8 +174,9 @@
         *fLog << rep->GetIdentifier() << "' already added to the list... ";
         *fLog << "ignored." << endl;
-        return kFALSE;
-    }
-
-    fList->Add(new MReportHelp(rep));
+        delete help;
+        return kFALSE;
+    }
+
+    fList->Add(help);
     return kTRUE;
 }
Index: /trunk/MagicSoft/Mars/mreport/MReportFileRead.h
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportFileRead.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mreport/MReportFileRead.h	(revision 2556)
@@ -40,5 +40,5 @@
     ~MReportFileRead();
 
-    Bool_t AddToList(MReport *rep) const;
+    Bool_t AddToList(const char *name) const;
 
     ClassDef(MReportFileRead, 0)	// Task to read the raw data binary file
Index: /trunk/MagicSoft/Mars/mreport/MReportTrigger.cc
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportTrigger.cc	(revision 2555)
+++ /trunk/MagicSoft/Mars/mreport/MReportTrigger.cc	(revision 2556)
@@ -36,5 +36,5 @@
 using namespace std;
 
-MReportTrigger::MReportTrigger() : MReport("TRIGGER-REPORT")
+MReportTrigger::MReportTrigger() : MReport("TRIGGER-REPORT"), fPrescalerRates(19)//, fRates(11)
 {
     fName = "MReportTrigger";
@@ -44,6 +44,7 @@
 {
     str = str.Strip(TString::kLeading);
-    Int_t pos = str.First(' ');
-    if (pos<=0)
+
+    const Int_t ws = str.First(' ');
+    if (ws<=0)
     {
         *fLog << err << "ERROR - Cannot determin name of trigger table." << endl;
@@ -51,13 +52,13 @@
     }
 
-    TString tablename = str(0, pos);
-    str.Remove(0, pos);
+    TString tablename = str(0, ws);
+    str.Remove(0, ws);
 
     Int_t len, n;
 
-    pos = 0;
+    const char *pos = str.Data();
     for (int i=0; i<19; i++)
     {
-        n = sscanf(str.Data()+pos, " %f %n", &fScalerRate[i], &len);
+        n = sscanf(pos, " %f %n", &fPrescalerRates[i], &len);
         if (n!=1)
         {
@@ -67,6 +68,5 @@
         pos += len;
     }
-    n = sscanf(str.Data()+pos, " %f %f %n", &fL1TriggerRate,
-               &fL2TriggerRate, &len);
+    n = sscanf(pos, " %f %f %n", &fL2BeforePrescaler, &fL2AfterPrescaler, &len);
     if (n!=2)
     {
@@ -77,5 +77,6 @@
     for (int i=0; i<11; i++)
     {
-        n = sscanf(str.Data()+pos, " %f %n", &fRates[i], &len);
+        Float_t dummy;
+        n = sscanf(pos, " %f %n", &dummy/*fRates[i]*/, &len);
         if (n!=1)
         {
@@ -85,8 +86,6 @@
         pos += len;
     }
-    str.Remove(0, pos);
+    str.Remove(0, pos-str.Data());
     str.Strip(TString::kBoth);
-
-    *fLog << "T" << flush;
 
     return str==(TString)"OVER";
Index: /trunk/MagicSoft/Mars/mreport/MReportTrigger.h
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 2555)
+++ /trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 2556)
@@ -6,11 +6,16 @@
 #endif
 
+#ifndef ROOT_TArrayF
+#include <TArrayF.h>
+#endif
+
 class MReportTrigger : public MReport
 {
 private:
-    Float_t fScalerRate[19];
-    Float_t fL1TriggerRate;
-    Float_t fL2TriggerRate;
-    Float_t fRates[13];
+    Float_t fL2BeforePrescaler; // L2 trigger rate before prescaler
+    Float_t fL2AfterPrescaler;  // L2 trigger rate before prescaler
+
+    TArrayF fPrescalerRates;    //[Hz] L2 prescaler rates
+    //TArrayF fRates;           //[Hz] curently undefined
 
 public:
@@ -19,5 +24,5 @@
     Bool_t InterpreteBody(TString &str);
 
-    ClassDef(MReportTrigger, 0) // Base class for control reports
+    ClassDef(MReportTrigger, 1) // Base class for control reports
 };
 
