Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4767)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4768)
@@ -185,4 +185,6 @@
        tries to keep the random arrival time for pixels without
        signal
+     - fixed a bug which could cause a crash
+     - added more control over the pedestal treatment
 
 
Index: /trunk/MagicSoft/Mars/callisto.rc
===================================================================
--- /trunk/MagicSoft/Mars/callisto.rc	(revision 4767)
+++ /trunk/MagicSoft/Mars/callisto.rc	(revision 4768)
@@ -198,9 +198,10 @@
 # Setup level for determining of bad pixels
 # -------------------------------------------------------------------------
-# MJCalibrateSignal.MBadPixelsCalc.PedestalLevel: 3.0
-MJCalibrateSignal.MBadPixelsTreat.NumMinNeighbors:  2
-MJCalibrateSignal.MBadPixelsTreat.UseInterpolation: yes
-MJCalibrateSignal.MBadPixelsTreat.ProcessPedestal:  yes
-MJCalibrateSignal.MBadPixelsTreat.ProcessTimes:     yes
-#MJCalibrateSignal.MBadPixelsTreat.UseCentralPixel:  no
-#MJCalibrateSignal.MBadPixelsTreat.HardTreatment:    no
+# MJCalibrateSignal.MBadPixelsCalc.PedestalLevel:      3.0
+MJCalibrateSignal.MBadPixelsTreat.NumMinNeighbors:    2
+MJCalibrateSignal.MBadPixelsTreat.UseInterpolation:   yes
+MJCalibrateSignal.MBadPixelsTreat.ProcessPedestalEvt: yes
+MJCalibrateSignal.MBadPixelsTreat.ProcessPedestalRun: no
+MJCalibrateSignal.MBadPixelsTreat.ProcessTimes:       yes
+#MJCalibrateSignal.MBadPixelsTreat.UseCentralPixel:    no
+#MJCalibrateSignal.MBadPixelsTreat.HardTreatment:      no
Index: /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.cc	(revision 4767)
+++ /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.cc	(revision 4768)
@@ -95,4 +95,6 @@
     fName  = name  ? name  : gsDefName.Data();
     fTitle = title ? title : gsDefTitle.Data();
+
+    SetProcessPedestalRun();
 }
 
@@ -140,5 +142,5 @@
 
     fPedPhot = 0;
