Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 1594)
+++ trunk/MagicSoft/Mars/Changelog	(revision 1596)
@@ -1,3 +1,16 @@
                                                                   -*-*- END -*-*-
+ 2002/11/08: Oscar Blanch
+
+   * mgeom/MGeomPMT.[h,cc]:
+     - added
+     - Infromation about simulated QE
+
+   * mgeom/MGeomMirror.[h,cc];
+     - added
+     - Mirrors properties
+
+   * mgeom/Makefile:
+     - modified to compile new classes
+
  2002/11/08: Thomas Bretz
 
Index: trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomMirror.cc	(revision 1596)
@@ -0,0 +1,103 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Oscar Blanch 11/2002 <mailto:blanch@ifae.es>
+!
+!   Copyright: MAGIC Software Development, 2000-2002
+!
+!
+\* ======================================================================== */
+
+///////////////////////////////////////////////////////////////////////
+//
+// MGeomMirror
+//
+// This is the base class of the Mirror geometry. 
+//
+///////////////////////////////////////////////////////////////////////
+
+#include "MGeomMirror.h"
+
+ClassImp(MGeomMirror);
+
+// --------------------------------------------------------------------------
+//
+// Initializes a Mirror geometry with 0 values, except for fMirrorID.
+//
+MGeomMirror::MGeomMirror(Int_t mir, const char *name=NULL, const char *title=NULL)
+{
+    fName  = name  ? name  : "MGeomMirror";
+    fTitle = title ? title : "Storage container for  a mirror geometry";
+
+    fMirrorId=mir;   // the Mirror Id
+
+    fFocalDist=0.;   //  focal distance of that mirror [cm]
+    fSX=0.;          // curvilinear coordinate of mirror's center in X[cm]
+    fSY=0.;          // curvilinear coordinate of mirror's center in X[cm]
+    fX=0.;           // x coordinate of the center of the mirror [cm]
+    fY=0.;           // y coordinate of the center of the mirror [cm]
+    fZ=0.;           // z coordinate of the center of the mirror [cm]
+    fThetaN=0.;      // polar theta angle of the direction 
+                     //  where the mirror points to
+    fPhiN=0.;        // polar phi angle of the direction
+                     // where the mirror points to
+    fXN=0.;          // xn coordinate of the normal vector
+                     // in the center
+    fYN=0.;          // yn coordinate of the normal vector
+                     // in the center
+    fZN=0.;          // zn coordinate of the normal vector
+                     // in the center
+                     // Note: fXN^2*fYN^2*fZN^2 = 1
+    fDeviationX=0.;  // deviation in x [cm]
+    fDeviationY=0.;  // deviation in y [cm]
+                     // of the spot of a single mirror on the camera plane
+
+}
+
+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,
+				   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){
+    fMirrorId=mir;   // the Mirror Id
+
+    fFocalDist=focal;   //  focal distance of that mirror [cm]
+    fSX=curv_x;          // curvilinear coordinate of mirror's center in X[cm]
+    fSY=curv_y;          // curvilinear coordinate of mirror's center in X[cm]
+    fX=lin_x;           // x coordinate of the center of the mirror [cm]
+    fY=lin_y;           // y coordinate of the center of the mirror [cm]
+    fZ=lin_z;           // z coordinate of the center of the mirror [cm]
+    fThetaN=theta;      // polar theta angle of the direction 
+                     //  where the mirror points to
+    fPhiN=phi;        // polar phi angle of the direction
+                     // where the mirror points to
+    fXN=x_n;          // xn coordinate of the normal vector
+                     // in the center
+    fYN=y_n;          // yn coordinate of the normal vector
+                     // in the center
+    fZN=z_n;          // zn coordinate of the normal vector
+                     // in the center
+                     // Note: fXN^2*fYN^2*fZN^2 = 1
+    fDeviationX=dev_x;  // deviation in x [cm]
+    fDeviationY=dev_x;  // deviation in y [cm]
+                     // of the spot of a single mirror on the camera plane
+}
+
+
+
+
+
Index: trunk/MagicSoft/Mars/mgeom/MGeomMirror.h
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomMirror.h	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomMirror.h	(revision 1596)
@@ -0,0 +1,51 @@
+#ifndef MARS_MGeomMirror
+#define MARS_MGeomMirror
+
+#ifndef MARS_MParContainer
+#include "MParContainer.h"
+#endif
+
+class MGeomMirror : public MParContainer
+{
+private:
+
+    Int_t   fMirrorId;       // the Mirror Id
+
+    Float_t fFocalDist;   //  focal distance of that mirror [cm]
+    Float_t fSX;          // curvilinear coordinate of mirror's center in X[cm]
+    Float_t fSY;          // curvilinear coordinate of mirror's center in X[cm]
+    Float_t fX;           // x coordinate of the center of the mirror [cm]
+    Float_t fY;           // y coordinate of the center of the mirror [cm]
+    Float_t fZ;           // z coordinate of the center of the mirror [cm]
+    Float_t fThetaN;      // polar theta angle of the direction 
+                          //  where the mirror points to
+    Float_t fPhiN;        // polar phi angle of the direction
+                          // where the mirror points to
+    Float_t fXN;          // xn coordinate of the normal vector
+                          // in the center
+    Float_t fYN;          // yn coordinate of the normal vector
+                          // in the center
+    Float_t fZN;          // zn coordinate of the normal vector
+                          // in the center
+                          // Note: fXN^2*fYN^2*fZN^2 = 1
+    Float_t fDeviationX;  // deviation in x [cm]
+    Float_t fDeviationY;  // deviation in y [cm]
+                          // 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;   }
+
+    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
+};
+
+#endif
+
+
Index: trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomPMT.cc	(revision 1596)
@@ -0,0 +1,74 @@
+/* ======================================================================== *\
+!
+! *
+! * This file is part of MARS, the MAGIC Analysis and Reconstruction
+! * Software. It is distributed to you in the hope that it can be a useful
+! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
+! * It is distributed WITHOUT ANY WARRANTY.
+! *
+! * Permission to use, copy, modify and distribute this software and its
+! * documentation for any purpose is hereby granted without fee,
+! * provided that the above copyright notice appear in all copies and
+! * that both that copyright notice and this permission notice appear
+! * in supporting documentation. It is provided "as is" without express
+! * or implied warranty.
+! *
+!
+!
+!   Author(s): Oscar Blanch 11/2002 <mailto:blanch@ifae.es>
+!
+!   Copyright: MAGIC Software Development, 2000-2002
+!
+!
+\* ======================================================================== */
+
+///////////////////////////////////////////////////////////////////////
+//
+// MGeomPMT
+//
+// This is the base class of the PMT characteristics. 
+//
+///////////////////////////////////////////////////////////////////////
+
+#include "MLog.h"
+#include "MLogManip.h"
+
+#include "MGeomPMT.h"
+
+ClassImp(MGeomPMT);
+
+// --------------------------------------------------------------------------
+//
+// Initializes a Mirror geometry with 0 values, except for fMirrorID.
+//
+MGeomPMT::MGeomPMT(Int_t pmt, const char *name=NULL, const char *title=NULL)
+{
+    fName  = name  ? name  : "MGeomPMT";
+    fTitle = title ? title : "Storage container for  a PMT characteristics";
+
+    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;
+
+}
+
+
+
+
+
Index: trunk/MagicSoft/Mars/mgeom/MGeomPMT.h
===================================================================
--- trunk/MagicSoft/Mars/mgeom/MGeomPMT.h	(revision 1596)
+++ trunk/MagicSoft/Mars/mgeom/MGeomPMT.h	(revision 1596)
@@ -0,0 +1,35 @@
+#ifndef MARS_MGeomPMT
+#define MARS_MGeomPMT
+
+#ifndef ROOT_TArrayF
+#include <TArrayF.h>
+#endif
+#ifndef MARS_MParContainer
+#include "MParContainer.h"
+#endif
+
+class MGeomPMT : public MParContainer
+{
+private:
+
+    Int_t   fPMTId;       // the PMT Id
+
+    TArrayF *fWavelength;  // List of wavelength
+    TArrayF *fQE;          // QE values
+
+public:
+
+    MGeomPMT(Int_t pmt=-1,const char *name=NULL, const char *title=NULL);
+
+    Int_t   GetPMTId() const         { return fPMTId;   }
+
+    void    SetArrays(Int_t dim) {fWavelength->Set(dim);fQE->Set(dim);}
+
+    void    SetPMTContent(Int_t pmt, TArrayF *wav, TArrayF *qe);
+
+    ClassDef(MGeomPMT, 1)  // class containing information about PMTs
+};
+
+#endif
+
+
Index: trunk/MagicSoft/Mars/mgeom/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mgeom/Makefile	(revision 1594)
+++ trunk/MagicSoft/Mars/mgeom/Makefile	(revision 1596)
@@ -31,5 +31,7 @@
            MGeomCam.cc \
            MGeomCamCT1.cc \
-           MGeomCamMagic.cc
+           MGeomCamMagic.cc \
+	   MGeomMirror.cc \
+	   MGeomPMT.cc
 
 SRCS    = $(SRCFILES)
