Index: trunk/MagicSoft/Mars/mgeom/GeomLinkDef.h
===================================================================
--- trunk/MagicSoft/Mars/mgeom/GeomLinkDef.h	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/GeomLinkDef.h	(revision 1600)
@@ -5,4 +5,6 @@
 #pragma link off all functions;
 
+#pragma link C++ class MGeomPMT+;
+#pragma link C++ class MGeomMirror+;
 #pragma link C++ class MGeomPix+;
 #pragma link C++ class MGeomCam+;
Index: trunk/MagicSoft/Mars/mgeom/MGeomCamCT1.cc
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomCamCT1.cc	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomCamCT1.cc	(revision 1600)
@@ -237,30 +237,30 @@
         //
         for (int i=0; i<ring; i++)
-            (*this)[pixnum++].Set((-ring+i*0.5)*diameter,
+            (*this)[pixnum++].Set((ring-i*0.5)*diameter,
                                   i*kS32*diameter,
                                   diameter);
 
         for (int i=0; i<ring; i++)
-            (*this)[pixnum++].Set((-ring*0.5+i)*diameter,
+            (*this)[pixnum++].Set((ring*0.5-i)*diameter,
                                   ring*kS32 * diameter,
                                   diameter);
 
         for (int i=0; i<ring; i++)
+            (*this)[pixnum++].Set(-(ring+i)*0.5*diameter,
+                                  (ring-i)*kS32*diameter,
+                                  diameter);
+
+        for (int i=0; i<ring; i++)
+            (*this)[pixnum++].Set((0.5*i-ring)*diameter,
+                                  -i*kS32*diameter,
+                                  diameter);
+
+        for (int i=0; i<ring; i++)
+            (*this)[pixnum++].Set((i-ring*0.5)*diameter,
+                                  -ring*kS32 * diameter,
+                                  diameter);
+
+        for (int i=0; i<ring; i++)
             (*this)[pixnum++].Set((ring+i)*0.5*diameter,
-                                  (ring-i)*kS32*diameter,
-                                  diameter);
-
-        for (int i=0; i<ring; i++)
-            (*this)[pixnum++].Set((ring-0.5*i)*diameter,
-                                  -i*kS32*diameter,
-                                  diameter);
-
-        for (int i=0; i<ring; i++)
-            (*this)[pixnum++].Set((ring*0.5-i)*diameter,
-                                  -ring*kS32 * diameter,
-                                  diameter);
-
-        for (int i=0; i<ring; i++)
-            (*this)[pixnum++].Set((-ring-i)*0.5*diameter,
                                   (-ring+i)*kS32*diameter,
                                   diameter);
Index: trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc	(revision 1600)
@@ -69,4 +69,8 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// DESCRIPTION MISSING
+//
 void MGeomMirror::SetMirrorContent(Int_t mir, Float_t focal, Float_t curv_x,
 				   Float_t curv_y, Float_t lin_x, Float_t lin_y,
Index: trunk/MagicSoft/Mars/mgeom/MGeomMirror.h
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomMirror.h	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomMirror.h	(revision 1600)
@@ -9,6 +9,5 @@
 {
 private:
-
-    Int_t   fMirrorId;       // the Mirror Id
+    Int_t   fMirrorId;    // the Mirror Id
 
     Float_t fFocalDist;   //  focal distance of that mirror [cm]
@@ -33,14 +32,13 @@
                           // of the spot of a single mirror on the camera plane
 public:
-
     MGeomMirror(Int_t mir=-1, const char *name=NULL, const char *title=NULL);
 
-    Int_t   GetMirrorId() const         { return fMirrorId;   }
+    Int_t GetMirrorId() const         { return fMirrorId;   }
 
-    void    SetMirrorContent(Int_t mir, Float_t focal, Float_t curv_x,
-			  Float_t curv_y, Float_t lin_x, Float_t lin_y,
-			  Float_t lin_z, Float_t theta, Float_t phi,
-			  Float_t x_n, Float_t y_n, Float_t z_n,
-			  Float_t dev_x, Float_t dev_y);
+    void  SetMirrorContent(Int_t mir, Float_t focal, Float_t curv_x,
+                           Float_t curv_y, Float_t lin_x, Float_t lin_y,
+                           Float_t lin_z, Float_t theta, Float_t phi,
+                           Float_t x_n, Float_t y_n, Float_t z_n,
+                           Float_t dev_x, Float_t dev_y);
 
     ClassDef(MGeomMirror, 1)  // class containing information about the Cerenkov Photons in a pixel
Index: trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc	(revision 1600)
@@ -30,9 +30,8 @@
 //
 ///////////////////////////////////////////////////////////////////////
+#include "MGeomPMT.h"
 
 #include "MLog.h"
 #include "MLogManip.h"
-
-#include "MGeomPMT.h"
 
 ClassImp(MGeomPMT);
@@ -43,28 +42,28 @@
 //
 MGeomPMT::MGeomPMT(Int_t pmt, const char *name=NULL, const char *title=NULL)
+    : fPMTId(pmt), fWavelength(0), fQE(0)
 {
     fName  = name  ? name  : "MGeomPMT";
     fTitle = title ? title : "Storage container for  a PMT characteristics";
+}
+
+// --------------------------------------------------------------------------
+//
+// DESCRIPTION MISSING
+//
+void MGeomPMT::SetPMTContent(Int_t pmt, const TArrayF &wav, const TArrayF &qe)
+{
+    if (fWavelength.GetSize()!=wav.GetSize() ||
+        fQE.GetSize()!=qe.GetSize())
+    {
+        *fLog << err << dbginf << " fWavelength or fQE do not have ";
+        *fLog << "size of setting arrays" << endl;
+        return;
+    }
 
     fPMTId = pmt;
-    fWavelength->Set(0);
-    fQE->Set(0);
 
-}
-
-void MGeomPMT::SetPMTContent(Int_t pmt, TArrayF *wav, TArrayF *qe)
-{
-    fPMTId = pmt;
-
-  if(fWavelength->GetSize()==wav->GetSize() &&
-     fQE->GetSize()==qe->GetSize()){
-    wav->Copy(*fWavelength);
-    qe->Copy(*fQE);
-  }
-  else
-     *fLog<<err << "MGeomPMT::SetPMTContent fWavelength "
-	  <<"and fQE do not have "
-	  <<"size of setting arrays"<<endl;
-
+    fWavelength = wav;
+    fQE = qe;
 }
 
Index: trunk/MagicSoft/Mars/mgeom/MGeomPMT.h
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomPMT.h	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomPMT.h	(revision 1600)
@@ -12,9 +12,8 @@
 {
 private:
+    Int_t   fPMTId;        // the PMT Id
 
-    Int_t   fPMTId;       // the PMT Id
-
-    TArrayF *fWavelength;  // List of wavelength
-    TArrayF *fQE;          // QE values
+    TArrayF fWavelength;  // List of wavelength
+    TArrayF fQE;          // QE values
 
 public:
@@ -24,7 +23,7 @@
     Int_t   GetPMTId() const         { return fPMTId;   }
 
-    void    SetArrays(Int_t dim) {fWavelength->Set(dim);fQE->Set(dim);}
+    void    SetArraySize(Int_t dim) { fWavelength.Set(dim); fQE.Set(dim); }
 
-    void    SetPMTContent(Int_t pmt, TArrayF *wav, TArrayF *qe);
+    void    SetPMTContent(Int_t pmt, const TArrayF &wav, const TArrayF &qe);
 
     ClassDef(MGeomPMT, 1)  // class containing information about PMTs
