Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4948)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4949)
@@ -26,4 +26,15 @@
      moved all MHCalibration* classes to new directory mhcalib/
 
+   * mhcalib/MHCalibrationCam.[h,cc]
+     - New base function InitHiGainArrays and InitLoGainArrays
+       Initializing the histograms in a standard way
+     - ReadEnv: added NBins, First and Last
+
+   * mhcalib/MHCalibrationRelTimeCam.[h,cc]
+   * mhcalib/MHCalibrationChargeCam.[h,cc]
+   * mhcalib/MHCalibrationTestCam.[h,cc]
+   * mhcalib/MHCalibrationTestTimeCam.[h,cc]
+     - use new functions InitHiGainArrays and InitLoGainArrays
+ 
 
  2004/09/10: Antonio Stamerra
Index: /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 4948)
+++ /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 4949)
@@ -50,4 +50,5 @@
 /////////////////////////////////////////////////////////////////////////////
 #include "MHCalibrationCam.h"
+#include "MHCalibrationPix.h"
 
 #include <TVirtualPad.h>
@@ -60,8 +61,7 @@
 #include "MLogManip.h"
 
+#include "MCalibrationIntensityCam.h"
+#include "MCalibrationCam.h"
 #include "MCalibrationPix.h"
-#include "MCalibrationCam.h"
-
-#include "MHCalibrationPix.h"
 
 #include "MBadPixelsPix.h"
@@ -80,4 +80,8 @@
 
 const Int_t   MHCalibrationCam::fgPulserFrequency = 500;
+const TString MHCalibrationCam::gsHistName   = "Hist";
+const TString MHCalibrationCam::gsHistTitle  = "";
+const TString MHCalibrationCam::gsHistXTitle = "";
+const TString MHCalibrationCam::gsHistYTitle = "Nr. events";
 // --------------------------------------------------------------------------
 //
@@ -96,5 +100,7 @@
 //
 MHCalibrationCam::MHCalibrationCam(const char *name, const char *title)
-    :  fColor(MCalibrationCam::kNONE), 
+    :  fHistName(gsHistName),fHistTitle(gsHistTitle),
+       fHistXTitle(gsHistXTitle),fHistYTitle(gsHistYTitle), 
+       fColor(MCalibrationCam::kNONE), 
        fBadPixels(NULL), fIntensCam(NULL), fCam(NULL), fGeom(NULL), fRunHeader(NULL)
 {
@@ -300,9 +306,4 @@
 
 
-const TArrayI &MHCalibrationCam::GetRunNumbers() const 
-{
-  return fRunNumbers;
-}
-
 // --------------------------------------------------------------------------
 //
@@ -427,9 +428,4 @@
 }
 
-
-Bool_t MHCalibrationCam::SetupHists(const MParList *pList)
-{
-  return kTRUE;
-}
 
 // --------------------------------------------------------------------------
@@ -570,10 +566,218 @@
 }
 
