Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5569)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5570)
@@ -29,4 +29,42 @@
     - added correct decoding of the 200ns information as proposed by
       Florian to DecodeTime
+
+   * callisto.cc:
+     - more fixes to make calibration of signal (Y) work again
+
+   * mcalib/MCalibrateData.cc:
+     - allow calibration of Mean and Rms from different input
+       containers
+
+   * mjobs/MJCalibrateSignal.[h,cc]:
+     - removed SetNoiseCalculation -- now in its correct location
+     - added a second MPedCalcFromLoGain
+     - some more default setup
+     - added some new tabs with histograms
+     - ProcessFile now takes too input containers
+
+   * mjobs/MJCalibration.cc:
+     - set rel-time-calibration kTRUE by default
+     - removed SetNoiseCalculation -- now in its correct location
+     - enhanced writing extractors
+
+   * mjobs/MJPedestal.[h,cc]: 
+     - if cloning extractor - don't use name
+
+   * mpedestal/MExtractPedestal.[h,cc]:
+     - some minor changes to output
+     - fixed order or arguments of FindObject
+
+   * mpedestal/MPedCalcFromLoGain.[h,cc]:
+     - handle SetNoiseCalculation when calculating noise!
+
+   * msignal/MExtractTimeAndCharge.cc:
+     - some minor changes to output
+
+   * msignal/MExtractTimeAndChargeDigitalFilter.[h,cc]:
+     - some minor changes to output
+     - do not write fNameWeightsFile
+     - do not write fWeightsSet
+     - do not write fRandomIter
 
 
Index: trunk/MagicSoft/Mars/callisto.cc
===================================================================
--- trunk/MagicSoft/Mars/callisto.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/callisto.cc	(revision 5570)
@@ -414,4 +414,5 @@
         job2.SetOverwrite(kOverwrite);
         job2.SetPathData(kInpathD);
+        job1.SetPathIn(kInpathY);
         // job1.SetPathOut(kOutpathC); // not yet needed
         // job1.SetPathIn(kInpathC);   // not yet needed
@@ -434,27 +435,27 @@
             return 1;
         }
-/*
+
         //
         // Extract signal and calibrate it
         //
-        MJCalibrateSignal job2(Form("MJCalibrateSignal #%d", seq.GetSequence()));
-        job2.SetSequence(seq);
-        job2.SetDisplay(d);;
-        job2.SetEnv(kConfig);
-        job2.SetEnvDebug(kDebugEnv);
-        job2.SetOverwrite(kOverwrite);
-        job2.SetPathIn(kInpathY);
-        job2.SetPathOut(kOutpathY);
-        job2.SetPathData(kInpathD);
+        MJCalibrateSignal job3(Form("MJCalibrateSignal #%d", seq.GetSequence()));
+        job3.SetSequence(seq);
+        job3.SetDisplay(d);;
+        job3.SetEnv(kConfig);
+        job3.SetEnvDebug(kDebugEnv);
+        job3.SetOverwrite(kOverwrite);
+        job3.SetPathIn(kInpathY);
+        job3.SetPathOut(kOutpathY);
+        job3.SetPathData(kInpathD);
 
         // Where to search for calibration files
-        if (!job2.ProcessFile(job1.GetPedestalCam()))
-            return -1;
-
-        if (!job2.GetDisplay())
-        {
-            gLog << warn << "Display closed by user... execution aborted." << endl << endl;
-            return 1;
-        }*/
+        if (!job3.ProcessFile(job1.GetPedestalCam(), job2.GetPedestalCam()))
+            return -1;
+
+        if (!job3.GetDisplay())
+        {
+            gLog << warn << "Display closed by user... execution aborted." << endl << endl;
+            return 1;
+        }
     }
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 5570)
@@ -66,5 +66,5 @@
 //     SetPedestalFlag(MCalibrateData::kEvent)  (calibration is done for each event)
 //
-//   By calling SetNamePedADCContainer() and/or SetNamePedPhotContainer() you
+//   By calling SetNamePedestalCam() and/or SetNamePedPhotCam() you
 //   can control the name of the MPedestalCam and/or MPedPhotCam container which is used.
 //
@@ -76,6 +76,6 @@
 //     MCalibrateData cal2;
 //     cal2.SetCalibrationMode(MCalibrateData::kSkip);
