Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 5677)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 5678)
@@ -21,4 +21,10 @@
                                                  -*-*- END OF LINE -*-*-
 
+
+ 2004/12/22 Markus Gaug
+
+    * mraw/MRawEvtHeader.[h,cc]
+      - added some new Getter-functions for the calibration conf. 
+        pattern
 
  2004/12/22 Eva Domingo
Index: /trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h	(revision 5677)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibColorSteer.h	(revision 5678)
@@ -17,4 +17,5 @@
 class MCalibrationIntensityRelTimeCam;
 class MBadPixelsIntensityCam;
+class MBadPixelsCam;
 class MCalibColorSteer : public MTask
 {
@@ -30,4 +31,5 @@
   MCalibrationIntensityRelTimeCam *fIntensRelTime;   //!
   MBadPixelsIntensityCam          *fIntensBad;       //!
+  MBadPixelsCam                   *fBad;             //!
   
   MCalibrationChargeCalc          *fChargeCalc;      //!
@@ -41,5 +43,5 @@
   Bool_t ReInitialize();
   Bool_t Finalize(const char* name);
-  const char* GetNamePattern();
+  TString GetNamePattern();
   
 public:
Index: /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.cc	(revision 5677)
+++ /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.cc	(revision 5678)
@@ -80,9 +80,19 @@
 // between the last and this event. 
 //
-// UInt_t  fTrigPattern[2]
+// UInt_t  fTrigPattern[0]
 // -----------------------
 // Trigger Pattern used for this event
 // Each event triggers for a particular configuration and each  
 // configuration should have an ID (which is not fixed yet).
+//
+// UInt_t  fCalibPattern == fTrigPattern[1]  
+// -----------------------
+// Calibration Pattern used for this event
+// Each (calibration) event uses a particular LEDs configuration and 
+// particular strength and colour of the continunous light.
+// Bits 1-16: Pulser slot pattern: 16 LEDs slots.
+// Bits 17: CT1 Pulser
+// Bits 21-24: Colour of Continous light source:
+// Bits 25-32: Strength of continuous light source: 256 level
 //
 // UShort_t fAllLowGainOn
@@ -91,19 +101,4 @@
 // This is a Byte (8 bit) to indicated if any of the pixels 
 // have a non-negligible low gain (1) or not (0)
-//
-// UInt_t fCalibPattern
-// --------------------
-//
-// Bits 1-16: Pulser slot pattern: 16 LEDs slots (see Diploma Thesis
-// of Michele)
-//
-// Bits 17-24: Power of Continous light source: 256 level
-//
-// Bits 25-28: Farbe der Continuous Light: red-amber-green/blue-uv
-//
-// Bit 29: Calibration trigger On/off
-// Bit 30: Pedestal trigger on/off
-// Bit 31: PIN Diode calibration trigger on/off
-//
 //
 // Class Version 2:
@@ -221,4 +216,7 @@
     case 2:
         *fLog << "Calibration";
+        break;
+    case 3:
+        *fLog << "PinDiode";
         break;
     }
@@ -409,13 +407,4 @@
     return fTrigPattern[1];
 }
