Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 7209)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 7210)
@@ -44,4 +44,26 @@
      - fixed a problem reading files with gkActiveLoadControlVersNum
      - added a fix for report files before 200407070
+
+   * mhvstime/MHSectorVsTime.[h,cc]:
+     - added example to class reference
+     - fixed possible crash in SetName and SetTitle
+     - set default style to kFullDotMedium
+     - removed seconds from default axis labels
+     - changed default time labels size to 0.033
+     - moved Draw code to Paint as in MHVsTime
+     - fixed wrong return of kCONTINUE in Fill
+
+   * mhvstime/MHVsTime.cc:
+     - removed seconds from default axis labels
+   
+   * mjobs/MJStar.cc:
+     - added Starguider info to output
+     - added MHSectorVsTime to display mean DC current
+     - allow skipping MHPointing for very old files without
+       starguider reports
+
+   * mpointing/MHPointing.cc:
+     - allow skipping MHPointing for very old files without
+       starguider reports
 
 
Index: /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.cc	(revision 7209)
+++ /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.cc	(revision 7210)
@@ -38,4 +38,31 @@
 //    YOU HAVE TWO SEMICOLON!)
 //
+// Example:
+// --------
+//     // Initialize histogram
+//     MHSectorVsTime hist1;
+//     hist1.SetNameTime("MTimeCurrents");
+//     hist1.SetTitle("Title for your Graph;;Q [phe]");
+//
+//     // Define sectors you want to display the mean from
+//     TArrayI s0(3);
+//     s0[0] = 6;
+//     s0[1] = 1;
+//     s0[2] = 2;
+// 
+//     // Define area index [0=inner, 1=outer]
+//     TArrayI inner(1);
+//     inner[0] = 0;
+// 
+//     // Don't call this if you want to have all sectors
+//     hist1.SetSectors(s0);
+// 
+//     // Don't call this if you want to have all area indices
+//     hist1.SetAreaIndex(inner);
+// 
+//     // Task to fill the histogram
+//     MFillH fill1(&hist1, "MCameraDC");
+// 
+//
 /////////////////////////////////////////////////////////////////////////////
 #include "MHSectorVsTime.h"
@@ -93,5 +120,6 @@
 void MHSectorVsTime::SetName(const char *name)
 {
-    fGraph->SetName(name);
+    if (fGraph)
+        fGraph->SetName(name);
     MParContainer::SetName(name);
 }
@@ -103,5 +131,6 @@
 void MHSectorVsTime::SetTitle(const char *title)
 {
-    fGraph->SetTitle(title);
+    if (fGraph)
+        fGraph->SetTitle(title);
     MParContainer::SetTitle(title);
 }
@@ -160,4 +189,5 @@
     fGraph->SetName(fEvt ? dynamic_cast<TObject*>(fEvt)->GetName() : "MCamEvent");
     fGraph->SetTitle(fTitle==gsDefTitle?"Camera":fTitle.Data());
+    fGraph->SetMarkerStyle(kFullDotMedium);
 
     fMin =  FLT_MAX;
@@ -191,6 +221,6 @@
     const Double_t val0 = fHCamera.GetMeanSectors(fSectors, fAreaIndex);
 
-    if (TMath::IsNaN(val0)/* || TMath::IsNaN(rms0)*/)
-        return kCONTINUE;
+    if (TMath::IsNaN(val0))
+        return kTRUE;
 
     fGraph->SetPoint(fGraph->GetN(), t, val0);
@@ -200,5 +230,5 @@
         const Double_t rms0 = fHCamera.GetRmsSectors(fSectors, fAreaIndex);
         if (TMath::IsNaN(rms0))
-            return kCONTINUE;
+            return kTRUE;
         ((TGraphErrors*)fGraph)->SetPointError(fGraph->GetN()-1, 0, rms0);
     }
@@ -221,7 +251,4 @@
     fGraph->SetMaximum(fMax+add);
 
-    *fLog << dbg << "Min=" << fMin << " " << fMin-add << endl;
-    *fLog << dbg << "Max=" << fMax << " " << fMax+add << endl;
-
     return kTRUE;
 }
@@ -236,5 +263,5 @@
 }
 
