Index: /trunk/MagicSoft/Mars/datacenter/macros/fillstar.C
===================================================================
--- /trunk/MagicSoft/Mars/datacenter/macros/fillstar.C	(revision 8933)
+++ /trunk/MagicSoft/Mars/datacenter/macros/fillstar.C	(revision 8934)
@@ -183,7 +183,6 @@
         return 2;
     }
-
-    Double_t max = TMath::MaxElement(g->GetN(), g->GetY());
-    TString maxhum = Form("%5.1f", max);
+    TString maxhum = Form("%5.1f", TMath::MaxElement(g->GetN(), g->GetY()));
+    TString avghum = Form("%5.1f", g->GetMean(2));
 
     g = (TGraph*)arr.FindObjectInCanvas("Temperature", "TGraph", "MHWeather");
@@ -193,7 +192,5 @@
         return 2;
     }
-
-    Double_t temp = g->GetMean(2);
-    TString avgtemp = Form("%5.1f", temp);
+    TString avgtemp = Form("%5.1f", g->GetMean(2));
 
     g = (TGraph*)arr.FindObjectInCanvas("WindSpeed", "TGraph", "MHWeather");
@@ -203,15 +200,21 @@
         return 2;
     }
-
-    Double_t wind = g->GetMean(2);
-    TString avgwind = Form("%5.1f", wind);
+    TString avgwind = Form("%5.1f", g->GetMean(2));
+
+    g = (TGraph*)arr.FindObjectInCanvas("Cloudiness", "TGraph", "MHWeather");
+    if (!g)
+        cout << "WARNING - Reading of Cloudiness failed." << endl;
+    TString avgclouds = g ? Form("%5.1f", g->GetMean(2)) : 0;
+    TString rmsclouds = g ? Form("%5.1f", g->GetRMS(2))  : 0;
+
+    g = (TGraph*)arr.FindObjectInCanvas("TempSky", "TGraph", "MHWeather");
+    if (!g)
+        cout << "WARNING - Reading of TempSky failed." << endl;
+    TString avgsky = g ? Form("%5.1f", g->GetMean(2)+200) : 0;
 
 
     g = (TGraph*)arr.FindObjectInCanvas("NumStars", "TGraph", "MHPointing");
     if (!g)
-    {
         cout << "WARNING - Reading of NumStars failed." << endl;
-//        return 2;
-    }
 
     Double_t numstarmed = g ? TMath::Median(g->GetN(), g->GetY()) : -1;
@@ -227,8 +230,6 @@
     }
 
-    Double_t numcormed = g ? TMath::Median(g->GetN(), g->GetY()) : -1;
-    TString numcorsmed = Form("%5.1f", numcormed);
-    Double_t numcorrms = g ? g->GetRMS(2) : -1;
-    TString numcorsrms = Form("%5.1f", numcorrms);
+    TString numcorsmed = Form("%5.1f", g ? TMath::Median(g->GetN(), g->GetY()) : -1);
+    TString numcorsrms = Form("%5.1f", g ? g->GetRMS(2) : -1);
 
     g = (TGraph*)arr.FindObjectInCanvas("Brightness", "TGraph", "MHPointing");
@@ -239,8 +240,6 @@
     }
 
-    Double_t brightnessmed = g ? TMath::Median(g->GetN(), g->GetY()) : -1;
-    TString skybrightnessmed = Form("%5.1f", brightnessmed);
-    Double_t brightnessrms = g ? g->GetRMS(2) : -1;
-    TString skybrightnessrms = Form("%5.1f", brightnessrms);
+    TString skybrightnessmed = Form("%5.1f", g ? TMath::Median(g->GetN(), g->GetY()) : -1);
+    TString skybrightnessrms = Form("%5.1f", g ? g->GetRMS(2) : -1);
 
 
@@ -267,9 +266,12 @@
     cout << "  Rate of sparks [Hz]      " << sparkrate << endl;
     cout << "  Maximum Humidity [%]     " << maxhum    << endl;