-    if (IsProcessPedestal())
+    if (IsProcessPedestalEvt() || IsProcessPedestalRun())
     {
         fPedPhot = (MPedPhotCam*)pList->FindObject(AddSerialNumber(fNamePedPhotCam), "MPedPhotCam");
@@ -608,5 +610,5 @@
 Bool_t MBadPixelsTreat::ReInit(MParList *pList)
 {
-    if (!TESTBIT(fFlags, kProcessPedestal))
+    if (IsProcessPedestalRun())
         InterpolatePedestals();
     return kTRUE;
@@ -622,7 +624,7 @@
     {
         InterpolateSignal();
-        if (TESTBIT(fFlags, kProcessPedestal))
+        if (IsProcessPedestalEvt())
             InterpolatePedestals();
-        if (TESTBIT(fFlags, kProcessTimes))
+        if (IsProcessTimes())
             InterpolateTimes();
     }
@@ -645,13 +647,15 @@
     out << ";" << endl;
 
-    if (TESTBIT(fFlags, kUseInterpolation))
+    if (IsUseInterpolation())
         out << "   " << GetUniqueName() << ".SetUseInterpolation();" << endl;
-    if (TESTBIT(fFlags, kUseCentralPixel))
+    if (IsUseCentralPixel())
         out << "   " << GetUniqueName() << ".SetUseCentralPixel();" << endl;
-    if (TESTBIT(fFlags, kProcessPedestal))
-        out << "   " << GetUniqueName() << ".SetProcessPedestal();" << endl;
-    if (TESTBIT(fFlags, kProcessTimes))
+    if (IsProcessPedestalRun())
+        out << "   " << GetUniqueName() << ".SetProcessPedestalRun();" << endl;
+    if (IsProcessPedestalEvt())
+        out << "   " << GetUniqueName() << ".SetProcessPedestalEvt();" << endl;
+    if (IsProcessTimes())
         out << "   " << GetUniqueName() << ".SetProcessTimes();" << endl;
-    if (TESTBIT(fFlags, kHardTreatment))
+    if (IsHardTreatment())
         out << "   " << GetUniqueName() << ".SetHardTreatment();" << endl;
     if (fNumMinNeighbors!=3)
@@ -662,9 +666,10 @@
 //
 // Read the setup from a TEnv, eg:
-//   MBadPixelsTreat.UseInterpolation: no
-//   MBadPixelsTreat.UseCentralPixel:  no
-//   MBadPixelsTreat.HardTreatment:    no
-//   MBadPixelsTreat.ProcessPedestal:  no
-//   MBadPixelsTreat.NumMinNeighbors:  3
+//   MBadPixelsTreat.UseInterpolation:    no
+//   MBadPixelsTreat.UseCentralPixel:     no
+//   MBadPixelsTreat.HardTreatment:       no
+//   MBadPixelsTreat.ProcessPedestalRun:  no
+//   MBadPixelsTreat.ProcessPedestalEvt:  no
+//   MBadPixelsTreat.NumMinNeighbors:     3
 //
 Int_t MBadPixelsTreat::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
@@ -686,8 +691,13 @@
         SetHardTreatment(GetEnvValue(env, prefix, "HardTreatment", IsHardTreatment()));
     }
-    if (IsEnvDefined(env, prefix, "ProcessPedestal", print))
+    if (IsEnvDefined(env, prefix, "ProcessPedestalRun", print))
     {
         rc = kTRUE;
-        SetProcessPedestal(GetEnvValue(env, prefix, "ProcessPedestal", IsProcessPedestal()));
+        SetProcessPedestalRun(GetEnvValue(env, prefix, "ProcessPedestalRun", IsProcessPedestalRun()));
+    }
+    if (IsEnvDefined(env, prefix, "ProcessPedestalEvt", print))
+    {
+        rc = kTRUE;
+        SetProcessPedestalEvt(GetEnvValue(env, prefix, "ProcessPedestalEvt", IsProcessPedestalEvt()));
     }
     if (IsEnvDefined(env, prefix, "ProcessTimes", print))
Index: /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.h
===================================================================
--- /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.h	(revision 4767)
+++ /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsTreat.h	(revision 4768)
@@ -28,9 +28,10 @@
     enum
     {
-        kUseInterpolation = 1,
-        kUseCentralPixel  = 2,
-        kProcessPedestal  = 3,
-        kProcessTimes     = 4,
-        kHardTreatment    = 5
+        kUseInterpolation   = 1,
+        kUseCentralPixel    = 2,
+        kProcessPedestalRun = 3,
+        kProcessPedestalEvt = 4,
+        kProcessTimes       = 5,
+        kHardTreatment      = 6
     };
 
@@ -61,7 +62,16 @@
         b ? SETBIT(fFlags, kUseCentralPixel) : CLRBIT(fFlags, kUseCentralPixel);
     }
+    void SetProcessPedestalRun(Bool_t b=kTRUE)
+    {
+        b ? SETBIT(fFlags, kProcessPedestalRun) : CLRBIT(fFlags, kProcessPedestalRun);
+    }
+    void SetProcessPedestalEvt(Bool_t b=kTRUE)
+    {
+        b ? SETBIT(fFlags, kProcessPedestalEvt) : CLRBIT(fFlags, kProcessPedestalEvt);
+    }
     void SetProcessPedestal(Bool_t b=kTRUE)
     {
-        b ? SETBIT(fFlags, kProcessPedestal) : CLRBIT(fFlags, kProcessPedestal);
+        SetProcessPedestalRun(!b);
+        SetProcessPedestalEvt(b);
     }
     void SetProcessTimes(Bool_t b=kTRUE)
@@ -74,9 +84,10 @@
     }
 
-    Bool_t IsHardTreatment() const    { return TESTBIT(fFlags, kHardTreatment); }
-    Bool_t IsProcessPedestal() const  { return TESTBIT(fFlags, kProcessPedestal); }
-    Bool_t IsProcessTimes() const     { return TESTBIT(fFlags, kProcessTimes); }
-    Bool_t IsUseCentralPixel() const  { return TESTBIT(fFlags, kUseCentralPixel); }
-    Bool_t IsUseInterpolation() const { return TESTBIT(fFlags, kUseInterpolation); }
+    Bool_t IsHardTreatment() const      { return TESTBIT(fFlags, kHardTreatment); }
+    Bool_t IsProcessPedestalRun() const { return TESTBIT(fFlags, kProcessPedestalRun); }
+    Bool_t IsProcessPedestalEvt() const { return TESTBIT(fFlags, kProcessPedestalEvt); }
+    Bool_t IsProcessTimes() const       { return TESTBIT(fFlags, kProcessTimes); }
+    Bool_t IsUseCentralPixel() const    { return TESTBIT(fFlags, kUseCentralPixel); }
+    Bool_t IsUseInterpolation() const   { return TESTBIT(fFlags, kUseInterpolation); }
 
     void SetNumMinNeighbors(Byte_t num) { fNumMinNeighbors=num; }