-/*
-// --------------------------------------------------------------------------
-//
-// return pulser slot patter, see class reference
-//
-UShort_t MRawEvtHeader::GetPulserSlotPattern() const
-{
-    return fTrigPattern[1] & 0xffff;
-}
 
 // --------------------------------------------------------------------------
@@ -423,16 +412,113 @@
 // return power of continous light, see class reference
 //
-Byte_t MRawEvtHeader::GetPowerOfContLight() const
-{
-    return (fTrigPattern[1]<<16) & 0xff;
-}
-
-// --------------------------------------------------------------------------
-//
-// return color of continous light, see class reference
-//
-MRawEvtHeader::CalibCol_t MRawEvtHeader::GetContLedColor() const
-{
-    return (CalibCol_t)((fTrigPattern[1]<<24)&0xf);
-}
-*/
+UShort_t MRawEvtHeader::GetPowerOfContLight() const
+{
+  return fTrigPattern[1] & 0xff;
+}
+
+// --------------------------------------------------------------------------
+//
+// return pulser slot patter as a 17-bit-field
+//
+UInt_t MRawEvtHeader::GetPulserSlotPattern() const
+{
+  return (fTrigPattern[1] >> 16) & 0x1ffff;
+}
+
+// --------------------------------------------------------------------------
+//
+// return colour of the pulsed light as an MCalibrationCam::PulserColor_t
+// ATTENTION: In case of mulitple colours, kNONE is returned
+//
+const MCalibrationCam::PulserColor_t MRawEvtHeader::GetPulserColor() const 
+{
+
+  const UInt_t pattern = GetPulserSlotPattern();
+  
+  if ((pattern & kGreenAndBlue) || (pattern & kBlueAndUV) || (pattern & kGreenAndUV))
+    return MCalibrationCam::kNONE;
+
+  if (pattern & kCT1Pulser)
+    return MCalibrationCam::kCT1;
+  if (pattern & kAnyUV)
+    return MCalibrationCam::kUV;
+  if (pattern & kAnyGreen)
+    return MCalibrationCam::kGREEN;
+  if (pattern & kAnyBlue)
+    return MCalibrationCam::kBLUE;
+
+  return MCalibrationCam::kNONE;
+}
+
+
+// --------------------------------------------------------------------------
+//
+// return strength of the pulsed light
+// ATTENTION: In case of mulitple colours, kNONE is returned
+// 
+Float_t MRawEvtHeader::GetPulserStrength() const 
+{
+
+  const MCalibrationCam::PulserColor_t col = GetPulserColor();
+  const UInt_t pattern = GetPulserSlotPattern();
+
+  Float_t strength = 0.;
+
+  switch (col)
+    {
+    case MCalibrationCam::kNONE:
+      break;
+    case MCalibrationCam::kGREEN:
+        if (pattern & kSlot1Green)
+          strength += 5.;
+        if (pattern & kSlot2Green)
+          strength += 2.;
+        if (pattern & kSlot15Green)
+          strength += 1.;
+        if (pattern & kSlot16AttGreen)
+          strength += 0.2;
+      break;      
+    case MCalibrationCam::kBLUE:
+        if (pattern & kSlot3Blue)
+          strength += 5.;
+        if (pattern & kSlot6Blue)
+          strength += 5.;
+        if (pattern & kSlot7Blue)
+          strength += 5.;
+        if (pattern & kSlot8Blue)
+          strength += 2.;
+        if (pattern & kSlot9AttBlue)
+          strength += 0.2;
+        if (pattern & kSlot10Blue)
+          strength += 0.;
+        if (pattern & kSlot11Blue)
+          strength += 1.;
+        if (pattern & kSlot14Blue)
+          strength += 5.;
+      break;      
+    case MCalibrationCam::kUV:
+        if (pattern & kSlot4UV)
+          strength += 1.;
+        if (pattern & kSlot5UV)
+          strength += 2.;
+        if (pattern & kSlot12UV)
+          strength += 5.;
+        if (pattern & kSlot13UV)
+          strength += 5.;
+      break;      
+    case MCalibrationCam::kCT1:
+      strength = 20.;
+      break;      
+    }
+  
+  return strength;
+}
+
+// --------------------------------------------------------------------------
+//
+// return color of continous light
+//
+MRawEvtHeader::CLColor_t MRawEvtHeader::GetContLightColor() const
+{
+  return (CLColor_t)((fTrigPattern[1]>>8)&0xf);
+}
Index: /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.h	(revision 5677)
+++ /trunk/MagicSoft/Mars/mraw/MRawEvtHeader.h	(revision 5678)
@@ -4,4 +4,8 @@
 #ifndef MARS_MParContainer
 #include "MParContainer.h"
+#endif
+
+#ifndef MARS_MCalibrationCam
+#include "MCalibrationCam.h"
 #endif
 
@@ -23,15 +27,56 @@
         kTTEvent       = 0,
         kTTPedestal    = 1,
-        kTTCalibration = 2
+        kTTCalibration = 2,
+        kTTPinDiode    = 3
     };
