diff --git a/Detector/DetCRD/compact/CRD_common_v01/VXD_StaggeredLadder_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/VXD_StaggeredLadder_v01_01.xml
index dde9f4808f438affd76e9fb752438b987492e6e5..2c3c63d33dfebfe092b71deddd759918a9a39228 100644
--- a/Detector/DetCRD/compact/CRD_common_v01/VXD_StaggeredLadder_v01_01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v01/VXD_StaggeredLadder_v01_01.xml
@@ -19,9 +19,18 @@
 
   <detectors>
     <detector id="DetID_VXD" name="VXD" type="SiTrackerStaggeredLadder_v01" vis="VXDVis" readout="VXDCollection" insideTrackingVolume="true">
-    <envelope>
-		  <shape type="Tube" rmin="VXD_inner_radius" rmax="VXD_outer_radius" dz="VXD_half_length" material="Air"/>
-    </envelope>    
+      <envelope>
+	<shape type="BooleanShape" operation="Subtraction" material="Air" >
+	  <shape type="BooleanShape" operation="Subtraction" material="Air" >
+            <shape type="Tube" rmin="VXD_inner_radius+1*mm" rmax="VXD_outer_radius" dz="VXD_half_length" />
+            <shape type="Cone" rmin1="0" rmax1="BeamPipe_VertexRegion_rmax" rmin2="0" rmax2="Vertex_Side_rmin" z="(VXD_half_length-BeamPipe_CentralAl_zmax)/2." />
+            <position x="0" y="0" z="VXD_half_length-(VXD_half_length-BeamPipe_CentralAl_zmax)/2."/>
+          </shape>
+	  <shape type="Cone" rmin1="0" rmax1="BeamPipe_VertexRegion_rmax" rmin2="0" rmax2="Vertex_Side_rmin" z="(VXD_half_length-BeamPipe_CentralAl_zmax)/2." />
+          <position x="0" y="0" z="-(VXD_half_length-(VXD_half_length-BeamPipe_CentralAl_zmax)/2.)"/>
+          <rotation x="0" y="180.*deg" z="0" />
+	</shape>
+      </envelope>
 
       <type_flags type="DetType_TRACKER + DetType_BARREL + DetType_PIXEL "/>
 
@@ -92,7 +101,7 @@
   
   <readouts>
     <readout name="VXDCollection">
-      <id>system:5,side:-2,layer:9,module:8,sensor:8,barrelside:-2</id>
+      <id>system:5,side:-2,layer:9,module:8,active:8,sensor:8</id>
     </readout>
   </readouts>
 </lccdd>
diff --git a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
index 120bbab25b83cce80d98b0345faaa566220910c9..1496aff196289e0d5700f48255054a38bcc5f3f9 100644
--- a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
+++ b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp
@@ -274,11 +274,11 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
      double zpos = -sensor_total_z/2.0 + sensor_active_len/2.0 + isensor*(sensor_active_len + dead_gap);
      pv = SensorTopEnvelopeLogical.placeVolume(SensorLogical, Position(xpos,ypos_active,zpos));
      //pv.addPhysVolID("topsensor",  isensor ) ;
-     pv.addPhysVolID("sensor",  isensor ).addPhysVolID("barrelside", 1) ;
+     pv.addPhysVolID("layer", layer_id*2+1).addPhysVolID("active", 0).addPhysVolID("sensor", isensor) ;
      TopSensor_pv.push_back(pv);
      pv = SensorBottomEnvelopeLogical.placeVolume(SensorLogical, Position(xpos,ypos_active,zpos));
      //pv.addPhysVolID("bottomsensor",  isensor ) ;
-     pv.addPhysVolID("sensor",  isensor ).addPhysVolID("barrelside", -1) ;
+     pv.addPhysVolID("layer", layer_id*2  ).addPhysVolID("active", 0).addPhysVolID("sensor", isensor) ;
      BottomSensor_pv.push_back(pv);
      pv = SensorTopEnvelopeLogical.placeVolume(SensorDeadLogical, Position(xpos,ypos_dead,zpos));
      pv = SensorBottomEnvelopeLogical.placeVolume(SensorDeadLogical, Position(xpos,ypos_dead,zpos));
