Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5700)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5701)
@@ -20,4 +20,27 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2005/01/05 Thomas Bretz
+
+   * mbase/MStatusDisplay.cc:
+     - fixed some lines in pulldown-menus
+     - add TPads to ListOfCleanups in ClonePad (workaround!)
+
+   * mcalib/MCalibrationBlindPix.cc, mcalib/MCalibrationChargeCalc.cc,
+     mhcalib/MHCalibrationRelTimeCam.cc:
+     - made some output lines fit into convinience window of 80 col
+
+   * mhist/MHCamEvent.cc:
+     - make sure that x-axis has correct title
+
+   * msignal/MArrivalTimePix.cc:
+     - init error to -1 which is a obviously non valid value
+     - fixed IsValid() which gave wrong results
+
+   * msignal/MExtractTimeAndCharge.cc, msignal/MExtractedSignalPix.cc:
+     - made sure that LoGain is flagged non-valid if no lo-gain exists
+     - push time back at the edge of the allowed limits if outside
+
+
 
 
Index: trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 5701)
@@ -188,8 +188,8 @@
     filemenu->AddEntry("New &Browser",  kFileBrowser);
     filemenu->AddSeparator();
-    filemenu->AddEntry("Save As status.&ps",   kFileSaveAsPS);
-    filemenu->AddEntry("Save As status.&gif",  kFileSaveAsGIF);
-    filemenu->AddEntry("Save As status.&C",    kFileSaveAsC);
-    filemenu->AddEntry("Save As status.&root", kFileSaveAsRoot);
+    filemenu->AddEntry("Save status.&ps",   kFileSaveAsPS);
+    filemenu->AddEntry("Save status.&gif",  kFileSaveAsGIF);
+    filemenu->AddEntry("Save status.&C",    kFileSaveAsC);
+    filemenu->AddEntry("Save status.&root", kFileSaveAsRoot);
     filemenu->AddSeparator();
     filemenu->AddEntry("&Open...",             kFileOpen);
@@ -212,10 +212,10 @@
     tabmenu->AddEntry("Previous [&-]",       kTabPrevious);
     tabmenu->AddSeparator();
-    tabmenu->AddEntry("Save As tab-i.&ps",   kTabSaveAsPS);
-    tabmenu->AddEntry("Save As tab-i.&gif",  kTabSaveAsGIF);
-    tabmenu->AddEntry("Save As tab-i.&C",    kTabSaveAsC);
-    tabmenu->AddEntry("Save As tab-i.&root", kTabSaveAsRoot);
+    tabmenu->AddEntry("Save tab-i.&ps",   kTabSaveAsPS);
+    tabmenu->AddEntry("Save tab-i.&gif",  kTabSaveAsGIF);
+    tabmenu->AddEntry("Save tab-i.&C",    kTabSaveAsC);
+    tabmenu->AddEntry("Save tab-i.&root", kTabSaveAsRoot);
     tabmenu->AddSeparator();
-    tabmenu->AddEntry("Save &As...",         kTabSaveAs);
+    tabmenu->AddEntry("Save tab &As...",         kTabSaveAs);
     tabmenu->AddSeparator();
     tabmenu->AddEntry("Re&move",             kTabRemove);
@@ -1625,4 +1625,9 @@
         // Now make sure that the clones are deleted at a later time
         clone->SetBit(kCanDelete);
+
+        // FIXME: This is a workaround for the problem with the MAstroCatalog in
+        // MHFalseSource. It doesn't harm. We'll still try to find the reason
+        if (clone->IsA()==TPad::Class())
+            gROOT->GetListOfCleanups()->Add(clone);
 
         // Add the clone and its draw-option to the current pad
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc	(revision 5701)
@@ -62,4 +62,5 @@
 
 using namespace std;
+
 const Float_t MCalibrationBlindPix::fgArea       = 100;
 const Float_t MCalibrationBlindPix::fgAttGreen   = 1.97;
@@ -81,4 +82,5 @@
 const Float_t MCalibrationBlindPix::fgCollEffCT1   = 0.90; 
 const Float_t MCalibrationBlindPix::fgCollEffErr   = 0.05; 
+
 // --------------------------------------------------------------------------
 //
@@ -226,5 +228,5 @@
   pix.fPixId      = fPixId;
   pix.fFlags      = fFlags;
-  pix.fArea       = fArea;                     
+  pix.fArea       = fArea;
   pix.fAreaErr    = fAreaErr;                     
   pix.fColor      = fColor;
@@ -233,26 +235,26 @@
   // Copy arrays
   //