-
-
-Bool_t MHCalibrationCam::ReInitHists(MParList *pList)
-{
-  return kTRUE;
-}
+//--------------------------------------------------------------------------------------
+//
+// Initializes the High Gain Arrays:
+//
+// - Expand fHiGainArrays to npixels
+// - Expand fAverageHiGainAreas to nareas
+// - Expand fAverageHiGainSectors to nsectors
+// 
+// - For every entry in the expanded arrays: 
+//   * call new MHCalibrationPix(fHistName,fHistTitle)
+//   * SetNbins(fNbins), SetFirst(fFirst), SetLast(fLast)
+//   * Set fHistName and fHistTitle in the Histogram of MHCalibrationPix
+//   * Set X-axis and Y-axis titles with fHistXTitle and fHistYTitle
+//   * Call InitHists
+//
+void MHCalibrationCam::InitHiGainArrays(const Int_t npixels, const Int_t nareas, const Int_t nsectors)
+{
+
+  if (fHiGainArray->GetEntries()==0)
+  {
+      fHiGainArray->Expand(npixels);
+      for (Int_t i=0; i<npixels; i++)
+      {
+        (*fHiGainArray)[i] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"HiGainPix"),
+                                                  Form("%s%s",fHistTitle.Data()," High Gain Pixel"));
+        
+        MHCalibrationPix &pix = (*this)[i];          
+        pix.SetNbins(fNbins);
+        pix.SetFirst(fFirst);
+        pix.SetLast (fLast);
+        
+        TH1F *h =  pix.GetHGausHist();
+        
+        h->SetName (Form("%s%s%s","H",fHistName.Data(),"HiGainPix"));
+        h->SetTitle(Form("%s%s",fHistTitle.Data()," High Gain Pixel "));  
+        h->SetXTitle(fHistXTitle.Data());
+        h->SetYTitle(fHistYTitle.Data());
+        
+        InitHists(pix,(*fBadPixels)[i],i);
+      }
+  }
+
+  if (fAverageHiGainAreas->GetEntries()==0)
+  {
+    fAverageHiGainAreas->Expand(nareas);
+    
+    for (Int_t j=0; j<nareas; j++)
+      {
+        (*fAverageHiGainAreas)[j] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"HiGainArea"),
+                                                         Form("%s%s",fHistTitle.Data()," High Gain Area Idx "));
+        
+        MHCalibrationPix &pix = GetAverageHiGainArea(j);
+        
+        pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas));
+        pix.SetFirst(fFirst);
+        pix.SetLast (fLast);
+        
+        TH1F *h =  pix.GetHGausHist();
+
+        h->SetName (Form("%s%s%s","H",fHistName.Data(),"HiGainArea"));
+        h->SetXTitle(fHistXTitle.Data());
+        h->SetYTitle(fHistYTitle.Data());
+
+        if (fGeom && fGeom->InheritsFrom("MGeomCamMagic"))
+          {
+            h->SetTitle(Form("%s%s%s%s",fHistTitle.Data()," averaged on event-by-event basis ",
+                             j==0 ? "Inner Pixels " : "Outer Pixels ","High Gain Runs: "));
+            pix.InitBins();
+            pix.SetEventFrequency(fPulserFrequency);
+          }
+        else
+          {
+            h->SetTitle(Form("%s%s",fHistTitle.Data()," averaged on event-by-event basis High Gain Area Idx ")); 
+            InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadArea(j) : fCam->GetAverageBadArea(j),j);
+          }
+      }
+  }
+
+  if (fAverageHiGainSectors->GetEntries()==0)
+    {
+      fAverageHiGainSectors->Expand(nsectors);
+
+      for (Int_t j=0; j<nsectors; j++)
+        {
+          (*fAverageHiGainSectors)[j] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"HiGainSector"),
+                                                             Form("%s%s",fHistTitle.Data()," High Gain Sector "));
+          MHCalibrationPix &pix = GetAverageHiGainSector(j);
+
+          pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nsectors));
+          pix.SetFirst(fFirst);
+          pix.SetLast (fLast);
+          
+          TH1F *h =  pix.GetHGausHist();
+
+          h->SetName (Form("%s%s%s","H",fHistName.Data(),"HiGainSector"));
+          h->SetTitle(Form("%s%s",fHistTitle.Data()," High Gain Sector "));  
+          h->SetXTitle(fHistXTitle.Data());
+          h->SetYTitle(fHistYTitle.Data());
+
+          InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadSector(j) : fCam->GetAverageBadSector(j),j);
+      }
+  }
+}
+
+//--------------------------------------------------------------------------------------
+//
+// Return, if IsLoGain() is kFALSE 
+//
+// Initializes the Low Gain Arrays:
+//
+// - Expand fLoGainArrays to npixels
+// - Expand fAverageLoGainAreas to nareas
+// - Expand fAverageLoGainSectors to nsectors
+// 
+// - For every entry in the expanded arrays: 
+//   * call new MHCalibrationPix(fHistName,fHistTitle)
+//   * SetBins(fNbins), SetFirst(fFirst), SetLast(fLast)
+//   * Set fHistName and fHistTitle in the Histogram of MHCalibrationPix
+//   * Set X-axis and Y-axis titles with fHistXTitle and fHistYTitle
+//   * Call InitHists
+//
+void MHCalibrationCam::InitLoGainArrays(const Int_t npixels, const Int_t nareas, const Int_t nsectors)
+{
+
+  if (!IsLoGain())
+    return;
+
+  if (fLoGainArray->GetEntries()==0)
+  {
+      fLoGainArray->Expand(npixels);
+      for (Int_t i=0; i<npixels; i++)
+      {
+        (*fLoGainArray)[i] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"LoGainPix"),
+                                                  Form("%s%s",fHistTitle.Data()," Low Gain Pixel"));
+
+          MHCalibrationPix &pix = (*this)[i];          
+          pix.SetNbins(fNbins);
+          pix.SetFirst(fFirst);
+          pix.SetLast (fLast);
+
+          TH1F *h =  pix.GetHGausHist();
+          
+          h->SetName (Form("%s%s%s","H",fHistName.Data(),"LoGainPix"));
+          h->SetTitle(Form("%s%s",fHistTitle.Data()," Low Gain Pixel "));  
+          h->SetXTitle(fHistXTitle.Data());
+          h->SetYTitle(fHistYTitle.Data());
+
+          InitHists(pix,(*fBadPixels)[i],i);
+      }
+  }
+
+  if (fAverageLoGainAreas->GetEntries()==0)
+  {
+    fAverageLoGainAreas->Expand(nareas);
+    
+    for (Int_t j=0; j<nareas; j++)
+      {
+        (*fAverageLoGainAreas)[j] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"LoGainArea"),
+                                                         Form("%s%s",fHistTitle.Data()," Low Gain Area Idx "));
+        
+        MHCalibrationPix &pix = GetAverageLoGainArea(j);
+        
+        pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas));
+        pix.SetFirst(fFirst);
+        pix.SetLast (fLast);
+        
+        TH1F *h =  pix.GetHGausHist();
+
+        h->SetName (Form("%s%s%s","H",fHistName.Data(),"LoGainArea"));
+        h->SetXTitle(fHistXTitle.Data());
+        h->SetYTitle(fHistYTitle.Data());
+
+        if (fGeom && fGeom->InheritsFrom("MGeomCamMagic"))
+          {
+            h->SetTitle(Form("%s%s%s%s",fHistTitle.Data()," averaged on event-by-event basis ",
+                             j==0 ? "Inner Pixels " : "Outer Pixels ","Low Gain Runs: "));
+            pix.InitBins();
+            pix.SetEventFrequency(fPulserFrequency);
+          }
+        else
+          {
+            h->SetTitle(Form("%s%s",fHistTitle.Data()," averaged on event-by-event basis Low Gain Area Idx ")); 
+            InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadArea(j) : fCam->GetAverageBadArea(j),j);
+          }
+      }
+  }
+
+  if (fAverageLoGainSectors->GetEntries()==0)
+    {
+      fAverageLoGainSectors->Expand(nsectors);
+
+      for (Int_t j=0; j<nsectors; j++)
+        {
+          (*fAverageLoGainSectors)[j] = new MHCalibrationPix(Form("%s%s",fHistName.Data(),"LoGainSector"),
+                                                             Form("%s%s",fHistTitle.Data()," Low Gain Sector "));
+          MHCalibrationPix &pix = GetAverageLoGainSector(j);
+
+          pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nsectors));
+          pix.SetFirst(fFirst);
+          pix.SetLast (fLast);
+          
+          TH1F *h =  pix.GetHGausHist();
+
+          h->SetName (Form("%s%s%s","H",fHistName.Data(),"LoGainSector"));
+          h->SetTitle(Form("%s%s",fHistTitle.Data()," Low Gain Sector "));  
+          h->SetXTitle(fHistXTitle.Data());
+          h->SetYTitle(fHistYTitle.Data());
+
+          InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadSector(j) : fCam->GetAverageBadSector(j),j);
+      }
+  }
+}
+
+
 
 //--------------------------------------------------------------------------------
@@ -1099,8 +1303,23 @@
     if (IsEnvDefined(env, prefix, "Oscillations", print))
     {
-        SetDebug(GetEnvValue(env, prefix, "Oscillations", IsOscillations()));
+        SetOscillations(GetEnvValue(env, prefix, "Oscillations", IsOscillations()));
         rc = kTRUE;
     }
 
+    if (IsEnvDefined(env, prefix, "Nbins", print))
+    {
+        SetNbins(GetEnvValue(env, prefix, "Nbins", fNbins));
+        rc = kTRUE;
+    }
+    if (IsEnvDefined(env, prefix, "First", print))
+    {
+        SetFirst(GetEnvValue(env, prefix, "First", fFirst));
+        rc = kTRUE;
+    }
+    if (IsEnvDefined(env, prefix, "Last", print))
+    {
+        SetLast(GetEnvValue(env, prefix, "Last", fLast));
+        rc = kTRUE;
+    }
 
     return rc;
Index: /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h
===================================================================
--- /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 4948)
+++ /trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 4949)
@@ -44,4 +44,9 @@
   static const Int_t fgPulserFrequency;  //! The default for fPulserFrequency (now set to: 500)
 
+  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:
 
@@ -50,4 +55,9 @@
   Axis_t  fLast;                         // Upper histogram limit 
 
