Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 4962)
@@ -145,8 +145,8 @@
 #include <TStyle.h>
 #include <TF1.h>
-#include <TH2D.h>
 #include <TLine.h>
 #include <TLatex.h>
 #include <TLegend.h>
+#include <TGraph.h>
 
 ClassImp(MHCalibrationChargeCam);
@@ -382,10 +382,11 @@
 // 
 // - For every entry in the expanded arrays: 
-//   * call new MHCalibrationPix(fHistName,fHistTitle)
-//   * SetNbins(fNbins), SetFirst(fFirst), SetLast(fLast)
-//   * SetAbsTimeNbins(samples hi gain), SetAbsTimeFirst(-0.5), SetAbsTimeLast(samples hi-gain-0.5)
-//   * Set fHistName and fHistTitle in the Histogram of MHCalibrationPix
-//   * Set Name and Title in the Abs Time Histogram of MHCalibrationPix
-//   * Set X-axis and Y-axis titles with fHistXTitle and fHistYTitle
+//   * Initialize an MHCalibrationPix
+//   * Set Binning from  fNbins, fFirst and fLast
+//   * Set Binning of Abs Times histogram from  fAbsNbins, fAbsFirst and fAbsLast
+//   * Set Histgram names and titles from fHistName and fHistTitle
+//   * Set Abs Times Histgram names and titles from fAbsHistName and fAbsHistTitle
+//   * Set X-axis and Y-axis titles from fHistXTitle and fHistYTitle
+//   * Set X-axis and Y-axis titles of Abs Times Histogram from fAbsHistXTitle and fAbsHistYTitle
 //   * Call InitHists
 //
@@ -539,10 +540,11 @@
 // 
 // - For every entry in the expanded arrays: 
-//   * call new MHCalibrationPix(fHistName,fHistTitle)
-//   * SetBins(fNbins), SetFirst(fFirst), SetLast(fLast)
-//   * SetAbsTimeNbins(samples lo gain), SetAbsTimeFirst(-0.5), SetAbsTimeLast(samples lo-gain-0.5)
-//   * Set fHistName and fHistTitle in the Histogram of MHCalibrationPix
-//   * Set fHistName and fHistTitle in the Histogram of MHCalibrationPix
-//   * Set X-axis and Y-axis titles with fHistXTitle and fHistYTitle
+//   * Initialize an MHCalibrationPix
+//   * Set Binning from  fNbins, fFirst and fLast
+//   * Set Binning of Abs Times histogram from  fAbsNbins, fAbsFirst and fAbsLast
+//   * Set Histgram names and titles from fHistName and fHistTitle
+//   * Set Abs Times Histgram names and titles from fAbsHistName and fAbsHistTitle
+//   * Set X-axis and Y-axis titles from fHistXTitle and fHistYTitle
+//   * Set X-axis and Y-axis titles of Abs Times Histogram from fAbsHistXTitle and fAbsHistYTitle
 //   * Call InitHists
 //
@@ -590,17 +592,5 @@
           h->SetXTitle(fAbsHistXTitle.Data());
           h->SetYTitle(fAbsHistYTitle.Data());
-          //
-          // Adapt the range for the case, the intense blue is used:
-          // FIXME: this is a nasty workaround, but for the moment necessary 
-          // in order to avoid default memory space.
-          //
-          if (fGeom->InheritsFrom("MGeomCamMagic"))
-            {
-              if ( fColor == MCalibrationCam::kBLUE)
-                {
-                  pix.SetLast(999.5);
-                  pix.SetNbins((Int_t)(999.5-fgChargeLoGainFirst));
-                }
-            }
+
           InitHists(pix,(*fBadPixels)[i],i);
       }
@@ -633,18 +623,4 @@
         h->SetYTitle(fHistYTitle.Data());
 
-        //
-        // Adapt the range for the case, the intense blue is used:
-        // FIXME: this is a nasty workaround, but for the moment necessary 
-        // in order to avoid default memory space.
-        //
-        if (fGeom->InheritsFrom("MGeomCamMagic"))
-            {
-              if ( fColor == MCalibrationCam::kBLUE)
-                {
-                  pix.SetFirst(-10.5);
-                  pix.SetLast(999.5);
-                  pix.SetNbins(3030);
-                }
-            }
 
         if (fGeom->InheritsFrom("MGeomCamMagic"))
