diff --git a/.gitignore b/.gitignore index da6391316808d8e158a2094110a104522dfff3c8..21b41f3cb84630ce6cf7704f4fa3afae3a2fd63e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,26 @@ +!*.png + +*.prim +*/*.eps +*/*/*.eps +*/*/*.png +*/*/*.pdf +*.root build/* +.DAWN* +*/*.pyc +**.pyc + +images/* +doc/* + +accelerator +eic + +*.swp + +fieldmaps +manifest.txt +acts.txt +acts2.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae9ae6616773957efaab97669091efc590761334..7d01eb7974054b686cf138e0ced1b6bfcfdf1e89 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -114,7 +114,7 @@ dump_geometry: - echo "dumping geometry" - mkdir -p geo - dd_web_display --output geo/detector_geo_full.root eic_ip6.xml - - echo "Geometry viewer at https://eic.phy.anl.gov/geoviewer/index.htm?file=https://eicweb.phy.anl.gov/EIC/detectors/ip6/-/jobs/${CI_JOB_ID}/artifacts/raw/geo/detector_geo_full.root?job=dump_geometry&item=default;1&opt=clipxyz;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&" + - echo "Geometry viewer at https://eic.phy.anl.gov/geoviewer/index.htm?file=https://eicweb.phy.anl.gov/EIC/detectors/ip6/-/jobs/${CI_JOB_ID}/artifacts/raw/geo/detector_geo_full.root?job=dump_geometry&item=default;1&opt=transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&" xmllint: stage: test diff --git a/CMakeLists.txt b/CMakeLists.txt index a5e639ed7fe451dbe7b92a3973526d985e5363d4..83cdee5db2b2452993934c7a785a4176d86fae41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ dd4hep_configure_output() dd4hep_add_plugin(${a_lib_name} SOURCES + src/CylindricalDipoleMagnet_geo.cpp src/B0Tracker_geo.cpp src/B0Preshower_geo.cpp src/DD4hep_GdmlDetector.cpp diff --git a/detector_geometry.root b/detector_geometry.root deleted file mode 100644 index 4d855d89bef624a76442d6a4a0692583635bd092..0000000000000000000000000000000000000000 Binary files a/detector_geometry.root and /dev/null differ diff --git a/eic_ip6.xml b/eic_ip6.xml index c3af6d9cd00a5818fe346991c801393846cc26f2..d7105ea7560bf7999a90af588021bf6b341b9fac 100644 --- a/eic_ip6.xml +++ b/eic_ip6.xml @@ -69,6 +69,7 @@ </includes> <display> + <include ref="ip6/ip6_colors.xml" /> <include ref="ip6/ip6_display.xml" /> </display> @@ -80,10 +81,16 @@ <include ref="ip6/far_forward_offM_tracker.xml"/> <include ref="ip6/far_forward_detectors.xml"/> <include ref="ip6/roman_pots_eRD24_design.xml"/> - <!--<include ref="ip6/beam_orbit_tracker.xml"/>--> + <!-- + Old BOM not used + <include ref="ip6/beam_orbit_tracker.xml"/> + --> <include ref="ip6/inner_vacuum_FF_magnets.xml"/> - <!--include ref="ip6/magnets.xml" /--> + <!-- + Magnet file not used for some reason + <include ref="ip6/magnets.xml" /> + --> <fields> <field name="B0PF_Magnet" type="MultipoleMagnet"> <position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/> @@ -141,50 +148,6 @@ <coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/> <coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/> </field> - <!-- - <field name="QPFC1_Magnet" type="MultipoleMagnet"> - <position x="QPFC1_XPosition" y="0" z="QPFC1_CenterPosition"/> - <rotation x="0" y="QPFC1_RotationAngle" z="pi/2.0"/> - <shape type="Tube" rmin="0.0" rmax="QPFC1_InnerRadius" dz="QPFC1_Length*0.5"/> - <coefficient coefficient="QPFC1_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="QPFC1_GradientMax" skew="0.0*tesla/cm"/> - </field> - <field name="QPFC2_Magnet" type="MultipoleMagnet"> - <position x="QPFC2_XPosition" y="0" z="QPFC2_CenterPosition"/> - <rotation x="0" y="QPFC2_RotationAngle" z="pi/2.0"/> - <shape type="Tube" rmin="0.0" rmax="QPFC2_InnerRadius" dz="QPFC2_Length*0.5"/> - <coefficient coefficient="QPFC2_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="QPFC2_GradientMax" skew="0.0*tesla/cm"/> - </field> - <field name="QPFC3_Magnet" type="MultipoleMagnet"> - <position x="QPFC3_XPosition" y="0" z="QPFC3_CenterPosition"/> - <rotation x="0" y="QPFC3_RotationAngle" z="pi/2.0"/> - <shape type="Tube" rmin="0.0" rmax="QPFC3_InnerRadius" dz="QPFC3_Length*0.5"/> - <coefficient coefficient="QPFC3_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="QPFC3_GradientMax" skew="0.0*tesla/cm"/> - </field> - <field name="QPFC4_Magnet" type="MultipoleMagnet"> - <position x="QPFC4_XPosition" y="0" z="QPFC4_CenterPosition"/> - <rotation x="0" y="QPFC4_RotationAngle" z="pi/2.0"/> - <shape type="Tube" rmin="0.0" rmax="QPFC4_InnerRadius" dz="QPFC4_Length*0.5"/> - <coefficient coefficient="QPFC4_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="QPFC4_GradientMax" skew="0.0*tesla/cm"/> - </field> - <field name="QPFR1_Magnet" type="MultipoleMagnet"> - <position x="QPFR1_XPosition" y="0" z="QPFR1_CenterPosition"/> - <rotation x="0" y="QPFR1_RotationAngle" z="pi/2.0"/> - <shape type="Tube" rmin="0.0" rmax="QPFR1_InnerRadius" dz="QPFR1_Length*0.5"/> - <coefficient coefficient="QPFR1_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="QPFR1_GradientMax" skew="0.0*tesla/cm"/> - </field> - <field name="BPFR1_Magnet" type="MultipoleMagnet"> - <position x="BPFR1_XPosition" y="0" z="BPFR1_CenterPosition"/> - <rotation x="0" y="BPFR1_RotationAngle" z="0"/> - <shape type="Tube" rmin="0.0" rmax="BPFR1_InnerRadius" dz="BPFR1_Length*0.5"/> - <coefficient coefficient="BPFR1_Bmax" skew="0.0*tesla"/> - <coefficient coefficient="BPFR1_GradientMax" skew="0.0*tesla/cm"/> - </field> - --> </fields> </lccdd> diff --git a/ip6/B0_preshower.xml b/ip6/B0_preshower.xml index c21691b68293014a301f93f809658343e13fa43e..80cbb368e2e74ed7741d392e163d9b0446466f2f 100644 --- a/ip6/B0_preshower.xml +++ b/ip6/B0_preshower.xml @@ -17,9 +17,9 @@ <comment> This angle is the angle subtended in phi for each trap segment. </comment> - <constant name="B0PreshowerModOpeningAngle" value="30.0*degree"/> - <constant name="B0PreshowerLayer_nModules" value="12"/> - <constant name="B0PreshowerLayerSmallMod_nModules" value="2"/> + <constant name="B0PreshowerLayer_nModules" value="36"/> + <constant name="B0PreshowerLayerSmallMod_nModules" value="B0PreshowerLayer_nModules/6"/> + <constant name="B0PreshowerModOpeningAngle" value="360.0*degree/B0PreshowerLayer_nModules"/> <constant name="B0PreshowerLayerBigMod_nModules" value="B0PreshowerLayer_nModules - B0PreshowerLayerSmallMod_nModules"/> <constant name="B0PreshowerLayerBigMod_phi0" value="(B0PreshowerLayerSmallMod_nModules/2.0 + 0.5)*B0PreshowerModOpeningAngle + Pi"/> <constant name="B0PreshowerLayerSmallMod_phi0" value="(B0PreshowerLayerSmallMod_nModules/2.0 - 0.5)*B0PreshowerModOpeningAngle + Pi"/> @@ -43,64 +43,32 @@ name="B0Preshower" type="ip6_B0Preshower" readout="B0PreshowerHits" - vis="AnlRed" + vis="FFPreVis" reflect="false"> <position x="B0PreshowerCenter_xpos" y="0" z="B0PreshowerCenter_zpos"/> <rotation x="0*rad" y="B0Preshower_rotation" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="FFPreModuleVis"> + <comment>The module is constructed back-to-front</comment> <trd x1="B0PreshowerMod1_x1/2.0" x2="B0PreshowerMod1_x2/2.0" z="B0PreshowerMod1_y/2"/> - <module_component material="PbWO4" thickness="1.0*cm" vis="AnlYellow"/> - <module_component material="SiliconOxide" thickness="0.3*mm" sensitive="true"/> + <module_component material="SiliconOxide" thickness="0.3*mm" vis="FFPreReadoutVis" sensitive="true"/> + <module_component material="Lead" thickness="1.0*cm" vis="FFPreRadiatorVis"/> </module> - <module name="SmallModule1" vis="AnlProcess_Blue"> + <module name="SmallModule1" vis="FFPreModuleVis"> <trd x1="B0PreshowerMod1_x1/2.0" x2="B0PreshowerMod1Small_x2/2.0" z="B0PreshowerMod1Small_y/2"/> - <module_component material="PbWO4" thickness="1.0*cm" vis="AnlYellow"/> - <module_component material="SiliconOxide" thickness="0.3*mm" sensitive="true"/> + <module_component material="SiliconOxide" thickness="0.3*mm" vis="FFPreReadoutVis" sensitive="true"/> + <module_component material="Lead" thickness="1.0*cm" vis="FFPreRadiatorVis"/> </module> <layer id="1"> - <envelope vis="AnlRed" rmin="B0PreshowerMod1Inner_r" rmax="B0PreshowerMod1Outer_r" length="1.0*cm" + <envelope vis="FFPreLayerVis" rmin="B0PreshowerMod1Inner_r" rmax="B0PreshowerMod1Outer_r" length="1.0*cm" zstart="-B0Preshower_length/2.0" /> - <ring vis="AnlRed" phi0="B0PreshowerLayerBigMod_phi0" dphi="B0PreshowerModOpeningAngle" + <ring phi0="B0PreshowerLayerBigMod_phi0" dphi="B0PreshowerModOpeningAngle" r="B0PreshowerMod1Inner_r+B0PreshowerMod1_y/2.0" zstart="0.0*mm" - nmodules="10" dz="0 * mm" module="Module1" /> - <ring vis="AnlRed" phi0="-B0PreshowerLayerSmallMod_phi0" dphi="B0PreshowerModOpeningAngle" + nmodules="B0PreshowerLayerBigMod_nModules" dz="0 * mm" module="Module1" /> + <ring phi0="-B0PreshowerLayerSmallMod_phi0" dphi="B0PreshowerModOpeningAngle" r="B0PreshowerMod1Inner_r+B0PreshowerMod1Small_y/2.0" zstart="0.0*mm" nmodules="B0PreshowerLayerSmallMod_nModules" dz="0 * mm" module="SmallModule1" /> </layer> </detector> - <!-- - <detector - id="B0Preshower_Station_1_ID" - name="B0Preshower_Station_1" - readout="B0PreshowerHits" - type="ip6_B0Preshower" - insideTrackingVolume="true" - reflect="false" - vis="AnlRed"> - <position x="B0Preshower_Station_1_xpos" y="0" z="B0Preshower_Station_1_zpos"/> - <rotation x="0*rad" y="B0Tracker_rotation" z="0*rad"/> - <layer id="1" vis="AnlBlue" - inner_z="1.0*cm" - inner_r="3.5*cm" - outer_r="15.0*cm" - phi1="0.2*Pi*rad" - phi2="-0.2*Pi*rad"> - <slice material="PbWO4" thickness="1.0*cm" vis="AnlYellow"/> - <slice material="SiliconOxide" thickness="0.3*mm" vis="AnlYellow" sensitive="true" /> - </layer> - - <layer id="2" - vis="AnlBlue" - inner_z="1.0*cm" - inner_r="3.5*cm" - outer_r="12.0*cm" - phi1="-0.2*Pi*rad" - phi2="0.2*Pi*rad"> - <slice material="PbWO4" thickness="1.0*cm" vis="AnlYellow"/> - <slice material="SiliconOxide" thickness="0.3*mm" vis="AnlYellow" sensitive="true" /> - </layer> - </detector> - --> </detectors> <readouts> diff --git a/ip6/B0_tracker.xml b/ip6/B0_tracker.xml index f429eb860d9919d42729414714f411a658d1dd2b..467677f5c8908767cbe027ff544ded14b9986783 100644 --- a/ip6/B0_tracker.xml +++ b/ip6/B0_tracker.xml @@ -14,7 +14,6 @@ <constant name="B0Tracker_zoffset" value="10.0*cm"/> <constant name="B0TrackerCenter_zpos" value="6.2*m"/> <constant name="B0TrackerCenter_xpos" value="-0.16000052*m" /> - <!--constant name="B0Tracker_zpos" value="B0PF_CenterPosition + B0PF_Length/2.0 - B0Tracker_length/2.0 + B0Tracker_zoffset"/--> <constant name="B0Tracker_zmin" value="B0TrackerCenter_zpos - B0Tracker_length/2.0 "/> <constant name="B0Tracker_rotation" value="ionCrossingAngle"/> <comment> @@ -24,34 +23,12 @@ <constant name="B0Tracker_nlayers" value="4"/> <constant name="B0Tracker_dz" value="B0Tracker_length/(B0Tracker_nlayers-1)"/> - <comment> - How are the positions below computed? -Whit - </comment> - <!-- - <constant name="B0Tracker_Station_1_xpos" value="-0.1375013*m" /> - <constant name="B0Tracker_Station_1_zpos" value="5.4*m" /> - <constant name="B0Tracker_Station_2_xpos" value="-0.14250078*m" /> - <constant name="B0Tracker_Station_2_zpos" value="5.6*m" /> - <constant name="B0Tracker_Station_3_xpos" value="-0.14750026*m" /> - <constant name="B0Tracker_Station_3_zpos" value="5.8*m" /> - <constant name="B0Tracker_Station_4_xpos" value="-0.15249974*m" /> - <constant name="B0Tracker_Station_4_zpos" value="6.0*m" /> - --> - - <!-- - <constant name="B0Tracker_big_disc_phi1" value="0.2*Pi*rad" /> - <constant name="B0Tracker_big_disc_phi2" value="-0.2*Pi*rad" /> - - <constant name="B0Tracker_small_disc_phi1" value="-0.2*Pi*rad" /> - <constant name="B0Tracker_small_disc_phi2" value="0.2*Pi*rad" /> - --> - <comment> This angle is the angle subtended in phi for each trap segment. </comment> - <constant name="B0TrackerModOpeningAngle" value="30.0*degree"/> - <constant name="B0TrackerLayer_nModules" value="12"/> - <constant name="B0TrackerLayerSmallMod_nModules" value="2"/> + <constant name="B0TrackerLayer_nModules" value="36"/> + <constant name="B0TrackerLayerSmallMod_nModules" value="B0TrackerLayer_nModules/6"/> + <constant name="B0TrackerModOpeningAngle" value="360.0*degree/B0TrackerLayer_nModules"/> <constant name="B0TrackerLayerBigMod_nModules" value="B0TrackerLayer_nModules - B0TrackerLayerSmallMod_nModules"/> <constant name="B0TrackerLayerBigMod_phi0" value="(B0TrackerLayerSmallMod_nModules/2.0 + 0.5)*B0TrackerModOpeningAngle + Pi"/> <constant name="B0TrackerLayerSmallMod_phi0" value="(B0TrackerLayerSmallMod_nModules/2.0 - 0.5)*B0TrackerModOpeningAngle + Pi"/> @@ -88,66 +65,72 @@ name="B0Tracker" type="ip6_B0Tracker" readout="B0TrackerHits" - vis="AnlRed"> + vis="FFTrackerVis"> <position x="B0TrackerCenter_xpos" y="0" z="B0TrackerCenter_zpos"/> <rotation x="0*rad" y="B0Tracker_rotation" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="TrackerModuleVis"> <!-- AnlProcess_Blue--> <trd x1="B0TrackerMod1_x1/2.0" x2="B0TrackerMod1_x2/2.0" z="B0TrackerMod1_y/2"/> - <module_component thickness="0.3*mm" material="SiliconOxide" sensitive="true"/> + <comment> Back-to-front </comment> + <module_component thickness="0.12*mm" material="CarbonFiber" vis="FFTrackerSupportVis" /> + <module_component thickness="0.3*mm" material="SiliconOxide" vis="FFTrackerSurfaceVis" sensitive="true"/> </module> - <module name="SmallModule1" vis="AnlProcess_Blue"> + <module name="SmallModule1" vis="FFTrackerModuleVis"> <trd x1="B0TrackerMod1_x1/2.0" x2="B0TrackerMod1Small_x2/2.0" z="B0TrackerMod1Small_y/2"/> - <module_component thickness="0.3*mm" material="SiliconOxide" sensitive="true"/> + <module_component thickness="0.12*mm" material="CarbonFiber" vis="FFTrackerSupportVis" /> + <module_component thickness="0.3*mm" material="SiliconOxide" vis="FFTrackerSurfaceVis" sensitive="true"/> </module> - <module name="SmallModule2" vis="AnlProcess_Blue"> + <module name="SmallModule2" vis="FFTrackerModuleVis"> <trd x1="B0TrackerMod1_x1/2.0" x2="B0TrackerMod2Small_x2/2.0" z="B0TrackerMod2Small_y/2"/> - <module_component thickness="0.3*mm" material="SiliconOxide" sensitive="true"/> + <module_component thickness="0.12*mm" material="CarbonFiber" vis="FFTrackerSupportVis" /> + <module_component thickness="0.3*mm" material="SiliconOxide" vis="FFTrackerSurfaceVis" sensitive="true"/> </module> - <module name="SmallModule3" vis="AnlProcess_Blue"> + <module name="SmallModule3" vis="FFTrackerModuleVis"> <trd x1="B0TrackerMod1_x1/2.0" x2="B0TrackerMod3Small_x2/2.0" z="B0TrackerMod3Small_y/2"/> - <module_component thickness="0.3*mm" material="SiliconOxide" sensitive="true"/> + <module_component thickness="0.12*mm" material="CarbonFiber" vis="FFTrackerSupportVis" /> + <module_component thickness="0.3*mm" material="SiliconOxide" vis="FFTrackerSurfaceVis" sensitive="true"/> </module> - <module name="SmallModule4" vis="AnlProcess_Blue"> + <module name="SmallModule4" vis="FFTrackerModuleVis"> <trd x1="B0TrackerMod1_x1/2.0" x2="B0TrackerMod4Small_x2/2.0" z="B0TrackerMod4Small_y/2"/> - <module_component thickness="0.3*mm" material="SiliconOxide" sensitive="true"/> + <module_component thickness="0.12*mm" material="CarbonFiber" vis="FFTrackerSupportVis" /> + <module_component thickness="0.3*mm" material="SiliconOxide" vis="FFTrackerSurfaceVis" sensitive="true"/> </module> <layer id="1"> - <envelope vis="AnlRed" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" + <envelope vis="FFTrackerLayerVis" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" zstart="-B0Tracker_length/2.0" /> - <ring vis="AnlRed" phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" + <ring phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod1_y/2.0" zstart="0.0*mm" - nmodules="10" dz="0 * mm" module="Module1" /> - <ring vis="AnlRed" phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" + nmodules="B0TrackerLayerBigMod_nModules" dz="0 * mm" module="Module1" /> + <ring phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod1Small_y/2.0" zstart="0.0*mm" nmodules="B0TrackerLayerSmallMod_nModules" dz="0 * mm" module="SmallModule1" /> </layer> - <layer id="2"> - <envelope vis="AnlRed" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" + <layer id="2" > + <envelope vis="FFTrackerLayerVis" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" zstart="-B0Tracker_length/2.0 + 1.0*B0Tracker_dz" /> - <ring vis="AnlRed" phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" + <ring phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod1_y/2.0" zstart="0.0*mm" - nmodules="10" dz="0 * mm" module="Module1" /> - <ring vis="AnlRed" phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" + nmodules="B0TrackerLayerBigMod_nModules" dz="0 * mm" module="Module1" /> + <ring phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod2Small_y/2.0" zstart="0.0*mm" nmodules="B0TrackerLayerSmallMod_nModules" dz="0 * mm" module="SmallModule2" /> </layer> - <layer id="3"> - <envelope vis="AnlRed" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" + <layer id="3" > + <envelope vis="FFTrackerLayerVis" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" zstart="-B0Tracker_length/2.0 + 2.0*B0Tracker_dz" /> - <ring vis="AnlRed" phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" + <ring phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod1_y/2.0" zstart="0.0*mm" - nmodules="10" dz="0 * mm" module="Module1" /> - <ring vis="AnlRed" phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" + nmodules="B0TrackerLayerBigMod_nModules" dz="0 * mm" module="Module1" /> + <ring phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod3Small_y/2.0" zstart="0.0*mm" nmodules="B0TrackerLayerSmallMod_nModules" dz="0 * mm" module="SmallModule3" /> </layer> - <layer id="4"> - <envelope vis="AnlRed" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" + <layer id="4" > + <envelope vis="FFTrackerLayerVis" rmin="B0TrackerMod1Inner_r" rmax="B0TrackerMod1Outer_r" length="1.0*cm" zstart="-B0Tracker_length/2.0 + 3.0*B0Tracker_dz" /> - <ring vis="AnlRed" phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" + <ring phi0="B0TrackerLayerBigMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod1_y/2.0" zstart="0.0*mm" - nmodules="10" dz="0 * mm" module="Module1" /> - <ring vis="AnlRed" phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" + nmodules="B0TrackerLayerBigMod_nModules" dz="0 * mm" module="Module1" /> + <ring phi0="-B0TrackerLayerSmallMod_phi0" dphi="B0TrackerModOpeningAngle" r="B0TrackerMod1Inner_r+B0TrackerMod4Small_y/2.0" zstart="0.0*mm" nmodules="B0TrackerLayerSmallMod_nModules" dz="0 * mm" module="SmallModule4" /> </layer> diff --git a/ip6/far_forward_offM_tracker.xml b/ip6/far_forward_offM_tracker.xml index 2daa822ea0bc206c58f0dd6231c88ac91b653931..4db93aaf4e6cfe2b0997315464520caed10b84cf 100644 --- a/ip6/far_forward_offM_tracker.xml +++ b/ip6/far_forward_offM_tracker.xml @@ -26,21 +26,22 @@ name="ForwardOffMTracker_station_1" type="ip6_OffMomentumTracker" readout="ForwardOffMTrackerHits" - vis="AnlRed" + vis="FFTrackerVis" reflect="false"> <position x="-780.0*mm" y="0" z="22500*mm"/> <rotation x="0*rad" y="-0.047*rad" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="FFTrackerShieldedModuleVis"> <shape x="10.0*cm" y="20.0*cm"/> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardOffMTracker_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <comment> back-to-front </comment> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> </module> <layer id="1" module="Module1"> - <envelope vis="AnlRed" x="10.0*cm" y="20.0*cm" length="1.0*cm" + <envelope vis="FFTrackerLayerVis" x="10.0*cm" y="20.0*cm" length="1.0*cm" zstart="0.0/2.0" /> </layer> </detector> @@ -54,18 +55,17 @@ reflect="false"> <position x="-780.0*mm" y="0" z="22520*mm"/> <rotation x="0*rad" y="-0.047*rad" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="FFTrackerShieldedModuleVis"> <shape x="10.0*cm" y="20.0*cm"/> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardOffMTracker_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> </module> - <layer id="1" module="Module1"> - <envelope vis="AnlRed" x="10.0*cm" y="20.0*cm" length="3.2*mm" + <envelope vis="FFTrackerLayerVis" x="10.0*cm" y="20.0*cm" length="3.2*mm" zstart="0.0/2.0" /> </layer> @@ -76,22 +76,21 @@ name="ForwardOffMTracker_station_3" type="ip6_OffMomentumTracker" readout="ForwardOffMTrackerHits" - vis="AnlRed" + vis="FFTrackerVis" reflect="false"> <position x="-870.0*mm" y="0" z="24500*mm"/> <rotation x="0*rad" y="-0.047*rad" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="FFTrackerShieldedModuleVis"> <shape x="10.0*cm" y="20.0*cm"/> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardOffMTracker_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> </module> - <layer id="1" module="Module1"> - <envelope vis="AnlRed" x="10.0*cm" y="20.0*cm" length="3.2*mm" + <envelope vis="FFTrackerLayerVis" x="10.0*cm" y="20.0*cm" length="3.2*mm" zstart="0.0/2.0" /> </layer> @@ -102,22 +101,21 @@ name="ForwardOffMTracker_station_4" type="ip6_OffMomentumTracker" readout="ForwardOffMTrackerHits" - vis="AnlRed" + vis="FFTrackerVis" reflect="false"> <position x="-870.0*mm" y="0" z="24520*mm"/> <rotation x="0*rad" y="-0.047*rad" z="0*rad"/> - <module name="Module1" vis="AnlProcess_Blue"> + <module name="Module1" vis="FFTrackerShieldedModuleVis"> <shape x="10.0*cm" y="20.0*cm"/> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardOffMTracker_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardOffMTracker_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardOffMTracker_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardOffMTracker_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardOffMTracker_RFShieldThickness"/> </module> - <layer id="1" module="Module1"> - <envelope vis="AnlRed" x="10.0*cm" y="20.0*cm" length="3.2*mm" + <envelope vis="FFTrackerLayerVis" x="10.0*cm" y="20.0*cm" length="3.2*mm" zstart="0.0/2.0" /> </layer> diff --git a/ip6/forward_ion_beamline.xml b/ip6/forward_ion_beamline.xml index a1e793f218b060c1197540041bdbca2d16010421..c68f8c50c6cf5868bf35ef5de6b3d8086b9574ed 100644 --- a/ip6/forward_ion_beamline.xml +++ b/ip6/forward_ion_beamline.xml @@ -19,65 +19,65 @@ ===================================== </comment> <detectors> - <detector id="170" name="B0PF_BeamlineMagnet" type="CylindricalDipoleMagnet"> + <detector id="170" name="B0PF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="B0PF_XPosition" y="0*m" z="B0PF_CenterPosition" theta="B0PF_RotationAngle" /> <dimensions x="B0PF_InnerRadius*4" y="B0PF_InnerRadius*4" z="B0PF_Length" r="B0PF_InnerRadius*2.0" /> <apperture x="B0PF_InnerRadius" y="B0PF_InnerRadius" r="B0PF_InnerRadius" /> - <coil dx="2*cm" dy="1.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="2*cm" dy="1.5*cm" /> </detector> - <detector id="171" name="B0APF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="171" name="B0APF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="B0APF_XPosition" y="0*m" z="B0APF_CenterPosition" theta="B0APF_RotationAngle" /> <dimensions x="B0APF_InnerRadius*4" y="B0APF_InnerRadius*4" z="B0APF_Length" r="B0APF_InnerRadius*2.0" /> <apperture x="B0APF_InnerRadius" y="B0APF_InnerRadius" r="B0APF_InnerRadius" /> - <coil dx="2*cm" dy="1.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="2*cm" dy="1.5*cm" /> </detector> - <detector id="172" name="Q1APF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="172" name="Q1APF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="Q1APF_XPosition" y="0*m" z="Q1APF_CenterPosition" theta="Q1APF_RotationAngle" /> <dimensions x="Q1APF_InnerRadius*4" y="Q1APF_InnerRadius*4" z="Q1APF_Length" r="2.0*Q1APF_InnerRadius"/> <apperture x="Q1APF_InnerRadius*2" y="Q1APF_InnerRadius*2" r="Q1APF_InnerRadius"/> - <coil dx="2*cm" dy="1.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="2*cm" dy="1.5*cm" /> </detector> - <detector id="173" name="Q1BPF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="173" name="Q1BPF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="Q1BPF_XPosition" y="0*m" z="Q1BPF_CenterPosition" theta="Q1BPF_RotationAngle" /> <dimensions x="Q1BPF_InnerRadius*4" y="Q1BPF_InnerRadius*4" z="Q1BPF_Length" r="2.0*Q1BPF_InnerRadius"/> <apperture x="Q1BPF_InnerRadius*2" y="Q1BPF_InnerRadius*2" r="Q1BPF_InnerRadius"/> - <coil dx="1*cm" dy="0.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="1*cm" dy="0.5*cm" /> </detector> - <detector id="174" name="Q2PF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="174" name="Q2PF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="Q2PF_XPosition" y="0*m" z="Q2PF_CenterPosition" theta="Q2PF_RotationAngle" /> <dimensions x="Q2PF_InnerRadius*4" y="Q2PF_InnerRadius*4" z="Q2PF_Length" r="2.0*Q2PF_InnerRadius" /> <apperture x="Q2PF_InnerRadius*2" y="Q2PF_InnerRadius*2" r="Q2PF_InnerRadius"/> - <coil dx="1*cm" dy="0.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="1*cm" dy="0.5*cm" /> </detector> - <detector id="175" name="B1PF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="175" name="B1PF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="B1PF_XPosition" y="0*m" z="B1PF_CenterPosition" theta="B1PF_RotationAngle" /> <dimensions x="B1PF_InnerRadius*4" y="B1PF_InnerRadius*4" z="B1PF_Length" r="2.0*B1PF_InnerRadius" /> <apperture x="B1PF_InnerRadius*2" y="B1PF_InnerRadius*2" r="B1PF_InnerRadius" /> - <coil dx="1*cm" dy="0.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="1*cm" dy="0.5*cm" /> </detector> - <detector id="176" name="B1APF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="176" name="B1APF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="B1APF_XPosition" y="0*m" z="B1APF_CenterPosition" theta="B1APF_RotationAngle" /> <dimensions x="B1APF_InnerRadius*4" y="B1APF_InnerRadius*4" z="B1APF_Length" r="2.0*B1APF_InnerRadius" /> <apperture x="B1APF_InnerRadius*2" y="B1APF_InnerRadius*2" r="B1APF_InnerRadius"/> - <coil dx="1*cm" dy="0.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="1*cm" dy="0.5*cm" /> </detector> - <detector id="177" name="B2PF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="177" name="B2PF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="B2PF_XPosition" y="0*m" z="B2PF_CenterPosition" theta="B2PF_RotationAngle" /> <dimensions x="B2PF_InnerRadius*4" y="B2PF_InnerRadius*4" z="B2PF_Length" r="2.0*B2PF_InnerRadius" /> <apperture x="B2PF_InnerRadius*2" y="B2PF_InnerRadius*2" r="B2PF_InnerRadius"/> - <coil dx="1*cm" dy="0.5*cm" /> + <coil vis="FFMagnetCoilVis" dx="1*cm" dy="0.5*cm" /> </detector> - <detector id="180" name="Q0EF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="180" name="Q0EF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="Q0EF_XPosition" y="0*m" z="Q0EF_CenterPosition" theta="Q0EF_RotationAngle" /> <dimensions x="5.0*cm" y="5.0*cm" z="Q0EF_Length" r="2.5*cm" /> <apperture x="Q0EF_InnerRadius*2" y="Q0EF_InnerRadius*2" r="Q0EF_InnerRadius"/> - <coil dx="0.4*cm" dy="0.2*cm" /> + <coil vis="FFMagnetCoilVis" dx="0.4*cm" dy="0.2*cm" /> </detector> - <detector id="181" name="Q1EF_BeamlineMagnet" vis="RedVis" type="CylindricalDipoleMagnet"> + <detector id="181" name="Q1EF_BeamlineMagnet" vis="FFMagnetVis" type="ip6_CylindricalDipoleMagnet"> <placement x="Q1EF_XPosition" y="0*m" z="Q1EF_CenterPosition" theta="Q1EF_RotationAngle" /> <dimensions x="6.0*cm" y="6.0*cm" z="Q1EF_Length" r="3.0*cm" /> <apperture x="Q1EF_InnerRadius*2" y="Q1EF_InnerRadius*2" r="Q1EF_InnerRadius"/> - <coil dx="0.4*cm" dy="0.2*cm" /> + <coil vis="FFMagnetCoilVis" dx="0.4*cm" dy="0.2*cm" /> </detector> </detectors> diff --git a/ip6/inner_vacuum_FF_magnets.xml b/ip6/inner_vacuum_FF_magnets.xml index 2d160d6fceb3f6fd169b0d2cdd0b2e4a9e06d402..1678fff87ceadf8833596367fa6803e1f0040e4d 100644 --- a/ip6/inner_vacuum_FF_magnets.xml +++ b/ip6/inner_vacuum_FF_magnets.xml @@ -8,7 +8,7 @@ <detectors> - <detector id="VacuumMagnetElement_1_ID" name="VacuumMagnetElement" type="magnetElementInnerVacuum" vis="visBlue" visible="false"> + <detector id="VacuumMagnetElement_1_ID" name="VacuumMagnetElement" type="magnetElementInnerVacuum" vis="InvisibleNoDaughters"> <position x="0.0" y="0.0" z="0.0" /> <rotation x="0*rad" y="0*rad" z="0*rad" /> </detector> diff --git a/ip6/ip6_colors.xml b/ip6/ip6_colors.xml new file mode 100644 index 0000000000000000000000000000000000000000..867f3db94d07fd6f07dd3e22b9a6452d3054c563 --- /dev/null +++ b/ip6/ip6_colors.xml @@ -0,0 +1,26 @@ +<display> + + <comment> + Colors tweaked to be displayable by geoViewer + </comment> + <vis name="AnlGreen" alpha="1" r="100/256" g="200/256" b="0/256"/> + <vis name="AnlViolet" alpha="1" r="100/256" g="0/256" b="150/256"/> + <vis name="AnlProcess_Blue" alpha="1" r="0/256" g="100/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="45/256 " b="45/256"/> + <vis name="AnlGold" alpha="1" r="248/256" g="188/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="AnlLightGray" ref="AnlLight_Gray" /> + <!-- off-white (or white) don't work! --> + <!--vis name="AnlOff_White" alpha="1" r="242/256" g="242/256" b="242/256"/--> + <vis name="AnlDarkRed" alpha="1" r="161/256" g="45/256" b="45/256"/> + <vis name="AnlDarkGreen" alpha="1" r="0" g="110/256" b="50/256"/> + <vis name="AnlDarkBlue" alpha="1" r="45/256" g="45/256" b="110/256"/> + <vis name="AnlDelta_Red" ref="AnlDarkRed"/> + <vis name="AnlDelta_Green" ref="AnlDarkGreen"/> + <vis name="AnlDelta_Blue" ref="AnlDarkBlue"/> + +</display> diff --git a/ip6/ip6_display.xml b/ip6/ip6_display.xml index 28c80cb47accd3860a10f18aa7765915f8c30054..813f4a82eedae163c3147af8b00f7d9194daeb21 100644 --- a/ip6/ip6_display.xml +++ b/ip6/ip6_display.xml @@ -1,71 +1,58 @@ <display> - <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="AnlRed_1" alpha="0.5" r="205/256" g="32/256" b="44/256"/> - - <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" /> - + <comment> + See compact/ip6_colors.xml for list of colors. + </comment> <vis name="InvisibleNoDaughters" showDaughters="false" visible="false"/> <vis name="InvisibleWithDaughters" showDaughters="true" visible="false"/> - <vis name="SiVertexVis" alpha="0.9" r="1" g="0" b="1" showDaughters="true" /> - <vis name="SiTrackerBarrelVis" alpha="0.5" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="SiTrackerVis" alpha="0.9" r="1.0" g="0.0" b="0.0" showDaughters="true" lineStyle="solid" drawingStyle="solid" /> + <comment> + Tracker visualizations + </comment> + <vis name="TrackerVis" ref="AnlRed" /> + <vis name="TrackerSupportVis" ref="AnlBlue" visible="true" showDaughters="false" /> + <vis name="TrackerServiceVis" ref="AnlGold" showDaughters="false" /> + <vis name="FFTrackerVis" ref="AnlRed" /> + <vis name="FFTrackerSupportVis" ref="AnlBlue" visible="true" showDaughters="false" /> + <vis name="FFTrackerShieldingVis" ref="AnlGray" visible="true" showDaughters="false" /> + <vis name="FFTrackerServiceVis" ref="AnlGold" visible="true" showDaughters="false" /> + <vis name="FFTrackerLayerVis" ref="TrackerVis" visible="true" showDaughters="true" /> + <vis name="FFTrackerModuleVis" ref="FFTrackerLayerVis" visible="true" showDaughters="true" /> + <vis name="FFTrackerSurfaceVis" ref="FFTrackerLayerVis" visible="true" showDaughters="true" /> + <comment> For shielded modules by default just display to module instead of 6 layers </comment> + <vis name="FFTrackerShieldedModuleVis" ref="FFTrackerModuleVis" visible="true" showDaughters="false" /> - <vis name="TrackerSupportVis" alpha="1.0" r="1.0" g="0.0" b="0.0" visible="true" showDaughters="false" /> - <vis name="TrackerLayerVis" alpha="0.9" r="0.0" g="1.0" b="0.0" visible="true" showDaughters="true" /> + <comment> + Calorimeter visualization + </comment> - <vis name="SiTrackerBarrelVis1" alpha="0.8" r="0.0" g="0.9" b="0.9" showDaughters="true" /> - <vis name="SiTrackerBarrelVis2" alpha="0.8" r="0.1" g="0.9" b="0.0" showDaughters="true" visible="true"/> - <vis name="SiTrackerEndcapVis1" alpha="0.8" r="1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="SiTrackerEndcapVis2" alpha="0.8" r="1.0" g="0.45" b="0.0" showDaughters="false" visible="true"/> - <vis name="SiTrackerSubAssemblyVis" alpha="1" r="0.0" g="0.99" b="0.0" showDaughters="true" visible="true"/> - <vis name="SiTrackerLayerVis" alpha="1" r="0.0" g="1" b="0.0" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" /> + <comment> + ECal Vis + </comment> + <vis name="FFPreVis" ref="AnlGold" showDaughters="true" visible="true"/> + <vis name="FFPreLayerVis" ref="FFPreVis" showDaughters="true" visible="true"/> + <vis name="FFPreModuleVis" ref="FFPreLayerVis" showDaughters="true" visible="true"/> + <vis name="FFPreRadiatorVis" ref="FFPreModuleVis" showDaughters="true" visible="true"/> + <vis name="FFPreReadoutVis" ref="FFTrackerSurfaceVis" showDaughters="true" visible="true"/> + + <comment> + Magnet/beamline visualization + </comment> + <vis name="FFMagnetVis" ref="AnlGreen" showDaughters="true" visible="true"/> + <vis name="FFMagnetCoilVis" ref="AnlRed" showDaughters="true" visible="true"/> + <vis name="BeamPipeVis" ref="AnlLight_Gray" showDaughters="true" visible="true"/> - <vis name="EcalVis" alpha="0.1" r="0.0" g="0.75" b="0.1" showDaughters="false"/> - <vis name="EcalEndcapVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" /> - <vis name="EcalBarrelVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" /> - - - - <vis name="SolenoidCoilVis" alpha="1.0" r="0.55" g="0.55" b="0.7" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" /> - <vis name="SolenoidCryostatVis" alpha="0.4" r="0.55" g="0.55" b="0.7" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" /> - <vis name="SolenoidYokeVis" alpha="0.2" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true" lineStyle="solid" drawingStyle="solid" /> - <vis name="RICHVis" alpha="0.5" r="1" g="0" b="1" showDaughters="true"/> - <vis name="BeamPipeVis" alpha="1" r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/> + <comment> + Old visualization code that should be integrated in the new color scheme + </comment> - <vis name="cb_SolenoidVis" alpha="0.4" r= "0.1" g="0.0" b="0.1" showDaughters="true" visible="true"/> <vis name="ffi_ZDC_ECAL_Vis" alpha="0.1" r= "0.1" g="0.0" b="1.0" showDaughters="true" visible="true"/> <vis name="ffi_ZDC_ECAL_module_Vis" alpha="1.0" r= "0.1" g="1.0" b="0.9" showDaughters="true" visible="true"/> <vis name="ffi_ZDC_HCAL_Vis" alpha="0.1" r= "0.1" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="cb_CTDVis" alpha="0.1" r= "0.1" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="cb_CTD_Si_layerVis" alpha="1.0" r= "0.9" g="1.0" b="0.1" showDaughters="true" visible="true"/> - <vis name="ce_GEMVis" alpha="0.1" r= "0.1" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="cb_GEM_layerVis" alpha="0.8" r= "0.8" g="0.4" b="0.3" showDaughters="true" visible="true"/> - <vis name="cb_VTX_BarrelVis" alpha="0.1" r= "0.1" g="0.0" b="1.0" showDaughters="true" visible="true"/> - <vis name="cb_VTX_Barrel_layerVis" alpha="2.0" r= "0.0" g="0.2" b="0.8" showDaughters="true" visible="true"/> - - <vis name="ci_GEMVis" r= "0.8" g="0.4" b="0.3" alpha="0.8" showDaughters="true" visible="true"/> - <vis name="ci_HCALVis" r= "0.6" g="0" b="0.6" alpha="1.0" showDaughters="true" visible="true"/> <comment> - Deprecated colors. + Deprecated color scheme </comment> <vis name="GreenVis" alpha="1.0" r= "0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> <vis name="RedVis" alpha="0.2" r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> diff --git a/ip6/roman_pots_eRD24_design.xml b/ip6/roman_pots_eRD24_design.xml index 629bb846ad5aff4ac5329440841cc2310c7ef6fa..5e6b8fc52134c1567b79bb24b0461d583f2c9466 100644 --- a/ip6/roman_pots_eRD24_design.xml +++ b/ip6/roman_pots_eRD24_design.xml @@ -84,16 +84,16 @@ readout="ForwardRomanPotHits" type="ip6_ForwardRomanPot" insideTrackingVolume="true" - reflect="false" vis="AnlRed"> + reflect="false" vis="FFTrackerVis"> <position x="ForwardRomanPotStation1_xpos" y="0" z="ForwardRomanPotStation1_zpos" /> <rotation x="0" y="ForwardRomanPotStation1_rotation" z="0" /> - <module name="Module1" vis="AnlYellow" nx="2" ny="2" width="ForwardRomanPot_ModuleWidth" height="ForwardRomanPot_ModuleHeight"> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardRomanPot_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardRomanPot_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardRomanPot_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardRomanPot_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardRomanPot_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardRomanPot_RFShieldThickness"/> + <module name="Module1" vis="FFTrackerShieldedModuleVis" nx="2" ny="2" width="ForwardRomanPot_ModuleWidth" height="ForwardRomanPot_ModuleHeight"> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardRomanPot_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardRomanPot_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardRomanPot_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardRomanPot_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardRomanPot_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardRomanPot_RFShieldThickness"/> <!--<module_component material="Vacuum" thickness="ForwardRomanPot_LayerSeparationThickness"/> --> </module> <module_assembly name="Station1Top"> @@ -131,7 +131,7 @@ </array> </module_assembly> - <layer id="1"> + <layer id="1" vis="FFTrackerLayerVis"> <position x="0" y="0" z="0.0*cm"/> <component assembly="Station1Top"> <position x="0" y="0" z="0.0*cm"/> @@ -140,7 +140,7 @@ <position x="0" y="0" z="0.0*cm"/> </component> </layer> - <layer id="2"> + <layer id="2" vis="FFTrackerLayerVis"> <position x="0" y="0" z="0.0*cm"/> <component assembly="Station1Top"> <position x="0" y="0" z="20.0*mm"/> @@ -159,16 +159,16 @@ type="ip6_ForwardRomanPot" insideTrackingVolume="true" reflect="false" - vis="AnlRed"> + vis="FFTrackerVis"> <position x="ForwardRomanPotStation2_xpos" y="0" z="ForwardRomanPotStation2_zpos" /> <rotation x="0" y="ForwardRomanPotStation1_rotation" z="0" /> - <module name="Module1" vis="AnlYellow" nx="2" ny="2" width="ForwardRomanPot_ModuleWidth" height="ForwardRomanPot_ModuleHeight"> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardRomanPot_RFShieldThickness"/> - <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardRomanPot_ShieldingAirLayerThickness"/> - <module_component material="SiliconOxide" vis="OrangeVis" thickness="ForwardRomanPot_LGADThickness" sensitive="true"/> - <module_component material="SiliconOxide" vis="GreenVis" thickness="ForwardRomanPot_ASICThickness" /> - <module_component material="Copper" vis="BlueVis" thickness="ForwardRomanPot_ThermalStripThickness" /> - <module_component material="Aluminum" vis="GrayVis" thickness="ForwardRomanPot_RFShieldThickness"/> + <module name="Module1" vis="FFTrackerShieldedModuleVis" nx="2" ny="2" width="ForwardRomanPot_ModuleWidth" height="ForwardRomanPot_ModuleHeight"> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardRomanPot_RFShieldThickness"/> + <module_component material="Copper" vis="FFTrackerServiceVis" thickness="ForwardRomanPot_ThermalStripThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerServiceVis" thickness="ForwardRomanPot_ASICThickness" /> + <module_component material="SiliconOxide" vis="FFTrackerSurfaceVis" thickness="ForwardRomanPot_LGADThickness" sensitive="true"/> + <module_component material="Vacuum" vis="InvisibleNoDaughters" thickness="ForwardRomanPot_ShieldingAirLayerThickness"/> + <module_component material="Aluminum" vis="FFTrackerShieldingVis" thickness="ForwardRomanPot_RFShieldThickness"/> </module> <module_assembly name="Station2Top"> <array nx="2" ny="2" module="Module1" width="2*ForwardRomanPot_ModuleWidth" height="2*ForwardRomanPot_ModuleHeight"> @@ -206,7 +206,7 @@ </module_assembly> - <layer id="1"> + <layer id="1" vis="FFTrackerLayerVis"> <position x="0" y="0" z="0.0*cm"/> <component assembly="Station2Top"> <position x="0" y="0" z="0.0*cm"/> @@ -215,7 +215,7 @@ <position x="0" y="0" z="0.0*cm"/> </component> </layer> - <layer id="2"> + <layer id="2" vis="FFTrackerLayerVis"> <position x="0" y="0" z="0.0*cm"/> <component assembly="Station2Top"> <position x="0" y="0" z="20.0*mm"/> diff --git a/src/B0Tracker_geo.cpp b/src/B0Tracker_geo.cpp index e5371f2a78e20ffb427621425efb647a47bc7316..f59b4404c52e9caf766e123e2082c0b95e09fe1c 100644 --- a/src/B0Tracker_geo.cpp +++ b/src/B0Tracker_geo.cpp @@ -50,7 +50,7 @@ static Ref_t create_B0Tracker(Detector& description, xml_h e, SensitiveDetector detWorldExt->addType("endcap", "detector"); sdet.addExtension<Acts::ActsExtension>(detWorldExt); - assembly.setVisAttributes(description.invisible()); + //assembly.setVisAttributes(description.invisible()); sens.setType("tracker"); for (xml_coll_t mi(x_det, _U(module)); mi; ++mi, ++m_id) { @@ -90,7 +90,7 @@ static Ref_t create_B0Tracker(Detector& description, xml_h e, SensitiveDetector Material f_mat = description.material(m_frame.materialStr()); Volume f_vol(m_nam + "_frame", frame_shape, f_mat); - f_vol.setVisAttributes(description.visAttributes(m_frame.visStr())); + //f_vol.setVisAttributes(description.visAttributes(m_frame.visStr())); // figure out how to best place pv = m_volume.placeVolume(f_vol, Position(f_pos.x(), f_pos.y(), f_pos.z())); @@ -174,7 +174,8 @@ static Ref_t create_B0Tracker(Detector& description, xml_h e, SensitiveDetector //assembly.placeVolume(layer_assembly); //Tube layer_tub(layer_rmin, layer_rmax, layer_length / 2); //Volume layer_vol(layer_name, layer_tub, air); // Create the layer envelope volume. - layer_vol.setVisAttributes(description.visAttributes(layer_vis)); + //layer_vol.setVisAttributes(description.visAttributes(layer_vis)); + //layer_vol.setVisAttributes(description.visAttributes(x_layer.visStr())); PlacedVolume layer_pv; //if (reflect) { diff --git a/src/CylindricalDipoleMagnet_geo.cpp b/src/CylindricalDipoleMagnet_geo.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9b41bae4e63d1fe12174c00d2430774ca71efffd --- /dev/null +++ b/src/CylindricalDipoleMagnet_geo.cpp @@ -0,0 +1,99 @@ +#include "DD4hep/DetFactoryHelper.h" +#include "DD4hep/Printout.h" +#include "DD4hep/Shapes.h" +#include "TMath.h" +#include "DDRec/Surface.h" +#include "DDRec/DetectorData.h" +#include "XML/Layering.h" + +using namespace std; +using namespace dd4hep; +using namespace dd4hep::rec; +using namespace ROOT::Math; + +static Ref_t build_magnet(Detector& dtor, xml_h e, SensitiveDetector sens) { + xml_det_t x_det = e; + int det_id = x_det.id(); + string det_name = x_det.nameStr(); + xml_dim_t pos = x_det.child(_U(placement)); + double pos_x = pos.x(); + double pos_y = pos.y(); + double pos_z = pos.z(); + double pos_theta = pos.attr<double>(_U(theta)); + xml_dim_t dims = x_det.dimensions(); + double dim_r = dims.r(); + double dim_z = dims.z(); + xml_dim_t apperture = x_det.child(_Unicode(apperture)); + double app_r = apperture.r(); + xml_dim_t coil = x_det.child(_Unicode(coil)); + double coil_x = coil.dx(); + double coil_y = coil.dy(); + Material iron = dtor.material("Vacuum"); + Material niobium = dtor.material("Vacuum"); + + //std::cout << det_name << " positioned at z=" << pos.z() << ", x=" << pos.x() << "\n"; + + DetElement sdet(det_name, det_id); + Assembly assembly(det_name + "_assembly"); + + const string module_name = "Quad_magnet"; + + const string yoke_vis = dd4hep::getAttrOrDefault(x_det, _Unicode(vis), "GreenVis"); + const string coil_vis = dd4hep::getAttrOrDefault(coil, _Unicode(vis), "RedVis"); + + sdet.setAttributes(dtor, assembly, x_det.regionStr(), x_det.limitsStr(), yoke_vis); + + // -- yoke + Tube yoke_tube(app_r + coil_y, dim_r, 0.5*dim_z); + Volume yoke_vol("yoke_vol", yoke_tube, iron); + auto yoke_pv = assembly.placeVolume(yoke_vol); + yoke_pv.addPhysVolID("element", 1); + DetElement yoke_de(sdet, "yoke_de", 1); + yoke_de.setPlacement(yoke_pv); + yoke_de.setAttributes(dtor, yoke_vol, x_det.regionStr(), x_det.limitsStr(), yoke_vis); + + // -- coils + double offset = 1.5 * coil_x; + double appc_r = app_r + 0.5 * coil_y; + double offset_angle = atan(offset / appc_r); + + Tube longrod(app_r, app_r + coil_y, 0.5*dim_z, atan(coil_x / app_r)); + Tube connector(app_r, app_r + coil_y , coil_y, 0.5*M_PI - offset_angle); + + UnionSolid coil1(longrod, longrod, Transform3D(RotationZ(-offset_angle))); + UnionSolid coil2(coil1, longrod, Transform3D(RotationZ(0.5*M_PI))); + UnionSolid coil3(coil2, longrod, Transform3D(RotationZ(M_PI))); + UnionSolid coil4(coil3, longrod, Transform3D(RotationZ(1.5*M_PI))); + + UnionSolid coil5(coil4, longrod, Transform3D(RotationZ(0.5*M_PI - offset_angle))); + UnionSolid coil6(coil5, longrod, Transform3D(RotationZ(M_PI - offset_angle))); + UnionSolid coil7(coil6, longrod, Transform3D(RotationZ(1.5*M_PI - offset_angle))); + + UnionSolid coil8(coil7, connector, Transform3D(Translation3D(0.0, 0.0, -0.5*dim_z + coil_y))); + UnionSolid coil9(coil8, connector, Transform3D(Translation3D(0.0, 0.0, -0.5*dim_z + coil_y) * RotationZ(0.5*M_PI))); + UnionSolid coil10(coil9, connector, Transform3D(Translation3D(0.0, 0.0, -0.5*dim_z + coil_y) * RotationZ(M_PI))); + UnionSolid coil11(coil10, connector, Transform3D(Translation3D(0.0, 0.0, -0.5*dim_z + coil_y) * RotationZ(1.5*M_PI))); + UnionSolid coil12(coil11, connector, Transform3D(Translation3D(0.0, 0.0, 0.5*dim_z - coil_y))); + UnionSolid coil13(coil12, connector, Transform3D(Translation3D(0.0, 0.0, 0.5*dim_z - coil_y) * RotationZ(0.5*M_PI))); + UnionSolid coil14(coil13, connector, Transform3D(Translation3D(0.0, 0.0, 0.5*dim_z - coil_y) * RotationZ(M_PI))); + UnionSolid coil15(coil14, connector, Transform3D(Translation3D(0.0, 0.0, 0.5*dim_z - coil_y) * RotationZ(1.5*M_PI))); + + Volume coil_vol("coil_vol", coil14, niobium); + + auto coil_pos = Transform3D(RotationZ(0.5*M_PI - offset_angle)); + auto coil_pv = assembly.placeVolume(coil_vol, coil_pos); + DetElement coil_de(sdet, "coil_de", 2); + coil_de.setAttributes(dtor, coil_vol, x_det.regionStr(), x_det.limitsStr(), coil_vis); + coil_de.setPlacement(coil_pv); + + // -- finishing steps + auto final_pos = Transform3D(Translation3D(pos_x, pos_y, pos_z) * RotationY(pos_theta)); + auto pv = dtor.pickMotherVolume(sdet).placeVolume(assembly, final_pos); + pv.addPhysVolID("system", det_id); + sdet.setPlacement(pv); + + assembly->GetShape()->ComputeBBox(); + return sdet; +} + +DECLARE_DETELEMENT(ip6_CylindricalDipoleMagnet, build_magnet)