Index: trunk/Mars/mhist/MHCamEvent.cc
===================================================================
--- trunk/Mars/mhist/MHCamEvent.cc	(revision 13001)
+++ trunk/Mars/mhist/MHCamEvent.cc	(revision 13002)
@@ -51,4 +51,8 @@
 //   MHCamEvent myhist("Titele;;y [cm]");
 //
+// Class Version 3:
+// ----------------
+//  + fNameSub
+//
 /////////////////////////////////////////////////////////////////////////////
 #include "MHCamEvent.h"
@@ -91,5 +95,5 @@
 //
 MHCamEvent::MHCamEvent(const char *name, const char *title)
-: fSum(NULL), fErr(NULL), fEvt(NULL), fType(0), fErrorSpread(kTRUE), fErrorRelative(kFALSE),
+: fSum(NULL), fErr(NULL), fEvt(NULL), fSub(0), fType(0), fErrorSpread(kTRUE), fErrorRelative(kFALSE),
 fThreshold(0), fUseThreshold(0)
 {
@@ -104,5 +108,5 @@
 //
 MHCamEvent::MHCamEvent(Int_t type, const char *name, const char *title)
-: fSum(NULL), fErr(NULL), fEvt(NULL), fType(type), fErrorSpread(kTRUE), fErrorRelative(kFALSE),
+: fSum(NULL), fErr(NULL), fEvt(NULL), fSub(0), fType(type), fErrorSpread(kTRUE), fErrorRelative(kFALSE),
 fThreshold(0), fUseThreshold(0)
 {
@@ -155,5 +159,5 @@
 Bool_t MHCamEvent::SetupFill(const MParList *plist)
 {
-    fEvt = (MCamEvent*)plist->FindObject(fNameEvt, "MCamEvent");
+    fEvt = dynamic_cast<MCamEvent*>(plist->FindObject(fNameEvt, "MCamEvent"));
     if (!fEvt)
     {
@@ -166,4 +170,16 @@
     }
 
+    fSub = 0;
+    if (!fNameSub.IsNull())
+    {
+        fSub = dynamic_cast<MCamEvent*>(plist->FindObject(fNameSub, "MCamEvent"));
+        if (!fSub)
+        {
+            *fLog << err << GetDescriptor() << ": No " << fNameSub <<" [MCamEvent] available..." << endl;
+            return kFALSE;
+        }
+        *fLog << inf << GetDescriptor() << ": Will subtract '" << fNameSub << "'" << endl;
+    }
+
     fSum->Reset();
 
@@ -209,5 +225,8 @@
     {
     case kNoBound:
-        fSum->AddCamContent(*evt, fType);
+        if (fSub)
+            fSum->AddCamDifference(*evt, *fSub, fType);
+        else
+            fSum->AddCamContent(*evt, fType, w);
         break;
 
@@ -226,9 +245,9 @@
 
     case kMeanShift:
-        fSum->AddMeanShift(*evt, fType);
+        fSum->AddMeanShift(*evt, fType, w);
         break;
 
     case kMedianShift:
-        fSum->AddMedianShift(*evt, fType);
+        fSum->AddMedianShift(*evt, fType, w);
         break;
 
Index: trunk/Mars/mhist/MHCamEvent.h
===================================================================
--- trunk/Mars/mhist/MHCamEvent.h	(revision 13001)
+++ trunk/Mars/mhist/MHCamEvent.h	(revision 13002)
@@ -19,6 +19,8 @@
     MHCamera  *fErr;       //! storing the err
     MCamEvent *fEvt;       //! the current event
+    MCamEvent *fSub;       //! the event to be subtracted
 
     TString fNameEvt;      // Name of MCamEvent to fill into histogram
+    TString fNameSub;      // Name of MCamEvent to fill into histogram
     TString fNameGeom;     // Name of geometry container
 
@@ -49,4 +51,5 @@
 
     void SetNameEvt(const TString name)  { fNameEvt = name; }
+    void SetNameSub(const TString name)  { fNameSub = name; }
     void SetNameGeom(const TString name) { fNameGeom = name; }
     void SetType(Int_t type) { fType = type; }
@@ -73,5 +76,5 @@
     void RecursiveRemove(TObject *obj);
 
-    ClassDef(MHCamEvent, 2) // Histogram to sum camera events
+    ClassDef(MHCamEvent, 3) // Histogram to sum camera events
 };
 