-void MHSectorVsTime::Draw(Option_t *opt)
+void MHSectorVsTime::Paint(Option_t *opt)
 {
     if (!fGraph)
@@ -244,16 +271,9 @@
         return;
 
-    TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(this);
-    pad->SetBorderMode(0);
-
-    AppendPad("");
-
     TString str(opt);
-
     if (!str.Contains("A"))
         str += "A";
-    if (!str.Contains("L"))
-        str += "L";
-
+    if (!str.Contains("P"))
+        str += "P";
     if (str.Contains("same", TString::kIgnoreCase))
     {
@@ -269,9 +289,26 @@
     {
         TAxis *axe = h->GetXaxis();
-        axe->SetTimeFormat("%H:%M:%S %F1995-01-01 00:00:00 GMT");
+        axe->SetTimeFormat("%H:%M %F1995-01-01 00:00:00 GMT");
         axe->SetTimeDisplay(1);
-        axe->SetLabelSize(0.025);
-    }
-
-    fGraph->Draw(str);
-}
+        axe->SetLabelSize(0.033);
+        h->GetYaxis()->SetTitleOffset(1.15);
+    }
+
+    // This is a workaround if the TGraph has only one point.
+    // Otherwise MStatusDisplay::Update hangs.
+    gPad->GetListOfPrimitives()->Remove(fGraph);
+    fGraph->Draw(fGraph->GetN()<2 ? "A" : str.Data());
+}
+
+// --------------------------------------------------------------------------
+//
+// This displays the TGraph like you expect it to be (eg. time on the axis)
+// It should also make sure, that the displayed time always is UTC and
+// not local time...
+//
+void MHSectorVsTime::Draw(Option_t *opt)
+{
+    TVirtualPad *pad = gPad ? gPad : MakeDefCanvas(fGraph);
+    pad->SetBorderMode(0);
+    AppendPad(opt);
+}
Index: /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.h	(revision 7209)
+++ /trunk/MagicSoft/Mars/mhvstime/MHSectorVsTime.h	(revision 7210)
@@ -47,4 +47,5 @@
     TArrayI fAreaIndex;
 
+    // MH
     Bool_t SetupFill(const MParList *pList);
     Bool_t Fill(const MParContainer *par, const Stat_t w=1);
@@ -55,7 +56,5 @@
     ~MHSectorVsTime();
 
-    void SetName(const char *name);
-    void SetTitle(const char *title);
-
+    // Setter
     void SetNameEvt(const TString name)  { fNameEvt = name; }
     void SetNameTime(const TString name) { fNameTime = name; }
@@ -64,8 +63,14 @@
     void SetAreaIndex(const TArrayI &a)  { fAreaIndex=a; }
 
+    // Getter
     TH1 *GetHistByName(const TString name="") const;
     //TGraph *GetGraph() { return fGraph; }
 
+    // TObject
+    void SetName(const char *name);
+    void SetTitle(const char *title);
+
     void Draw(Option_t *o=NULL);
+    void Paint(Option_t *o=NULL);
 
     ClassDef(MHSectorVsTime, 1) // Histogram to sum camera events
Index: /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc	(revision 7209)
+++ /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc	(revision 7210)
@@ -291,5 +291,5 @@
         fGraph->GetHistogram()->SetXTitle("Time");
         fGraph->GetHistogram()->GetXaxis()->SetLabelSize(0.033);
-        fGraph->GetHistogram()->GetXaxis()->SetTimeFormat("%H:%M:%S %F1995-01-01 00:00:00 GMT");
+        fGraph->GetHistogram()->GetXaxis()->SetTimeFormat("%H:%M %F1995-01-01 00:00:00 GMT");
         fGraph->GetHistogram()->GetXaxis()->SetTimeDisplay(1);
     }
Index: /trunk/MagicSoft/Mars/mjobs/MJStar.cc
===================================================================
--- /trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 7209)
+++ /trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 7210)
@@ -47,4 +47,5 @@
 #include "MH3.h"
 #include "MHVsTime.h"
+#include "MHSectorVsTime.h"
 #include "MHCamEvent.h"
 #include "MHCamEventRot.h"
@@ -195,4 +196,5 @@
     readreal.AddTree("Drive",            MReadReports::kRequired);
     readreal.AddTree("Starguider",       MReadReports::kRequired);
+    readreal.AddTree("Currents",         MReadReports::kRequired);
     readreal.AddTree("CC");
     readreal.AddFiles(iter);
@@ -219,7 +221,6 @@
     clean.SetNamePedPhotCam("MPedPhotFromExtractorRndm");
 
-    //MSrcPosCalc            poscalc;
-    //MSrcPosCorrect         poscorrect;
-    MHillasCalc            hcalc;
+    MSrcPosCalc poscalc;
+    MHillasCalc hcalc;
     hcalc.Disable(MHillasCalc::kCalcConc);
 
@@ -233,5 +234,6 @@
     MFillH fillp2("MHPointing",       "MTimeStarguider", "FillStarguider");
     fillp1.SetBit(MFillH::kDoNotDisplay);