@@ -745,5 +721,5 @@
 // - MExtractedSignalPix::GetExtractedSignalLoGain();
 //
-// 2) Set number of saturated slices (MHCalibrationChargePix::SetSaturated()) with:
+// 2) Set number of saturated slices (MHCalibrationChargePix::AddSaturated()) with:
 // - MExtractedSignalPix::GetNumHiGainSaturated();
 // - MExtractedSignalPix::GetNumLoGainSaturated();
@@ -800,5 +776,5 @@
         histhi.FillHist(sumhi);
         
-      histhi.SetSaturated(sathi); 
+      histhi.AddSaturated(sathi); 
 
       const Int_t aidx   = (*fGeom)[i].GetAidx();
@@ -822,5 +798,5 @@
             histlo.FillHist(sumlo);
           
-          histlo.SetSaturated(satlo); 
+          histlo.AddSaturated(satlo); 
           
           fSumloarea[aidx]  += sumlo;
@@ -880,5 +856,5 @@
         hipix.FillHist(fSumhiarea[j]/npix);
       
-      hipix.SetSaturated    ((Float_t)fSathiarea [j]/npix > 0.5 ? 1 : 0); 
+      hipix.AddSaturated    ((Float_t)fSathiarea [j]/npix > 0.5 ? 1 : 0); 
       hipix.FillAbsTime     (fTimehiarea[j]/npix);
 
@@ -890,5 +866,5 @@
           else
             lopix.FillHist(fSumloarea [j]/npix);
-          lopix.SetSaturated    ((Float_t)fSatloarea [j]/npix > 0.5 ? 1 : 0); 
+          lopix.AddSaturated    ((Float_t)fSatloarea [j]/npix > 0.5 ? 1 : 0); 
           lopix.FillAbsTime     (fTimeloarea[j]/npix);
         }
@@ -910,5 +886,5 @@
         hipix.FillHist(fSumhisector [j]/npix);
 
-      hipix.SetSaturated    ((Float_t)fSathisector[j]/npix > 0.5 ? 1 : 0); 
+      hipix.AddSaturated    ((Float_t)fSathisector[j]/npix > 0.5 ? 1 : 0); 
       hipix.FillAbsTime     (fTimehisector[j]/npix);
 
@@ -922,5 +898,5 @@
             lopix.FillHist(fSumlosector [j]/npix);
             
-          lopix.SetSaturated    ((Float_t)fSatlosector[j]/npix > 0.5 ? 1 : 0); 
+          lopix.AddSaturated    ((Float_t)fSatlosector[j]/npix > 0.5 ? 1 : 0); 
           lopix.FillAbsTime     (fTimelosector[j]/npix);
         }