-//     cal2.SetNamePedADCContainer("MPedestalFromLoGain");
-//     cal2.SetNamePedPhotContainer("MPedPhotFromLoGain")
+//     cal2.SetNamePedestalCam("MPedestalFromLoGain");
+//     cal2.SetNamePedPhotCam("MPedPhotFromLoGain")
 //     cal2.SetPedestalFlag(MCalibrateData::kEvent);
 //
@@ -133,6 +133,7 @@
 using namespace std;
 
-const TString MCalibrateData::fgNamePedADCContainer  = "MPedestalCam";
-const TString MCalibrateData::fgNamePedPhotContainer = "MPedPhotCam";
+const TString MCalibrateData::fgNamePedestalCam  = "MPedestalCam";
+const TString MCalibrateData::fgNamePedPhotCam = "MPedPhotCam";
+
 // --------------------------------------------------------------------------
 //
@@ -143,10 +144,10 @@
 // Initializes:
 // - fCalibrationMode to kDefault
-// - fPedestalFlag to kRun
+// - fPedestalFlag to kNo
 // - fNamePedADCRunContainer    to "MPedestalCam"  
 // - fNamePedPhotRunContainer   to "MPedPhotCam"    
 //
 MCalibrateData::MCalibrateData(CalibrationMode_t calmode,const char *name, const char *title) 
-    : fGeomCam(NULL),   fPedestal(NULL),
+    : fGeomCam(NULL),   fPedestalMean(NULL), fPedestalRms(NULL),
       fBadPixels(NULL), fCalibrations(NULL), fQEs(NULL), fSignals(NULL), 
       fPedPhot(NULL),   fCerPhotEvt(NULL), fPedestalFlag(kNo)
@@ -158,6 +159,6 @@
   SetCalibrationMode(calmode);
 
-  SetNamePedADCContainer();
-  SetNamePedPhotContainer();
+  SetNamePedestalCam();
+  SetNamePedPhotCam();
 }
 
@@ -225,16 +226,30 @@
     }
 
-    fPedestal = 0;
+    //fPedestalMean = 0;
+    //fPedestalRms  = 0;
     fPedPhot  = 0;
     if (fPedestalFlag)
     {
-        fPedestal = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedADCContainer), "MPedestalCam");
-        if (!fPedestal)
-        {
-            *fLog << err << AddSerialNumber(fNamePedADCContainer) << " [MPedestalCam] not found ... aborting" << endl;
-            return kFALSE;
-        }
-
-        fPedPhot = (MPedPhotCam*)pList->FindCreateObj("MPedPhotCam", AddSerialNumber(fNamePedPhotContainer));
+        if (!fPedestalMean)
+        {
+            fPedestalMean = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCam), "MPedestalCam");
+            if (!fPedestalMean)
+            {
+                *fLog << err << AddSerialNumber(fNamePedestalCam) << " [MPedestalCam] not found ... aborting" << endl;
+                return kFALSE;
+            }
+        }
+
+        if (!fPedestalRms)
+        {
+            fPedestalRms = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCam), "MPedestalCam");
+            if (!fPedestalRms)
+            {
+                *fLog << err << AddSerialNumber(fNamePedestalCam) << " [MPedestalCam] not found ... aborting" << endl;
+                return kFALSE;
+            }
+        }
+
+        fPedPhot = (MPedPhotCam*)pList->FindCreateObj("MPedPhotCam", AddSerialNumber(fNamePedPhotCam));
         if (!fPedPhot)
             return kFALSE;
@@ -266,7 +281,13 @@
 
     // Sizes might have changed
-    if (fPedestalFlag && (Int_t)fPedestal->GetSize() != fSignals->GetSize())
-    {
-        *fLog << err << "Size mismatch of MPedestalCam and MCalibrationCam... abort." << endl;
+    if (fPedestalFlag && (Int_t)fPedestalMean->GetSize() != fSignals->GetSize())
+    {
+        *fLog << err << "Size mismatch of MPedestalCam for Mean and MCalibrationCam... abort." << endl;
+        return kFALSE;
+    }
+
+    if (fPedestalFlag && (Int_t)fPedestalRms->GetSize() != fSignals->GetSize())
+    {
+        *fLog << err << "Size mismatch of MPedestalCam for RMS and MCalibrationCam... abort." << endl;
         return kFALSE;
     }
@@ -499,11 +520,10 @@
                 cpix->SetPixelSaturated();
         }
