Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 3981)
+++ trunk/MagicSoft/Mars/Changelog	(revision 3982)
@@ -21,4 +21,7 @@
  2004/05/05: Markus Gaug
  
+   * mjobs/MJExtractCalibTest.[h,cc]
+     - included setters for the time extractor
+
    * mcalib/MCalibrationChargeCalc.cc
      - set default of fgPheErrLimit from 4 sigma to 5.
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3982)
@@ -228,5 +228,5 @@
 const Float_t MCalibrationChargeCalc::fgLambdaErrLimit         = 0.2;
 const Float_t MCalibrationChargeCalc::fgLambdaCheckLimit       = 0.2;
-const Float_t MCalibrationChargeCalc::fgPheErrLimit            = 4.;
+const Float_t MCalibrationChargeCalc::fgPheErrLimit            = 5.;
 const Float_t MCalibrationChargeCalc::fgFFactorErrLimit        = 3.;
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc	(revision 3982)
@@ -72,5 +72,5 @@
 using namespace std;
 
-const Float_t MCalibrationRelTimeCalc::fgRelTimeRelErrLimit      = 7.5;
+const Float_t MCalibrationRelTimeCalc::fgRelTimeRelErrLimit      = 10.;
 // --------------------------------------------------------------------------
 //
@@ -343,5 +343,5 @@
       areasum2[aidx] /= (numareavalid[aidx]-1.);
       areasum [aidx] /= numareavalid[aidx];
-      lowlim  [aidx]  = areasum [aidx] - fRelTimeRelErrLimit*areasum2[aidx];
+      lowlim  [aidx]  = 0.;
       upplim  [aidx]  = areasum [aidx] + fRelTimeRelErrLimit*areasum2[aidx];
       
Index: trunk/MagicSoft/Mars/mcalib/MHCalibrationTestCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MHCalibrationTestCam.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mcalib/MHCalibrationTestCam.cc	(revision 3982)
@@ -115,4 +115,5 @@
   fTitle = title ? title : "Histogram class for testing the calibration";
   
+  SetAverageNbins(5000);
 }
 
@@ -165,10 +166,5 @@
 	  (*fHiGainArray)[i] = new MHCalibrationTestPix("Calibrated Events",
                                                 "Test Calibration Pixel");
-          if (!(*fBadPixels)[i].IsOK())
-            (*this)[i].SetExcluded();
-
-          (*this)[i].InitBins();
-          (*this)[i].ChangeHistId(i);
-          (*this)[i].SetEventFrequency(fPulserFrequency);
+          InitHists((*this)[i],(*fBadPixels)[i],i);
       }
   }
@@ -181,10 +177,5 @@
 	  (*fLoGainArray)[i] = new MHCalibrationTestPix("Calibrated Events",
                                                 "Test Calibration Pixel");
-          if (!(*fBadPixels)[i].IsOK())
-            (*this)[i].SetExcluded();
-
-          (*this)[i].InitBins();
-          (*this)[i].ChangeHistId(i);
-          (*this)[i].SetEventFrequency(fPulserFrequency);
+          InitHists((*this)(i),(*fBadPixels)[i],i);
       }
   }
@@ -207,4 +198,6 @@
         GetAverageHiGainArea(j).SetEventFrequency(fPulserFrequency);
 
+        TH1F *h =  GetAverageHiGainArea(j).GetHGausHist();
+        h->SetTitle( Form("%s%s", h->GetTitle()," Runs: "));
       }
   }
@@ -245,4 +238,8 @@
           GetAverageHiGainSector(j).ChangeHistId(j);
           GetAverageHiGainSector(j).SetEventFrequency(fPulserFrequency);
+
+          TH1F *h =  GetAverageHiGainSector(j).GetHGausHist();
+          h->SetTitle( Form("%s%s", h->GetTitle()," Runs: "));
+
       }
   }
@@ -307,4 +304,6 @@
   memset(sumareahi,   0, nareas * sizeof(Float_t));
   memset(sumsectorhi, 0, nsectors*sizeof(Float_t));
+  memset(numareahi,   0, nareas * sizeof(Int_t));
+  memset(numsectorhi, 0, nsectors*sizeof(Int_t));
   
   for (Int_t i=0; i<npixels; i++)
Index: trunk/MagicSoft/Mars/mcalib/MHCalibrationTestPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MHCalibrationTestPix.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mcalib/MHCalibrationTestPix.cc	(revision 3982)
@@ -81,6 +81,6 @@
 
   fHGausHist.SetName("HCalibrationTest");
-  fHGausHist.SetTitle("Distribution of calibrated Summed FADC slices Pixel");  
-  fHGausHist.SetXTitle("Sum FADC Slices");
+  fHGausHist.SetTitle("Distribution of calibrated Photons Pixel");  
+  fHGausHist.SetXTitle("Nr. Photons");
   fHGausHist.SetYTitle("Nr. of events");
 
Index: trunk/MagicSoft/Mars/mcalib/MHCalibrationTestTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MHCalibrationTestTimeCam.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mcalib/MHCalibrationTestTimeCam.cc	(revision 3982)
@@ -113,5 +113,6 @@
   fName  = name  ? name  : "MHCalibrationTestTimeCam";
   fTitle = title ? title : "Histogram class for testing the calibration of arrival times";
-  
+
+  SetAverageNbins(5000);
 }
 
@@ -195,4 +196,8 @@
         GetAverageHiGainArea(j).SetEventFrequency(fPulserFrequency);
 
+        TH1F *h =  GetAverageHiGainArea(j).GetHGausHist();
+        h->SetTitle( Form("%s%s", h->GetTitle()," Runs: "));
+
+
       }
   }
@@ -233,4 +238,8 @@
           GetAverageHiGainSector(j).ChangeHistId(j);
           GetAverageHiGainSector(j).SetEventFrequency(fPulserFrequency);
+          TH1F *h =  GetAverageHiGainSector(j).GetHGausHist();
+          h->SetTitle( Form("%s%s", h->GetTitle()," Runs: "));
+
+
       }
   }
@@ -295,4 +304,6 @@
   memset(sumareahi,   0, nareas * sizeof(Float_t));
   memset(sumsectorhi, 0, nsectors*sizeof(Float_t));
+  memset(numareahi,   0, nareas * sizeof(Int_t));
+  memset(numsectorhi, 0, nsectors*sizeof(Int_t));
   
   for (Int_t i=0; i<npixels; i++)
Index: trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.cc	(revision 3982)
@@ -48,5 +48,7 @@
 #include "MBadPixelsCam.h"
 #include "MCerPhotEvt.h"
+#include "MArrivalTime.h"
 #include "MCalibrationChargeCam.h"
+#include "MCalibrationRelTimeCam.h"
 #include "MCalibrationQECam.h"
 #include "MHCamEvent.h"
@@ -56,6 +58,9 @@
 #include "MExtractSlidingWindow.h"
 #include "MExtractor.h"
+#include "MExtractTime.h"
+#include "MExtractTimeFastSpline.h"
 #include "MFillH.h"
 #include "MCalibrate.h"
+#include "MCalibrateRelTimes.h"
 #include "MPedPhotCalc.h"
 #include "MWriteRootFile.h"
@@ -70,8 +75,8 @@
 // Default constructor. 
 //
-// Sets fRuns to 0, fExtractor to NULL
+// Sets fRuns to 0, fExtractor to NULL, fTimeExtractor to NULL
 //
 MJExtractCalibTest::MJExtractCalibTest(const char *name, const char *title) 
-    : fRuns(NULL), fExtractor(NULL)
+    : fRuns(NULL), fExtractor(NULL), fTimeExtractor(NULL)
 {
     fName  = name  ? name  : "MJExtractCalibTest";
@@ -151,4 +156,12 @@
 }
 
+TString MJExtractCalibTest::GetOutputFileT() const
+{
+  if (!fRuns)
+    return "";
+  
+  return Form("%s/%s-F4.root", (const char*)fOutputPath, (const char*)fRuns->GetRunsAsFileName());
+}
+
 TString MJExtractCalibTest::GetOutputFileP() const
 {
@@ -240,9 +253,8 @@
     }
 
