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 ad0caf7b2b79fcdd375ef20f9354d681f03c076c..3ea4927d19400bde691cbafcb97e3c5a2edfcb07 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 @@ -14,33 +14,31 @@ <constant name="SDT_radius_min" value="InnerTracker_inner_radius"/> <constant name="SDT_radius_max" value="OuterTracker_outer_radius"/> - <constant name="SDT_half_length" value="DC_half_length"/> + <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_chamber_inner_wall_thickness" value="0.2*mm"/> - <constant name="SDT_chamber_outer_wall_thickness" value="2.8*mm"/> - <constant name="SDT_inner_chamber_radius_min" value="InnerTracker_inner_radius+SDT_chamber_inner_wall_thickness"/> - <constant name="SDT_inner_chamber_radius_max" value="InnerTracker_outer_radius-SDT_chamber_outer_wall_thickness"/> - <constant name="SDT_inner_chamber_length" value="DC_length"/> + <constant name="SDT_inner_chamber_radius_min" value="DC_inner_chamber_layer_rbegin-DC_safe_distance"/> + <constant name="SDT_inner_chamber_radius_max" value="InnerTracker_outer_radius-SDT_outer_wall_thickness"/> + <constant name="SDT_inner_chamber_half_length" value="DC_half_length"/> - <constant name="SDT_outer_chamber_radius_min" value="OuterTracker_inner_radius+SDT_chamber_inner_wall_thickness"/> - <constant name="SDT_outer_chamber_radius_max" value="OuterTracker_outer_radius-SDT_chamber_outer_wall_thickness"/> - <constant name="SDT_outer_chamber_length" value="DC_length"/> + <constant name="SDT_outer_chamber_radius_min" value="DC_outer_chamber_radius_min-DC_safe_distance"/> + <constant name="SDT_outer_chamber_radius_max" value="DC_outer_chamber_radius_max"/> + <constant name="SDT_outer_chamber_half_length" value="DC_half_length"/> <constant name="SDT_inner_chamber_layer_number" value="67"/> <constant name="SDT_outer_chamber_layer_number" value="63"/> <constant name="SDT_chamber_layer_width" value="10*mm"/> <constant name="Epsilon" value="0*deg"/> - <constant name="SDT_inner_chamber_inner_wall_radius_min" value="SDT_inner_chamber_radius_min-SDT_chamber_inner_wall_thickness"/> + <constant name="SDT_inner_chamber_inner_wall_radius_min" value="SDT_inner_chamber_radius_min-SDT_inner_wall_thickness"/> <constant name="SDT_inner_chamber_inner_wall_radius_max" value="SDT_inner_chamber_radius_min"/> <constant name="SDT_inner_chamber_outer_wall_radius_min" value="SDT_inner_chamber_radius_max"/> - <constant name="SDT_inner_chamber_outer_wall_radius_max" value="SDT_inner_chamber_radius_max+SDT_chamber_outer_wall_thickness"/> - <constant name="SDT_outer_chamber_inner_wall_radius_min" value="SDT_outer_chamber_radius_min-SDT_chamber_inner_wall_thickness"/> + <constant name="SDT_inner_chamber_outer_wall_radius_max" value="SDT_inner_chamber_radius_max+SDT_outer_wall_thickness"/> + <constant name="SDT_outer_chamber_inner_wall_radius_min" value="SDT_outer_chamber_radius_min-SDT_inner_wall_thickness"/> <constant name="SDT_outer_chamber_inner_wall_radius_max" value="SDT_outer_chamber_radius_min"/> <constant name="SDT_outer_chamber_outer_wall_radius_min" value="SDT_outer_chamber_radius_max"/> - <constant name="SDT_outer_chamber_outer_wall_radius_max" value="SDT_outer_chamber_radius_max+SDT_chamber_outer_wall_thickness"/> + <constant name="SDT_outer_chamber_outer_wall_radius_max" value="SDT_outer_chamber_radius_max+SDT_outer_wall_thickness"/> <constant name="DC_Endcap_rmin" value="SDT_radius_min"/> <constant name="DC_Endcap_rmax" value="SDT_radius_max"/> @@ -51,12 +49,27 @@ </define> + <limits> + <limitset name="DC_limits"> + <limit name="step_length_max" particles="*" value="0.5" unit="mm" /> + </limitset> + </limits> + + <regions> + <region name="DriftChamberRegion"> + </region> + </regions> + <detectors> - <detector id="DetID_DC" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="BlueVis" sensitive="true" insideTrackingVolume="true"> + <detector id="DetID_DC" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="BlueVis" sensitive="true" insideTrackingVolume="true" limits="DC_limits"> <envelope vis="SeeThrough"> - <shape type="BooleanShape" operation="Union" material="Air"> - <shape type="Tube" rmin="SDT_radius_min" rmax="InnerTracker_outer_radius" dz="MainTracker_half_length" /> - <shape type="Tube" rmin="OuterTracker_inner_radius" rmax="SDT_radius_max" dz="MainTracker_half_length" /> +<!-- <shape type="BooleanShape" operation="Union" material="Air"> + <shape type="Tube" rmin="SDT_radius_min" rmax="OuterTracker_inner_radius" dz="SDT_half_length" /> + <shape type="Tube" rmin="SDT_outer_chamber_inner_wall_radius_min" rmax="SDT_radius_max" dz="SDT_half_length" /> + </shape> --> + <shape type="BooleanShape" operation="Subtraction" material="Air"> + <shape type="Tube" rmin="SDT_radius_min" rmax="SDT_radius_max" dz="SDT_half_length" /> + <shape type="Tube" rmin="InnerTracker_outer_radius" rmax="SDT_outer_chamber_inner_wall_radius_min" dz="DC_half_length"/> </shape> </envelope> @@ -78,9 +91,11 @@ <readouts> <readout name="DriftChamberHitsCollection"> - <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" /> + <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_inner_rbegin="DC_inner_chamber_layer_rbegin" DC_inner_rend="DC_inner_chamber_layer_rend" DC_outer_rbegin="DC_outer_chamber_layer_rbegin" DC_outer_rend="DC_outer_chamber_layer_rend" DC_inner_rmin="SDT_inner_chamber_radius_min" DC_inner_rmax="SDT_inner_chamber_radius_max" DC_outer_rmin="SDT_outer_chamber_radius_min" DC_outer_rmax="SDT_outer_chamber_radius_max" DC_inner_layer_number="SDT_inner_chamber_layer_number" DC_outer_layer_number="SDT_outer_chamber_layer_number" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/> - <id>system:8,chamber:1,layer:8,cellID:16</id> + <!--<id>system:8,chamber:1,layer:8,cellID:16</id> --> + <!--<id>system:5,side:-2,layer:9,chamber:8,sensor:8,cellID:16</id> --> + <id>system:5,layer:7:9,chamber:8,cellID:32:16</id> </readout> </readouts> diff --git a/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_01.xml index 5e39151764a31333ceb947a390e291c08082e015..82071ac2591c17718373cb53e88abbb6313702bd 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_01.xml @@ -2,7 +2,7 @@ <define> <constant name="SET_inner_radius" value="OuterTracker_outer_radius + env_safety"/> <constant name="SET_outer_radius" value="Ecal_barrel_inner_radius - env_safety "/> - <constant name="SET_half_length" value="OuterTracker_half_length"/> + <constant name="SET_half_length" value="DC_half_length"/> </define> <detectors> diff --git a/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_02.xml b/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_02.xml index 2d90b1c81d0a5e41831bbd2f2dc19b3739e604d3..22db7614e332a8be3d62397dc7489255deb4e34a 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_02.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/SET_SimplePlanar_v01_02.xml @@ -2,7 +2,7 @@ <define> <constant name="SET_inner_radius" value="OuterTracker_outer_radius + env_safety"/> <constant name="SET_outer_radius" value="Ecal_barrel_inner_radius - env_safety "/> - <constant name="SET_half_length" value="OuterTracker_half_length"/> + <constant name="SET_half_length" value="DC_half_length"/> <constant name="SET_inner_distance_from_tpc" value="InnerTracker_outer_radius-OuterTracker_outer_radius+3*mm"/> </define> diff --git a/Detector/DetCRD/compact/CRD_common_v01/SIT_SimplePixel_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/SIT_SimplePixel_v01_01.xml index 9e7a967efaa134682cb5d9ae978095be20d14846..02a49d5eaa5a5fd32f68e2d51987d7c64505680f 100644 --- a/Detector/DetCRD/compact/CRD_common_v01/SIT_SimplePixel_v01_01.xml +++ b/Detector/DetCRD/compact/CRD_common_v01/SIT_SimplePixel_v01_01.xml @@ -5,7 +5,7 @@ <constant name="SIT_inner_radius_1" value="SIT_inner_radius + env_safety"/> <constant name="SIT_outer_radius_1" value="SIT_inner_radius_1/cos(pi/8)"/> <constant name="SIT_inner_radius_2" value="SIT2_inner_radius"/> - <constant name="SIT_outer_radius" value="InnerTracker_inner_radius"/> + <constant name="SIT_outer_radius" value="OuterTracker_inner_radius"/> <constant name="SIT_half_length" value="SIT2_half_length"/> <constant name="SIT_half_length_1" value="SIT1_half_length"/> <constant name="SIT_layer_gap" value="2.5*mm"/> 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 7fa9b7cba6c11d4e29037539f4dddd8a50181b20..48e8f62bf8e33fae9f9e35114dee34510c8d68b8 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 @@ -83,18 +83,29 @@ <constant name="DC_Endcap_z" value="0.1*mm"/> <constant name="DC_half_length" value="2225*mm" /> + <constant name="DC_safe_distance" value="0.2*mm"/> + <constant name="SDT_inner_wall_thickness" value="0.2*mm"/> + <constant name="SDT_outer_wall_thickness" value="2.8*mm"/> + <constant name="DC_inner_chamber_layer_rbegin" value="235*mm"/> + <constant name="DC_inner_chamber_layer_rend" value="905*mm"/> + <constant name="DC_outer_chamber_layer_rbegin" value="1085*mm"/> + <constant name="DC_outer_chamber_layer_rend" value="1715*mm"/> + <constant name="DC_inner_chamber_radius_min" value="DC_inner_chamber_layer_rbegin"/> + <constant name="DC_inner_chamber_radius_max" value="909*mm"/> + <constant name="DC_outer_chamber_radius_min" value="DC_outer_chamber_layer_rbegin"/> + <constant name="DC_outer_chamber_radius_max" value="1716*mm"/> <constant name="MainTracker_half_length" value="DC_half_length+DC_Endcap_z" /> <constant name="InnerTracker_half_length" value="DC_half_length" /> - <constant name="InnerTracker_inner_radius" value="234.8*mm"/> - <constant name="InnerTracker_outer_radius" value="908.8*mm"/> + <constant name="InnerTracker_inner_radius" value="234*mm"/> + <constant name="InnerTracker_outer_radius" value="DC_inner_chamber_radius_max"/> <constant name="OuterTracker_half_length" value="DC_half_length"/> - <constant name="OuterTracker_inner_radius" value="1084.8*mm"/> - <constant name="OuterTracker_outer_radius" value="1717.8*mm"/> + <constant name="OuterTracker_inner_radius" value="DC_outer_chamber_radius_min-DC_safe_distance-SDT_inner_wall_thickness"/> + <constant name="OuterTracker_outer_radius" value="1720*mm"/> <constant name="SIT1_inner_radius" value="152.90*mm"/> <constant name="SIT1_half_length" value="368.00*mm"/> <constant name="SIT2_inner_radius" value="InnerTracker_outer_radius + env_safety"/> - <constant name="SIT2_half_length" value="InnerTracker_half_length"/> + <constant name="SIT2_half_length" value="DC_half_length"/> <constant name="FTD_BeamPipe_cable_clearance" value="10*mm"/> <constant name="FTD_BeamPipe_gap" value="15*mm"/> diff --git a/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml b/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml index 0ef534ce04ff16c208695f5d74661f21c30ce392..984af96a00dce5aa0aa2c1a8482b9318ec63fdb1 100644 --- a/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml +++ b/Detector/DetCRD/compact/CRD_o1_v02/CRD_Dimensions_v01_02.xml @@ -83,14 +83,25 @@ <constant name="DC_Endcap_z" value="0.1*mm"/> <constant name="DC_half_length" value="2225*mm" /> + <constant name="DC_safe_distance" value="0.2*mm"/> + <constant name="SDT_inner_wall_thickness" value="0.2*mm"/> + <constant name="SDT_outer_wall_thickness" value="2.8*mm"/> + <constant name="DC_inner_chamber_layer_rbegin" value="235*mm"/> + <constant name="DC_inner_chamber_layer_rend" value="905*mm"/> + <constant name="DC_outer_chamber_layer_rbegin" value="1085*mm"/> + <constant name="DC_outer_chamber_layer_rend" value="1715*mm"/> + <constant name="DC_inner_chamber_radius_min" value="DC_inner_chamber_layer_rbegin"/> + <constant name="DC_inner_chamber_radius_max" value="909*mm"/> + <constant name="DC_outer_chamber_radius_min" value="DC_outer_chamber_layer_rbegin"/> + <constant name="DC_outer_chamber_radius_max" value="1716*mm"/> <constant name="MainTracker_half_length" value="DC_half_length+DC_Endcap_z" /> <constant name="InnerTracker_half_length" value="DC_half_length" /> - <constant name="InnerTracker_inner_radius" value="234.8*mm"/> - <constant name="InnerTracker_outer_radius" value="908.8*mm"/> + <constant name="InnerTracker_inner_radius" value="234*mm"/> + <constant name="InnerTracker_outer_radius" value="DC_inner_chamber_radius_max"/> <constant name="OuterTracker_half_length" value="DC_half_length"/> - <constant name="OuterTracker_inner_radius" value="1084.8*mm"/> - <constant name="OuterTracker_outer_radius" value="1717.8*mm"/> - + <constant name="OuterTracker_inner_radius" value="DC_outer_chamber_radius_min-DC_safe_distance-SDT_inner_wall_thickness"/> + <constant name="OuterTracker_outer_radius" value="1720*mm"/> + <constant name="SIT1_inner_radius" value="140*mm"/> <constant name="SIT1_half_length" value="368.00*mm"/> <constant name="SIT2_inner_radius" value="225*mm"/> diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml index 3a33224601c201847e452dff7c36538fcef1c269..9058b63d0c1432c8cb1d7b8bbe71e6ac029ba067 100644 --- a/Detector/DetDriftChamber/compact/det.xml +++ b/Detector/DetDriftChamber/compact/det.xml @@ -32,30 +32,48 @@ <constant name="DC_Endcap_dz" value="0.1*mm"/> <constant name="SDT_half_length" value="2225*mm+DC_Endcap_dz"/> + <constant name="DC_half_length" value="2225*mm"/> <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="DC_length"/> + <constant name="DC_safe_distance" value="0.2*mm"/> - <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="DC_length"/> + <constant name="SDT_inner_wall_thickness" value="0.2*mm"/> + <constant name="SDT_outer_wall_thickness" value="2.8*mm"/> + + <constant name="DC_inner_chamber_layer_rbegin" value="235*mm"/> + <constant name="DC_inner_chamber_layer_rend" value="905*mm"/> + + <constant name="DC_outer_chamber_layer_rbegin" value="1085*mm"/> + <constant name="DC_outer_chamber_layer_rend" value="1715*mm"/> + + <constant name="DC_inner_chamber_radius_min" value="DC_inner_chamber_layer_rbegin"/> + <constant name="DC_inner_chamber_radius_max" value="909*mm"/> + + <constant name="DC_outer_chamber_radius_min" value="DC_outer_chamber_layer_rbegin"/> + <constant name="DC_outer_chamber_radius_max" value="1716*mm"/> + + <constant name="SDT_inner_chamber_radius_min" value="DC_inner_chamber_layer_rbegin-DC_safe_distance"/> + <constant name="SDT_inner_chamber_radius_max" value="DC_inner_chamber_radius_max-SDT_outer_wall_thickness"/> + <constant name="SDT_inner_chamber_half_length" value="DC_half_length"/> + + <constant name="SDT_outer_chamber_radius_min" value="DC_outer_chamber_layer_rbegin-DC_safe_distance"/> + <constant name="SDT_outer_chamber_radius_max" value="DC_outer_chamber_radius_max"/> + <constant name="SDT_outer_chamber_half_length" value="DC_half_length"/> <constant name="SDT_inner_chamber_layer_number" value="67"/> <constant name="SDT_outer_chamber_layer_number" value="63"/> <constant name="SDT_chamber_layer_width" value="10*mm"/> <constant name="Epsilon" value="0*deg"/> - <constant name="SDT_inner_chamber_inner_wall_radius_min" value="234.8*mm"/> - <constant name="SDT_inner_chamber_inner_wall_radius_max" value="235*mm"/> - <constant name="SDT_inner_chamber_outer_wall_radius_min" value="906*mm"/> - <constant name="SDT_inner_chamber_outer_wall_radius_max" value="908.8*mm"/> - <constant name="SDT_outer_chamber_inner_wall_radius_min" value="1084.8*mm"/> - <constant name="SDT_outer_chamber_inner_wall_radius_max" value="1085*mm"/> - <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="SDT_inner_chamber_inner_wall_radius_min" value="SDT_inner_chamber_radius_min-SDT_inner_wall_thickness"/> + <constant name="SDT_inner_chamber_inner_wall_radius_max" value="SDT_inner_chamber_radius_min"/> + <constant name="SDT_inner_chamber_outer_wall_radius_min" value="SDT_inner_chamber_radius_max"/> + <constant name="SDT_inner_chamber_outer_wall_radius_max" value="SDT_inner_chamber_radius_max+SDT_outer_wall_thickness"/> + <constant name="SDT_outer_chamber_inner_wall_radius_min" value="SDT_outer_chamber_radius_min-SDT_inner_wall_thickness"/> + <constant name="SDT_outer_chamber_inner_wall_radius_max" value="SDT_outer_chamber_radius_min"/> + <constant name="SDT_outer_chamber_outer_wall_radius_min" value="SDT_outer_chamber_radius_max"/> + <constant name="SDT_outer_chamber_outer_wall_radius_max" value="SDT_outer_chamber_radius_max+SDT_outer_wall_thickness"/> <constant name="DC_Endcap_rmin" value="SDT_radius_min"/> <constant name="DC_Endcap_rmax" value="SDT_radius_max"/> @@ -74,17 +92,27 @@ <vis name="YellowVis" alpha="1.0" r="1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> </display> + <limits> + <limitset name="DC_limits"> + <limit name="step_length_max" particles="*" value="0.5" unit="mm" /> + </limitset> + </limits> + <regions> <region name="DriftChamberRegion"> </region> </regions> <detectors> - <detector id="7" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true" region="DriftChamberRegion"> + <detector id="7" name="DriftChamber" type="DriftChamber" readout="DriftChamberHitsCollection" vis="VisibleBlue" sensitive="true" region="DriftChamberRegion" limits="DC_limits"> <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="1084.8*mm" rmax="SDT_radius_max" dz="SDT_half_length" /> +<!-- <shape type="BooleanShape" operation="Union" material="Air"> + <shape type="Tube" rmin="SDT_radius_min" rmax="SDT_inner_chamber_outer_wall_radius_max" dz="SDT_half_length" /> + <shape type="Tube" rmin="SDT_outer_chamber_inner_wall_radius_min" rmax="SDT_radius_max" dz="SDT_half_length" /> + </shape> --> + <shape type="BooleanShape" operation="Subtraction" material="Air"> + <shape type="Tube" rmin="SDT_radius_min" rmax="SDT_radius_max" dz="SDT_half_length" /> + <shape type="Tube" rmin="DC_inner_chamber_radius_max" rmax="SDT_outer_chamber_inner_wall_radius_min" dz="DC_half_length"/> </shape> </envelope> @@ -106,9 +134,10 @@ <readouts> <readout name="DriftChamberHitsCollection"> - <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" /> + <segmentation type="GridDriftChamber" cell_size="10*mm" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_inner_rbegin="DC_inner_chamber_layer_rbegin" DC_inner_rend="DC_inner_chamber_layer_rend" DC_outer_rbegin="DC_outer_chamber_layer_rbegin" DC_outer_rend="DC_outer_chamber_layer_rend" DC_inner_rmin="SDT_inner_chamber_radius_min" DC_inner_rmax="SDT_inner_chamber_radius_max" DC_outer_rmin="SDT_outer_chamber_radius_min" DC_outer_rmax="SDT_outer_chamber_radius_max" DC_inner_layer_number="SDT_inner_chamber_layer_number" DC_outer_layer_number="SDT_outer_chamber_layer_number" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/> - <id>system:8,chamber:1,layer:8,cellID:16</id> + <!-- <id>system:8,chamber:1,layer:8,cellID:16</id> --> + <id>system:5,side:-2,layer:9,chamber:8,sensor:8,cellID:16</id> </readout> </readouts> diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp index 6894e6a4eb591895dc97dcc3108edc1456ae6122..be9dfb78445995639c9fcaa8cfd92db2d2b37906 100644 --- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp +++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp @@ -41,24 +41,26 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::SensitiveDetector sd = sens; // - global - double chamber_radius_min = theDetector.constant<double>("SDT_radius_min"); - double chamber_radius_max = theDetector.constant<double>("SDT_radius_max"); - double chamber_length = theDetector.constant<double>("SDT_length"); + double chamber_half_length = theDetector.constant<double>("DC_half_length"); // - inner chamber double inner_chamber_radius_min = theDetector.constant<double>("SDT_inner_chamber_radius_min"); double inner_chamber_radius_max = theDetector.constant<double>("SDT_inner_chamber_radius_max"); - double inner_chamber_length = theDetector.constant<double>("SDT_inner_chamber_length"); + double inner_chamber_half_length = theDetector.constant<double>("SDT_inner_chamber_half_length"); // - outer chamber double outer_chamber_radius_min = theDetector.constant<double>("SDT_outer_chamber_radius_min"); double outer_chamber_radius_max = theDetector.constant<double>("SDT_outer_chamber_radius_max"); - double outer_chamber_length = theDetector.constant<double>("SDT_outer_chamber_length"); + double outer_chamber_half_length = theDetector.constant<double>("SDT_outer_chamber_half_length"); // - layer int inner_chamber_layer_number = theDetector.constant<int>("SDT_inner_chamber_layer_number"); int outer_chamber_layer_number = theDetector.constant<int>("SDT_outer_chamber_layer_number"); double chamber_layer_width = theDetector.constant<double>("SDT_chamber_layer_width"); + double inner_chamber_layer_rbegin = theDetector.constant<double>("DC_inner_chamber_layer_rbegin"); + double inner_chamber_layer_rend = theDetector.constant<double>("DC_inner_chamber_layer_rend"); + double outer_chamber_layer_rbegin = theDetector.constant<double>("DC_outer_chamber_layer_rbegin"); + double outer_chamber_layer_rend = theDetector.constant<double>("DC_outer_chamber_layer_rend"); double epsilon = theDetector.constant<double>("Epsilon"); @@ -66,6 +68,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, int inner_chamber_enabled = theDetector.constant<int>("DC_inner_chamber_enabled"); int outer_chamber_enabled = theDetector.constant<int>("DC_outer_chamber_enabled"); + // ======================================================================= // Detector Construction // ======================================================================= @@ -80,17 +83,30 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::Material det_mat(theDetector.material("Air")); + dd4hep::Material chamber_mat(theDetector.material("GasHe_90Isob_10")); // - global Assembly det_vol( det_name+"_assembly" ) ; // - inner - dd4hep::Tube det_inner_chamber_solid(inner_chamber_radius_min, inner_chamber_radius_max, inner_chamber_length*0.5); - dd4hep::Volume det_inner_chamber_vol(det_name+"_inner_chamber_vol", det_inner_chamber_solid, det_mat); + dd4hep::Tube det_inner_chamber_solid(inner_chamber_radius_min, inner_chamber_radius_max, inner_chamber_half_length); + dd4hep::Volume det_inner_chamber_vol(det_name+"_inner_chamber_vol", det_inner_chamber_solid, chamber_mat); + if ( x_det.isSensitive() ) { + det_inner_chamber_vol.setRegion(theDetector,x_det.regionStr()); + det_inner_chamber_vol.setLimitSet(theDetector,x_det.limitsStr()); + det_inner_chamber_vol.setSensitiveDetector(sens); + sd.setType("tracker"); + } - // - outer - dd4hep::Tube det_outer_chamber_solid(outer_chamber_radius_min, outer_chamber_radius_max, outer_chamber_length*0.5); - dd4hep::Volume det_outer_chamber_vol(det_name+"_outer_chamber_vol", det_outer_chamber_solid, det_mat); + // - outer + dd4hep::Tube det_outer_chamber_solid(outer_chamber_radius_min, outer_chamber_radius_max, outer_chamber_half_length); + dd4hep::Volume det_outer_chamber_vol(det_name+"_outer_chamber_vol", det_outer_chamber_solid, chamber_mat); + if ( x_det.isSensitive() ) { + det_outer_chamber_vol.setRegion(theDetector,x_det.regionStr()); + det_outer_chamber_vol.setLimitSet(theDetector,x_det.limitsStr()); + det_outer_chamber_vol.setSensitiveDetector(sens); + sd.setType("tracker"); + } // - wall double inner_chamber_inner_wall_rmin = theDetector.constant<double>("SDT_inner_chamber_inner_wall_radius_min"); @@ -115,7 +131,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, double module_rmin = x_module.rmin(); double module_rmax = x_module.rmax(); std::string module_name = x_module.nameStr(); - dd4hep::Tube module_solid(module_rmin,module_rmax,chamber_length*0.5); + dd4hep::Tube module_solid(module_rmin,module_rmax,chamber_half_length); if(x_module.id()==0) { module_vol = dd4hep::Volume(module_name,module_solid,det_mat); module_vol.setVisAttributes(theDetector.visAttributes(x_module.visStr())); @@ -131,7 +147,7 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, std::string tube_name = x_tube.nameStr(); std::string wire_name= module_name + tube_name; dd4hep::Material tube_mat = theDetector.material(x_tube.materialStr()); - dd4hep::Tube wire_solid(tube_rmin,tube_rmax,chamber_length*0.5); + dd4hep::Tube wire_solid(tube_rmin,tube_rmax,chamber_half_length); dd4hep::Volume wire_vol(wire_name,wire_solid,tube_mat); dd4hep::Transform3D transform_wire(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.)); dd4hep::PlacedVolume wire_phy; @@ -159,21 +175,23 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, auto DCHseg = dynamic_cast<dd4hep::DDSegmentation::GridDriftChamber*>(_geoSeg->segmentation()); // - layer + int chamber_id = -1; + int layerIndex = -1; for(int layer_id = 0; layer_id < (inner_chamber_layer_number+outer_chamber_layer_number); layer_id++) { double rmin,rmax,offset=0; - std::string layer_name; dd4hep::Volume* current_vol_ptr = nullptr; - dd4hep::Material layer_mat(theDetector.material("GasHe_90Isob_10")); if(inner_chamber_enabled && (layer_id < inner_chamber_layer_number)) { current_vol_ptr = &det_inner_chamber_vol; - rmin = inner_chamber_radius_min+(layer_id*chamber_layer_width); + rmin = inner_chamber_layer_rbegin+(layer_id*chamber_layer_width); rmax = rmin+chamber_layer_width; - layer_name = det_name+"_inner_chamber_vol"+_toString(layer_id,"_layer%d"); - } else if(outer_chamber_enabled && (layer_id > (inner_chamber_layer_number-1))) { + chamber_id = 0; + layerIndex = layer_id; + } else if(outer_chamber_enabled && (layer_id >= inner_chamber_layer_number)) { current_vol_ptr = &det_outer_chamber_vol; - rmin = outer_chamber_radius_min+((layer_id-inner_chamber_layer_number)*chamber_layer_width); + rmin = outer_chamber_layer_rbegin+((layer_id-inner_chamber_layer_number)*chamber_layer_width); rmax = rmin+chamber_layer_width; - layer_name = det_name+"_outer_chamber_vol"+_toString(layer_id,"_layer%d"); + chamber_id = 1; + layerIndex = layer_id - inner_chamber_layer_number; } else continue; //Construction of drift chamber layers @@ -187,12 +205,8 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, if(layer_id %2 ==0){ offset = 0.; } else { offset = 0.5 * layer_Phi; } - DCHseg->setGeomParams(layer_id, layer_Phi, rmid, epsilon, offset); - DCHseg->setWiresInLayer(layer_id, numWire); - - dd4hep::Tube layer_solid(rmin,rmax,chamber_length*0.5); - dd4hep::Volume layer_vol(layer_name,layer_solid,layer_mat); - layer_vol.setAttributes(theDetector,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); + DCHseg->setGeomParams(chamber_id, layerIndex, layer_Phi, rmid, epsilon, offset); + DCHseg->setWiresInLayer(chamber_id, layerIndex, numWire); // - wire vol //phi <-------------------> -phi @@ -202,34 +216,28 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, // | | // | F0 F1 F2 F3| // ----------------------- -// if(layer_id == -1) { + if(layer_id == 0 || layer_id ==66 || layer_id ==67 || layer_id ==129) { for(int icell=0; icell< numWire; icell++) { double wire_phi = (icell+0.5)*layer_Phi + offset; // - signal wire dd4hep::Transform3D transform_module(dd4hep::Rotation3D(),dd4hep::Position(rmid*std::cos(wire_phi),rmid*std::sin(wire_phi),0.)); - dd4hep::PlacedVolume module_phy = layer_vol.placeVolume(module_vol,transform_module); + dd4hep::PlacedVolume module_phy = (*current_vol_ptr).placeVolume(module_vol,transform_module); // - Field wire dd4hep::PlacedVolume Module_phy; double radius[9] = {rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5}; double phi[9] = {wire_phi+layer_Phi*0.25,wire_phi,wire_phi-layer_Phi*0.25,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.25,wire_phi,wire_phi+layer_Phi*0.25}; int num = 5; - if(layer_id==(inner_chamber_layer_number-1)||layer_id==(outer_chamber_layer_number-1)) { num = 9; } + if(layer_id==(inner_chamber_layer_number-1)||layer_id==(inner_chamber_layer_number+outer_chamber_layer_number-1)) { num = 9; } for(int i=0; i<num ; i++) { dd4hep::Position tr3D = Position(radius[i]*std::cos(phi[i]),radius[i]*std::sin(phi[i]),0.); + dd4hep::Transform3D transform_Module(dd4hep::Rotation3D(),tr3D); - Module_phy = layer_vol.placeVolume(Module_vol,transform_Module); + Module_phy = (*current_vol_ptr).placeVolume(Module_vol,transform_Module); } } -// } - - dd4hep::Transform3D transform_layer(dd4hep::Rotation3D(),dd4hep::Position(0.,0.,0.)); - dd4hep::PlacedVolume layer_phy = (*current_vol_ptr).placeVolume(layer_vol, transform_layer); - layer_phy.addPhysVolID("layer",layer_id); + } - //Set drift chamber layers to sensitive detector - layer_vol.setSensitiveDetector(sens); - sd.setType("tracker"); - } + } // - place in det // inner @@ -255,16 +263,16 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, dd4hep::Position(0,0,0)); dd4hep::PlacedVolume phv = envelope.placeVolume(det_vol,transform); // - place wall -// dd4hep::PlacedVolume wall_phy; + dd4hep::PlacedVolume wall_phy; for(int i=0; i<4; i++) { - dd4hep::Tube wall_solid(wall_rmin[i],wall_rmax[i],chamber_length*0.5); + dd4hep::Tube wall_solid(wall_rmin[i],wall_rmax[i],chamber_half_length); dd4hep::Volume wall_vol(det_name+"_wall_vol",wall_solid,wall_mat); wall_vol.setVisAttributes(theDetector,"VisibleGreen"); - dd4hep::PlacedVolume wall_phy = envelope.placeVolume(wall_vol,transform); + 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}; + double endcap_pos[2] = {chamber_half_length+Endcap_z*0.5,-chamber_half_length-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])); @@ -282,4 +290,4 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector, } -DECLARE_DETELEMENT(DriftChamber, create_detector); +DECLARE_DETELEMENT(DriftChamber, create_detector) diff --git a/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h b/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h index 82a4e8f041b4a9934977fb4943b69a782fc4b37e..f8854d51685eeb122a9a3bfbd183bc194442fdf9 100644 --- a/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h +++ b/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h @@ -30,6 +30,20 @@ typedef struct Layer } } LAYER; +typedef struct CID + { + int chamberID; + int layerID; +// CID(){} + CID(int i, int j): chamberID(i),layerID(j){} + // the operator < defines the operation used in map + friend bool operator < (const CID &c1, const CID &c2); + } vID; + +inline bool operator < (const struct CID &c1, const struct CID &c2) { + return c1.chamberID < c2.chamberID || (c1.chamberID == c2.chamberID && c1.layerID < c2.layerID); +} + namespace dd4hep { namespace DDSegmentation { class GridDriftChamber : public Segmentation { @@ -42,6 +56,7 @@ public: virtual ~GridDriftChamber() = default; virtual Vector3D position(const CellID& aCellID) const; +// virtual int LayerID(const Vector3D& aGlobalPosition) const; virtual CellID cellID(const Vector3D& aLocalPosition, const Vector3D& aGlobalPosition, const VolumeID& aVolumeID) const; virtual double distanceTrackWire(const CellID& cID, const TVector3& hit_start, const TVector3& hit_end) const; @@ -51,7 +66,20 @@ public: inline double cell_Size() const { return m_cellSize; } inline double epsilon0() const { return m_epsilon0; } inline double detectorLength() const { return m_detectorLength; } + inline double DC_inner_rbegin() const { return m_DC_inner_rbegin; } + inline double DC_inner_rend() const { return m_DC_inner_rend; } + inline double DC_outer_rbegin() const { return m_DC_outer_rbegin; } + inline double DC_outer_rend() const { return m_DC_outer_rend; } + inline double DC_inner_rmin() const { return m_DC_inner_rmin; } + inline double DC_inner_rmax() const { return m_DC_inner_rmax; } + inline double DC_outer_rmin() const { return m_DC_outer_rmin; } + inline double DC_outer_rmax() const { return m_DC_outer_rmax; } + inline double safe_distance() const { return m_safe_distance; } + inline double layer_width() const { return m_layer_width; } + inline int DC_inner_layer_number() const { return m_DC_inner_layer_number; } + inline int DC_outer_layer_number() const { return m_DC_outer_layer_number; } inline const std::string& fieldNamePhi() const { return m_phiID; } + inline const std::string& Layerid() const { return layer_id; } // Setters inline double phiFromXY(const Vector3D& aposition) const { @@ -60,13 +88,15 @@ public: return hit_phi; } - inline void setGeomParams(int layer, double layerphi, double R, double eps, double offset) { - layer_params.insert(std::pair<int,LAYER>(layer,LAYER(layerphi,R,eps,offset))); + inline void setGeomParams(int chamberID, int layerID, double layerphi, double R, double eps, double offset) { + + layer_params.insert(std::pair<vID,LAYER>(vID(chamberID,layerID),LAYER(layerphi,R,eps,offset))); + } - inline void setWiresInLayer(int layer, int numWires) + inline void setWiresInLayer(int chamber, int layer, int numWires) { - updateParams(layer); + updateParams(chamber,layer); for (int i = 0; i<numWires; ++i) { auto phi_start = _currentLayerphi * (i+0.5) + m_offset; @@ -92,36 +122,33 @@ public: // return w; // } - void updateParams(int layer) const{ + void updateParams(int chamber, int layer) const{ auto it_end = layer_params.cend(); --it_end; - double layerphi = it_end->second.layerphi; - double radius = it_end->second.R; - double eps = it_end->second.eps; - double offset = it_end->second.offset; + double LayerPhi = it_end->second.layerphi; + double Radius = it_end->second.R; + double Eps = it_end->second.eps; + double Offset = it_end->second.offset; - auto map_it = layer_params.find(layer); + CID v1(chamber,layer); + auto map_it = layer_params.find(v1); if (map_it != layer_params.cend()) { - layerphi = map_it->second.layerphi; - radius = map_it->second.R; - eps = map_it->second.eps; - offset = map_it->second.offset; - } - _currentLayerphi = layerphi; - _currentRadius = radius; - m_epsilon = eps; - m_offset = offset; + LayerPhi = map_it->second.layerphi; + Radius = map_it->second.R; + Eps = map_it->second.eps; + Offset = map_it->second.offset; + } else { std::cout << " Sorry, pair with key " << layer << " not in map" << std::endl; } + + _currentLayerphi = LayerPhi; + _currentRadius = Radius; + m_epsilon = Eps; + m_offset = Offset; } -// inline double returnAlpha() const { -// double alpha = 2 * std::asin(m_detectorLength * std::tan(m_epsilon0)/(2 * _currentRadius)); -// return alpha; -// } - protected: double phi(const CellID& cID) const; - std::map<int,LAYER> layer_params; // <layer, {layerphi, R, eps, offset}> + std::map<vID,LAYER> layer_params; // <{chamberID,layerID}, {layerphi, R, eps, offset}> std::map<int, std::vector<std::pair<TVector3, TVector3> >> m_wiresPositions; // < layer, vec<WireMidpoint, WireDirection> > inline TVector3 returnWirePosition(double angle, int sign) const { @@ -140,7 +167,21 @@ protected: double m_cellSize; double m_epsilon0; double m_detectorLength; + double m_DC_inner_rbegin; + double m_DC_inner_rend; + double m_DC_outer_rbegin; + double m_DC_outer_rend; + double m_DC_inner_rmin; + double m_DC_inner_rmax; + double m_DC_outer_rmin; + double m_DC_outer_rmax; + double m_layer_width; + double m_safe_distance; + int m_DC_inner_layer_number; + int m_DC_outer_layer_number; + std::string m_phiID; + std::string layer_id; // Current parameters of the layer: sizePhi mutable double _currentLayerphi; diff --git a/Detector/DetSegmentation/src/GridDriftChamber.cpp b/Detector/DetSegmentation/src/GridDriftChamber.cpp index d4facaaea91861aea6166c8d117d8823178f3b4f..fae415611a0f6b4a97d05d6f05de3885a146ed6a 100644 --- a/Detector/DetSegmentation/src/GridDriftChamber.cpp +++ b/Detector/DetSegmentation/src/GridDriftChamber.cpp @@ -13,6 +13,11 @@ GridDriftChamber::GridDriftChamber(const std::string& cellEncoding) : Segmentati registerParameter("cell_size", "cell size", m_cellSize, 0., SegmentationParameter::LengthUnit); registerParameter("detector_length", "Length of the wire", m_detectorLength, 1., SegmentationParameter::LengthUnit); registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "cellID"); + registerIdentifier("layerID", "layer id", layer_id, "layer"); + registerParameter("DC_inner_rmin", "DC_inner_rmin", m_DC_inner_rmin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_inner_rmax", "DC_inner_rmax", m_DC_inner_rmax, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rmin", "DC_outer_rmin", m_DC_outer_rmin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rmax", "DC_outer_rmax", m_DC_outer_rmax, 0., SegmentationParameter::LengthUnit); } GridDriftChamber::GridDriftChamber(const BitFieldCoder* decoder) : Segmentation(decoder) { @@ -24,6 +29,19 @@ GridDriftChamber::GridDriftChamber(const BitFieldCoder* decoder) : Segmentation( registerParameter("epsilon0", "epsilon", m_epsilon0, 0., SegmentationParameter::AngleUnit, true); registerParameter("detector_length", "Length of the wire", m_detectorLength, 1., SegmentationParameter::LengthUnit); registerIdentifier("identifier_phi", "Cell ID identifier for phi", m_phiID, "cellID"); + registerIdentifier("layerID", "layer id", layer_id, "layer"); + registerParameter("DC_inner_rbegin", "DC_inner_rbegin", m_DC_inner_rbegin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_inner_rend", "DC_inner_rend", m_DC_inner_rend, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rbegin", "DC_outer_rbegin", m_DC_outer_rbegin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rend", "DC_outer_rend", m_DC_outer_rend, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_inner_rmin", "DC_inner_rmin", m_DC_inner_rmin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_inner_rmax", "DC_inner_rmax", m_DC_inner_rmax, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rmin", "DC_outer_rmin", m_DC_outer_rmin, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_outer_rmax", "DC_outer_rmax", m_DC_outer_rmax, 0., SegmentationParameter::LengthUnit); + registerParameter("safe_distance", "safe_distance", m_safe_distance, 0., SegmentationParameter::LengthUnit); + registerParameter("layer_width", "layer_width", m_layer_width, 0., SegmentationParameter::LengthUnit); + registerParameter("DC_inner_layer_number", "DC_inner_layer_number", m_DC_inner_layer_number, 0,SegmentationParameter::LengthUnit); + registerParameter("DC_outer_layer_number", "DC_outer_layer_number", m_DC_outer_layer_number, 0, SegmentationParameter::LengthUnit); } Vector3D GridDriftChamber::position(const CellID& /*cID*/) const { @@ -31,17 +49,38 @@ Vector3D GridDriftChamber::position(const CellID& /*cID*/) const { return cellPosition; } - CellID GridDriftChamber::cellID(const Vector3D& /*localPosition*/, const Vector3D& globalPosition, const VolumeID& vID) const { CellID cID = vID; - unsigned int layerID = _decoder->get(vID, "layer"); - updateParams(layerID); - double phi_hit = phiFromXY(globalPosition); + int chamberID = _decoder->get(cID, "chamber"); + double posx = globalPosition.X; double posy = globalPosition.Y; + double radius = sqrt(posx*posx+posy*posy); + + double DC_layerdelta = m_layer_width; + + int layerid; + if( radius<= m_DC_inner_rend && radius>= m_DC_inner_rbegin) { + layerid = floor((radius - m_DC_inner_rbegin)/DC_layerdelta); + } else if ( radius<= m_DC_outer_rend && radius>= m_DC_outer_rbegin ) { + layerid = floor((radius - m_DC_outer_rbegin)/DC_layerdelta); + } else if ( radius>= (m_DC_inner_rmin-m_safe_distance) && radius < m_DC_inner_rbegin) { + layerid = 0; + } else if ( radius> m_DC_inner_rend && radius <= (m_DC_inner_rmax+m_safe_distance)) { + layerid = m_DC_inner_layer_number-1; + } else if ( radius>= (m_DC_outer_rmin-m_safe_distance) && radius < m_DC_outer_rbegin) { + layerid = 0; + } else if ( radius> m_DC_outer_rend && radius <= (m_DC_outer_rmax+m_safe_distance)) { + layerid = m_DC_outer_layer_number-1; + } + + + updateParams(chamberID,layerid); + + double phi_hit = phiFromXY(globalPosition); double offsetphi= m_offset; int _lphi; @@ -53,17 +92,9 @@ CellID GridDriftChamber::cellID(const Vector3D& /*localPosition*/, const Vector3 } int lphi = _lphi; + _decoder->set(cID, layer_id, layerid); _decoder->set(cID, m_phiID, lphi); - -// std::cout << "#######################################: " -// << " offset : " << m_offset -// << " offsetphi: " << offsetphi -// << " layerID: " << layerID -// << " r: " << _currentRadius -// << " layerphi: " << _currentLayerphi -// << std::endl; - return cID; } @@ -75,8 +106,9 @@ double GridDriftChamber::phi(const CellID& cID) const { void GridDriftChamber::cellposition(const CellID& cID, TVector3& Wstart, TVector3& Wend) const { + auto chamberIndex = _decoder->get(cID, "chamber"); auto layerIndex = _decoder->get(cID, "layer"); - updateParams(layerIndex); + updateParams(chamberIndex,layerIndex); double phi_start = phi(cID); double phi_mid = phi_start + _currentLayerphi/2.; @@ -91,14 +123,6 @@ void GridDriftChamber::cellposition(const CellID& cID, TVector3& Wstart, double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hit_start, const TVector3& hit_end) const { -// auto layerIndex = _decoder->get(cID, "layer"); -// updateParams(layerIndex); -// -// double phi_start = phi(cID); -// double phi_end = phi_start + returnAlpha(); - -// TVector3 Wstart = returnWirePosition(phi_start, -1); // The default centimeter unit in DD4hep -// TVector3 Wend = returnWirePosition(phi_end, 1); // The default centimeter unit in DD4hep TVector3 Wstart = {0,0,0}; TVector3 Wend = {0,0,0}; cellposition(cID,Wstart,Wend); @@ -109,8 +133,6 @@ double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hi double num = std::abs(c.Dot(a.Cross(b))); double denum = (a.Cross(b)).Mag(); -// double num = (b.Cross(c)).Mag(); -// double denum = b.Mag(); double DCA = 0; diff --git a/Simulation/DetSimFastModel/src/DummyFastSimG4Tool.cpp b/Simulation/DetSimFastModel/src/DummyFastSimG4Tool.cpp index 6fa049f8c45e5754d3e833c2fcdaf1322bc0ac50..90bbe0bce7dd3253f45391128a835691f2c5403b 100644 --- a/Simulation/DetSimFastModel/src/DummyFastSimG4Tool.cpp +++ b/Simulation/DetSimFastModel/src/DummyFastSimG4Tool.cpp @@ -6,7 +6,7 @@ #include "G4VFastSimulationModel.hh" #include "DummyFastSimG4Model.h" -DECLARE_COMPONENT(DummyFastSimG4Tool); +DECLARE_COMPONENT(DummyFastSimG4Tool) StatusCode DummyFastSimG4Tool::initialize() { StatusCode sc; diff --git a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp index 07c7b88f450920dc6cf046cc85f1c2440fecc322..43dfa17828453c1545318eea45c0aec7e271976e 100644 --- a/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp +++ b/Simulation/DetSimSD/src/DriftChamberSensDetTool.cpp @@ -6,7 +6,7 @@ #include "DriftChamberSensitiveDetector.h" -DECLARE_COMPONENT(DriftChamberSensDetTool); +DECLARE_COMPONENT(DriftChamberSensDetTool) StatusCode DriftChamberSensDetTool::initialize() { StatusCode sc; diff --git a/Simulation/DetSimSD/src/TimeProjectionChamberSensDetTool.cpp b/Simulation/DetSimSD/src/TimeProjectionChamberSensDetTool.cpp index 9ca7b471af8832494703c9fab48febd49e72d6df..94c1e223aa124d6f739acfa1eb2d829400148115 100644 --- a/Simulation/DetSimSD/src/TimeProjectionChamberSensDetTool.cpp +++ b/Simulation/DetSimSD/src/TimeProjectionChamberSensDetTool.cpp @@ -8,7 +8,7 @@ #include "CLHEP/Units/SystemOfUnits.h" -DECLARE_COMPONENT(TimeProjectionChamberSensDetTool); +DECLARE_COMPONENT(TimeProjectionChamberSensDetTool) StatusCode TimeProjectionChamberSensDetTool::initialize() { StatusCode sc;