+
         if (pedestal)
         {
-            const MPedestalPix &ped = (*fPedestal)[pixidx];
-
             // pedestals/(used FADC slices)   in [ADC] counts
-            const Float_t pedes  = ped.GetPedestal()    * slices;
-            const Float_t pedrms = ped.GetPedestalRms() * sqrtslices;
+            const Float_t pedes  = (*fPedestalMean)[pixidx].GetPedestal()   * slices;
+            const Float_t pedrms = (*fPedestalRms)[pixidx].GetPedestalRms() * sqrtslices;
 
             //
@@ -590,14 +610,14 @@
     }
 
-    if (fNamePedADCContainer != fgNamePedADCContainer)
-    {
-        out << "   " << GetUniqueName() << ".SetNamePedADCContainer(";
-        out << fNamePedADCContainer.Data() << ");" << endl;
-    }
-
-    if (fNamePedPhotContainer  != fgNamePedPhotContainer)
-    {
-        out << "   " << GetUniqueName() << ".SetNamePedPhotContainer(";
-        out << fNamePedPhotContainer.Data() << ");" << endl;
+    if (fNamePedestalCam != fgNamePedestalCam)
+    {
+        out << "   " << GetUniqueName() << ".SetNamePedestalCam(";
+        out << fNamePedestalCam << ");" << endl;
+    }
+
+    if (fNamePedPhotCam  != fgNamePedPhotCam)
+    {
+        out << "   " << GetUniqueName() << ".SetNamePedPhotCam(";
+        out << fNamePedPhotCam << ");" << endl;
     }
 }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.h	(revision 5569)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.h	(revision 5570)
@@ -34,9 +34,10 @@
 {
 private:
-  static const TString fgNamePedADCContainer;    //! "MPedestalCam"
-  static const TString fgNamePedPhotContainer;   //! "MPedPhotCam"
+  static const TString fgNamePedestalCam;    //! "MPedestalCam"
+  static const TString fgNamePedPhotCam;     //! "MPedPhotCam"
   
   MGeomCam              *fGeomCam;          //! Camera geometry container
-  MPedestalCam          *fPedestal;         //! Pedestals/slice [ADC counts]
+  MPedestalCam          *fPedestalMean;     //! Pedestals/slice [ADC counts]
+  MPedestalCam          *fPedestalRms;      //! Pedestals/slice [ADC counts]
   MBadPixelsCam         *fBadPixels;        //! Bad Pixels information
   MCalibrationChargeCam *fCalibrations;     //! Calibration constants
@@ -50,6 +51,6 @@
   Byte_t   fPedestalFlag;                   // Flags defining to calibrate the pedestal each event or each run
   
-  TString  fNamePedADCContainer;            // name of fPedestal
-  TString  fNamePedPhotContainer;           // name of fPedPhot
+  TString  fNamePedestalCam;            // name of fPedestal
+  TString  fNamePedPhotCam;           // name of fPedPhot
 
   Int_t Calibrate(Bool_t data, Bool_t pedestal) const;
@@ -95,11 +96,14 @@
   void   SetCalibrationMode ( CalibrationMode_t calmode=kDefault ) { fCalibrationMode=calmode; }
   
-  void   SetNamePedADCContainer(const char *name=fgNamePedADCContainer.Data())
+  void   SetNamePedestalCam(const char *name=fgNamePedestalCam.Data())
   {
-      fNamePedADCContainer  = name;
+      fNamePedestalCam  = name;
   }
-  void   SetNamePedPhotContainer(const char *name=fgNamePedPhotContainer.Data())
+  void SetPedestalCamMean(MPedestalCam *cam) { fPedestalMean = cam; }
+  void SetPedestalCamRms(MPedestalCam *cam)  { fPedestalRms  = cam; }
+
+  void   SetNamePedPhotCam(const char *name=fgNamePedPhotCam.Data())
   {
-      fNamePedPhotContainer   = name;
+      fNamePedPhotCam   = name;
   }
   
Index: trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 5570)
@@ -180,5 +180,5 @@
 }
 
