Skip to content
Snippets Groups Projects
Commit 05388c01 authored by Wouter Deconinck's avatar Wouter Deconinck
Browse files

Resolve "Implement Helmholtz coil geometry"

parent c1214de5
No related branches found
No related tags found
1 merge request!67Resolve "Implement Helmholtz coil geometry"
......@@ -192,8 +192,9 @@
<!--include ref="compact/rwell_tracker_barrel.xml"/-->
<include ref="compact/cb_DIRC.xml"/>
<!-- When changing magnet, also select dimensions in definitions.xml. -->
<include ref="compact/solenoid.xml"/>
<include ref="compact/ecal.xml"/>
<include ref="compact/hcal.xml"/>
<!--include ref="compact/ce_GEM.xml"/-->
......
......@@ -309,13 +309,23 @@
==========================
Solenoid Magnet Parameters
==========================
When changing here, also change the include file in athena.xml.
</comment>
<comment>Solenoid option</comment>
<constant name="Solenoid_length" value="3840.0*mm"/>
<constant name="Solenoid_rmin" value="1600.0*mm"/>
<constant name="Solenoid_thickness" value="640*mm"/>
<constant name="Solenoid_offset" value="10*mm"/>
<comment>Helmholtz option</comment>
<comment>
<constant name="Solenoid_length" value="3840.0*mm"/>
<constant name="Solenoid_rmin" value="1665.0*mm"/> <!-- Larger inner bore radius -->
<constant name="Solenoid_thickness" value="640*mm"/>
<constant name="Solenoid_offset" value="10*mm"/>
</comment>
<constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/>
<constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/>
<constant name="SolenoidBarrel_length" value="Solenoid_length"/>
......
<?xml version="1.0" encoding="UTF-8"?>
<lccdd>
<define>
<comment>
--------------------------
Solenoid Magnet Parameters
--------------------------
</comment>
<comment>Solenoid Barrel Parameters</comment>
<constant name="SolenoidBarrelInnerVacuumVesselThickness" value=" 20.0 * mm"/>
<constant name="SolenoidBarrelInnerSecondMLILayerThickness" value=" 20.0 * mm"/>
<constant name="SolenoidBarrelInnerThermalShieldThickness" value=" 10.0 * mm"/>
<constant name="SolenoidBarrelInnerFirstMLILayerThickness" value=" 15.0 * mm"/>
<constant name="SolenoidBarrelInnerHeliumVesselThickness" value=" 20.0 * mm"/>
<constant name="SolenoidBarrelInnerHeliumThickness" value=" 0.0 * mm"/> <!-- modification -->
<constant name="SolenoidBarrelCoilFormerThickness" value=" 50.0 * mm"/>
<constant name="SolenoidBarrelCoilThickness" value="210.0 * mm"/> <!-- modification -->
<constant name="SolenoidBarrelBlockThickness" value="210.0 * mm"/> <!-- addition -->
<constant name="SolenoidBarrelCoilOverbindThickness" value="200.0 * mm"/>
<constant name="SolenoidBarrelOuterHeliumThickness" value=" 15.0 * mm"/>
<constant name="SolenoidBarrelOuterHeliumVesselThickness" value=" 10.0 * mm"/>
<constant name="SolenoidBarrelOuterFirstMLILayerThickness" value=" 15.0 * mm"/>
<constant name="SolenoidBarrelOuterThermalShieldThickness" value=" 10.0 * mm"/>
<constant name="SolenoidBarrelOuterSecondMLILayerThickness" value=" 20.0 * mm"/>
<constant name="SolenoidBarrelOuterVacuumVesselThickness" value=" 25.0 * mm"/>
<constant name="SolenoidBarrelInnerVacuumVessel_zmax" value="1920.0 * mm"/>
<constant name="SolenoidBarrelInnerSecondMLILayer_zmax" value="1895.0 * mm"/>
<constant name="SolenoidBarrelInnerThermalShield_zmax" value="1875.0 * mm"/>
<constant name="SolenoidBarrelInnerFirstMLILayer_zmax" value="1855.0 * mm"/>
<constant name="SolenoidBarrelInnerHeliumVessel_zmax" value="1840.0 * mm"/>
<constant name="SolenoidBarrelInnerHelium_zmax" value="1820.0 * mm"/>
<constant name="SolenoidBarrelCoilFormer_zmax" value="1800.0 * mm"/>
<constant name="SolenoidBarrelCoil_zmax" value="1800.0 * mm"/>
<constant name="SolenoidBarrelBlock_zmax" value=" 545.0 * mm"/> <!-- addition -->
<constant name="SolenoidBarrelCoilOverbind_zmax" value="1800.0 * mm"/>
<constant name="SolenoidBarrelOuterHelium_zmax" value="1820.0 * mm"/>
<constant name="SolenoidBarrelOuterHeliumVessel_zmax" value="1840.0 * mm"/>
<constant name="SolenoidBarrelOuterFirstMLILayer_zmax" value="1855.0 * mm"/>
<constant name="SolenoidBarrelOuterThermalShield_zmax" value="1875.0 * mm"/>
<constant name="SolenoidBarrelOuterSecondMLILayer_zmax" value="1895.0 * mm"/>
<constant name="SolenoidBarrelOuterVacuumVessel_zmax" value="1920.0 * mm"/>
<constant name="SolenoidBarrelInnerVacuumVessel_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidBarrelInnerVacuumVessel_rmax" value="SolenoidBarrelInnerVacuumVessel_rmin + SolenoidBarrelInnerVacuumVesselThickness"/>
<constant name="SolenoidBarrelInnerSecondMLILayer_rmin" value="SolenoidBarrelInnerVacuumVessel_rmax"/>
<constant name="SolenoidBarrelInnerSecondMLILayer_rmax" value="SolenoidBarrelInnerSecondMLILayer_rmin + SolenoidBarrelInnerSecondMLILayerThickness"/>
<constant name="SolenoidBarrelInnerThermalShield_rmin" value="SolenoidBarrelInnerSecondMLILayer_rmax"/>
<constant name="SolenoidBarrelInnerThermalShield_rmax" value="SolenoidBarrelInnerThermalShield_rmin + SolenoidBarrelInnerThermalShieldThickness"/>
<constant name="SolenoidBarrelInnerFirstMLILayer_rmin" value="SolenoidBarrelInnerThermalShield_rmax"/>
<constant name="SolenoidBarrelInnerFirstMLILayer_rmax" value="SolenoidBarrelInnerFirstMLILayer_rmin + SolenoidBarrelInnerFirstMLILayerThickness"/>
<constant name="SolenoidBarrelInnerHeliumVessel_rmin" value="SolenoidBarrelInnerFirstMLILayer_rmax"/>
<constant name="SolenoidBarrelInnerHeliumVessel_rmax" value="SolenoidBarrelInnerHeliumVessel_rmin + SolenoidBarrelInnerHeliumVesselThickness"/>
<constant name="SolenoidBarrelInnerHelium_rmin" value="SolenoidBarrelInnerHeliumVessel_rmax"/>
<constant name="SolenoidBarrelInnerHelium_rmax" value="SolenoidBarrelInnerHelium_rmin + SolenoidBarrelInnerHeliumThickness"/>
<constant name="SolenoidBarrelCoilFormer_rmin" value="SolenoidBarrelInnerHelium_rmax"/>
<constant name="SolenoidBarrelCoilFormer_rmax" value="SolenoidBarrelCoilFormer_rmin + SolenoidBarrelCoilFormerThickness"/>
<constant name="SolenoidBarrelCoil_rmin" value="SolenoidBarrelCoilFormer_rmax"/>
<constant name="SolenoidBarrelCoil_rmax" value="SolenoidBarrelCoil_rmin + SolenoidBarrelCoilThickness"/>
<constant name="SolenoidBarrelBlock_rmin" value="SolenoidBarrelCoilFormer_rmax"/> <!-- addition -->
<constant name="SolenoidBarrelBlock_rmax" value="SolenoidBarrelBlock_rmin + SolenoidBarrelBlockThickness"/> <!-- addition -->
<constant name="SolenoidBarrelCoilOverbind_rmin" value="max(SolenoidBarrelCoil_rmax,SolenoidBarrelBlock_rmax)"/> <!-- modification -->
<constant name="SolenoidBarrelCoilOverbind_rmax" value="SolenoidBarrelCoilOverbind_rmin + SolenoidBarrelCoilOverbindThickness"/>
<constant name="SolenoidBarrelOuterHelium_rmin" value="SolenoidBarrelCoilOverbind_rmax"/>
<constant name="SolenoidBarrelOuterHelium_rmax" value="SolenoidBarrelOuterHelium_rmin + SolenoidBarrelOuterHeliumThickness"/>
<constant name="SolenoidBarrelOuterHeliumVessel_rmin" value="SolenoidBarrelOuterHelium_rmax"/>
<constant name="SolenoidBarrelOuterHeliumVessel_rmax" value="SolenoidBarrelOuterHeliumVessel_rmin + SolenoidBarrelOuterHeliumVesselThickness"/>
<constant name="SolenoidBarrelOuterFirstMLILayer_rmin" value="SolenoidBarrelOuterHeliumVessel_rmax"/>
<constant name="SolenoidBarrelOuterFirstMLILayer_rmax" value="SolenoidBarrelOuterFirstMLILayer_rmin + SolenoidBarrelOuterFirstMLILayerThickness"/>
<constant name="SolenoidBarrelOuterThermalShield_rmin" value="SolenoidBarrelOuterFirstMLILayer_rmax"/>
<constant name="SolenoidBarrelOuterThermalShield_rmax" value="SolenoidBarrelOuterThermalShield_rmin + SolenoidBarrelOuterThermalShieldThickness"/>
<constant name="SolenoidBarrelOuterSecondMLILayer_rmin" value="SolenoidBarrelOuterThermalShield_rmax"/>
<constant name="SolenoidBarrelOuterSecondMLILayer_rmax" value="SolenoidBarrelOuterSecondMLILayer_rmin + SolenoidBarrelOuterSecondMLILayerThickness"/>
<constant name="SolenoidBarrelOuterVacuumVessel_rmin" value="SolenoidBarrelOuterSecondMLILayer_rmax"/>
<constant name="SolenoidBarrelOuterVacuumVessel_rmax" value="SolenoidBarrelOuterVacuumVessel_rmin + SolenoidBarrelOuterVacuumVesselThickness"/>
<constant name="SolenoidalFieldRadius"
value="(SolenoidBarrelCoil_rmin + SolenoidBarrelCoil_rmax) / 2.0"/>
<comment> Solenoid Endcap </comment>
<comment>At the center, the end caps are outside the barrels</comment>
<constant name="SolenoidEndcapCoilEndSupport_rmin" value="SolenoidBarrelCoilFormer_rmin"/>
<constant name="SolenoidEndcapCoilEndSupport_rmax" value="SolenoidBarrelCoilOverbind_rmax"/>
<constant name="SolenoidEndcapHelium_rmin" value="SolenoidBarrelInnerHelium_rmin"/>
<constant name="SolenoidEndcapHelium_rmax" value="SolenoidBarrelOuterHelium_rmax"/>
<constant name="SolenoidEndcapHeliumVessel_rmin" value="SolenoidBarrelInnerHeliumVessel_rmin"/>
<constant name="SolenoidEndcapHeliumVessel_rmax" value="SolenoidBarrelOuterHeliumVessel_rmax"/>
<constant name="SolenoidEndcapFirstMLILayer_rmin" value="SolenoidBarrelInnerFirstMLILayer_rmin"/>
<constant name="SolenoidEndcapFirstMLILayer_rmax" value="SolenoidBarrelOuterFirstMLILayer_rmax"/>
<comment>Below here, the end caps are inside the barrels</comment>
<constant name="SolenoidEndcapThermalShield_rmin" value="SolenoidBarrelInnerThermalShield_rmax"/>
<constant name="SolenoidEndcapThermalShield_rmax" value="SolenoidBarrelOuterThermalShield_rmin"/>
<constant name="SolenoidEndcapSecondMLILayer_rmin" value="SolenoidBarrelInnerSecondMLILayer_rmax"/>
<constant name="SolenoidEndcapSecondMLILayer_rmax" value="SolenoidBarrelOuterSecondMLILayer_rmin"/>
<constant name="SolenoidEndcapVacuumVessel_rmin" value="SolenoidBarrelInnerVacuumVessel_rmax"/>
<constant name="SolenoidEndcapVacuumVessel_rmax" value="SolenoidBarrelOuterVacuumVessel_rmin"/>
<constant name="SolenoidEndcapCoilEndSupport_zmin" value="1800.0 * mm"/>
<constant name="SolenoidEndcapHelium_zmin" value="1820.0 * mm"/>
<constant name="SolenoidEndcapHeliumVessel_zmin" value="1840.0 * mm"/>
<constant name="SolenoidEndcapFirstMLILayer_zmin" value="1855.0 * mm"/>
<constant name="SolenoidEndcapThermalShield_zmin" value="1865.0 * mm"/>
<constant name="SolenoidEndcapSecondMLILayer_zmin" value="1875.0 * mm"/>
<constant name="SolenoidEndcapVacuumVessel_zmin" value="1895.0 * mm"/>
<constant name="SolenoidEndcapCoilEndSupportThickness" value="20.0 * mm"/>
<constant name="SolenoidEndcapHeliumThickness" value="20.0 * mm"/>
<constant name="SolenoidEndcapHeliumVesselThickness" value="10.0 * mm"/>
<constant name="SolenoidEndcapFirstMLILayerThickness" value="10.0 * mm"/>
<constant name="SolenoidEndcapThermalShieldThickness" value="10.0 * mm"/>
<constant name="SolenoidEndcapSecondMLILayerThickness" value="20.0 * mm"/>
<constant name="SolenoidEndcapVacuumVesselThickness" value="25.0 * mm"/>
</define>
<detectors>
<comment>
---------------
Solenoid Magnet
---------------
The solenoid superconducting magnet and surrounding cryostat and
yoke endcaps.
</comment>
<detector
id="Solenoid_ID"
name="SolenoidCoilBarrel"
type="refdet_SolenoidCoil"
insideTrackingVolume="false">
<position x="0" y="0" z="Solenoid_offset"/>
<layer id="1"
inner_r="SolenoidBarrelInnerVacuumVessel_rmin"
outer_z="SolenoidBarrelInnerVacuumVessel_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelInnerVacuumVesselThickness"/>
</layer>
<layer id="2"
inner_r="SolenoidBarrelInnerSecondMLILayer_rmin"
outer_z="SolenoidBarrelInnerSecondMLILayer_zmax"
vis="SolenoidCryostatVis">
<slice material="Vacuum" thickness="SolenoidBarrelInnerSecondMLILayerThickness"/>
</layer>
<layer id="3"
inner_r="SolenoidBarrelInnerThermalShield_rmin"
outer_z="SolenoidBarrelInnerThermalShield_zmax"
vis="SolenoidCryostatVis">
<slice material="Copper" thickness="SolenoidBarrelInnerThermalShieldThickness"/>
</layer>
<layer id="4"
inner_r="SolenoidBarrelInnerFirstMLILayer_rmin"
outer_z="SolenoidBarrelInnerFirstMLILayer_zmax"
vis="SolenoidCryostatVis">
<slice material="Vacuum" thickness="SolenoidBarrelInnerFirstMLILayerThickness"/>
</layer>
<layer id="5"
inner_r="SolenoidBarrelInnerHeliumVessel_rmin"
outer_z="SolenoidBarrelInnerHeliumVessel_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelInnerHeliumVesselThickness"/>
</layer>
<layer id="6"
inner_r="SolenoidBarrelInnerHelium_rmin"
outer_z="SolenoidBarrelInnerHelium_zmax"
vis="SolenoidCryostatVis">
<slice material="Helium" thickness="SolenoidBarrelInnerHeliumThickness"/>
</layer>
<layer id="7"
inner_r="SolenoidBarrelCoilFormer_rmin"
outer_z="SolenoidBarrelCoilFormer_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelCoilFormerThickness"/>
</layer>
<layer id="8"
inner_r="SolenoidBarrelCoil_rmin"
outer_z="max(SolenoidBarrelCoil_zmax,SolenoidBarrelBlock_zmax)"
vis="SolenoidCryostatVis">
<slice material="Copper" thickness="SolenoidBarrelCoilThickness" outer_z="SolenoidBarrelCoil_zmax" inner_z="SolenoidBarrelBlock_zmax"/>
<slice material="Steel235" thickness="SolenoidBarrelBlockThickness" outer_z="SolenoidBarrelBlock_zmax"/>
</layer>
<layer id="9"
inner_r="SolenoidBarrelCoilOverbind_rmin"
outer_z="SolenoidBarrelCoilOverbind_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelCoilOverbindThickness"/>
</layer>
<layer id="10"
inner_r="SolenoidBarrelOuterHelium_rmin"
outer_z="SolenoidBarrelOuterHelium_zmax"
vis="SolenoidCryostatVis">
<slice material="Helium" thickness="SolenoidBarrelOuterHeliumThickness"/>
</layer>
<layer id="11"
inner_r="SolenoidBarrelOuterHeliumVessel_rmin"
outer_z="SolenoidBarrelOuterHeliumVessel_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelOuterHeliumVesselThickness"/>
</layer>
<layer id="12"
inner_r="SolenoidBarrelOuterFirstMLILayer_rmin"
outer_z="SolenoidBarrelOuterFirstMLILayer_zmax"
vis="SolenoidCryostatVis">
<slice material="Vacuum" thickness="SolenoidBarrelOuterFirstMLILayerThickness"/>
</layer>
<layer id="13"
inner_r="SolenoidBarrelOuterThermalShield_rmin"
outer_z="SolenoidBarrelOuterThermalShield_zmax"
vis="SolenoidCryostatVis">
<slice material="Copper" thickness="SolenoidBarrelOuterThermalShieldThickness"/>
</layer>
<layer id="14"
inner_r="SolenoidBarrelOuterSecondMLILayer_rmin"
outer_z="SolenoidBarrelOuterSecondMLILayer_zmax"
vis="SolenoidCryostatVis">
<slice material="Vacuum" thickness="SolenoidBarrelOuterSecondMLILayerThickness"/>
</layer>
<layer id="15"
inner_r="SolenoidBarrelOuterVacuumVessel_rmin"
outer_z="SolenoidBarrelOuterVacuumVessel_zmax"
vis="SolenoidCryostatVis">
<slice material="Steel235" thickness="SolenoidBarrelOuterVacuumVesselThickness"/>
</layer>
</detector>
<detector
id="Solenoid_ID"
name="SolenoidCoilEndcapP"
type="ref_SolenoidEndcap"
insideTrackingVolume="false"
reflect="false"
vis="SolenoidCryostatVis">
<position x="0" y="0" z="Solenoid_offset"/>
<layer id="1"
inner_z="SolenoidEndcapCoilEndSupport_zmin"
inner_r="SolenoidEndcapCoilEndSupport_rmin"
outer_r="SolenoidEndcapCoilEndSupport_rmax">
<slice material="Steel235" thickness="SolenoidEndcapCoilEndSupportThickness"/>
</layer>
<layer id="2"
inner_z="SolenoidEndcapHelium_zmin"
inner_r="SolenoidEndcapHelium_rmin"
outer_r="SolenoidEndcapHelium_rmax">
<slice material="Helium" thickness="SolenoidEndcapHeliumThickness"/>
</layer>
<layer id="3"
inner_z="SolenoidEndcapHeliumVessel_zmin"
inner_r="SolenoidEndcapHeliumVessel_rmin"
outer_r="SolenoidEndcapHeliumVessel_rmax">
<slice material="Steel235" thickness="SolenoidEndcapHeliumVesselThickness"/>
</layer>
<layer id="4"
inner_z="SolenoidEndcapFirstMLILayer_zmin"
inner_r="SolenoidEndcapFirstMLILayer_rmin"
outer_r="SolenoidEndcapFirstMLILayer_rmax">
<slice material="Vacuum" thickness="SolenoidEndcapFirstMLILayerThickness"/>
</layer>
<layer id="5"
inner_z="SolenoidEndcapThermalShield_zmin"
inner_r="SolenoidEndcapThermalShield_rmin"
outer_r="SolenoidEndcapThermalShield_rmax">
<slice material="Copper" thickness="SolenoidEndcapThermalShieldThickness"/>
</layer>
<layer id="6"
inner_z="SolenoidEndcapSecondMLILayer_zmin"
inner_r="SolenoidEndcapSecondMLILayer_rmin"
outer_r="SolenoidEndcapSecondMLILayer_rmax">
<slice material="Vacuum" thickness="SolenoidEndcapSecondMLILayerThickness"/>
</layer>
<layer id="7"
inner_z="SolenoidEndcapVacuumVessel_zmin"
inner_r="SolenoidEndcapVacuumVessel_rmin"
outer_r="SolenoidEndcapVacuumVessel_rmax">
<slice material="Steel235" thickness="SolenoidEndcapVacuumVesselThickness"/>
</layer>
</detector>
<detector
id="Solenoid_ID"
name="SolenoidCoilEndcapN"
type="ref_SolenoidEndcap"
insideTrackingVolume="false"
reflect="true"
vis="SolenoidCryostatVis">
<position x="0" y="0" z="Solenoid_offset"/>
<layer id="1"
inner_z="SolenoidEndcapCoilEndSupport_zmin"
inner_r="SolenoidEndcapCoilEndSupport_rmin"
outer_r="SolenoidEndcapCoilEndSupport_rmax">
<slice material="Steel235" thickness="SolenoidEndcapCoilEndSupportThickness"/>
</layer>
<layer id="2"
inner_z="SolenoidEndcapHelium_zmin"
inner_r="SolenoidEndcapHelium_rmin"
outer_r="SolenoidEndcapHelium_rmax">
<slice material="Helium" thickness="SolenoidEndcapHeliumThickness"/>
</layer>
<layer id="3"
inner_z="SolenoidEndcapHeliumVessel_zmin"
inner_r="SolenoidEndcapHeliumVessel_rmin"
outer_r="SolenoidEndcapHeliumVessel_rmax">
<slice material="Steel235" thickness="SolenoidEndcapHeliumVesselThickness"/>
</layer>
<layer id="4"
inner_z="SolenoidEndcapFirstMLILayer_zmin"
inner_r="SolenoidEndcapFirstMLILayer_rmin"
outer_r="SolenoidEndcapFirstMLILayer_rmax">
<slice material="Vacuum" thickness="SolenoidEndcapFirstMLILayerThickness"/>
</layer>
<layer id="5"
inner_z="SolenoidEndcapThermalShield_zmin"
inner_r="SolenoidEndcapThermalShield_rmin"
outer_r="SolenoidEndcapThermalShield_rmax">
<slice material="Copper" thickness="SolenoidEndcapThermalShieldThickness"/>
</layer>
<layer id="6"
inner_z="SolenoidEndcapSecondMLILayer_zmin"
inner_r="SolenoidEndcapSecondMLILayer_rmin"
outer_r="SolenoidEndcapSecondMLILayer_rmax">
<slice material="Vacuum" thickness="SolenoidEndcapSecondMLILayerThickness"/>
</layer>
<layer id="7"
inner_z="SolenoidEndcapVacuumVessel_zmin"
inner_r="SolenoidEndcapVacuumVessel_rmin"
outer_r="SolenoidEndcapVacuumVessel_rmax">
<slice material="Steel235" thickness="SolenoidEndcapVacuumVesselThickness"/>
</layer>
</detector>
</detectors>
<fields>
<field type="solenoid" name="GlobalSolenoid" inner_field="3.0 * tesla" outer_field="0.5*tesla"
zmin="-SolenoidBarrelCoil_zmax" zmax="SolenoidBarrelCoil_zmax"
inner_radius="SolenoidalFieldRadius" outer_radius="SolenoidalFieldRadius+20*cm"/>
</fields>
</lccdd>
......@@ -33,34 +33,45 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
for(xml_coll_t i(x_det,_U(layer)); i; ++i, ++n) {
xml_comp_t x_layer = i;
string l_name = det_name+_toString(n,"_layer%d");
double z = x_layer.outer_z();
double outer_z = x_layer.outer_z();
double rmin = x_layer.inner_r();
double r = rmin;
DetElement layer(sdet,_toString(n,"layer%d"),x_layer.id());
Tube l_tub (rmin,2*rmin,z);
Tube l_tub (rmin,2*rmin,outer_z);
Volume l_vol(l_name,l_tub,air);
int im = 0;
for(xml_coll_t j(x_layer,_U(slice)); j; ++j, ++im) {
// If slices are only given a thickness attribute, they are radially concentric slices
// If slices are given an inner_z attribute, they are longitudinal slices with equal rmin
xml_comp_t x_slice = j;
Material mat = description.material(x_slice.materialStr());
string s_name= l_name+_toString(im,"_slice%d");
double thickness = x_slice.thickness();
Tube s_tub(r,r+thickness,z,2*M_PI);
double s_outer_z = dd4hep::getAttrOrDefault(x_slice, _Unicode(outer_z), outer_z);
double s_inner_z = dd4hep::getAttrOrDefault(x_slice, _Unicode(inner_z), 0.0*dd4hep::cm);
Tube s_tub(r,r+thickness,(s_inner_z > 0? 0.5*(s_outer_z-s_inner_z): s_outer_z),2*M_PI);
Volume s_vol(s_name, s_tub, mat);
r += thickness;
if ( x_slice.isSensitive() ) {
sens.setType("tracker");
s_vol.setSensitiveDetector(sens);
}
// Set Attributes
s_vol.setAttributes(description,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr());
pv = l_vol.placeVolume(s_vol);
if (s_inner_z > 0) {
// Place off-center volumes twice
Position s_pos(0, 0, 0.5*(s_outer_z+s_inner_z));
pv = l_vol.placeVolume(s_vol, -s_pos);
pv = l_vol.placeVolume(s_vol, +s_pos);
} else {
r += thickness;
pv = l_vol.placeVolume(s_vol);
}
// Slices have no extra id. Take the ID of the layer!
pv.addPhysVolID("slice",im);
}
l_tub.setDimensions(rmin,r,z);
l_tub.setDimensions(rmin,r,outer_z);
//cout << l_name << " " << rmin << " " << r << " " << z << endl;
l_vol.setVisAttributes(description,x_layer.visStr());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment