Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 7841)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 7842)
@@ -18,4 +18,30 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2006/08/04 Thomas Bretz
+
+   * mhvstime/MHVsTime.cc:
+     - fixed a bug which made the argument of SetMinimum be ignored
+
+   * mpointing/MHPointing.cc:
+     - changed position of SetMinimum and SetMaximum
+
+   * msignal/MArrivalTimeCam.[h,cc]:
+     - added new options in GetPixelContent
+     - added some new member functions
+
+   * msignal/MExtractedSignalCam.[h,cc]:
+     - added new options in GetPixelContent
+     - added some new member functions
+
+   * msignal/MExtractedSignalPix.h:
+     - added some new member function
+     - added some comments
+
+   * msql/MSQLServer.cc:
+     - allow to setup different password for differend users and different
+       users for different databases in sql.rc
+
+
+
  2006/08/03 Thomas Bretz
 
Index: /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc	(revision 7841)
+++ /trunk/MagicSoft/Mars/mhvstime/MHVsTime.cc	(revision 7842)
@@ -126,5 +126,5 @@
 {
     if (fGraph)
-        fGraph->SetMinimum(0);
+        fGraph->SetMinimum(min);
 }
 
Index: /trunk/MagicSoft/Mars/mpointing/MHPointing.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpointing/MHPointing.cc	(revision 7841)
+++ /trunk/MagicSoft/Mars/mpointing/MHPointing.cc	(revision 7842)
@@ -111,10 +111,4 @@
     //InitGraph(fPosAz);
 
-    fDevTimeSG.SetMinimum(0);
-    fDevTimeCosy.SetMinimum(0);
-    fBrightness.SetMinimum(0);
-    fNumStars.SetMinimum(0);
-    fNumStarsCor.SetMinimum(0);
-
     fDevTimeSG.SetMarkerColor(kBlue);
     fDevZd.SetMarkerColor(kBlue);