-Bool_t MJCalibrateSignal::ProcessFile(MPedestalCam &pedcam)
+Bool_t MJCalibrateSignal::ProcessFile(MPedestalCam &pedcamab, MPedestalCam &pedcam)
 {
     if (!fSequence.IsValid())
@@ -269,12 +269,4 @@
         *fLog << inf << "No Camera geometry found using default <MGeomCamMagic>" << endl;
 
-    //
-    // Switch off noise calculation
-    //
-    if (extractor1)
-        extractor1->SetNoiseCalculation(kFALSE);
-    if (extractor2)
-        extractor2->SetNoiseCalculation(kFALSE);
-
     // This is necessary for the case in which it is not in the files
     MBadPixelsCam badcam;
@@ -328,6 +320,11 @@
     MBadPixelsMerge        merge(&badpix);
 
-    MPedCalcFromLoGain     pedlo;
-    pedlo.SetPedestalUpdate(kTRUE);
+    MPedCalcFromLoGain     pedlo1("MPedCalcFromLoGainAB");
+    pedlo1.SetPedestalUpdate(kTRUE);
+    pedlo1.SetPedestalsOut(&pedcamab);
+
+    MPedCalcFromLoGain     pedlo2;
+    pedlo2.SetPedestalUpdate(kTRUE);
+    pedlo2.SetPedestalsIn(&pedcamab);
 
     if (extractor1)
@@ -335,5 +332,9 @@
         // FIXME: How to get the fixed value 15 automatically?
         const Float_t win = extractor1->GetNumHiGainSamples();
-        pedlo.SetExtractWindow(15, (UShort_t)TMath::Nint(win));
+        pedlo1.SetExtractWindow(15, (UShort_t)TMath::Nint(win));
+        pedlo2.SetExtractWindow(15, (UShort_t)TMath::Nint(win));
+
+        if (extractor1->InheritsFrom("MExtractTimeAndCharge"))
+            pedlo2.SetExtractor((MExtractTimeAndCharge*)extractor1);
     }
 
@@ -345,16 +346,26 @@
     MCalibrateData         calib;
     if (filetype==3)
+    {
         calib.SetCalibrationMode(MCalibrateData::kFfactor);
+        calib.SetPedestalFlag(MCalibrateData::kRun);
+    }
+    else
+    {
+        calib.SetPedestalCamMean(&pedcamab);
+        calib.SetPedestalFlag(MCalibrateData::kEvent);
+    }
+
     MCalibrateRelTimes     caltm;
     MBadPixelsCalc         bpcal;
     MBadPixelsTreat        treat;
 
-    MHCamEvent evt0(0, "PedestalFLG", "Pedestal from Lo Gain;;P [fadc/sl]");
-    MHCamEvent evt1(0, "Extra'd",     "Extracted Signal;;S [fadc/sl]");
-    MHCamEvent evt2(0, "PedPhot",     "Calibrated Pedestal;;P [\\gamma]");
-    MHCamEvent evt3(1, "PedRMS",      "Calibrated Pedestal RMS;;\\sigma_{p} [\\gamma]");
-    MHCamEvent evt4(0, "Interp'd",    "Interpolated Signal;;S [\\gamma]");
-    MHCamEvent evt5(2, "Unsuitable",  "Unsuitable event ratio;;%");
-    MHCamEvent evt6(0, "Times",       "Arrival Time;;T [slice]");
+    MHCamEvent evt0(0, "PedFLG",      "Pedestal from Lo Gain;;P [fadc/sl]");
+    MHCamEvent evt1(2, "PedRmsFLG",   "Pedestal RMS from Lo Gain;;\\sigma_{p} [fadc/sl]");
+    MHCamEvent evt2(0, "Extra'd",     "Extracted Signal;;S [fadc/sl]");
+    MHCamEvent evt3(0, "PedPhot",     "Calibrated Pedestal;;P [\\gamma]");
+    MHCamEvent evt4(1, "PedRMS",      "Calibrated Pedestal RMS;;\\sigma_{p} [\\gamma]");
+    MHCamEvent evt5(0, "Interp'd",    "Interpolated Signal;;S [\\gamma]");
+    MHCamEvent evt6(2, "Unsuitable",  "Unsuitable event ratio;;%");
+    MHCamEvent evt7(0, "Times",       "Arrival Time;;T [slice]");
     evt0.EnableVariance();
     evt1.EnableVariance();
@@ -362,13 +373,15 @@
     evt3.EnableVariance();
     evt4.EnableVariance();
