diff --git a/compact/mrich.xml b/compact/mrich.xml
index cfccfcc5dd3d7a3c2ddda34459cf7fb117300025..91fce35e8c286287a6b1851ac0108e9744c72c9e 100644
--- a/compact/mrich.xml
+++ b/compact/mrich.xml
@@ -151,6 +151,7 @@
         <!--position x="782.7750000006"  y="316.0250000001"/-->
         <!--position x="782.7750000006"  y="453.3750000002"/-->
       </positions>
+      <layer thickness="MRICHCarbonFrame_thickness" material="CarbonFiber"/>
     </detector>
   </detectors>
 
diff --git a/src/MRich_geo.cpp b/src/MRich_geo.cpp
index 9eb0ff27dbb3559b0ec0d3b768f2392fc3ae910d..e00c2ece8e62de4df045b0b02b17c75e72ad4ed3 100644
--- a/src/MRich_geo.cpp
+++ b/src/MRich_geo.cpp
@@ -355,6 +355,14 @@ static Ref_t createDetector(Detector& description, xml::Handle_t e, SensitiveDet
     }
   }
 
+  // place frame
+  xml_comp_t x_layer = x_det.child(_Unicode(layer));
+  double   layer_thickness = x_layer.thickness();
+  Material layer_mat = description.material(x_layer.materialStr());
+  Tube   frameShape(rmin, rmax, layer_thickness / 2., 0., 2 * M_PI);
+  Volume frameVol("MRICH_Frame", frameShape, layer_mat);
+  pv = envVol.placeVolume(frameVol, Position(0, 0, (length - layer_thickness) / 2.0));
+
   // place envelope
   Volume motherVol = description.pickMotherVolume(sdet);
   if (reflect) {