diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml index f7d1a8244f9a2cd2435c2f021cdedb08a4ae7da3..8d67c7bee5aed91a36a444b16867646606e11a2e 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 865628c5f738701868764d13cf31cbaf24022f40..162f937e46e5289c7048b5f27578e73164ed5388 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 2aeb55714c26ce59bdc3560ceee2e269b34d6d6d..ad508f310f2af1e8de489fc6efb4e194c70d2ac0 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 1cfc9065d6aef2aab67a81e3b936b157b39c54b6..bfe6f68a2abed15f52f9fcd08ba0ebd418fa3d7d 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 a71bac117d1796e258c527d38f6506abb3d69462..1c486dfc7d0318117604fb1b174489aca58ab371 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();