@@ -1018,5 +994,5 @@
           {
             *fLog << warn << GetDescriptor()
-                  << ": Lo-Gain Histogram Overflow occurred " << overflow
+                  << ": LoGain Histogram Overflow occurred " << overflow
                   << " times in pixel: " << i << " (without saturation!) " << endl;
             bad.SetUncalibrated( MBadPixelsPix::kLoGainOverFlow ); 
@@ -1027,5 +1003,5 @@
           {
             *fLog << warn << GetDescriptor()
-                  << ": Lo-Gain Histogram Underflow occurred " << overflow
+                  << ": LoGain Histogram Underflow occurred " << overflow
                   << " times in pixel: " << i << " (without saturation!) " << endl;
             bad.SetUncalibrated( MBadPixelsPix::kLoGainOverFlow ); 
@@ -1318,5 +1294,9 @@
 // I don't know the reason. 
 //
-// Creates new MHCalibrationCam
+// Creates new MHCalibrationChargeCam only for the Averaged Areas, 
+// the rest has to be retrieved directly, e.g. via: 
+//  MHCalibrationChargeCam *cam = MParList::FindObject("MHCalibrationChargeCam");
+//  -  cam->GetAverageSector(5).DrawClone();
+//  -  (*cam)[100].DrawClone()
 //
 TObject *MHCalibrationChargeCam::Clone(const char *name) const
@@ -1325,6 +1305,6 @@
   const Int_t navhi = fAverageHiGainAreas->GetEntries();
   const Int_t navlo = fAverageLoGainAreas->GetEntries();
-  const Int_t nsehi = fAverageHiGainSectors->GetEntries();
-  const Int_t nselo = fAverageLoGainSectors->GetEntries();
+  //  const Int_t nsehi = fAverageHiGainSectors->GetEntries();
+  //  const Int_t nselo = fAverageLoGainSectors->GetEntries();
   
   //
@@ -1334,22 +1314,22 @@
 
   cam->fAverageHiGainAreas->Expand(navhi);
-  cam->fAverageLoGainAreas->Expand(navlo);
-  cam->fAverageHiGainSectors->Expand(nsehi);
-  cam->fAverageLoGainSectors->Expand(nselo);
-
-  cam->fAverageHiGainAreas->Expand(navhi);
-  cam->fAverageLoGainAreas->Expand(navlo);
-  cam->fAverageHiGainSectors->Expand(nsehi);
-  cam->fAverageLoGainSectors->Expand(nselo);
+  //  cam->fAverageHiGainSectors->Expand(nsehi);
 
   for (int i=0; i<navhi; i++)
     (*cam->fAverageHiGainAreas)  [i] = (*fAverageHiGainAreas)  [i]->Clone();
-  for (int i=0; i<navlo; i++)
-    (*cam->fAverageLoGainAreas)  [i] = (*fAverageLoGainAreas)  [i]->Clone();
-  for (int i=0; i<nsehi; i++)
-    (*cam->fAverageHiGainSectors)[i] = (*fAverageHiGainSectors)[i]->Clone();
-  for (int i=0; i<nselo; i++)
-    (*cam->fAverageLoGainSectors)[i] = (*fAverageLoGainSectors)[i]->Clone();
-
+  //  for (int i=0; i<nsehi; i++)
+  //    (*cam->fAverageHiGainSectors)[i] = (*fAverageHiGainSectors)[i]->Clone();
+
+  if (IsLoGain())
+    {
+      cam->fAverageLoGainAreas->Expand(navlo);
+      //      cam->fAverageLoGainSectors->Expand(nselo);
+      
+      for (int i=0; i<navlo; i++)
+        (*cam->fAverageLoGainAreas)  [i] = (*fAverageLoGainAreas)  [i]->Clone();
+      //      for (int i=0; i<nselo; i++)
+      //        (*cam->fAverageLoGainSectors)[i] = (*fAverageLoGainSectors)[i]->Clone();
+    }
+  
   cam->fAverageAreaNum         = fAverageAreaNum;
   cam->fAverageAreaSat         = fAverageAreaSat;
@@ -1363,4 +1343,5 @@
   cam->fColor                  = fColor;
   cam->fPulserFrequency        = fPulserFrequency;
+  cam->fFlags                  = fFlags;
 
   return cam;
@@ -1368,4 +1349,12 @@
 }
 
+// -----------------------------------------------------------------------------
+// 
+// Draw the average pixel for the datacheck:
+//
+// Displays the averaged areas, both High Gain and Low Gain 
+//
+// Calls the Draw of the fAverageHiGainAreas and fAverageLoGainAreas objects with options
+//
 void MHCalibrationChargeCam::DrawDataCheckPixel(MHCalibrationChargePix &pix, const Float_t refline[])
 {
@@ -1380,8 +1369,12 @@
 
   TH1F *hist = pix.GetHGausHist();
-  
-  TH2D *null = new TH2D("Null",hist->GetTitle(),100,pix.GetFirst() > -1. ? 0. : 100.,pix.GetLast()/2.,
-                        100,0.,hist->GetEntries()/10.);
-
+
+  TH1F *null = new TH1F("Null",hist->GetTitle(),100,
+                        pix.GetFirst() > 0. ? pix.GetFirst() : 0.,
+                        pix.GetLast() > pix.GetFirst()
+                        ? ( pix.GetLast() > 450. ? 450. : pix.GetLast() )
+                        : pix.GetFirst()*2.);
+
+  null->SetMaximum(1.1*hist->GetMaximum());
   null->SetDirectory(NULL);
   null->SetBit(kCanDelete);
@@ -1400,7 +1393,7 @@
   xaxe->SetLabelSize(0.06);
   yaxe->SetLabelSize(0.06);    
-
   xaxe->SetTitle(hist->GetXaxis()->GetTitle());
   yaxe->SetTitle(hist->GetYaxis()->GetTitle());  
+
   null->Draw();
   hist->Draw("same");
@@ -1408,24 +1401,26 @@
   gStyle->SetOptFit();
 
-  if (pix.GetFGausFit())
+  TF1 *fit = pix.GetFGausFit();
+
+  if (fit)
   {
     switch ( fColor )
       {
       case MCalibrationCam::kGREEN:
-        pix.GetFGausFit()->SetLineColor(kGreen);
+        fit->SetLineColor(kGreen);
         break;
       case MCalibrationCam::kBLUE:
-        pix.GetFGausFit()->SetLineColor(kBlue);
+        fit->SetLineColor(kBlue);
         break;
       case MCalibrationCam::kUV:  
-        pix.GetFGausFit()->SetLineColor(106);
+        fit->SetLineColor(106);
         break;
       case MCalibrationCam::kCT1: 
-        pix.GetFGausFit()->SetLineColor(006);
+        fit->SetLineColor(006);
         break;
       default:
-        pix.GetFGausFit()->SetLineColor(kRed);
+        fit->SetLineColor(kRed);
       }
-    pix.GetFGausFit()->Draw("same");
+    fit->Draw("same");
   }
 
@@ -1435,5 +1430,34 @@
   gPad->SetTicks();
 
-  pix.DrawEvents();
+  TH1F *null2 = new TH1F("Null2",hist->GetTitle(),100,0.,pix.GetEvents()->GetSize()/pix.GetEventFrequency());
+
+  null2->SetMinimum(pix.GetMean()-10.*pix.GetSigma());
+  null2->SetMaximum(pix.GetMean()+10.*pix.GetSigma());
+  null2->SetDirectory(NULL);
+  null2->SetBit(kCanDelete);
+  null2->SetStats(kFALSE);
+  //
+  // set the labels bigger
+  //
+  TAxis *xaxe2 = null2->GetXaxis();
+  TAxis *yaxe2 = null2->GetYaxis();
+  xaxe2->CenterTitle();
+  yaxe2->CenterTitle();    
+  xaxe2->SetTitleSize(0.07);
+  yaxe2->SetTitleSize(0.07);    
+  xaxe2->SetTitleOffset(0.7);
+  yaxe2->SetTitleOffset(0.55);    
+  xaxe2->SetLabelSize(0.06);
+  yaxe2->SetLabelSize(0.06);    
+
+  pix.CreateGraphEvents();
+  TGraph *gr = pix.GetGraphEvents();
+
+  xaxe2->SetTitle(gr->GetXaxis()->GetTitle());
+  yaxe2->SetTitle(gr->GetYaxis()->GetTitle());  
+
+  null2->Draw();
+
+  pix.DrawEvents("same");
   return;
   
@@ -1441,8 +1465,8 @@
 
 
-void  MHCalibrationChargeCam::DisplayRefLines(const TH2D *hist, const Float_t refline[]) const
+void  MHCalibrationChargeCam::DisplayRefLines(const TH1F *hist, const Float_t refline[]) const
 {
 
-  TLine *green1 = new TLine(refline[0],0.,refline[0],hist->GetYaxis()->GetXmax());
+  TLine *green1 = new TLine(refline[0],0.1,refline[0],0.9*hist->GetMaximum());
   green1->SetBit(kCanDelete);
   green1->SetLineColor(kGreen);
@@ -1451,5 +1475,5 @@
   green1->Draw();
 
-  TLine *green5 = new TLine(refline[6],0.,refline[6],hist->GetYaxis()->GetXmax());
+  TLine *green5 = new TLine(refline[6],0.1,refline[6],0.9*hist->GetMaximum());
   green5->SetBit(kCanDelete);
   green5->SetLineColor(8);
@@ -1458,5 +1482,5 @@
   green5->Draw();
 
-  TLine *blue1   = new TLine(refline[1],0.,refline[1],hist->GetYaxis()->GetXmax());
+  TLine *blue1   = new TLine(refline[1],0.1,refline[1],0.9*hist->GetMaximum());
   blue1->SetBit(kCanDelete);
   blue1->SetLineColor(227);
@@ -1465,5 +1489,5 @@
   blue1->Draw();
 
-  TLine *blue5   = new TLine(refline[2],0.,refline[2],hist->GetYaxis()->GetXmax());
+  TLine *blue5   = new TLine(refline[2],0.1,refline[2],0.9*hist->GetMaximum());
   blue5->SetBit(kCanDelete);
   blue5->SetLineColor(68);
@@ -1472,5 +1496,5 @@
   blue5->Draw();
 
-  TLine *blue10   = new TLine(refline[3],0.,refline[3],hist->GetYaxis()->GetXmax());
+  TLine *blue10   = new TLine(refline[3],0.1,refline[3],0.9*hist->GetMaximum());
   blue10->SetBit(kCanDelete);
   blue10->SetLineColor(4);
@@ -1479,5 +1503,5 @@
   blue10->Draw();
 
-  TLine *uv10    = new TLine(refline[4],0.,refline[4],hist->GetYaxis()->GetXmax());
+  TLine *uv10    = new TLine(refline[4],0.1,refline[4],0.9*hist->GetMaximum());
   uv10->SetBit(kCanDelete);
   uv10->SetLineColor(106);
@@ -1486,5 +1510,5 @@
   uv10->Draw();
 
-  TLine *ct1    = new TLine(refline[5],0.,refline[5],hist->GetYaxis()->GetXmax());
+  TLine *ct1    = new TLine(refline[5],0.1,refline[5],0.9*hist->GetMaximum());
   ct1->SetBit(kCanDelete);
   ct1->SetLineColor(6);
@@ -1493,5 +1517,5 @@
   ct1->Draw();
 
-  TLegend *leg = new TLegend(0.7,0.35,0.9,0.99);
+  TLegend *leg = new TLegend(0.8,0.35,0.99,0.99);
   leg->SetBit(kCanDelete);
   leg->AddEntry(green1,"1 Led GREEN","l");
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.h	(revision 4962)
@@ -14,5 +14,5 @@
 #endif
 
-class TH2D;
+class TH1F;
 class MRawEvtData;
 class MExtractedSignalCam;
@@ -96,5 +96,5 @@
 
   void   DrawDataCheckPixel(MHCalibrationChargePix &pix, const Float_t refline[]);
-  void   DisplayRefLines   ( const TH2D *hist,           const Float_t refline[]) const;
+  void   DisplayRefLines   ( const TH1F *hist,           const Float_t refline[]) const;
   
 public:
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.cc	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.cc	(revision 4962)
@@ -81,15 +81,68 @@
 }
 
-// --------------------------------------------------------------------------
-//
-// Use the MHGausEvents::Clone function and clone additionally the rest of the 
-// data members.
-//
+#if 0
+// --------------------------------------------------------------------------
+//
+// ATTENTION: This nasty Clone function is necessary since the ROOT cloning 
+//            lead to crashes on SOME machines (unfortunately not mine...).
+//            This function is a workaround in order to achieve the correct 
+//            DrawClone() behaviour.
+// 
 TObject *MHCalibrationChargePix::Clone(const char *name) const
 {
 
-  MHCalibrationChargePix &pix = (MHCalibrationChargePix&)*MHCalibrationPix::Clone(name);
+  MHCalibrationChargePix &pix = 
+    *new MHCalibrationChargePix(name ? name : fName.Data(),fTitle.Data());
   // 
-  // Copy data members
+  // Copy MHGausEvents data members
+  //
+  pix.fBinsAfterStripping   = fBinsAfterStripping;
+  pix.fCurrentSize          = fCurrentSize;
+  pix.fFlags                = fFlags;
+  pix.fPowerProbabilityBins = fPowerProbabilityBins;
+
+  if (fHPowerProbability)
+    pix.fHPowerProbability=(TH1I*)fHPowerProbability->Clone();
+  
+  if (fPowerSpectrum)
+    pix.fPowerSpectrum = new TArrayF(*fPowerSpectrum);
+
+  pix.fEvents = fEvents;
+
+  if (fFGausFit)
+    pix.fFGausFit=(TF1*)fFGausFit->Clone();
+  if (fFExpFit)
+    pix.fFExpFit=(TF1*)fFExpFit->Clone();
+
+  pix.fFirst = fFirst;
+
+  if (fGraphEvents)
+    pix.fGraphEvents=(TGraph*)fGraphEvents->Clone();
+  if (fGraphPowerSpectrum)
+    pix.fGraphPowerSpectrum=(TGraph*)fGraphPowerSpectrum->Clone();
+
+  pix.fHGausHist = fHGausHist;
+
+  pix.fLast      = fLast;
+  pix.fMean      = fMean;
+  pix.fMeanErr   = fMeanErr;
+  pix.fNbins     = fNbins;
+  pix.fNDFLimit  = fNDFLimit;
+  pix.fSigma     = fSigma;
+  pix.fSigmaErr  = fSigmaErr;
+  pix.fProb      = fProb;
+  pix.fProbLimit = fProbLimit;
+
+  // 
+  // Copy MHCalibrationPix data members
+  //
+  pix.fEventFrequency       = fEventFrequency;
+  pix.fBlackoutLimit        = fBlackoutLimit; 
+  pix.fSaturated            = fSaturated;     
+  pix.fPickupLimit          = fPickupLimit;   
+  pix.fPixId                = fPixId;        
+
+  // 
+  // Copy MHCalibrationChargePix data members
   //
   pix.fHAbsTime = fHAbsTime;
@@ -97,4 +150,5 @@
   return &pix;
 }
+#endif
 
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.h	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargePix.h	(revision 4962)
@@ -22,5 +22,5 @@
   ~MHCalibrationChargePix() {}
 
-  TObject *Clone(const char* name="") const;
+  //  TObject *Clone(const char* name="") const;
 
   void Reset();  
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.cc	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.cc	(revision 4962)
@@ -95,14 +95,58 @@
 }
 
-// --------------------------------------------------------------------------
-//
-// Use the MHGausEvents::Clone function and clone additionally the rest of the 
-// data members.
-//
+
+#if 0
+// --------------------------------------------------------------------------
+//
+// ATTENTION: This nasty Clone function is necessary since the ROOT cloning 
+//            lead to crashes on SOME machines (unfortunately not mine...).
+//            This function is a workaround in order to achieve the correct 
+//            DrawClone() behaviour.
+// 
 TObject *MHCalibrationPix::Clone(const char *name) const
 {
 
-  MHCalibrationPix &pix = (MHCalibrationPix&)*MHGausEvents::Clone(name);
-  
+  MHCalibrationPix &pix = *new MHCalibrationPix(name ? name : fName.Data(),fTitle.Data());
+  
+  // 
+  // Copy MHGausEvents data members
+  //
+  pix.fBinsAfterStripping   = fBinsAfterStripping;
+  pix.fCurrentSize          = fCurrentSize;
+  pix.fFlags                = fFlags;
+  pix.fPowerProbabilityBins = fPowerProbabilityBins;
+
+  if (fHPowerProbability)
+    pix.fHPowerProbability=(TH1I*)fHPowerProbability->Clone();
+  
+  if (fPowerSpectrum)
+    pix.fPowerSpectrum = new TArrayF(*fPowerSpectrum);
+
+  pix.fEvents = fEvents;
+
+  if (fFGausFit)
+    pix.fFGausFit=(TF1*)fFGausFit->Clone();
+  if (fFExpFit)
+    pix.fFExpFit=(TF1*)fFExpFit->Clone();
+
+  pix.fFirst = fFirst;
+
+  if (fGraphEvents)
+    pix.fGraphEvents=(TGraph*)fGraphEvents->Clone();
+  if (fGraphPowerSpectrum)
+    pix.fGraphPowerSpectrum=(TGraph*)fGraphPowerSpectrum->Clone();
+
+  pix.fHGausHist = fHGausHist;
+
+  pix.fLast      = fLast;
+  pix.fMean      = fMean;
+  pix.fMeanErr   = fMeanErr;
+  pix.fNbins     = fNbins;
+  pix.fNDFLimit  = fNDFLimit;
+  pix.fSigma     = fSigma;
+  pix.fSigmaErr  = fSigmaErr;
+  pix.fProb      = fProb;
+  pix.fProbLimit = fProbLimit;
+
   // 
   // Copy data members
@@ -116,4 +160,5 @@
   return &pix;
 }
+#endif
 
 // -----------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.h	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPix.h	(revision 4962)
@@ -13,13 +13,11 @@
   const static Float_t  fgPickupLimit;   //! Default for fPickupLimit   (now set to: 5. )
   
+protected:
+
   Float_t  fEventFrequency;              // Event frequency in Hertz (to be set)
 
   Float_t *CreateEventXaxis(Int_t n);    // Create an x-axis for the Event TGraphs
-  Float_t *CreatePSDXaxis(Int_t n);      // Create an x-axis for the PSD TGraphs
-  void     CreateGraphEvents();          // Create the TGraph fGraphEvents of fEvents                    
-  void     CreateGraphPowerSpectrum();   // Create the TGraph fGraphPowerSpectrum out of fPowerSpectrum
+  Float_t *CreatePSDXaxis  (Int_t n);    // Create an x-axis for the PSD TGraphs
   
-protected:
-
   Float_t  fBlackoutLimit;               // Lower nr sigmas from mean until event is considered blackout
   Int_t    fSaturated;                   // Number of events classified as saturated
@@ -34,11 +32,15 @@
   void  Clear(Option_t *o="");
 
-  TObject *Clone(const char* name="") const;
+  //  TObject *Clone(const char* name="") const;
   
+  void  CreateGraphEvents();          // Create the TGraph fGraphEvents of fEvents                    
+  void  CreateGraphPowerSpectrum();   // Create the TGraph fGraphPowerSpectrum out of fPowerSpectrum
+
   // Getters
-  const Double_t GetBlackout()           const;  
-  const Double_t GetPickup()             const;
-  const Int_t    GetPixId()              const { return fPixId;              }
-  const Float_t  GetSaturated()          const { return fSaturated;          }
+  const Double_t GetBlackout       () const;  
+  const Float_t  GetEventFrequency () const { return fEventFrequency; }
+  const Double_t GetPickup         () const;
+  const Int_t    GetPixId          () const { return fPixId;          }
+  const Float_t  GetSaturated      () const { return fSaturated;      }
 
   // Fits
@@ -47,9 +49,9 @@
   
   // Setters
+  void  AddSaturated        ( const Int_t    i                   ) { fSaturated     += i;   }
   void  SetBlackoutLimit    ( const Float_t  lim=fgBlackoutLimit ) { fBlackoutLimit  = lim; }
   void  SetEventFrequency   ( const Float_t  f                   ) { fEventFrequency = f;   }
   void  SetPickupLimit      ( const Float_t  lim=fgPickupLimit   ) { fPickupLimit    = lim; }
   void  SetPixId            ( const Int_t    i                   ) { fPixId          = i;   }
-  void  SetSaturated        ( const Int_t    i                   ) { fSaturated     += i;   }
 
   // Miscelleaneous
Index: trunk/MagicSoft/Mars/mhcalib/MHGausEvents.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHGausEvents.cc	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHGausEvents.cc	(revision 4962)
@@ -90,5 +90,5 @@
 
 #include "MFFT.h"
-#include "MArray.h"
+#include "MArrayF.h"
 
 #include "MH.h"
@@ -172,7 +172,7 @@
 
   // delete histograms
-//  if (fHPowerProbability)
-//      if (gROOT->FindObject(fHPowerProbability->GetName()))
-//	  delete fHPowerProbability;
+  if (fHPowerProbability)
+    if (gROOT->FindObject(fHPowerProbability->GetName()))
+      delete fHPowerProbability;
   
   // delete fits
@@ -271,6 +271,6 @@
 
   MHGausEvents &pix = (MHGausEvents&)*MH::Clone(name);
-  
-
+
+  /*
   // 
   // Copy data members
@@ -286,6 +286,4 @@
   if (fPowerSpectrum)
     pix.fPowerSpectrum = new TArrayF(*fPowerSpectrum);
-
-  pix.fEvents = fEvents;
 
   if (fFGausFit)
@@ -312,5 +310,5 @@
   pix.fProb      = fProb;
   pix.fProbLimit = fProbLimit;
-
+  */
   return &pix;
 }
