Index: trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc	(revision 4376)
+++ trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc	(revision 4379)
@@ -68,4 +68,5 @@
 //////////////////////////////////////////////////////////////////////////////
 #include "MHCalibrationChargeBlindPix.h"
+#include "MExtractBlindPixel.h"
 
 #include <TStyle.h>
@@ -95,9 +96,10 @@
 const Double_t MHCalibrationChargeBlindPix::gkElectronicAmp      = 0.008;
 const Double_t MHCalibrationChargeBlindPix::gkElectronicAmpErr   = 0.002;
-
-const Int_t    MHCalibrationChargeBlindPix::fgChargeNbins        = 1000;
+const Float_t  MHCalibrationChargeBlindPix::gkSignalInitializer  = -9999.;
+
+const Int_t    MHCalibrationChargeBlindPix::fgChargeNbins        = 512;
 const Axis_t   MHCalibrationChargeBlindPix::fgChargeFirst        = -0.5;
-const Axis_t   MHCalibrationChargeBlindPix::fgChargeLast         = 5999.5;
-const Float_t  MHCalibrationChargeBlindPix::fgSinglePheCut       = 600.;
+const Axis_t   MHCalibrationChargeBlindPix::fgChargeLast         = 255.5;
+const Float_t  MHCalibrationChargeBlindPix::fgSinglePheCut       =  60.;
 const Float_t  MHCalibrationChargeBlindPix::fgNumSinglePheLimit  =  50.;
 // --------------------------------------------------------------------------
@@ -122,4 +124,5 @@
 // - fASinglePheFADCSlices(0);
 // - fAPedestalFADCSlices(0);
+// - fPixId to 0
 //
 // Calls:
@@ -145,6 +148,6 @@
     SetSinglePheCut();
     SetNumSinglePheLimit();
-    SetProbLimit(0.00001);
-    SetBinsAfterStripping(50);
+    SetProbLimit(0.001);
+    SetBinsAfterStripping(64);
 
     fHGausHist.SetName("HCalibrationChargeBlindPix");
@@ -152,5 +155,7 @@
     fHGausHist.SetXTitle("Sum FADC Slices");
     fHGausHist.SetYTitle("Nr. of events");
-  
+
+    fPixId     = 0;
+
     Clear();
 }
@@ -187,5 +192,5 @@
 //
 // Sets:
-// - all variables to 0., except the fit result variables to -999.
+// - all variables to 0., except the fit result variables to gkSignalInitializer
 // - all flags to kFALSE
 // - all pointers to NULL
@@ -201,21 +206,20 @@
 {
 
-  fLambda    = -999.;
-  fMu0       = -999.;
-  fMu1       = -999.;
-  fSigma0    = -999.;
-  fSigma1    = -999.;
-  
-  fLambdaErr = -999.;
-  fMu0Err    = -999.;
-  fMu1Err    = -999.;
-  fSigma0Err = -999.;
-  fSigma1Err = -999.;
-
-  fLambdaCheck    = -999.;
-  fLambdaCheckErr = -999.;
-  
-  fFitFunc = kEMichele;
-  //  fFitFunc = kEPoisson4;
+  fLambda    = gkSignalInitializer;
+  fMu0       = gkSignalInitializer;
+  fMu1       = gkSignalInitializer;
+  fSigma0    = gkSignalInitializer;
+  fSigma1    = gkSignalInitializer;
+  fLambdaErr = gkSignalInitializer;
+  fMu0Err    = gkSignalInitializer;
+  fMu1Err    = gkSignalInitializer;
+  fSigma0Err = gkSignalInitializer;
+  fSigma1Err = gkSignalInitializer;
+
+  fLambdaCheck    = gkSignalInitializer;
+  fLambdaCheckErr = gkSignalInitializer;
+  
+  //  fFitFunc = kEMichele;
+  fFitFunc = kEPoisson4;
 
   fNumSinglePhes    = 0;
@@ -258,9 +262,33 @@
 }
 
+/*
+// --------------------------------------------------------------------------
+//
+// Our own clone function is necessary since root 3.01/06 or Mars 0.4
+// I don't know the reason. 
+//
+// Creates new MHCalibrationCam
+//
+TObject *MHCalibrationChargeBlindPix::Clone(const char *) const
+{
+
+    MHCalibrationChargeBlindPix *pix = new MHCalibrationChargeBlindPix();
+    this->Copy(*pix);
+
+    this->fHGausHist.Copy(pix->fHGausHist);
+    this->fSinglePheFit->Copy(*(pix->fSinglePheFit));
+    this->fHSinglePheFADCSlices->Copy(*(pix->fHSinglePheFADCSlices));
+    this->fHPedestalFADCSlices->Copy(*(pix->fHPedestalFADCSlices));
+    
+
+    return pix;
+}
+*/
+
 // --------------------------------------------------------------------------
 //
 // Set bit kSinglePheFitOK from outside
 //
-void MHCalibrationChargeBlindPix::SetSinglePheFitOK (const Bool_t b) 
+void MHCalibrationChargeBlindPix::SetSinglePheFitOK (const Bool_t b ) 
 {
     b ? SETBIT(fFlags,kSinglePheFitOK) : CLRBIT(fFlags,kSinglePheFitOK);
@@ -320,6 +348,4 @@
     }
   
-  InitBins();
-  
   return kTRUE;
 }
@@ -337,4 +363,25 @@
       return kFALSE;
 
