Index: trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc	(revision 5855)
+++ trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc	(revision 5856)
@@ -29,5 +29,4 @@
 // 
 //  Input Containers:
-//   MRawEvtHeader
 //   MParList
 //   MCalibrationIntensityChargeCam
@@ -61,7 +60,7 @@
 #include "MCalibrationChargeCalc.h"
 #include "MCalibrationRelTimeCalc.h"
+#include "MCalibrateData.h"
 
 #include "MRawRunHeader.h"
-#include "MRawEvtHeader.h"
 
 #include "MGeomCam.h"
@@ -71,13 +70,17 @@
 using namespace std;
 
+const UInt_t MCalibCalcFromPast::fgNumEventsDump = 1000;
 // --------------------------------------------------------------------------
 //
 //  Default constructor. 
 //
+// Sets:
+// - fNumEventsDump to fgNumEventsDump
+//
 MCalibCalcFromPast::MCalibCalcFromPast(const char *name, const char *title)
-    : fHeader(NULL), fGeom(NULL), fParList(NULL), 
+    : fRunHeader(NULL), fGeom(NULL), fParList(NULL), 
       fIntensCharge(NULL), fIntensRelTime(NULL), fIntensBad(NULL),
-      fChargeCalc(NULL), fRelTimeCalc(NULL),
-      fPattern(0)
+      fChargeCalc(NULL), fRelTimeCalc(NULL), fCalibrate(NULL),
+      fNumEvents(0), fNumCam(0)
 {
 
@@ -85,4 +88,5 @@
   fTitle = title ? title : "Task to steer the processing of interlaced calibration events";
 
+  SetNumEventsDump();
 }
 
@@ -90,5 +94,4 @@
 //
 // The following container are searched for and execution aborted if not in MParList:
-//  - MRawEvtHeader
 //  - MTaskList
 //
@@ -96,13 +99,15 @@
 {
 
-  fHeader = (MRawEvtHeader*)pList->FindObject("MRawEvtHeader");
-  if (!fHeader)
-    {
-      *fLog << err << "MRawEvtHeader not found... abort." << endl;
-      return kFALSE;
-    }
+  /*
+  fTrigPattern = (MTriggerPattern*)pList->FindObject("MTriggerPattern");
+  if (!fTrigPattern)
+    {
+      *fLog << err << "MTriggerPattern not found... abort." << endl;
+      return kFALSE;
+    }
+  */
 
   fRunHeader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
-  if (!fHeader)
+  if (!fRunHeader)
     {
       *fLog << err << "MRawRunHeader not found... abort." << endl;
@@ -159,7 +164,12 @@
     fIntensQE     = (MCalibrationIntensityQECam*)    pList->FindCreateObj("MCalibrationIntensityQECam");
 
-    fChargeCalc   = (MCalibrationChargeCalc*)tlist->FindObject("MCalibrationChargeCalc");
-
+    if (!fChargeCalc)
+      fChargeCalc   = (MCalibrationChargeCalc*)tlist->FindObject("MCalibrationChargeCalc");
+
+    if (!fCalibrate)
+      fCalibrate   = (MCalibrateData*)tlist->FindObject("MCalibrateData");
+    
     *fLog << inf << "Found MHCalibrationChargeCam ... " << flush;
+    *fLog << err << fCalibrate << flush;
 
     if (!fIntensCharge)
@@ -180,4 +190,10 @@
         return kFALSE;
       }
+
+    if (!fCalibrate)
+      {
+        *fLog << err << "Could not find MCalibrateData abort... " << endl;
+        return kFALSE;
+      }
   }
       
@@ -190,5 +206,6 @@
 
     fIntensRelTime = (MCalibrationIntensityRelTimeCam*)pList->FindCreateObj("MCalibrationIntensityRelTimeCam");
-    fRelTimeCalc   = (MCalibrationRelTimeCalc*)tlist->FindObject(AddSerialNumber("MCalibrationRelTimeCalc"));
+    if (!fRelTimeCalc)
+      fRelTimeCalc   = (MCalibrationRelTimeCalc*)tlist->FindObject(AddSerialNumber("MCalibrationRelTimeCalc"));
 
     *fLog << inf << "Found MHCalibrationRelTimeCam ... " << flush;
@@ -225,4 +242,8 @@
   }
       
+
+  fNumCam    = 0;
+  fNumEvents = 0;
+
   return kTRUE;
 }
@@ -230,24 +251,20 @@
 // --------------------------------------------------------------------------
 //
-// Reads the pattern from MRawEvtHeader and initializes new containers in the 
-// Intensity Cams, if the pattern has changed. Executes CallPostProcess of the 
-// MCalibration*Calc classes in that case.
+// Initializes new containers in the 
+// Intensity Cams, if the number of calibration events has reach fNumEventsDump. 
+// Executes CallPostProcess of the MCalibration*Calc classes in that case.
 //
 Int_t MCalibCalcFromPast::Process()
 {
 
-  const UInt_t pattern = fHeader->GetCalibrationPattern();
-
-  if (pattern == fPattern)
+  /*
+  if (!(fTrigPattern->GetPrescaled() & MTriggerPattern::kCalibration))
     return kTRUE;
-
-  if (fPattern == 0)
-    {
-      fPattern = pattern;
-      return kTRUE;
-    }
-
-  fPattern = pattern;
-  
+  */
+
+  if (fNumEvents++ < fNumEventsDump)
+    return kTRUE;
+  
+  fNumEvents = 0;
   //
   // Finalize Possible calibration histogram classes...
@@ -265,7 +282,12 @@
   *fLog << inf << GetDescriptor() << " : Finalize calibration calculations..." << flush;
   if (fChargeCalc)
-    fChargeCalc->CallPostProcess();
+    fChargeCalc->Finalize();
   if (fRelTimeCalc)
-    fRelTimeCalc->CallPostProcess();
+    fRelTimeCalc->Finalize();
+  if (fCalibrate)
+    {
+      fCalibrate->SetCalibUpdate((MCalibrationChargeCam*)fIntensCharge->GetCam());
+      fCalibrate->UpdateConversionFactors();
+    }
 
   ReInitialize();
@@ -307,23 +329,26 @@
   *fLog << endl;
   
+  fNumCam++;
+
   if (fIntensBad)
     {
-      fIntensBad->AddToList(Form("MBadPixelsCam%s",GetNamePattern()),*fGeom);
-      *fLog << inf << "New MBadPixelsCam with " << GetNamePattern() << endl;
-    }
+      fIntensBad->AddToList(Form("MBadPixelsCam%04d",fNumCam),*fGeom);
+      *fLog << inf << "New MBadPixelsCam Nr. " << fNumCam << endl;
+    }
+
   if (fIntensCharge)
     {
-      fIntensCharge->AddToList(Form("MCalibrationChargeCam%s",GetNamePattern()),*fGeom);
-      *fLog << inf << "New MCalibrationChargeCam with " << GetNamePattern() << endl;
+      fIntensCharge->AddToList(Form("MCalibrationChargeCam%04d",fNumCam),*fGeom);
+      *fLog << inf << "New MCalibrationChargeCam Nr.  " << fNumCam << endl;
     }
   if (fIntensQE)
     {
-      fIntensQE->AddToList(Form("MCalibrationQECam%s",GetNamePattern()),*fGeom);
-      *fLog << inf << "New MCalibrationQECam with " << GetNamePattern() << endl;
+      fIntensQE->AddToList(Form("MCalibrationQECam%04d",fNumCam),*fGeom);
+      *fLog << inf << "New MCalibrationQECam Nr.  " << fNumCam << endl;
     }
   if (fIntensBlind)
     {
-      fIntensBlind->AddToList(Form("MCalibrationBlindCam%s",GetNamePattern()),*fGeom);
-      *fLog << inf << "New MCalibrationBlindCam with " << GetNamePattern() << endl;
+      fIntensBlind->AddToList(Form("MCalibrationBlindCam%04d",fNumCam),*fGeom);
+      *fLog << inf << "New MCalibrationBlindCam Nr. " << fNumCam << endl;
     }
 
@@ -332,87 +357,9 @@
 }
 
-const char* MCalibCalcFromPast::GetNamePattern()
-{
-
-  Float_t number[MCalibrationCam::gkNumPulserColors];
-  memset(number,0,MCalibrationCam::gkNumPulserColors*sizeof(Float_t));
-
-  enum ColorCode_t 
-    {
-      k5LedGreen   = BIT(0 ),
-      k2LedGreen   = BIT(1 ),
-      k5LedBlue2   = BIT(2 ),      
-      k1LedUV      = BIT(3 ),
-      k2LedUV      = BIT(4 ),
-      k5LedBlue3   = BIT(5 ),
-      k5LedBlue4   = BIT(6 ),
-      k2LedBlue    = BIT(7 ),
-      k01LedBlue   = BIT(8 ),
-      k1LedBlue    = BIT(10),
-      k5LedUV1     = BIT(11),
-      k5LedUV2     = BIT(12),
-      k5LedBlue1   = BIT(13),
-      k1LedGreen   = BIT(14),
-      k01LedGreen  = BIT(15),
-      kCT1Pulser   = BIT(16)
-    };
-
-  if (fPattern & k5LedGreen)
-    number[MCalibrationCam::kGREEN] += 5;
-  if (fPattern & k2LedGreen)
-    number[MCalibrationCam::kGREEN] += 2;
-  if (fPattern & k5LedBlue2)
-    number[MCalibrationCam::kBLUE]  += 2;
-  if (fPattern & k1LedUV)           
-    number[MCalibrationCam::kUV]    += 1;
-  if (fPattern & k2LedUV)           
-    number[MCalibrationCam::kUV]    += 2;
-  if (fPattern & k5LedBlue3)        
-    number[MCalibrationCam::kBLUE]  += 5;
-  if (fPattern & k5LedBlue4)        
-    number[MCalibrationCam::kBLUE]  += 5;
-  if (fPattern & k2LedBlue)         
-    number[MCalibrationCam::kBLUE]  += 2;
-  if (fPattern & k01LedBlue)        
-    number[MCalibrationCam::kBLUE]  += 0.5;
-  if (fPattern & k1LedBlue)         
-    number[MCalibrationCam::kBLUE]  += 1;
-  if (fPattern & k5LedUV1)          
-    number[MCalibrationCam::kUV]    += 5;
-  if (fPattern & k5LedUV2)        
-    number[MCalibrationCam::kUV]    += 5;
-  if (fPattern & k5LedBlue1)        
-    number[MCalibrationCam::kBLUE]  += 5;
-  if (fPattern & k1LedGreen)
-    number[MCalibrationCam::kGREEN] += 1;
-  if (fPattern & k01LedGreen)
-    number[MCalibrationCam::kGREEN] += 0.5;
-  if (fPattern & kCT1Pulser)
-    number[MCalibrationCam::kCT1]   += 1;
-
-  TString result;
-  
-  for (Int_t i=0; i<MCalibrationCam::gkNumPulserColors; i++)
-    {
-      switch (i)
-        {
-        case MCalibrationCam::kGREEN:
-          if (number[i] > 0.1)
-            result = Form("%2.1f%s",number[i],"GREEN");
-          break;
-        case MCalibrationCam::kBLUE:
-          if (number[i] > 0.1)
-            result = Form("%2.1f%s",number[i],"BLUE");
-          break;
-        case MCalibrationCam::kUV:
-          if (number[i] > 0.1)
-            result = Form("%2.1f%s",number[i],"UV");
-          break;
-        case MCalibrationCam::kCT1:
-          if (number[i] > 0.1)
-            result = Form("%2.1f%s",number[i],"CT1");
-          break;
-        }
-    }
-  return result.Data();
-}
+Int_t MCalibCalcFromPast::PostProcess()
+{
+  *fLog << inf << GetDescriptor() 
+        << ": Number of Calibration Cams: " << fNumCam << endl;
+  return kTRUE;
+  
+}
Index: trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h	(revision 5855)
+++ trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h	(revision 5856)
@@ -8,9 +8,9 @@
 class MParList;
 class MGeomCam;
-class MRawEvtHeader;
 class MRawRunHeader;
 class MPedCalcFromLoGain;
 class MCalibrationChargeCalc;
 class MCalibrationRelTimeCalc;
+class MCalibrateData;
 class MCalibrationIntensityChargeCam;
 class MCalibrationIntensityBlindCam;
