Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 3119)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 3120)
@@ -23,4 +23,18 @@
    * mcalib/MCalibrationCalc.cc
      - removed initialization of non-used nsamples
+
+   * mcalib/MHCalibrationPixel.[h,cc]
+   * mcalib/MCalibrationPix.[h,cc]
+   * mcalib/MCalibrationCalc.[h,cc]
+     - implemented new histograms: 
+       HSinglePheFADCSlices and HPedestalFADCSlices
+       They are filled with the FADC slice values of either a s.phe. 
+       event or a pedestal event. The decision is taken with the 
+       variable: MCalibrationCalc::fBlindPixelSinglePheCut, to be set 
+       with a setter 
+     - as the blind pixel signal seems to be delayed a bit, the 
+       extraction range is now by default: 10,20. The extractor takes 
+       already care of the fact that part of the signal lies in the 
+       LoGain Sample. 
 
 
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.cc	(revision 3120)
@@ -57,6 +57,4 @@
     *fLog << warn << dbginf << " Could not create MHCalibrationBlindPixel " << endl;
 
-  fHSinglePheFADCSlices = new TH1I("HSinglePheFADCSlices","Summed FADC slices single phe events",30,0.5,30.5);  
-  
   Clear();
 }
@@ -65,5 +63,4 @@
 {
   delete fHist;
-  delete fHSinglePheFADCSlices;
 }
 
@@ -96,5 +93,5 @@
 }
 
-Bool_t MCalibrationBlindPix::FillCharge(const Float_t q)
+Bool_t MCalibrationBlindPix::FillCharge(const Int_t q)
 {
   return fHist->FillBlindPixelCharge(q);
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.h	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationBlindPix.h	(revision 3120)
@@ -32,6 +32,4 @@
   Float_t fErrTime;             // The error of the mean arrival time after the fit
   
-  TH1I* fHSinglePheFADCSlices;
-
   
 public:
@@ -58,6 +56,4 @@
   Float_t GetErrTime()   const    { return fErrTime;      }
 
-  TH1I *GetSinglePheFADCSlices()    { return fHSinglePheFADCSlices;  }
-  
   MHCalibrationBlindPixel *GetHist()     const  { return fHist;  }
   MHCalibrationBlindPixel *GetHist()            { return fHist;  }
@@ -66,7 +62,7 @@
   
   // Fill histos
-  Bool_t FillCharge(const Float_t q); 
+  Bool_t FillCharge(const Int_t q); 
   Bool_t FillTime(const Float_t t); 
-  Bool_t FillGraphs(Float_t qhi,Float_t qlo) const { return fHist->FillGraphs(qhi,qlo); }
+  Bool_t FillGraphs(const Int_t qhi, const Int_t qlo) const { return fHist->FillGraphs(qhi,qlo); }
   
   // Fits
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc	(revision 3120)
@@ -115,6 +115,7 @@
 const UInt_t MCalibrationCalc::fPINDiodeId   = 9999;
 const Byte_t MCalibrationCalc::fgSaturationLimit = 254;
-const Byte_t MCalibrationCalc::fgBlindPixelFirst = 3;
-const Byte_t MCalibrationCalc::fgBlindPixelLast  = 12;
+const Byte_t MCalibrationCalc::fgBlindPixelFirst = 10;
+const Byte_t MCalibrationCalc::fgBlindPixelLast  = 20;
+const Int_t  MCalibrationCalc::fgBlindPixelSinglePheCut = 150;
 
 // --------------------------------------------------------------------------
@@ -460,6 +461,6 @@
               Byte_t *ptr = pixel.GetHiGainSamples();
 
-              Float_t blindpixelsumhi = 0.;
-              Float_t blindpixelsumlo = 0.;
+              Int_t blindpixelsumhi = 0;
+              Int_t blindpixelsumlo = 0;
               //
               // We need a dedicated signal extractor for the blind pixel
@@ -499,5 +500,5 @@
                 }
               
-              blindpixelsumhi = (Float_t)sum;
+              blindpixelsumhi = sum;
 
               ptr = pixel.GetLoGainSamples();
@@ -513,5 +514,5 @@
                 sum += *ptr;
 
-              blindpixelsumlo = (Float_t)sum;
+              blindpixelsumlo = sum;
 
               //              if (!CalcSignalBlindPixel(hiptr, blindpixelsumhi))
@@ -527,15 +528,18 @@
               blindpixel.FillGraphs(blindpixelsumhi,blindpixelsumlo);
           
