Index: trunk/Mars/fact/processing/magicweather.C
===================================================================
--- trunk/Mars/fact/processing/magicweather.C	(revision 18942)
+++ trunk/Mars/fact/processing/magicweather.C	(revision 18943)
@@ -1,3 +1,3 @@
-void magictemp(const char *fname, double beg=0, double end=100000)
+void magicweather(const char *fname, double beg=0, double end=100000)
 {
     fits file(fname);
@@ -7,7 +7,12 @@
 
     Double_t time;
-    Float_t temp;
-    file.SetPtrAddress("Time", &time);
-    file.SetPtrAddress("T", &temp);
+    Float_t temp, hum, pres, dew, wind, gust;
+    file.SetPtrAddress("Time",  &time);
+    file.SetPtrAddress("T",     &temp);
+    file.SetPtrAddress("H",     &hum);
+    file.SetPtrAddress("P",     &pres);
+    file.SetPtrAddress("T_dew", &dew);
+    file.SetPtrAddress("v",     &wind);
+    file.SetPtrAddress("v_max", &gust);
 
     UInt_t offset = file.GetUInt("MJDREF");
@@ -18,10 +23,26 @@
         end+=offset;
 
-    double avg  = 0;
-    double rms  = 0;
     int    cnt  = 0;
+    double avg_t  = 0;
+    double rms_t  = 0;
+    double avg_h  = 0;
+    double rms_h  = 0;
+    double avg_p  = 0;
+    double rms_p  = 0;
+    double avg_d  = 0;
+    double rms_d  = 0;
+    double avg_w  = 0;
+    double rms_w  = 0;
+    double avg_g  = 0;
+    double rms_g  = 0;
 
-    double last = -1;
+    double last_t = -1;
+    double last_h = -1;
+    double last_p = -1;
+    double last_d = -1;
+    double last_w = -1;
+    double last_g = -1;
     double diff = -1;
+    double diff2 = -1;
 
     while (file.GetNextRow())
@@ -31,15 +52,43 @@
 
         if  (time>end)
+        {
+            diff2 = time-end;
+            if (diff2<diff)
+            {
+                last_t = temp;
+                last_h = hum;
+                last_p = pres;
+                last_d = dew;
+                last_w = wind;
+                last_g = gust;
+                diff=diff2;
+            }
             break;
+        }
 
         if (time<beg)
         {
-            last = temp;
+            last_t = temp;
+            last_h = hum;
+            last_p = pres;
+            last_d = dew;
+            last_w = wind;
+            last_g = gust;
             diff = beg-time;
             continue;
         }
 
-        avg += temp;
-        rms += temp*temp;
+        avg_t += temp;
+        rms_t += temp*temp;
+        avg_h += hum;
+        rms_h += hum*hum;
+        avg_p += pres;
+        rms_p += pres*pres;
+        avg_d += dew;
+        rms_d += dew*dew;
+        avg_w += wind;
+        rms_w += wind*wind;
+        avg_g += gust;
+        rms_g += gust*gust;
         cnt ++;
     }
@@ -47,16 +96,36 @@
     if (cnt==0)
     {
-        if (diff<5./24/3600)
+        if (diff>5./24/3600)
             return;
 
-        cout << "result " << last << " 0 " << endl;
+        //only give output if values within 5 min before/after are available
+        cout << "result " << last_t << " 0 "  << last_h << " 0 "
+            << last_p << " 0 "  << last_d << " 0 "
+            << last_w << " 0 "  << last_g << " 0 " << endl;
         return;
     }
 
-    avg /= cnt;
-    rms /= cnt;
+    avg_t /= cnt;
+    rms_t /= cnt;
+    avg_h /= cnt;
+    rms_h /= cnt;
+    avg_p /= cnt;
+    rms_p /= cnt;
+    avg_d /= cnt;
+    rms_d /= cnt;
+    avg_w /= cnt;
+    rms_w /= cnt;
+    avg_g /= cnt;
+    rms_g /= cnt;
 
-    rms = sqrt(rms-avg*avg);
+    rms_t = sqrt(rms_t-avg_t*avg_t);
+    rms_h = sqrt(rms_h-avg_h*avg_h);
+    rms_p = sqrt(rms_p-avg_p*avg_p);
+    rms_d = sqrt(rms_d-avg_d*avg_d);
+    rms_w = sqrt(rms_w-avg_w*avg_w);
+    rms_g = sqrt(rms_g-avg_g*avg_g);
 
-    cout << "result " << avg << " " << rms << endl;
+    cout << "result " << avg_t << " " << rms_t << " "  << avg_h << " " << rms_h << " "
+        << avg_p << " " << rms_p << " "  << avg_d << " " << rms_d << " "
+        << avg_w << " " << rms_w << " "  << avg_g << " " << rms_g << " " << endl;
 }
