From 602b960d39db5147c235b894f615bfda32c617b6 Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Fri, 13 Aug 2021 14:37:16 +0000 Subject: [PATCH] Tracker support --- compact/central_tracker.xml | 55 +++++++++++++++++++---------------- compact/definitions.xml | 2 -- compact/display.xml | 3 +- compact/vertex_tracker.xml | 13 +++++---- src/TrapEndcapTracker_geo.cpp | 19 ++++++++++++ 5 files changed, 58 insertions(+), 34 deletions(-) diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml index f7d1a824..8d67c7be 100644 --- a/compact/central_tracker.xml +++ b/compact/central_tracker.xml @@ -33,9 +33,9 @@ </comment> <constant name="TrackerBarrelLayer_rOffset" value="0.5*cm"/> - <constant name="TrackerBarrelSpaceFrame_width" value="4.0*cm"/> - <constant name="TrackerBarrelSpaceFrame_height" value="1.0835*cm"/> - <constant name="TrackerSensor_thickness" value="0.04*mm"/> + <constant name="TrackerBarrelSpaceFrame_width" value="4.0*cm"/> + <constant name="TrackerBarrelSpaceFrame_height" value="1.0835*cm"/> + <constant name="TrackerSensor_thickness" value="0.04*mm"/> <constant name="TrackerBarrelInner_rmin1" value="21.0*cm"/> <constant name="TrackerBarrelInner_rmin2" value="22.68*cm"/> @@ -48,12 +48,11 @@ <constant name="TrackerBarrelOuter_length1" value="105.0*cm"/> <constant name="TrackerBarrelOuter_length2" value="114.0*cm"/> - <constant name="TrackerBarrelInner_thickness" value="TrackerBarrelInner_rmin2 - TrackerBarrelInner_rmin1"/> - <constant name="TrackerBarrelOuter_thickness" value="TrackerBarrelOuter_rmin2 - TrackerBarrelOuter_rmin1"/> - <constant name="TrackerBarrelInner_length" value="TrackerBarrelInner_length2+1.0*cm"/> - <constant name="TrackerBarrelOuter_length" value="TrackerBarrelOuter_length2+1.0*cm"/> - + <constant name="TrackerBarrelInner_thickness" value="TrackerBarrelInner_rmin2 - TrackerBarrelInner_rmin1"/> + <constant name="TrackerBarrelOuter_thickness" value="TrackerBarrelOuter_rmin2 - TrackerBarrelOuter_rmin1"/> + <constant name="TrackerBarrelInner_length" value="TrackerBarrelInner_length2+1.0*cm"/> + <constant name="TrackerBarrelOuter_length" value="TrackerBarrelOuter_length2+1.0*cm"/> <comment> Here we are assuming the two endcaps (P and N) are symmetric. @@ -64,19 +63,19 @@ <constant name="TrackerEndcapInner_nLayers" value="1"/> <constant name="TrackerEndcapOuter_nLayers" value="3"/> - <constant name="TrackerEndcapInner_zmin" value="TrackerBarrelInner_length/2.0"/> - <constant name="TrackerEndcapInner_zmax" value="TrackerBarrelOuter_length/2.0"/> - <constant name="TrackerEndcapInner_length" value="TrackerEndcapInner_zmax- TrackerEndcapInner_zmin"/> - <constant name="TrackerEndcapInnerLayer_dz" value="TrackerEndcapInner_length/TrackerEndcapInner_nLayers"/> - <constant name="TrackerEndcapInnerLayer_thickness" value="TrackerEndcapInnerLayer_dz - 0.5*cm"/> + <constant name="TrackerEndcapInner_zmin" value="TrackerBarrelInner_length2/2.0 + 1.0*cm"/> + <constant name="TrackerEndcapInner_zmax" value="TrackerBarrelOuter_length1/2.0 - 1.0*cm"/> + <constant name="TrackerEndcapInner_length" value="TrackerEndcapInner_zmax- TrackerEndcapInner_zmin"/> + <constant name="TrackerEndcapInnerLayer_dz" value="TrackerEndcapInner_length/TrackerEndcapInner_nLayers"/> + <constant name="TrackerEndcapInnerLayer_thickness" value="min(5.0*cm,TrackerEndcapInnerLayer_dz - 0.5*cm)"/> <comment> Note, the -1.0*cm is so the layers do not touch surfaces. This is a limitation of ACTS geometry which will likely go away in the future.</comment> - <constant name="TrackerEndcapOuter_zmin" value="TrackerBarrelOuter_length/2.0"/> - <constant name="TrackerEndcapOuter_zmax" value="TrackerEndcapOuter_zmin + 70"/> - <constant name="TrackerEndcapOuter_length" value="TrackerEndcapOuter_zmax- TrackerEndcapOuter_zmin"/> - <constant name="TrackerEndcapOuterLayer_dz" value="TrackerEndcapOuter_length/TrackerEndcapOuter_nLayers"/> - <constant name="TrackerEndcapOuterLayer_thickness" value="TrackerEndcapOuterLayer_dz - 1.0*cm"/> + <constant name="TrackerEndcapOuter_zmin" value="TrackerBarrelOuter_length/2.0"/> + <constant name="TrackerEndcapOuter_zmax" value="TrackerEndcapOuter_zmin + 70"/> + <constant name="TrackerEndcapOuter_length" value="TrackerEndcapOuter_zmax- TrackerEndcapOuter_zmin"/> + <constant name="TrackerEndcapOuterLayer_dz" value="TrackerEndcapOuter_length/TrackerEndcapOuter_nLayers"/> + <constant name="TrackerEndcapOuterLayer_thickness" value="min(5.0*cm,TrackerEndcapOuterLayer_dz - 1.0*cm)"/> <comment> Note, the -1.0*cm is so the layers do not touch surfaces. This is a limitation of ACTS geometry which will likely go away in the future.</comment> @@ -206,11 +205,11 @@ <envelope vis="AnlRed" rmin="TrackerEndcapInner_rmin1" rmax="TrackerEndcapInner_rmax1" - length="TrackerEndcapInnerLayer_dz" - zstart="TrackerEndcapInner_zmin" /> + length="TrackerEndcapInnerLayer_thickness" + zstart="TrackerEndcapInner_zmin + TrackerEndcapInner_length/2.0" /> <ring vis="AnlRed" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" - zstart="(50.0*mm)" + zstart="0.0" nmodules="12" dz="2.5 * mm" module="Module1" /> </layer> </detector> @@ -231,11 +230,11 @@ <envelope vis="AnlRed" rmin="TrackerEndcapInner_rmin1" rmax="TrackerEndcapInner_rmax1" - length="TrackerEndcapInnerLayer_dz" - zstart="TrackerEndcapInner_zmin" /> + length="TrackerEndcapInnerLayer_thickness" + zstart="TrackerEndcapInner_zmin + TrackerEndcapInner_length/2.0" /> <ring vis="AnlRed" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" - zstart="-(50.0*mm)" + zstart="0" nmodules="12" dz="2.5 * mm" module="Module1" /> </layer> </detector> @@ -312,8 +311,11 @@ name="TrackerEndcapP_Outer" type="athena_TrapEndcapTracker" readout="TrackerEndcapHits" - vis="AnlRed" + vis="TrackerVis" reflect="false"> + <support vis="TrackerSupportVis" material="CarbonFiber_25percent" + rmin="TrackerEndcapOuter_rmax3+1.0*mm" + thickness="2.0*mm" length="TrackerEndcapOuter_length" zstart="TrackerEndcapOuter_zmin" /> <module name="Module1" vis="AnlProcess_Blue"> <trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/> <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/> @@ -371,6 +373,9 @@ readout="TrackerEndcapHits" vis="AnlRed" reflect="true"> + <support vis="TrackerSupportVis" material="CarbonFiber_25percent" + rmin="TrackerEndcapOuter_rmax3+1.0*mm" + thickness="2.0*mm" length="TrackerEndcapOuter_length" zstart="TrackerEndcapOuter_zmin" /> <module name="Module1" vis="AnlProcess_Blue"> <trd x1="TrackerEndcapOuterMod1_x1/2.0" x2="TrackerEndcapOuterMod1_x2/2.0" z="TrackerEndcapOuterMod1_y/2"/> <module_component thickness="ITS3Thickness" material="Silicon" sensitive="true"/> diff --git a/compact/definitions.xml b/compact/definitions.xml index 865628c5..162f937e 100644 --- a/compact/definitions.xml +++ b/compact/definitions.xml @@ -113,8 +113,6 @@ The unused IDs below are saved for future use. <constant name="TrackerEndcapP_Layer5_ID" value="69"/> <constant name="TrackerEndcapN_Layer5_ID" value="70"/> - - <documentation> #### (75-84) Barrel Tracker IDs diff --git a/compact/display.xml b/compact/display.xml index 2aeb5571..ad508f31 100644 --- a/compact/display.xml +++ b/compact/display.xml @@ -10,7 +10,8 @@ <comment> Tracking Visualizations </comment> - <vis name="TrackerSupportVis" ref="AnlBlue" showDaughters="false" /> + <vis name="TrackerVis" ref="AnlRed" /> + <vis name="TrackerSupportVis" ref="AnlBlue" visible="true" showDaughters="true" /> <vis name="TrackerLayerVis" ref="AnlTeal" visible="true" showDaughters="true" /> <vis name="TrackerModuleVis" ref="TrackerLayerVis" visible="true" showDaughters="false" /> diff --git a/compact/vertex_tracker.xml b/compact/vertex_tracker.xml index 1cfc9065..bfe6f68a 100644 --- a/compact/vertex_tracker.xml +++ b/compact/vertex_tracker.xml @@ -52,6 +52,7 @@ Simple carbon fiber support shell. <constant name="VertexEndcap_NLayers" value="1"/> <constant name="VertexTrackerEndcap_delta" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> <constant name="VertexEndcapLayer_dz" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> + <constant name="VertexEndcapLayer_thickness" value="min(5*cm,VertexEndcapLayer_dz)"/> <constant name="VertexEndcapModOpeningAngle" value="30.0*degree"/> <constant name="VertexEndcapMod1_x1" value="2.0*VertexTrackerEndcapP_rmin*sin(VertexEndcapModOpeningAngle/2.0)"/> @@ -178,11 +179,11 @@ Simple carbon fiber support shell. <envelope vis="AnlRed" rmin="VertexTrackerEndcapP_rmin" rmax="VertexTrackerEndcapP_rmax" - length="VertexEndcapLayer_dz" - zstart="VertexTrackerEndcapP_zmin" /> + length="VertexEndcapLayer_thickness" + zstart="VertexTrackerEndcapP_zmin + VertexEndcapLayer_dz/2.0" /> <ring vis="AnlRed" r="VertexTrackerEndcapP_rmin+VertexEndcapMod1_y/2.0" - zstart="25.0*mm" + zstart="0.0" nmodules="12" dz="2.5 * mm" module="Module1" /> </layer> </detector> @@ -204,11 +205,11 @@ Simple carbon fiber support shell. <envelope vis="AnlRed" rmin="VertexTrackerEndcapN_rmin" rmax="VertexTrackerEndcapN_rmax" - length="VertexEndcapLayer_dz" - zstart="VertexTrackerEndcapN_zmin" /> + length="VertexEndcapLayer_thickness" + zstart="VertexTrackerEndcapN_zmin + VertexEndcapLayer_dz/2.0" /> <ring vis="AnlRed" r="VertexTrackerEndcapN_rmin+VertexEndcapMod1_y/2.0" - zstart="-25.0*mm" + zstart="0.0" nmodules="12" dz="2.5 * mm" module="Module1" /> </layer> </detector> diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp index a71bac11..1c486dfc 100644 --- a/src/TrapEndcapTracker_geo.cpp +++ b/src/TrapEndcapTracker_geo.cpp @@ -40,6 +40,25 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s assembly.setVisAttributes(description.invisible()); sens.setType("tracker"); + for (xml_coll_t su(x_det, _U(support)); su; ++su) { + std::cout << "support !!!\n"; + xml_comp_t x_support = su; + double support_thickness = getAttrOrDefault(x_support, _U(thickness), 2.0 * mm); + double support_length = getAttrOrDefault(x_support, _U(length), 2.0 * mm); + double support_rmin = getAttrOrDefault(x_support, _U(rmin), 2.0 * mm); + double support_zstart = getAttrOrDefault(x_support, _U(zstart), 2.0 * mm); + std::string support_vis = getAttrOrDefault<std::string>(x_support, _Unicode(vis), "AnlRed"); + Material support_mat = description.material(x_support.materialStr()); + Tube support_tub(support_rmin, support_rmin + support_thickness, support_length / 2); + Volume support_vol("support_tube", support_tub, support_mat); // Create the layer envelope volume. + support_vol.setVisAttributes(description.visAttributes(support_vis)); + if(reflect) { + pv = assembly.placeVolume(support_vol, Position(0, 0, -1.0 * (support_zstart + support_length / 2))); + } else { + pv = assembly.placeVolume(support_vol, Position(0, 0, support_zstart + support_length / 2)); + } + } + for (xml_coll_t mi(x_det, _U(module)); mi; ++mi, ++m_id) { xml_comp_t x_mod = mi; string m_nam = x_mod.nameStr(); -- GitLab