-    evt6.EnableVariance();
-
-    MFillH fill0(&evt0, "MPedestalCam",        "FillPedestalFLG");
-    MFillH fill1(&evt1, "MExtractedSignalCam", "FillExtracted");
-    MFillH fill2(&evt2, "MPedPhotCam",         "FillPedPhot");
-    MFillH fill3(&evt3, "MPedPhotCam",         "FillPedRMS");
-    MFillH fill4(&evt4, "MCerPhotEvt",         "FillInterpolated");
-    MFillH fill5(&evt5, "MBadPixelsCam",       "FillUnsuitable");
-    MFillH fill6(&evt6, "MArrivalTime",        "FillTimes");
+    evt5.EnableVariance();
+    evt7.EnableVariance();
+
+    MFillH fill0(&evt0, &pedcamab,             "FillPedFLG");
+    MFillH fill1(&evt1, "MPedestalCam",        "FillPedRmsFLG");
+    MFillH fill2(&evt2, "MExtractedSignalCam", "FillExtracted");
+    MFillH fill3(&evt3, "MPedPhotCam",         "FillPedPhot");
+    MFillH fill4(&evt4, "MPedPhotCam",         "FillPedRMS");
+    MFillH fill5(&evt5, "MCerPhotEvt",         "FillInterpolated");
+    MFillH fill6(&evt6, "MBadPixelsCam",       "FillUnsuitable");
+    MFillH fill7(&evt7, "MArrivalTime",        "FillTimes");
 
     MWriteRootFile write(2, Form("%s{s/_D_/_Y_}", fPathOut.Data()), fOverwrite);
@@ -418,20 +431,27 @@
     tlist2.AddToList(&apply);
     tlist2.AddToList(&merge);
-    tlist2.AddToList(filetype==3 ? (MTask*)&pcopy : (MTask*)&pedlo);
+    if (filetype==3)
+        tlist2.AddToList(&pcopy);
+    else
+    {
+        tlist2.AddToList(&pedlo1);
+        tlist2.AddToList(&pedlo2);
+    }
     tlist2.AddToList(&fill0);
+    tlist2.AddToList(&fill1);
     if (extractor1)
         tlist2.AddToList(&taskenv1);
     if (extractor2)
         tlist2.AddToList(&taskenv2);
-    tlist2.AddToList(&fill1);
+    tlist2.AddToList(&fill2);
     tlist2.AddToList(&calib);
     tlist2.AddToList(&caltm);
-    tlist2.AddToList(&fill2);
+    tlist2.AddToList(&fill3);
     tlist2.AddToList(&bpcal);
     tlist2.AddToList(&treat);
-    tlist2.AddToList(&fill3);
     tlist2.AddToList(&fill4);
     tlist2.AddToList(&fill5);
     tlist2.AddToList(&fill6);
+    tlist2.AddToList(&fill7);
 
     // Setup List for Drive-tree
Index: trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h	(revision 5569)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h	(revision 5570)
@@ -34,5 +34,5 @@
     MJCalibrateSignal(const char *name=NULL, const char *title=NULL);
 
-    Bool_t ProcessFile(MPedestalCam &cam);
+    Bool_t ProcessFile(MPedestalCam &camab, MPedestalCam &cam);
 
     ClassDef(MJCalibrateSignal, 0) // Tool to create a pedestal file (MPedestalCam)
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 5570)
@@ -213,11 +213,11 @@
   SetUsePINDiode();
   
-  SetRelTimeCalibration( kFALSE );
-  SetDataCheck         ( kFALSE );
-  SetDebug             ( kFALSE );
-  SetIntensity         ( kFALSE );
-
-  SetNoStorage         ( kFALSE );
-  SetHistsStorage      ( kFALSE );
+  SetRelTimeCalibration();
+  SetDataCheck(kFALSE);
+  SetDebug(kFALSE);
+  SetIntensity(kFALSE);
+
+  SetNoStorage(kFALSE);
+  SetHistsStorage(kFALSE);
 }
 
@@ -1685,10 +1685,4 @@
 
     //
-    // Switch off noise calculation
-    //
-    fExtractor->SetNoiseCalculation(kFALSE);
-    fTimeExtractor->SetNoiseCalculation(kFALSE);
-
-    //
     // Setup more tasks and tasklist
     //
@@ -1718,5 +1712,5 @@
     
         if (IsRelTimes())
-          tlist.AddToList(&taskenv2);
+            tlist.AddToList(&taskenv2);
     }
     
@@ -1766,5 +1760,5 @@
 
     if (!WriteTasks(taskenv.GetTask(), taskenv2.GetTask()))
-      return kFALSE;
+        return kFALSE;
 
     // Execute first analysis
