Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5850)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5851)
@@ -20,4 +20,10 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2005/01/16 Markus Gaug
+
+  * mhcalib/MHCalibrationCam.[h,cc]
+    - finished event type recognition and rejection. Only used if 
+      SetInterlaced() is set. 
 
  2005/01/14 Hendrik Bartko
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 5850)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.cc	(revision 5851)
@@ -81,5 +81,5 @@
 
 #include "MRawRunHeader.h"
-#include "MRawEvtHeader.h"
+#include "MTriggerPattern.h"
 
 ClassImp(MHCalibrationCam);
@@ -121,5 +121,6 @@
        fColor(MCalibrationCam::kNONE), fIntensBad(NULL),
        fBadPixels(NULL), fIntensCam(NULL), fCam(NULL), fGeom(NULL), 
-       fRunHeader(NULL), fEvtHeader(NULL)
+       fRunHeader(NULL), fTrigPattern(NULL), fInterlacedFlags(0), 
+       fMaskInterlaced(0)
 {
 
@@ -514,15 +515,20 @@
   }
 
-  fEvtHeader = (MRawEvtHeader*)pList->FindObject("MRawEvtHeader");
-  if (!fEvtHeader)
-  {
-    if (IsInterlaced())
-      {
-        *fLog << err << GetDescriptor() 
-              << ": MRawEvtHeader not found... Cannot run interlaced calibration events." << endl;
-        return kFALSE;
-      }
-  }
-
+  if (IsInterlaced())
+    {
+      fTrigPattern = (MTriggerPattern*)pList->FindObject("MTriggerPattern");
+      if (!fTrigPattern)
+        {
+          *fLog << err << "MTriggerPattern not found... abort." << endl;
+          return kFALSE;
+        }
+      if (IsInterlacedTypePed())
+        fMaskInterlaced |= MTriggerPattern::kPedestal;
+      if (IsInterlacedTypeCal())
+        fMaskInterlaced |= MTriggerPattern::kCalibration;
+      if (IsInterlacedTypePin())
+        fMaskInterlaced |= MTriggerPattern::kPinDiode;
+    }
+  
   return SetupHists(pList);
 }
@@ -858,5 +864,6 @@
 
   if (IsInterlaced())
-    if (!(fEvtHeader->GetTriggerID() & BIT(1)))
+    // check whether one of the bits in fMaskInterlaced is set in the trigger pattern
+    if (!(fTrigPattern->GetPrescaled() & fMaskInterlaced))
       return kTRUE;
 
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 5850)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationCam.h	(revision 5851)
@@ -29,5 +29,5 @@
 class MGeomCam;
 class MRawRunHeader;
-class MRawEvtHeader;
+class MTriggerPattern;
 class MCalibrationIntensityCam;
 class MCalibrationCam;
@@ -52,53 +52,63 @@
 protected:
 
