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);