@@ -365,5 +363,5 @@
   
   // This cuts only the non-used zero's, but MFFT will later cut the rest
-  MArray::StripZeros(fEvents);
+  fEvents.StripZeros();
 
   if (fEvents.GetSize() < 8)
@@ -425,5 +423,5 @@
 {
 
-  MArray::StripZeros(fEvents);
+  fEvents.StripZeros();
 
   const Int_t n = fEvents.GetSize();
@@ -446,5 +444,5 @@
 {
 
-  MArray::StripZeros(*fPowerSpectrum);
+  fPowerSpectrum->StripZeros();
 
   const Int_t n = fPowerSpectrum->GetSize();
@@ -616,4 +614,5 @@
 void MHGausEvents::FillArray(const Float_t f)
 {
+
   if (fEvents.GetSize() == 0)
     fEvents.Set(512);
Index: trunk/MagicSoft/Mars/mhcalib/MHGausEvents.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHGausEvents.h	(revision 4960)
+++ trunk/MagicSoft/Mars/mhcalib/MHGausEvents.h	(revision 4962)
@@ -10,11 +10,14 @@
 #endif
 
+#ifndef MARS_MArrayF
+#include "MArrayF.h"
+#endif
+
 class TVirtualPad;
 class TGraph;
-class TArrayF;
+class MArrayF;
 class TH1F;
 class TH1I;
 class TF1;
-
 class MHGausEvents : public MH
 {
@@ -28,10 +31,10 @@
 
   Int_t    fBinsAfterStripping;        // Bins for the Gauss Histogram after stripping off the zeros at both ends
-  Int_t    fCurrentSize;               // Current size of the array fEvents
+  UInt_t   fCurrentSize;               // Current size of the array fEvents
   Byte_t   fFlags;                     // Bit field for the fit result bits
   Int_t    fPowerProbabilityBins;      // Bins for the projected power spectrum
   
   TH1I    *fHPowerProbability;         // Fourier transform of fEvents projected on y-axis
-  TArrayF *fPowerSpectrum;             // Fourier transform of fEvents
+  MArrayF *fPowerSpectrum;             // Fourier transform of fEvents
 
   enum  { kGausFitOK,
@@ -40,5 +43,5 @@
           kExcluded };                 // Bits for information about fit results 
   
-  TArrayF  fEvents;                    // Array which holds the entries of GausHist
+  MArrayF  fEvents;                    // Array which holds the entries of GausHist
   TF1     *fFGausFit;                  // Gauss fit for fHGausHist
   TF1     *fFExpFit;                   // Exponential fit for FHPowerProbability
@@ -88,6 +91,6 @@
   const Int_t    GetExpNdf()             const;
   const Double_t GetExpProb()            const;
-        TArrayF *GetEvents()                   { return &fEvents;            }  
-  const TArrayF *GetEvents()             const { return &fEvents;            }
+        MArrayF *GetEvents()                   { return &fEvents;            }  
+  const MArrayF *GetEvents()             const { return &fEvents;            }
         TF1     *GetFExpFit()                  { return fFExpFit;            }
   const TF1     *GetFExpFit()            const { return fFExpFit;            } 
@@ -107,7 +110,8 @@
   const Double_t GetMeanErr()            const { return fMeanErr;            }
   const Int_t    GetNdf()                const;
+  const Int_t    GetNbins()               const { return fNbins;            }
   const Double_t GetOffset()             const;
-        TArrayF *GetPowerSpectrum()            { return fPowerSpectrum;      }  
-  const TArrayF *GetPowerSpectrum()      const { return fPowerSpectrum;      }
+        MArrayF *GetPowerSpectrum()            { return fPowerSpectrum;      }  
+  const MArrayF *GetPowerSpectrum()      const { return fPowerSpectrum;      }
   const Double_t GetProb()               const { return fProb;               }
   const Double_t GetSigma()              const { return fSigma;              }