-  Int_t   fNbins;                        // Number of bins        
-  Axis_t  fFirst;                        // Lower histogram limit 
-  Axis_t  fLast;                         // Upper histogram limit 
-
-  Float_t fProbLimit;                    // Limit for acceptance of probability of Gauss-Fit
-  
-  TString fHistName;                     //! Histogram names
-  TString fHistTitle;                    //! Histogram titles
-  TString fHistXTitle;                   //! Histogram x-axis titles
-  TString fHistYTitle;                   //! Histogram y-axis titles
-  
-  Float_t fNumHiGainSaturationLimit;     // Rel. amount sat. higain FADC slices until pixel is called saturated
-  Float_t fNumLoGainSaturationLimit;     // Rel. amount sat. logain FADC slices until pixel is called saturated
-
-  MArrayI fRunNumbers;                   // Numbers of runs used
-
-  MArrayF fAverageAreaRelSigma;          // Re-normalized relative sigmas in average pixels per area
-  MArrayF fAverageAreaRelSigmaVar;       // Variance Re-normalized relative sigmas in average pixels per area
-  MArrayI fAverageAreaSat;               // Number of saturated slices in average pixels per area
-  MArrayF fAverageAreaSigma;             // Re-normalized sigmas in average pixels per area
-  MArrayF fAverageAreaSigmaVar;          // Variance Re-normalized sigmas in average pixels per area
-  MArrayI fAverageAreaNum;               // Number of pixels in average pixels per area
-  MArrayI fAverageSectorNum;             // Number of pixels in average pixels per sector
-
-  TOrdCollection *fAverageHiGainAreas;   // Array of calibration pixels, one per pixel area
-  TOrdCollection *fAverageHiGainSectors; // Array of calibration pixels, one per camera sector
-  TOrdCollection *fAverageLoGainAreas;   // Array of calibration pixels, one per pixel area
-  TOrdCollection *fAverageLoGainSectors; // Array of calibration pixels, one per camera sector
-
-  MCalibrationCam::PulserColor_t fColor; // Colour of the pulsed LEDs
-
-  MBadPixelsIntensityCam *fIntensBad;    //! Bad Pixels intensity calibration storage container  
-  MBadPixelsCam    *fBadPixels;          //! Bad Pixels storage container
-  MCalibrationIntensityCam *fIntensCam;  //! Intensity Calibration Cam with the results
-  MCalibrationCam  *fCam;                //! Calibration Cam with the results
-  MGeomCam         *fGeom;               //! Camera geometry
-  MRawRunHeader    *fRunHeader;          //! Run Header
-  MRawEvtHeader    *fEvtHeader;          //! Evt Header
-  
-  TOrdCollection *fHiGainArray;          // Array of calibration pixels, one per pixel
-  TOrdCollection *fLoGainArray;          // Array of calibration pixels, one per pixel
-
-  Int_t      fPulserFrequency;           // Light pulser frequency
+  Int_t   fNbins;                         // Number of bins        
+  Axis_t  fFirst;                         // Lower histogram limit 
+  Axis_t  fLast;                          // Upper histogram limit 
+ 
+  Float_t fProbLimit;                     // Limit for acceptance of probability of Gauss-Fit
+  
+  TString fHistName;                      //! Histogram names
+  TString fHistTitle;                     //! Histogram titles
+  TString fHistXTitle;                    //! Histogram x-axis titles
+  TString fHistYTitle;                    //! Histogram y-axis titles
+  
+  Float_t fNumHiGainSaturationLimit;      // Rel. amount sat. higain FADC slices until pixel is called saturated 
+  Float_t fNumLoGainSaturationLimit;      // Rel. amount sat. logain FADC slices until pixel is called saturated
+
+  MArrayI fRunNumbers;                    // Numbers of runs used
+
+  MArrayF fAverageAreaRelSigma;           // Re-normalized relative sigmas in average pixels per area
+  MArrayF fAverageAreaRelSigmaVar;        // Variance Re-normalized relative sigmas in average pixels per area 
+  MArrayI fAverageAreaSat;                // Number of saturated slices in average pixels per area
+  MArrayF fAverageAreaSigma;              // Re-normalized sigmas in average pixels per area
+  MArrayF fAverageAreaSigmaVar;           // Variance Re-normalized sigmas in average pixels per area
+  MArrayI fAverageAreaNum;                // Number of pixels in average pixels per area
+  MArrayI fAverageSectorNum;              // Number of pixels in average pixels per sector
+
+  TOrdCollection *fAverageHiGainAreas;    // Array of calibration pixels, one per pixel area
+  TOrdCollection *fAverageHiGainSectors;  // Array of calibration pixels, one per camera sector
+  TOrdCollection *fAverageLoGainAreas;    // Array of calibration pixels, one per pixel area
+  TOrdCollection *fAverageLoGainSectors;  // Array of calibration pixels, one per camera sector
+
+  MCalibrationCam::PulserColor_t fColor;  // Colour of the pulsed LEDs
+
+  MBadPixelsIntensityCam *fIntensBad;     //! Bad Pixels intensity calibration storage container  
+  MBadPixelsCam    *fBadPixels;           //! Bad Pixels storage container
+  MCalibrationIntensityCam *fIntensCam;   //! Intensity Calibration Cam with the results
+  MCalibrationCam  *fCam;                 //! Calibration Cam with the results
+  MGeomCam         *fGeom;                //! Camera geometry
+  MRawRunHeader    *fRunHeader;           //! Run Header
+  MTriggerPattern  *fTrigPattern;         //! Trigger Pattern
+  
+  TOrdCollection *fHiGainArray;           // Array of calibration pixels, one per pixel
+  TOrdCollection *fLoGainArray;           // Array of calibration pixels, one per pixel
+
+  Int_t  fPulserFrequency;                // Light pulser frequency
 
   enum { kDebug, kLoGain, kAverageing,
          kOscillations, kSizeCheck,
-         kInterlaced };                  // Possible flags
-  
-  Byte_t     fFlags;                     // Bit-field to hold the flags
+         kInterlaced  };                  // Possible global flags
+   
+  Byte_t  fFlags;                         // Bit-field to hold the global flags
+  
+  enum InterlacedMode_t
+    {
+      kInterlacedPed = BIT(0),
+      kInterlacedCal = BIT(1),
+      kInterlacedPin = BIT(2)
+    };                                    // Possible interlaced event types to be treated
+
+  Byte_t  fInterlacedFlags;               // Bit-field to hold the interlaced flags
+  Byte_t  fMaskInterlaced;                // Mask to define the interlaced event types
   
   virtual Bool_t SetupHists ( const MParList *pList ) { return kTRUE; }
