Index: trunk/MagicSoft/Mars/callisto.cc
===================================================================
--- trunk/MagicSoft/Mars/callisto.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/callisto.cc	(revision 5307)
@@ -113,6 +113,6 @@
 
     const Bool_t  kPrintSeq   = arg.HasOnlyAndRemove("--print-seq");
-    const Bool_t  kPrintFiles = arg.HasOnlyAndRemove("--print-files");
-    const Bool_t  kPrintOnly  = arg.HasOnlyAndRemove("--print-only");
+    //const Bool_t  kPrintFiles = arg.HasOnlyAndRemove("--print-files");
+    //const Bool_t  kPrintOnly  = arg.HasOnlyAndRemove("--print-only");
     const Bool_t  kDebugEnv   = arg.HasOnlyAndRemove("--debug-env");
 
@@ -120,5 +120,5 @@
     const Bool_t  kBatch      = arg.HasOnlyAndRemove("-b");
     const Bool_t  kOverwrite  = arg.HasOnlyAndRemove("-f");
-    const Bool_t  kForceExec  = arg.HasOnlyAndRemove("-ff");
+    //const Bool_t  kForceExec  = arg.HasOnlyAndRemove("-ff");
 
     const TString kInpathD    = arg.GetStringAndRemove("--ind=",  "");
@@ -211,5 +211,5 @@
         return -1;
     }
-
+/*
     //
     // Process print options
@@ -238,5 +238,5 @@
     //
     MDirIter iter;
-    const Int_t n0 = seq.SetupAllRuns(iter, kInpathD);
+    const Int_t n0 = seq.SetupAllRuns(iter, kInpathD, "[DPC]");
     const Int_t n1 = seq.GetNumAllRuns();
     if (n0 != n1)
@@ -254,5 +254,5 @@
     if (kPrintOnly)
         return 0;
-
+  */
     //
     // Initialize root
Index: trunk/MagicSoft/Mars/mbase/MDirIter.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MDirIter.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mbase/MDirIter.cc	(revision 5307)
@@ -202,4 +202,33 @@
 // --------------------------------------------------------------------------
 //
+// As the filter string may contain a + character, we have to replace
+// this filter by a new filter contaning a \+ at all locations where a +
+// was in the original filter.
+//
+// We replace:
+//   .  by  \\.
+//   +  by  \\+
+//   *  by  [^\\/:]*
+//   ?  by  .
+//
+// And surround the filter by ^ and $.
+//
+// For more details you can have a look at the template:
+//  TRegexp::MakeWildcard
+//
+const TRegexp MDirIter::MakeRegexp(TString n) const
+{
+    n.Prepend("^");
+    n.ReplaceAll(".", "\\.");
+    n.ReplaceAll("+", "\\+");
+    n.ReplaceAll("*", "[^\\/:]*");
+    n.ReplaceAll("?", ".");
+    n.Append("$");
+
+    return TRegexp(n, kFALSE);
+}
+
+// --------------------------------------------------------------------------
+//
 // Check whether the given name n matches the filter f.
 // Filters are of the form TRegexp(f, kTRUE)
@@ -207,11 +236,6 @@
 Bool_t MDirIter::MatchFilter(const TString &n, const TString &f) const
 {
-    // As the filter string may contain a + character, we have to replace
-    // this filter by a new filter contaning a \+ at all locations where a +
-    // was in the original filter.
-    TString nf(f);
-    nf.ReplaceAll("+","\\+");
-
-    return f.IsNull() || !n(TRegexp(nf, kTRUE)).IsNull();
+
+    return f.IsNull() || !n(MakeRegexp(f)).IsNull();
 }
 
Index: trunk/MagicSoft/Mars/mbase/MDirIter.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 5306)
+++ trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 5307)
@@ -23,4 +23,5 @@
     TString ConcatFileName(const char *dir, const char *name) const;
     void    PrintEntry(const TObject &o) const;
