Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 6280)
+++ trunk/MagicSoft/Mars/Changelog	(revision 6281)
@@ -47,4 +47,20 @@
        instead of FindObject) which caused the histogram to
        be put a lot of times into the pad.
+
+   * mjobs/MJCalib.[h,cc]:
+     - derived MJCalib from MJob in order to be able to move
+       common code from derived classes into the base-class
+     - implemented CheckEnvLocal to handle the resource 'DataType'
+
+   * mjobs/MJCalibTest.[h,cc], mjobs/MJCalibrateSignal.[h,cc],
+     mjobs/MJCalibration.[h,cc], mjobs/MJPedestal.[h,cc]:
+     - removed double inheritance, replaced by single inheritance
+       from MJCalib
+     - replaced code to handle the resource 'DataType' by the 
+       common code in the base class
+     - put reading of reference file into a new member function
+       to make source code reading resource file simpler and to
+       be able to write a function description about it (simple
+       copy&past)
 
 
Index: trunk/MagicSoft/Mars/mjobs/MJCalib.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalib.cc	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalib.cc	(revision 6281)
@@ -42,7 +42,26 @@
 // Sets fDataFlag to kIsUseRootData
 //
-MJCalib::MJCalib() : fRuns(0), fDataFlag(0)
+MJCalib::MJCalib() : fDataFlag(kIsUseRootData), fRuns(NULL)
 {
-    SetUseRootData();
 }
 
+Bool_t MJCalib::CheckEnvLocal()
+{
+    if (!HasEnv("DataType"))
+        return kTRUE;
+
+    TString dat = GetEnv("DataType", "");
+    dat = dat.Strip(TString::kBoth);
+    dat.ToLower();
+
+    if (dat == (TString)"raw")
+        SetUseRawData();
+
+    if (dat == (TString)"mc" || dat == (TString)"montecarlo")
+        SetUseMC();
+
+    if (dat == (TString)"root")
+        SetUseRootData();
+
+    return kTRUE;
+}
Index: trunk/MagicSoft/Mars/mjobs/MJCalib.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalib.h	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalib.h	(revision 6281)
@@ -2,11 +2,15 @@
 #define MARS_MJCalib
 
-#ifndef ROOT_TROOT
-#include <TROOT.h>
+#ifndef MARS_MJob
+#include "MJob.h"
 #endif
 
 class MRunIter;
-class MJCalib
+
+class MJCalib : public MJob
 {
+private:
+    Byte_t    fDataFlag;      // Bit-field to store the data type
+
 protected:
 
@@ -20,13 +24,13 @@
     };
 
-  Byte_t    fDataFlag;      // Bit-field to store the data type
+  Bool_t IsUseRawData()  const { return fDataFlag==kIsUseRawData;  }
+  Bool_t IsUseRootData() const { return fDataFlag==kIsUseRootData; }
+  Bool_t IsUseMC()       const { return fDataFlag==kIsUseMC;       }
   
-  Bool_t IsUseRawData()  const { return TESTBIT(fDataFlag,kIsUseRawData);  }
-  Bool_t IsUseRootData() const { return TESTBIT(fDataFlag,kIsUseRootData); }
-  Bool_t IsUseMC()       const { return TESTBIT(fDataFlag,kIsUseMC);       }
-  
-  void   SetUseRawData ( const Bool_t b=kTRUE )  { b ? SETBIT(fDataFlag,kIsUseRawData)  : CLRBIT(fDataFlag,kIsUseRawData);  }
-  void   SetUseRootData( const Bool_t b=kTRUE )  { b ? SETBIT(fDataFlag,kIsUseRootData) : CLRBIT(fDataFlag,kIsUseRootData); }
-  void   SetUseMC      ( const Bool_t b=kTRUE )  { b ? SETBIT(fDataFlag,kIsUseMC)       : CLRBIT(fDataFlag,kIsUseMC);       }
+  void   SetUseRawData ( const Bool_t b=kTRUE )  { fDataFlag=kIsUseRawData;  }
+  void   SetUseRootData( const Bool_t b=kTRUE )  { fDataFlag=kIsUseRootData; }
+  void   SetUseMC      ( const Bool_t b=kTRUE )  { fDataFlag=kIsUseMC;       }
+
+  Bool_t CheckEnvLocal();
 
 public:
Index: trunk/MagicSoft/Mars/mjobs/MJCalibTest.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibTest.cc	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibTest.cc	(revision 6281)
@@ -91,4 +91,5 @@
 
 using namespace std;
+
 // --------------------------------------------------------------------------
 //
@@ -277,39 +278,4 @@
   cont.Add(&cam);
   return ReadContainer(cont);
-}
-
-// --------------------------------------------------------------------------
-//
-// MJCalibration allows to setup several option by a resource file:
-//   MJCalibrateSignal.RawData: yes,no
-//
-// For more details see the class description and the corresponding Getters
-//
-Bool_t MJCalibTest::CheckEnvLocal()
-{
-
-  SetUseRootData();
-  
-  if (HasEnv("DataType"))
-    {
-      TString dat = GetEnv("DataType", "");
-      dat = dat.Strip(TString::kBoth);
-      if (dat.BeginsWith("raw", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRawData();
-        }
-      if (dat.BeginsWith("root", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRootData();
-      }
-      if (dat.BeginsWith("mc", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseMC();
-        }
-    }
-  return kTRUE;
 }
 
Index: trunk/MagicSoft/Mars/mjobs/MJCalibTest.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibTest.h	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibTest.h	(revision 6281)
@@ -2,7 +2,4 @@
 #define MARS_MJCalibTest
 
-#ifndef MARS_MJob
-#include "MJob.h"
-#endif
 #ifndef MARS_MJCalib
 #include "MJCalib.h"
@@ -25,5 +22,6 @@
 class MExtractor;
 class MExtractTime;
-class MJCalibTest : public MJob, public MJCalib
+
+class MJCalibTest : public MJCalib
 {
 private:
@@ -48,6 +46,4 @@
   TString fGeometry;
   
-  Bool_t CheckEnvLocal();
-
   void   DisplayResult(MParList &plist);
 
Index: trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 6281)
@@ -194,28 +194,5 @@
     SetHiLoCalibration(GetEnv("HiLoCalibration", fIsHiLoCalibration));
 
-    SetUseRootData();
-
-    if (HasEnv("DataType"))
-    {
-      TString dat = GetEnv("DataType", "");
-      dat = dat.Strip(TString::kBoth);
-      if (dat.BeginsWith("raw", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRawData();
-        }
-      if (dat.BeginsWith("root", TString::kIgnoreCase))
-      {
-        fDataFlag = 0;
-        SetUseRootData();
-      }
-      if (dat.BeginsWith("mc", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseMC();
-        }
-    }
-    
-    return kTRUE;
+    return MJCalib::CheckEnvLocal();
 }
 
Index: trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h	(revision 6281)
@@ -1,8 +1,4 @@
 #ifndef MARS_MJCalibrateSignal
 #define MARS_MJCalibrateSignal
-
-#ifndef MARS_MJob
-#include "MJob.h"
-#endif
 
 #ifndef MARS_MJCalib
@@ -20,5 +16,5 @@
 class MBadPixelsCam;
 
-class MJCalibrateSignal : public MJob, public MJCalib
+class MJCalibrateSignal : public MJCalib
 {
 private:
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 6281)
@@ -1395,4 +1395,75 @@
 // --------------------------------------------------------------------------
 //
+// Read the following values from resource file:
+//
+//   ConvFADC2PheMin
+//   ConvFADC2PheMax
+//   ConvFADC2PhotMin
+//   ConvFADC2PhotMax
+//
+//   QEMin
+//   QEMax
+//
+//   ArrivalTimeMin
+//   ArrivalTimeMax
+//
+//   TimeOffsetMin
+//   TimeOffsetMax
+//   TimeResolutionMin
+//   TimeResolutionMax
+//
+//   RefConvFADC2PheInner
+//   RefConvFADC2PheOuter
+//   RefConvFADC2PhotInner
+//   RefConvFADC2PhotOuter
+//
+//   RefQEInner
+//   RefQEOuter
+//
+//   RefArrivalTimeInner
+//   RefArrivalTimeOuter
+//   RefArrivalTimeRmsInner
+//   RefArrivalTimeRmsOuter
+//
+//   RefTimeOffsetInner
+//   RefTimeOffsetOuter
+//   RefTimeResolutionInner
+//   RefTimeResolutionOuter
+//
+void MJCalibration::ReadReferenceFile()
+{
+    TEnv refenv(fReferenceFile);
+    
+    fConvFADC2PheMin        = refenv.GetValue("ConvFADC2PheMin",fConvFADC2PheMin);
+    fConvFADC2PheMax        = refenv.GetValue("ConvFADC2PheMax",fConvFADC2PheMax);
+    fConvFADC2PhotMin       = refenv.GetValue("ConvFADC2PhotMin",fConvFADC2PhotMin);
+    fConvFADC2PhotMax       = refenv.GetValue("ConvFADC2PhotMax",fConvFADC2PhotMax);
+    fQEMin                  = refenv.GetValue("QEMin",fQEMin);
+    fQEMax                  = refenv.GetValue("QEMax",fQEMax);
+    fArrivalTimeMin         = refenv.GetValue("ArrivalTimeMin",fArrivalTimeMin);
+    fArrivalTimeMax         = refenv.GetValue("ArrivalTimeMax",fArrivalTimeMax);
+    fTimeOffsetMin          = refenv.GetValue("TimeOffsetMin",fTimeOffsetMin);
+    fTimeOffsetMax          = refenv.GetValue("TimeOffsetMax",fTimeOffsetMax);
+    fTimeResolutionMin      = refenv.GetValue("TimeResolutionMin",fTimeResolutionMin);
+    fTimeResolutionMax      = refenv.GetValue("TimeResolutionMax",fTimeResolutionMax);
+			     		                        
+    fRefConvFADC2PheInner   = refenv.GetValue("RefConvFADC2PheInner",fRefConvFADC2PheInner);
+    fRefConvFADC2PheOuter   = refenv.GetValue("RefConvFADC2PheOuter",fRefConvFADC2PheOuter);
+    fRefConvFADC2PhotInner  = refenv.GetValue("RefConvFADC2PhotInner",fRefConvFADC2PhotInner);
+    fRefConvFADC2PhotOuter  = refenv.GetValue("RefConvFADC2PhotOuter",fRefConvFADC2PhotOuter);
+    fRefQEInner             = refenv.GetValue("RefQEInner",fRefQEInner);
+    fRefQEOuter             = refenv.GetValue("RefQEOuter",fRefQEOuter);
+    fRefArrivalTimeInner    = refenv.GetValue("RefArrivalTimeInner",fRefArrivalTimeInner);
+    fRefArrivalTimeOuter    = refenv.GetValue("RefArrivalTimeOuter",fRefArrivalTimeOuter);
+    fRefArrivalTimeRmsInner = refenv.GetValue("RefArrivalTimeRmsInner",fRefArrivalTimeRmsInner);
+    fRefArrivalTimeRmsOuter = refenv.GetValue("RefArrivalTimeRmsOuter",fRefArrivalTimeRmsOuter);
+    fRefTimeOffsetInner     = refenv.GetValue("RefTimeOffsetInner",fRefTimeOffsetInner);
+    fRefTimeOffsetOuter     = refenv.GetValue("RefTimeOffsetOuter",fRefTimeOffsetOuter);
+    fRefTimeResolutionInner = refenv.GetValue("RefTimeResolutionInner",fRefTimeResolutionInner);
+    fRefTimeResolutionOuter = refenv.GetValue("RefTimeResolutionOuter",fRefTimeResolutionOuter);
+}
+
+// --------------------------------------------------------------------------
+//
 // MJCalibration allows to setup several option by a resource file:
 //   MJCalibration.Display: full, datacheck, normal
@@ -1405,4 +1476,8 @@
 //   MJCalibration.Geometry: MGeomCamMagic, MGeomCamECO1000
 //
+// Name of a file containing reference values (see ReadReferenceFile)
+//   Prefix.ReferenceFile:    filename
+// (see ReadReferenceFile)
+//
 // For more details see the class description and the corresponding Getters
 // 
@@ -1418,26 +1493,6 @@
         SetNormalDisplay();
 
-    SetUseRootData();
-
-    if (HasEnv("DataType"))
-    {
-      TString dat = GetEnv("DataType", "");
-      dat = dat.Strip(TString::kBoth);
-      if (dat.BeginsWith("raw", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRawData();
-        }
-      if (dat.BeginsWith("root", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRootData();
-      }
-      if (dat.BeginsWith("mc", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseMC();
-        }
-    }
+    if (!MJCalib::CheckEnvLocal())
+        return kFALSE;
     
     SetRelTimeCalibration(GetEnv("RelTimeCalibration", IsRelTimes()));
@@ -1450,35 +1505,6 @@
 
     fReferenceFile = GetEnv("ReferenceFile",fReferenceFile.Data());
-
-    TEnv refenv(fReferenceFile);
-    
-    fConvFADC2PheMin           = refenv.GetValue("ConvFADC2PheMin",fConvFADC2PheMin);
-    fConvFADC2PheMax           = refenv.GetValue("ConvFADC2PheMax",fConvFADC2PheMax);
-    fConvFADC2PhotMin          = refenv.GetValue("ConvFADC2PhotMin",fConvFADC2PhotMin);
-    fConvFADC2PhotMax          = refenv.GetValue("ConvFADC2PhotMax",fConvFADC2PhotMax);
-    fQEMin                     = refenv.GetValue("QEMin",fQEMin);
-    fQEMax                     = refenv.GetValue("QEMax",fQEMax);
-    fArrivalTimeMin            = refenv.GetValue("ArrivalTimeMin",fArrivalTimeMin);
-    fArrivalTimeMax            = refenv.GetValue("ArrivalTimeMax",fArrivalTimeMax);
-    fTimeOffsetMin             = refenv.GetValue("TimeOffsetMin",fTimeOffsetMin);
-    fTimeOffsetMax             = refenv.GetValue("TimeOffsetMax",fTimeOffsetMax);
-    fTimeResolutionMin         = refenv.GetValue("TimeResolutionMin",fTimeResolutionMin);
-    fTimeResolutionMax         = refenv.GetValue("TimeResolutionMax",fTimeResolutionMax);
-						                        
-    fRefConvFADC2PheInner      = refenv.GetValue("RefConvFADC2PheInner",fRefConvFADC2PheInner);
-    fRefConvFADC2PheOuter      = refenv.GetValue("RefConvFADC2PheOuter",fRefConvFADC2PheOuter);
-    fRefConvFADC2PhotInner     = refenv.GetValue("RefConvFADC2PhotInner",fRefConvFADC2PhotInner);
-    fRefConvFADC2PhotOuter     = refenv.GetValue("RefConvFADC2PhotOuter",fRefConvFADC2PhotOuter);
-    fRefQEInner                = refenv.GetValue("RefQEInner",fRefQEInner);
-    fRefQEOuter                = refenv.GetValue("RefQEOuter",fRefQEOuter);
-    fRefArrivalTimeInner       = refenv.GetValue("RefArrivalTimeInner",fRefArrivalTimeInner);
-    fRefArrivalTimeOuter       = refenv.GetValue("RefArrivalTimeOuter",fRefArrivalTimeOuter);
-    fRefArrivalTimeRmsInner    = refenv.GetValue("RefArrivalTimeRmsInner",fRefArrivalTimeRmsInner);
-    fRefArrivalTimeRmsOuter    = refenv.GetValue("RefArrivalTimeRmsOuter",fRefArrivalTimeRmsOuter);
-    fRefTimeOffsetInner        = refenv.GetValue("RefTimeOffsetInner",fRefTimeOffsetInner);
-    fRefTimeOffsetOuter        = refenv.GetValue("RefTimeOffsetOuter",fRefTimeOffsetOuter);
-    fRefTimeResolutionInner    = refenv.GetValue("RefTimeResolutionInner",fRefTimeResolutionInner);
-    fRefTimeResolutionOuter    = refenv.GetValue("RefTimeResolutionOuter",fRefTimeResolutionOuter);
-				 
+    ReadReferenceFile();
+
     return kTRUE;		 
 }
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 6281)
@@ -2,7 +2,4 @@
 #define MARS_MJCalibration
 
-#ifndef MARS_MJob
-#include "MJob.h"
-#endif
 #ifndef MARS_MJCalib
 #include "MJCalib.h"
@@ -57,5 +54,5 @@
 class MHCamera;
 
-class MJCalibration : public MJob, public MJCalib
+class MJCalibration : public MJCalib
 {
 private:
@@ -177,4 +174,6 @@
 
   const char* GetOutputFileName() const;
+
+  void ReadReferenceFile();
   
 public:
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 6281)
@@ -714,88 +714,29 @@
 // --------------------------------------------------------------------------
 //
-// The following resource options are available:
-//
-// Do a datacheck run (read raw-data and enable display)
-//   Prefix.DataCheck:        Yes, No <default>
-//
-// Setup display type
-//   Prefix.Display:          normal <default>, datacheck, none
-//
-// Use cosmic data instead of pedestal data (DatRuns)
-//   Prefix.UseData:          Yes, No <default>
-//
-// Write an output file with pedestals and status-display
-//   Prefix.DisableOutput:    Yes, No <default>
-//
-Bool_t MJPedestal::CheckEnvLocal()
-{
-
-    if (HasEnv("Display"))
-    {
-        TString type = GetEnv("Display", "normal");
-        type.ToLower();
-        if (type==(TString)"normal")
-            fDisplayType = kDisplayNormal;
-        if (type==(TString)"datacheck")
-            fDisplayType = kDisplayDataCheck;
-        if (type==(TString)"none")
-            fDisplayType = kDisplayNone;
-    }
-
-    SetUseRootData();
-
-    if (HasEnv("DataType"))
-    {
-      TString dat = GetEnv("DataType", "");
-      dat = dat.Strip(TString::kBoth);
-      if (dat.BeginsWith("raw", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRawData();
-        }
-      if (dat.BeginsWith("root", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseRootData();
-      }
-      if (dat.BeginsWith("mc", TString::kIgnoreCase))
-        {
-          fDataFlag = 0;
-          SetUseMC();
-        }
-    }
-    
-    if (HasEnv("UseData"))
-      fExtractType = GetEnv("UseData",kFALSE) ? kUseData : kUsePedRun;
-
-    if (HasEnv("UseHists"))
-      if (GetEnv("UseHists",kFALSE))
-        fExtractType = kUseHists;
-    
-    SetNoStorage(GetEnv("DisableOutput", IsNoStorage()));
-
-    MTaskEnv tenv("ExtractSignal");
-    tenv.SetDefault(fExtractor);
-
-    if (tenv.ReadEnv(*GetEnv(), GetEnvPrefix()+".ExtractSignal", GetEnvDebug())==kERROR)
-        return kFALSE;
-
-    if (fExtractor==tenv.GetTask())
-        return kTRUE;
-
-    if (!tenv.GetTask()->InheritsFrom(MExtractor::Class()))
-    {
-        *fLog << err << "ERROR: ExtractSignal from resource file doesn't inherit from MExtractor.... abort." << endl;
-        return kFALSE;
-    }
-
-    SetExtractor((MExtractor*)tenv.GetTask());
-
-    fReferenceFile = GetEnv("ReferenceFile",fReferenceFile.Data());
-
+// Read the following values from resource file:
+//
+//   PedestalMin
+//   PedestalMax
+//
+//   PedRmsMin
+//   PedRmsMax
+//
+//   RefPedClosedLids
+//   RefPedExtraGalactic
+//   RefPedGalactic
+//
+//   RefPedRmsClosedLidsInner
+//   RefPedRmsExtraGalacticInner
+//   RefPedRmsGalacticInner
+//   RefPedRmsClosedLidsOuter
+//   RefPedRmsExtraGalacticOuter
+//   RefPedRmsGalacticOuter
+//
+void MJPedestal::ReadReferenceFile()
+{
     TEnv refenv(fReferenceFile);
     
-    fPedestalMin                 = refenv.GetValue("PedestalMin",fPedestalMin);                 
-    fPedestalMax                 = refenv.GetValue("PedestalMax",fPedestalMax);                 
+    fPedestalMin                 = refenv.GetValue("PedestalMin",fPedestalMin);
+    fPedestalMax                 = refenv.GetValue("PedestalMax",fPedestalMax);
     fPedRmsMin                   = refenv.GetValue("PedRmsMin",fPedRmsMin);                   
     fPedRmsMax                   = refenv.GetValue("PedRmsMax",fPedRmsMax);                   
@@ -809,4 +750,71 @@
     fRefPedRmsExtraGalacticOuter = refenv.GetValue("RefPedRmsExtraGalacticOuter",fRefPedRmsExtraGalacticOuter); 
     fRefPedRmsGalacticOuter      = refenv.GetValue("RefPedRmsGalacticOuter",fRefPedRmsGalacticOuter);      
+}
+
+// --------------------------------------------------------------------------
+//
+// The following resource options are available:
+//
+// Do a datacheck run (read raw-data and enable display)
+//   Prefix.DataCheck:        Yes, No <default>
+//
+// Setup display type
+//   Prefix.Display:          normal <default>, datacheck, none
+//
+// Use cosmic data instead of pedestal data (DatRuns)
+//   Prefix.UseData:          Yes, No <default>
+//
+// Write an output file with pedestals and status-display
+//   Prefix.DisableOutput:    Yes, No <default>
+//
+// Name of a file containing reference values (see ReadReferenceFile)
+//   Prefix.ReferenceFile:    filename
+// (see ReadReferenceFile)
+//
+Bool_t MJPedestal::CheckEnvLocal()
+{
+    if (HasEnv("Display"))
+    {
+        TString type = GetEnv("Display", "normal");
+        type.ToLower();
+        if (type==(TString)"normal")
+            fDisplayType = kDisplayNormal;
+        if (type==(TString)"datacheck")
+            fDisplayType = kDisplayDataCheck;
+        if (type==(TString)"none")
+            fDisplayType = kDisplayNone;
+    }
+
+    if (!MJCalib::CheckEnvLocal())
+        return kFALSE;
+    
+    if (HasEnv("UseData"))
+      fExtractType = GetEnv("UseData",kFALSE) ? kUseData : kUsePedRun;
+
+    if (HasEnv("UseHists"))
+      if (GetEnv("UseHists",kFALSE))
+        fExtractType = kUseHists;
+    
+    SetNoStorage(GetEnv("DisableOutput", IsNoStorage()));
+
+    MTaskEnv tenv("ExtractSignal");
+    tenv.SetDefault(fExtractor);
+
+    if (tenv.ReadEnv(*GetEnv(), GetEnvPrefix()+".ExtractSignal", GetEnvDebug())==kERROR)
+        return kFALSE;
+
+    if (fExtractor==tenv.GetTask())
+        return kTRUE;
+
+    if (!tenv.GetTask()->InheritsFrom(MExtractor::Class()))
+    {
+        *fLog << err << "ERROR: ExtractSignal from resource file doesn't inherit from MExtractor.... abort." << endl;
+        return kFALSE;
+    }
+
+    SetExtractor((MExtractor*)tenv.GetTask());
+
+    fReferenceFile = GetEnv("ReferenceFile", fReferenceFile.Data());
+    ReadReferenceFile();
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 6280)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.h	(revision 6281)
@@ -2,7 +2,4 @@
 #define MARS_MJPedestal
 
-#ifndef MARS_MJob
-#include "MJob.h"
-#endif
 #ifndef MARS_MJCalib
 #include "MJCalib.h"
@@ -23,5 +20,5 @@
 class MEvtLoop;
 
-class MJPedestal : public MJob, public MJCalib
+class MJPedestal : public MJCalib
 {
 private:
@@ -79,4 +76,5 @@
 
     Bool_t CheckEnvLocal();
+    void ReadReferenceFile();
 
     const char*  GetOutputFileName() const;
@@ -110,5 +108,5 @@
     void SetExtractionWithExtractor()     { fExtractionType=kWithExtractor;     /*fPedestalCamOut.SetName("MPedestalExtractor");*/     }
 
-    void SetReferenceFile( const TString ref=fgReferenceFile ) { fReferenceFile = ref; }
+    void SetReferenceFile( const TString ref=fgReferenceFile) { fReferenceFile = ref; } // Only usefull to overwrite CheckEnvLocal-default
 
     MExtractor *GetExtractor() const { return fExtractor; }