+    cout << "  Average Humidity [%]     " << avghum    << endl;
+    cout << "  Average WindSpeed [km/h] " << avgwind   << endl;
     cout << "  Average Temp [°C]        " << avgtemp   << endl;
-    cout << "  Average WindSpeed [km/h] " << avgwind   << endl;
-    cout << "  Number of Stars          " << numstarsmed      << " +/- " << numstarsrms       << endl;
-    cout << "  Number of cor. Stars     " << numcormed        << " +/- " << numcorrms         << endl;
-    cout << "  Skybrightness            " << skybrightnessmed << " +/- " << skybrightnessrms  << endl;
+    cout << "  Average Sky Temp [K]     " << avgsky    << endl;
+    cout << "  Cloundiness [%]          " << avgclouds        << " +/- " << rmsclouds        << endl;
+    cout << "  Number of Stars          " << numstarsmed      << " +/- " << numstarsrms      << endl;
+    cout << "  Number of cor. Stars     " << numcorsmed       << " +/- " << numcorsrms       << endl;
+    cout << "  Skybrightness            " << skybrightnessmed << " +/- " << skybrightnessrms << endl;
 
     TString vars = Form(" fMeanNumberIslands=%s,"
@@ -282,6 +284,10 @@
                         " fSparkRate=%s,"
                         " fMaxHumidity=%s,"
+                        " fAvgHumidity=%s, "
                         " fAvgTemperature=%s,"
                         " fAvgWindSpeed=%s,"
+                        " fAvgTempSky=%s,"
+                        " fAvgCloudiness=%s, "
+                        " fRmsCloudiness=%s, "
                         " fNumStarsMed=%s,"
                         " fNumStarsRMS=%s,"
@@ -295,5 +301,6 @@
                         muonrate.Data(), PSF.Data(),
                         datarate, sparkrate.Data(), maxhum.Data(),
-                        avgtemp.Data(), avgwind.Data(),
+                        avghum.Data(), avgtemp.Data(), avgwind.Data(),
+                        avgsky.Data(), avgclouds.Data(), rmsclouds.Data(),
                         numstarsmed.Data(), numstarsrms.Data(),
                         numcorsmed.Data(), numcorsrms.Data(),
Index: /trunk/MagicSoft/Mars/mhist/MHWeather.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHWeather.cc	(revision 8933)
+++ /trunk/MagicSoft/Mars/mhist/MHWeather.cc	(revision 8934)
@@ -18,5 +18,5 @@
 !   Author(s): Thomas Bretz, 05/2005 <mailto:tbretz@astro.uni-wuerzburg.de>
 !
-!   Copyright: MAGIC Software Development, 2000-2005
+!   Copyright: MAGIC Software Development, 2000-2008
 !
 !
@@ -27,5 +27,12 @@
 // MHWeather
 //
-// Display weather data and the corresponding event rate
+// Display weather and pyrometer data and the corresponding event rate
+//
+// Class Version 2:
+// ----------------
+//  - fSolarRadiation
+//  + fCloudiness
+//  + fTempSky
+//  + fTempAir
 //
 ////////////////////////////////////////////////////////////////////////////
@@ -44,4 +51,5 @@
 #include "MTime.h"
 #include "MReportCC.h"
+#include "MReportPyrometer.h"
 #include "MEventRate.h"
 
@@ -79,4 +87,5 @@
 //
 MHWeather::MHWeather(const char *name, const char *title)
+: fReportCC(0), fReportPyro(0), fRate(0)
 {
     fName  = name  ? name  : "MHWeather";
@@ -86,17 +95,26 @@
 
     fHumidity.SetNameTitle("Humidity", "Humidity");
-    fTemperature.SetNameTitle("Temperature", "Temperature");
-    fSolarRadiation.SetNameTitle("SolarRadiation", "Solar Radiation");
+    fTemperature.SetNameTitle("Temperature", "Temperature (red=weather station, black=pyrometer, blue=sky)");
     fWindSpeed.SetNameTitle("WindSpeed", "Wind Speed");
+
     fEventRate.SetNameTitle("EventRate", "Event Rate at CC-REPORT time");
+
+    fCloudiness.SetNameTitle("Cloudiness", "Cloudiness / Humidity");
+    fTempAir.SetNameTitle("TempAir", "Air temperature from Pyrometer");
+    fTempSky.SetNameTitle("TempSky", "Sky temperature from Pyrometer");
 
     InitGraph(fHumidity);
     InitGraph(fTemperature);
-    InitGraph(fSolarRadiation);
     InitGraph(fWindSpeed);
+
     InitGraph(fEventRate);
+
+    InitGraph(fCloudiness);
+    InitGraph(fTempAir);
+    InitGraph(fTempSky);
 
     fHumidity.SetMarkerColor(kBlue);
     fTemperature.SetMarkerColor(kRed);
+    fTempSky.SetMarkerColor(kBlue);
 }
 
@@ -108,6 +126,7 @@
 Bool_t MHWeather::SetupFill(const MParList *plist)
 {
-    fReport = (MReportCC*)plist->FindObject("MReportCC");
-    if (!fReport)
+    // Remark: This is called twice in the star-eventloop!
+    fReportCC = (MReportCC*)plist->FindObject("MReportCC");
+    if (!fReportCC)
     {
         *fLog << warn << "MReportCC not found... abort." << endl;
@@ -120,11 +139,17 @@
         return kFALSE;
     }
+
+    fReportPyro = (MReportPyrometer*)plist->FindObject("MReportPyrometer");
+    if (!fReportPyro)
+        *fLog << warn << "MReportPyrometer not found..." << endl;
 
     // Reset Graphs
     ResetGraph(fHumidity);
     ResetGraph(fTemperature);
-    ResetGraph(fSolarRadiation);
     ResetGraph(fWindSpeed);
     ResetGraph(fEventRate);
+    ResetGraph(fCloudiness);
+    ResetGraph(fTempAir);
+    ResetGraph(fTempSky);
 
     return kTRUE;
@@ -147,9 +172,19 @@
     const Double_t tm = t->GetAxisTime();
 
-    AddPoint(fTemperature,    tm, fReport->GetTemperature());
-    AddPoint(fHumidity,       tm, fReport->GetHumidity());
-    AddPoint(fSolarRadiation, tm, fReport->GetSolarRadiation());
-    AddPoint(fWindSpeed,      tm, fReport->GetWindSpeed());
-    AddPoint(fEventRate,      tm, fRate->GetRate());
+    AddPoint(fEventRate, tm, fRate->GetRate());
+
+    if (TString(t->GetName())=="MTimeCC")
+    {
+        AddPoint(fTemperature, tm, fReportCC->GetTemperature());
+        AddPoint(fHumidity,    tm, fReportCC->GetHumidity());
+        AddPoint(fWindSpeed,   tm, fReportCC->GetWindSpeed());
+    }
+
+    if (TString(t->GetName())=="MTimePyrometer" && fReportPyro)
+    {
+        AddPoint(fCloudiness, tm, fReportPyro->GetCloudiness());
+        AddPoint(fTempAir,    tm, fReportPyro->GetTempAir());
+        AddPoint(fTempSky,    tm, fReportPyro->GetTempSky()-200);
+    }
 
     return kTRUE;
@@ -204,13 +239,14 @@
 // Draw an axis on the right side of the histogram
 //
-void MHWeather::DrawRightAxis(const char *title) const
+void MHWeather::DrawRightAxis(const char *title, Int_t col) const
 {
     TGaxis *axis = new TGaxis(gPad->GetUxmax(), gPad->GetUymin(),
                               gPad->GetUxmax(), gPad->GetUymax(),
                               0, 1, 510, "+L");
+    axis->SetBit(TAxis::kRotateTitle);
     axis->SetName("RightAxis");
     axis->SetTitle(title);
-    axis->SetTitleOffset(0.9);
-    axis->SetTextColor(kRed);
+    axis->SetTitleOffset(1.2);
+    axis->SetTextColor(col);
     axis->SetBit(kCanDelete);
     axis->Draw();
@@ -236,7 +272,8 @@
     gPad->SetGridx();
     gPad->SetGridy();
-    fHumidity.Draw("AP");
-    fTemperature.Draw("P");
-    DrawRightAxis("T [\\circ C]");
+    fTemperature.Draw("AP");
+    fTempAir.Draw("P");
+    fTempSky.Draw("P");
+    DrawRightAxis("T_{sky}-200 [K]", kBlue);
 
     pad->cd(2);
@@ -244,5 +281,7 @@
     gPad->SetGridx();
     gPad->SetGridy();
-    fSolarRadiation.Draw("AP");
+    fHumidity.Draw("AP");
+    fCloudiness.Draw("P");
+    DrawRightAxis("Cloudiness [%]");
 
     pad->cd(3);
@@ -250,5 +289,5 @@
     gPad->SetGridx();
     gPad->SetGridy();
-    fEventRate.Draw("AP");
+    fWindSpeed.Draw("AP");
 
     pad->cd(4);
@@ -256,5 +295,5 @@
     gPad->SetGridx();
     gPad->SetGridy();
-    fWindSpeed.Draw("AP");
+    fEventRate.Draw("AP");
 }
 
@@ -267,28 +306,49 @@
         fHumidity.SetMaximum(100);
     }
+    if (fCloudiness.GetN()>0)
+    {
+        fCloudiness.SetMinimum(0);
+        fCloudiness.SetMaximum(100);
+    }
+
     if (fTemperature.GetN()>0)
     {
-        fTemperature.SetMinimum(-25);
-        fTemperature.SetMaximum(45);
+        fTemperature.SetMinimum(-2.5);
+        fTemperature.SetMaximum(27.5);
+    }
+    if (fTempSky.GetN()>0)
+    {
+        fTempSky.SetMinimum(-2.5);
+        fTempSky.SetMaximum(27.5);
     }
     if (fWindSpeed.GetN()>0)
         fWindSpeed.SetMinimum(0);
-    if (fSolarRadiation.GetN()>0)
-        fSolarRadiation.SetMinimum(0);
     if (fEventRate.GetN()>0)
         fEventRate.SetMinimum(0);
 
-    DrawGraph(fHumidity,       "H [%]");
-    DrawGraph(fSolarRadiation, "R [W/m^{2}]");
-    DrawGraph(fTemperature,    "T [\\circ C]");
-    DrawGraph(fWindSpeed,      "km/h");
-    DrawGraph(fEventRate,      "f [Hz]");
-
-    gPad->cd(1);
-
+    DrawGraph(fHumidity,    "Humidity [%]");
+    DrawGraph(fTemperature, "T [\\circ C]");
+    DrawGraph(fWindSpeed,   "km/h");
+    DrawGraph(fEventRate,   "f [Hz]");
+    DrawGraph(fCloudiness,  "Cloudiness [%]");
+    DrawGraph(fTempAir,     "T [\\circ C]");
+    DrawGraph(fTempSky,     "T_{sky}-200 [K]");
+
+    TVirtualPad *p = gPad;
+
+    p->cd(1);
     if (gPad)
     {
+        fTemperature.GetHistogram()->GetYaxis()->SetTitleColor(kRed);
+        //fTempSky.GetHistogram()->GetYaxis()->SetTitleColor(kBlue);
+        UpdateRightAxis(fTemperature); // Primary axis
+    }
+
+    p->cd(2);
+    if (gPad)
+    {
         fHumidity.GetHistogram()->GetYaxis()->SetTitleColor(kBlue);
-        UpdateRightAxis(fTemperature);
-    }
-}
+        fHumidity.GetHistogram()->GetYaxis()->SetTitleOffset(1.2);
+        UpdateRightAxis(fHumidity);    // Primary axis
+    }
+}
Index: /trunk/MagicSoft/Mars/mhist/MHWeather.h
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHWeather.h	(revision 8933)
+++ /trunk/MagicSoft/Mars/mhist/MHWeather.h	(revision 8934)
@@ -10,4 +10,5 @@
 
 class MReportCC;
