Index: trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.cc	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.cc	(revision 4723)
@@ -282,2 +282,9 @@
   out << ");" << endl;
 }
+
+void MExtractFixedWindow::Print(Option_t *o) const
+{
+    *fLog << all;
+    *fLog << GetDescriptor() << ":" << endl;
+    MExtractor::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractFixedWindow.h	(revision 4723)
@@ -33,6 +33,8 @@
 
   void SetRange(Byte_t hifirst=0, Byte_t hilast=0, Byte_t lofirst=0, Byte_t lolast=0);
+
+  void Print(Option_t *o="") const;
   
-  ClassDef(MExtractFixedWindow, 0) // Signal Extractor for a fixed extraction window
+  ClassDef(MExtractFixedWindow, 1) // Signal Extractor for a fixed extraction window
 };
 
Index: trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.cc	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.cc	(revision 4723)
@@ -520,2 +520,13 @@
     return rc;
 }
+
+void MExtractFixedWindowPeakSearch::Print(Option_t *o) const
+{
+    *fLog << all;
+    *fLog << GetDescriptor() << ":" << endl;
+    *fLog << " Windows: Hi-Gain=" << (int)fHiGainWindowSize << "  Lo-Gain=" << (int)fLoGainWindowSize;
+    *fLog << "  Peak-Search=" << (int)fPeakSearchWindowSize << endl;
+    *fLog << " Offset From Window: " << (int)fOffsetFromWindow << endl;
+    *fLog << " Lo-Gain peak Shift: " << (int)fLoGainPeakShift << endl;
+    MExtractor::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractFixedWindowPeakSearch.h	(revision 4723)
@@ -45,6 +45,8 @@
 
     void SetLoGainPeakShift(Byte_t shift=fgLoGainPeakShift) { fLoGainPeakShift = shift; }
-    
-    ClassDef(MExtractFixedWindowPeakSearch, 0) // Signal Extractor for fixed size trigger-corrected extraction window 
+
+    void Print(Option_t *o="") const;
+
+    ClassDef(MExtractFixedWindowPeakSearch, 1) // Signal Extractor for fixed size trigger-corrected extraction window
 };
 
Index: trunk/MagicSoft/Mars/msignal/MExtractSlidingWindow.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractSlidingWindow.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractSlidingWindow.h	(revision 4723)
@@ -32,5 +32,5 @@
                      Byte_t windowl=fgLoGainWindowSize);
 
-  ClassDef(MExtractSlidingWindow, 0) // Signal Extractor for sliding extraction window
+  ClassDef(MExtractSlidingWindow, 1) // Signal Extractor for sliding extraction window
 };
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTime.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTime.cc	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTime.cc	(revision 4723)
@@ -69,5 +69,7 @@
 
 using namespace std;
+
 const Float_t MExtractTime::fgOffsetLoGain = 1.51;   // 5 ns
+
 // --------------------------------------------------------------------------
 //
@@ -83,5 +85,5 @@
 //
 MExtractTime::MExtractTime(const char *name, const char *title)