@@ -23,42 +23,47 @@
 private:
 
-  static const UInt_t fgNumEventsDump;                //! Default for fNumEventsDump
+  static const UInt_t fgNumEventsDump;               //! Default for fNumEventsDump
   
-  MRawEvtHeader                   *fHeader;          //!
-  MRawRunHeader                   *fRunHeader;       //!
-  MGeomCam                        *fGeom;            //!
-  MParList                        *fParList;         //!
-  MCalibrationIntensityChargeCam  *fIntensCharge;    //!
-  MCalibrationIntensityBlindCam   *fIntensBlind;     //!  
-  MCalibrationIntensityQECam      *fIntensQE;        //!
-  MCalibrationIntensityRelTimeCam *fIntensRelTime;   //!
-  MCalibrationIntensityHiLoCam    *fIntensHiLo;      //!
-  MBadPixelsIntensityCam          *fIntensBad;       //!
+  MRawRunHeader                   *fRunHeader;       //! Run Header
+  MGeomCam                        *fGeom;            //! Camera Geometry
+  MParList                        *fParList;         //! Parameter List
+  MCalibrationIntensityChargeCam  *fIntensCharge;    //! Intensity Charge Cam (to be created)
+  MCalibrationIntensityBlindCam   *fIntensBlind;     //! Intensity Blind  Cam (to be created)
+  MCalibrationIntensityQECam      *fIntensQE;        //! Intensity QE     Cam (to be created)
+  MCalibrationIntensityRelTimeCam *fIntensRelTime;   //! Intensity Rel. Time Cam (to be created)
+  MCalibrationIntensityHiLoCam    *fIntensHiLo;      //! Intensity High-Vs.Low Cam (to be created)
+  MBadPixelsIntensityCam          *fIntensBad;       //! Intensity Bad Pixels Cam (to be created)
   
-  MCalibrationChargeCalc          *fChargeCalc;      //!
-  MCalibrationRelTimeCalc         *fRelTimeCalc;     //!
+  MCalibrationChargeCalc          *fChargeCalc;      //! Charge Calibration Task
+  MCalibrationRelTimeCalc         *fRelTimeCalc;     //! Rel. Times Calibratio Task
+  MCalibrateData                  *fCalibrate;       //! Data Calibration Task
                                                      
   UInt_t fNumEventsDump;       // Number of event after which the MCalibrationCams gets updated
-  UInt_t fPattern;             // Calibration bit pattern from digital modules
+  UInt_t fNumEvents;           //! Event counter only for calibration events
+  UInt_t fNumCam;              //! Number of currently used Calibration Cam
   
   Int_t  PreProcess(MParList *pList);
   Int_t  Process();
-  
+  Int_t  PostProcess();  
+
   Bool_t ReInitialize();
   Bool_t Finalize(const char* name);
-  const char* GetNamePattern();
-  
+
 public:
 
-    MCalibCalcFromPast(const char *name=NULL, const char *title=NULL);
-    ~MCalibCalcFromPast() {}
+  MCalibCalcFromPast(const char *name=NULL, const char *title=NULL);
+  ~MCalibCalcFromPast() {}
+  
+  UInt_t GetNumEventsDump() const   {  return fNumEventsDump;   }
+  
+  void SetNumEventsDump( const UInt_t i=fgNumEventsDump )   { fNumEventsDump = i; }
+  
+  void SetCalibrate    ( MCalibrateData          *c )  { fCalibrate   = c; }
+  void SetChargeCalc   ( MCalibrationChargeCalc  *c )  { fChargeCalc  = c; }
+  void SetRelTimeCalc  ( MCalibrationRelTimeCalc *c )  { fRelTimeCalc = c; }
+  
+  ClassDef(MCalibCalcFromPast, 1) // Task to steer the processing of interlace calibration events
+};
 
-    UInt_t GetNumEventsDump() const   {  return fNumEventsDump;   }
-
-    void SetNumEventsDump( const UInt_t i=fgNumEventsDump )   { fNumEventsDump = i; }
-
-    ClassDef(MCalibCalcFromPast, 1) // Task to steer the processing of interlace calibration events
-};
-    
 #endif
 