@@ -348,10 +348,10 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
     }
     Transform3D tr (RotationZYX(ladder_dphi*i,0.,0.),Position(ladder_radius*cos(ladder_phi0+ladder_dphi*i), ladder_radius*sin(ladder_phi0+ladder_dphi*i), 0.));
     pv = layer_assembly.placeVolume(LadderLogical,tr);
-    pv.addPhysVolID("layer", layer_id ).addPhysVolID("module", i ) ; 
+    pv.addPhysVolID("module", i ) ; 
     ladderDE.setPlacement(pv);
     std::cout << ladder_enum.str() << " done." << endl;
-
+    if(i==0) std::cout << "xy=" << ladder_radius*cos(ladder_phi0) << " " << ladder_radius*sin(ladder_phi0) << std::endl;
   }
   
   // package the reconstruction data
@@ -364,12 +364,12 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
   topLayer.lengthSensor         = sensor_active_len;
   topLayer.distanceSupport      = sensitive_radius;
   topLayer.thicknessSupport     = support_thickness / 2.0;
-  topLayer.offsetSupport        = ladder_offset;
+  topLayer.offsetSupport        = -ladder_offset;
   topLayer.widthSupport         = support_width;
   topLayer.zHalfSupport         = support_length / 2.0;
-  topLayer.distanceSensitive    = sensitive_radius + support_thickness / 2.0;
+  topLayer.distanceSensitive    = sensitive_radius + support_height / 2.0 + flex_thickness;
   topLayer.thicknessSensitive   = sensor_thickness;
-  topLayer.offsetSensitive      = ladder_offset;
+  topLayer.offsetSensitive      = -ladder_offset + (support_width/2.0 - sensor_active_width/2.0);
   topLayer.widthSensitive       = sensor_active_width;
   topLayer.zHalfSensitive       = (n_sensors_per_side*(sensor_active_len + dead_gap) - dead_gap) / 2.0;
 
@@ -377,19 +377,19 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h
   bottomLayer.phi0                 = 0.;
   bottomLayer.sensorsPerLadder     = n_sensors_per_side;
   bottomLayer.lengthSensor         = sensor_active_len;
-  bottomLayer.distanceSupport      = sensitive_radius - support_thickness / 2.0;
+  bottomLayer.distanceSupport      = sensitive_radius - support_height / 2.0 - flex_thickness;
   bottomLayer.thicknessSupport     = support_thickness / 2.0;
-  bottomLayer.offsetSupport        = ladder_offset;
+  bottomLayer.offsetSupport        = -ladder_offset;
   bottomLayer.widthSupport         = support_width;
   bottomLayer.zHalfSupport         = support_length / 2.0;
-  bottomLayer.distanceSensitive    = sensitive_radius - support_thickness / 2.0 - sensor_thickness;
+  bottomLayer.distanceSensitive    = sensitive_radius - support_height / 2.0 - sensor_thickness - flex_thickness;
   bottomLayer.thicknessSensitive   = sensor_thickness;
-  bottomLayer.offsetSensitive      = ladder_offset;
+  bottomLayer.offsetSensitive      = -ladder_offset + (support_width/2.0 - sensor_active_width/2.0);
   bottomLayer.widthSensitive       = sensor_active_width;
   bottomLayer.zHalfSensitive       = (n_sensors_per_side*(sensor_active_len + dead_gap) - dead_gap) / 2.0;
 
-  zPlanarData->layers.push_back(topLayer);
   zPlanarData->layers.push_back(bottomLayer);
+  zPlanarData->layers.push_back(topLayer);
  }
  std::cout << (*zPlanarData) << endl;
  vxd.addExtension< ZPlanarData >(zPlanarData);