Index: trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.cc
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.cc	(revision 8804)
+++ trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.cc	(revision 8888)
@@ -1,4 +1,4 @@
 /* ======================================================================== *\
-! $Name: not supported by cvs2svn $:$Id: MPedestalSubtract.cc,v 1.9 2007-12-19 18:53:03 tbretz Exp $
+! $Name: not supported by cvs2svn $:$Id: MPedestalSubtract.cc,v 1.10 2008-05-14 11:03:24 tbretz Exp $
 ! --------------------------------------------------------------------------
 !
@@ -20,5 +20,5 @@
 !   Author(s): Thomas Bretz, 10/2006 <mailto:tbretz@astro.uni-wuerzburg.de>
 !
-!   Copyright: MAGIC Software Development, 2000-2006
+!   Copyright: MAGIC Software Development, 2000-2008
 !
 !
@@ -51,4 +51,5 @@
 #include "MArrayB.h"
 
+#include "MRawRunHeader.h"
 #include "MRawEvtData.h"
 #include "MRawEvtPixelIter.h"
@@ -141,4 +142,15 @@
 }
 
+Bool_t MPedestalSubtract::ReInit(MParList *pList)
+{
+    fRunHeader = (MRawRunHeader*)pList->FindObject(AddSerialNumber("MRawRunHeader"));
+    if (!fRunHeader)
+    {
+        *fLog << err << AddSerialNumber("MRawRunHeader") << " not found... aborting." << endl;
+        return kFALSE;
+    }
+    return kTRUE;
+}
+
 // --------------------------------------------------------------------------
 //
@@ -150,4 +162,21 @@
     const Int_t numl = fRawEvt->GetNumLoGainSamples();
 
+    // Check if event is empty (presumably MC event -- sanity check)
+    if (numh+numl==0)
+        return kCONTINUE;
+
+    // Check for consistency (our simulation can do weird things!)
+    if (numh!=fRunHeader->GetNumSamplesHiGain())
+    {
+        *fLog << warn << "WARNING - Number of hi-gain samples (" << numh << ") ";
+        *fLog << " doesn't match run-header (" << fRunHeader->GetNumSamplesHiGain() << ")." << endl;
+    }
+    if (numl!=fRunHeader->GetNumSamplesLoGain())
+    {
+        *fLog << warn << "WARNING - Number of lo-gain samples (" << numl << ") ";
+        *fLog << " doesn't match run-header (" << fRunHeader->GetNumSamplesLoGain() << ")." << endl;
+    }
+
+    // Get scale between FADC units and 256 ;-)
     const UInt_t scale = fRawEvt->GetScale();
 
Index: trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.h
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.h	(revision 8804)
+++ trunk/MagicSoft/Mars/mpedestal/MPedestalSubtract.h	(revision 8888)
@@ -6,4 +6,5 @@
 #endif
 
+class MRawRunHeader;
 class MRawEvtData;
 class MPedestalCam;
@@ -16,4 +17,5 @@
     static const TString fgNamePedestalSubtractedEvt;  //! "MPedestalSubtractedEvt"
 
+    MRawRunHeader          *fRunHeader;      //! Run Header
     MRawEvtData            *fRawEvt;         //! Input Raw data
     MPedestalCam           *fPedestals;      //! Pedestals of all pixels in the camera
@@ -24,4 +26,5 @@
 
     Int_t  PreProcess(MParList *pList);
+    Bool_t ReInit(MParList *pList);
     Int_t  Process();
 
