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

Added other detectors

parent ac286f64
No related branches found
No related tags found
1 merge request!63Resolve "Adjust HCAL parametrization"
Pipeline #8495 failed
...@@ -322,7 +322,7 @@ ...@@ -322,7 +322,7 @@
<constant name="ForwardRICH_length" value="1.1*m"/> <constant name="ForwardRICH_length" value="1.1*m"/>
<constant name="ForwardTRD_length" value="10.0*cm"/> <constant name="ForwardTRD_length" value="10.0*cm"/>
<constant name="ForwardTOF_length" value="1.0*mm"/> <constant name="ForwardTOF_length" value="10.0*mm"/>
<constant name="BackwardCherenkovLength" value="15.0*cm"/> <constant name="BackwardCherenkovLength" value="15.0*cm"/>
<constant name="BackwardTOFLength" value="10.0*cm"/> <constant name="BackwardTOFLength" value="10.0*cm"/>
...@@ -331,11 +331,18 @@ ...@@ -331,11 +331,18 @@
<constant name="ForwardPIDLength" value="ForwardRICH_length + ForwardTRD_length + ForwardTOF_length"/> <constant name="ForwardPIDLength" value="ForwardRICH_length + ForwardTRD_length + ForwardTOF_length"/>
<constant name="BackwardPIDLength" value="BackwardCherenkovLength + BackwardTOFLength"/> <constant name="BackwardPIDLength" value="BackwardCherenkovLength + BackwardTOFLength"/>
<comment> For detectors adjacent to beam pipe.</comment>
<constant name="ForwardPID_rmin" value="Beampipe_rmax + 10*mm"/>
<constant name="ForwardPID_rmin1" value="Beampipe_rmax + 80*mm"/>
<comment> Barrel PID thicknesses</comment> <comment> Barrel PID thicknesses</comment>
<constant name="BarrelExtraPIDThickness" value="25.0 * cm"/> <constant name="BarrelExtraPIDThickness" value="25.0 * cm"/>
<constant name="BarrelTRDThickness" value="1.0 * cm"/> <constant name="BarrelTRDThickness" value="1.0 * cm"/>
<constant name="BarrelTOFThickness" value="1.0 * cm"/> <constant name="BarrelTOFThickness" value="1.0 * cm"/>
<comment> <comment>
============================ ============================
Tracking Detector Parameters Tracking Detector Parameters
...@@ -351,7 +358,7 @@ ...@@ -351,7 +358,7 @@
------------------------- -------------------------
</comment> </comment>
<constant name="ForwardTrackingGEMLength" value="ForwardTrackingLength"/> <constant name="ForwardTrackingGEMLength" value="ForwardTrackingLength"/>
<constant name="ForwardTrackingGEMLength" value="BackwardTrackingLength"/> <constant name="BackwardTrackingGEMLength" value="BackwardTrackingLength"/>
<comment> <comment>
------------------------- -------------------------
...@@ -427,8 +434,8 @@ ...@@ -427,8 +434,8 @@
<constant name="SolenoidYokeEndcapN_zmin" value="Solenoid_length/2.0 - Solenoid_offset + HcalEndcapNExtra_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="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelExtraPIDThickness + 5.0 * mm"/>
<constant name="HcalBarrel_rmax" value="Solenoid_rmin - 10.0 *cm "/> <constant name="Barrel_rmax" value="Solenoid_rmin - 10.0 *cm "/>
<constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/> <constant name="Barrel_TotalCalThickness" value="Barrel_rmax - EcalBarrel_rmin"/>
<constant name="CalBarrelDivider" value="0.8"/> <constant name="CalBarrelDivider" value="0.8"/>
<comment> Leave room for TRD </comment> <comment> Leave room for TRD </comment>
...@@ -458,8 +465,6 @@ ...@@ -458,8 +465,6 @@
<constant name="EcalEndcapP_length" value="EndcapPTotalCal_length * EndcapP_CalDivide"/> <constant name="EcalEndcapP_length" value="EndcapPTotalCal_length * EndcapP_CalDivide"/>
<constant name="EcalEndcapN_length" value="EndcapNTotalCal_length * EndcapN_CalDivide"/> <constant name="EcalEndcapN_length" value="EndcapNTotalCal_length * EndcapN_CalDivide"/>
<constant name="HcalEndcapP_length" value="EndcapPTotalCal_length * (1.0 - EndcapP_CalDivide)"/>
<constant name="HcalEndcapN_length" value="EndcapNTotalCal_length * (1.0 - EndcapN_CalDivide)"/>
<comment> These need to be set in sync with the forward and backward detectors </comment> <comment> These need to be set in sync with the forward and backward detectors </comment>
<constant name="EcalEndcapP_rmin" value="200.0*mm"/> <constant name="EcalEndcapP_rmin" value="200.0*mm"/>
...@@ -536,12 +541,19 @@ ...@@ -536,12 +541,19 @@
Hadronic Calorimeter Parameters Hadronic Calorimeter Parameters
------------------------------- -------------------------------
</comment> </comment>
<constant name="HcalBarrel_rmin" value="EcalBarrel_rmax"/>
<constant name="HcalBarrelAvailThickness" value="HcalBarrel_rmax - HcalBarrel_rmin"/> <constant name="HcalEndcapP_length" value="50.0*cm"/>
<constant name="HcalBarrelLength" value="Solenoid_length + HcalEndcapPExtra_length + HcalEndcapNExtra_length- HcalEndcapP_length- HcalEndcapN_length - 10*cm"/> <constant name="HcalEndcapN_length" value="50.0*cm"/>
<constant name="HcalBarrel_thickness" value="50.0*cm "/>
<constant name="HcalBarrel_rmin" value="Solenoid_rmax"/>
<constant name="HcalBarrel_rmax" value="HcalBarrel_rmin + HcalBarrel_thickness"/>
<constant name="HcalBarrelAvailThickness" value="HcalBarrel_thickness"/>
<constant name="HcalEndcapP_zmin" value="EcalEndcapP_zmin + EcalEndcapP_length "/> <constant name="HcalEndcapP_zmin" value="EcalEndcapP_zmin + EcalEndcapP_length "/>
<constant name="HcalEndcapN_zmin" value="EcalEndcapN_zmin + EcalEndcapN_length "/> <constant name="HcalEndcapN_zmin" value="EcalEndcapN_zmin + EcalEndcapN_length "/>
<constant name="HcalBarrelLength" value="HcalEndcapP_zmin + HcalEndcapN_zmin "/>
<comment> Material Thickness </comment> <comment> Material Thickness </comment>
<constant name="HcalSteelThickness" value="1.89 * cm"/> <constant name="HcalSteelThickness" value="1.89 * cm"/>
...@@ -610,12 +622,6 @@ ...@@ -610,12 +622,6 @@
Gaseous RICH Parameters Gaseous RICH Parameters
----------------------- -----------------------
</comment> </comment>
<constant name="ForwardRICH_zmin" value="BarrelTracking_length/2.0 + ForwardTrackingLength + 1 * mm"/>
<constant name="ForwardRICH_rmin" value="15 * cm"/>
<constant name="ForwardRICH_rmax0" value="SiliconTrackerOuterRadius"/>
<constant name="ForwardRICH_rmax1" value="EcalBarrel_rmin"/>
<constant name="ForwardRICH_rmax2" value="SolenoidBarrel_rmin-2*cm"/>
<constant name="ForwardRICHDepth" value="0.9*m"/>
<comment> <comment>
......
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
<constant name="CrystalEndcap_x_pos" value="0.0*m"/> <constant name="CrystalEndcap_x_pos" value="0.0*m"/>
<constant name="CrystalEndcap_y_pos" value="0.0*m"/> <constant name="CrystalEndcap_y_pos" value="0.0*m"/>
<constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/> <constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/>
<constant name="EcalEndcapP_rmax" value="Solenoid_rmax "/>
</define> </define>
...@@ -88,7 +92,7 @@ ...@@ -88,7 +92,7 @@
numsides="CaloSides" numsides="CaloSides"
zmin="EcalEndcapP_zmin" zmin="EcalEndcapP_zmin"
rmin="EcalEndcapP_rmin" rmin="EcalEndcapP_rmin"
rmax="EcalBarrel_rmax " /> rmax="EcalEndcapP_rmax " />
<layer repeat="EcalEndcapPLayer1_NRepeat"> <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"/>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<lccdd> <lccdd>
<define> <define>
<constant name="ForwardRICH_zmin" value="BarrelTracking_length/2.0 + ForwardTrackingLength "/>
<constant name="ForwardRICH_rmin" value="ForwardPID_rmin1"/>
<constant name="ForwardRICH_rmax0" value="SiliconTrackerOuterRadius"/>
<constant name="ForwardRICH_rmax1" value="EcalBarrel_rmin"/>
<constant name="ForwardRICH_rmax2" value="Solenoid_rmin-6*cm"/>
<constant name="ForwardRICHDepth" value="0.9*m"/>
</define> </define>
<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="RICHVis">
<dimensions <dimensions
z0="ForwardRICH_zmin" z0="ForwardRICH_zmin"
snout_length="ForwardRICH_length - ForwardRICHDepth" snout_length="ForwardRICH_length - ForwardRICHDepth"
...@@ -23,7 +29,7 @@ ...@@ -23,7 +29,7 @@
rmax2="ForwardRICH_rmax2" /> rmax2="ForwardRICH_rmax2" />
<comment> What are the following MCP-PMT parameters?</comment> <comment> What are the following MCP-PMT parameters?</comment>
<mcppmt <mcppmt
z0="-20.0*cm" z0="0.0*cm"
rmin="ForwardRICH_rmax1" rmin="ForwardRICH_rmax1"
rmax="ForwardRICH_rmax2" rmax="ForwardRICH_rmax2"
rtol="1.0*cm" rtol="1.0*cm"
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
Forward TRD Parameters Forward TRD Parameters
-------------------------- --------------------------
</comment> </comment>
<constant name="ForwardTRD_zmin" value="ForwardRICH_zmin + ForwardRICH_length+ 1*cm"/> <constant name="ForwardTRD_zmin" value="BarrelTracking_length/2.0 + ForwardTrackingLength + ForwardRICH_length"/>
<constant name="ForwardTRD_rmin" value="ForwardRICH_rmin"/> <constant name="ForwardTRD_rmin" value="ForwardPID_rmin1"/>
<constant name="ForwardTRD_rmax" value="EcalBarrel_rmax - 5*cm"/> <constant name="ForwardTRD_rmax" value="Solenoid_rmin"/>
</define> </define>
<detectors> <detectors>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
insideTrackingVolume="true" insideTrackingVolume="true"
reflect="false" reflect="false"
vis="Argonne_Red"> vis="Argonne_Red">
<position x="0" y="0" z="0"/> <position x="0" y="0" z="0.0"/>
<layer id="1" <layer id="1"
vis="Argonne_Blue" vis="Argonne_Blue"
inner_z="ForwardTRD_zmin" inner_z="ForwardTRD_zmin"
......
<lccdd> <lccdd>
<define> <define>
<constant name="HcalBarrel_offset" value="(HcalEndcapP_zmin-HcalEndcapN_zmin)/2.0" />
</define> </define>
<limits> <limits>
...@@ -15,14 +16,13 @@ ...@@ -15,14 +16,13 @@
<!-- Define detector --> <!-- Define detector -->
<detectors> <detectors>
<!--
<detector <detector
id="HCalBarrel_ID" id="HCalBarrel_ID"
name="HcalBarrel" name="HcalBarrel"
type="refdet_EcalBarrel" type="refdet_EcalBarrel"
readout="HcalBarrelHits" readout="HcalBarrelHits"
calorimeterType="HAD_BARREL" calorimeterType="HAD_BARREL"
offset="Barrel_offset" offset="HcalBarrel_offset"
gap="0.*cm" gap="0.*cm"
material="Steel235"> material="Steel235">
<dimensions <dimensions
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
<slice material="Air" thickness="HcalAirThickness"/> <slice material="Air" thickness="HcalAirThickness"/>
</layer> </layer>
</detector> </detector>
-->
<detector <detector
id="HCalEndcapP_ID" id="HCalEndcapP_ID"
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
</info> </info>
<define> <define>
<include ref="ip6/ip6_defs.xml" /> <comment> IP definitions should be first</comment>
<include ref="compact/definitions.xml" /> <include ref="compact/definitions.xml" />
<include ref="ip6/ip6_defs.xml" />
<!-- <!--
<include ref="eic/eic_defs.xml" /> <include ref="eic/eic_defs.xml" />
--> -->
...@@ -110,11 +110,9 @@ ...@@ -110,11 +110,9 @@
<include ref="compact/display.xml" /> <include ref="compact/display.xml" />
</display> </display>
<!-- <comment> Include the IP components first </comment>
<include ref="reference_detector/vertex_tracker.xml"/>
<include ref="compact/silicon_tracker.xml"/>
-->
<include ref="ip6/beampipe.xml"/> <include ref="ip6/beampipe.xml"/>
<include ref="compact/solenoid.xml"/> <include ref="compact/solenoid.xml"/>
<include ref="compact/ecal.xml"/> <include ref="compact/ecal.xml"/>
<include ref="compact/ce_mrich.xml"/> <include ref="compact/ce_mrich.xml"/>
...@@ -129,14 +127,14 @@ ...@@ -129,14 +127,14 @@
<include ref="compact/forward_romanpot.xml"/> <include ref="compact/forward_romanpot.xml"/>
<include ref="compact/far_forward_detectors.xml"/> <include ref="compact/far_forward_detectors.xml"/>
<include ref="eic/forward_ion_beamline.xml"/> <include ref="eic/forward_ion_beamline.xml"/>
<include ref="compact/hcal.xml"/> <include ref="compact/hcal.xml"/>
<include ref="compact/forward_rich.xml"/>
<!-- <!--
<include ref="compact/ci_GEM.xml"/> <include ref="compact/ci_GEM.xml"/>
<include ref="compact/cb_CTD_Si.xml"/> <include ref="compact/cb_CTD_Si.xml"/>
<include ref="compact/cb_VTX_Barrel.xml"/> <include ref="compact/cb_VTX_Barrel.xml"/>
<include ref="compact/ci_HCAL.xml"/> <include ref="compact/ci_HCAL.xml"/>
<include ref="compact/forward_rich.xml"/>
<include ref="compact/roman_pots.xml"/> <include ref="compact/roman_pots.xml"/>
--> -->
......
...@@ -118,7 +118,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec ...@@ -118,7 +118,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
double mTheta1 = std::asin(mRmin/curve); double mTheta1 = std::asin(mRmin/curve);
double mTheta2 = std::asin(mRmax/curve); double mTheta2 = std::asin(mRmax/curve);
double rotY = -std::asin(focus/curve); double rotY = -std::asin(focus/curve);
mirVol.setSolid(Sphere(curve, curve + mThick, mTheta1, mTheta2, 0., wphi)); mirVol.setSolid(Sphere(curve, curve + mThick, mTheta1*1.01, mTheta2*0.99, 0., wphi));
// action is in a reverse order // action is in a reverse order
Transform3D tr = Translation3D(0., 0., mirZ - front_offset) // move for z position Transform3D tr = Translation3D(0., 0., mirZ - front_offset) // move for z position
* RotationZ(rotZ) // rotate phi angle * RotationZ(rotZ) // rotate phi angle
...@@ -179,7 +179,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec ...@@ -179,7 +179,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
pdPV.addPhysVolID("layer", ilayer).addPhysVolID("piece", ipd + 1); pdPV.addPhysVolID("layer", ilayer).addPhysVolID("piece", ipd + 1);
} }
Volume motherVol = desc.pickMotherVolume(det); Volume motherVol = desc.pickMotherVolume(det);
PlacedVolume envPV = motherVol.placeVolume(envVol, Position(0, 0, z0 + halfLength)); PlacedVolume envPV = motherVol.placeVolume(envVol, Position(0, 0, z0 + front_offset));
envPV.addPhysVolID("system", detID); envPV.addPhysVolID("system", detID);
det.setPlacement(envPV); det.setPlacement(envPV);
......
...@@ -20,7 +20,8 @@ using namespace std; ...@@ -20,7 +20,8 @@ using namespace std;
using namespace dd4hep; using namespace dd4hep;
using namespace dd4hep::detail; using namespace dd4hep::detail;
static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens) { static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens)
{
xml_det_t x_det = e; xml_det_t x_det = e;
Material air = description.air(); Material air = description.air();
string det_name = x_det.nameStr(); string det_name = x_det.nameStr();
...@@ -37,14 +38,15 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -37,14 +38,15 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
double zmin = x_layer.inner_z(); double zmin = x_layer.inner_z();
double rmin = x_layer.inner_r(); double rmin = x_layer.inner_r();
double rmax = x_layer.outer_r(); double rmax = x_layer.outer_r();
double z = zmin, layerWidth = 0.; double z = zmin;
double layerWidth = 0.;
int s_num = 0; int s_num = 0;
for (xml_coll_t j(x_layer, _U(slice)); j; ++j) { for (xml_coll_t j(x_layer, _U(slice)); j; ++j) {
double thickness = xml_comp_t(j).thickness(); double thickness = xml_comp_t(j).thickness();
layerWidth += thickness; layerWidth += thickness;
} }
Tube l_tub(rmin,rmax,layerWidth,2*M_PI); Tube l_tub(rmin, rmax, layerWidth/2.0, 2 * M_PI);
Volume l_vol(l_nam, l_tub, air); Volume l_vol(l_nam, l_tub, air);
l_vol.setVisAttributes(description, x_layer.visStr()); l_vol.setVisAttributes(description, x_layer.visStr());
for (xml_coll_t j(x_layer, _U(slice)); j; ++j, ++s_num) { for (xml_coll_t j(x_layer, _U(slice)); j; ++j, ++s_num) {
...@@ -52,7 +54,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -52,7 +54,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
double thick = x_slice.thickness(); double thick = x_slice.thickness();
Material mat = description.material(x_slice.materialStr()); Material mat = description.material(x_slice.materialStr());
string s_nam = l_nam + _toString(s_num, "_slice%d"); string s_nam = l_nam + _toString(s_num, "_slice%d");
Volume s_vol(s_nam, Tube(rmin,rmax,thick), mat); Volume s_vol(s_nam, Tube(rmin, rmax, thick/2.0), mat);
if (x_slice.isSensitive()) { if (x_slice.isSensitive()) {
sens.setType("tracker"); sens.setType("tracker");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment