Index: trunk/Mars/mimage/MHillasCalc.cc
===================================================================
--- trunk/Mars/mimage/MHillasCalc.cc	(revision 18286)
+++ trunk/Mars/mimage/MHillasCalc.cc	(revision 18751)
@@ -181,5 +181,5 @@
           fNameNewImagePar(gsNameNewImagePar),
           fNameNewImagePar2(gsNameNewImagePar2),
-          fErrors(7), fFlags(0xff), fIdxIsland(-1)
+          fErrors(7), fFlags(0xff), fIdxIsland(-1), fAbberation(1)
 {
     fName  = name  ? name  : gsDefName.Data();
@@ -324,5 +324,5 @@
     if (TestFlag(kCalcHillasSrc))
     {
-        const Int_t rc = fHillasSrc->Calc(*fHillas);
+        const Int_t rc = fHillasSrc->Calc(*fHillas, fAbberation);
         if (rc<0 || rc>2)
         {
Index: trunk/Mars/mimage/MHillasCalc.h
===================================================================
--- trunk/Mars/mimage/MHillasCalc.h	(revision 18286)
+++ trunk/Mars/mimage/MHillasCalc.h	(revision 18751)
@@ -66,4 +66,5 @@
     Int_t                fFlags;            // Flags defining the behaviour of MHillasCalc
     Short_t              fIdxIsland;        // Number of island to use for calculation
+    Double_t             fAbberation;       // Correction factor to correct for abberation effects
 
     // MParContainer
@@ -113,4 +114,7 @@
     void SetIdxIsland(Short_t idx) { fIdxIsland = idx; }
 
+    // Set Abberation (see MHillasSrc for details)
+    void SetAbberation(Double_t a=1) { fAbberation = a; }
+
     // TObject
     void Print(Option_t *o="") const;
Index: trunk/Mars/mimage/MHillasSrc.cc
===================================================================
--- trunk/Mars/mimage/MHillasSrc.cc	(revision 18286)
+++ trunk/Mars/mimage/MHillasSrc.cc	(revision 18751)
@@ -111,11 +111,19 @@
 //  you call the Reset member function before.
 //
-Int_t MHillasSrc::Calc(const MHillas &hillas)
+Int_t MHillasSrc::Calc(const MHillas &hillas, double abberation)
 {
      const Double_t mx = hillas.GetMeanX();     // [mm]
      const Double_t my = hillas.GetMeanY();     // [mm]
 
-     const Double_t sx = mx - fSrcPos->GetX();   // [mm]
-     const Double_t sy = my - fSrcPos->GetY();   // [mm]
+     // The abberation value corrects for the average shift of
+     // the CoG of a light distirbution in the camera by the optics.
+     // The FACT refelctor for example reflects the CoG to a point
+     // 2% further away than the master ray. This could be corrected
+     // moving all pixels (in the image parameter calculation) 2%
+     // outwards. Instead, simply the source position 'reflected'
+     // (as if it were the master ray) is moved 2% inwards in the
+     // camera.
+     const Double_t sx = mx - fSrcPos->GetX()/abberation;  // [mm]
+     const Double_t sy = my - fSrcPos->GetY()/abberation;  // [mm]
 
      const Double_t sd = hillas.GetSinDelta();  // [1]
Index: trunk/Mars/mimage/MHillasSrc.h
===================================================================
--- trunk/Mars/mimage/MHillasSrc.h	(revision 18286)
+++ trunk/Mars/mimage/MHillasSrc.h	(revision 18751)
@@ -54,5 +54,5 @@
     void Paint(Option_t *opt=NULL);
 
-    virtual Int_t Calc(const MHillas &hillas);
+    virtual Int_t Calc(const MHillas &hillas, double abberation=1);
 
     void Set(const TArrayF &arr);
