Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5863)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5864)
@@ -24,6 +24,8 @@
 
   * mhcalib/MHCalibrationCam.[h,cc]
-    - finished event type recognition and rejection. Only used if 
-      SetInterlaced() is set. 
+  * mhcalib/MHCalibrationRelTimeCam.[h,cc]
+  * mhcalib/MHCalibrationChargeCam.[h,cc]
+    - put overflow management and results camera initialization into 
+      base class
  
   * mcalib/MCalibrateData.[h,cc]
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 5864)
@@ -86,6 +86,7 @@
 using namespace std;
 
-const Int_t   MHCalibrationCam::fgPulserFrequency = 500;
-const Float_t MHCalibrationCam::fgProbLimit  = 0.0001;
+const Int_t   MHCalibrationCam::fgPulserFrequency  = 500;
+const Float_t MHCalibrationCam::fgProbLimit        = 0.0001;
+const Float_t MHCalibrationCam::fgOverflowLimit    = 0.005;
 const TString MHCalibrationCam::gsHistName   = "Hist";
 const TString MHCalibrationCam::gsHistTitle  = "";
@@ -106,5 +107,6 @@
 // Initializes:
 // - fPulserFrequency to fgPulserFrequency
-// - fProbLimit to fgProbLimit
+// - fProbLimit       to fgProbLimit
+// - fOverflowLimit   to fgOverflowLimit
 //
 // - SetAveregeing  (kTRUE);
@@ -143,4 +145,5 @@
     SetPulserFrequency();
     SetProbLimit();
+    SetOverflowLimit();
 
     SetAverageing  (kTRUE);
@@ -995,4 +998,42 @@
 }
 
+// -------------------------------------------------------------
+//
+// - Searches for the CalibrationIntensity*Cam corresponding to 'name'. 
+// - In case, it does not exist in the parameter list, it searches
+//   for the corresponding MCalibration*Cam.
+// - Initializes the MCalibration*Cam, if not yet done.
+// 
+Bool_t MHCalibrationCam::InitCams( MParList *plist, const TString name )
+{
+
+  TString intensname = "MCalibrationIntensity";
+  intensname += name;
+  intensname += "Cam";
+
+  TString ordname    = "MCalibration";
+  ordname    += name;
+  ordname    += "Cam";
+
+  fIntensCam = (MCalibrationIntensityCam*)plist->FindObject(AddSerialNumber(intensname));
+  if (fIntensCam)
+    *fLog << inf << "Found " << intensname << "... " << endl;
+  else
+    {
+      fCam = (MCalibrationCam*)plist->FindObject(AddSerialNumber(ordname));
+      if (!fCam)
+        {
+          fCam = (MCalibrationCam*)plist->FindCreateObj(AddSerialNumber(ordname));
+          if (!fCam)
+            {
+              *fLog << err << "Cannot find nor create " << ordname << " ... abort." << endl;
+              return kFALSE;
+            }
+          fCam->Init(*fGeom);
+        }
+    }
+  return kTRUE;
+}
+
 // --------------------------------------------------------------------------
 //
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 5864)
@@ -41,11 +41,12 @@
 private:
 
-  static const Int_t   fgPulserFrequency; //! The default for fPulserFrequency (now set to: 500)
-  static const Float_t fgProbLimit;       //! The default for fProbLimit (now set to: 0.0001)  
-
-  static const TString gsHistName;        //! Default Histogram names
-  static const TString gsHistTitle;       //! Default Histogram titles
-  static const TString gsHistXTitle;      //! Default Histogram x-axis titles
-  static const TString gsHistYTitle;      //! Default Histogram y-axis titles
+  static const Int_t   fgPulserFrequency;  //! The default for fPulserFrequency (now set to: 500)
+  static const Float_t fgProbLimit;        //! The default for fProbLimit (now set to: 0.0001)  
+  static const Float_t fgOverflowLimit;    //! The default for fOverflowLimit (now at: 0.005)
+  
+  static const TString gsHistName;         //! Default Histogram names
+  static const TString gsHistTitle;        //! Default Histogram titles
+  static const TString gsHistXTitle;       //! Default Histogram x-axis titles
+  static const TString gsHistYTitle;       //! Default Histogram y-axis titles
   
 protected:
@@ -56,4 +57,5 @@
  
   Float_t fProbLimit;                     // Limit for acceptance of probability of Gauss-Fit
+  Float_t fOverflowLimit;                 // Part of maximum allowed overflow events
   
   TString fHistName;                      //! Histogram names
@@ -64,5 +66,4 @@
   Float_t fNumHiGainSaturationLimit;      // Rel. amount sat. higain FADC slices until pixel is called saturated 
   Float_t fNumLoGainSaturationLimit;      // Rel. amount sat. logain FADC slices until pixel is called saturated