-  pix.fAtt        = fAtt;   
-  pix.fAttErr     = fAttErr;            
-  pix.fQE         = fQE;                       
-  pix.fQEErr      = fQEErr;                    
-  pix.fCollEff    = fCollEff;                  
-  pix.fCollEffErr = fCollEffErr;               
- 
-  pix.fLambda                  = fLambda;                   
-  pix.fLambdaCheck             = fLambdaCheck;              
-  pix.fLambdaCheckErr          = fLambdaCheckErr;           
-  pix.fLambdaVar               = fLambdaVar;                
-  pix.fFluxInsidePlexiglass    = fFluxInsidePlexiglass;     
-  pix.fFluxInsidePlexiglassVar = fFluxInsidePlexiglassVar;  
-  pix.fMu0       = fMu0;                      
-  pix.fMu0Err    = fMu0Err;                   
-  pix.fMu1       = fMu1;                      
-  pix.fMu1Err    = fMu1Err;                   
-  pix.fSigma0    = fSigma0;                   
-  pix.fSigma0Err = fSigma0Err;                
-  pix.fSigma1    = fSigma1;                   
-  pix.fSigma1Err = fSigma1Err;                
- 
+  pix.fAtt        = fAtt;
+  pix.fAttErr     = fAttErr;
+  pix.fQE         = fQE;
+  pix.fQEErr      = fQEErr;
+  pix.fCollEff    = fCollEff;
+  pix.fCollEffErr = fCollEffErr;
+
+  pix.fLambda                  = fLambda;
+  pix.fLambdaCheck             = fLambdaCheck;
+  pix.fLambdaCheckErr          = fLambdaCheckErr;
+  pix.fLambdaVar               = fLambdaVar;
+  pix.fFluxInsidePlexiglass    = fFluxInsidePlexiglass;
+  pix.fFluxInsidePlexiglassVar = fFluxInsidePlexiglassVar;
+  pix.fMu0       = fMu0;
+  pix.fMu0Err    = fMu0Err;
+  pix.fMu1       = fMu1;
+  pix.fMu1Err    = fMu1Err;
+  pix.fSigma0    = fSigma0;
+  pix.fSigma0Err = fSigma0Err;
+  pix.fSigma1    = fSigma1;
+  pix.fSigma1Err = fSigma1Err;
+
 }
 
@@ -523,6 +525,6 @@
 
   *fLog << inf << GetDescriptor() 
-        << ": Blind Pixel Nr. " << fPixId << ": Photon flux [ph/mm^2] inside Plexiglass: " 
-        << Form("%5.3f%s%5.3f",fFluxInsidePlexiglass," +- ",GetFluxInsidePlexiglassErr()) << endl;
+      << ": BlindPix #" << fPixId << ": Flux [ph/mm^2] inside Plexiglass: "
+      << Form("%5.3f +- %5.3f",fFluxInsidePlexiglass, GetFluxInsidePlexiglassErr()) << endl;
 
   return kTRUE;
@@ -533,27 +535,18 @@
   
   *fLog << all << GetDescriptor() 
-        << Form("%s%3i","BlindPixel: "       ,GetPixId())
-        << Form("%s%4.2f%s%4.2f","  Lambda: ",GetLambda(),"+-",GetLambdaErr())
-        << Form("%s%4.2f%s%4.2f","  Mu0: "   ,GetMu0(),   "+-",GetMu0Err())
-        << Form("%s%4.2f%s%4.2f","  Mu1: "   ,GetMu1(),   "+-",GetMu1Err()) 
-        << Form("%s%4.2f%s%4.2f","  Sigma0: ",GetSigma0(),"+-",GetSigma0Err())
-        << Form("%s%4.2f%s%4.2f","  Sigma1: ",GetSigma1(),"+-",GetSigma1Err())
+        << Form("BlindPixel: %3i"         ,GetPixId())
+        << Form("  Lambda: %4.2f +- %4.2f",GetLambda(),GetLambdaErr())
+        << Form("  Mu0: %4.2f +- %4.2f"   ,GetMu0(),   GetMu0Err())
+        << Form("  Mu1: %4.2f +- %4.2f"   ,GetMu1(),   GetMu1Err())
+        << Form("  Sigma0: %4.2f +- %4.2f",GetSigma0(),GetSigma0Err())
+        << Form("  Sigma1: %4.2f +- %4.2f",GetSigma1(),GetSigma1Err())
         << endl;
   *fLog << all
         << " Pedestal Fit OK? :" << IsPedestalFitOK() 
