Index: trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.cc	(revision 6963)
@@ -46,5 +46,6 @@
 
 #include "MParList.h"
-#include "MTaskList.h"
+
+#include "MRawRunHeader.h"
 
 #include "MHCalibrationCam.h"
@@ -61,6 +62,4 @@
 #include "MCalibrateData.h"
 
-#include "MGeomCam.h"
-
 ClassImp(MCalibCalcFromPast);
 
@@ -68,4 +67,5 @@
 
 const UInt_t MCalibCalcFromPast::fgNumEventsDump = 500;
+
 // --------------------------------------------------------------------------
 //
@@ -76,5 +76,5 @@
 //
 MCalibCalcFromPast::MCalibCalcFromPast(const char *name, const char *title)
-    : fGeom(NULL), fParList(NULL), 
+    : fGeom(NULL), fParList(NULL), fRunHeader(NULL),
       fIntensCharge(NULL), fIntensBlind(NULL), fIntensRelTime(NULL), fIntensBad(NULL),
       fChargeCalc(NULL), fRelTimeCalc(NULL), fCalibrate(NULL),
@@ -90,7 +90,4 @@
 // -----------------------------------------------------------------------------------
 //
-// The following container are searched for and execution aborted if not in MParList:
-//  - MTaskList
-//
 Int_t MCalibCalcFromPast::PreProcess(MParList *pList)
 {
@@ -109,4 +106,11 @@
       return kFALSE;
     }
+
+  fRunHeader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
+  if (!fRunHeader)
+  {
+      *fLog << err << "MRawRunHeader not found... abort." << endl;
+      return kFALSE;
+  }
 
   // 
@@ -285,4 +289,6 @@
   *fLog << inf << "MCalibCalcFromPast::ReInitialize #" << fNumCam << " ";
 
+  const Int_t runnumber = fRunHeader->GetRunNumber();
+
   if (fIntensBad)
     {
@@ -294,4 +300,5 @@
     {
       fIntensCharge->AddToList(Form("MCalibrationChargeCam%04d",fNumCam),*fGeom);
+      fIntensCharge->GetCam()->SetRunNumber(runnumber);
       *fLog << "MCalibrationChargeCam...";
     }
@@ -299,4 +306,5 @@
     {
       fIntensQE->AddToList(Form("MCalibrationQECam%04d",fNumCam),*fGeom);
+      fIntensQE->GetCam()->SetRunNumber(runnumber);
       *fLog << "MCalibrationQECam...";
     }
@@ -304,4 +312,5 @@
     {
       fIntensBlind->AddToList(Form("MCalibrationBlindCam%04d",fNumCam),*fGeom);
+      fIntensBlind->GetCam()->SetRunNumber(runnumber);
       *fLog << "MCalibrationBlindCam...";
     }
Index: trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibCalcFromPast.h	(revision 6963)
@@ -8,4 +8,5 @@
 class MParList;
 class MGeomCam;
+class MRawRunHeader;
 class MPedCalcFromLoGain;
 class MCalibrationChargeCalc;
@@ -17,4 +18,5 @@
 class MCalibrationIntensityRelTimeCam;
 class MBadPixelsIntensityCam;
+
 class MCalibCalcFromPast : public MTask
 {
@@ -25,4 +27,5 @@
   MGeomCam                        *fGeom;            //! Camera Geometry
   MParList                        *fParList;         //! Parameter List
+  MRawRunHeader                   *fRunHeader;       //! Run header storing the run number
   MCalibrationIntensityChargeCam  *fIntensCharge;    //! Intensity Charge Cam (to be created)
   MCalibrationIntensityBlindCam   *fIntensBlind;     //! Intensity Blind  Cam (to be created)
Index: trunk/MagicSoft/Mars/mcalib/MCalibColorSet.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibColorSet.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibColorSet.cc	(revision 6963)
@@ -445,5 +445,5 @@
 	      break;
 	    case 2: 
-	      fStrength = 5.;
+	      fStrength = 5.1;
 	      break;
 	    case 3: 
@@ -454,8 +454,8 @@
 	      break;
 	    case 5: 
-	      fStrength = 5.;
+	      fStrength = 5.2;
 	      break;
 	    case 6: 
-	      fStrength = 5.;
+	      fStrength = 5.4;
 	      break;
 	    case 7: 
@@ -472,11 +472,11 @@
 	      break;
 	    case 11: 
-	      fStrength = 5.;
+	      fStrength = 5.8;
 	      break;
 	    case 12: 
-	      fStrength = 5.;
+	      fStrength = 5.1;
 	      break;
 	    case 13: 
-	      fStrength = 5.;
+	      fStrength = 5.2;
 	      break;
 	    case 14: 
Index: trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.cc	(revision 6963)
@@ -51,5 +51,5 @@
 
 #include "MHCalibrationCam.h"
-#include "MCalibrationCam.h"
+#include "MCalibrationChargeCam.h"
 #include "MCalibrationBlindCam.h"
 
@@ -61,9 +61,9 @@
 #include "MBadPixelsIntensityCam.h"
 
+#include "MCalibrationChargeCam.h"
 #include "MCalibrationChargeCalc.h"
 #include "MCalibrationRelTimeCalc.h"
 
 #include "MRawRunHeader.h"
-#include "MRawEvtHeader.h"
 #include "MCalibrationPattern.h"
 
@@ -81,5 +81,5 @@
     : fCalibPattern(NULL), fGeom(NULL), fParList(NULL), 
       fIntensCharge(NULL), fIntensRelTime(NULL), fIntensBad(NULL),
-      fBad(NULL), fChargeCalc(NULL), fRelTimeCalc(NULL), fPattern(0)
+      fBad(NULL), fChargeCalc(NULL), fRelTimeCalc(NULL)
 {
 
@@ -109,11 +109,4 @@
     {
       *fLog << err << "MRawRunHeader not found... abort." << endl;
-      return kFALSE;
-    }
-
-  fEvtHeader = (MRawEvtHeader*)pList->FindObject("MRawEvtHeader");
-  if (!fEvtHeader)
-    {
-      *fLog << err << "MRawEvtHeader not found... abort." << endl;
       return kFALSE;
     }
@@ -228,4 +221,7 @@
       }
   }
+  
+  fColor = MCalibrationCam::kNONE;
+  fStrength = 0.;
       
   return kTRUE;
@@ -241,20 +237,26 @@
 {
 
-  const UInt_t pattern = fEvtHeader->GetPulserSlotPattern();
-
-  if (fPattern == 0)
-    {
-      fPattern = pattern;
+  const MCalibrationCam::PulserColor_t col = fCalibPattern->GetPulserColor();
+  const Float_t strength                   = fCalibPattern->GetPulserStrength();
+
+  if (fColor ==MCalibrationCam::kNONE)
+    {
+      fColor = col;
+      fStrength = strength;
       return kTRUE;
     }
 
-  if (pattern == 0 || pattern == fPattern)
+  const Float_t strdiff = TMath::Abs(fStrength-strength);
+
+  if (col  == MCalibrationCam::kNONE || (col == fColor && strdiff < 0.05))
     return kTRUE;
 
-  *fLog << inf << GetDescriptor() << " : old pattern: " << fPattern << flush;
-
-  fPattern = pattern;
-  
-  *fLog << " : new pattern: " << pattern << flush;
+  *fLog << inf << GetDescriptor() << " : Color - old=" << fColor << flush;
+  fColor = col;
+  *fLog << " / new=" << fColor << endl;
+
+  *fLog << inf << GetDescriptor() << " : Strength - old=" << fStrength << flush;
+  fStrength = strength;
+  *fLog << " / new=" << fStrength << endl;
 
   //
@@ -325,7 +327,10 @@
   if (fIntensCharge)
     {
+      MCalibrationChargeCam *oldcam = (MCalibrationChargeCam*)fIntensCharge->GetCam();
       fIntensCharge->AddToList(Form("MCalibrationChargeCam%s",namep.Data()),*fGeom);
-      MCalibrationCam *cam = fIntensCharge->GetCam();
+      MCalibrationChargeCam *cam    = (MCalibrationChargeCam*)fIntensCharge->GetCam();
       cam->SetPulserColor(fCalibPattern->GetPulserColor());
+      if (!cam->CopyHiLoConversionFactors(*oldcam))
+        return kFALSE;
       *fLog << inf << "New MCalibrationChargeCam with name: " << cam->GetName() << endl;
     }
Index: trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h	(revision 6963)
@@ -6,9 +6,13 @@
 #endif
 
+#ifndef MARS_MCalibrationCam
+#include "MCalibrationCam.h"
+#endif
+
+
 class MParList;
 class MGeomCam;
 class MCalibrationPattern;
 class MRawRunHeader;
-class MRawEvtHeader;
 class MCalibrationChargeCalc;
 class MCalibrationRelTimeCalc;
@@ -19,4 +23,5 @@
 class MBadPixelsIntensityCam;
 class MBadPixelsCam;
+
 class MCalibColorSteer : public MTask
 {
@@ -25,5 +30,4 @@
 
   MCalibrationPattern             *fCalibPattern;    //!
-  MRawEvtHeader                   *fEvtHeader;       //!
   MRawRunHeader                   *fRunHeader;       //!
   MGeomCam                        *fGeom;            //!
@@ -39,5 +43,6 @@
   MCalibrationRelTimeCalc         *fRelTimeCalc;     //!
                                                      
-  UInt_t fPattern;                                   
+  MCalibrationCam::PulserColor_t   fColor;
+  Float_t                          fStrength;
   
   Int_t  PreProcess(MParList *pList);
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 6963)
@@ -42,4 +42,10 @@
 //                    per camera SECTOR. Is created automatically.
 //
+// Previous Class Versions haven't been commented by the author!
+//
+// Class Version 6:
+// ----------------
+//  + added fRunNumber
+//
 // All TOrdCollections have to enlarged by the corresponding calls to (e.g. in MGeomApply): 
 // - InitSize()
@@ -68,4 +74,5 @@
 
 const Int_t MCalibrationCam::gkNumPulserColors = 4;
+
 // --------------------------------------------------------------------------
 //
@@ -91,5 +98,5 @@
 //
 MCalibrationCam::MCalibrationCam(const char *name, const char *title)
-    : fPulserColor(kNONE)
+    : fRunNumber(-1), fPulserColor(kNONE)
 {
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 6963)
@@ -21,4 +21,5 @@
 class MBadPixelsCam;
 class MGeomCam;
+
 class MCalibrationCam : public MParContainer, public MCamEvent
 {
@@ -42,5 +43,6 @@
   TArrayF fNumLoGainFADCSlices;      // Number Low -Gain FADC slices used by extractor
   
-  PulserColor_t fPulserColor;        // Colour of the pulsed LEDs
+  Int_t          fRunNumber;         // Store run number for interlaced calib. events
+  PulserColor_t  fPulserColor;        // Colour of the pulsed LEDs
 
   TOrdCollection *fPixels;            //-> Array of MCalibrationPix, one per pixel
@@ -86,4 +88,5 @@
 	                                          Int_t type=0       ) const;
   const PulserColor_t    GetPulserColor         ()                     const { return fPulserColor; }
+  const Int_t            GetRunNumer            ()                     const { return fRunNumber;   }
   const Int_t            GetSize                ()                     const;
 
@@ -100,7 +103,8 @@
   void  SetNumUnsuitable       ( const UInt_t i,  const Int_t aidx   );  
   void  SetNumUnreliable       ( const UInt_t i,  const Int_t aidx   ); 
-  virtual void  SetPulserColor( const PulserColor_t col=kCT1 )  { fPulserColor = col; }
-  
-  ClassDef(MCalibrationCam, 5)	// Base class Container for Calibration Results Camera
+  virtual void  SetPulserColor ( const PulserColor_t col=kCT1 )  { fPulserColor = col; }
+  void  SetRunNumber           ( const Int_t run              )  { fRunNumber   = run; }
+   
+  ClassDef(MCalibrationCam, 6)	// Base class Container for Calibration Results Camera
 };
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 6963)
@@ -250,4 +250,26 @@
 // --------------------------------------------------------------------------
 //
+// Copy High-gain vs. low-gain conversion factors from cam to this.
+//
+Bool_t MCalibrationChargeCam::CopyHiLoConversionFactors(const MCalibrationChargeCam &cam) const
+{
+
+  if (GetSize() != cam.GetSize())
+    {
+      *fLog << warn << "Sizes mismatch! Cannot merge high-gain vs. low-gain convertion factors" << endl;
+      return kFALSE;
+    }
+
+  for (Int_t i=0; i<GetSize(); i++)
+    {
+      ((MCalibrationChargePix&)(*this)[i]).SetConversionHiLo   (((MCalibrationChargePix&)cam[i]).GetConversionHiLo());
+      ((MCalibrationChargePix&)(*this)[i]).SetConversionHiLoErr(((MCalibrationChargePix&)cam[i]).GetConversionHiLoErr());
+    }
+
+  return kTRUE;
+}
+
+// --------------------------------------------------------------------------
+//
 // Print first the well fitted pixels 
 // and then the ones which are not FitValid
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 6963)
@@ -58,4 +58,6 @@
   TArrayF GetAveragedArrivalTimeRmsPerSector (const MGeomCam &geom,
                                               const UInt_t sec=0, MBadPixelsCam *bad=NULL);
+
+  Bool_t CopyHiLoConversionFactors(const MCalibrationChargeCam &cam) const;
   
   // Prints
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc	(revision 6932)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimeCalc.cc	(revision 6963)
@@ -208,5 +208,5 @@
 
   if (GetNumExecutions()==0)
-    return kFALSE;
+    return kTRUE;
 
   return Finalize();