@@ -324,4 +318,16 @@
 void MHPointing::Paint(Option_t *o)
 {
+    // If this is set to early the plot remains empty in root 5.12/00
+    if (fDevTimeSG.GetN()>0)
+        fDevTimeSG.SetMinimum(0);
+    if (fDevTimeCosy.GetN()>0)
+        fDevTimeCosy.SetMinimum(0);
+    if (fBrightness.GetN()>0)
+        fBrightness.SetMinimum(0);
+    if (fNumStars.GetN()>0)
+        fNumStars.SetMinimum(0);
+    if (fNumStarsCor.GetN()>0)
+        fNumStarsCor.SetMinimum(0);
+
     DrawGraph(fDevTimeSG,   "\\Delta [arcmin]");
     DrawGraph(fDevTimeCosy, "\\Delta [arcmin]");
Index: /trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc	(revision 7841)
+++ /trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc	(revision 7842)
@@ -138,36 +138,52 @@
 Bool_t MArrivalTimeCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
 {
+    if (idx>=GetSize())
+        return kFALSE;
+
+    const MArrivalTimePix &pix = (*this)[idx];
+
     switch (type)
     {
     case 0:
-        val = (*this)[idx].GetArrivalTimeHiGain();
-        break;
+        val = pix.GetArrivalTimeHiGain();
+        return pix.IsHiGainValid();
+
     case 1:
-        val = (*this)[idx].GetArrivalTimeHiGainError();
-        break;
+        val = pix.GetArrivalTimeHiGainError();
+        return val>0;
+
     case 2:
-        val = (*this)[idx].GetArrivalTimeLoGain();
-        break;
+        val = pix.GetArrivalTimeLoGain();
+        return pix.IsLoGainValid();
+
     case 3:
-        val = (*this)[idx].GetArrivalTimeLoGainError();
-        break;
+        val = pix.GetArrivalTimeLoGainError();
+        return val>0;
+
     case 4:
     case 6:
-	if ((*this)[idx].GetNumHiGainSaturated() > 0)
-	    val = (*this)[idx].GetArrivalTimeLoGain();
-	else
-	    val = (*this)[idx].GetArrivalTimeHiGain();
-        break;
+        val = pix.GetArrivalTime();
+        return pix.IsValid();
+
+        // This is for the case the signal has been
+        // extracted from lo- and hi-gain
     case 7:
-        if ((*this)[idx].GetNumHiGainSaturated() == 0)
+        if (!pix.IsLoGainValid() || !pix.IsHiGainValid())
             return kFALSE;
 
-        val = (*this)[idx].GetArrivalTimeHiGain()-(*this)[idx].GetArrivalTimeLoGain();
-        return kTRUE;
+        val = pix.GetArrivalTimeLoGain()-pix.GetArrivalTimeHiGain();
+
+        if (pix.GetArrivalTimeHiGain()<3 || pix.GetArrivalTimeHiGain()>12 ||
+            pix.GetArrivalTimeLoGain()<3 || pix.GetArrivalTimeLoGain()>12)
+            return kFALSE;
+
+        val = pix.GetArrivalTimeLoGain()-pix.GetArrivalTimeHiGain();
+        return TMath::Abs(val)<2; // FIXME: Is this a good value?
 
     default:
 	return kFALSE;
     }
-    return val>=0;
+
+    return kFALSE;
 }
 
Index: /trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc	(revision 7841)
+++ /trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc	(revision 7842)
@@ -154,22 +154,41 @@
 Bool_t MExtractedSignalCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
 {
+    if (idx>=GetSize())
+        return kFALSE;
+
+    const MExtractedSignalPix &pix = (*this)[idx];
+
     switch (type)
     {
     case 0:
-        val = (*this)[idx].GetExtractedSignalHiGain();
-        break;
+        val = pix.GetExtractedSignalHiGain();
+        return pix.IsHiGainValid();
+
     case 1:
-        val = (*this)[idx].GetExtractedSignalHiGainError();
-        break;
+        val = pix.GetExtractedSignalHiGainError();
+        return val>0;
+
     case 2:
-        val = (*this)[idx].GetExtractedSignalLoGain();
-        break;
+        val = pix.GetExtractedSignalLoGain();
+        return pix.IsLoGainValid();
+
     case 3:
-        val = (*this)[idx].GetExtractedSignalLoGainError();
-        break;
+        val = pix.GetExtractedSignalLoGainError();
+        return val>0;
+
+        // This is for the case the signal has been
+        // extracted from lo- and hi-gain
+    case 4:
+        if (!pix.IsLoGainValid() || !pix.IsHiGainValid())
+            return kFALSE;
+
+        val = pix.GetExtractedSignalHiGain()/pix.GetExtractedSignalLoGain();
+        return pix.GetExtractedSignalLoGain()>2 && val<25;
+
     default:
 	return kFALSE;
     }
-    return val>=0;
+
+    return kFALSE;
 }
 
Index: /trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h
===================================================================
--- /trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h	(revision 7841)
+++ /trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h	(revision 7842)
@@ -15,6 +15,6 @@
   Float_t fExtractedSignalLoGainError; // error of the mean value of the extracted signal
 
-  Byte_t fNumHiGainSaturated;
-  Byte_t fNumLoGainSaturated;
+  Byte_t fNumHiGainSaturated;          // Number of first hi-gain slice which has saturated (could be negative if already the first slice saturates)
+  Byte_t fNumLoGainSaturated;          // Number of first lo-gain slices which have saturated
 
 public:
@@ -40,4 +40,6 @@
 
   Bool_t IsLoGainUsed()                   const { return fNumHiGainSaturated>0;        }
+  Bool_t IsLoGainValid()                  const { return fExtractedSignalLoGainError>=0 && fNumLoGainSaturated==0; }
+  Bool_t IsHiGainValid()                  const { return fExtractedSignalHiGainError>=0 && fNumHiGainSaturated==0; }
   Bool_t IsValid()                        const;   
 
Index: /trunk/MagicSoft/Mars/msql/MSQLServer.cc
===================================================================
--- /trunk/MagicSoft/Mars/msql/MSQLServer.cc	(revision 7841)
+++ /trunk/MagicSoft/Mars/msql/MSQLServer.cc	(revision 7842)
@@ -540,24 +540,26 @@
 void MSQLServer::InitEnv(TEnv &env, const char *prefix)
 {
-    TString url; 
-    TString user;
-    TString pass;
-    TString db;
+    TString url  = env.GetValue("URL",      "");
+    TString db   = env.GetValue("Database", "");
+    TString user = env.GetValue("User",     "");
+    TString pass = env.GetValue("Password", "");
+
+    user = env.GetValue(Form("%s.User", db.Data()), user);
+
+    pass = env.GetValue(Form("%s.Password", user.Data()), pass);
+    pass = env.GetValue(Form("%s.%s.Password", db.Data(), user.Data()), pass);
 
     if (prefix)
     {
-        url  = env.GetValue(Form("%s.URL", prefix),      "");
-        user = env.GetValue(Form("%s.User", prefix),     "");
-        pass = env.GetValue(Form("%s.Password", prefix), "");
-        db   = env.GetValue(Form("%s.Database", prefix), "");
-    }
-    if (url.IsNull())
-        url  = env.GetValue("URL",      "");
-    if (user.IsNull())
-        user = env.GetValue("User",     "");
-    if (pass.IsNull())
-        pass = env.GetValue("Password", "");
-    if (db.IsNull())
-        db = env.GetValue("Database",   "");
+        url = env.GetValue(Form("%s.URL", prefix), url);
+        db  = env.GetValue(Form("%s.Database", prefix), db);
+
+        user = env.GetValue(Form("%s.User", prefix), user);
+        user = env.GetValue(Form("%s.%s.User", prefix, db.Data()), user);
+
+        pass = env.GetValue(Form("%s.Password", prefix), pass);
+        pass = env.GetValue(Form("%s.%s.Password", prefix, user.Data()), pass);
+        pass = env.GetValue(Form("%s.%s.%s.Password", prefix, db.Data(), user.Data()), pass);
+    }
 
     if (user.IsNull() && pass.IsNull())