+  TString fHistName;                     // Histogram names
+  TString fHistTitle;                    // Histogram titles
+  TString fHistXTitle;                   // Histogram x-axis titles
+  TString fHistYTitle;                   // Histogram y-axis titles
+  
   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
@@ -84,37 +94,40 @@
   Byte_t     fFlags;                     // Bit-field to hold the flags
   
-  virtual Bool_t SetupHists(const MParList *pList);
-  virtual Bool_t ReInitHists(MParList *pList);  
-  virtual Bool_t FillHists(const MParContainer *par, const Stat_t w=1);
-  virtual Bool_t FinalizeHists();
+  virtual Bool_t SetupHists ( const MParList *pList ) { return kTRUE; }
+  virtual Bool_t ReInitHists(       MParList *pList ) { return kTRUE; }
+  virtual Bool_t FillHists  ( const MParContainer *par, const Stat_t w=1);
+  virtual Bool_t FinalizeHists    ();
   virtual void   FinalizeBadPixels();
   
   virtual void   CalcAverageSigma();
   
-  void DrawAverageSigma(Bool_t sat, Bool_t inner,
-                        Float_t sigma, Float_t sigmaerr,
-                        Float_t relsigma, Float_t relsigmaerr) const; 
-  
-  void FitHiGainArrays(MCalibrationCam &calcam, MBadPixelsCam &badcam,
-                       MBadPixelsPix::UncalibratedType_t fittyp,
-                       MBadPixelsPix::UncalibratedType_t osctyp);
-  
-  void FitHiGainHists(MHCalibrationPix &hist, 
-                      MCalibrationPix &pix, 
-                      MBadPixelsPix &bad, 
-                      MBadPixelsPix::UncalibratedType_t fittyp,
-                      MBadPixelsPix::UncalibratedType_t osctyp);
-  
-  void FitLoGainArrays(MCalibrationCam &calcam, MBadPixelsCam &badcam,
-                       MBadPixelsPix::UncalibratedType_t fittyp,
-                       MBadPixelsPix::UncalibratedType_t osctyp);
-  
-  void FitLoGainHists(MHCalibrationPix &hist, 
-                      MCalibrationPix &pix, 
-                      MBadPixelsPix &bad, 
-                      MBadPixelsPix::UncalibratedType_t fittyp,
-                      MBadPixelsPix::UncalibratedType_t osctyp);
-
-  void InitHists(MHCalibrationPix &hist, MBadPixelsPix &bad, const Int_t i);
+  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 );
+
+  void DrawAverageSigma( Bool_t sat, Bool_t inner,
+                         Float_t sigma, Float_t sigmaerr,
+                         Float_t relsigma, Float_t relsigmaerr) const; 
+  
+  void FitHiGainArrays ( MCalibrationCam &calcam, MBadPixelsCam &badcam,
+                         MBadPixelsPix::UncalibratedType_t fittyp,
+                         MBadPixelsPix::UncalibratedType_t osctyp);
+  
+  void FitHiGainHists  ( MHCalibrationPix &hist, 
+                         MCalibrationPix &pix, 
+                         MBadPixelsPix &bad, 
+                         MBadPixelsPix::UncalibratedType_t fittyp,
+                         MBadPixelsPix::UncalibratedType_t osctyp);
+  
+  void FitLoGainArrays ( MCalibrationCam &calcam, MBadPixelsCam &badcam,
+                         MBadPixelsPix::UncalibratedType_t fittyp,
+                         MBadPixelsPix::UncalibratedType_t osctyp);
+  
+  void FitLoGainHists  ( MHCalibrationPix &hist, 
+                         MCalibrationPix &pix, 
+                         MBadPixelsPix &bad, 
+                         MBadPixelsPix::UncalibratedType_t fittyp,
+                         MBadPixelsPix::UncalibratedType_t osctyp);
+
+  void InitHists       ( MHCalibrationPix &hist, MBadPixelsPix &bad, const Int_t i);
 
   Bool_t IsDebug       () const  { return TESTBIT(fFlags,kDebug);        }
