Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 6844)
+++ trunk/MagicSoft/Mars/Changelog	(revision 6845)
@@ -21,4 +21,22 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2005/03/17 Thomas Bretz
+
+   * callisto.cc:
+     - added new option moon
+     - use light condition from MSequence to determin light condition
+       automatically
+
+   * mjobs/MJPedestal.h:
+     - allow setting SetUseHists also to kFALSE
+
+   * mjobs/MSequence.[h,cc]:
+     - added fLightCondition
+
+   * mcalib/MCalibrateData.cc:
+     - undocumented change from Markus Gaug
+
+
+
  2005/03/16 Thomas Bretz
 
Index: trunk/MagicSoft/Mars/callisto.cc
===================================================================
--- trunk/MagicSoft/Mars/callisto.cc	(revision 6844)
+++ trunk/MagicSoft/Mars/callisto.cc	(revision 6845)
@@ -83,4 +83,5 @@
     gLog << "   --use-test                Apply calibration constants to same calibration" << endl;
     gLog << "                             file (for testing, calibration mode only)" << endl;
+    gLog << "   --moon                    Force using pedestal fits instead of calculated RMS" << endl;
     gLog << "   --config=callisto.rc      Resource file [default=callisto.rc]" << endl;
     gLog << endl;
@@ -166,4 +167,5 @@
     const Bool_t  kUseTest    = arg.HasOnlyAndRemove("--use-test");
     const Bool_t  kDebugMem   = arg.HasOnlyAndRemove("--debug-mem");
+          Bool_t  kMoon       = arg.HasOnlyAndRemove("--moon");
     Int_t kDebugEnv = arg.HasOnlyAndRemove("--debug-env") ? 1 : 0;
     kDebugEnv = arg.GetIntAndRemove("--debug-env=", kDebugEnv);
@@ -287,5 +289,10 @@
     if (kPrintFound)
         PrintFiles(seq, kInpathD, kDataType==MJCalib::kIsUseRawData, kTRUE);
-/*
+
+    if (seq.HasMoon())
+        kMoon = kTRUE;
+
+
+    /*
     //
     // Check for existance of all files
@@ -346,4 +353,6 @@
         job1.SetPathData(kInpathD);
         job1.SetDataType(kDataType);
+        job1.SetUseHists(kMoon);
+
 
         job1.SetExtractionFundamental();
@@ -375,4 +384,5 @@
         job2.SetPathData(kInpathD);
         job2.SetDataType(kDataType);
+        job2.SetUseHists(kMoon);
         // job1.SetPathOut(kOutpathC); // not yet needed
         // job1.SetPathIn(kInpathC);   // not yet needed
@@ -480,4 +490,5 @@
         job1.SetUseData();
         job1.SetExtractionFundamental();
+        job1.SetUseHists(kMoon);
 
         if (!job1.ProcessFile())
@@ -515,4 +526,5 @@
         job2.SetPedestals(job1.GetPedestalCam());
         job2.SetBadPixels(job1.GetBadPixels());
+        job2.SetUseHists(kMoon);
 
         if (!job2.ProcessFile())
@@ -550,4 +562,5 @@
         job3.SetPedestals(job1.GetPedestalCam());
         job3.SetBadPixels(job1.GetBadPixels());
+        job3.SetUseHists(kMoon);
 
         if (!job3.ProcessFile())
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 6844)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 6845)
@@ -672,10 +672,20 @@
                 {
                   signal    = sig.GetExtractedSignalHiGain()*1.5;
-                  signalErr = sig.GetExtractedSignalHiGain()*2.;
+                  signalErr = sig.GetExtractedSignalHiGain()*0.5;
                 }
               else
                 {
-                  signal    = sig.GetExtractedSignalLoGain()*fHiLoConv   [pixidx];
-                  signalErr = sig.GetExtractedSignalLoGain()*fHiLoConvErr[pixidx];
+                  const Float_t siglo = sig.GetExtractedSignalLoGain();
+
+                  if (siglo > 0.1) // low-gain signal has been extracted successfully
+                    {
+                      signal    = siglo*fHiLoConv   [pixidx];
+                      signalErr = siglo*fHiLoConvErr[pixidx];
+                    }
+                  else  // low-gain signal has not been extracted successfully, get a rough estimate from the high-gain
+                    {
+                      signal    = sig.GetExtractedSignalHiGain()*1.5;
+                      signalErr = sig.GetExtractedSignalHiGain()*0.5;
+                    }
                 }
             }
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 6844)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 6845)
@@ -112,5 +112,5 @@
     void SetExtractor(MExtractor* ext);
     void SetUseData()                           { fExtractType = kUseData;   }
-    void SetUseHists()                          { fIsUseHists = kTRUE;  }
+    void SetUseHists( const Bool_t b=kTRUE)     { fIsUseHists = b;  }
     void SetUsePedRun()                         { fExtractType = kUsePedRun; }
     void SetDataCheckDisplay()                  { fDisplayType = kDisplayDataCheck; }
Index: trunk/MagicSoft/Mars/mjobs/MSequence.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MSequence.cc	(revision 6844)
+++ trunk/MagicSoft/Mars/mjobs/MSequence.cc	(revision 6845)
@@ -248,4 +248,20 @@
 }
 
+LightCondition_t MSequence::ReadLightCondition(TEnv &env) const
+{
+    TString str = env.GetValue("LightCondition", "n/a");
+    if (!str.CompareTo("n/a", TString::kIgnoreCase))
+        return kNA;
+    if (!str.CompareTo("NoMoon", TString::kIgnoreCase))
+        return kNoMoon;
+    if (!str.CompareTo("Twilight", TString::kIgnoreCase))
+        return kTwilight;
+    if (!str.CompareTo("Moon", TString::kIgnoreCase))
+        return kMoon;
+
+    gLog << warn << "MSequence: LightCondition-tag not n/a, nomoon, twilight or moon." << endl;
+    return kNA;
+}
+
 // --------------------------------------------------------------------------
 //
@@ -269,4 +285,6 @@
     fNumEvents = env.GetValue("NumEvents", -1);
     fPeriod    = env.GetValue("Period",    -1);
+
+    fLightCondition = ReadLightCondition(env);
 
     str = env.GetValue("Start", "");