+    const   TRegexp MakeRegexp(TString n) const;
 
 public:
Index: trunk/MagicSoft/Mars/mbase/MRunIter.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MRunIter.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mbase/MRunIter.cc	(revision 5307)
@@ -53,12 +53,10 @@
 
     // R. DeLosReyes and T. Bretz
-    // Changes to read the DAQ numbering format. Changes takes place 
+    // Changes to read the DAQ numbering format. Changes takes place
     // between runs 35487 and 00035488 (2004_08_30)
+    const char *fmt = run>35487 ? "*_%08d_*_%s" : "*_%05d_*_%s";
 
-      MDirIter Next;
-      if(run<=35487)
-	Next.AddDirectory(p, Form("*_%05d_*_%s", run,fIsRawFile?"*.raw":"*.root"), -1);
-      else
-	Next.AddDirectory(p, Form("*_%08d_*_%s", run,fIsRawFile?"*.raw":"*.root"), -1);
+    MDirIter Next;
+    Next.AddDirectory(p, Form(fmt, run,fIsRawFile?"*.raw":"*.root"), -1);
 
     const TString name(Next());
Index: trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 5307)
@@ -1483,5 +1483,5 @@
     if (TestBit(kExitLoopOnExit) || TestBit(kExitLoopOnClose))
     {
-        gLog << dbg << "CloseWindow() calling ExitLoop." << endl;
+        //gLog << dbg << "CloseWindow() calling ExitLoop." << endl;
         gSystem->ExitLoop();
     }
@@ -1491,7 +1491,11 @@
         //gLog << dbg << "delete " << fName << ";" << endl;
         delete this;
-    }
-    fStatus = kFileExit;
-    //gLog << dbg << fName << ".fStatus=kFileExit;" << endl;
+        // DO NOT EXECUTE ANY COMMAND AFTER this!
+    }
+    else
+    {
+        fStatus = kFileExit;
+        //gLog << dbg << fName << ".fStatus=kFileExit;" << endl;
+    }
 }
 
Index: trunk/MagicSoft/Mars/mbase/MTaskEnv.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskEnv.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mbase/MTaskEnv.cc	(revision 5307)
@@ -215,5 +215,5 @@
 {
     if (!IsEnvDefined(env, prefix, print))
-        return kFALSE;
+        return fTask ? fTask->ReadEnv(env, prefix, print) : kFALSE;
 
     TString task = GetEnvValue(env, prefix, "");
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc	(revision 5307)
@@ -138,65 +138,54 @@
 Int_t MCalibrateRelTimes::Process()
 {
+    /*
+     if (fCalibrations->GetNumPixels() != (UInt_t)fSignals->GetSize())
+     {
+     // FIXME: MArrivalTime must be of variable size -
+     //        like MCerPhotEvt - because we must be able
+     //        to reduce size by zero supression
+     //        For the moment this check could be done in ReInit...
+     *fLog << err << "MArrivalTime and MCalibrationCam have different sizes... abort." << endl;
+     return kFALSE;
+     }
+     */
 
-  /*
-    if (fCalibrations->GetNumPixels() != (UInt_t)fSignals->GetSize())
+    const UInt_t npix = fSignals->GetSize();
+
+    for (UInt_t pixidx=0; pixidx<npix; pixidx++)
     {
-        // FIXME: MArrivalTime must be of variable size -
-        //        like MCerPhotEvt - because we must be able
-        //        to reduce size by zero supression
-        //        For the moment this check could be done in ReInit...
-        *fLog << err << "MArrivalTime and MCalibrationCam have different sizes... abort." << endl;
-        return kFALSE;
-    }
-  */
+        MCalibrationRelTimePix &pix = (MCalibrationRelTimePix&)(*fCalibrations)[pixidx];
 
-  UInt_t npix = fSignals->GetSize();
+        if (fBadPixels && (*fBadPixels)[pixidx].IsUnsuitable())
+            continue;
 
-  Float_t offset    = 0.;
-  Float_t precision = 0.;
-  
-  for (UInt_t pixidx=0; pixidx<npix; pixidx++)
-    {
+        const Float_t offset    = pix.GetTimeOffset();
+        const Float_t precision = pix.GetTimePrecision();
 
-      MCalibrationRelTimePix &pix = (MCalibrationRelTimePix&)(*fCalibrations)[pixidx];
-      
-      if (fBadPixels)
+        MArrivalTimePix &sig = (*fSignals)[pixidx];
+
+        Float_t signal;
+        Float_t sigerr;
+
+        if (sig.IsLoGainUsed())
         {
-          MBadPixelsPix          &bad = (*fBadPixels)[pixidx];
-          if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
-            continue;
+            signal = sig.GetArrivalTimeLoGain();
+            sigerr = sig.GetArrivalTimeLoGainError();
         }
-      
-      offset     = pix.GetTimeOffset();
-      precision  = pix.GetTimePrecision();
-      
-      MArrivalTimePix &sig =  (*fSignals)[pixidx];
-      
-      Float_t signal;
-      Float_t sigerr;
-            
-      if (sig.IsLoGainUsed())
+        else
         {
-          signal = sig.GetArrivalTimeLoGain();
-          sigerr = sig.GetArrivalTimeLoGainError();
+            signal = sig.GetArrivalTimeHiGain();
+            sigerr = sig.GetArrivalTimeHiGainError();
         }
-      else
-        {
-          signal = sig.GetArrivalTimeHiGain();
-          sigerr = sig.GetArrivalTimeHiGainError();
-        }
-      
-      const Float_t time = signal - offset;
-      Float_t err        = sigerr*sigerr + precision*precision;
-      if (err > 0)
-        err = TMath::Sqrt(err);
 
-      fArrivalTime->SetTime(pixidx,time);
-      fArrivalTime->SetTimeErr(pixidx,err);
+        const Float_t time = signal - offset;
+        const Float_t err  = sigerr*sigerr + precision*precision;
+
+        fArrivalTime->SetTime(pixidx, time);
+        fArrivalTime->SetTimeErr(pixidx, err>0 ? TMath::Sqrt(err) : 0);
 
     } /* for (UInt_t pixidx=0; pixidx<npix; pixidx++) */
-  
-  fArrivalTime->SetReadyToSave();
-  
-  return kTRUE;
+
+    fArrivalTime->SetReadyToSave();
+
+    return kTRUE;
 }
Index: trunk/MagicSoft/Mars/mhist/MHCamera.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHCamera.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mhist/MHCamera.cc	(revision 5307)
@@ -1159,10 +1159,8 @@
         const Double_t error = fSumw2.fArray[bin]/GetEntries();
         const Double_t val   = fArray[bin]/GetEntries();
-        rc = TMath::Sqrt(error - val*val);
+        rc = val*val>error ? 0 : TMath::Sqrt(error - val*val);
     }
     else
-    {
         rc = TH1D::GetBinError(bin);
-    }
 
     return Profile(rc);
Index: trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc	(revision 5307)
@@ -94,5 +94,6 @@
 // Sets fRuns to 0, fExtractor to NULL, fDataCheck to kFALSE
 //
-MJCalibrateSignal::MJCalibrateSignal(const char *name, const char *title) 
+MJCalibrateSignal::MJCalibrateSignal(const char *name, const char *title)
+    : fIsDataCheck(kFALSE)
 {
     fName  = name  ? name  : "MJCalibrateSignal";
@@ -170,4 +171,24 @@
     cont.Add(&cam);
     return ReadContainer(cont);
+}
+
+// --------------------------------------------------------------------------
+//
+// MJCalibration allows to setup several option by a resource file:
+//   MJCalibration.Display: full, datacheck, normal
+//   MJCalibration.RelTimeCalibration: yes,no
+//   MJCalibration.DataCheck: yes,no
+//   MJCalibration.Debug: yes,no
+//   MJCalibration.Intensity: yes,no
+//   MJCalibration.UseBlindPixel: yes,no
+//   MJCalibration.UsePINDiode: yes,no
+//   MJCalibration.Geometry: MGeomCamMagic, MGeomCamECO1000
+//
+// For more details see the class description and the corresponding Getters
+// 
+Bool_t MJCalibrateSignal::CheckEnvLocal()
+{
+    SetDataCheck(GetEnv("DataCheck", IsDataCheck()));
+    return kTRUE;
 }
 
@@ -196,5 +217,5 @@
 
     MDirIter iter;
-    const Int_t n0 = fSequence.SetupDatRuns(iter, fPathData);
+    const Int_t n0 = fSequence.SetupDatRuns(iter, fPathData, "D", IsDataCheck());
     const Int_t n1 = fSequence.GetNumDatRuns();
     if (n0==0)
@@ -300,10 +321,11 @@
     readreal.AddFiles(iter);
 
-    MReadMarsFile readmc("Events");
-    readmc.DisableAutoScheme();
-    readmc.AddFiles(iter);
-
-    MRawFileRead readraw(NULL);
-    readraw.AddFiles(iter);
+    MReadMarsFile read("Events");
+    read.DisableAutoScheme();
+    MRawFileRead rawread(NULL);
+    if (IsDataCheck())
+        rawread.AddFiles(iter);
+    else
+        read.AddFiles(iter);
 
     MGeomApply             apply; // Only necessary to create geometry
@@ -413,13 +435,8 @@
 
     // Now setup main tasklist
-    switch (filetype)
-    {
-    case 1: tlist.AddToList(&readraw);  break;
-    case 2: tlist.AddToList(&readreal); break;
-    case 3: tlist.AddToList(&readmc);   break;
-    }
-
-    tlist.AddToList(&tlist2, "Events");
-    tlist.AddToList(&pcalc,  "Drive");
+    tlist.AddToList(IsDataCheck() ? (MTask*)&rawread : (MTask*)&read);
+    tlist.AddToList(&tlist2, IsDataCheck()?"All":"Events");
+    if (!IsDataCheck())
+        tlist.AddToList(&pcalc, "Drive");
     tlist.AddToList(&write);
 
Index: trunk/MagicSoft/Mars/mmain/MEventDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mmain/MEventDisplay.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mmain/MEventDisplay.cc	(revision 5307)
@@ -107,5 +107,5 @@
 //  Constructor.
 //
-MEventDisplay::MEventDisplay(const char *fname, const char *pname, const char *cname) : MStatusDisplay()
+MEventDisplay::MEventDisplay(const char *fname, const char *pname, const char *cname) : MStatusDisplay(), fEvtLoop(0)
 {
     //
@@ -130,5 +130,6 @@
     // Readin first event and display it
     //
-    ReadFirstEvent();
+    if (fEvtLoop)
+        ReadFirstEvent();
 
     SetNoContextMenu(kFALSE);
@@ -141,6 +142,9 @@
 MEventDisplay::~MEventDisplay()
 {
-    fEvtLoop->PostProcess();
-    delete fEvtLoop;
+    if (fEvtLoop)
+    {
+        fEvtLoop->PostProcess();
+        delete fEvtLoop;
+    }
 }
 
@@ -249,4 +253,7 @@
         plist->AddToList(ccam);
 
+    //MArrivalTime *atime = new MArrivalTime;
+    //plist->AddToList(atime);
+
     MHEvent *evt01 = new MHEvent(MHEvent::kEvtSignalRaw);
     MHEvent *evt02 = new MHEvent(MHEvent::kEvtSignalRaw);
Index: trunk/MagicSoft/Mars/mraw/MRawFileRead.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 5307)
@@ -103,5 +103,5 @@
     : fFileNames(NULL), fNumFile(0), fIn(NULL), fParList(NULL), fInterleave(1)
 {
-    fName  = name  ? name  : "MRawFileRead";
+    fName  = name  ? name  : "MRead";
     fTitle = title ? title : "Read task to read DAQ binary files";
 
@@ -122,4 +122,27 @@
     if (fIn)
         delete fIn;
+}
+
+Byte_t MRawFileRead::IsFileValid(const char *name)
+{
+    ifstream fin(name);
+    if (!fin)
+        return 0;
+
+    Byte_t c[4];
+    fin.read((char*)c, 4);
+    if (!fin)
+        return 0;
+
+    if (c[0]!=0xc0)
+        return 0;
+
+    if (c[1]==0xc0)
+        return 1;
+
+    if (c[1]==0xc1)
+        return 2;
+
+    return 0;
 }
 
Index: trunk/MagicSoft/Mars/mraw/MRawFileRead.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawFileRead.h	(revision 5306)
+++ trunk/MagicSoft/Mars/mraw/MRawFileRead.h	(revision 5307)
@@ -32,4 +32,6 @@
     ~MRawFileRead();
 
+    static Byte_t IsFileValid(const char *name);
+
     void SetInterleave(UInt_t i) { fInterleave = i; }
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTime.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTime.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/msignal/MExtractTime.cc	(revision 5307)
@@ -148,13 +148,11 @@
 Bool_t MExtractTime::ReInit(MParList *pList)
 {
-  
-  MExtractor::ReInit(pList);
-
-  fArrTime->SetUsedFADCSlices(fHiGainFirst, fHiGainLast+fHiLoLast, fLoGainFirst, fLoGainLast);
-
-  return kTRUE;
-}
-
-
+    if (!MExtractor::ReInit(pList))
+        return kFALSE;
+
+    fArrTime->SetUsedFADCSlices(fHiGainFirst, fHiGainLast+fHiLoLast, fLoGainFirst, fLoGainLast);
+
+    return kTRUE;
+}
 
 void MExtractTime::FindTimeHiGain(Byte_t *firstused, Float_t &time, Float_t &dtime, 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.cc	(revision 5307)
@@ -74,4 +74,5 @@
 
 const Float_t MExtractTimeAndCharge::fgLoGainStartShift = -2.8; 
+
 // --------------------------------------------------------------------------
 //
@@ -83,9 +84,8 @@
 MExtractTimeAndCharge::MExtractTimeAndCharge(const char *name, const char *title)
 {
-
-  fName  = name  ? name  : "MExtractTimeAndCharge";
-  fTitle = title ? title : "Base class for signal and time extractors";
-  
-  SetLoGainStartShift();
+    fName  = name  ? name  : "MExtractTimeAndCharge";
+    fTitle = title ? title : "Base class for signal and time extractors";
+
+    SetLoGainStartShift();
 }
 
@@ -105,18 +105,12 @@
 Int_t MExtractTimeAndCharge::PreProcess(MParList *pList)
 {
-
-  if (!MExtractTime::PreProcess(pList))
-    return kFALSE;
-  
-  fSignals = (MExtractedSignalCam*)pList->FindCreateObj(AddSerialNumber("MExtractedSignalCam"));
-  if (!fSignals)
-    {
-      *fLog << err << GetDescriptor()
-            << ": Could not find nor create MExtractedSignalCam,... aborting." << endl;
-      return kFALSE;
-    }
-  
-  
-  return kTRUE;
+    if (!MExtractTime::PreProcess(pList))
+        return kFALSE;
+
+    fSignals = (MExtractedSignalCam*)pList->FindCreateObj(AddSerialNumber("MExtractedSignalCam"));
+    if (!fSignals)
+        return kFALSE;
+
+    return kTRUE;
 }
 
@@ -132,19 +126,19 @@
 Bool_t MExtractTimeAndCharge::ReInit(MParList *pList)
 {
-  
-  MExtractTime::ReInit(pList);
-
-  fSignals->SetUsedFADCSlices(fHiGainFirst, fHiGainLast+fHiLoLast, fNumHiGainSamples,
-                              fLoGainFirst, fLoGainLast, fNumLoGainSamples);
-
-  *fLog << dec << endl;
-  *fLog << inf << GetDescriptor() << ": Taking " << fNumHiGainSamples
+    if (!MExtractTime::ReInit(pList))
+        return kFALSE;
+
+    fSignals->SetUsedFADCSlices(fHiGainFirst, fHiGainLast+fHiLoLast, fNumHiGainSamples,
+                                fLoGainFirst, fLoGainLast, fNumLoGainSamples);
+
+    *fLog << dec << endl;
+    *fLog << inf << "Taking " << fNumHiGainSamples
         << " HiGain samples from slice " << (Int_t)fHiGainFirst
         << " to " << (Int_t)(fHiGainLast+fHiLoLast) << " incl" << endl;
-  *fLog << inf << GetDescriptor() << ": Taking " << fNumLoGainSamples
+    *fLog << inf << "Taking " << fNumLoGainSamples
         << " LoGain samples from slice " << (Int_t)fLoGainFirst
         << " to " << (Int_t)fLoGainLast << " incl" << endl;
 
-  return kTRUE;
+    return kTRUE;
 }
 
@@ -258,2 +252,12 @@
     return MExtractTime::ReadEnv(env, prefix, print) ? kTRUE : rc;
 }
