Index: trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.cc	(revision 3794)
+++ trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.cc	(revision 3795)
@@ -68,5 +68,5 @@
 // Correspondence TABLE between pixel numbering in the trigger cells and
 // the standard spiral counting 
-// (Note: Pixels start to count from 1 instead of 0)
+// (*Note*: Pixels start to count ** from 1 ** instead of 0)
 //
 // This correspondence is valid only for MAGIC-like geometries!
@@ -812,7 +812,7 @@
 void MMcTriggerLvl2::GetEnergy(MMcEvt *fMcEvt)
 {
-  const MMcEvt &h = *(MMcEvt *)fMcEvt; 
-  fEnergy = h.GetEnergy();
-  return;
+   const MMcEvt &h = *(MMcEvt *)fMcEvt; 
+   fEnergy = h.GetEnergy();
+   return;
 }
 
@@ -1007,2 +1007,34 @@
 }
 
+//---------------------------------------------------------------------
+//  Check if a given pixel is in the trigger region
+//
+Bool_t MMcTriggerLvl2::IsPixelInTrigger(Int_t pixel) const
+{
+  for (int cell=0; cell<gsNCells; cell++)
+    for (int i=0; i<gsNPixInCell; i++)
+      if ((gsPixelsInCell[i][cell]-1) == pixel)
+	return kTRUE;
+  
+  return kFALSE;
+}
+
+// --------------------------------------------------------------------------
+//
+// Returns, depending on the type flag:
+//
+//  0: 1,0 if the pixel is triggered (1) or not (0)
+// 
+//
+Bool_t MMcTriggerLvl2::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
+{
+  // Pixel in no-trigger region are set to 0
+  val = this->IsPixelInTrigger(idx) ?  fFiredPixel[idx]+fCompactPixel[idx] : 0;
+
+  return kTRUE;
+}
+
+void MMcTriggerLvl2::DrawPixelContent(Int_t num) const
+{
+    *fLog << "MMcTriggerLvl2::DrawPixelContent - not available." << endl;
+}
Index: trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.h	(revision 3794)
+++ trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2.h	(revision 3795)
@@ -1,4 +1,8 @@
 #ifndef MARS_MMcTriggerLvl2
 #define MARS_MMcTriggerLvl2
+
+#ifndef MARS_MCamEvent
+#include "MCamEvent.h"
+#endif
 
 #ifndef MARS_MParContainer
@@ -12,5 +16,5 @@
 class MGeomPix;
 
