Index: trunk/Mars/msimreflector/MFresnelLens.cc
===================================================================
--- trunk/Mars/msimreflector/MFresnelLens.cc	(revision 19675)
+++ trunk/Mars/msimreflector/MFresnelLens.cc	(revision 19753)
@@ -205,5 +205,5 @@
     fGrooves.resize(num);
 
-    for (int i=0; i<num; i++)
+    for (uint32_t i=0; i<num; i++)
     {
         const double r0 = i*width;
@@ -326,4 +326,13 @@
 Int_t MFresnelLens::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
 {
+    Bool_t rc = kFALSE;
+
+    if (IsEnvDefined(env, prefix, "SurfaceRoughness", print))
+    {
+        rc = kTRUE;
+        if (!GetEnvValue(env, prefix, "SurfaceRoughness", fPSF))
+            return kERROR;
+    }
+
     const int correction  = GetEnvValue(env, prefix, "Transmission.FresnelCorrection", -1);
     const float thickness = GetEnvValue(env, prefix, "Transmission.Thickness", -1.0); // [cm]
@@ -335,8 +344,8 @@
 
     if (!correction_valid && !thickness_valid && !fname_valid)
-        return kFALSE;
+        return rc;
 
     if (correction_valid && thickness_valid && fname_valid)
-        return ReadTransmission(fname, thickness, correction) >= 0;
+        return ReadTransmission(fname, thickness, correction) >= 0 || rc;
 
     *fLog << err << "Reading transmission file required FileName, Thickness and FresnelCorrection." << endl;
@@ -1235,5 +1244,5 @@
 
     // Calculate the ordinal number of the groove correpsonding to rx
-    const int ix = TMath::FloorNint(rx/fW);
+    const uint32_t ix = TMath::FloorNint(rx/fW);
 
     // FIXME: The Z-coordinate (cone.h) is actually a line through two points!!!
@@ -1475,5 +1484,5 @@
         p.fVectorPart.SetZ(0);//fH/2); Found by try-and-error
 
-        return cnt>=fMinHits && (fMaxHits==0 || cnt<=fMaxHits) ? cnt : -1;;
+        return uint32_t(cnt)>=fMinHits && (fMaxHits==0 || uint32_t(cnt)<=fMaxHits) ? cnt : -1;;
     }
     catch (const raytrace_exception &e)