@@ -122,5 +135,5 @@
   Bool_t IsLoGain      () const  { return TESTBIT(fFlags,kLoGain);       }
   
-  Int_t ReadEnv(const TEnv &env, TString prefix, Bool_t print);
+  Int_t ReadEnv        ( const TEnv &env, TString prefix, Bool_t print);
 
 public:
@@ -158,5 +171,5 @@
   const Float_t        GetNumHiGainSaturationLimit()     const  { return fNumHiGainSaturationLimit; }
   const Float_t        GetNumLoGainSaturationLimit()     const  { return fNumLoGainSaturationLimit; }
-  const TArrayI       &GetRunNumbers         ()          const;
+  const TArrayI       &GetRunNumbers         ()          const { return fRunNumbers;            }
   const Int_t          GetSize               ()          const;
 
@@ -176,5 +189,9 @@
 								? SETBIT(fFlags,kOscillations) 
 								: CLRBIT(fFlags,kOscillations); }
-
+  void SetHistName  ( const char *name )  { fHistName  = name;  }
+  void SetHistTitle ( const char *name )  { fHistTitle = name;  }
+  void SetHistXTitle( const char *name )  { fHistXTitle = name; }
+  void SetHistYTitle( const char *name )  { fHistYTitle = name; }
+   
   void SetNbins                   ( const Int_t  i )       { fNbins   = i; }
   void SetFirst                   ( const Axis_t f )       { fFirst   = f; }
Index: /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 4948)
+++ /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 4949)
@@ -114,7 +114,11 @@
 const Float_t MHCalibrationRelTimeCam::fgNumHiGainSaturationLimit = 0.25;
 const UInt_t  MHCalibrationRelTimeCam::fgReferencePixel = 1;
-const Int_t   MHCalibrationRelTimeCam::fgRelTimeNbins    = 900;
-const Axis_t  MHCalibrationRelTimeCam::fgRelTimeFirst    = -5.;
-const Axis_t  MHCalibrationRelTimeCam::fgRelTimeLast     =  5.;
+const Int_t   MHCalibrationRelTimeCam::fgNbins    = 900;
+const Axis_t  MHCalibrationRelTimeCam::fgFirst    = -5.;
+const Axis_t  MHCalibrationRelTimeCam::fgLast     =  5.;
+const TString MHCalibrationRelTimeCam::gsHistName   = "RelTime";
+const TString MHCalibrationRelTimeCam::gsHistTitle  = "Rel. Arr. Times";
+const TString MHCalibrationRelTimeCam::gsHistXTitle = "Rel. Arr. Time [FADC slices]";
+const TString MHCalibrationRelTimeCam::gsHistYTitle = "Nr. events";
 // --------------------------------------------------------------------------
 //