-    //fillp2.SetNameTab("Drive");
+    fillp1.SetBit(MFillH::kCanSkip);
+    fillp2.SetBit(MFillH::kCanSkip);
 
     MFillH fill0a(&evt0a,             "MSignalCam",      "FillSignalCam");
@@ -258,36 +260,36 @@
 
     // Data
-    write.AddContainer("MHillas",       "Events");
-    write.AddContainer("MHillasExt",    "Events");
-    write.AddContainer("MHillasSrc",    "Events");
-    write.AddContainer("MImagePar",     "Events");
-    write.AddContainer("MNewImagePar",  "Events");
-    write.AddContainer("MRawEvtHeader", "Events");
-    write.AddContainer("MPointingPos",  "Events");
+    write.AddContainer("MHillas",                   "Events");
+    write.AddContainer("MHillasExt",                "Events");
+    write.AddContainer("MHillasSrc",                "Events");
+    write.AddContainer("MImagePar",                 "Events");
+    write.AddContainer("MNewImagePar",              "Events");
+    write.AddContainer("MRawEvtHeader",             "Events");
+    write.AddContainer("MPointingPos",              "Events");
 
     // Run Header
-    write.AddContainer("MRawRunHeader", "RunHeaders");
-    write.AddContainer("MBadPixelsCam", "RunHeaders");
-    write.AddContainer("MGeomCam",      "RunHeaders");
-    write.AddContainer("MObservatory",  "RunHeaders");
+    write.AddContainer("MRawRunHeader",             "RunHeaders");
+    write.AddContainer("MBadPixelsCam",             "RunHeaders");
+    write.AddContainer("MGeomCam",                  "RunHeaders");
+    write.AddContainer("MObservatory",              "RunHeaders");
 
     // Muon Setup
-    write.AddContainer("BinningRadius",            "RunHeaders");
-    write.AddContainer("BinningArcWidth",          "RunHeaders");
-    write.AddContainer("BinningRingBroadening",    "RunHeaders");
-    write.AddContainer("BinningSizeVsArcRadius",   "RunHeaders");
-    write.AddContainer("MMuonSetup",               "RunHeaders");
+    write.AddContainer("BinningRadius",             "RunHeaders");
+    write.AddContainer("BinningArcWidth",           "RunHeaders");
+    write.AddContainer("BinningRingBroadening",     "RunHeaders");
+    write.AddContainer("BinningSizeVsArcRadius",    "RunHeaders");
+    write.AddContainer("MMuonSetup",                "RunHeaders");
 
     if (ismc)
     {
         // Monte Carlo Data
-        write.AddContainer("MMcEvt",               "Events");
-        write.AddContainer("MMcTrig",              "Events");
+        write.AddContainer("MMcEvt",                "Events");
+        write.AddContainer("MMcTrig",               "Events");
         // Monte Carlo Run Headers
-        write.AddContainer("MMcRunHeader",         "RunHeaders");
-        write.AddContainer("MMcTrigHeader",        "RunHeaders");
-        write.AddContainer("MMcFadcHeader",        "RunHeaders");
-        write.AddContainer("MMcConfigRunHeader",   "RunHeaders");
-        write.AddContainer("MMcCorsikaRunHeader",  "RunHeaders");
+        write.AddContainer("MMcRunHeader",          "RunHeaders");
+        write.AddContainer("MMcTrigHeader",         "RunHeaders");
+        write.AddContainer("MMcFadcHeader",         "RunHeaders");
+        write.AddContainer("MMcConfigRunHeader",    "RunHeaders");
+        write.AddContainer("MMcCorsikaRunHeader",   "RunHeaders");
     }
     else
@@ -298,6 +300,6 @@
         write.AddContainer("MTimeDrive",            "Drive");
         // Starguider
-        write.AddContainer("MReportStarguider",     "Starguider");
-        write.AddContainer("MTimeStarguider",       "Starguider");
+        write.AddContainer("MReportStarguider",     "Starguider", kFALSE);
+        write.AddContainer("MTimeStarguider",       "Starguider", kFALSE);
         // Effective On Time
         writet.AddContainer("MEffectiveOnTime",     "EffectiveOnTime");
@@ -306,18 +308,18 @@
 
     // What to write in muon tree