-  if (TestBit(kEnableGraphicalOutput))
+  //  if (TestBit(kEnableGraphicalOutput))
     tlist.AddToList(&fill);
   tlist.AddToList(&photcalc);
   tlist.AddToList(&fillcam);
-  //  tlist.AddToList(&write);
   
   // Create and setup the eventloop
@@ -267,4 +279,112 @@
   return kTRUE;
 }
+
+Bool_t MJExtractCalibTest::ProcessT(MPedestalCam &pedcam, MCalibrationRelTimeCam &relcam)
+{
+  const TString fname = GetOutputFileT();
+  
+  if (gSystem->AccessPathName(fname, kFileExists))
+    return ProcessFileT(pedcam,relcam);
+  
+  return kTRUE;
+}
+
+Bool_t MJExtractCalibTest::ProcessFileT(MPedestalCam &pedcam, MCalibrationRelTimeCam &relcam)
+{
+
+  if (!fRuns)
+    {
+      *fLog << err << "No Runs choosen... abort." << endl;
+      return kFALSE;
+    }
+  if (fRuns->GetNumRuns() != fRuns->GetNumEntries())
+    {
+      *fLog << err << "Number of files found doesn't match number of runs... abort." << endl;
+      return kFALSE;
+    }
+  
+  *fLog << inf;
+  fLog->Separator(GetDescriptor());
+  *fLog << "Calculate MExtractedSignalCam from Runs " << fRuns->GetRunsAsString() << endl;
+  *fLog << endl;
+  
+  MArrivalTime  arrtime;
+
+  // Setup Lists
+  MParList plist;
+  plist.AddToList(&pedcam);
+  plist.AddToList(&relcam);
+  plist.AddToList(&arrtime);
+  plist.AddToList(&fTestCam);
+  plist.AddToList(&fBadPixels);
+  
+  MTaskList tlist;
+  plist.AddToList(&tlist);
+
+  // Setup Task-lists
+  MReadMarsFile read("Events");
+  read.DisableAutoScheme();
+  static_cast<MRead&>(read).AddFiles(*fRuns);
+  
+  MGeomApply             apply; // Only necessary to craete geometry
+  MExtractTimeFastSpline extract;
+  MCalibrateRelTimes     timecalc;
+
+  MHCamEvent evt("ExtTimes");
+  evt.SetType(0);
+  MFillH fill(&evt, "MArrivalTimeCam");
+  
+  MFillH fillcam("MHCalibrationTestTimeCam", "MArrivalTime");
+  fillcam.SetNameTab("TestTime");
+
+  /*
+  MWriteRootFile write(GetOutputFileD(), "RECREATE", fRuns->GetRunsAsString(), 2);
+  write.AddContainer("MExtractedSignalCam", "Events");
+  write.AddContainer("MTime",               "Events");
+  write.AddContainer("MRawEvtHeader",       "Events");
+  write.AddContainer("MPedestalCam",        "RunHeaders");
+  write.AddContainer("MRawRunHeader",       "RunHeaders");
+  write.AddContainer("MBadPixelsCam",       "RunHeaders");
+  */
+
+  tlist.AddToList(&read);
+  tlist.AddToList(&apply);
+
+  if (fTimeExtractor)
+    tlist.AddToList(fTimeExtractor);
+    else
+    {
+      *fLog << warn << GetDescriptor() 
+            << ": No extractor has been chosen, take default MExtractSlidingWindow " << endl;
+      tlist.AddToList(&extract);
+    }
+
+  //  if (TestBit(kEnableGraphicalOutput))
+  tlist.AddToList(&fill);
+  tlist.AddToList(&timecalc);
+  tlist.AddToList(&fillcam);
+  
+  // Create and setup the eventloop
+  MEvtLoop evtloop(fName);
+  evtloop.SetParList(&plist);
+  evtloop.SetDisplay(fDisplay);
+  evtloop.SetLogStream(fLog);
+  
+  // Execute first analysis
+  if (!evtloop.Eventloop())
+    {
+      *fLog << err << GetDescriptor() << ": Failed." << endl;
+      return kFALSE;
+    }
+  
+  tlist.PrintStatistics();
+  
+  DisplayResult(plist);
+
+  *fLog << inf << GetDescriptor() << ": Done." << endl;
+  
+  return kTRUE;
+}
+
 
 Bool_t MJExtractCalibTest::ReadPedPhotCam()