@@ -123,7 +127,12 @@
 // Sets: 
 // - fReferencePixel to fgReferencePixel
-// - fRelTimeNbins to fgRelTimeNbins
-// - fRelTimeFirst to fgRelTimeFirst
-// - fRelTimeLast  to fgRelTimeLast 
+// - fNbins to fgNbins
+// - fFirst to fgFirst
+// - fLast  to fgLast 
+//
+// - fHistName   to gsHistName  
+// - fHistTitle  to gsHistTitle 
+// - fHistXTitle to gsHistXTitle
+// - fHistYTitle to gsHistYTitle
 //
 MHCalibrationRelTimeCam::MHCalibrationRelTimeCam(const char *name, const char *title) 
@@ -137,7 +146,13 @@
   SetReferencePixel();
 
-  SetNbins(fgRelTimeNbins);
-  SetFirst(fgRelTimeFirst);
-  SetLast (fgRelTimeLast );
+  SetNbins(fgNbins);
+  SetFirst(fgFirst);
+  SetLast (fgLast );
+
+  SetHistName  (gsHistName  .Data());
+  SetHistTitle (gsHistTitle .Data());
+  SetHistXTitle(gsHistXTitle.Data());
+  SetHistYTitle(gsHistYTitle.Data());
+
 }
 
@@ -150,22 +165,18 @@
 // - MArrivalTimeCam
 //
-// Initializes, if empty to MGeomCam::GetNumPixels():
-// - MHCalibrationCam::fHiGainArray, MHCalibrationCam::fLoGainArray
-//
-// Initializes, if empty to MGeomCam::GetNumAreas() for:
-// - MHCalibrationCam::fAverageHiGainAreas, MHCalibrationCam::fAverageLoGainAreas
-//
-// Initializes, if empty to MGeomCam::GetNumSectors() for:
-// - MHCalibrationCam::fAverageHiGainSectors, MHCalibrationCam::fAverageLoGainSectors
+// Calls:
+// - MHCalibrationCam::InitHiGainArrays()
+// - MHCalibrationCam::InitLoGainArrays()
 // 