-  Float_t fNumOverflowLimit;              // Part of maximum allowed overflow events
   
   MArrayI fRunNumbers;                    // Numbers of runs used
@@ -111,5 +112,5 @@
   virtual void   InitHiGainArrays( const Int_t npix, const Int_t nareas, const Int_t nsectors );
   virtual void   InitLoGainArrays( const Int_t npix, const Int_t nareas, const Int_t nsectors );
-
+  
   virtual void   ResetHistTitles();
   
@@ -138,6 +139,7 @@
                          MBadPixelsPix::UncalibratedType_t osctyp);
 
-  void InitHists       ( MHCalibrationPix &hist, MBadPixelsPix &bad, const Int_t i);
-
+  void   InitHists     ( MHCalibrationPix &hist, MBadPixelsPix &bad, const Int_t i);
+  Bool_t InitCams      ( MParList *plist, const TString name );
+  
   Bool_t IsAverageing  () const  { return TESTBIT(fFlags,kAverageing);   }
   Bool_t IsDebug       () const  { return TESTBIT(fFlags,kDebug);        }  
@@ -218,6 +220,6 @@
   void SetNumLoGainSaturationLimit( const Float_t lim )    { fNumLoGainSaturationLimit  = lim; }
   void SetNumHiGainSaturationLimit( const Float_t lim )    { fNumHiGainSaturationLimit  = lim; }
-  void SetNumOverflowLimit        ( const Float_t lim )    { fNumOverflowLimit          = lim; }
-  void SetPulserFrequency         ( const Int_t f=fgPulserFrequency) { fPulserFrequency = f;   }
+  void SetOverflowLimit        ( const Float_t f=fgOverflowLimit ) { fOverflowLimit = f; }
+  void SetPulserFrequency      ( const Int_t   i=fgPulserFrequency )   { fPulserFrequency  = i; }
   
   ClassDef(MHCalibrationCam, 4)	// Base Histogram class for Calibration Camera
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeBlindCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeBlindCam.cc	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeBlindCam.cc	(revision 5864)
@@ -156,4 +156,7 @@
 {
 
+  if (!InitCams(pList,"Blind"))
+    return kFALSE;
+
   MExtractedSignalBlindPixel *signal = 
     (MExtractedSignalBlindPixel*)pList->FindObject(AddSerialNumber("MExtractedSignalBlindPixel"));
@@ -163,21 +166,4 @@
       return kFALSE;
   }
-
-  fIntensCam = (MCalibrationIntensityCam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityBlindCam"));
-  if (fIntensCam)
-    *fLog << inf << "Found MCalibrationIntensityBlindCam ... " << endl;
-  else
-    {
-      fCam = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationBlindCam"));
-      if (!fCam)
-        {
-          fCam = (MCalibrationCam*)pList->FindCreateObj(AddSerialNumber("MCalibrationBlindCam"));
-          if (!fCam)
-            {
-              *fLog << err << "Cannot find nor create MCalibrationBlindCam ... abort." << endl;
-              return kFALSE;
-            }
-        }
-    }
 
   const Int_t nblindpixels = signal->GetNumBlindPixels();
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 5864)
@@ -172,5 +172,4 @@
 const Float_t MHCalibrationChargeCam::fgNumHiGainSaturationLimit = 0.01;
 const Float_t MHCalibrationChargeCam::fgNumLoGainSaturationLimit = 0.005;
-const Float_t MHCalibrationChargeCam::fgNumOverflowLimit         = 0.005;
 const Float_t MHCalibrationChargeCam::fgTimeLowerLimit           = 1.;
 const Float_t MHCalibrationChargeCam::fgTimeUpperLimit           = 2.;
@@ -220,5 +219,4 @@
   SetNumHiGainSaturationLimit(fgNumHiGainSaturationLimit);
   SetNumLoGainSaturationLimit(fgNumLoGainSaturationLimit);
-  SetNumOverflowLimit(fgNumOverflowLimit);
 
   SetTimeLowerLimit();
@@ -361,21 +359,6 @@
   }
 