@@ -1908,35 +1902,44 @@
 Bool_t MJCalibration::WriteTasks(MTask *t1, MTask *t2) const
 {
-
-  if (IsNoStorage())
+    if (IsNoStorage())
+        return kTRUE;
+
+    if (fPathOut.IsNull())
+        return kTRUE;
+
+    const TString oname(GetOutputFile());
+
+    *fLog << inf << "Writing to file: " << oname << endl;
+
+    TFile file(oname, fOverwrite?"RECREATE":"NEW", "File created by MJCalibration", 9);
+    if (!file.IsOpen())
+    {
+        *fLog << err << "ERROR - Couldn't open file " << oname << " for writing..." << endl;
+        return kFALSE;
+    }
+
+    if (t1)
+    {
+        *fLog << inf << " - Writing Task " << t1->GetName() << " [" << t1->ClassName() << "]..." << flush;
+        if (t1->Write()<=0)
+        {
+            *fLog << err << "Unable to write " << t1->GetName() << " to " << oname << endl;
+            return kFALSE;
+        }
+        *fLog << "ok." << endl;
+    }
+
+    if (t2)
+    {
+        *fLog << inf << " - Writing Task " << t2->GetName() << " [" << t2->ClassName() << "]..." << flush;
+        if (t2->Write()<=0)
+        {
+            *fLog << err << "Unable to write " << t2->GetName() << " to " << oname << endl;
+            return kFALSE;
+        }
+        *fLog << "ok." << endl;
+    }
+
     return kTRUE;
-
-  if (fPathOut.IsNull())
-    return kTRUE;
-  
-  const TString oname(GetOutputFile());
-
-  *fLog << inf << "Writing to file: " << oname << endl;
-  
-  TFile file(oname, fOverwrite?"RECREATE":"NEW", "File created by MJCalibration", 9);
-  if (!file.IsOpen())
-    {
-      *fLog << err << "ERROR - Couldn't open file " << oname << " for writing..." << endl;
-      return kFALSE;
-    }
-  
-  if (t1 && t1->Write()<=0)
-    {
-      *fLog << err << "Unable to write " << t1->GetName() << " to " << oname << endl;
-      return kFALSE;
-    }
-  
-  if (t2 && t2->Write()<=0)
-    {
-      *fLog << err << "Unable to write " << t2->GetName() << " to " << oname << endl;
-      return kFALSE;
-    }
-  
-  return kTRUE;
 }
 
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 5570)
@@ -151,16 +151,7 @@
 Bool_t MJPedestal::ReadPedestalCam()
 {
-    if (IsNoStorage())
-        return kFALSE;
-
     const TString fname = GetOutputFile();
 
-    if (gSystem->AccessPathName(fname, kFileExists))
-    {
-        *fLog << warn << "Input file " << fname << " doesn't exist, will create it." << endl;
-        return kFALSE;
-    }
-
-    *fLog << inf << "Reading from file: " << fname << endl;
+    *fLog << inf << "Reading pedestals from file: " << fname << endl;
 
     TFile file(fname, "READ");
@@ -198,5 +189,5 @@
     const TString fname = Form("%s/calib%06d.root",fPathIn.Data(), fSequence.GetSequence());
 
-    *fLog << inf << "Reading from file: " << fname << endl;
+    *fLog << inf << "Reading extractor from file: " << fname << endl;
 
     TFile file(fname, "READ");
@@ -213,5 +204,6 @@
         return NULL;
     }
-    return o ? (MExtractor*)o->Clone() : NULL;
+
+    return o ? (MExtractor*)o->Clone("ExtractSignal") : NULL;
 }
 
@@ -684,5 +676,5 @@
     if (fExtractor)
         delete fExtractor;
-    fExtractor = ext ? (MExtractor*)ext->Clone() : NULL;
+    fExtractor = ext ? (MExtractor*)ext->Clone(ext->GetName()) : NULL;
 }
 
@@ -721,5 +713,5 @@
     SetNoStorage(GetEnv("DisableOutput", IsNoStorage()));
 
-    MTaskEnv tenv;
+    MTaskEnv tenv("ExtractSignal");
     tenv.SetDefault(fExtractor);
 
@@ -737,4 +729,5 @@
 
     SetExtractor((MExtractor*)tenv.GetTask());
+
     return kTRUE;
 }
@@ -816,8 +809,6 @@
     }
 