-class MMcTriggerLvl2 : public MParContainer
+class MMcTriggerLvl2 : public MParContainer, public MCamEvent
 {
  private:
@@ -86,8 +90,13 @@
   Int_t GetTriggerPattern() const {return fTriggerPattern;}    
 
-  void GetEnergy(MMcEvt *fMcEvt = NULL);    
-  Double_t GetEnergy() const    {return fEnergy;}     
+  void GetEnergy(MMcEvt *fMcEvt = NULL);     
+  Double_t GetEnergy() const    {return fEnergy;}      
 
   Bool_t IsPixelInCell(Int_t pixel, Int_t cell);    
+  Bool_t IsPixelInTrigger(Int_t pixel) const;    
+
+  Bool_t GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const;
+  void DrawPixelContent(Int_t num) const;
+
 
   ClassDef(MMcTriggerLvl2,0) // Container for 2nd Level Trigger selection parameters 
Index: trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.cc	(revision 3794)
+++ trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.cc	(revision 3795)
@@ -43,6 +43,7 @@
 #include "MLogManip.h"
 
-#include "MMcEvt.hxx"
+//#include "MMcEvt.hxx"
 #include "MMcTrig.hxx"
+#include "MRawRunHeader.h"
 #include "MMcRunHeader.hxx"
 
@@ -61,24 +62,50 @@
 {
   fName  = name  ? name  : "MMcTriggerLvl2Calc";
-  fTitle = title ? title : "Task to Fill the MMcTriggerLvl2 object";
+  fTitle = title ? title : "Task to Fill the MMcTriggerLvl2 object";  
+} 
+
+ // --------------------------------------------------------------------------
+//
+// Check for the run type. Return kTRUE if it is a MC run or if there
+// is no MC run header (old camera files) kFALSE in case of a different
+// run type
+//
+Bool_t MMcTriggerLvl2Calc::CheckRunType(MParList *pList) const
+{
+  const MRawRunHeader *run = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
+  if (!run)
+    {
+      *fLog << warn << dbginf << "Warning - cannot check file type, MRawRunHeader not found." << endl;
+      return kTRUE;
+    }
   
-} 
-
-
-// --------------------------------------------------------------------------
-//                                                                         
-//  PreProcess
-//
-//
-Int_t MMcTriggerLvl2Calc::PreProcess (MParList *pList)
-{
-    // connect the raw data with this task
-
+  return run->IsMonteCarloRun();
+}
+
+// --------------------------------------------------------------------------
+//
+// Check for the runtype.
+// Search for .
+//
+Bool_t MMcTriggerLvl2Calc::ReInit(MParList *pList)
+{
+    //
+    // If it is no MC file skip this function...
+    //
+    if (!CheckRunType(pList))
+    {
+        *fLog << inf << "This is no MC file... skipping." << endl;
+        return kTRUE;
+    }
+        
+    //
+    // Check all necessary containers
+    //
     fMcEvt = (MMcEvt*)pList->FindObject("MMcEvt");
-    if (!fMcEvt)
-    {
-        *fLog << err << dbginf << "MMcEvt not found... exit." << endl;
-        return kFALSE;
-    }
+     if (!fMcEvt)
+     {
+         *fLog << err << dbginf << "MMcEvt not found... exit." << endl;
+         return kFALSE;
+     }
 
     fMcTrig = (MMcTrig*)pList->FindObject("MMcTrig");
@@ -102,5 +129,20 @@
 	return kFALSE;
       }
-    fMMcTriggerLvl2 = (MMcTriggerLvl2*)pList->FindObject("MMcTriggerLvl2");
+
+    return kTRUE;
+}
+
+
+// --------------------------------------------------------------------------
+//                                                                         
+//  PreProcess
+//  Check the exxistence of the MMcTriggerLvl2 containers and the correct 
+//    setting of the fCompactNN that defines a compact pixel
+//
+Int_t MMcTriggerLvl2Calc::PreProcess (MParList *pList)
+{
+
+    //    fMMcTriggerLvl2 = (MMcTriggerLvl2*)pList->FindObject("MMcTriggerLvl2");
+    fMMcTriggerLvl2 = (MMcTriggerLvl2*)pList->FindCreateObj("MMcTriggerLvl2");
     if (!fMMcTriggerLvl2)
     {
@@ -138,5 +180,5 @@
 Int_t MMcTriggerLvl2Calc::Process()
 {
-  fMMcTriggerLvl2->GetEnergy(fMcEvt);
+  //  fMMcTriggerLvl2->GetEnergy(fMcEvt);
 
   fMMcTriggerLvl2->SetLv1(fMcTrig);
Index: trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.h	(revision 3794)
+++ trunk/MagicSoft/Mars/manalysis/MMcTriggerLvl2Calc.h	(revision 3795)
@@ -32,4 +32,7 @@
   Int_t PostProcess();
 
+  Bool_t ReInit(MParList *pList);
+  Bool_t CheckRunType(MParList *pList) const;
+
  public:
     MMcTriggerLvl2Calc(const char *name=NULL, const char *title=NULL);   
Index: trunk/MagicSoft/Mars/mhist/MHEvent.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHEvent.cc	(revision 3794)
+++ trunk/MagicSoft/Mars/mhist/MHEvent.cc	(revision 3795)
@@ -53,4 +53,5 @@
 
 #include "MMcEvt.hxx"
+#include "MMcTrig.hxx"
 
 #include "MHCamera.h"
@@ -95,6 +96,6 @@
     fMcEvt       = (MMcEvt*)plist->FindObject("MMcEvt");
 
-    fRawEvtData = (MRawEvtData*)plist->FindObject("MRawEvtData");
-    if (!fRawEvtData)
+     fRawEvtData = (MRawEvtData*)plist->FindObject("MRawEvtData");
+     if (!fRawEvtData)
         *fLog << warn << "MRawEvtData not found..." << endl;
 
@@ -161,4 +162,9 @@
 	fHist->SetPrettyPalette();
         break;
+     case kEvtTrigPix:
+        fHist->SetName("Triggered pix");
+        fHist->SetYTitle("ON/OFF");
+	fHist->SetPrettyPalette();
+        break;
     }
 
@@ -214,4 +220,7 @@
         break;
     case kEvtArrTime:
+        fHist->SetCamContent(*event, 0);
+        break; 
+    case kEvtTrigPix:
         fHist->SetCamContent(*event, 0);
         break; 
Index: trunk/MagicSoft/Mars/mhist/MHEvent.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHEvent.h	(revision 3794)
+++ trunk/MagicSoft/Mars/mhist/MHEvent.h	(revision 3795)
@@ -12,4 +12,5 @@
 
 class MMcEvt;
+class MMcTrig;
 class MCerPhotEvt;
 class MImgCleanStd;
@@ -22,5 +23,5 @@
         kEvtSignalRaw, kEvtSignalDensity, kEvtPedestal, 
         kEvtPedestalRMS, kEvtRelativeSignal, kEvtCleaningLevels,
-        kEvtIdxMax, kEvtArrTime 
+        kEvtIdxMax, kEvtArrTime, kEvtTrigPix 
     };
 
@@ -31,4 +32,5 @@
 
     MMcEvt        *fMcEvt;         //!
+    MMcTrig       *fMcTrig;        //!
     MCerPhotEvt   *fCerPhotEvt;    //!
     MImgCleanStd  *fImgCleanStd;   //!
Index: trunk/MagicSoft/Mars/mhistmc/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mhistmc/Makefile	(revision 3794)
+++ trunk/MagicSoft/Mars/mhistmc/Makefile	(revision 3795)
@@ -23,5 +23,5 @@
 #
 INCLUDES = -I. -I../mbase -I../mhbase -I../mhist -I../mmc -I../manalysis \
-    	   -I../mimage -I../mgeom
+    	   -I../mimage -I../mgeom -I../mgui
 
 #------------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mmain/MEventDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mmain/MEventDisplay.cc	(revision 3794)
+++ trunk/MagicSoft/Mars/mmain/MEventDisplay.cc	(revision 3795)
@@ -75,4 +75,5 @@
 #include "MMcCalibrationUpdate.h" // MMcCalibrationUpdate
 #include "MCalibrate.h"           // MCalibrate
+#include "MMcTriggerLvl2Calc.h"   // MMcTriggerLvl2Calc
 
 //
@@ -90,4 +91,5 @@
 #include "MPedPhotCam.h"           // MPedPhotCam
 #include "MCalibrationChargeCam.h" // MCalibrationChargeCam
+#include "MMcTriggerLvl2.h"        // MMcTriggerLvl2
 
 ClassImp(MEventDisplay);
@@ -221,4 +223,5 @@
     MHEvent *evt7 = new MHEvent(MHEvent::kEvtIdxMax);
     MHEvent *evt8 = new MHEvent(MHEvent::kEvtArrTime);
+    MHEvent *evt9 = new MHEvent(MHEvent::kEvtTrigPix);
 
     evt1->SetName("Signal");
@@ -230,4 +233,5 @@
     evt7->SetName("Max Slice Idx");
     evt8->SetName("Arrival Time");
+    evt9->SetName("Trigger");
 
     // This makes sure, that the containers are deleted...
@@ -240,4 +244,5 @@
     plist->AddToList(evt7);
     plist->AddToList(evt8);
+    plist->AddToList(evt9);
 
     MCerPhotAnal2     *nanal = new MCerPhotAnal2;
@@ -252,4 +257,6 @@
     MHillasCalc       *hcalc = new MHillasCalc;
     MHillasSrcCalc    *scalc = new MHillasSrcCalc;
+    MMcTriggerLvl2Calc *trcal = new MMcTriggerLvl2Calc;
+    MFillH            *fill9 = new MFillH(evt9, "MMcTriggerLvl2", "MFillH9");
 
     // If no pedestal or no calibration file is availble
@@ -265,5 +272,5 @@
 
         MExtractSignal* extra = new MExtractSignal();
-	extra->SetRange(5, 10, 5, 10);
+	extra->SetRange(0, 6, 2, 7);
 	extra->SetSaturationLimit(240);
 
@@ -278,4 +285,5 @@
         mcupd->SetFilter(f1);
         mccal->SetFilter(f1);
+	trcal->SetFilter(f1);
 
         // Data
@@ -292,5 +300,6 @@
         tlist->AddToList(mccal);
 
-        tlist->AddToList(nanal);
+  
+	tlist->AddToList(nanal);
     }
     else
@@ -310,4 +319,5 @@
     tlist->AddToList(hcalc);
     tlist->AddToList(scalc);
+
     if (!pcam || !ccam)
     {
@@ -318,4 +328,7 @@
         tlist->AddToList(fill7);
         tlist->AddToList(fill8);
+
+	tlist->AddToList(trcal);
+	tlist->AddToList(fill9);
     }
 
@@ -518,5 +531,5 @@
     ((MHillasSrc*)  plist->FindObject("MHillasSrc"))->Print(*geom);
     ((MNewImagePar*)plist->FindObject("MNewImagePar"))->Print(*geom);
-
+    
     //
     // UpdateDisplay
