Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 3930)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 3931)
@@ -20,4 +20,12 @@
 
  2004/05/03: Markus Gaug
+
+   * mpedestals/MPedestalPix.[h,cc]
+     - add a dedicated fValid flag in order to be able to discard pixels
+       from outside (e.g. from MBadPixelsCam)
+
+   * mpedestals/MPedCalcPedRun.[h,cc]
+     - catch badpixels cam from parameter list, if existing and set 
+       corresponding pixels to not valid in MPedestalPix
 
    * mjobs/MGCamDisplays.[h,cc]
Index: /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc	(revision 3930)
+++ /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc	(revision 3931)
@@ -116,4 +116,7 @@
 #include "MGeomCam.h"
 
+#include "MBadPixelsPix.h"
+#include "MBadPixelsCam.h"
+
 #include "MGeomCamMagic.h"
 
@@ -133,4 +136,5 @@
 //
 // Sets:
+// - all pointers to NULL
 // - fWindowSizeHiGain to fgHiGainWindowSize
 // - fWindowSizeLoGain to fgLoGainWindowSize
@@ -144,5 +148,6 @@
 MPedCalcPedRun::MPedCalcPedRun(const char *name, const char *title)
     : fWindowSizeHiGain(fgHiGainWindowSize), 
-      fWindowSizeLoGain(fgLoGainWindowSize)
+      fWindowSizeLoGain(fgLoGainWindowSize), 
+      fGeom(NULL),fBad(NULL)
 {
   fName  = name  ? name  : "MPedCalcPedRun";
@@ -263,4 +268,5 @@
 //  - MRawRunHeader
 //  - MGeomCam
+//  - MBadPixelsCam
 // 
 // The following output containers are also searched and created if
@@ -298,4 +304,6 @@
   if (!fPedestals)
     return kFALSE;
+
+  fBad       =  (MBadPixelsCam*)pList->FindObject("MBadPixelsCam");
 
   return kTRUE;
@@ -318,4 +326,7 @@
 // modifying the ranges again, if necessary.
 //
+// A loop over the MBadPixelsCam is performed and bad pixels are set
+// to MPedestalPix::SetValid(kFALSE);
+//
 Bool_t MPedCalcPedRun::ReInit(MParList *pList)
 {
@@ -385,7 +396,16 @@
   *fLog << inf << GetDescriptor() << ": Taking " << (int)fWindowSizeLoGain
         << " LoGain FADC samples starting with slice: " << (int)fLoGainFirst << endl;
+
+
+  if (fBad)
+    {
+      const Int_t nbads = fBad->GetSize();
+      for (Int_t i=0; i<(nbads>npixels?npixels:nbads);i++)
+        if ((*fBad)[i].IsBad())
+          (*fPedestals)[i].SetValid(kFALSE);
+    }
   
   return kTRUE;
-  
+      
 }
 // --------------------------------------------------------------------------
Index: /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.h
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.h	(revision 3930)
+++ /trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.h	(revision 3931)
@@ -15,4 +15,5 @@
 
 class MGeomCam;
+class MBadPixelsCam;
 class MPedCalcPedRun : public MExtractor
 {
@@ -30,4 +31,5 @@
   
   MGeomCam     *fGeom;       // Camera geometry
+  MBadPixelsCam *fBad;       // Bad Pixels
   
   TArrayF fSumx;         // sum of values
Index: /trunk/MagicSoft/Mars/mpedestal/MPedestalCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MPedestalCam.cc	(revision 3930)
+++ /trunk/MagicSoft/Mars/mpedestal/MPedestalCam.cc	(revision 3931)
@@ -314,4 +314,7 @@
 
   if (GetSize() <= idx)
+    return kFALSE;
+
+  if (!(*this)[idx].IsValid())
     return kFALSE;
 
Index: /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.cc
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.cc	(revision 3930)
+++ /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.cc	(revision 3931)
@@ -17,6 +17,7 @@
 !
 !   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
+!              Markus Gaug   04/2004 <mailto:markus@ifae.es>               
 !
-!   Copyright: MAGIC Software Development, 2000-2001
+!   Copyright: MAGIC Software Development, 2000-2004
 !
 !
@@ -41,4 +42,5 @@
 
 MPedestalPix::MPedestalPix()
+    : fValid(kTRUE)
 {
   Clear();
@@ -52,7 +54,6 @@
 void MPedestalPix::Clear(Option_t *o)
 {
-  fPedestal = -1.;
+  fPedestal    = -1.;
   fPedestalRms = -1.;
-
 }
 
@@ -60,5 +61,5 @@
 {
 
-  fPedestal = 0.;
+  fPedestal    = 0.;
   fPedestalRms = 0.;
 }
@@ -67,5 +68,5 @@
 void MPedestalPix::Set(Float_t m, Float_t r)
 {
-  fPedestal = m; 
+  fPedestal    = m; 
   fPedestalRms = r; 
 }
@@ -73,4 +74,8 @@
 Bool_t MPedestalPix::IsValid() const 
 {
+
+  if (!fValid)
+    return kFALSE;
+
  return fPedestal>=0||fPedestalRms>=0;
 }
Index: /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.h
===================================================================
--- /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.h	(revision 3930)
+++ /trunk/MagicSoft/Mars/mpedestal/MPedestalPix.h	(revision 3931)
@@ -12,4 +12,5 @@
   Float_t fPedestal;     // mean value of pedestal (PMT offset)
   Float_t fPedestalRms;  // root mean square / sigma  / standard deviation of pedestal
+  Bool_t  fValid;        // flag to set pixel valid
   
 public:
@@ -26,4 +27,5 @@
   
   void Set(const Float_t m, const Float_t r);
+  void SetValid(const Bool_t b=kTRUE)    { fValid = b;  }
   
   // Getters