-    //if (!CheckEnv())
-    //    return kFALSE;
-
-    CheckEnv();
+    if (!CheckEnv())
+        return kFALSE;
 
     // --------------------------------------------------------------------------------
@@ -944,4 +935,5 @@
     }
 
+    /*
     if (!fPathIn.IsNull())
     {
@@ -949,12 +941,5 @@
         fExtractor = 0;
     }
-
-    //
-    // Check that the extractor has the bit Noise Calculation() set which 
-    // means that the each "sliding" of the sliding window is not applied
-    //
-    if (fExtractor)
-        fExtractor->SetNoiseCalculation(fExtractorResolution);
-
+    */
     //
     // Execute the eventloop
Index: trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.cc	(revision 5570)
@@ -250,5 +250,4 @@
   fRunHeader    = NULL;
   fEvtHeader    = NULL;
-  fPedestalsOut = NULL;
 
   // If the size is yet set, set the size
@@ -344,5 +343,5 @@
   if (fExtractor && !fPedestalsIn)
   {
-      fPedestalsIn = (MPedestalCam*)pList->FindObject("MPedestalCam", AddSerialNumber(fNamePedestalCamIn));
+      fPedestalsIn = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCamIn), "MPedestalCam");
       if (!fPedestalsIn)
       {
@@ -352,7 +351,10 @@
   }
 
-  fPedestalsOut = (MPedestalCam*)pList->FindCreateObj("MPedestalCam", AddSerialNumber(fNamePedestalCamOut));
   if (!fPedestalsOut)
-      return kFALSE;
+  {
+      fPedestalsOut = (MPedestalCam*)pList->FindCreateObj("MPedestalCam", AddSerialNumber(fNamePedestalCamOut));
+      if (!fPedestalsOut)
+          return kFALSE;
+  }
 
   *fLog << inf;
@@ -630,11 +632,13 @@
     *fLog << "Name of input  MPedestalCam:  " << (fPedestalsIn?fPedestalsIn->GetName():fNamePedestalCamIn.Data()) << " (" << fPedestalsIn << ")" << endl;
     *fLog << "Name of output MPedestalCam:  " << (fPedestalsOut?fPedestalsOut->GetName():fNamePedestalCamOut.Data()) << " (" << fPedestalsOut << ")" << endl;
-    *fLog << "Num evts for pedestal   calc: " << fNumEventsDump << endl;
-    *fLog << "Num evts for avg.areas  calc: " << fNumAreasDump << endl;
-    *fLog << "Num evts for avg.sector calc: " << fNumSectorsDump << endl;
     *fLog << "Pedestal Update is            " << (fPedestalUpdate?"on":"off") << endl;
-    *fLog << "ExtractWindow from slice " << fExtractWinFirst << " to " << fExtractWinLast << " incl." << endl;
-
+    if (fPedestalUpdate)
+    {
+        *fLog << "Num evts for pedestal   calc: " << fNumEventsDump << endl;
+        *fLog << "Num evts for avg.areas  calc: " << fNumAreasDump << endl;
+        *fLog << "Num evts for avg.sector calc: " << fNumSectorsDump << endl;
+    }
     if (fExtractor)
         *fLog << "Extractor used:               " << fExtractor->ClassName() << endl;
-}
+    *fLog << "ExtractWindow from slice " << fExtractWinFirst << " to " << fExtractWinLast << " incl." << endl;
+}
Index: trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.h
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.h	(revision 5569)
+++ trunk/MagicSoft/Mars/mpedestal/MExtractPedestal.h	(revision 5570)
@@ -94,4 +94,5 @@
 
   void SetPedestalsIn(MPedestalCam *pedcam) { fPedestalsIn = pedcam; }
+  void SetPedestalsOut(MPedestalCam *pedcam) { fPedestalsOut = pedcam; }
 
   void SetExtractor(MExtractTimeAndCharge *e) { fExtractor = e; }
Index: trunk/MagicSoft/Mars/mpedestal/MPedCalcFromLoGain.cc
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MPedCalcFromLoGain.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mpedestal/MPedCalcFromLoGain.cc	(revision 5570)
@@ -320,5 +320,4 @@
 
         Float_t sum  = 0.;
-        UInt_t  sumi = 0;
 
         //extract pedestal