-// Calls MHCalibrationCam::InitHists() for every entry in:
-// - MHCalibrationCam::fHiGainArray, MHCalibrationCam::fLoGainArray
-// - MHCalibrationCam::fAverageHiGainAreas, MHCalibrationCam::fAverageLoGainAreas
-// - MHCalibrationCam::fAverageHiGainSectors, MHCalibrationCam::fAverageLoGainSectors
-//
-// Sets Titles and Names for the Histograms 
-// - MHCalibrationCam::fAverageHiGainAreas
-// - MHCalibrationCam::fAverageHiGainSectors
-// 
+// Sets:
+// - fSumareahi   to nareas
+// - fSumarealo   to nareas
+// - fSumsectorhi to nareas
+// - fSumsectorlo to nareas
+// - fNumareahi   to nareas
+// - fNumarealo   to nareas
+// - fNumsectorhi to nareas
+// - fNumsectorlo to nareas
+//
 Bool_t MHCalibrationRelTimeCam::ReInitHists(MParList *pList)
 {
@@ -200,180 +211,6 @@
   const Int_t nareas   = fGeom->GetNumAreas();
 
-  if (fHiGainArray->GetEntries()==0)
-  {
-      fHiGainArray->Expand(npixels);
-      for (Int_t i=0; i<npixels; i++)
-      {
-	  (*fHiGainArray)[i] = new MHCalibrationPix("RelTimePixHiGain",
-                                                    "Rel. Arr. Time High Gain Pixel ");
-
-          MHCalibrationPix &pix = (*this)[i];          
-          pix.SetNbins(fNbins);
-          pix.SetFirst(fFirst);
-          pix.SetLast (fLast);
-
-          TH1F *h =  pix.GetHGausHist();
-          
-          h->SetName ("HRelTimeHiGainPix");
-          h->SetTitle("Rel. Times High Gain Pixel ");  
-          h->SetXTitle("Rel. Arr. Time [FADC slices]");
-          h->SetYTitle("Nr. of events");
-
-          InitHists(pix,(*fBadPixels)[i],i);
-      }
-  }
-  
-  if (fLoGainArray->GetEntries()==0 && IsLoGain() )
-  {
-      fLoGainArray->Expand(npixels);
-      for (Int_t i=0; i<npixels; i++)
-      {
-	  (*fLoGainArray)[i] = new MHCalibrationPix("RelTimePixLoGain",
-                                                    "Rel. Arr. Time Low Gain Pixel ");
-          MHCalibrationPix &pix = (*this)(i);          
-
-          pix.SetNbins(fNbins);
-          pix.SetFirst(fFirst);
-          pix.SetLast (fLast);
-
-          TH1F *h =  pix.GetHGausHist();
-          
-          h->SetName ("HRelTimeLoGainPix");
-          h->SetTitle("Rel. Times Low Gain Pixel ");  
-          h->SetXTitle("Rel. Arr. Time [FADC slices]");
-          h->SetYTitle("Nr. of events");
-
-          InitHists((*this)(i),(*fBadPixels)[i],i);
-      }
-  }
-
-
-  if (fAverageHiGainAreas->GetEntries()==0)
-  {
-    fAverageHiGainAreas->Expand(nareas);
-    
-    for (Int_t j=0; j<nareas; j++)
-      {
-        (*fAverageHiGainAreas)[j] = 
-          new MHCalibrationPix("RelTimeAverageHiGainArea",
-                                      "Average Rel. Arr. Times High Gain Area Idx ");
-        
-        MHCalibrationPix &pix = GetAverageHiGainArea(j);
-        
-        pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas));
-        pix.SetFirst(fFirst);
-        pix.SetLast (fLast);
-        
-        TH1F *h =  pix.GetHGausHist();
-
-        h->SetName ("HRelTimeHiGainArea");
-        h->SetXTitle("Rel. Arr. Time [FADC slices]");
-        h->SetYTitle("Nr. of events");
-
-        if (fGeom->InheritsFrom("MGeomCamMagic"))
-          {
-            h->SetTitle(Form("%s%s%s","Rel. Times averaged on event-by-event basis ",
-                             j==0 ? "Inner Pixels " : "Outer Pixels ","High Gain Runs: "));
-            pix.InitBins();
-            pix.SetEventFrequency(fPulserFrequency);
-          }
-        else
-          {
-            h->SetTitle("Signal averaged on event-by-event basis High Gain Area Idx ");
-            InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadArea(j) : fCam->GetAverageBadArea(j),j);
-          }
-      }
-  }
-
-  if (fAverageLoGainAreas->GetEntries()==0 && IsLoGain() )
-  {
-    fAverageLoGainAreas->Expand(nareas);
-    
-    for (Int_t j=0; j<nareas; j++)
-      {
-        (*fAverageLoGainAreas)[j] = 
-          new MHCalibrationPix("RelTimeAverageAreaLoGain",
-                                      "Average Rel. Arr. Times Low Gain Area Idx ");
-
-        MHCalibrationPix &pix = GetAverageLoGainArea(j);
-
-        pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas));
-        pix.SetFirst(fFirst);
-        pix.SetLast (fLast);
-        
-        TH1F *h =  pix.GetHGausHist();
-
-        h->SetName ("HRelTimeLoGainArea");
-        h->SetXTitle("Rel. Arr. Time [FADC slices]");
-        h->SetYTitle("Nr. of events");
-
-        if (fGeom->InheritsFrom("MGeomCamMagic"))
-          {
-            h->SetTitle(Form("%s%s%s","Rel. Times averaged on event-by-event basis ",
-                             j==0 ? "Inner Pixels " : "Outer Pixels ","Low Gain Runs: "));
-            pix.InitBins();
-            pix.SetEventFrequency(fPulserFrequency);
-          }
-        else
-          {
-            h->SetTitle("Rel. Times averaged on event-by-event basis Low Gain Area Idx ");
-            InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadArea(j) : fCam->GetAverageBadArea(j),j);
-          }
-      }
-  }
-  
-  if (fAverageHiGainSectors->GetEntries()==0)
-    {
-      fAverageHiGainSectors->Expand(nsectors);
-
-      for (Int_t j=0; j<nsectors; j++)
-        {
-	  (*fAverageHiGainSectors)[j] = 
-            new MHCalibrationPix("RelTimeAverageSectorHiGain",
-                                        "Average Rel. Arr. Times High Gain Sector ");
-          
-          MHCalibrationPix &pix = GetAverageHiGainSector(j);
-
-          pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nsectors));
-          pix.SetFirst(fFirst);
-          pix.SetLast (fLast);
-          
-          TH1F *h =  pix.GetHGausHist();
-
-          h->SetName ("HRelTimeHiGainSector");
-          h->SetTitle("Rel. Times average High Gain Sector ");  
-          h->SetXTitle("Rel. Arr. Time [FADC slices]");
-          h->SetYTitle("Nr. of events");
-
-          InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadSector(j) : fCam->GetAverageBadSector(j),j);
-      }
-  }
-  
-  if (fAverageLoGainSectors->GetEntries()==0 && IsLoGain() )
-    {
-      fAverageLoGainSectors->Expand(nsectors);
-      
-      for (Int_t j=0; j<nsectors; j++)
-        {
-	  (*fAverageLoGainSectors)[j] = 
-            new MHCalibrationPix("RelTimeAverageSectorLoGain",
-                                        "Average Rel. Arr. Times Low Gain Sector ");
-          
-          MHCalibrationPix &pix = GetAverageLoGainSector(j);
-
-          pix.SetNbins(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nsectors));
-          pix.SetFirst(fFirst);
-          pix.SetLast (fLast);
-          
-          TH1F *h =  pix.GetHGausHist();
-          
-          h->SetName ("HRelTimeLoGainSector");
-          h->SetTitle("Rel. Times average Low Gain Sector ");  
-          h->SetXTitle("Rel. Arr. Time [FADC slices]");
-          h->SetYTitle("Nr. of events");
-
-          InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadSector(j) : fCam->GetAverageBadSector(j),j);
-        }
-    }
+  InitHiGainArrays(npixels,nareas,nsectors);
+  InitLoGainArrays(npixels,nareas,nsectors);
 
   fSumareahi  .Set(nareas); 
Index: /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h
===================================================================
--- /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h	(revision 4948)
+++ /trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.h	(revision 4949)
@@ -22,8 +22,13 @@
   static const Float_t fgNumHiGainSaturationLimit;   //! The default for fNumHiGainSaturationLimit (now at: 0.25)
   static const UInt_t  fgReferencePixel;             //! Default for fReferencePixel   (now set to: 1)
-  static const Int_t   fgRelTimeNbins;               //! Default number of bins        (now set to: 900   )
-  static const Axis_t  fgRelTimeFirst;               //! Default lower histogram limit (now set to: -13.5 )
-  static const Axis_t  fgRelTimeLast;                //! Default upper histogram limit (now set to:  13.5 )
-
+  static const Int_t   fgNbins;                      //! Default number of bins        (now set to: 900   )
+  static const Axis_t  fgFirst;                      //! Default lower histogram limit (now set to: -13.5 )
+  static const Axis_t  fgLast;                       //! Default upper histogram limit (now set to:  13.5 )
+                                                   
+  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
+  
   MArrayD fSumareahi  ;               //!
   MArrayD fSumarealo  ;               //!
