Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 9563)
+++ trunk/MagicSoft/Mars/Changelog	(revision 9564)
@@ -24,4 +24,20 @@
      - moved ARCHDEFS from DEFINES to CXXFLAGS otherwise it might get
        ignored
+
+   * mbase/MQuaternion.h:
+     - added member-function to normalize vector part of quaternion
+
+   * mbase/MTime.cc:
+     - issue an error if __LINUX__ is not set
+
+   * mjobs/MJSimulation.cc:
+     - set name of reflector explicitly to "Reflector"
+
+   * msimreflector/MMirror.h:
+     - added member function to set z position (for optimization purpose)
+     - added SimPSF(TVector3&)
+
+   * msimreflector/MSimReflector.[h,cc]:
+     - added name of reflector as data member 
 
 
Index: trunk/MagicSoft/Mars/NEWS
===================================================================
--- trunk/MagicSoft/Mars/NEWS	(revision 9563)
+++ trunk/MagicSoft/Mars/NEWS	(revision 9564)
@@ -2,4 +2,11 @@
 
 == <cvs> ==
+
+ ;general:
+
+   * On some systems (version of make?) the __LINUX__ definition was not set
+     when compiling. This lead to MTime(-1) not working properly. Fixed.
+
+
 
 == Version 2.4 (2009/12/23) ==
Index: trunk/MagicSoft/Mars/mbase/MQuaternion.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MQuaternion.h	(revision 9563)
+++ trunk/MagicSoft/Mars/mbase/MQuaternion.h	(revision 9564)
@@ -76,4 +76,6 @@
     //void Normalize() { fVectorPart *= TMath::Sqrt(1 - R2())/Z(); }
 
+    void NormalizeVector() { fVectorPart = fVectorPart.Unit(); }
+
     ClassDef(MQuaternion, 1)
 };
Index: trunk/MagicSoft/Mars/mbase/MTime.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 9563)
+++ trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 9564)
@@ -692,5 +692,5 @@
         Set(tv);
 #else
-    Clear();
+#error __LINUX__ not set
 #endif
 }
Index: trunk/MagicSoft/Mars/mjobs/MJSimulation.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJSimulation.cc	(revision 9563)
+++ trunk/MagicSoft/Mars/mjobs/MJSimulation.cc	(revision 9564)
@@ -398,4 +398,5 @@
     MSimReflector reflect;
     reflect.SetNameGeomCam("GeomCones");
+    reflect.SetNameReflector("Reflector");
 //  MSimStarField stars;
 
Index: trunk/MagicSoft/Mars/msimreflector/MMirror.h
===================================================================
--- trunk/MagicSoft/Mars/msimreflector/MMirror.h	(revision 9563)
+++ trunk/MagicSoft/Mars/msimreflector/MMirror.h	(revision 9564)
@@ -49,4 +49,6 @@
     }
 
+    void SetZ(Double_t z) { fPos.SetZ(z); }
+
     Double_t X() const { return fPos.X(); }
     Double_t Y() const { return fPos.Y(); }
@@ -65,4 +67,8 @@
 
     TVector3 SimPSF(const TVector3 &n, Double_t F, Double_t psf) const;
+    TVector3 SimPSF(const TVector3 &n) const
+    {
+        return SimPSF(n, fFocalLength, fSigmaPSF/10); // Convert from mm to cm
+    }
 
     Bool_t ExecuteMirror(MQuaternion &p, MQuaternion &u) const;
Index: trunk/MagicSoft/Mars/msimreflector/MSimReflector.cc
===================================================================
--- trunk/MagicSoft/Mars/msimreflector/MSimReflector.cc	(revision 9563)
+++ trunk/MagicSoft/Mars/msimreflector/MSimReflector.cc	(revision 9564)
@@ -75,5 +75,6 @@
     : fEvt(0), fMirror0(0), fMirror1(0), fMirror2(0), fMirror3(0),
     fMirror4(0), /*fRunHeader(0),*/ fEvtHeader(0), fReflector(0),
-    fGeomCam(0), fPointing(0), fDetectorMargin(0)
+    fGeomCam(0), fPointing(0), fNameReflector("MReflector"),
+    fDetectorMargin(0)
 {
     fName  = name  ? name  : "MSimReflector";
@@ -103,8 +104,8 @@
         return kFALSE;
 
-    fReflector = (MReflector*)pList->FindObject("Reflector", "MReflector");
+    fReflector = (MReflector*)pList->FindObject(fNameReflector, "MReflector");
     if (!fReflector)
     {
-        *fLog << err << "Reflector [MReflector] not found... aborting." << endl;
+        *fLog << err << fNameReflector << " [MReflector] not found..." << endl;
         return kFALSE;
     }
@@ -112,5 +113,5 @@
     if (fReflector->GetNumMirrors()==0)
     {
-        *fLog << err << "ERROR - Reflector doesn't contain a single mirror." << endl;
+        *fLog << err << "ERROR - Reflector '" << fNameReflector << "' doesn't contain a single mirror." << endl;
         return kFALSE;
     }
@@ -119,5 +120,6 @@
     if (!fGeomCam)
     {
-        *fLog << inf << fNameGeomCam << " [MGeomCam] not found..." << endl;
+        if (!fNameGeomCam.IsNull())
+            *fLog << inf << fNameGeomCam << " [MGeomCam] not found..." << endl;
 
         fGeomCam = (MGeomCam*)pList->FindObject("MGeomCam");
@@ -300,5 +302,5 @@
 
     if (fSigmaPSF>0)
-        n += SimPSF(n, fFocalLength, fSigmaPSF/10); // Convert from mm to cm
+        n += SimPSF(n);
 
     // Changes also the sign of the z-direction of flight
Index: trunk/MagicSoft/Mars/msimreflector/MSimReflector.h
===================================================================
--- trunk/MagicSoft/Mars/msimreflector/MSimReflector.h	(revision 9563)
+++ trunk/MagicSoft/Mars/msimreflector/MSimReflector.h	(revision 9564)
@@ -31,4 +31,5 @@
 
     TString fNameGeomCam;        // Name of the geometry container storing the APD gemeotry
+    TString fNameReflector;      // Name of the container storing the reflector geometry 
 
     Double_t fDetectorMargin;    // A margin around the detector (MGeomCam::HitCamera) in which photons are also stored
@@ -45,5 +46,6 @@
 
     // MSimReflector
-    void SetNameGeomCam(const char *name="MGeomCam") { fNameGeomCam = name; }
+    void SetNameGeomCam(const char *name="MGeomCam")     { fNameGeomCam   = name; }
+    void SetNameReflector(const char *name="MReflector") { fNameReflector = name; }
 
     ClassDef(MSimReflector, 0) // Task to calculate reflection on a mirror
