Index: trunk/MagicSoft/Mars/mhist/MHHillas.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHHillas.h	(revision 1489)
+++ trunk/MagicSoft/Mars/mhist/MHHillas.h	(revision 1490)
@@ -28,8 +28,6 @@
     void SetColors() const;
 
-protected:
     Float_t fMm2Deg;
-
-    Bool_t fUseMmScale;
+    Bool_t  fUseMmScale;
 
 public:
Index: trunk/MagicSoft/Mars/mhist/MHHillasExt.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHHillasExt.cc	(revision 1489)
+++ trunk/MagicSoft/Mars/mhist/MHHillasExt.cc	(revision 1490)
@@ -57,4 +57,5 @@
 //
 MHHillasExt::MHHillasExt(const char *name, const char *title)
+    : fMm2Deg(1), fUseMmScale(kTRUE)
 {
     //
@@ -107,5 +108,5 @@
     bins.Apply(fHM3Trans);
 
-    bins.SetEdges(89, -297, 593);
+    bins.SetEdges(101, -593, 593);
     bins.Apply(fHAsym);
 }
@@ -131,4 +132,17 @@
 Bool_t MHHillasExt::SetupFill(const MParList *plist)
 {
+    TObject *obj = plist->FindObject("MHillas");
+    if (!obj)
+    {
+        *fLog << err << dbginf << "Sorry 'MHillas' not found in parameter list... aborting." << endl;
+        return kFALSE;
+    }
+    if (!obj->InheritsFrom(MHillasExt::Class()))
+    {
+        *fLog << err << dbginf << "Sorry 'MHillas' doesn't inherit from MHillasExt... aborting." << endl;
+        return kFALSE;
+    }
+    fHillasExt = (MHillasExt*)obj;
+
     const MGeomCam *geom = (MGeomCam*)plist->FindObject("MGeomCam");
     if (!geom)
@@ -146,9 +160,5 @@
     ApplyBinning(*plist, "M3Trans", &fHM3Trans);
 
-    fHillasSrc = (MHillasSrc*)plist->FindObject("HillasSource");
-    if (!fHillasSrc)
-        *fLog << warn << dbginf << "Sorry 'HillasSource' [MHillasSrc] not found. Histograms will be source independant." << endl;
-
-    return MHHillas::SetupFill(plist);
+    return kTRUE;
 }
 
@@ -160,18 +170,18 @@
 Bool_t MHHillasExt::Fill(const MParContainer *par)
 {
-    const MHillasExt &ext = *(MHillasExt*)par;
-
-    const Double_t scale = fHillasSrc ? TMath::Sign(fUseMmScale?1:fMm2Deg, fHillasSrc->GetCosDeltaAlpha()) : 1;
-
-    fHConc.Fill(ext.GetConc());
-    fHConc1.Fill(ext.GetConc1());
-
-    fHAsym.Fill(scale*ext.GetAsym());
-    fHM3Long.Fill(scale*ext.GetM3Long());
-    fHM3Trans.Fill(scale*ext.GetM3Trans());
+    const MHillasSrc *src = (MHillasSrc*)par;
+
+    const Double_t scale = src ? TMath::Sign(fUseMmScale?1:fMm2Deg, src->GetCosDeltaAlpha()) : 1;
+
+    fHConc.Fill(fHillasExt->GetConc());
+    fHConc1.Fill(fHillasExt->GetConc1());
+
+    fHAsym.Fill(scale*fHillasExt->GetAsym());
+    fHM3Long.Fill(scale*fHillasExt->GetM3Long());
+    fHM3Trans.Fill(scale*fHillasExt->GetM3Trans());
     //fHAsymna.Fill(scale*ext.GetAsymna());
     //fHAsym0.Fill(scale*ext.GetAsym0());
 
-    return MHHillas::Fill(par);
+    return kTRUE;
 }
 
@@ -200,5 +210,5 @@
     {
         fHAsym.SetXTitle("Asym [mm]");
-        fHM3Long.SetXTitle("3^{rd} M_{l}[mm]");
+        fHM3Long.SetXTitle("3^{rd} M_{l} [mm]");
         fHM3Trans.SetXTitle("3^{rd} M_{t} [mm]");
     }
@@ -210,5 +220,26 @@
     }
 
-    MHHillas::SetMmScale(mmscale);
+    fUseMmScale = mmscale;
+}
+
+// --------------------------------------------------------------------------
+//
+// Use this function to setup your own conversion factor between degrees
+// and millimeters. The conversion factor should be the one calculated in
+// MGeomCam. Use this function with Caution: You could create wrong values
+// by setting up your own scale factor.
+//
+void MHHillasExt::SetMm2Deg(Float_t mmdeg)
+{
+    if (mmdeg<0)
+    {
+        *fLog << warn << dbginf << "Warning - Conversion factor < 0 - nonsense. Ignored." << endl;
+        return;
+    }
+
+    if (fMm2Deg>=0)
+        *fLog << warn << dbginf << "Warning - Conversion factor already set. Overwriting" << endl;
+
+    fMm2Deg = mmdeg;
 }
 
@@ -245,6 +276,4 @@
     c.Update();
 
-    MHHillas::DrawClone();
-
     return &c;
 }
@@ -279,5 +308,3 @@
     gPad->Modified();
     gPad->Update();
-
-    MHHillas::DrawClone();
-}
+}
Index: trunk/MagicSoft/Mars/mhist/MHHillasExt.h
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHHillasExt.h	(revision 1489)
+++ trunk/MagicSoft/Mars/mhist/MHHillasExt.h	(revision 1490)
@@ -5,14 +5,14 @@
 #include <TH1.h>
 #endif
-#ifndef MARS_MHHillas
-#include "MHHillas.h"
+#ifndef MARS_MH
+#include "MH.h"
 #endif
 
-class MHillasSrc;
+class MHillasExt;
 
-class MHHillasExt : public MHHillas
+class MHHillasExt : public MH
 {
 private:
-    MHillasSrc *fHillasSrc; //! Pointer to an MHillasSrc to be able to add sign to Asym, M3Long and M3Trans
+    MHillasExt *fHillasExt; //! Pointer to the MHillasExt container
 
     TH1F fHConc;    // [ratio] concentration ratio: sum of the two highest pixels / fSize
@@ -22,4 +22,7 @@
     TH1F fHM3Trans; // [mm]    3rd moment (e-weighted) along minor axis
 
+    Float_t fMm2Deg;
+    Bool_t  fUseMmScale;
+
 public:
     MHHillasExt(const char *name=NULL, const char *title=NULL);
@@ -27,4 +30,5 @@
 
     void SetMmScale(Bool_t mmscale=kTRUE);
+    virtual void SetMm2Deg(Float_t mmdeg);
 
     Bool_t SetupFill(const MParList *pList);
@@ -34,5 +38,5 @@
     TObject *DrawClone(Option_t *opt=NULL) const;
 
-    ClassDef(MHHillasExt, 1) // Container which holds histograms for length and width
+    ClassDef(MHHillasExt, 1) // Container which holds histograms for the extended hillas parameters
 };
 