Index: trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.h	(revision 3981)
+++ trunk/MagicSoft/Mars/mjobs/MJExtractCalibTest.h	(revision 3982)
@@ -18,7 +18,9 @@
 class MParList;
 class MPedestalCam;
+class MCalibrationRelTimeCam;
 class MCalibrationChargeCam;
 class MCalibrationQECam;
 class MExtractor;
+class MExtractTime;
 class MJExtractCalibTest : public MParContainer, public MGCamDisplays
 {
@@ -27,6 +29,7 @@
   TString fOutputPath;
 
-  MRunIter   *fRuns;                                       // Data files
-  MExtractor *fExtractor;                                  // Signal extractor
+  MRunIter     *fRuns;                       // Data files
+  MExtractor   *fExtractor;                  // Signal extractor
+  MExtractTime *fTimeExtractor;              // Arrival time extractor  
   
   MBadPixelsCam        fBadPixels;
@@ -40,4 +43,5 @@
   Bool_t ProcessFileD(MPedestalCam &pedcam, MCalibrationChargeCam &calcam, MCalibrationQECam &qecam);
   Bool_t ProcessFileP(MPedestalCam &pedcam, MCalibrationChargeCam &calcam, MCalibrationQECam &qecam);
+  Bool_t ProcessFileT(MPedestalCam &pedcam, MCalibrationRelTimeCam &relcam);  
 
 public:
@@ -49,4 +53,5 @@
   TString GetOutputFileP() const;
   TString GetOutputFileD() const;
+  TString GetOutputFileT() const;
   
   MHCalibrationTestCam &GetTestCam()    { return fTestCam; }
@@ -55,8 +60,10 @@
   
   void SetExtractor(MExtractor* ext)              { fExtractor = ext; }
+  void SetTimeExtractor(MExtractTime* ext)         { fTimeExtractor = ext; }
   void SetBadPixels(const MBadPixelsCam &bad) { bad.Copy(fBadPixels); }
   
   Bool_t ProcessD(MPedestalCam &pedcam, MCalibrationChargeCam &calcam, MCalibrationQECam &qecam);
   Bool_t ProcessP(MPedestalCam &pedcam, MCalibrationChargeCam &calcam, MCalibrationQECam &qecam);
+  Bool_t ProcessT(MPedestalCam &pedcam, MCalibrationRelTimeCam &relcam);  
   
   ClassDef(MJExtractCalibTest, 0) // Tool to extract, calibrate and test the signal 
Index: trunk/MagicSoft/Mars/mjobs/MJPedestal.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 3981)
+++ trunk/MagicSoft/Mars/mjobs/MJPedestal.cc	(revision 3982)
@@ -258,5 +258,4 @@
     MGeomApply      geomapl;
     // MBadPixelsMerge merge(&fBadPixels);
-    //MExtractSignal sigcalc;
     MPedCalcPedRun  pedcalc;
 
Index: trunk/MagicSoft/Mars/mjobs/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mjobs/Makefile	(revision 3981)
+++ trunk/MagicSoft/Mars/mjobs/Makefile	(revision 3982)
@@ -21,5 +21,5 @@
 INCLUDES = -I. -I../mbase -I../mgui -I../mgeom -I../mdata -I../mhbase \
 	   -I../mfileio -I../mfilter -I../manalysis -I../mhist -I../mcalib \
-           -I../mbadpixels -I../msignal -I../mraw -I../mpedestal
+           -I../mbadpixels -I../msignal -I../mraw -I../mpedestal -I../mtools
 
 #manalysis: MChisqEval (MParameters)
