Skip to content
Snippets Groups Projects
Commit 2c9a2e3f authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

modified: compact/cb_Solenoid.xml

	modified:   compact/definitions.xml
	modified:   compact/ecal.xml
	modified:   compact/forward_rich.xml
	modified:   compact/solenoid.xml
	modified:   reference_detector.xml
	modified:   src/PolyhedraEndcapCalorimeter2_geo.cpp
	deleted:    src/TestDetector.cpp
	deleted:    src/cb_Solenoid.cpp
parent ff844b0c
No related branches found
No related tags found
1 merge request!22Resolve "Parameterized Detector Structure"
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</comment> </comment>
<detector id="Solenoid_ID" name="cb_Solenoid" type="cb_Solenoid" insideTrackingVolume="false" vis="cb_SolenoidVis"> <detector id="Solenoid_ID" name="cb_Solenoid" type="cb_Solenoid" insideTrackingVolume="false" vis="cb_SolenoidVis">
<material name="Vacuum"/> <!-- G4_Galactic --> <material name="Vacuum"/> <!-- G4_Galactic -->
<dimensions rmin="cb_Solenoid_rmin" rmax="cb_Solenoid_rmax" z="cb_Solenoid_z" delta="cb_Solenoid_shift"/> <dimensions rmin="Solenoid_rmin" rmax="Solenoid_rmax" z="b_Solenoid_z" delta="cb_Solenoid_shift"/>
</detector> </detector>
</detectors> </detectors>
......
<define> <define>
<comment>Although not explicit in the design study, the eRHIC crossing angle is not symmetric.</comment> <constant name="world_side" value="30*m"/>
<constant name="world_x" value="world_side"/>
<constant name="world_y" value="world_side"/>
<constant name="world_z" value="100*m"/>
<comment>Although not explicit in the EIC design study, the crossing angle is not symmetric.</comment>
<constant name="CrossingAngle" value="0.025"/> <constant name="CrossingAngle" value="0.025"/>
<constant name="ionCrossingAngle" value="0.0166667"/> <constant name="ionCrossingAngle" value="0.0166667"/>
<constant name="electronCrossingAngle" value="0.00833333"/> <constant name="electronCrossingAngle" value="0.00833333"/>
<constant name="CrossingSlope" value="0.0166682"/> <constant name="CrossingSlope" value="0.0166682"/>
<constant name="Pi" value="3.14159265359"/> <constant name="Pi" value="3.14159265359"/>
<constant name="world_side" value="30*m"/>
<constant name="world_x" value="world_side"/>
<constant name="world_y" value="world_side"/>
<constant name="world_z" value="100*m"/>
<constant name="mil" value="0.0254*mm"/> <constant name="mil" value="0.0254*mm"/>
...@@ -252,31 +253,32 @@ ...@@ -252,31 +253,32 @@
<constant name="cb_Solenoid_z" value="400.0 * cm"/> <comment> Central Barrel Solenoid Size in Z direction </comment> <constant name="cb_Solenoid_z" value="400.0 * cm"/> <comment> Central Barrel Solenoid Size in Z direction </comment>
<constant name="cb_Solenoid_shift" value="0.0 * cm"/> <constant name="cb_Solenoid_shift" value="0.0 * cm"/>
<constant name="Solenoid_length" value="7000.0*mm"/>
<constant name="Solenoid_rmin" value="3000.0*mm"/>
<constant name="Solenoid_thickness" value="400*mm"/> <constant name="Solenoid_thickness" value="400*mm"/>
<constant name="Solenoid_rmin" value="2000.0*mm"/>
<constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/> <constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/>
<constant name="SolenoidLength" value="6000.0*mm"/>
<comment>Solenoid Barrel Parameters</comment>
<constant name="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/> <constant name="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/>
<constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/> <constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/>
<constant name="SolenoidBarrelAlConductorThickness" value="12.0 * cm"/> <constant name="SolenoidBarrelAlConductorThickness" value="12.0 * cm"/>
<constant name="SolenoidBarrelQuenchbackThickness" value=" 1.5 * cm"/> <constant name="SolenoidBarrelQuenchbackThickness" value=" 1.5 * cm"/>
<constant name="SolenoidBarrelOuterGapThickness" value=" 5.6 * cm"/> <constant name="SolenoidBarrelOuterGapThickness" value=" 5.6 * cm"/>
<constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/> <constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/>
<constant name="SolenoidEndPlateGapThickness" value=" 5.7 * cm"/> <constant name="SolenoidEndPlateGapThickness" value=" 5.7 * cm"/>
<constant name="SolenoidEndPlateCryostatThickness" value=" 1.5 * cm"/> <constant name="SolenoidEndPlateCryostatThickness" value=" 1.5 * cm"/>
<comment> Solenoid Yoke Endcap </comment>
<constant name="SolenoidYokeEndcap_thickness" value="0.2 * m"/>
<constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/> <constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/>
<constant name="SolenoidBarrelLenth" value="SolenoidLength"/> <constant name="SolenoidBarrel_length" value="Solenoid_length"/>
<constant name="SolenoidBarrel_zmax" value="SolenoidBarrelLenth/2.0"/> <constant name="SolenoidBarrel_zmax" value="Solenoid_length/2.0"/>
<constant name="SolenoidCoilConductor_rmin" value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/>
<constant name="SolenoidCoilConductor_rmax" value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
<constant name="SolenoidCoilConductor_rmin" <constant name="SolenoidBarrel_rmax" value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/>
<constant name="SolenoidCoilConductor_rmax"
value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
<constant name="SolenoidBarrel_rmax"
value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
<constant name="SolenoidCoil_zmax" <constant name="SolenoidCoil_zmax"
value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/> value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/>
...@@ -284,15 +286,12 @@ ...@@ -284,15 +286,12 @@
<constant name="SolenoidalFieldRadius" <constant name="SolenoidalFieldRadius"
value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/> value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/>
<constant name="SolenoidCoilLength" value="SolenoidCoil_zmax*2.0"/> <constant name="SolenoidCoil_length" value="SolenoidCoil_zmax*2.0"/>
<constant name="SolenoidThickness" value="Solenoid_rmax - Solenoid_rmin"/> <constant name="SolenoidYokeEndcapP_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapN_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapP_rmin" value="800*mm"/> <constant name="SolenoidYokeEndcap_zmin" value="SolenoidCoil_zmax"/>
<constant name="SolenoidYokeEndcapN_rmin" value="800*mm"/> <constant name="SolenoidYokeEndcap_zmax" value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcap_thickness"/>
<constant name="SolenoidYokeEndcapThickness" value="0.2 * m"/>
<constant name="SolenoidYokeEndcap_zmin" value="SolenoidBarrel_zmax"/>
<constant name="SolenoidYokeEndcap_zmax" value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcapThickness"/>
<constant name="SolenoidYokeChamferAngle" value="0.2"/> <constant name="SolenoidYokeChamferAngle" value="0.2"/>
...@@ -303,8 +302,8 @@ ...@@ -303,8 +302,8 @@
-------------------------------- --------------------------------
These are needed here to compute the dependent parameters. These are needed here to compute the dependent parameters.
</comment> </comment>
<constant name="RICHLength" value="1.5*m"/> <constant name="RICHLength" value="1.3*m"/>
<constant name="TRDLength" value="40.0*cm"/> <constant name="TRDLength" value="30.0*cm"/>
<constant name="ForwardTOFLength" value="10.0*cm"/> <constant name="ForwardTOFLength" value="10.0*cm"/>
<constant name="ForwardPIDLength" value="RICHLength + TRDLength + ForwardTOFLength"/> <constant name="ForwardPIDLength" value="RICHLength + TRDLength + ForwardTOFLength"/>
...@@ -320,7 +319,7 @@ ...@@ -320,7 +319,7 @@
============================ ============================
</comment> </comment>
<constant name="tracker_region_rmax" value="Solenoid_rmax/2.0"/> <constant name="tracker_region_rmax" value="Solenoid_rmax/2.0"/>
<constant name="tracker_region_zmax" value="SolenoidLength/2.0"/> <constant name="tracker_region_zmax" value="Solenoid_length/2.0"/>
<comment> <comment>
------------------------- -------------------------
...@@ -338,9 +337,10 @@ ...@@ -338,9 +337,10 @@
-------------------------- --------------------------
</comment> </comment>
<constant name="SiliconTrackerInnerRadius" value="95.0*mm"/> <constant name="SiliconTrackerInnerRadius" value="95.0*mm"/>
<constant name="SiliconTrackerInnerBarrelLength" value="500.0*mm"/> <constant name="SiliconTrackerInnerBarrelLength" value="300.0*mm"/>
<constant name="SiliconTrackerOuterRadius" value="Solenoid_rmax/2.0"/> <constant name="SiliconTrackerOuterRadius" value="Solenoid_rmax/3.0"/>
<constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/3.0"/> <constant name="SiliconTrackerOuterBarrelLength" value="Solenoid_length/4.0"/>
<constant name="SiliconTrackerOuterBarrel_zmax" value="SiliconTrackerOuterBarrelLength/2.0"/>
<comment> <comment>
------------------------------- -------------------------------
...@@ -372,6 +372,9 @@ ...@@ -372,6 +372,9 @@
====================== ======================
</comment> </comment>
<comment>
Ecal and Hcal Barrel
</comment>
<constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelPIDThickness + 3.0 * cm"/> <constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelPIDThickness + 3.0 * cm"/>
<constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *cm "/> <constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *cm "/>
<constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/> <constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/>
...@@ -382,6 +385,7 @@ ...@@ -382,6 +385,7 @@
<constant name="EcalBarrelLength" value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/> <constant name="EcalBarrelLength" value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/>
<constant name="EcalEndcapP_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + ForwardPIDLength"/> <constant name="EcalEndcapP_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + ForwardPIDLength"/>
<constant name="EcalEndcapN_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + BackwardPIDLength"/> <constant name="EcalEndcapN_zmin" value="SiliconTrackerOuterBarrelLength/2.0 + BackwardPIDLength"/>
<constant name="EcalBarrel_offset" value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0"/>
<constant name="EndcapP_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapP_zmin + 10.0 * mm)"/> <constant name="EndcapP_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapP_zmin + 10.0 * mm)"/>
<constant name="EndcapN_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapN_zmin + 10.0 * mm)"/> <constant name="EndcapN_TotalCalThickness" value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapN_zmin + 10.0 * mm)"/>
...@@ -427,39 +431,42 @@ ...@@ -427,39 +431,42 @@
<constant name="EcalThickTungstenThickness" value="5.00 * mm" /> <constant name="EcalThickTungstenThickness" value="5.00 * mm" />
<comment> Layer Thickness </comment> <comment> Layer Thickness </comment>
<constant name="EcalFirstLayerThickness" <constant name="EcalLayer1_thickness"
value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
<constant name="EcalThinOneLayerThickness" <constant name="EcalLayer2_thickness"
value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
<constant name="EcalThickOneLayerThickness" <constant name="EcalLayer3_thickness"
value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/> value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
<comment> EM Barrel N Layer; same number of layers for EcalThin and EcalThick</comment> <comment> EM Barrel N Layer; same number of layers for EcalThin and EcalThick</comment>
<constant name="EcalBarrelLayers" <constant name="EcalBarrelLayers"
value="floor((EcalBarrel_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> value="floor((EcalBarrel_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
<constant name="EcalBarrelThinLayers" value="EcalBarrelLayers"/> <constant name="EcalBarrelLayer1_NRepeat" value="1"/>
<constant name="EcalBarrelThickLayers" value="EcalBarrelLayers"/> <constant name="EcalBarrelLayer2_NRepeat" value="EcalBarrelLayers"/>
<constant name="EcalBarrelLayer3_NRepeat" value="EcalBarrelLayers"/>
<comment> EM Barrel Thickness </comment> <comment> EM Barrel Thickness </comment>
<constant name="EcalBarrelThickness" <constant name="EcalBarrelThickness"
value="EcalFirstLayerThickness + (EcalBarrelThinLayers * EcalThinOneLayerThickness) + (EcalBarrelThickLayers * EcalThickOneLayerThickness)"/> value="EcalBarrelLayer1_NRepeat*EcalLayer1_thickness + EcalBarrelLayer2_NRepeat * EcalLayer2_thickness + EcalBarrelLayer3_NRepeat * EcalLayer3_thickness"/>
<constant name="EcalBarrel_rmax" value="EcalBarrel_rmin + EcalBarrelThickness"/> <constant name="EcalBarrel_rmax" value="EcalBarrel_rmin + EcalBarrelThickness"/>
<comment> EM Endcap N Layer; same number of layers for EcalThin and EcalThick </comment> <comment> EM Endcap N Layer; same number of layers for EcalThin and EcalThick </comment>
<constant name="EcalEndcapPLayers" <constant name="EcalEndcapPLayers"
value="floor((EcalEndcapP_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> value="floor((EcalEndcapP_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
<constant name="EcalEndcapNLayers" <constant name="EcalEndcapNLayers"
value="floor((EcalEndcapN_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/> value="floor((EcalEndcapN_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
<constant name="EcalEndcapP_NThinLayers" value="EcalEndcapPLayers"/> <constant name="EcalEndcapPLayer1_NRepeat" value="1"/>
<constant name="EcalEndcapP_NThickLayers" value="EcalEndcapPLayers"/> <constant name="EcalEndcapNLayer1_NRepeat" value="1"/>
<constant name="EcalEndcapN_NThinLayers" value="EcalEndcapNLayers"/> <constant name="EcalEndcapPLayer2_NRepeat" value="EcalEndcapPLayers"/>
<constant name="EcalEndcapN_NThickLayers" value="EcalEndcapNLayers"/> <constant name="EcalEndcapPLayer3_NRepeat" value="EcalEndcapPLayers"/>
<constant name="EcalEndcapNLayer2_NRepeat" value="EcalEndcapNLayers"/>
<constant name="EcalEndcapNLayer3_NRepeat" value="EcalEndcapNLayers"/>
<comment> EM Endcap Thickness </comment> <comment> EM Endcap Thickness </comment>
<constant name="EcalEndcapPThickness" <constant name="EcalEndcapPThickness"
value="EcalFirstLayerThickness + (EcalEndcapP_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapP_NThickLayers * EcalThickOneLayerThickness)"/> value="EcalEndcapPLayer1_NRepeat*EcalLayer1_thickness + EcalEndcapPLayer2_NRepeat*EcalLayer2_thickness + EcalEndcapPLayer3_NRepeat*EcalLayer3_thickness "/>
<constant name="EcalEndcapNThickness" <constant name="EcalEndcapNThickness"
value="EcalFirstLayerThickness + (EcalEndcapN_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapN_NThickLayers * EcalThickOneLayerThickness)"/> value="EcalEndcapNLayer1_NRepeat*EcalLayer1_thickness + EcalEndcapNLayer2_NRepeat*EcalLayer2_thickness + EcalEndcapNLayer3_NRepeat*EcalLayer3_thickness"/>
<comment> <comment>
...@@ -540,7 +547,9 @@ ...@@ -540,7 +547,9 @@
</comment> </comment>
<constant name="RICHZMin" value="SiliconTrackerOuterBarrelLength/2.0 + 1 * cm"/> <constant name="RICHZMin" value="SiliconTrackerOuterBarrelLength/2.0 + 1 * cm"/>
<constant name="RICHRMin" value="15 * cm"/> <constant name="RICHRMin" value="15 * cm"/>
<constant name="RICHRMax" value="60 * cm"/> <constant name="RICH_rmax0" value="SiliconTrackerOuterBarrel_zmin"/>
<constant name="RICH_rmax1" value="EcalBarrel_rmin"/>
<constant name="RICH_rmax2" value="SolenoidBarrel_rmin-2*cm"/>
<constant name="RICHDepth" value="1.0*m"/> <constant name="RICHDepth" value="1.0*m"/>
......
...@@ -36,21 +36,23 @@ ...@@ -36,21 +36,23 @@
<detector <detector
id="ECalBarrel_ID" id="ECalBarrel_ID"
name="EcalBarrel" name="EcalBarrel"
type="DD4hep_EcalBarrel" type="refdet_EcalBarrel"
readout="EcalBarrelHits" readout="EcalBarrelHits"
calorimeterType="EM_BARREL"> calorimeterType="EM_BARREL"
offset="EcalBarrel_offset"
>
<dimensions <dimensions
numsides="CaloSides" numsides="CaloSides"
rmin="EcalBarrel_rmin" rmin="EcalBarrel_rmin"
z="EcalBarrelLength"/> z="EcalBarrelLength"/>
<staves vis="EcalBarrelVis"/> <staves vis="EcalBarrelVis"/>
<layer repeat="1"> <layer repeat="EcalBarrelLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/> <slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalBarrelThinLayers"> <layer repeat="EcalBarrelLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -58,7 +60,7 @@ ...@@ -58,7 +60,7 @@
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalBarrelThickLayers"> <layer repeat="EcalBarrelLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -74,7 +76,6 @@ ...@@ -74,7 +76,6 @@
------------------------------------------ ------------------------------------------
A layered EM calorimeter with tungsten and silicon (or scintillator) strips A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</comment> </comment>
<!--
<detector id="ECalEndcapP_ID" <detector id="ECalEndcapP_ID"
name="EcalEndcapP" name="EcalEndcapP"
reflect="false" reflect="false"
...@@ -87,13 +88,13 @@ ...@@ -87,13 +88,13 @@
zmin="EcalEndcapP_zmin" zmin="EcalEndcapP_zmin"
rmin="EcalEndcapP_rmin" rmin="EcalEndcapP_rmin"
rmax="EcalBarrel_rmax " /> rmax="EcalBarrel_rmax " />
<layer repeat="1"> <layer repeat="EcalEndcapPLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/> <slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalEndcapP_NThinLayers"> <layer repeat="EcalEndcapPLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -101,7 +102,7 @@ ...@@ -101,7 +102,7 @@
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalEndcapP_NThickLayers"> <layer repeat="EcalEndcapPLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -111,15 +112,12 @@ ...@@ -111,15 +112,12 @@
</layer> </layer>
</detector> </detector>
-->
<comment> <comment>
------------------------------- -------------------------------
Backwards Endcap EM Calorimeter Backwards Endcap EM Calorimeter
------------------------------- -------------------------------
A layered EM calorimeter with tungsten and silicon (or scintillator) strips A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</comment> </comment>
<!--
<detector id="ECalEndcapN_ID" <detector id="ECalEndcapN_ID"
name="EcalEndcapN" name="EcalEndcapN"
type="refdet_PolyhedraEndcapCalorimeter2" type="refdet_PolyhedraEndcapCalorimeter2"
...@@ -132,13 +130,13 @@ ...@@ -132,13 +130,13 @@
zmin="EcalEndcapN_zmin" zmin="EcalEndcapN_zmin"
rmin="EcalEndcapN_rmin" rmin="EcalEndcapN_rmin"
rmax="EcalBarrel_rmax " /> rmax="EcalBarrel_rmax " />
<layer repeat="1"> <layer repeat="EcalEndcapPLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/> <slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalEndcapN_NThinLayers"> <layer repeat="EcalEndcapPLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -146,7 +144,7 @@ ...@@ -146,7 +144,7 @@
<slice material="Kapton" thickness="EcalKaptonThickness"/> <slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
<layer repeat="EcalEndcapN_NThickLayers"> <layer repeat="EcalEndcapPLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/> <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/> <slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/> <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
...@@ -155,7 +153,6 @@ ...@@ -155,7 +153,6 @@
<slice material="Air" thickness="EcalAir1Thickness"/> <slice material="Air" thickness="EcalAir1Thickness"/>
</layer> </layer>
</detector> </detector>
-->
</detectors> </detectors>
<!-- Definition of the readout segmentation/definition --> <!-- Definition of the readout segmentation/definition -->
...@@ -183,6 +180,4 @@ ...@@ -183,6 +180,4 @@
<plugins> <plugins>
</plugins> </plugins>
<fields>
</fields>
</lccdd> </lccdd>
...@@ -5,9 +5,11 @@ ...@@ -5,9 +5,11 @@
<detectors> <detectors>
<detector id="ForwardRICH_ID" name="ForwardRICH" type="refdet_ForwardRICH" readout="ForwardRICHHits" vis="BlueVis"> <detector id="ForwardRICH_ID" name="ForwardRICH" type="refdet_ForwardRICH" readout="ForwardRICHHits" vis="BlueVis">
<dimensions z0="RICHZMin" length="RICHDepth+20*cm" rmin="RICHRMin" rmax1="RICHRMax*cm" rmax2="RICHRMin+80*cm"/> <dimensions z0="RICHZMin" length="RICHLength"
rmin="RICHRMin"
rmax1="RICH_rmax1" rmax2="RICH_rmax2"/>
<radiator material="N2cherenkov" /> <radiator material="N2cherenkov" />
<mcppmt zdiff="15.0*cm" rmin="SolenoidYokeEndcapP_rmin - 10*cm" rmax="SolenoidYokeEndcapP_rmin + 80*cm" rtol="1.0*cm" vis="BlueVis" <mcppmt zdiff="15.0*cm" rmin="SolenoidYokeEndcapP_rmin - 10*cm" rmax="SolenoidYokeEndcapP_rmin" rtol="1.0*cm" vis="BlueVis"
module_size="10*cm" module_gap="0.2*cm" thickness="1.0*cm" material="Quartz" /> module_size="10*cm" module_gap="0.2*cm" thickness="1.0*cm" material="Quartz" />
<tank zdiff="5.0*cm" length="RICHDepth" gas="N2cherenkov" vis="GreenVis" <tank zdiff="5.0*cm" length="RICHDepth" gas="N2cherenkov" vis="GreenVis"
rmin="RICHRMin" rmax1="RICHRMin+40*cm" rmax2="RICHRMin+80*cm" /> rmin="RICHRMin" rmax1="RICHRMin+40*cm" rmax2="RICHRMin+80*cm" />
......
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
inner_z="SolenoidBarrel_zmax + SolenoidEndPlateGapThickness" inner_z="SolenoidBarrel_zmax + SolenoidEndPlateGapThickness"
inner_r="SolenoidYokeEndcapP_rmin" inner_r="SolenoidYokeEndcapP_rmin"
outer_r="SolenoidBarrel_rmax"> outer_r="SolenoidBarrel_rmax">
<slice material="Steel235" thickness="SolenoidYokeEndcapThickness/2.0" vis="SolenoidYokeVis" /> <slice material="Steel235" thickness="SolenoidYokeEndcap_thickness/2.0" vis="SolenoidYokeVis" />
</layer> </layer>
</detector> </detector>
<!-- <!--
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
<define> <define>
<include ref="compact/definitions.xml" /> <include ref="compact/definitions.xml" />
<include ref="eic/eic_defs.xml" />
<include ref="ip6/ip6_defs.xml" /> <include ref="ip6/ip6_defs.xml" />
<!-- <!--
<include ref="eic/eic_defs.xml" />
--> -->
</define> </define>
...@@ -113,17 +113,25 @@ ...@@ -113,17 +113,25 @@
<!-- <!--
<include ref="reference_detector/vertex_tracker.xml"/> <include ref="reference_detector/vertex_tracker.xml"/>
<include ref="compact/silicon_tracker.xml"/> <include ref="compact/silicon_tracker.xml"/>
<<<<<<< HEAD
--> -->
<include ref="compact/cb_CTD_Si.xml"/> <include ref="compact/cb_CTD_Si.xml"/>
<include ref="ip6/beampipe.xml"/> <include ref="ip6/beampipe.xml"/>
<include ref="compact/ffi_ZDC.xml"/> <include ref="compact/ffi_ZDC.xml"/>
=======
<include ref="ip6/beampipe.xml"/>
-->
>>>>>>> 913736c ( modified: compact/cb_Solenoid.xml)
<include ref="compact/solenoid.xml"/> <include ref="compact/solenoid.xml"/>
<include ref="compact/ecal.xml"/>
<include ref="compact/hcal.xml"/>
<include ref="compact/forward_rich.xml"/> <include ref="compact/forward_rich.xml"/>
<<<<<<< HEAD
<include ref="compact/ce_mrich.xml"/> <include ref="compact/ce_mrich.xml"/>
<include ref="compact/ce_GEM.xml"/> <include ref="compact/ce_GEM.xml"/>
=======
<include ref="compact/ecal.xml"/>
>>>>>>> 913736c ( modified: compact/cb_Solenoid.xml)
<!-- <!--
<include ref="compact/hcal.xml"/>
<include ref="compact/roman_pots.xml"/> <include ref="compact/roman_pots.xml"/>
--> -->
<include ref="eic/forward_ion_beamline.xml"/> <include ref="eic/forward_ion_beamline.xml"/>
......
...@@ -37,6 +37,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -37,6 +37,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
Volume endcapVol("endcap", PolyhedraRegular(numsides, rmin, rmax, totalThickness), air); Volume endcapVol("endcap", PolyhedraRegular(numsides, rmin, rmax, totalThickness), air);
DetElement endcap("endcap", det_id); DetElement endcap("endcap", det_id);
std::cout << "totalThickness = " << totalThickness << "\n";
std::cout << "zmin = " << zmin << "\n";
std::cout << "rmin = " << rmin << "\n";
std::cout << "rmax = " << rmax << "\n";
std::cout << "nlayers = " << std::size(layering.layers()) << "\n";
int l_num = 1; int l_num = 1;
int layerType = 0; int layerType = 0;
double layerZ = -totalThickness / 2; double layerZ = -totalThickness / 2;
...@@ -44,8 +49,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -44,8 +49,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
endcapVol.setAttributes(description, x_det.regionStr(), x_det.limitsStr(), x_det.visStr()); endcapVol.setAttributes(description, x_det.regionStr(), x_det.limitsStr(), x_det.visStr());
for (xml_coll_t xc(x_det, _U(layer)); xc; ++xc) { for (xml_coll_t xc(x_det, _U(layer)); xc; ++xc) {
std::cout << "l_num = " << l_num << "\n";
std::cout << "xc = " << xc << "\n";
xml_comp_t x_layer = xc; xml_comp_t x_layer = xc;
double l_thick = layering.layer(l_num - 1)->thickness(); double l_thick = layering.layer(l_num - 1)->thickness();
std::cout << "xc = " << xc << "\n";
string l_name = _toString(layerType, "layer%d"); string l_name = _toString(layerType, "layer%d");
int l_repeat = x_layer.repeat(); int l_repeat = x_layer.repeat();
Volume l_vol(l_name, PolyhedraRegular(numsides, rmin, rmax, l_thick), air); Volume l_vol(l_name, PolyhedraRegular(numsides, rmin, rmax, l_thick), air);
...@@ -73,7 +81,8 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -73,7 +81,8 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
s_num++; s_num++;
} }
l_vol.setVisAttributes(description.visAttributes(x_layer.visStr())); l_vol.setVisAttributes(description.visAttributes(x_layer.visStr()));
if (l_repeat <= 0) throw std::runtime_error(x_det.nameStr() + "> Invalid repeat value"); if (l_repeat <= 0)
throw std::runtime_error(x_det.nameStr() + "> Invalid repeat value");
for (int j = 0; j < l_repeat; ++j) { for (int j = 0; j < l_repeat; ++j) {
string phys_lay = _toString(l_num, "layer%d"); string phys_lay = _toString(l_num, "layer%d");
layerZ += l_thick / 2; layerZ += l_thick / 2;
......
#include <XML/Helper.h>
using namespace dd4hep;
static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens) {
xml::DetElement detElem = handle;
std::string detName = detElem.nameStr();
int detID = detElem.id();
xml::Component dims = detElem.dimensions();
double rInner = dims.inner_radius();
double rMin = dims.rmin();
double thickness = dims.thickness();
double innerZ = dims.inner_z();
double angle = dims.angle();
Material mat = desc.material(detElem.materialStr());
Tube outerTubeShape(rMin, rInner + thickness, innerZ + thickness);
Tube innerTubeShape(0, rInner, innerZ);
SubtractionSolid unchamferedShape(outerTubeShape, innerTubeShape);
Cone chamferShape(thickness, 0, rMin, 0, rMin + 2 * tan(angle) * thickness);
SubtractionSolid detShape(unchamferedShape, chamferShape, Position(0, 0, innerZ + thickness));
Volume detVol(detName, detShape, mat);
detVol.setVisAttributes(desc.visAttributes(detElem.visStr()));
DetElement det(detName, detID);
Volume motherVol = desc.pickMotherVolume(det);
PlacedVolume detPV = motherVol.placeVolume(detVol);
det.setPlacement(detPV);
return det;
}
// clang-format off
DECLARE_DETELEMENT(TestDetector, createDetector)
#include <XML/Helper.h>
///////////////////////////
// Central Barrel Solenoid
///////////////////////////
using namespace dd4hep;
static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens)
{
xml::DetElement detElem = handle;
std::string detName = detElem.nameStr();
int detID = detElem.id();
xml::Component dims = detElem.dimensions();
double SizeZ = dims.z(); // Size in Z direction
double ROut = dims.rmax(); // Outer diameter
double RIn = dims.rmin(); // Inner diameter
double ShiftZ = dims.delta();
Material mat = desc.material(detElem.materialStr());
Tube cb_Solenoid_GVol_Solid(RIn, ROut, SizeZ / 2., 0., 360 * deg);
Volume detVol("cb_Solenoid_GVol_Logic", cb_Solenoid_GVol_Solid, mat);
detVol.setVisAttributes(desc.visAttributes(detElem.visStr()));
DetElement det(detName, detID);
Volume motherVol = desc.pickMotherVolume(det);
Transform3D tr(RotationZYX(0., 0., 0.), Position(0., 0., ShiftZ));
PlacedVolume detPV = motherVol.placeVolume(detVol, tr);
det.setPlacement(detPV);
return det;
}
// clang-format off
DECLARE_DETELEMENT(cb_Solenoid, createDetector)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment