From 85c45920d89fddcc25cc596b89770bc213f74ae9 Mon Sep 17 00:00:00 2001 From: Sylvester Joosten <sylvester.joosten@gmail.com> Date: Thu, 13 May 2021 03:27:13 +0000 Subject: [PATCH] Add simple DIRC implementation. --- compact/B0_tracker.xml | 12 ++--- compact/cb_DIRC.xml | 43 ++++++++++++++++ compact/cb_VTX_Barrel.xml | 44 ++++++++--------- compact/definitions.xml | 9 ++-- compact/display.xml | 32 ++++++------ compact/far_forward_offM_tracker.xml | 12 ++--- compact/far_forward_romanpots.xml | 24 ++++----- compact/forward_trd.xml | 10 ++-- compact/gem_tracker_endcap.xml | 60 +++++++++++------------ compact/mm_tracker_barrel.xml | 2 +- compact/rwell_tracker_barrel.xml | 8 +-- compact/tof_endcap.xml | 12 ++--- compact/vertex_tracker.xml | 44 ++++++++--------- reference_detector.xml | 1 + src/cb_DIRC.cpp | 73 ++++++++++++++++++++++++++++ 15 files changed, 252 insertions(+), 134 deletions(-) create mode 100644 compact/cb_DIRC.xml create mode 100644 src/cb_DIRC.cpp diff --git a/compact/B0_tracker.xml b/compact/B0_tracker.xml index 165e3ebd..d7f14aa3 100644 --- a/compact/B0_tracker.xml +++ b/compact/B0_tracker.xml @@ -17,16 +17,16 @@ type="ref_RectangularTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Red"> + vis="AnlRed"> <position x="0" y="0" z="B0Tracker_zpos"/> <layer id="1" - vis="Argonne_Blue" + vis="AnlBlue" x="20.0*cm" y="10.0*cm" > - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> </layer> </detector> </detectors> diff --git a/compact/cb_DIRC.xml b/compact/cb_DIRC.xml new file mode 100644 index 00000000..a7f46ac5 --- /dev/null +++ b/compact/cb_DIRC.xml @@ -0,0 +1,43 @@ +<lccdd> + + <comment>Initial implementation of the Reference Detector + DIRC (ported from g4e). Currently constructed around + a fixed radius of 83.65cm (between the uRWEL layers). + TODO: this needs to be properly parameterized. + </comment> + + <define> + <constant name="cb_DIRC_length" value="TrackerBarrelOuter_length"/> + <constant name="cb_DIRC_rmin" value="82.00*cm"/> + <constant name="cb_DIRC_rmax" value="88.00*cm"/> + </define> + + <limits> + </limits> + + <regions> + </regions> + + <display> + </display> + + <detectors> + <detector id="BarrelDIRC_ID" name="cb_DIRC" type="cb_DIRC" readout="DIRCHits" vis="AnlTeal"> + <dimensions rmin="cb_DIRC_rmin" rmax="cb_DIRC_rmax" length="cb_DIRC_length"/> + <position x="0" y="0" z="0"/> + </detector> + </detectors> + + <readouts> + <readout name="DIRCHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" /> + <id>system:8,barrel:3,module:12,x:32:-16,y:-16</id> + </readout> + </readouts> + + <plugins> + </plugins> + + <fields> + </fields> +</lccdd> diff --git a/compact/cb_VTX_Barrel.xml b/compact/cb_VTX_Barrel.xml index 7979a82d..4b39ba89 100644 --- a/compact/cb_VTX_Barrel.xml +++ b/compact/cb_VTX_Barrel.xml @@ -60,72 +60,72 @@ </detector> <detector id="SiVertexEndcapP_ID" name="SiVertexEndcapP" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="false" vis="Argonne_Red"> + insideTrackingVolume="true" reflect="false" vis="AnlRed"> <position x="0" y="0" z="0"/> - <layer id="1" vis="Argonne_Orange" + <layer id="1" vis="AnlOrange" inner_z="SiVertexEndcapP_zmin + 0*SiVertexEndcap_delta" inner_r="SiVertexEndcapP_rmin" outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="2" vis="Argonne_Orange" + <layer id="2" vis="AnlOrange" inner_z="SiVertexEndcapP_zmin + 1*SiVertexEndcap_delta" inner_r="SiVertexEndcapP_rmin" outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="3" vis="Argonne_Orange" + <layer id="3" vis="AnlOrange" inner_z="SiVertexEndcapP_zmin + 2*SiVertexEndcap_delta" inner_r="SiVertexEndcapP_rmin" outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="4" vis="Argonne_Orange" + <layer id="4" vis="AnlOrange" inner_z="SiVertexEndcapP_zmin + 3*SiVertexEndcap_delta" inner_r="SiVertexEndcapP_rmin" outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="5" vis="Argonne_Orange" + <layer id="5" vis="AnlOrange" inner_z="SiVertexEndcapP_zmin + 4*SiVertexEndcap_delta" inner_r="SiVertexEndcapP_rmin" outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> </detector> <detector id="SiVertexEndcapN_ID" name="SiVertexEndcapN" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="true" vis="Argonne_Red"> + insideTrackingVolume="true" reflect="true" vis="AnlRed"> <position x="0" y="0" z="0"/> - <layer id="1" vis="Argonne_Orange" + <layer id="1" vis="AnlOrange" inner_z="SiVertexEndcapN_zmin + 0*SiVertexEndcap_delta" inner_r="SiVertexEndcapN_rmin" outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="2" vis="Argonne_Orange" + <layer id="2" vis="AnlOrange" inner_z="SiVertexEndcapN_zmin + 1*SiVertexEndcap_delta" inner_r="SiVertexEndcapN_rmin" outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="3" vis="Argonne_Orange" + <layer id="3" vis="AnlOrange" inner_z="SiVertexEndcapN_zmin + 2*SiVertexEndcap_delta" inner_r="SiVertexEndcapN_rmin" outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="4" vis="Argonne_Orange" + <layer id="4" vis="AnlOrange" inner_z="SiVertexEndcapN_zmin + 3*SiVertexEndcap_delta" inner_r="SiVertexEndcapN_rmin" outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="5" vis="Argonne_Orange" + <layer id="5" vis="AnlOrange" inner_z="SiVertexEndcapN_zmin + 4*SiVertexEndcap_delta" inner_r="SiVertexEndcapN_rmin" outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> </detector> </detectors> diff --git a/compact/definitions.xml b/compact/definitions.xml index 1a8f2eae..f9e21323 100644 --- a/compact/definitions.xml +++ b/compact/definitions.xml @@ -341,7 +341,8 @@ <constant name="ForwardPID_rmin1" value="Beampipe_rmax + 80*mm"/> <comment> Barrel PID thicknesses</comment> - <constant name="BarrelExtraPIDThickness" value="25.0 * cm"/> + <comment> Note: ExtraPID set to zero, as we have potentially trackers past PID</comment> + <constant name="BarrelExtraPIDThickness" value="0.0 * cm"/> <constant name="BarrelTRDThickness" value="1.0 * cm"/> <constant name="BarrelTOFThickness" value="1.0 * cm"/> @@ -399,7 +400,7 @@ </comment> <constant name="TrackerBarrel_rmin" value="VertexTrackerBarrel_rmax"/> - <constant name="TrackerBarrel_rmax" value="Solenoid_rmax/3.0"/> + <constant name="TrackerBarrel_rmax" value="92*cm"/> <constant name="TrackerBarrelOuter_length" value="1600.0*mm"/> <constant name="TrackerBarrelInner_length" value="VertexTrackingRegion_length"/> <constant name="TrackerBarrelInner_zmax" value="TrackerBarrelInner_length/2.0"/> @@ -464,8 +465,8 @@ <constant name="SolenoidYokeEndcapP_zmin" value="Solenoid_length/2.0 + Solenoid_offset + HcalEndcapPExtra_length"/> <constant name="SolenoidYokeEndcapN_zmin" value="Solenoid_length/2.0 - Solenoid_offset + HcalEndcapNExtra_length"/> - <constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelExtraPIDThickness + 5.0 * mm"/> - <constant name="Barrel_rmax" value="Solenoid_rmin - 10.0 *cm "/> + <constant name="EcalBarrel_rmin" value="TrackerBarrel_rmax + 35.0 * mm"/> + <constant name="Barrel_rmax" value="Solenoid_rmin - 1.0 *cm "/> <constant name="Barrel_TotalCalThickness" value="Barrel_rmax - EcalBarrel_rmin"/> <constant name="CalBarrelDivider" value="0.8"/> diff --git a/compact/display.xml b/compact/display.xml index c945d2b7..62752578 100644 --- a/compact/display.xml +++ b/compact/display.xml @@ -1,23 +1,23 @@ <display> - <vis name="Argonne_Green" alpha="1" r="119/255" g="179/255" b="0"/> - <vis name="Argonne_Violet" alpha="1" r="91/256" g="0" b="145/256"/> - <vis name="Argonne_Process_Blue" alpha="1" r="0/256" g="130/256" b="202/256"/> - <vis name="Argonne_Orange" alpha="1" r="255/256" g="121/256" b="0"/> - <vis name="Argonne_Red" alpha="1" r="205/256" g="32/256" b="44/256"/> - <vis name="Argonne_Gold" alpha="1" r="248/256" g="178/256" b="0/256"/> - <vis name="Argonne_Blue" alpha="1" r="0/256" g="96/256" b="156/256"/> - <vis name="Argonne_Teal" alpha="1" r="0/256" g="161/256" b="156/256"/> - <vis name="Argonne_Gray" alpha="1" r="102/256" g="102/256" b="102/256"/> - <vis name="Argonne_Light_Gray" alpha="1" r="209/256" g="209/256" b="209/256"/> - <vis name="Argonne_Off_White" alpha="1" r="242/256" g="242/256" b="242/256"/> - <vis name="Argonne_Delta_Red" alpha="1" r="161/256" g="43/256" b="47/256"/> - <vis name="Argonne_Delta_Green" alpha="1" r="0" g="120/256" b="54/256"/> - <vis name="Argonne_Delta_Blue" alpha="1" r="11/256" g="31/256" b="143/256"/> + <vis name="AnlGreen" alpha="1" r="119/255" g="179/255" b="0"/> + <vis name="AnlViolet" alpha="1" r="91/256" g="0" b="145/256"/> + <vis name="AnlProcess_Blue" alpha="1" r="0/256" g="130/256" b="202/256"/> + <vis name="AnlOrange" alpha="1" r="255/256" g="121/256" b="0"/> + <vis name="AnlRed" alpha="1" r="205/256" g="32/256" b="44/256"/> + <vis name="AnlGold" alpha="1" r="248/256" g="178/256" b="0/256"/> + <vis name="AnlBlue" alpha="1" r="0/256" g="96/256" b="156/256"/> + <vis name="AnlTeal" alpha="1" r="0/256" g="161/256" b="156/256"/> + <vis name="AnlGray" alpha="1" r="102/256" g="102/256" b="102/256"/> + <vis name="AnlLight_Gray" alpha="1" r="209/256" g="209/256" b="209/256"/> + <vis name="AnlOff_White" alpha="1" r="242/256" g="242/256" b="242/256"/> + <vis name="AnlDelta_Red" alpha="1" r="161/256" g="43/256" b="47/256"/> + <vis name="AnlDelta_Green" alpha="1" r="0" g="120/256" b="54/256"/> + <vis name="AnlDelta_Blue" alpha="1" r="11/256" g="31/256" b="143/256"/> - <vis name="Argonne_Red_1" alpha="0.5" r="205/256" g="32/256" b="44/256"/> + <vis name="AnlRed_1" alpha="0.5" r="205/256" g="32/256" b="44/256"/> - <comment>Tracker_Layer_Vis is Argonne_Gold</comment> + <comment>Tracker_Layer_Vis is AnlGold</comment> <vis name="Tracker_Layer_Vis" alpha="0.5" r="248/256" g="178/256" b="0/256" showDaughters="true" /> <vis name="InvisibleNoDaughters" showDaughters="false" visible="false"/> diff --git a/compact/far_forward_offM_tracker.xml b/compact/far_forward_offM_tracker.xml index 325b07d4..ae7f4752 100644 --- a/compact/far_forward_offM_tracker.xml +++ b/compact/far_forward_offM_tracker.xml @@ -18,16 +18,16 @@ type="ref_RectangularTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Red"> + vis="AnlRed"> <position x="ForwardOffMTracker_xpos" y="0" z="ForwardOffMTracker_zpos"/> <layer id="1" - vis="Argonne_Violet" + vis="AnlViolet" x="60.0*cm" y="20.0*cm" > - <slice material="Air" thickness="1.0*cm" vis="Argonne_Violet" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Violet" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Violet" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Violet" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlViolet" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlViolet" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlViolet" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlViolet" sensitive="true" /> </layer> </detector> </detectors> diff --git a/compact/far_forward_romanpots.xml b/compact/far_forward_romanpots.xml index 141b326d..ba81c1f3 100644 --- a/compact/far_forward_romanpots.xml +++ b/compact/far_forward_romanpots.xml @@ -20,16 +20,16 @@ type="ref_RectangularTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Red"> + vis="AnlRed"> <position x="ForwardRomanPotA_xpos" y="0" z="ForwardRomanPotA_zpos"/> <layer id="1" - vis="Argonne_Blue" + vis="AnlBlue" x="20.0*cm" y="10.0*cm" > - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> </layer> </detector> <detector @@ -39,16 +39,16 @@ type="ref_RectangularTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Red"> + vis="AnlRed"> <position x="ForwardRomanPotB_xpos" y="0" z="ForwardRomanPotB_zpos"/> <layer id="1" - vis="Argonne_Blue" + vis="AnlBlue" x="20.0*cm" y="10.0*cm" > - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> - <slice material="Air" thickness="1.0*cm" vis="Argonne_Blue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> + <slice material="Air" thickness="1.0*cm" vis="AnlBlue" sensitive="true" /> </layer> </detector> </detectors> diff --git a/compact/forward_trd.xml b/compact/forward_trd.xml index ef2195ca..093bb067 100644 --- a/compact/forward_trd.xml +++ b/compact/forward_trd.xml @@ -18,22 +18,22 @@ type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Red"> + vis="AnlRed"> <position x="0" y="0" z="0.0"/> <layer id="1" - vis="Argonne_Red" + vis="AnlRed" inner_z="ForwardTRD_zmin" inner_r="ForwardTRD_rmin" outer_r="ForwardTRD_rmax"> - <slice material="Air" thickness="ForwardTRD_length/2.5" vis="Argonne_Red" /> + <slice material="Air" thickness="ForwardTRD_length/2.5" vis="AnlRed" /> </layer> <layer id="1" - vis="Argonne_Red" + vis="AnlRed" inner_z="ForwardTRD_zmin+ForwardTRD_length/2.0" inner_r="ForwardTRD_rmin" outer_r="ForwardTRD_rmax"> - <slice material="Air" thickness="ForwardTRD_length/2.5" vis="Argonne_Red" /> + <slice material="Air" thickness="ForwardTRD_length/2.5" vis="AnlRed" /> </layer> </detector> </detectors> diff --git a/compact/gem_tracker_endcap.xml b/compact/gem_tracker_endcap.xml index d545a86a..12477412 100644 --- a/compact/gem_tracker_endcap.xml +++ b/compact/gem_tracker_endcap.xml @@ -70,9 +70,9 @@ name="GEMTrackerEndcap" type="refdet_GEMTrackerEndcap" readout="GEMTrackerEndcapHits" - vis="Argonne_Red" + vis="AnlRed" reflect="false"> - <module name="GEMModule1" vis="Argonne_Process_Blue"> + <module name="GEMModule1" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFoilX1/2.0" x2="GEMTrackerEndcapFoilX2/2.0" z="GEMTrackerEndcapFoilY/2"/> <comment> Going from HV side to readout side</comment> <module_component thickness="0.127 * mm" material="Mylar"/> @@ -93,62 +93,62 @@ <module_component thickness="30.0*um" material="Kapton" name="readout" sensitive="true"/> <module_component thickness=" 3.0*um" material="Copper" name="readout_Cu"/> <module_component thickness="127.0*um" material="Mylar"/> - <module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="Argonne_Process_Blue"/> + <module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="AnlProcess_Blue"/> </module> - <module name="GEMSupportModule1" vis="Argonne_Process_Blue"> + <module name="GEMSupportModule1" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFoilX2/2.0" x2="GEMTrackerEndcapFoilX1/2.0" z="GEMTrackerEndcapFrameBotEdge_width"/> <module_component thickness="GEMTrackerEndcapFrame_thickness" material="Mylar"/> </module> - <module name="GEMSupportModule2" vis="Argonne_Process_Blue"> + <module name="GEMSupportModule2" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFrameSideEdge_width" x2="GEMTrackerEndcapFrameSideEdge_width" z="GEMTrackerEndcapFoilY/2"/> <module_component thickness="4.0*mm" material="Mylar"/> </module> <layer id="1" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="2" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+1.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+1.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="3" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+2.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+2.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="4" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+3.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+3.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="5" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+4.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+4.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> @@ -160,9 +160,9 @@ name="GEMTrackerEndcapN" type="refdet_GEMTrackerEndcap" readout="GEMTrackerEndcapHits" - vis="Argonne_Red" + vis="AnlRed" reflect="true"> - <module name="GEMModule1" vis="Argonne_Process_Blue"> + <module name="GEMModule1" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFoilX1/2.0" x2="GEMTrackerEndcapFoilX2/2.0" z="GEMTrackerEndcapFoilY/2"/> <comment> Going from HV side to readout side</comment> <module_component thickness="0.127 * mm" material="Mylar"/> @@ -183,62 +183,62 @@ <module_component thickness="30.0*um" material="Kapton" name="readout" sensitive="true"/> <module_component thickness=" 3.0*um" material="Copper" name="readout_Cu"/> <module_component thickness="127.0*um" material="Mylar"/> - <module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="Argonne_Process_Blue"/> + <module_component thickness="200.0*um" material="Epoxy" sensitive="true" vis="AnlProcess_Blue"/> </module> - <module name="GEMSupportModule1" vis="Argonne_Process_Blue"> + <module name="GEMSupportModule1" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFoilX2/2.0" x2="GEMTrackerEndcapFoilX1/2.0" z="GEMTrackerEndcapFrameBotEdge_width"/> <module_component thickness="GEMTrackerEndcapFrame_thickness" material="Mylar"/> </module> - <module name="GEMSupportModule2" vis="Argonne_Process_Blue"> + <module name="GEMSupportModule2" vis="AnlProcess_Blue"> <trd x1="GEMTrackerEndcapFrameSideEdge_width" x2="GEMTrackerEndcapFrameSideEdge_width" z="GEMTrackerEndcapFoilY/2"/> <module_component thickness="4.0*mm" material="Mylar"/> </module> <layer id="1" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin + 0.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="2" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+1.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+1.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="3" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+2.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+2.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="4" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+3.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+3.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> </layer> <layer id="5" > - <ring vis="Argonne_Red" + <ring vis="AnlRed" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+4.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="10 * mm" module="GEMModule1" /> - <ring vis="Argonne_Blue" phi0="15.0*degree" + <ring vis="AnlBlue" phi0="15.0*degree" r="GEMTrackerEndcapFoil_rmin+GEMTrackerEndcapFoilY/2.0" zstart="GEMTrackerEndcap_zmin+4.5*GEMTrackerEndcapLayer_thickness" nmodules="12" dz="0 * mm" module="GEMSupportModule2" /> diff --git a/compact/mm_tracker_barrel.xml b/compact/mm_tracker_barrel.xml index aef3c89d..6d562902 100644 --- a/compact/mm_tracker_barrel.xml +++ b/compact/mm_tracker_barrel.xml @@ -27,7 +27,7 @@ <detectors> <detector id="MMTrackerBarrel_ID" name="MMTrackerBarrel" type="refdet_MMTrackerBarrel" readout="MMTrackerBarrelHits"> - <module name="Module1" vis="Argonne_Gold"> + <module name="Module1" vis="AnlGold"> <module_envelope rmin="TrackerBarrel_rmax" length="MMTrackerBarrelLayer1_length" diff --git a/compact/rwell_tracker_barrel.xml b/compact/rwell_tracker_barrel.xml index f03dd28e..9826d103 100644 --- a/compact/rwell_tracker_barrel.xml +++ b/compact/rwell_tracker_barrel.xml @@ -17,9 +17,9 @@ //outer ring support_03_thickness = 0.50; support_03_length = 1.2; - - modified R=(73.67, 85.0) cm // to avoid conflict with EM Cal + Length=TrackerBarrelOuter_length=(160, 160) cm // to avoid conflict with GEM tracker + TODO: fix GEM geometry and restore length </comment> <define> @@ -34,12 +34,12 @@ <constant name="RWellTrackerBarrel_Pcb_thickness" value="0.1*mm"/> <constant name="RWellTrackerBarrelLayer1_length" value="RWellTrackerBarrel_length"/> - <constant name="RWellTrackerBarrelLayer1_gas_rmin" value="736.7 * mm"/> + <constant name="RWellTrackerBarrelLayer1_gas_rmin" value="786.7 * mm"/> <constant name="RWellTrackerBarrelLayer1_rmin" value="RWellTrackerBarrelLayer1_gas_rmin - RWellTrackerBarrel_Kapton_thickness"/> <constant name="RWellTrackerBarrelLayer1_thickness" value="RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Prepreg_thickness + RWellTrackerBarrel_Pcb_thickness"/> <constant name="RWellTrackerBarrelLayer2_length" value="RWellTrackerBarrel_length"/> - <constant name="RWellTrackerBarrelLayer2_gas_rmin" value="850.0 * mm"/> + <constant name="RWellTrackerBarrelLayer2_gas_rmin" value="900.0 * mm"/> <constant name="RWellTrackerBarrelLayer2_rmin" value="RWellTrackerBarrelLayer2_gas_rmin - RWellTrackerBarrel_Kapton_thickness"/> <constant name="RWellTrackerBarrelLayer2_thickness" value="RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Prepreg_thickness + RWellTrackerBarrel_Pcb_thickness"/> diff --git a/compact/tof_endcap.xml b/compact/tof_endcap.xml index 50d9cff9..b3f3e88e 100644 --- a/compact/tof_endcap.xml +++ b/compact/tof_endcap.xml @@ -21,14 +21,14 @@ type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" - vis="Argonne_Orange"> + vis="AnlOrange"> <position x="0" y="0" z="0.0"/> <layer id="1" - vis="Argonne_Orange" + vis="AnlOrange" inner_z="ForwardTOF_zmin" inner_r="ForwardTOF_rmin" outer_r="ForwardTOF_rmax"> - <slice material="Air" thickness="ForwardTOF_length/2.0" vis="Argonne_Orange" /> + <slice material="Air" thickness="ForwardTOF_length/2.0" vis="AnlOrange" /> </layer> </detector> @@ -38,14 +38,14 @@ type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" - vis="Argonne_Orange"> + vis="AnlOrange"> <position x="0" y="0" z="0.0"/> <layer id="1" - vis="Argonne_Orange" + vis="AnlOrange" inner_z="BackwardTOF_zmin" inner_r="BackwardTOF_rmin" outer_r="BackwardTOF_rmax"> - <slice material="Air" thickness="BackwardTOF_length/2.0" vis="Argonne_Orange" /> + <slice material="Air" thickness="BackwardTOF_length/2.0" vis="AnlOrange" /> </layer> </detector> diff --git a/compact/vertex_tracker.xml b/compact/vertex_tracker.xml index dd27d981..be68f343 100644 --- a/compact/vertex_tracker.xml +++ b/compact/vertex_tracker.xml @@ -122,72 +122,72 @@ </detector> <detector id="SiVertexEndcapP_ID" name="VertexTrackerEndcapP" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="false" vis="Argonne_Red"> + insideTrackingVolume="true" reflect="false" vis="AnlRed"> <position x="0" y="0" z="0"/> - <layer id="1" vis="Argonne_Orange" + <layer id="1" vis="AnlOrange" inner_z="VertexTrackerEndcapP_zmin + 0*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapP_rmin" outer_r="VertexTrackerEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="2" vis="Argonne_Orange" + <layer id="2" vis="AnlOrange" inner_z="VertexTrackerEndcapP_zmin + 1*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapP_rmin" outer_r="VertexTrackerEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="3" vis="Argonne_Orange" + <layer id="3" vis="AnlOrange" inner_z="VertexTrackerEndcapP_zmin + 2*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapP_rmin" outer_r="VertexTrackerEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="4" vis="Argonne_Orange" + <layer id="4" vis="AnlOrange" inner_z="VertexTrackerEndcapP_zmin + 3*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapP_rmin" outer_r="VertexTrackerEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="5" vis="Argonne_Orange" + <layer id="5" vis="AnlOrange" inner_z="VertexTrackerEndcapP_zmin + 4*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapP_rmin" outer_r="VertexTrackerEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> </detector> <detector id="SiVertexEndcapN_ID" name="VertexTrackerEndcapN" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="true" vis="Argonne_Red"> + insideTrackingVolume="true" reflect="true" vis="AnlRed"> <position x="0" y="0" z="0"/> - <layer id="1" vis="Argonne_Orange" + <layer id="1" vis="AnlOrange" inner_z="VertexTrackerEndcapN_zmin + 0*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapN_rmin" outer_r="VertexTrackerEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="2" vis="Argonne_Orange" + <layer id="2" vis="AnlOrange" inner_z="VertexTrackerEndcapN_zmin + 1*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapN_rmin" outer_r="VertexTrackerEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="3" vis="Argonne_Orange" + <layer id="3" vis="AnlOrange" inner_z="VertexTrackerEndcapN_zmin + 2*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapN_rmin" outer_r="VertexTrackerEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="4" vis="Argonne_Orange" + <layer id="4" vis="AnlOrange" inner_z="VertexTrackerEndcapN_zmin + 3*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapN_rmin" outer_r="VertexTrackerEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> - <layer id="5" vis="Argonne_Orange" + <layer id="5" vis="AnlOrange" inner_z="VertexTrackerEndcapN_zmin + 4*VertexTrackerEndcap_delta" inner_r="VertexTrackerEndcapN_rmin" outer_r="VertexTrackerEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="Argonne_Orange" /> + <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> </layer> </detector> diff --git a/reference_detector.xml b/reference_detector.xml index 7a512442..60c1c2aa 100644 --- a/reference_detector.xml +++ b/reference_detector.xml @@ -136,6 +136,7 @@ --> <include ref="compact/rwell_tracker_barrel.xml"/> + <include ref="compact/cb_DIRC.xml"/> <detectors> </detectors> diff --git a/src/cb_DIRC.cpp b/src/cb_DIRC.cpp new file mode 100644 index 00000000..41932ef8 --- /dev/null +++ b/src/cb_DIRC.cpp @@ -0,0 +1,73 @@ +#include "DD4hep/DetFactoryHelper.h" +#include "DD4hep/OpticalSurfaces.h" +#include "DD4hep/Printout.h" +#include "DDRec/DetectorData.h" +#include "DDRec/Surface.h" +#include <XML/Helper.h> +////////////////////////////////// +// Central Barrel DIRC +////////////////////////////////// + +using namespace std; +using namespace dd4hep; + +static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens) +{ + xml_det_t x_det = e; + string detName = x_det.nameStr(); + int detID = x_det.id(); + + xml_dim_t dim = x_det.dimensions(); + xml_dim_t pos = x_det.position(); + double RIn = dim.rmin(); + double ROut = dim.rmax(); + double SizeZ = dim.length(); + + Material Vacuum = desc.material("Vacuum"); + Tube cb_DIRC_Barrel_GVol_Solid(RIn, ROut, SizeZ / 2.0, 0., 360.0 * deg); + Volume detVol("cb_DIRC_GVol_Solid_Logic", cb_DIRC_Barrel_GVol_Solid, Vacuum); + detVol.setVisAttributes(desc.invisible()); + + DetElement det(detName, detID); + Volume motherVol = desc.pickMotherVolume(det); + Transform3D tr(RotationZYX(0.0, 0.0, 0.0), Position(0.0, 0.0, pos.z())); + PlacedVolume detPV = motherVol.placeVolume(detVol, tr); + detPV.addPhysVolID("system", detID); + detPV.addPhysVolID("barrel", 1); + det.setPlacement(detPV); + + ////////////////// + // DIRC Bars + ////////////////// + + double dR = 83.65 * cm; + + double cb_DIRC_bars_DZ = SizeZ; + double cb_DIRC_bars_DY = 42. * cm; + double cb_DIRC_bars_DX = 1.7 * cm; + double myL = 2 * M_PI * dR; + int NUM = myL / cb_DIRC_bars_DY; + + double cb_DIRC_bars_deltaphi = 2 * 3.1415926 / NUM; + + Material cb_DIRC_bars_Material = desc.material("Quartz"); + + Box cb_DIRC_bars_Solid(cb_DIRC_bars_DX / 2., cb_DIRC_bars_DY / 2., cb_DIRC_bars_DZ / 2.); + Volume cb_DIRC_bars_Logic("cb_DIRC_bars_Logix", cb_DIRC_bars_Solid, cb_DIRC_bars_Material); + cb_DIRC_bars_Logic.setVisAttributes(desc.visAttributes(x_det.visStr())); + sens.setType("photoncounter"); + cb_DIRC_bars_Logic.setSensitiveDetector(sens); + + for (int ia = 0; ia < NUM; ia++) { + double phi = (ia * (cb_DIRC_bars_deltaphi)); + double x = -dR * cos(phi); + double y = -dR * sin(phi); + + Transform3D tr(RotationZ(cb_DIRC_bars_deltaphi * ia), Position(x, y, 0)); + PlacedVolume barPV = detVol.placeVolume(cb_DIRC_bars_Logic, tr); + barPV.addPhysVolID("module", ia); + } + return det; +} + +DECLARE_DETELEMENT(cb_DIRC, createDetector) -- GitLab