+class MReportPyrometer;
 class MEventRate;
 
@@ -15,12 +16,17 @@
 {
 private:
-    TGraph fHumidity;        // 
-    TGraph fTemperature;     //
-    TGraph fWindSpeed;       //
-    TGraph fSolarRadiation;  //
-    TGraph fEventRate;       //
+    TGraph fHumidity;        // Humidity from weather station
+    TGraph fTemperature;     // Temperature from weather station
+    TGraph fWindSpeed;       // Wind Speed from weather station
 
-    MReportCC  *fReport;     //!
-    MEventRate *fRate;       //!
+    TGraph fEventRate;       // Event rate from event times
+
+    TGraph fCloudiness;      // Cloudiness from Pyrometer
+    TGraph fTempAir;         // Temperature of the air from Pyrometer
+    TGraph fTempSky;         // Temperature of the sky from Pyrometer
+
+    MReportCC        *fReportCC;    //! CC report with data from weather station
+    MReportPyrometer *fReportPyro;  //! Pyrometer report
+    MEventRate       *fRate;        //! Event rate
 
     void ResetGraph(TGraph &g) const;
@@ -29,5 +35,5 @@
     void DrawGraph(TGraph &g, const char *y=0) const;
     void UpdateRightAxis(TGraph &g) const;
-    void DrawRightAxis(const char *title) const;
+    void DrawRightAxis(const char *title, Int_t col=kBlack) const;
 
 public:
@@ -37,8 +43,11 @@
     Bool_t Fill(const MParContainer *par, const Stat_t w=1);
 
+    // If this is needed be aware that it would be called twice in star
+    // Bool_t Finalize()
+
     void Draw(Option_t *opt="");
     void Paint(Option_t *opt="");
 
-    ClassDef(MHWeather, 1) // Histogram to display weather data
+    ClassDef(MHWeather, 2) // Histogram to display weather and pyrometer data
 };
 
