Index: trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.cc	(revision 6455)
+++ trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.cc	(revision 6489)
@@ -31,4 +31,11 @@
 //       risk!
 //
+// Class Version 4:
+// ----------------
+//  - added Short_t       fNumSinglePixels;
+//  - added Float_t       fSizeSinglePixels;
+//  - added Float_t       fSizeSubIslands;
+//  - added Float_t       fSizeMainIsland;
+//
 // Class Version 3:
 // ----------------
@@ -102,7 +109,11 @@
 void MCerPhotEvt::Reset()
 {
-    fNumPixels  =  0;
-    fMaxIndex   = -1;
-    fNumIslands = -1;
+    fNumPixels        =  0;
+    fNumSinglePixels  =  0;
+    fSizeSinglePixels =  0;
+    fSizeSubIslands   =  0;
+    fSizeMainIsland   =  0;
+    fMaxIndex         = -1;
+    fNumIslands       = -1;
     fLut.Set(0);
     // fPixels->Delete();
@@ -516,9 +527,10 @@
 
     // Create a list to hold the sizes of the islands (The maximum
-    // number of islands possible is rougly fNumPixels/4)
+    // number of islands possible is roughly fNumPixels/4)
     TArrayD size(fNumPixels/3);
 
     // Calculate Islands
-    Int_t n=0;
+    Int_t   n=0;
+    Float_t totsize = 0;
 
     // We could loop over all indices which looks more straight
@@ -535,6 +547,8 @@
         if (pix->GetIdxIsland()<0)
         {
-            Double_t sz = CalcIsland(geom, pix->GetPixId(), n);
+            // Don't put this in one line! n is used twice...
+            const Double_t sz = CalcIsland(geom, pix->GetPixId(), n);
             size[n++] = sz;
+            totsize += sz;
         }
     }
@@ -563,5 +577,7 @@
 
     // Now assign number of islands found
-    fNumIslands = n;
+    fNumIslands     = n;
+    fSizeSubIslands = n>0 ? totsize-size[idx[0]] : 0;
+    fSizeMainIsland = n>0 ? size[idx[0]] : 0;
 
     // return number of island
Index: trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.h	(revision 6455)
+++ trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.h	(revision 6489)
@@ -25,4 +25,8 @@
     UInt_t        fNumPixels;
     Short_t       fNumIslands;
+    Short_t       fNumSinglePixels;
+    Float_t       fSizeSinglePixels;
+    Float_t       fSizeSubIslands;
+    Float_t       fSizeMainIsland;
      Int_t        fMaxIndex;
     TArrayI       fLut;        // Lookup tabel to lookup pixel by index
@@ -58,4 +62,11 @@
     UInt_t  GetNumPixels() const { return fNumPixels; }
     Short_t GetNumIslands() const { return fNumIslands; };
+    Short_t GetNumSinglePixels() const { return fNumSinglePixels; }
+    Float_t GetSizeSinglePixels() const { return fSizeSinglePixels; }
+    Float_t GetSizeSubIslands() const { return fSizeSubIslands; }
+    Float_t GetSizeMainIsland() const { return fSizeMainIsland; }
+
+    // Setter functions for use in image cleaning classes only
+    void SetSinglePixels(Short_t num, Float_t size) { fNumSinglePixels=num; fSizeSinglePixels=size; }
 
     Bool_t  IsPixelExisting(Int_t id) const;
@@ -103,5 +114,5 @@
     operator TIterator*() const;
 
-    ClassDef(MCerPhotEvt, 3)    // class for an event containing cerenkov photons
+    ClassDef(MCerPhotEvt, 4)    // class for an event containing cerenkov photons
 };
 