-        << Form("%s%4.2f%s%4.2f","  Lambda (Check): " ,GetLambdaCheck(),"+-",GetLambdaCheckErr()) 
+        << Form("  Lambda (Check): %4.2f +- %4.2f",GetLambdaCheck(),GetLambdaCheckErr())
         << endl;
   *fLog << all
         << " Flux available? :" << IsFluxInsidePlexiglassAvailable() 
-        << Form("%s%4.2f%s%4.2f","  Flux: " ,GetFluxInsidePlexiglass(),"+-",GetFluxInsidePlexiglassErr())
+        << Form("  Flux: %4.2f +- %4.2f",GetFluxInsidePlexiglass(),GetFluxInsidePlexiglassErr())
         << endl;
 }
-
-
-
-
-
-
-
-
-
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 5701)
@@ -810,5 +810,5 @@
                     Form("%s%2.1f%s","Signal Error bigger than ",fChargeRelErrLimit," times Mean Signal:   "));
   PrintUncalibrated(MBadPixelsPix::kLoGainSaturation,    
-                    "Pixels with Low Gain Saturation:                  ");
+                    "Low Gain Saturation:                             ");
   PrintUncalibrated(MBadPixelsPix::kMeanTimeInFirstBin, 
                     Form("%s%2.1f%s","Mean Abs. Arr. Time in First ",1.," Bin(s):          "));
@@ -824,17 +824,17 @@
 
   PrintUncalibrated(MBadPixelsPix::kChargeSigmaNotValid, 
-                    "Signal Sigma smaller than Pedestal RMS:           ");
+                    "Signal Sigma smaller than Pedestal RMS: ");
   PrintUncalibrated(MBadPixelsPix::kHiGainOscillating,   
-                    "Pixels with changing Hi Gain signal over time:    ");
+                    "Changing Hi Gain signal over time:      ");
   PrintUncalibrated(MBadPixelsPix::kLoGainOscillating,   
-                    "Pixels with changing Lo Gain signal over time:    ");
+                    "Changing Lo Gain signal over time:      ");
   PrintUncalibrated(MBadPixelsPix::kHiGainNotFitted,     
-                    "Pixels with unsuccesful Gauss fit to the Hi Gain: ");
+                    "Unsuccesful Gauss fit to the Hi Gain:   ");
   PrintUncalibrated(MBadPixelsPix::kLoGainNotFitted,     
-                    "Pixels with unsuccesful Gauss fit to the Lo Gain: ");
+                    "Unsuccesful Gauss fit to the Lo Gain:   ");
   PrintUncalibrated(MBadPixelsPix::kDeviatingNumPhes,    
-                    "Pixels with deviating number of phes:             ");
+                    "Deviating number of phes:               ");
   PrintUncalibrated(MBadPixelsPix::kDeviatingFFactor,    
-                    "Pixels with deviating F-Factor:                   ");
+                    "Deviating F-Factor:                     ");
 
   if (!fOutputFile.IsNull())
@@ -1218,6 +1218,5 @@
         }
       
-      *fLog << inf << GetDescriptor() << ": Mean number of photo-electrons " 
-            << "with area idx " << i << ": " 
+      *fLog << inf << GetDescriptor() << ": Mean number of phes with area idx " << i << ": "
             << Form("%7.2f+-%6.2f",mean,sigma) << endl;
 
