Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4837)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4838)
@@ -19,4 +19,11 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2004/09/03: Thomas Bretz
+
+   * manalysis/MCameraData.[h,cc], mimage/MImgCleanStd.[h,cc]:
+     - implemeted cleaning in absolute number of photons
+
+
+
  2004/09/02: Thomas Bretz
 
Index: /trunk/MagicSoft/Mars/manalysis/MCameraData.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MCameraData.cc	(revision 4837)
+++ /trunk/MagicSoft/Mars/manalysis/MCameraData.cc	(revision 4838)
@@ -374,4 +374,35 @@
 // --------------------------------------------------------------------------
 //
+// Function to calculate the cleaning level for all pixels in a given event.
+// The level is the absolute number of photons times the area-ratio.
+//
+void MCameraData::CalcCleaningAbsolute(const MCerPhotEvt &evt, const MGeomCam &geom)
+{
+    const Int_t n = geom.GetNumPixels();
+
+    // Reset arrays
+    fData.Set(n);
+    fData.Reset();
+
+    fValidity.Set(n);
+    fValidity.Reset();
+
+    const Int_t entries = evt.GetNumPixels();
+
+    // calculate cleaning levels
+    for (Int_t i=0; i<entries; i++)
+    {
+        const MCerPhotPix &spix = evt[i];
+
+        const Int_t idx = spix.GetPixId();
+
+        // Set probability
+        fData[idx]     = spix.GetNumPhotons() * geom.GetPixRatio(idx);
+        fValidity[idx] = 1;
+    }
+}
+
+// --------------------------------------------------------------------------
+//
 // Returns the contents of the pixel.
 //
Index: /trunk/MagicSoft/Mars/manalysis/MCameraData.h
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MCameraData.h	(revision 4837)
+++ /trunk/MagicSoft/Mars/manalysis/MCameraData.h	(revision 4838)
@@ -45,4 +45,5 @@
     void CalcCleaningProbability(const MCerPhotEvt &evt, const MPedPhotCam &pcam,
                                  const MGeomCam &geom,   const MArrivalTime *tcam);
+    void CalcCleaningAbsolute(const MCerPhotEvt &evt, const MGeomCam &geom);
 
     const TArrayD &GetData() const { return fData; }
Index: /trunk/MagicSoft/Mars/mimage/MImgCleanStd.cc
===================================================================
--- /trunk/MagicSoft/Mars/mimage/MImgCleanStd.cc	(revision 4837)
+++ /trunk/MagicSoft/Mars/mimage/MImgCleanStd.cc	(revision 4838)
@@ -211,4 +211,19 @@
 //
 //
+// ABSOLUTE CLEANING
+// =================
+// This method takes signal height (photons) times area ratio
+// ad the cleaning levels.
+//
+// The cleaning now is done in these levels (eg. 16, 20)
+// The meaning of the cleaning levels is essentially the same (the same cleaning
+// algorithm is used) but the cleaning is not done in different 'units'
+//
+// Example:
+//
+// MImgCleanStd clean(20, 16);
+// clean.SetMethod(MImgCleanStd::kAbsolulte);
+//
+//
 // Member Function:  SetMethod()
 // ============================
@@ -579,4 +594,7 @@
         fData->CalcCleaningProbability(*fEvt, *fPed, *fCam, fTime);
         break;
+    case kAbsolute:
+        fData->CalcCleaningAbsolute(*fEvt, *fCam);
+        break;
     default:
         break;
@@ -637,4 +655,7 @@
     case kProbability:
         *fLog << "probability";
+        break;
+    case kAbsolute:
+        *fLog << "absolute";
         break;
     }
@@ -769,4 +790,5 @@
         case kDemocratic:  out << "Democratic";  break;
         case kProbability: out << "Probability"; break;
+        case kAbsolute:    out << "Absolute";    break;
         default:
             break;
@@ -786,5 +808,5 @@
 //   MImgCleanStd.CleanLevel1: 3.0
 //   MImgCleanStd.CleanLevel2: 2.5
-//   MImgCleanStd.CleanMethod: Standard, Scaled, Democratic, Probability
+//   MImgCleanStd.CleanMethod: Standard, Scaled, Democratic, Probability, Absolute
 //   MImgCleanStd.CleanRings:  1
 //
@@ -821,4 +843,6 @@
         if (s.BeginsWith("probability"))
             SetMethod(kProbability);
+        if (s.BeginsWith("absolute"))
+            SetMethod(kAbsolute);
     }
 
Index: /trunk/MagicSoft/Mars/mimage/MImgCleanStd.h
===================================================================
--- /trunk/MagicSoft/Mars/mimage/MImgCleanStd.h	(revision 4837)
+++ /trunk/MagicSoft/Mars/mimage/MImgCleanStd.h	(revision 4838)
@@ -23,5 +23,6 @@
         kScaled,
         kDemocratic,
-        kProbability
+        kProbability,
+        kAbsolute
     } CleaningMethod_t;
 