-  : fArrTime(NULL), fNamePedContainer("MPedestalCam")
+  : fArrTime(NULL)
 {
 
@@ -108,5 +110,4 @@
 Int_t MExtractTime::PreProcess(MParList *pList)
 {
-
   fRawEvt = (MRawEvtData*)pList->FindObject(AddSerialNumber("MRawEvtData"));
   if (!fRawEvt)
@@ -129,5 +130,5 @@
   
 
-  fPedestals = (MPedestalCam*)pList->FindObject( AddSerialNumber(fNamePedContainer), "MPedestalCam");
+  fPedestals = (MPedestalCam*)pList->FindObject( AddSerialNumber(fNamePedestalCam), "MPedestalCam");
   if (!fPedestals)
     {
@@ -214,2 +215,30 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// In addition to the resources of the base-class MExtractor:
+//   MJPedestal.MExtractor.OffsetLoGain: 1.51
+//
+Int_t MExtractTime::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
+{
+    Bool_t rc = kFALSE;
+
+    if (IsEnvDefined(env, prefix, "OffsetLoGain", print))
+    {
+        fOffsetLoGain = GetEnvValue(env, prefix, "OffsetLoGain", fOffsetLoGain);
+        rc = kTRUE;
+    }
+
+    rc = MExtractor::ReadEnv(env, prefix, print) ? kTRUE : rc;
+
+    return rc;
+}
+
+void MExtractTime::Print(Option_t *o) const
+{
+    *fLog << all;
+    if (IsA()==MExtractTime::Class())
+        *fLog << GetDescriptor() << ":" << endl;
+    *fLog << " Offset Lo-Gain=" << fOffsetLoGain << endl;
+    MExtractor::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractTime.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTime.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTime.h	(revision 4723)
@@ -8,21 +8,19 @@
 class MPedestalPix;
 class MArrivalTimeCam;
+
 class MExtractTime : public MExtractor
 {
-  
+private:
   static const Float_t fgOffsetLoGain;  // Default for fOffsetLoGain (now set to 1.51 (= 5ns)
 
+  Int_t  PreProcess(MParList *pList);
+  Bool_t ReInit(MParList *pList);
+  Int_t  Process();
+
 protected:
+  Float_t fOffsetLoGain;     // Offset of the low-gain signal w.r.t. the High-Gain slices
 
-  Float_t fOffsetLoGain;                // Offset of the low-gain signal w.r.t. the High-Gain slices 
-
-  MArrivalTimeCam *fArrTime;            // Container with the photons arrival times
-  TString fNamePedContainer; // name of the 'MPedestalCam' container
+  MArrivalTimeCam *fArrTime; //! Container with the photons arrival times
   
-
-  virtual Int_t PreProcess(MParList *pList);
-  virtual Bool_t ReInit(MParList *pList);
-  virtual Int_t Process();
-
   virtual void FindTimeHiGain(Byte_t *firstused, Float_t &time, Float_t &dtime,
                               Byte_t &sat, const MPedestalPix &ped) const;
@@ -30,17 +28,15 @@
                               Byte_t &sat, const MPedestalPix &ped) const;
 
+  Int_t  ReadEnv(const TEnv &env, TString prefix, Bool_t print);
+
 public:
-
   MExtractTime(const char *name=NULL, const char *title=NULL);
 
   void SetOffsetLoGain( const Float_t f=fgOffsetLoGain) { fOffsetLoGain = f; }
-  void SetNamePedContainer(const char *name)    { fNamePedContainer = name; }
 
- 
-  ClassDef(MExtractTime, 0)   // Arrival Time Extractor Base Class
+  void Print(Option_t *o) const;
+
+  ClassDef(MExtractTime, 1)   // Arrival Time Extractor Base Class
 };
 
 #endif
-
-
-
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h	(revision 4723)
@@ -9,10 +9,10 @@
 class MExtractTimeAndCharge : public MExtractTime
 {
+private:
+  Int_t  PreProcess(MParList *pList);
+  Bool_t ReInit(MParList *pList);
+  Int_t  Process();
+
 protected:
-
-  virtual Int_t PreProcess(MParList *pList);
-  virtual Bool_t ReInit(MParList *pList);
-  virtual Int_t Process();
-
   virtual void FindTimeAndChargeHiGain(Byte_t *firstused, Byte_t *logain, Float_t &sum, Float_t &dsum,
                                        Float_t &time, Float_t &dtime,
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeFastSpline.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeFastSpline.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeFastSpline.h	(revision 4723)
@@ -7,7 +7,8 @@
 
 class MPedestalPix;
+
 class MExtractTimeFastSpline : public MExtractTime
 {
-
+private:
   static const Byte_t  fgHiGainFirst;    // Default for fHiGainFirst  (now set to: 2)
   static const Byte_t  fgHiGainLast;     // Default for fHiGainLast   (now set to: 14)
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.cc	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.cc	(revision 4723)
@@ -324,6 +324,14 @@
         SetWindowSize(hw, lw);
 
-    rc = MExtractor::ReadEnv(env, prefix, print) ? kTRUE : rc;
+    rc = MExtractTime::ReadEnv(env, prefix, print) ? kTRUE : rc;
 
     return rc;
 }
+
+void MExtractTimeHighestIntegral::Print(Option_t *o) const
+{
+    *fLog << all;
+    *fLog << GetDescriptor() << ":" << endl;
+    *fLog << " Windows: Hi-Gain=" << (int)fHiGainWindowSize << "  Lo-Gain=" << (int)fLoGainWindowSize << endl;
+    MExtractTime::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeHighestIntegral.h	(revision 4723)
@@ -9,5 +9,4 @@
 {
 private:
-
   static const Byte_t fgHiGainFirst;
   static const Byte_t fgHiGainLast;
@@ -34,5 +33,7 @@
                      Byte_t windowl=fgLoGainWindowSize);
 
-  ClassDef(MExtractTimeHighestIntegral, 0) // Task to Extract the Arrival Times As the mean time of the fWindowSize time slices
+  void Print(Option_t *o="") const;
+
+  ClassDef(MExtractTimeHighestIntegral, 1) // Task to Extract the Arrival Times As the mean time of the fWindowSize time slices
 };
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeSpline.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeSpline.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeSpline.h	(revision 4723)
@@ -7,7 +7,8 @@
 
 class MPedestalPix;
+
 class MExtractTimeSpline : public MExtractTime
 {
-
+private:
   static const Byte_t fgHiGainFirst;
   static const Byte_t fgHiGainLast;
Index: trunk/MagicSoft/Mars/msignal/MExtractor.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractor.cc	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractor.cc	(revision 4723)
@@ -42,4 +42,14 @@
 //   setup file. For more information see ReadEnv and MEvtLoop::ReadEnv
 //
+//
+// IMPORTANT: For all classes you derive from MExtractor make sure that:
+//    - Print() is correctly implemented
+//    - Clone() works
+//    - Class Version number != 0 and the I/O works PERFECTLY
+//    - only data members which are necessary for the setup (not the ones
+//      created in PreProcess and Process) are written
+//    - the version number is maintained!
+//
+//
 // Input Containers:
 //   MRawEvtData
@@ -75,5 +85,6 @@
 
 const Byte_t  MExtractor::fgSaturationLimit  = 254;
-const TString MExtractor::fgNamePedContainer = "MPedestalCam";
+const TString MExtractor::fgNamePedestalCam = "MPedestalCam";
+
 // --------------------------------------------------------------------------
 //
@@ -84,5 +95,5 @@
 // - all variables to 0
 // - fSaturationLimit to fgSaturationLimit
-// - fNamePedContainer to fgNamePedContainer
+// - fNamePedestalCam to fgNamePedestalCam
 //
 // Call:
@@ -98,5 +109,5 @@
     AddToBranchList("MRawEvtData.*");
 
-    SetNamePedContainer();
+    SetNamePedestalCam();
     SetRange();
     SetSaturationLimit();
@@ -141,14 +152,14 @@
     
 
+    fPedestals = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCam), "MPedestalCam");
+    if (!fPedestals)
+    {
+        *fLog << err << AddSerialNumber("MPedestalCam") << " not found... aborting" << endl;
+        return kFALSE;
+    }
+
     fSignals = (MExtractedSignalCam*)pList->FindCreateObj(AddSerialNumber("MExtractedSignalCam"));
     if (!fSignals)
         return kFALSE;
-
-    fPedestals = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedContainer), "MPedestalCam");
-    if (!fPedestals)
-    {
-        *fLog << err << AddSerialNumber("MPedestalCam") << " not found... aborting" << endl;
-        return kFALSE;
-    }
 
     return kTRUE;
@@ -363,2 +374,14 @@
     return rc;
 }
+
+void MExtractor::Print(Option_t *o) const
+{
+    *fLog << all;
+
+    if (IsA()==MExtractor::Class())
+        *fLog << GetDescriptor() << ":" << endl;
+
+    *fLog << " Hi Gain Range:  " << (int)fHiGainFirst << " " << (int)fHiGainLast << endl;
+    *fLog << " Lo Gain Range:  " << (int)fLoGainFirst << " " << (int)fLoGainLast << endl;
+    *fLog << " Saturation Lim: " << (int)fSaturationLimit << endl;
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractor.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractor.h	(revision 4722)
+++ trunk/MagicSoft/Mars/msignal/MExtractor.h	(revision 4723)
@@ -25,8 +25,8 @@
 
   static const Byte_t  fgSaturationLimit;  //! Default for fSaturationLimit (now set to: 254)
-  static const TString fgNamePedContainer; //! "MPedestalCam"
+  static const TString fgNamePedestalCam; //! "MPedestalCam"
   
   MPedestalCam        *fPedestals;         //! Pedestals of all pixels in the camera
-  MExtractedSignalCam *fSignals;           //  Extracted signal of all pixels in the camera
+  MExtractedSignalCam *fSignals;           //! Extracted signal of all pixels in the camera
                                        
   MRawEvtData         *fRawEvt;            //! Raw event data (time slices)
@@ -47,5 +47,5 @@
                                            
   Byte_t   fSaturationLimit;               // Highest FADC slice value until being declared saturated
-  TString  fNamePedContainer;              // Name of the 'MPedestalCam' container
+  TString  fNamePedestalCam;              // Name of the 'MPedestalCam' container
   
   virtual void FindSignalHiGain(Byte_t *firstused, Byte_t *lowgain, Float_t &sum, Byte_t &sat) const { }
@@ -59,5 +59,4 @@
 
 public:
-
   MExtractor(const char *name=NULL, const char *title=NULL);
   
@@ -72,7 +71,9 @@
 
   void SetSaturationLimit  ( Byte_t       lim=fgSaturationLimit        ) { fSaturationLimit  = lim;  }
-  void SetNamePedContainer ( const char *name=fgNamePedContainer.Data()) { fNamePedContainer = name; }
-  
-  ClassDef(MExtractor, 0) // Signal Extractor Base Class
+  void SetNamePedestalCam ( const char *name=fgNamePedestalCam.Data()) { fNamePedestalCam = name; }
+
+  void Print(Option_t *o="") const;
+
+  ClassDef(MExtractor, 1) // Signal Extractor Base Class
 };
 
