Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 2978)
+++ trunk/MagicSoft/Mars/Changelog	(revision 2979)
@@ -4,4 +4,15 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2004/01/30: Thomas Bretz
+ 
+   * mbase/MDirIter.h:
+     - added GetNumEntries
+
+   * mhist/MHEvent.cc:
+     - added a dynamic_cast from MParContainer to MCamEvent to get the
+       correct pointer to the correct base-class.
+
+
+
  2004/01/30: Markus Gaug
 
@@ -12,6 +23,5 @@
      - modified GetPixelContent
 
-   * manalysis/MPedestalCam.cc
-   * manalysis/MPedCalcPedRun.cc
+   * manalysis/MPedestalCam.cc, manalysis/MPedCalcPedRun.cc:
      - include storage of number of used FADC slices to compare later 
        the pedestal per slice ( and sigma per slice_
@@ -32,4 +42,5 @@
        and displays of errors, correction for different FADC slice 
        number)
+
 
 
Index: trunk/MagicSoft/Mars/mbase/MDirIter.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 2978)
+++ trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 2979)
@@ -59,4 +59,11 @@
 
     void SetFilter(const char *f="") { fFilter = f; }
+    UInt_t GetNumEntries() const
+    {
+        UInt_t n = 0;
+        MDirIter Next(*this);
+        while (!Next().IsNull()) n++;
+        return n;
+    }
 
     void Print(const Option_t *o="") const;
Index: trunk/MagicSoft/Mars/mhist/MHEvent.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHEvent.cc	(revision 2978)
+++ trunk/MagicSoft/Mars/mhist/MHEvent.cc	(revision 2979)
@@ -170,4 +170,11 @@
         return kFALSE;
 
+    const MCamEvent *event = dynamic_cast<const MCamEvent*>(par);
+    if (!event)
+    {
+        *fLog << err << par->GetDescriptor() << " doesn't inherit from MCamEvent... abort." << endl;
+        return kFALSE;
+    }
+
     if (fRawEvtData)
         fRawEvtData->Copy(*fClone);
@@ -177,11 +184,11 @@
     case kEvtSignal:
     case kEvtPedestal:
-        fHist->SetCamContent(*(MCamEvent*)par, 0);
+        fHist->SetCamContent(*event, 0);
         break;
     case kEvtPedestalRMS:
-        fHist->SetCamContent(*(MCamEvent*)par, 1);
+        fHist->SetCamContent(*event, 1);
         break;
     case kEvtRelativeSignal:
-        fHist->SetCamContent(*(MCamEvent*)par, 0);
+        fHist->SetCamContent(*event, 0);
         break;
     case kEvtCleaningLevels:
@@ -190,13 +197,13 @@
             lvl[0] = fImgCleanStd->GetCleanLvl2();
             lvl[1] = fImgCleanStd->GetCleanLvl1();
-            fHist->SetCamContent(*(MCamEvent*)par, 0);
+            fHist->SetCamContent(*event, 0);
             fHist->SetLevels(lvl);
         }
         break;
     case kEvtIdxMax:
-        fHist->SetCamContent(*(MCamEvent*)par, 5);
+        fHist->SetCamContent(*event, 5);
         break;
     case kEvtArrTime:
-        fHist->SetCamContent(*(MCamEvent*)par, 0);
+        fHist->SetCamContent(*event, 0);
         break; 
     }
