diff --git a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml index cb346b082a29872267f46861cc7aeb3073ad6ca3..d833c27fb77fa52e39d1dc670475171946ec9919 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml @@ -13,16 +13,18 @@ <define> <constant name="SDT_radius_min" value="InnerTracker_inner_radius"/> <constant name="SDT_radius_max" value="OuterTracker_outer_radius"/> + <constant name="SDT_half_length" value="MainTracker_half_length"/> <constant name="SDT_length" value="SDT_half_length*2"/> + <constant name="DC_length" value="DC_half_length*2"/> <constant name="SDT_inner_chamber_radius_min" value="235*mm"/> <constant name="SDT_inner_chamber_radius_max" value="InnerTracker_outer_radius"/> - <constant name="SDT_inner_chamber_length" value="SDT_length"/> + <constant name="SDT_inner_chamber_length" value="DC_length"/> <constant name="SDT_outer_chamber_radius_min" value="OuterTracker_inner_radius"/> <constant name="SDT_outer_chamber_radius_max" value="1715*mm"/> - <constant name="SDT_outer_chamber_length" value="SDT_length"/> + <constant name="SDT_outer_chamber_length" value="DC_length"/> <constant name="SDT_inner_chamber_layer_number" value="67"/> <constant name="SDT_outer_chamber_layer_number" value="63"/> @@ -38,13 +40,17 @@ <constant name="SDT_outer_chamber_outer_wall_radius_min" value="1715*mm"/> <constant name="SDT_outer_chamber_outer_wall_radius_max" value="1717.8*mm"/> + <constant name="DC_Endcap_rmin" value="SDT_radius_min"/> + <constant name="DC_Endcap_rmax" value="SDT_radius_max"/> + <constant name="DC_Endcap_dz" value="DC_Endcap_z"/> + </define> <detectors> <detector id="DetID_DC" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="BlueVis" sensitive="true" insideTrackingVolume="true"> <envelope vis="SeeThrough"> <shape type="BooleanShape" operation="Union" material="Air"> - <shape type="Tube" rmin="SDT_radius_min" rmax="909*mm" dz="SDT_half_length" /> + <shape type="Tube" rmin="SDT_radius_min" rmax="909*mm" dz="SDT_half_length" /> <shape type="Tube" rmin="1084.8*mm" rmax="SDT_radius_max" dz="SDT_half_length" /> </shape> </envelope> @@ -67,7 +73,7 @@ <readouts> <readout name="DriftChamberHitsCollection"> - <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="SDT_length" identifier_phi="cellID" /> + <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" /> <id>system:8,chamber:1,layer:8,cellID:16</id> </readout> diff --git a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml index d7c15e97cfa2c49240cebbe6a1fa0196ae0ff2b3..39f0606567dac772e43d09efdd335670f0f2482f 100644 --- a/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_o1_v01/CRD_Dimensions_v01_01.xml @@ -80,8 +80,10 @@ <constant name="Vertex_inner_radius" value="BeamPipe_Central_inner_radius+BeamPipe_Be_total_thickness"/> <constant name="Vertex_outer_radius" value="101*mm"/> <constant name="Vertex_half_length" value="200*mm"/> - - <constant name="MainTracker_half_length" value="2225*mm" /> + + <constant name="DC_Endcap_z" value="0.1*mm"/> + <constant name="DC_half_length" value="2225*mm" /> + <constant name="MainTracker_half_length" value="DC_half_length+DC_Endcap_z" /> <constant name="InnerTracker_half_length" value="MainTracker_half_length" /> <constant name="InnerTracker_inner_radius" value="234*mm"/> <constant name="InnerTracker_outer_radius" value="906*mm"/> diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml index bfd81e73dea5721de9e4b9bbb16f0d25512b6d3b..96e8639bedd406be881a3dc3d623ad318acacff7 100644 --- a/Detector/DetDriftChamber/compact/det.xml +++ b/Detector/DetDriftChamber/compact/det.xml @@ -28,16 +28,20 @@ <constant name="DetID_DC" value="7"/> <constant name="SDT_radius_min" value="234*mm"/> <constant name="SDT_radius_max" value="1720*mm"/> - <constant name="SDT_half_length" value="2225*mm"/> + + <constant name="DC_Endcap_dz" value="0.1*mm"/> + + <constant name="SDT_half_length" value="2225*mm+DC_Endcap_dz"/> <constant name="SDT_length" value="SDT_half_length*2"/> + <constant name="DC_length" value="SDT_length-DC_Endcap_dz*2"/> <constant name="SDT_inner_chamber_radius_min" value="235*mm"/> <constant name="SDT_inner_chamber_radius_max" value="906*mm"/> - <constant name="SDT_inner_chamber_length" value="SDT_length"/> + <constant name="SDT_inner_chamber_length" value="DC_length"/> <constant name="SDT_outer_chamber_radius_min" value="1085*mm"/> <constant name="SDT_outer_chamber_radius_max" value="1715*mm"/> - <constant name="SDT_outer_chamber_length" value="SDT_length"/> + <constant name="SDT_outer_chamber_length" value="DC_length"/> <constant name="SDT_inner_chamber_layer_number" value="67"/> <constant name="SDT_outer_chamber_layer_number" value="63"/> @@ -53,6 +57,9 @@ <constant name="SDT_outer_chamber_outer_wall_radius_min" value="1715*mm"/> <constant name="SDT_outer_chamber_outer_wall_radius_max" value="1717.8*mm"/> + <constant name="DC_Endcap_rmin" value="SDT_radius_min"/> + <constant name="DC_Endcap_rmax" value="SDT_radius_max"/> + </define> <display> @@ -61,6 +68,7 @@ <vis name="VisibleRed" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> <vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> <vis name="VisibleGreen" alpha="1.0" r="0.0" g="1.0" b="0.0" drawingStyle="solid" lineStyle="solid" showDaughters="true" visible="true"/> + <vis name="YellowVis" alpha="1.0" r="1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> </display> <regions> @@ -95,7 +103,7 @@ <readouts> <readout name="DriftChamberHitsCollection"> - <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="SDT_length" identifier_phi="cellID" /> + <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" /> <id>system:8,chamber:1,layer:8,cellID:16</id> </readout> diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp index 8a978ef41b86175dc1d95f4097e258be5f3bf9c5..48a311d5fe750d53c7dfcb2644898325194b50ef 100644 --- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp +++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp @@ -143,6 +143,14 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, } } + // End cap + double Endcap_rmin = theDetector.constant<double>("DC_Endcap_rmin"); + double Endcap_rmax = theDetector.constant<double>("DC_Endcap_rmax"); + double Endcap_z = theDetector.constant<double>("DC_Endcap_dz"); + dd4hep::Tube det_Endcap_solid(Endcap_rmin,Endcap_rmax,Endcap_z); + dd4hep::Volume det_Endcap_vol(det_name+"Endcap",det_Endcap_solid,det_mat); + det_Endcap_vol.setVisAttributes(theDetector,"YellowVis"); + //Initialize the segmentation dd4hep::Readout readout = sd.readout(); dd4hep::Segmentation geomseg = readout.segmentation(); @@ -195,7 +203,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, // | | // | F0 F1 F2 F3| // ----------------------- -// if(layer_id == 1|| layer_id == 2 || layer_id ==3) { +// if(layer_id == -1) { for(int icell=0; icell< numWire; icell++) { double wire_phi = (icell+0.5)*layer_Phi + offset; // - signal wire @@ -256,6 +264,14 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::PlacedVolume wall_phy = envelope.placeVolume(wall_vol,transform); } + // - place Endcap + double endcap_pos[2] = {chamber_length*0.5+Endcap_z*0.5,-chamber_length*0.5-Endcap_z*0.5}; + dd4hep::PlacedVolume endcap_phy; + for(int i=0; i<2; i++) { + dd4hep::Transform3D Endcap_transform(dd4hep::Rotation3D(),dd4hep::Position(0,0,endcap_pos[i])); + endcap_phy = envelope.placeVolume(det_Endcap_vol,Endcap_transform); + } + if ( x_det.hasAttr(_U(id)) ) { phv.addPhysVolID("system",x_det.id()); }