@@ -148,8 +158,12 @@
   Bool_t IsSizeCheck   () const  { return TESTBIT(fFlags,kSizeCheck);    }
   Bool_t IsInterlaced  () const  { return TESTBIT(fFlags,kInterlaced);   }
-  
-  void   Remove(TOrdCollection *col);
-  
-  Int_t ReadEnv        ( const TEnv &env, TString prefix, Bool_t print);
+
+  Bool_t IsInterlacedTypePed() const { return TESTBIT(fInterlacedFlags,kInterlacedPed); }
+  Bool_t IsInterlacedTypeCal() const { return TESTBIT(fInterlacedFlags,kInterlacedCal); }
+  Bool_t IsInterlacedTypePin() const { return TESTBIT(fInterlacedFlags,kInterlacedPin); }
+  
+  void   Remove  ( TOrdCollection *col );
+  
+  Int_t  ReadEnv ( const TEnv &env, TString prefix, Bool_t print );
 
 public:
@@ -164,5 +178,5 @@
 
   virtual void ResetHists();
-  
+
   // Draw
   void   Draw(const Option_t *opt);
@@ -211,4 +225,9 @@
 								? SETBIT(fFlags,kInterlaced) 
 								: CLRBIT(fFlags,kInterlaced); }
+
+  void SetInterlacedTypePed() { SETBIT(fInterlacedFlags,kInterlacedPed); }
+  void SetInterlacedTypeCal() { SETBIT(fInterlacedFlags,kInterlacedCal); }
+  void SetInterlacedTypePin() { SETBIT(fInterlacedFlags,kInterlacedPin); }
+
   void SetHistName  ( const char *name )  { fHistName  = name;  }
   void SetHistTitle ( const char *name )  { fHistTitle = name;  }
@@ -226,5 +245,5 @@
   void SetPulserFrequency         ( const Int_t f=fgPulserFrequency) { fPulserFrequency = f;     }
   
-  ClassDef(MHCalibrationCam, 2)	// Base Histogram class for Calibration Camera
+  ClassDef(MHCalibrationCam, 3)	// Base Histogram class for Calibration Camera
 };
 
