Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 8346)
+++ trunk/MagicSoft/Mars/Changelog	(revision 8347)
@@ -65,9 +65,19 @@
      - added range to GetIdxMax*
 
+   * mhcalib/MHCalibrationPulseTimeCam.[h,cc]:
+     - removed obsolete data members fSumhiarea and fSumhisector
+     - replaced the usage of MRawEvtData by MPedestalSubtractedEvt
+     - according to this the lower signal limit has been decresed
+       by 15
+
+   * mjobs/MJPedestal.cc:
+     - first subtract pedestal and then fill MHCalibrationPulseTimeCam
+     - fill MHCalibrationPulseTimeCam with MPedestalSubtracted
+
 
 
  2007/02/28 Thomas Bretz
 
-  * macros/tutorials/mirrordelay.C:
+   * macros/tutorials/mirrordelay.C:
      - fixed the formula for the spherical mirror
      - fixed the calculation of the time-delay
Index: trunk/MagicSoft/Mars/NEWS
===================================================================
--- trunk/MagicSoft/Mars/NEWS	(revision 8346)
+++ trunk/MagicSoft/Mars/NEWS	(revision 8347)
@@ -11,4 +11,7 @@
 
    - callisto: Improved binning for the pulse position check histogram
+
+   - callisto: The code calculating the pulse position checknow takes
+     the pedestal into account
 
 
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc	(revision 8346)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc	(revision 8347)
@@ -1,4 +1,4 @@
 /* ======================================================================== *\
-! $Name: not supported by cvs2svn $:$Id: MHCalibrationPulseTimeCam.cc,v 1.29 2007-03-01 21:16:55 tbretz Exp $
+! $Name: not supported by cvs2svn $:$Id: MHCalibrationPulseTimeCam.cc,v 1.30 2007-03-01 23:04:55 tbretz Exp $
 ! --------------------------------------------------------------------------
 !
@@ -103,16 +103,10 @@
 /////////////////////////////////////////////////////////////////////////////
 #include "MHCalibrationPulseTimeCam.h"
-#include "MHCalibrationCam.h"
-
+
+#include <TEnv.h>
+#include <TGraph.h>
+#include <TLegend.h>
+#include <TCanvas.h>
 #include <TOrdCollection.h>
-#include <TPad.h>
-#include <TVirtualPad.h>
-#include <TCanvas.h>
-#include <TStyle.h>
-#include <TF1.h>
-#include <TLatex.h>
-#include <TLegend.h>
-#include <TGraph.h>
-#include <TEnv.h>
 
 #include "MLog.h"
@@ -121,26 +115,18 @@
 #include "MParList.h"
 
+#include "MArrayD.h"
+#include "MRawRunHeader.h"
+#include "MExtractedSignalCam.h"
+#include "MPedestalSubtractedEvt.h"
+
+#include "MCalibrationPix.h"
 #include "MHCalibrationPix.h"
-
 #include "MCalibrationIntensityCam.h"
-#include "MCalibrationChargeCam.h"
-#include "MCalibrationChargePix.h"
+#include "MBadPixelsIntensityCam.h"
 
 #include "MGeomCam.h"
 #include "MGeomPix.h"
 
-#include "MBadPixelsIntensityCam.h"
 #include "MBadPixelsCam.h"
-#include "MBadPixelsPix.h"
-
-#include "MRawEvtData.h"
-#include "MRawRunHeader.h"
-#include "MRawEvtPixelIter.h"
-
-#include "MExtractedSignalCam.h"
-#include "MExtractedSignalPix.h"
-
-#include "MArrayI.h"
-#include "MArrayD.h"
 
 ClassImp(MHCalibrationPulseTimeCam);
@@ -149,5 +135,5 @@
 
 const Byte_t  MHCalibrationPulseTimeCam::fgSaturationLimit   = 254;
-const Byte_t  MHCalibrationPulseTimeCam::fgLowerSignalLimit  = 100;
+const Byte_t  MHCalibrationPulseTimeCam::fgLowerSignalLimit  =  85;
 const Int_t   MHCalibrationPulseTimeCam::fgNumPixelsRequired = 2;
 const Int_t   MHCalibrationPulseTimeCam::fgHiGainNbins =  20;
@@ -160,4 +146,5 @@
 const TString MHCalibrationPulseTimeCam::gsHistYTitle  = "Nr. events";
 const TString MHCalibrationPulseTimeCam::fgReferenceFile = "mjobs/signalref.rc";
+
 // --------------------------------------------------------------------------
 //
@@ -298,7 +285,4 @@
 
   InitHiGainArrays(npixels,nareas,nsectors);
-
-  fSumhiarea  .Set(nareas); 
-  fSumhisector.Set(nsectors); 
 
   return kTRUE;
@@ -378,111 +362,80 @@
 Bool_t MHCalibrationPulseTimeCam::FillHists(const MParContainer *par, const Stat_t w)
 {
-
-  MRawEvtData *data = (MRawEvtData*)par;
-  if (!data)
-    {
-      *fLog << err << "No argument in MHCalibrationPulseTimeCam::Fill... abort." << endl;
-      return kFALSE;
-    }
-  
-  const UInt_t nareas   = fGeom->GetNumAreas();
-  const UInt_t nsectors = fGeom->GetNumSectors();
-
-  fSumhiarea  .Reset(); 
-  fSumhisector.Reset(); 
-  fAverageAreaNum.Reset();
-  fAverageSectorNum.Reset();
-
-  MRawEvtPixelIter pixel(data);
-  while (pixel.Next())
-    {
-      
-      const Int_t i = pixel.GetPixelId();
-
-      if (fBadPixels)
+    MPedestalSubtractedEvt *evt = (MPedestalSubtractedEvt*)par;
+    if (!evt)
+    {
+        *fLog << err << "No argument in MHCalibrationPulseTimeCam::Fill... abort." << endl;
+        return kFALSE;
+    }
+
+    const UInt_t nareas   = fGeom->GetNumAreas();
+    const UInt_t nsectors = fGeom->GetNumSectors();
+
+    MArrayD sumarea(nareas);
+    MArrayD sumsector(nsectors);
+
+    fAverageAreaNum.Reset();
+    fAverageSectorNum.Reset();
+
+    const Int_t npix = evt->GetNumPixels();
+    for (int idx=0; idx<npix; idx++)
+    {
+        if (fBadPixels)
+            if ((*fBadPixels)[idx].IsUnsuitable())
+                continue;
+
+        Float_t *beg = evt->GetSamples(idx);
+        Float_t *end = beg + evt->GetNumSamples();;
+        Float_t *max = beg;
+
+        for (Float_t *ptr=beg+1; ptr<end; ptr++)
+            if (*ptr>*max)
+                max = ptr;
+
+        if (*max<fLowerSignalLimit || *max>fSaturationLimit)
+            continue;
+
+        const Int_t maxpos = max-beg-1;
+
+        (*this)[idx].FillHist(maxpos);
+
+        const Int_t aidx   = (*fGeom)[idx].GetAidx();
+        const Int_t sector = (*fGeom)[idx].GetSector();
+
+        sumarea[aidx]     += maxpos;
+        sumsector[sector] += maxpos;
+
+        fAverageAreaNum[aidx]++;
+        fAverageSectorNum[sector]++;
+    }
+
+    for (UInt_t j=0; j<nareas; j++)
+    {
+        const Int_t npix = fAverageAreaNum[j];
+
+        if (npix > fNumPixelsRequired)
         {
-          MBadPixelsPix &bad = (*fBadPixels)[i];
-          if (bad.IsUnsuitable())
-            continue;
+            if (IsOscillations())
+                GetAverageHiGainArea(j).FillHistAndArray(sumarea[j]/npix);
+            else
+                GetAverageHiGainArea(j).FillHist(sumarea[j]/npix);
+
         }
-
-      Byte_t *start = pixel.GetHiGainSamples();
-      Byte_t *end   = start + pixel.GetNumHiGainSamples();
-      Byte_t *p     = start;
-      Byte_t *max   = start;
-      Int_t  maxpos = 0;
-
-      while (p < end)
-	{
-	  if (*p > *max)
-	    {
-              max = p;
-              maxpos = p-start-1;
-	    }
-	  p++;
-	}
-
-      if (*max > fSaturationLimit)
-	continue;
-
-      start   = pixel.GetLoGainSamples();
-      end     = start + pixel.GetNumLoGainSamples();
-      p       = start;
-
-      while (p < end)
-	{
-	  if (*p > *max)
-	    {
-	      max = p;
-	      maxpos = p-start-1 + pixel.GetNumHiGainSamples();
-	    }
-	  p++;
-	}
-
-      if (*max < fLowerSignalLimit || *max > fSaturationLimit)
-	continue;
-
-      (*this)[i].FillHist(maxpos);
-        
-      const Int_t aidx   = (*fGeom)[i].GetAidx();
-      const Int_t sector = (*fGeom)[i].GetSector();
-
-      fSumhiarea[aidx]      += maxpos;
-      fSumhisector[sector]  += maxpos;
-
-      fAverageAreaNum[aidx]++;
-      fAverageSectorNum[sector]++;
-    }
-  
-  for (UInt_t j=0; j<nareas; j++)
-    {
-
-      const Int_t npix = fAverageAreaNum[j];
-
-      if (npix > fNumPixelsRequired)
-	{
-	   if (IsOscillations())
-	        GetAverageHiGainArea(j).FillHistAndArray(fSumhiarea[j]/npix);
-	   else
-	        GetAverageHiGainArea(j).FillHist(fSumhiarea[j]/npix);
-
-	}
-    }
-
-  for (UInt_t j=0; j<nsectors; j++)
-    {
-
-      const Int_t npix = fAverageSectorNum[j];
-
-      if (npix > 0)
-	{
-	   if (IsOscillations())
-	        GetAverageHiGainSector(j).FillHistAndArray(fSumhisector [j]/npix);
-	   else
-	        GetAverageHiGainSector(j).FillHist(fSumhisector [j]/npix);
-	}
-    }
-
-  return kTRUE;
+    }
+
+    for (UInt_t j=0; j<nsectors; j++)
+    {
+        const Int_t npix = fAverageSectorNum[j];
+
+        if (npix > 0)
+        {
+            if (IsOscillations())
+                GetAverageHiGainSector(j).FillHistAndArray(sumsector[j]/npix);
+            else
+                GetAverageHiGainSector(j).FillHist(sumsector[j]/npix);
+        }
+    }
+
+    return kTRUE;
 }
 
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h	(revision 8346)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h	(revision 8347)
@@ -6,15 +6,8 @@
 #endif
 
-#ifndef MARS_MArrayI
-#include "MArrayI.h"
-#endif
-
-#ifndef MARS_MArrayD
-#include "MArrayD.h"
-#endif
-
 class TH1F;
 class MRawEvtData;
 class MHCalibrationChargePix;
+
 class MHCalibrationPulseTimeCam : public MHCalibrationCam
 {
@@ -45,7 +38,4 @@
   Float_t fInnerRefTime;                       // The reference mean arrival time inner pixels
   Float_t fOuterRefTime;                       // The reference mean arrival time outer pixels
-
-  MArrayF fSumhiarea  ;                        //!
-  MArrayF fSumhisector;                        //!
 
   MBadPixelsCam *fBadPixels;                   //!  Bad Pixels
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 8346)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 8347)
@@ -1064,5 +1064,5 @@
         hpedcam.SetRenorm(kTRUE);
 
-    MFillH fillpul("MHCalibrationPulseTimeCam", "MRawEvtData", "FillPulseTime");
+    MFillH fillpul("MHCalibrationPulseTimeCam", "MPedestalSubtractedEvt", "FillPulseTime");
     fillpul.SetBit(MFillH::kDoNotDisplay);
 
@@ -1108,11 +1108,4 @@
     tlist.AddToList(&decode);
 
-    if (fIsPulsePosCheck)
-    {
-        fillpul.SetFilter(&fcalib);
-	tlist.AddToList(&fcalib);
-        tlist.AddToList(&fillpul);
-    }
-
     // produce pedestal subtracted raw-data
     MPedestalSubtract pedsub;
@@ -1122,4 +1115,11 @@
         pedsub.SetNamePedestalCam(""); // Only copy hi- and lo-gain together!
     tlist.AddToList(&pedsub);
+
+    if (fIsPulsePosCheck)
+    {
+        fillpul.SetFilter(&fcalib);
+	tlist.AddToList(&fcalib);
+        tlist.AddToList(&fillpul);
+    }
 
     // ----------------------------------------------------------------------