-              TH1I *hist = blindpixel.GetSinglePheFADCSlices();
-
-              if (blindpixelsumhi > 50.)
-                {
-                  ptr = pixel.GetHiGainSamples();
-                  for (Int_t i=0;i<15;i++)
-                    hist->Fill(i,*ptr++);
-                  ptr = pixel.GetLoGainSamples();
-                  for (Int_t i=15;i<30;i++)
-                    hist->Fill(i,*ptr++);
-                }
+              TH1I *hist;
+
+              if (blindpixelsumhi > fBlindPixelSinglePheCut)
+                hist = (blindpixel.GetHist())->GetHSinglePheFADCSlices();
+              else
+                hist = (blindpixel.GetHist())->GetHPedestalFADCSlices();
+
+              ptr = pixel.GetHiGainSamples();
+              for (Int_t i=1;i<16;i++)
+                hist->Fill(i,*ptr++);
+              ptr = pixel.GetLoGainSamples();
+              for (Int_t i=16;i<31;i++)
+                hist->Fill(i,*ptr++);
+
             } /* if use blind pixel */
           
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h	(revision 3120)
@@ -43,4 +43,6 @@
   static const Byte_t fgBlindPixelFirst;    // First FADC slice blind pixel
   static const Byte_t fgBlindPixelLast;     // Last FADC slice blind pixel
+
+  static const Int_t  fgBlindPixelSinglePheCut; // FADC sum from which on an event is considered as a S.ph. one.
   
   MPedestalCam             *fPedestals;    // Pedestals of all pixels in the camera
@@ -59,4 +61,6 @@
   Byte_t fBlindPixelFirst;
   Byte_t fBlindPixelLast;
+
+  Int_t  fBlindPixelSinglePheCut;
   
   Float_t fConversionHiLo;
@@ -107,5 +111,6 @@
 
   void SetBlindPixelRange(Byte_t first=fgBlindPixelFirst, Byte_t last=fgBlindPixelLast);
-
+  void SetBlindPixelSinglePheCut(Int_t cut=fgBlindPixelSinglePheCut)    { fBlindPixelSinglePheCut = cut;  }
+  
   // Getters
   MCalibrationBlindPix *GetBlindPixel() const;
Index: /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.cc	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.cc	(revision 3120)
@@ -116,5 +116,5 @@
     fBlindPixelChargelast  = 1600.;
 
-    fHBlindPixelCharge = new TH1F("HBlindPixelCharge","Distribution of Summed FADC Slices",
+    fHBlindPixelCharge = new TH1I("HBlindPixelCharge","Distribution of Summed FADC Slices",
 				  fgBlindPixelChargeNbins,fBlindPixelChargefirst,fBlindPixelChargelast);
     fHBlindPixelCharge->SetXTitle("Sum FADC Slices");
@@ -133,4 +133,14 @@
     fLoGains = new TArrayF(fCurrentSize);
 
+    fHSinglePheFADCSlices = new TH1I("HSinglePheFADCSlices","FADC slices Single Phe events",30,0.5,30.5);  
+    fHSinglePheFADCSlices->SetXTitle("FADC slice");
+    fHSinglePheFADCSlices->SetYTitle("Counts");    
+    fHSinglePheFADCSlices->SetDirectory(NULL);    
+
+    fHPedestalFADCSlices  = new TH1I("HPedestalFADCSlices", "FADC slices Pedestal events",30,0.5,30.5);  
+    fHPedestalFADCSlices->SetXTitle("FADC slice");
+    fHPedestalFADCSlices->SetYTitle("Counts");    
+    fHPedestalFADCSlices->SetDirectory(NULL);    
+
     Clear();
 }
@@ -147,4 +157,7 @@
   delete fHiGains;
   delete fLoGains;
+
+  delete fHSinglePheFADCSlices;
+  delete fHPedestalFADCSlices;
 
   if (fHBlindPixelPSD)
@@ -247,6 +260,6 @@
   fLoGains->Set(1024);
 
-  fHiGains->Reset(0.);
-  fLoGains->Reset(0.);
+  fHiGains->Reset(0);
+  fLoGains->Reset(0);
 
 
@@ -337,5 +350,5 @@
 }
 
-void MHCalibrationBlindPixel::CutArrayBorder(TArrayF *array)
+void MHCalibrationBlindPixel::CutArrayBorder(TArrayF *array) const
 {
   
@@ -350,4 +363,17 @@
 }
 