-    writem.AddContainer("MMuonSearchPar", "Muons");
-    writem.AddContainer("MMuonCalibPar",  "Muons");
-    writem.AddContainer("MHillas",        "Muons");
-    writem.AddContainer("MHillasExt",     "Muons");
-    writem.AddContainer("MHillasSrc",     "Muons");
-    writem.AddContainer("MImagePar",      "Muons");
-    writem.AddContainer("MNewImagePar",   "Muons");
-    writem.AddContainer("MRawEvtHeader",  "Muons");
-    writem.AddContainer("MPointingPos",   "Muons");
+    writem.AddContainer("MMuonSearchPar",           "Muons");
+    writem.AddContainer("MMuonCalibPar",            "Muons");
+    writem.AddContainer("MHillas",                  "Muons");
+    writem.AddContainer("MHillasExt",               "Muons");
+    writem.AddContainer("MHillasSrc",               "Muons");
+    writem.AddContainer("MImagePar",                "Muons");
+    writem.AddContainer("MNewImagePar",             "Muons");
+    writem.AddContainer("MRawEvtHeader",            "Muons");
+    writem.AddContainer("MPointingPos",             "Muons");
     if (ismc)
     {
         // Monte Carlo Data
-        writem.AddContainer("MMcEvt",     "Muons");
-        writem.AddContainer("MMcTrig",    "Muons");
+        writem.AddContainer("MMcEvt",               "Muons");
+        writem.AddContainer("MMcTrig",              "Muons");
     }
 
@@ -344,6 +346,5 @@
     tlist2.AddToList(&fill0a);
     tlist2.AddToList(&fill0b);
-    //tlist2.AddToList(&poscalc);
-    //tlist2.AddToList(&poscorrect);
+    tlist2.AddToList(&poscalc);
     tlist2.AddToList(&hcalc);
     tlist2.AddToList(&fill1);
@@ -389,10 +390,22 @@
     // ------------------------------------------------------------
 
+    // Initialize histogram
+    MHSectorVsTime histdc;
+    histdc.SetNameTime("MTimeCurrents");
+    histdc.SetTitle("Mean of all DC Currents;;<I> [nA]");
+    /*
+     // Define area index [0=inner, 1=outer]
+     // TArrayI inner(1); inner[0] = 0; histdc.SetAreaIndex(inner);
+     */
+
+    // Task to fill the histogram
+    MFillH filldc(&histdc, "MCameraDC", "FillDC");
+    filldc.SetNameTab("Currents");
+
     MFillH fillw("MHWeather", "MTimeCC", "FillWeather");
-    //tlist2.AddToList(&fill6);
-    //tlist2.AddToList(&fill7);
-    //tlist2.AddToList(&fill9);
 
     MPointingPosCalc pcalc;
+
+    // ------------------------------------------------------------
 
     tlist.AddToList(ismc ? (MTask*)&readmc : (MTask*)&readreal);
@@ -404,4 +417,5 @@
         tlist.AddToList(&fillp1, "Drive");
         tlist.AddToList(&fillp2, "Starguider");
+        tlist.AddToList(&filldc, "Currents");
     }
     tlist.AddToList(&write);
Index: /trunk/MagicSoft/Mars/mpointing/MHPointing.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpointing/MHPointing.cc	(revision 7209)
+++ /trunk/MagicSoft/Mars/mpointing/MHPointing.cc	(revision 7210)
@@ -130,14 +130,9 @@
     fReportSG = (MReportStarguider*)plist->FindObject("MReportStarguider");
     if (!fReportSG)
-    {
-        *fLog << warn << "MReportStarguider not found... abort." << endl;
-        return kFALSE;
-    }
+        *fLog << warn << "MReportStarguider not found..." << endl;
+
     fReportCosy = (MReportDrive*)plist->FindObject("MReportDrive");
     if (!fReportCosy)
-    {
-        *fLog << warn << "MReportDrive not found... abort." << endl;
-        return kFALSE;
-    }
+        *fLog << warn << "MReportDrive not found..." << endl;
 
     // Reset Graphs
@@ -166,4 +161,10 @@
     if (t->GetName()==(TString)"MTimeStarguider")
     {
+        if (!fReportSG)
+        {
+            *fLog << err << "ERROR: fReportSG==NULL... abort." << endl;
+            return kFALSE;
+        }
+
         AddPoint(fBrightness, tm, fReportSG->GetSkyBrightness());
         AddPoint(fNumStars,   tm, fReportSG->GetNumIdentifiedStars());
@@ -184,6 +185,12 @@
     }
 
-    if (t->GetName()==(TString)"MTimeDrive")
-    {
+    if (fReportCosy && t->GetName()==(TString)"MTimeDrive")
+    {
+        if (!fReportCosy)
+        {
+            *fLog << err << "ERROR: fReportCosy==NULL... abort." << endl;
+            return kFALSE;
+        }
+
         AddPoint(fDevTimeCosy, tm, fReportCosy->GetAbsError()*60);
         if (fPosZd.GetY()[fPosZd.GetN()-1] != fReportCosy->GetNominalZd())