-  fIntensCam = (MCalibrationIntensityCam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityChargeCam"));
-  if (fIntensCam)
-    *fLog << inf << "Found MCalibrationIntensityChargeCam ... " << endl;
-  else
-    {
-      fCam = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationChargeCam"));
-      if (!fCam)
-        {
-          fCam = (MCalibrationCam*)pList->FindCreateObj(AddSerialNumber("MCalibrationChargeCam"));
-          if (!fCam)
-            {
-              *fLog << err << "Cannot find nor create MCalibrationChargeCam ... abort." << endl;
-              return kFALSE;
-            }
-          fCam->Init(*fGeom);
-        }
-    }
+  if (!InitCams(pList,"Charge"))
+    return kFALSE;
 
   fFirstHiGain = signal->GetFirstUsedSliceHiGain();
@@ -383,30 +366,4 @@
   fFirstLoGain = signal->GetFirstUsedSliceLoGain();
   fLastLoGain  = signal->GetLastUsedSliceLoGain();
-
-  /*
-  const Float_t numhigain = signal->GetNumUsedHiGainFADCSlices();
-  const Float_t numlogain = signal->GetNumUsedLoGainFADCSlices();  
-
-  if (fCam)
-    {
-      if (fCam->GetNumHiGainFADCSlices() == 0.)
-        fCam->SetNumHiGainFADCSlices ( numhigain );
-      else if (fCam->GetNumHiGainFADCSlices() != numhigain)
-        {
-          *fLog << err << GetDescriptor() 
-                << ": Number of High Gain FADC extraction slices has changed, abort..." << endl;
-          return kFALSE;
-        }
-      
-      if (fCam->GetNumLoGainFADCSlices() == 0.)
-        fCam->SetNumLoGainFADCSlices ( numlogain );
-      else if (fCam->GetNumLoGainFADCSlices() != numlogain)
-        {
-          *fLog << err << GetDescriptor() 
-                << ": Number of Low Gain FADC extraction slices has changes, abort..." << endl;
-          return kFALSE;
-        }
-    }
-  */
 
   const Int_t npixels  = fGeom->GetNumPixels();
@@ -928,5 +885,5 @@
 
       Stat_t overflow = h->GetBinContent(h->GetNbinsX()+1);
-      if (overflow > fNumOverflowLimit*histhi.GetHGausHist()->GetEntries())
+      if (overflow > fOverflowLimit*histhi.GetHGausHist()->GetEntries())
         {
           *fLog << warn
@@ -937,5 +894,5 @@
 
       overflow = h->GetBinContent(0);
-      if (overflow >  fNumOverflowLimit*histhi.GetHGausHist()->GetEntries())
+      if (overflow >  fOverflowLimit*histhi.GetHGausHist()->GetEntries())
         {
           *fLog << warn
@@ -970,5 +927,5 @@
 
         Stat_t overflow = h->GetBinContent(h->GetNbinsX()+1);
-        if (overflow >  fNumOverflowLimit*histlo.GetHGausHist()->GetEntries())
+        if (overflow >  fOverflowLimit*histlo.GetHGausHist()->GetEntries())
           {
               *fLog << warn
@@ -979,5 +936,5 @@
 
         overflow = h->GetBinContent(0);
-        if (overflow > fNumOverflowLimit*histlo.GetHGausHist()->GetEntries())
+        if (overflow > fOverflowLimit*histlo.GetHGausHist()->GetEntries())
           {
             *fLog << warn
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h	(revision 5864)
@@ -44,5 +44,4 @@
   static const Float_t fgNumHiGainSaturationLimit;   //! The default for fNumHiGainSaturationLimit (now at: 0.01)
   static const Float_t fgNumLoGainSaturationLimit;   //! The default for fNumLoGainSaturationLimit (now at: 0.005)
-  static const Float_t fgNumOverflowLimit;           //! The default for fNumOverflowLimit         (now at: 0.005)
 
   static const Float_t fgTimeLowerLimit;             //! Default for fTimeLowerLimit    (now set to: 1.) 
@@ -58,6 +57,4 @@
   Axis_t  fLoGainLast;                               // Upper histogram limit low gain  
 
-  Float_t fNumOverflowLimit;                         // Part of maximum allowed overflow events
-  
   TString fAbsHistName;                              // Histogram names abs.times
   TString fAbsHistTitle;                             // Histogram titles abs. times
@@ -117,6 +114,4 @@
   void SetLoGainLast        ( const Axis_t f )       { fLoGainLast    = f; }  
 
-  void SetNumOverflowLimit ( const Float_t f=fgNumOverflowLimit ) { fNumOverflowLimit = f; }
-  
   void SetTimeLowerLimit    ( const Float_t f=fgTimeLowerLimit ) { fTimeLowerLimit = f; }
   void SetTimeUpperLimit    ( const Float_t f=fgTimeUpperLimit ) { fTimeUpperLimit = f; }
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationHiLoCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationHiLoCam.cc	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationHiLoCam.cc	(revision 5864)
@@ -253,21 +253,6 @@
 {
 
-  fIntensCam = (MCalibrationIntensityCam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityHiLoCam"));
-  if (fIntensCam)
-    *fLog << inf << "Found MCalibrationIntensityHiLoCam ... " << endl;
-  else
-    {
-      fCam = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationHiLoCam"));
-      if (!fCam)
-        {
-          fCam = (MCalibrationCam*)pList->FindCreateObj(AddSerialNumber("MCalibrationHiLoCam"));
-          if (!fCam)
-            {
-              *fLog << err << "Cannot find nor create MCalibrationHiLoCam ... abort." << endl;
-              return kFALSE;
-            }
-          fCam->Init(*fGeom);
-        }
-    }
+  if (!InitCams(pList,"HiLo"))
+    return kFALSE;
 
   MExtractedSignalCam *signal = (MExtractedSignalCam*)pList->FindObject("MExtractedSignalCam");
@@ -544,16 +529,16 @@
   
   Stat_t overflow = hist->GetBinContent(hist->GetNbinsX()+1);
-  if (overflow > 0.0005*hist->GetEntries())
+  if (overflow > fOverflowLimit*hist->GetEntries())
     {
       *fLog << warn << "Hist-overflow " << overflow
-            << " times in " << pix.GetName() << " (w/o saturation!) " << endl;
+            << " times in " << pix.GetName() << endl;
     }
   
   overflow = hist->GetBinContent(0);
-  if (overflow > 0.0005*hist->GetEntries())
+  if (overflow > fOverflowLimit*hist->GetEntries())
     {
       *fLog << warn << "Hist-underflow " << overflow
-            << " times in " << pix.GetName() << " (w/o saturation!) " << endl;
-    }
-}
-
+            << " times in " << pix.GetName()  << endl;
+    }
+}
+
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 5864)
@@ -130,5 +130,4 @@
 const Axis_t  MHCalibrationRelTimeCam::fgLast       =  5.;
 const Float_t MHCalibrationRelTimeCam::fgProbLimit  = 0.;
-const Float_t MHCalibrationRelTimeCam::fgNumOverflowLimit = 0.005;
 const TString MHCalibrationRelTimeCam::gsHistName   = "RelTime";
 const TString MHCalibrationRelTimeCam::gsHistTitle  = "Rel. Arr. Times";
@@ -164,5 +163,4 @@
   SetLast (fgLast );
 
-  SetNumOverflowLimit(fgNumOverflowLimit);
   SetProbLimit(fgProbLimit);
 
@@ -254,21 +252,6 @@
 {
 
-  fIntensCam = (MCalibrationIntensityCam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityRelTimeCam"));
-  if (fIntensCam)
-    *fLog << inf << "Found MCalibrationIntensityRelTimeCam ... " << endl;
-  else
-    {
-      fCam = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationRelTimeCam"));
-      if (!fCam)
-        {
-          fCam = (MCalibrationCam*)pList->FindCreateObj(AddSerialNumber("MCalibrationRelTimeCam"));
-          if (!fCam)
-            {
-              *fLog << err << "Cannot find nor create MCalibrationRelTimeCam ... abort." << endl;
-              return kFALSE;
-            }
-          fCam->Init(*fGeom);
-        }
-    }
+  if (!InitCams(pList,"RelTime"))
+    return kFALSE;
 
   MArrivalTimeCam *signal = (MArrivalTimeCam*)pList->FindObject("MArrivalTimeCam");
@@ -681,5 +664,5 @@
   
   Stat_t overflow = hist->GetBinContent(hist->GetNbinsX()+1);
-  if (overflow > fNumOverflowLimit*hist->GetEntries())
+  if (overflow > fOverflowLimit*hist->GetEntries())
     {
       *fLog << warn << "HiGain Hist-overflow " << overflow
@@ -688,5 +671,5 @@
   
   overflow = hist->GetBinContent(0);
-  if (overflow > fNumOverflowLimit*hist->GetEntries())
+  if (overflow > fOverflowLimit*hist->GetEntries())
     {
       *fLog << warn << "HiGain Hist-underflow " << overflow
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h	(revision 5864)
@@ -22,5 +22,4 @@
 
   static const Float_t fgNumHiGainSaturationLimit;   //! The default for fNumHiGainSaturationLimit (now at: 0.25)
-  static const Float_t fgNumOverflowLimit;           //! The default for fNumOverflowLimit         (now at: 0.005)
   static const UInt_t  fgReferencePixel;             //! Default for fReferencePixel   (now set to: 1)
   static const Int_t   fgNbins;                      //! Default number of bins        (now set to: 900   )
Index: trunk/MagicSoft/Mars/mhcalib/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/Makefile	(revision 5863)
+++ trunk/MagicSoft/Mars/mhcalib/Makefile	(revision 5864)
@@ -21,6 +21,5 @@
 INCLUDES = -I. -I../mbase  -I../mgui -I../mgeom -I../mhbase -I../mcalib \
            -I../manalysis -I../mraw -I../mtools -I../mmc -I../mhist  \
-           -I../mimage -I../msignal -I../mbadpixels -I../mpedestal \
-           -I../mtrigger
+           -I../mimage -I../msignal -I../mbadpixels -I../mpedestal 
 
 # mhbase:    MBinning MH 