+void MHCalibrationBlindPixel::CutArrayBorder(TArrayI *array) const 
+{
+  
+  Int_t i;
+
+  for (i=array->GetSize()-1;i>=0;i--)
+    if (array->At(i) != 0)
+      {
+        array->Set(i+1);
+        break;
+      }
+}
+
 const Bool_t MHCalibrationBlindPixel::IsFitOK() const 
 {
@@ -365,5 +391,5 @@
 }
 
-Bool_t MHCalibrationBlindPixel::FillGraphs(Float_t qhi,Float_t qlo)
+Bool_t MHCalibrationBlindPixel::FillGraphs(const Int_t qhi, const Int_t qlo)
 {
 
@@ -387,10 +413,10 @@
 
 
-Bool_t MHCalibrationBlindPixel::FillBlindPixelCharge(Float_t q)
+Bool_t MHCalibrationBlindPixel::FillBlindPixelCharge(const Int_t q)
 {
     return fHBlindPixelCharge->Fill(q) > -1;
 }
 
-Bool_t MHCalibrationBlindPixel::FillBlindPixelTime(Float_t t)
+Bool_t MHCalibrationBlindPixel::FillBlindPixelTime(const Float_t t)
 {
     return fHBlindPixelTime->Fill(t) > -1;
@@ -529,12 +555,21 @@
     c->cd(2);
     DrawLegend();
+    
+
+    c->cd(3);
+    gPad->SetLogy(0);
+    gPad->SetBorderMode(0);
+    //    fHBlindPixelTime->Draw(opt);
+    fHSinglePheFADCSlices->Draw(opt);
+
+    c->cd(4);
+    gPad->SetLogy(0);
+    gPad->SetBorderMode(0);
+    //    fHBlindPixelTime->Draw(opt);
+    fHPedestalFADCSlices->Draw(opt);
+    
     c->Modified();
     c->Update();
-    
-    c->cd(3);
-    gPad->SetLogy(1);
-    gPad->SetBorderMode(0);
-    fHBlindPixelTime->Draw(opt);
-    
+
     CutArrayBorder(fHiGains);
     CreateChargeXaxis(fHiGains->GetSize());
@@ -623,4 +658,6 @@
     c->Modified();
     c->Update();
+
+    c->cd(10);
 }
 
Index: /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.h	(revision 3119)
+++ /trunk/MagicSoft/Mars/mcalib/MHCalibrationBlindPixel.h	(revision 3120)
@@ -7,4 +7,5 @@
 
 class TArrayF;
+class TArrayI;
 class TH1F;
 class TH1I;
@@ -28,7 +29,10 @@
   static const Int_t   fPulserFrequency;
   
-  TH1F* fHBlindPixelCharge;        // Histogram with the single Phe spectrum
+  TH1I* fHBlindPixelCharge;        // Histogram with the single Phe spectrum
   TH1F* fHBlindPixelTime;          // Variance of summed FADC slices
   TH1F* fHBlindPixelPSD;           // Power spectrum density of fHBlindPixelChargevsN
+
+  TH1I* fHSinglePheFADCSlices;
+  TH1I* fHPedestalFADCSlices;
   
   TF1 *fSinglePheFit;   
@@ -58,5 +62,6 @@
   void CreateChargeXaxis(Int_t n);
   void CreatePSDXaxis(Int_t n);
-  void CutArrayBorder(TArrayF *array);
+  void CutArrayBorder(TArrayF *array) const;
+  void CutArrayBorder(TArrayI *array) const;
 
   TPaveText *fFitLegend;                  
@@ -104,7 +109,7 @@
   void Reset();
   
-  Bool_t FillBlindPixelCharge(Float_t q);
-  Bool_t FillBlindPixelTime(Float_t t);
-  Bool_t FillGraphs(Float_t qhi, Float_t qlo);
+  Bool_t FillBlindPixelCharge(const Int_t q);
+  Bool_t FillBlindPixelTime(const Float_t t);
+  Bool_t FillGraphs(const Int_t qhi, const Int_t qlo);
   
   // Setters
@@ -138,4 +143,7 @@
   const Double_t GetSigmaTimeErr()   const { return fSigmaTimeErr;   }
 
+  TH1I *GetHSinglePheFADCSlices()    { return fHSinglePheFADCSlices;  }
+  TH1I *GetHPedestalFADCSlices()    { return fHPedestalFADCSlices;  }  
+  
   const Bool_t IsFitOK()        const;
   const Bool_t IsOscillating();