@@ -1265,5 +1264,5 @@
       if ( nphe < lowlim[aidx] || nphe > upplim[aidx] )
         {
-          *fLog << warn << GetDescriptor() << ": Number of phes: " 
+          *fLog << warn << "Number of phes: "
                 << Form("%7.2f out of %3.1f sigma limit: ",nphe,fPheErrLimit)
                 << Form("[%7.2f,%7.2f] pixel%4i",lowlim[aidx],upplim[aidx],i) << endl;
@@ -1321,5 +1320,5 @@
       
       *fLog << inf << GetDescriptor() 
-            << ": Average total number phes in area idx " << aidx << ": " 
+            << ": Average total phes for area idx " << aidx << ": "
             << Form("%7.2f +- 6.2f",areaphes[aidx],TMath::Sqrt(areaweights[aidx])) << endl;
                     
@@ -1356,5 +1355,5 @@
         {
           *fLog << warn << GetDescriptor() 
-                <<": Mean number phes per area for sector " << sector << " could not be calculated: "
+                <<": Mean number phes/area for sector " << sector << " could not be calculated: "
                 << " Mean: "  << sectorphes[sector] 
                 << " Variance: "             << sectorweights[sector]    << endl;
@@ -1364,6 +1363,6 @@
 
       *fLog << inf << GetDescriptor() 
-            << ": Average number phes per area in sector " << sector << ": " 
-            << Form("%5.3f+-%4.3f  [phe/mm^2]",sectorphes[sector],TMath::Sqrt(sectorweights[sector])) 
+            << ": Avg number phes/mm^2 in sector " << sector << ": "
+            << Form("%5.3f+-%4.3f",sectorphes[sector],TMath::Sqrt(sectorweights[sector]))
             << endl;
 
@@ -1758,7 +1757,7 @@
       if ( ffactor < lowlim[aidx] || ffactor > upplim[aidx] )
         {
-          *fLog << warn << GetDescriptor() << ": Overall F-Factor "
+          *fLog << warn << "Overall F-Factor "
                 << Form("%5.2f",ffactor) << " out of range ["
-                << Form("%5.2f,%5.2f",lowlim[aidx],upplim[aidx]) << "] pixel " << i << endl;
+                << Form("%5.2f,%5.2f",lowlim[aidx],upplim[aidx]) << "] Pixel " << i << endl;
 
           bad.SetUncalibrated( MBadPixelsPix::kDeviatingFFactor );
Index: trunk/MagicSoft/Mars/mhist/MHCamEvent.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHCamEvent.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/mhist/MHCamEvent.cc	(revision 5701)
@@ -176,4 +176,6 @@
         fSum->SetBit(MHCamera::kVariance);
 
+    fSum->SetXTitle("Pixel Idx");
+
     return kTRUE;
 }
Index: trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc	(revision 5701)
@@ -53,13 +53,9 @@
 //
 MArrivalTimePix::MArrivalTimePix(const char* name, const char* title)
-  : fArrivalTimeHiGain(gkSignalInitializer),
-    fArrivalTimeHiGainError(gkSignalInitializer),
-    fArrivalTimeLoGain(gkSignalInitializer),
-    fArrivalTimeLoGainError(gkSignalInitializer),
-    fNumHiGainSaturated(0),
-    fNumLoGainSaturated(0)
 {
   fName  = name  ? name  : "MArrivalTimePix";
   fTitle = title ? title : "Container of the Extracted Signals";
+
+  Clear();
 }
 
@@ -71,7 +67,7 @@
 {
   fArrivalTimeHiGain      = gkSignalInitializer;
-  fArrivalTimeHiGainError = gkSignalInitializer;
+  fArrivalTimeHiGainError = -1;
   fArrivalTimeLoGain      = gkSignalInitializer;
-  fArrivalTimeLoGainError = gkSignalInitializer;
+  fArrivalTimeLoGainError = -1;
   
   fNumHiGainSaturated = 0;
@@ -96,5 +92,5 @@
 Bool_t MArrivalTimePix::IsValid() const
 {
-    return fArrivalTimeHiGain >= 0. || fArrivalTimeHiGainError >= 0.;
+    return (!IsLoGainUsed() && fArrivalTimeHiGainError >= 0) || (IsLoGainUsed() && fArrivalTimeLoGainError >= 0);
 }
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5701)
@@ -171,10 +171,10 @@
       // Find signal in hi- and lo-gain
       //
-      Float_t sumhi =0., deltasumhi =0.;
-      Float_t timehi=0., deltatimehi=0.;
+      Float_t sumhi =0., deltasumhi =0; // Set hi-gain of MExtractedSignalPix valid
+      Float_t timehi=0., deltatimehi=0; // Set hi-gain of MArrivalTimePix valid
       Byte_t sathi=0;
 
-      const Int_t pixid = pixel.GetPixelId();
-      const MPedestalPix  &ped = (*fPedestals)[pixid];
+      const Int_t pixidx = pixel.GetPixelId();
+      const MPedestalPix  &ped = (*fPedestals)[pixidx];
       const Bool_t higainabflag = pixel.HasABFlag();
 
@@ -183,7 +183,14 @@
                               timehi, deltatimehi, 
                               sathi, ped, higainabflag);
+
+      // Make sure that in cases the time couldn't be correctly determined
+      // more meaningfull default values are assigned
+      if (timehi<0)
+          timehi = -1;
+      if (timehi>pixel.GetNumHiGainSamples())
+          timehi = pixel.GetNumHiGainSamples();
       
-      Float_t sumlo =0., deltasumlo =0.;
-      Float_t timelo=0., deltatimelo=0.;
+      Float_t sumlo =0., deltasumlo =-1.; // invalidate logain of MExtractedSignalPix
+      Float_t timelo=0., deltatimelo=-1;  // invalidate logain of MArrivalTimePix
       Byte_t satlo=0;
       
@@ -192,27 +199,37 @@
       //
       if (pixel.HasLoGain())
-        {
+      {
+          deltasumlo  = 0; // make logain of MExtractedSignalPix valid
+          deltatimelo = 0; // make logain of MArrivalTimePix valid
+
           fLoGainFirstSave = fLoGainFirst;
           const Byte_t logainstart = (Byte_t)(timehi+fLoGainStartShift);
           if (!sathi)
-            fLoGainFirst = logainstart > fLoGainFirstSave ? logainstart : fLoGainFirstSave;
-        
-          if ( fLoGainFirst < fLoGainLast )
-            {
+              fLoGainFirst = logainstart > fLoGainFirstSave ? logainstart : fLoGainFirstSave;
+
+          if (fLoGainFirst < fLoGainLast)
+          {
               const Bool_t logainabflag = (higainabflag + pixel.GetNumHiGainSamples()) & 0x1;
-              FindTimeAndChargeLoGain(pixel.GetLoGainSamples()+fLoGainFirst, 
-                                      sumlo, deltasumlo, 
-                                      timelo, deltatimelo, 
+              FindTimeAndChargeLoGain(pixel.GetLoGainSamples()+fLoGainFirst,
+                                      sumlo, deltasumlo,
+                                      timelo, deltatimelo,
                                       satlo, ped, logainabflag);
-            }
-          fLoGainFirst     = fLoGainFirstSave;
-        }
-      
-      MExtractedSignalPix &pix = (*fSignals)[pixid];
-      MArrivalTimePix     &tix = (*fArrTime)[pixid];      
+          }
+          fLoGainFirst = fLoGainFirstSave;
+
+          // Make sure that in cases the time couldn't be correctly determined
+          // more meaningfull default values are assigned
+          if (timelo<0)
+              timelo = -1;
+          if (timelo>pixel.GetNumLoGainSamples())
+              timelo = pixel.GetNumLoGainSamples();
+      }
+
+      MExtractedSignalPix &pix = (*fSignals)[pixidx];
+      MArrivalTimePix     &tix = (*fArrTime)[pixidx];
 
       pix.SetExtractedSignal(sumhi, deltasumhi,sumlo, deltasumlo);
       pix.SetGainSaturation(sathi, sathi, satlo);
-      
+
       tix.SetArrivalTime(timehi, deltatimehi, timelo-fOffsetLoGain, deltatimelo);
       tix.SetGainSaturation(sathi, sathi, satlo);
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5701)
@@ -517,5 +517,5 @@
   {
     const Int_t   idx = fBinningResolutionLoGain*sample + fBinningResolutionHalfLoGain + t_iter;
-    const Int_t   ids = max_p + sample;;
+    const Int_t   ids = max_p + sample;
     const Float_t pex = ids < 0 ? 0. : ( ids >= range ? 0. : fLoGainSignal[ids]);
     sum              += fAmpWeightsLoGain [idx]*pex; 
Index: trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc	(revision 5700)
+++ trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc	(revision 5701)
@@ -53,14 +53,9 @@
 //
 MExtractedSignalPix::MExtractedSignalPix(const char* name, const char* title)
-  : fExtractedSignalHiGain(gkSignalInitializer),
-    fExtractedSignalHiGainError(gkSignalInitializer),
-    fExtractedSignalLoGain(gkSignalInitializer),
-    fExtractedSignalLoGainError(gkSignalInitializer),
-    fLoGainUsed(kFALSE),
-    fNumHiGainSaturated(0),
-    fNumLoGainSaturated(0)
 {
   fName  = name  ? name  : "MExtractedSignalPix";
   fTitle = title ? title : "Container of the Extracted Signals";
+
+  Clear();
 }
 
@@ -72,7 +67,7 @@
 {
   fExtractedSignalHiGain      = gkSignalInitializer;
-  fExtractedSignalHiGainError = gkSignalInitializer;
+  fExtractedSignalHiGainError = -1;
   fExtractedSignalLoGain      = gkSignalInitializer;
-  fExtractedSignalLoGainError = gkSignalInitializer;
+  fExtractedSignalLoGainError = -1;
   
   fLoGainUsed = kFALSE;
@@ -99,5 +94,5 @@
 Bool_t MExtractedSignalPix::IsValid() const
 {
-    return fExtractedSignalHiGain >= 0. || fExtractedSignalHiGainError >= 0.;
+    return (!IsLoGainUsed() && fExtractedSignalHiGainError >= 0) || (IsLoGainUsed() && fExtractedSignalLoGainError >= 0);
 }
 
