diff --git a/compact/LGC.xml b/compact/LGC.xml
index 8fde58649d448b595631c6407abca3b551f1c0f0..3e237649bad19606265a8cc29d871dd03c7b7f29 100644
--- a/compact/LGC.xml
+++ b/compact/LGC.xml
@@ -37,13 +37,6 @@
     <placement x="0*cm" y="211.411*cm" z="50.6678*cm"/>
     <rotation x="85.0*degree" y="180*degree" z="180*degree"/>
   </piece>
-  <!--
-  <piece id="3" >
-    <comment>Mirror 3 is the combination of winston cone and PMT assembly</comment>        
-    <placement x="0*cm" y="255*cm" z="-40*cm"/>
-    <rotation x="55.0*degree" y="0" z="0"/>
-  </piece>
-  -->
 </mirrors>
 
 <comment>
@@ -53,6 +46,7 @@
   <placement x="0*cm" y="255*cm" z="-40*cm"/>
   <rotation x="55.0*degree" y="0" z="0"/>
   <cone_dimensions thickness="4*mm" length="30.*cm" radius1="7.0*cm" radius2="21.0*cm"/>
+  <cone_dimensions thickness="4*mm" length="30.*cm" radius1="7.0*cm" radius2="15.0*cm"/>
   <tube_dimensions radius="11.28*cm" length="30.*cm"/>
 </winston_cone>
 
diff --git a/src/GasCherenkov_geo.cpp b/src/GasCherenkov_geo.cpp
index cfb46d1626768b06ae9a2567a17043abbf554fb0..de9ba9bc4c1af47505308f6c0c12eb64542bb7cc 100644
--- a/src/GasCherenkov_geo.cpp
+++ b/src/GasCherenkov_geo.cpp
@@ -76,6 +76,11 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
     envPV.addPhysVolID("system", det_id);
     det.setPlacement(envPV);
 
+    // optical surfaces
+    OpticalSurfaceManager surfMgr    = desc.surfaceManager();
+    OpticalSurface        mirrorSurf = surfMgr.opticalSurface("MirrorOpticalSurface");
+    OpticalSurface        pmtSurf    = surfMgr.opticalSurface("PMTOpticalSurface");
+
     // mirrors
     auto x_mirrors = x_det.child(_Unicode(mirrors));
     int i = 1;
@@ -93,6 +98,15 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
         Volume v_mir("vol_mirror_" + std::to_string(i), IntersectionSolid(mir_cutout, mir_shell, mir_trans), mmat);
         auto   mir_trans2 = Transform3D(Position(mloc.x(), mloc.y(), mloc.z()))*RotationZYX(mrot.z(), mrot.y(), mrot.x());
         PlacedVolume pv_mir = v_sector.placeVolume(v_mir, mir_trans2);
+        DetElement   de_mir(det, "de_mirror" + std::to_string(i) + "_shape", 1);
+        pv_mir.addPhysVolID("mirror", 1);
+        de_mir.setPlacement(pv_mir);
+        sens.setType("photoncounter");
+        v_mir.setSensitiveDetector(sens);
+
+        // optical surface
+        SkinSurface mirrorBorder_Surf(desc, de_mir, "LGCmirror", mirrorSurf, v_mir);
+        mirrorBorder_Surf.isValid();
     }
 
     // sectors
@@ -124,7 +138,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
     double    tube_radius = tdims.radius();
     double    tube_length = tdims.length();
 
-    DetElement       de_wcone(det, "de_winston_cone1", 1);
+    DetElement       de_winston_cone(det, "de_winston_cone1", 1);
     Tube             winston_tube(tube_radius, tube_radius + cone_thickness, tube_length / 2.0);
     Paraboloid       winston_cone1(cone_radius1 + cone_thickness, cone_radius2 + cone_thickness, cone_length / 2.0 );
     Paraboloid       winston_cone2(cone_radius1, cone_radius2, cone_length / 2.0 );
@@ -135,19 +149,10 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
         v_winston_cone_solid, Transform3D(Position(wpl.x(), wpl.y(), wpl.z())) *
                        RotationZYX(wrot.z(), wrot.y(), wrot.x()) *
                        Transform3D(Position(0, 0, tube_length / 2.0 + 5.0 * mm)));
-
-    //// ---------------
-    return det;
-}
-/*
-    //std::cout << " LGC_pmt_y_pos/cm " << LGC_pmt_y_pos/cm  << "\n";
-    //std::cout << " LGC_pmt_z_pos/cm " << LGC_pmt_z_pos/cm  << "\n";
-    //mirrorPV.addPhysVolID("layer", 2).addPhysVolID("module", 1);
-    //mirror_DE.setPlacement(mirrorPV);
-    //sens.setType("photoncounter");
-    //mirrorVol.setSensitiveDetector(sens);
-  
-    //// ---------------
+    de_winston_cone.setPlacement(pv_winston_cone_solid);
+    // optical surface
+    SkinSurface winstonBorder_Surf(desc, de_winston_cone, "LGCWinstonCone", mirrorSurf, v_winston_cone_solid);
+    winstonBorder_Surf.isValid();
 
     //// ---------------
     //// Dummy PMT surface
@@ -155,36 +160,26 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
     Box          pmt_array(LGC_pmt_array_size / 2.0, LGC_pmt_array_size / 2.0, 5 * mm / 2.0);
     Volume       v_pmt_array("v_pmt_array", pmt_array, rad_mat);
     PlacedVolume pv_pmt_array =
-        v_sector.placeVolume(v_pmt_array, Transform3D(Position(0, LGC_pmt_y_pos, LGC_pmt_z_pos)) *
-                                                RotationX(LGC_pmt_tilt_angle));
+        v_sector.placeVolume(v_pmt_array, Transform3D(Position(wpl.x(), wpl.y(), wpl.z())) *
+                                          RotationZYX(wrot.z(), wrot.y(), wrot.x()));
 
     pv_pmt_array.addPhysVolID("mirror", 3);
     de_pmt_array.setPlacement(pv_pmt_array);
     sens.setType("photoncounter");
     v_pmt_array.setSensitiveDetector(sens);
 
+    // optical surface
+    SkinSurface pmtBorder_Surf(desc, de_pmt_array, "LGCPMTsurface", pmtSurf, v_pmt_array);
+    pmtBorder_Surf.isValid();
+
     // copper layer inside to stop photons
     Box  pmt_array_backing(LGC_pmt_array_size/2.0, LGC_pmt_array_size/2.0, 1*mm/2.0);
+    auto Copper = desc.material("Copper");
     Volume v_pmt_array_backing("v_pmt_array_backing", pmt_array_backing, Copper);
     PlacedVolume pv_pmt_array_backing = v_pmt_array.placeVolume(v_pmt_array_backing, Position(0,0,0));
 
-    // Optical Surfaces
-
-    OpticalSurfaceManager surfMgr = desc.surfaceManager();
-    OpticalSurface mirrorSurf  = surfMgr.opticalSurface("MirrorOpticalSurface");
-    OpticalSurface pmtSurf    = surfMgr.opticalSurface("PMTOpticalSurface");
-    //BorderSurface  mirrorBorder_Surf   = BorderSurface(desc, det, "RICHmirror", mirrorSurf, mirrorPV,   envPV);
-    SkinSurface mirrorBorder_Surf(desc,de_mirror1_shape,"LGCmirror", mirrorSurf, v_mirror1_shape);
-    SkinSurface winstonBorder_Surf(desc,de_winston_cone,"LGCWinstonCone", mirrorSurf, v_winston_cone_solid);
-    SkinSurface pmtBorder_Surf(desc,de_pmt_array,"LGCPMTsurface", pmtSurf, v_pmt_array);
-    //BorderSurface  bubbleSurf = BorderSurface(description, sdet, "TankBubble", airSurf,   bubblePlace, tankPlace);
-    mirrorBorder_Surf.isValid();
-    winstonBorder_Surf.isValid();
-    pmtBorder_Surf.isValid();
-    //tankSurf.isValid();
-
+    return det;
 }
-*/
 //@}
 // clang-format off
 DECLARE_DETELEMENT(SoLID_GasCherenkov, createDetector)