-/*
-    enum CalibCol_t {
-        kColRed   = BIT(0),
-        kColAmber = BIT(1),
-        kColGreen = BIT(2),
-        kColBlue  = BIT(3),
-        kColUV    = BIT(4)
-    };
- */
+
+    enum CLColor_t 
+      {
+        kCLUV       = BIT(0),
+        kCLGreen    = BIT(1),
+        kCLAmber    = BIT(2),
+        kCLRed      = BIT(3),
+        kCLRedAmber   = kCLRed & kCLAmber,
+        kCLRedGreen   = kCLRed & kCLGreen,
+        kCLRedUV      = kCLRed & kCLUV   ,
+        kCLAmberGreen = kCLAmber & kCLGreen,
+        kCLAmberUV    = kCLAmber & kCLUV   ,
+        kCLGreenUV    = kCLGreen & kCLUV   ,
+        kCLRedAmberGreen = kCLRedAmber & kCLGreen,
+        kCLRedGreenUV    = kCLRedGreen & kCLUV,
+        kCLAmberGreenUV  = kCLAmberGreen & kCLUV,
+        kCLAll           = kCLRedAmberGreen & kCLUV
+      };
+    
+    enum PulserColorCode_t 
+      {
+        kSlot1Green     = BIT(0),
+        kSlot2Green     = BIT(1),
+        kSlot3Blue      = BIT(2),
+        kSlot4UV        = BIT(3),
+        kSlot5UV        = BIT(4),
+        kSlot6Blue      = BIT(5),
+        kSlot7Blue      = BIT(6),
+        kSlot8Blue      = BIT(7),
+        kSlot9AttBlue   = BIT(8),
+        kSlot10Blue     = BIT(9),
+        kSlot11Blue     = BIT(10),
+        kSlot12UV       = BIT(11),
+        kSlot13UV       = BIT(12),
+        kSlot14Blue     = BIT(13),
+        kSlot15Green    = BIT(14),
+        kSlot16AttGreen = BIT(15),
+        kCT1Pulser      = BIT(16),
+        kAnyGreen       = kSlot1Green  | kSlot2Green | kSlot15Green | kSlot16AttGreen,
+        kAnyUV          = kSlot4UV     | kSlot5UV    | kSlot12UV    | kSlot13UV,
+        kAnyBlue        = kSlot3Blue   | kSlot6Blue  | kSlot7Blue   | kSlot8Blue 
+                        | kSlot9AttBlue| kSlot10Blue | kSlot11Blue  | kSlot14Blue, 
+        kGreenAndBlue   = kAnyGreen & kAnyBlue,
+        kBlueAndUV      = kAnyBlue  & kAnyUV,
+        kGreenAndUV     = kAnyGreen & kAnyUV,
+        kIFAEPulser     = kAnyGreen | kAnyBlue | kAnyUV,
+        kAny            = kAnyGreen | kAnyBlue | kAnyUV | kCT1Pulser
+      };
+
 private:
     MTime   *fTime;            //! object to store the time in (ReadEvt)
@@ -76,10 +121,13 @@
     UInt_t     GetCalibrationPattern() const;
 
-    void       SetCalibrationPattern(UInt_t pat) { fTrigPattern[1] = pat; } // USE THIS FUNCTION WITH EXTREME CARE -- IT IS A WORKAROUND!
-/*
-    UShort_t   GetPulserSlotPattern() const;
-    Byte_t     GetPowerOfContLight() const;
-    CalibCol_t GetContLedColor() const;
- */
+    void       SetCalibrationPattern(UInt_t pat) { fTrigPattern[1] += (pat << 16); } // USE THIS FUNCTION WITH EXTREME CARE -- IT IS A WORKAROUND!
+
+    UShort_t   GetPowerOfContLight() const;
+    UInt_t     GetPulserSlotPattern() const;
+    const MCalibrationCam::PulserColor_t GetPulserColor() const;
+    Float_t    GetPulserStrength() const;
+    
+    CLColor_t  GetContLightColor() const;
+    
     Int_t ReadEvt(istream& fin, UShort_t ver);
     void  SkipEvt(istream& fin, UShort_t ver);