+
+void MExtractTimeAndCharge::Print(Option_t *o) const
+{
+    *fLog << all;
+    if (IsA()==MExtractTimeAndCharge::Class())
+        *fLog << GetDescriptor() << ":" << endl;
+
+    *fLog << " LoGainStartShift: " << fLoGainStartShift << endl;
+    MExtractTime::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h	(revision 5306)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndCharge.h	(revision 5307)
@@ -13,5 +13,5 @@
   static const Float_t fgLoGainStartShift; // Default for fLoGainStartShift (now set to: -2.8)
   
-  Byte_t  fLoGainFirstSave;        // Temporary variable to store the original position of low-gain start slice
+  Byte_t  fLoGainFirstSave;       //! Temporary variable to store the original position of low-gain start slice
   Float_t fLoGainStartShift;      // Shift to start searching the low-gain signal obtained from the high-gain times.
   
@@ -36,6 +36,8 @@
   
   void SetLoGainStartShift( const Float_t f=fgLoGainStartShift )  { fLoGainStartShift = f + fOffsetLoGain;  }
+
+  void Print(Option_t *o) const;
   
-  ClassDef(MExtractTimeAndCharge, 0)   // Time And Charge Extractor Base Class
+  ClassDef(MExtractTimeAndCharge, 1)   // Time And Charge Extractor Base Class
 };
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5306)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.cc	(revision 5307)
@@ -940,2 +940,17 @@
   return kTRUE;
 }
+
+void MExtractTimeAndChargeDigitalFilter::Print(Option_t *o) const
+{
+    *fLog << all;
+    *fLog << GetDescriptor() << ":" << endl;
+
+    *fLog << " Time Shift HiGain:  " << fTimeShiftHiGain << endl;
+    *fLog << " Time Shift LoGain:  " << fTimeShiftLoGain << endl;
+    *fLog << " Window Size HiGain: " << fWindowSizeHiGain << endl;
+    *fLog << " Window Size LoGain: " << fWindowSizeLoGain << endl;
+    *fLog << " Binning Res HiGain: " << fBinningResolutionHiGain << endl;
+    *fLog << " Binning Res LoGain: " << fBinningResolutionHiGain << endl;
+  
+    MExtractTimeAndCharge::Print(o);
+}
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h	(revision 5306)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeDigitalFilter.h	(revision 5307)
@@ -86,4 +86,6 @@
     fSignalStartBinLoGain = sl; 
   }
+
+  void Print(Option_t *o) const;
   
   ClassDef(MExtractTimeAndChargeDigitalFilter, 1)   // Hendrik's digital filter
