diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml
index 97a5fdb43d5cc9ea4144ac499f8983d84a57d606..e1eb51e9d6a2a1f1e11af9e581e5d39c65242345 100644
--- a/compact/central_tracker.xml
+++ b/compact/central_tracker.xml
@@ -410,7 +410,7 @@
           zstart="TrackerEndcapOuter_zmin" />
         <ring vis="AnlRed"
           r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0"
-          zstart="TrackerEndcapOuter_zmin + 1.0*cm"
+          zstart="0.0*cm"
           nmodules="12" dz="10 * mm" module="Module1" />
       </layer>
     </detector>
diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp
index ed8018959f03e34df1e57efb8779079842a3e0e8..5a0d5064c06e27f544c6aeb3115cc5ec03dedee1 100644
--- a/src/TrapEndcapTracker_geo.cpp
+++ b/src/TrapEndcapTracker_geo.cpp
@@ -105,6 +105,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     double      layer_rmax   = l_env.attr<double>(_Unicode(rmax));
     double      layer_length = l_env.attr<double>(_Unicode(length));
     double      layer_zstart = l_env.attr<double>(_Unicode(zstart));
+    double      layer_center_z =  layer_zstart + layer_length/2.0;
     //printout(INFO,"ROOTGDMLParse","+++ Read geometry from GDML file file:%s",input.c_str());
     //std::cout << "SiTracker Endcap layer " << l_id << " zstart = " << layer_zstart/dd4hep::mm << "mm ( " << layer_length/dd4hep::mm << " mm thick )\n";
 
@@ -116,11 +117,16 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
 
     PlacedVolume layer_pv;
     if (reflect) {
-      layer_pv = assembly.placeVolume(layer_vol, Position(0,0,-1.0e-9));//-layer_zstart-layer_length/2));
+
+      layer_pv = assembly.placeVolume(
+          layer_vol,
+          Transform3D(RotationZYX(0.0, -M_PI, 0.0), Position(0, 0, -layer_center_z)));
+      //-layer_zstart-layer_length/2));
       layer_pv.addPhysVolID("barrel", 3).addPhysVolID("layer", l_id);
       layer_name += "_N";
     } else {
-      layer_pv = assembly.placeVolume(layer_vol);//, Position(0, 0, +layer_zstart + layer_length / 2));
+      layer_pv = assembly.placeVolume(layer_vol, Position(0, 0, layer_center_z));
+      //, Position(0, 0, +layer_zstart + layer_length / 2));
       layer_pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id);
       layer_name += "_P";
     }
@@ -148,20 +154,21 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
         string     m_base = _toString(l_id, "layer%d") + _toString(mod_num, "_module%d");
         double     x      = -r * std::cos(phi);
         double     y      = -r * std::sin(phi);
-        DetElement module(sdet, m_base + "_pos", det_id);
-        pv = assembly.placeVolume(m_vol,
-                                  Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz)));
-        pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
-        module.setPlacement(pv);
-        for (size_t ic = 0; ic < sensVols.size(); ++ic) {
-          PlacedVolume sens_pv = sensVols[ic];
-          DetElement   comp_elt(module, sens_pv.volume().name(), mod_num);
-          comp_elt.setPlacement(sens_pv);
-        }
 
-        if (reflect) {
+        if (!reflect) {
+          DetElement module(sdet, m_base + "_pos", det_id);
+          pv = assembly.placeVolume(
+              m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz)));
+          pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
+          module.setPlacement(pv);
+          for (size_t ic = 0; ic < sensVols.size(); ++ic) {
+            PlacedVolume sens_pv = sensVols[ic];
+            DetElement   comp_elt(module, sens_pv.volume().name(), mod_num);
+            comp_elt.setPlacement(sens_pv);
+          }
+        } else {
           pv = assembly.placeVolume(
-              m_vol, Transform3D(RotationZYX(M_PI, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz)));
+              m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz)));
           pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num);
           DetElement r_module(sdet, m_base + "_neg", det_id);
           r_module.setPlacement(pv);