@@ -327,4 +326,5 @@
         else
         {
+            UInt_t  sumi = 0;
             for(Byte_t *slice=slices+fExtractWinFirst; slice<=slices+fExtractWinLast; slice++)
                 sumi += *slice;
@@ -422,7 +422,8 @@
 
     Float_t dummy;
+    fExtractor->SetNoiseCalculation(kTRUE);
     fExtractor->FindTimeAndChargeHiGain(logain,logain,sum,dummy,dummy,dummy,sat,ped,logainabflag);
-}
-
+    fExtractor->SetNoiseCalculation(kFALSE);
+}
 
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc
===================================================================
--- trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/mpedestal/MPedCalcPedRun.cc	(revision 5570)
@@ -316,5 +316,7 @@
 
     Float_t dummy;
+    fExtractor->SetNoiseCalculation(kTRUE);
     fExtractor->FindTimeAndChargeHiGain(first,logain,sum,dummy,dummy,dummy,sat,ped,abflag);
+    fExtractor->SetNoiseCalculation(kFALSE);
 }
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5570)
@@ -245,12 +245,12 @@
 void MExtractTimeAndCharge::Print(Option_t *o) const
 {
-  if (IsA()==MExtractTimeAndCharge::Class())
+  if (IsA()==Class())
     *fLog << GetDescriptor() << ":" << endl;
-  
-  *fLog << dec << endl;
-  *fLog << "Taking " << fNumHiGainSamples
+
+  *fLog << dec;
+  *fLog << " Taking " << fNumHiGainSamples
         << " HiGain samples from slice " << (Int_t)fHiGainFirst
         << " to " << (Int_t)(fHiGainLast+fHiLoLast) << " incl" << endl;
-  *fLog << inf << "Taking " << fNumLoGainSamples
+  *fLog << " Taking " << fNumLoGainSamples
         << " LoGain samples from slice " << (Int_t)fLoGainFirst
         << " to " << (Int_t)fLoGainLast << " incl" << endl;
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5569)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5570)
@@ -234,5 +234,5 @@
   const Float_t pedes  = ped.GetPedestal();
   const Float_t ABoffs = ped.GetPedestalABoffset();
-	
+
   Float_t pedmean[2];
   pedmean[0] = pedes + ABoffs;
@@ -260,5 +260,5 @@
         sat++;
     }
-  
+
   if (fHiLoLast != 0)
     {
@@ -284,5 +284,5 @@
         }
     }
-  
+
   //
   // allow one saturated slice 
@@ -300,5 +300,5 @@
         fRandomIter = 0;
       for (Int_t ids=0; ids < fWindowSizeHiGain; ids++)
-        {
+      {
           const Int_t   idx = fBinningResolutionHiGain*ids + fRandomIter;
           sum              += fAmpWeightsHiGain [idx]*fHiGainSignal[ids]; 
@@ -364,5 +364,5 @@
         }
     }
-  
+
   sum = 0.;
   time_sum = 0.;
@@ -1012,9 +1012,12 @@
 void MExtractTimeAndChargeDigitalFilter::Print(Option_t *o) const
 {
+    if (IsA()==Class())
+        *fLog << GetDescriptor() << ":" << endl;
+
     MExtractTimeAndCharge::Print(o);
     *fLog << " Time Shift  HiGain: " << fTimeShiftHiGain         << "  LoGain: " << fTimeShiftLoGain << endl;
     *fLog << " Window Size HiGain: " << fWindowSizeHiGain        << "  LoGain: " << fWindowSizeLoGain << endl;
     *fLog << " Binning Res HiGain: " << fBinningResolutionHiGain << "  LoGain: " << fBinningResolutionHiGain << endl;
-    *fLog << " Weights File:       " << fNameWeightsFile.Data() << endl;
+    *fLog << " Weights File:       " << fNameWeightsFile << endl;
 
     TString opt(o);
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h	(revision 5569)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h	(revision 5570)
@@ -48,7 +48,7 @@
   MArrayF fTimeWeightsLoGain;                   //! Time weights Low-Gain (from weights file)
 
-  TString fNameWeightsFile;                     // Name of the weights file
-  Bool_t  fWeightsSet;                          // Flag if weights have alreayd been set
-  UInt_t  fRandomIter;                          // Counter used to randomize weights for noise calculation
+  TString fNameWeightsFile;                     //! Name of the weights file
+  Bool_t  fWeightsSet;                          //! Flag if weights have alreayd been set
+  UInt_t  fRandomIter;                          //! Counter used to randomize weights for noise calculation
 
   Bool_t  InitArrays();