+  fExtractor  = (MExtractBlindPixel*)pList->FindObject("MExtractBlindPixel");
+  if (!fExtractor)
+    {
+      *fLog << err << "MExtractBlindPixel not found... aborting " << endl;
+      return kFALSE;
+    }
+  
+  const Int_t samples = fSignal->GetNumFADCSamples();
+  const Int_t integ   = fExtractor->IsExtractionType( MExtractBlindPixel::kIntegral );
+
+  //
+  // Modify the histogram size in case, integrals have been used
+  //
+  if ( fLast < samples*integ*fgChargeLast )
+    {
+      SetLast        ( samples * 256. - 0.5     );
+      SetSinglePheCut( samples * fgSinglePheCut );
+    }
+
+  MHGausEvents::InitBins();
+  
   return kTRUE;
 }
@@ -384,8 +431,8 @@
     }
   
-  //
+//
   // Signal extraction and histogram filling
   //
-  const Float_t signal = (Float_t)fSignal->GetExtractedSignal();
+  const Float_t signal = fSignal->GetExtractedSignal(fPixId);
   if (signal > -0.5)
     FillHistAndArray(signal);
@@ -394,7 +441,7 @@
 
   //
-  // IN order to study the single-phe posistion, we extract the slices
-  //
-  const Int_t blindpixIdx = fSignal->GetBlindPixelIdx();
+  // In order to study the single-phe posistion, we extract the slices
+  //
+  const Int_t blindpixIdx = fSignal->GetBlindPixelIdx(fPixId);
 
   MRawEvtPixelIter pixel(fRawEvt);
@@ -579,5 +626,5 @@
   //
   const Stat_t   entries      = fHGausHist.Integral("width");
-  const Double_t lambda_guess = 0.1;
+  const Double_t lambda_guess = 0.05;
   const Double_t maximum_bin  = fHGausHist.GetBinCenter(fHGausHist.GetMaximumBin());
   const Double_t norm         = entries/TMath::Sqrt(TMath::TwoPi());
@@ -642,15 +689,20 @@
     case kEPoisson4:
 	fSinglePheFit->SetParNames(  "#lambda",   "#mu_{0}",    "#mu_{1}", "#sigma_{0}",  "#sigma_{1}","Area");
-        fSinglePheFit->SetParameters(lambda_guess,fMeanPedestal,mu_1_guess,fSigmaPedestal,si_1_guess,norm);
+        //        fSinglePheFit->SetParameters(lambda_guess,fMeanPedestal,mu_1_guess,fSigmaPedestal,si_1_guess,norm);
+        fSinglePheFit->SetParameters(0.05,10.,75.,20.,70.,norm);
 
 	fSinglePheFit->SetParLimits(0,0.,0.5);
-        fSinglePheFit->SetParLimits(1,
-                                    fMeanPedestal-5.*fMeanPedestalErr,
-                                    fMeanPedestal+5.*fMeanPedestalErr);
-	fSinglePheFit->SetParLimits(2,rmin,rmax);
-        fSinglePheFit->SetParLimits(3,
-                                    fSigmaPedestal-5.*fSigmaPedestalErr,
-                                    fSigmaPedestal+5.*fSigmaPedestalErr);
-	fSinglePheFit->SetParLimits(4,0.,(rmax-rmin));
+        //        fSinglePheFit->SetParLimits(1,
+        //                                    fMeanPedestal-5.*fMeanPedestalErr,
+        //                                    fMeanPedestal+5.*fMeanPedestalErr);
+        fSinglePheFit->SetParLimits(1,0.,30.);
+        //	fSinglePheFit->SetParLimits(2,rmin,rmax);
+	fSinglePheFit->SetParLimits(2,50.,150.);
+        //        fSinglePheFit->SetParLimits(3,
+        //                                    fSigmaPedestal-5.*fSigmaPedestalErr,
+        //                                    fSigmaPedestal+5.*fSigmaPedestalErr);
+        fSinglePheFit->SetParLimits(3,0.,50.);
+        //	fSinglePheFit->SetParLimits(4,0.,(rmax-rmin));
+	fSinglePheFit->SetParLimits(4,0.,100.);
 	fSinglePheFit->SetParLimits(5,norm-(0.5*norm),norm+(0.5*norm));
 	break;
@@ -1004,5 +1056,5 @@
 
   if (!IsEmpty())
-      gPad->SetLogy();
+    gPad->SetLogy();
 
   gPad->SetTicks();
Index: trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h	(revision 4376)
+++ trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h	(revision 4379)
@@ -22,4 +22,5 @@
 class MRawEvtPixelIter;
 class MCalibrationChargeBlindPix;
+class MExtractBlindPixel;
 class MExtractedSignalBlindPixel;
 class MHCalibrationChargeBlindPix : public MHCalibrationChargePix
@@ -32,4 +33,5 @@
   static const Float_t  fgSinglePheCut;      //! Default for fSinglePheCut (now set to: 200    )
   static const Float_t  fgNumSinglePheLimit; //! Default for fNumSinglePheLimit (now set to: 50)
+  static const Float_t  gkSignalInitializer; //! Signal initializer (-9999.)
   
   static const Double_t gkElectronicAmp;     // Electronic Amplification after the PMT (in FADC counts/N_e)
@@ -41,4 +43,5 @@
   MCalibrationChargeBlindPix *fBlindPix;     //! Storage container results  
   MExtractedSignalBlindPixel *fSignal;       //! Storage container extracted signal
+  MExtractBlindPixel         *fExtractor;    //! Extractor blind pixel
   MRawEvtData                *fRawEvt;       //! Storage container raw data
  