Index: /trunk/MagicSoft/Mars/mjobs/MJStar.cc
===================================================================
--- /trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 8933)
+++ /trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 8934)
@@ -338,5 +338,6 @@
         write.AddTree("Starguider", kFALSE);
         write.AddTree("Pyrometer",  kFALSE);
-        writet.AddTree("EffectiveOnTime");
+        writet.AddContainer("MEffectiveOnTime",     "EffectiveOnTime");
+        writet.AddContainer("MTimeEffectiveOnTime", "EffectiveOnTime");
     }
 
@@ -474,5 +475,7 @@
     //filltst.SetNameTab("Test");
 
-    MFillH fillw("MHWeather", "MTimeCC", "FillWeather");
+    MFillH fillw1("MHWeather", "MTimeCC",        "FillWeather");
+    MFillH fillw2("MHWeather", "MTimePyrometer", "FillPyrometer");
+    fillw2.SetBit(MFillH::kDoNotDisplay);
 
     // instantiate camera histogram containers
@@ -504,5 +507,6 @@
     {
         // initiate task list
-        tlist.AddToList(&fillw,   "CC");
+        tlist.AddToList(&fillw1,  "CC");
+        tlist.AddToList(&fillw2,  "Pyrometer");
         tlist.AddToList(&fillp1,  "Drive");
         tlist.AddToList(&fillp2,  "Starguider");
Index: /trunk/MagicSoft/Mars/mreport/MReportPyrometer.cc
===================================================================
--- /trunk/MagicSoft/Mars/mreport/MReportPyrometer.cc	(revision 8933)
+++ /trunk/MagicSoft/Mars/mreport/MReportPyrometer.cc	(revision 8934)
@@ -43,5 +43,5 @@
 // is expected.
 //
-MReportPyrometer::MReportPyrometer() : MReport("PYRO-REPORT", kFALSE),
+MReportPyrometer::MReportPyrometer() : MReport("PYRO-REPORT"),
     fTempSky(-1), fTempAir(-1), fCloudiness(-1), fLidOpen(kFALSE)
 
@@ -72,5 +72,6 @@
 
     str.Remove(0, len);
+    str = str.Strip(TString::kBoth);
 
-    return str.Strip(TString::kBoth).IsNull() ? kTRUE : kCONTINUE;
+    return str=="OVER" ? kTRUE : kCONTINUE;
 }
