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

modified: compact/definitions.xml

	modified:   compact/ecal.xml
	modified:   compact/hcal.xml
	modified:   compact/solenoid.xml
	modified:   src/PolyhedraEndcapCalorimeter2_geo.cpp
parent 03b0cf75
No related branches found
No related tags found
1 merge request!28Draft: Resolve "Implement ci_HCAL"
Pipeline #8129 failed
...@@ -265,48 +265,13 @@ ...@@ -265,48 +265,13 @@
<constant name="Solenoid_length" value="7000.0*mm"/> <constant name="Solenoid_length" value="7000.0*mm"/>
<constant name="Solenoid_rmin" value="3000.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_rmax" value="Solenoid_rmin + Solenoid_thickness"/> <constant name="Solenoid_offset" value="600.0*mm"/>
<constant name="Solenoid_offset" value="1000.0*mm"/>
<comment>Solenoid Barrel Parameters</comment>
<constant name="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/>
<constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/>
<constant name="SolenoidBarrelAlConductorThickness" value="12.0 * cm"/>
<constant name="SolenoidBarrelQuenchbackThickness" value=" 1.5 * cm"/>
<constant name="SolenoidBarrelOuterGapThickness" value=" 5.6 * cm"/>
<constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/>
<constant name="SolenoidEndPlateGapThickness" value=" 5.7 * cm"/>
<constant name="SolenoidEndPlateCryostatThickness" value=" 1.5 * cm"/>
<comment> Solenoid Yoke Endcap </comment>
<constant name="SolenoidYokeEndcap_thickness" value="0.2 * m"/>
<constant name="Solenoid_rmax" value="Solenoid_rmin + Solenoid_thickness"/>
<constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/> <constant name="SolenoidBarrel_rmin" value="Solenoid_rmin"/>
<constant name="SolenoidBarrel_length" value="Solenoid_length"/> <constant name="SolenoidBarrel_length" value="Solenoid_length"/>
<constant name="SolenoidBarrel_zmax" value="Solenoid_length/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="SolenoidBarrel_rmax" value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
<constant name="SolenoidCoil_zmax"
value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/>
<constant name="SolenoidalFieldRadius"
value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/>
<constant name="SolenoidCoil_length" value="SolenoidCoil_zmax*2.0"/>
<constant name="SolenoidYokeEndcapP_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapN_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapP_zmin" value="SolenoidCoil_zmax + Solenoid_offset"/>
<constant name="SolenoidYokeEndcapP_zmax" value="SolenoidYokeEndcapP_zmin + SolenoidYokeEndcap_thickness"/>
<constant name="SolenoidYokeEndcapN_zmin" value="SolenoidCoil_zmax - Solenoid_offset"/>
<constant name="SolenoidYokeEndcapN_zmax" value="SolenoidYokeEndcapN_zmin + SolenoidYokeEndcap_thickness"/>
<constant name="SolenoidYokeChamferAngle" value="0.2"/>
<comment> <comment>
-------------------------------- --------------------------------
...@@ -399,33 +364,42 @@ ...@@ -399,33 +364,42 @@
</comment> </comment>
<comment> <comment>
Ecal and Hcal Barrel Ecal and Hcal Barrel/Endcap
</comment> </comment>
<constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelPIDThickness + 3.0 * cm"/> <constant name="ExtraHcalEndcapP_length" value="0.0*cm"/>
<constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *cm "/> <constant name="ExtraHcalEndcapN_length" value="0.0*cm"/>
<constant name="SolenoidYokeEndcapP_zmin" value="Solenoid_length/2.0 + Solenoid_offset+ExtraHcalEndcapP_length"/>
<constant name="SolenoidYokeEndcapN_zmin" value="Solenoid_length/2.0 - Solenoid_offset+ExtraHcalEndcapN_length"/>
<constant name="EcalBarrel_rmin" value="SiliconTrackerOuterRadius + BarrelPIDThickness + 5.0 * mm"/>
<constant name="HcalBarrel_rmax" value="Solenoid_rmin - 5.0 *mm "/>
<constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/> <constant name="Barrel_TotalCalThickness" value="HcalBarrel_rmax - EcalBarrel_rmin"/>
<constant name="CalBarrelDivider" value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment> <constant name="CalBarrelDivider" value="0.5"/> <comment> Ecal and Hcal have the same thickness </comment>
<constant name="EcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * CalBarrelDivider"/> <constant name="EcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * CalBarrelDivider"/>
<constant name="HcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * (1.0 - CalBarrelDivider)"/> <constant name="HcalBarrel_TotalThickness" value="Barrel_TotalCalThickness * (1.0 - CalBarrelDivider)"/>
<constant name="BarrelLength" value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/>
<constant name="EcalBarrelLength" value="CentralTracking_length + BackwardPIDLength"/> <constant name="EcalBarrelLength" value="CentralTracking_length + BackwardPIDLength"/>
<constant name="EcalBarrel_offset" value="(CentralTracking_length -(CentralTracking_length+BackwardPIDLength))/2.0"/>
<constant name="EcalEndcapP_zmin" value="CentralTracking_length/2.0 + ForwardPIDLength"/> <constant name="EcalEndcapP_zmin" value="CentralTracking_length/2.0 + ForwardPIDLength"/>
<constant name="EcalEndcapN_zmin" value="CentralTracking_length/2.0 + BackwardPIDLength"/> <constant name="EcalEndcapN_zmin" value="CentralTracking_length/2.0 + BackwardPIDLength"/>
<constant name="EcalBarrel_offset" value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0"/>
<constant name="EndcapP_TotalCalThickness" value="(SolenoidYokeEndcapP_zmin - 10.0 * mm) - (EcalEndcapP_zmin + 10.0 * mm)"/> <constant name="BarrelLength" value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/>
<constant name="EndcapN_TotalCalThickness" value="(SolenoidYokeEndcapN_zmin - 10.0 * mm) - (EcalEndcapN_zmin + 10.0 * mm)"/> <constant name="Barrel_offset" value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0"/>
<constant name="EndcapPTotalCal_length" value="(SolenoidYokeEndcapP_zmin - 0.0 * mm) - (EcalEndcapP_zmin + 0.0 * mm)"/>
<constant name="EndcapNTotalCal_length" value="(SolenoidYokeEndcapN_zmin - 0.0 * mm) - (EcalEndcapN_zmin + 0.0 * mm)"/>
<constant name="EndcapP_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment> <constant name="EndcapP_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment>
<constant name="EndcapN_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment> <constant name="EndcapN_CalDivide" value="0.5"/> <comment> 0.5 means Ecal and Hcal have the same thickness </comment>
<constant name="EcalEndcapP_TotalThickness" value="EndcapP_TotalCalThickness * EndcapP_CalDivide"/> <constant name="EcalEndcapP_length" value="EndcapPTotalCal_length * EndcapP_CalDivide"/>
<constant name="EcalEndcapN_TotalThickness" value="EndcapN_TotalCalThickness * EndcapN_CalDivide"/> <constant name="EcalEndcapN_length" value="EndcapNTotalCal_length * EndcapN_CalDivide"/>
<constant name="HcalEndcapP_TotalThickness" value="EndcapP_TotalCalThickness * (1.0 - EndcapP_CalDivide)"/> <constant name="HcalEndcapP_length" value="EndcapPTotalCal_length * (1.0 - EndcapP_CalDivide)"/>
<constant name="HcalEndcapN_TotalThickness" value="EndcapN_TotalCalThickness * (1.0 - EndcapN_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"/>
...@@ -480,9 +454,9 @@ ...@@ -480,9 +454,9 @@
<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 - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/> value="floor((EcalEndcapP_length - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
<constant name="EcalEndcapNLayers" <constant name="EcalEndcapNLayers"
value="floor((EcalEndcapN_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/> value="floor((EcalEndcapN_length - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
<constant name="EcalEndcapPLayer1_NRepeat" value="1"/> <constant name="EcalEndcapPLayer1_NRepeat" value="1"/>
<constant name="EcalEndcapNLayer1_NRepeat" value="1"/> <constant name="EcalEndcapNLayer1_NRepeat" value="1"/>
<constant name="EcalEndcapPLayer2_NRepeat" value="EcalEndcapPLayers"/> <constant name="EcalEndcapPLayer2_NRepeat" value="EcalEndcapPLayers"/>
...@@ -502,11 +476,12 @@ ...@@ -502,11 +476,12 @@
Hadronic Calorimeter Parameters Hadronic Calorimeter Parameters
------------------------------- -------------------------------
</comment> </comment>
<constant name="HcalBarrel_rmin" value="EcalBarrel_rmax+10.0*mm"/> <constant name="HcalBarrel_rmin" value="EcalBarrel_rmax"/>
<constant name="HcalBarrelAvailThickness" value="HcalBarrel_rmax - HcalBarrel_rmin"/> <constant name="HcalBarrelAvailThickness" value="HcalBarrel_rmax - HcalBarrel_rmin"/>
<constant name="HcalBarrelLength" value="BarrelLength + EcalEndcapP_TotalThickness + EcalEndcapN_TotalThickness + 10.0*mm "/> <constant name="HcalBarrelLength" value="Solenoid_length + ExtraHcalEndcapP_length + ExtraHcalEndcapN_length- HcalEndcapP_length- HcalEndcapN_length"/>
<constant name="HcalEndcapP_zmin" value="EcalEndcapP_zmin + EcalEndcapP_TotalThickness + 5*mm"/>
<constant name="HcalEndcapN_zmin" value="EcalEndcapN_zmin + EcalEndcapN_TotalThickness + 5*mm"/> <constant name="HcalEndcapP_zmin" value="SolenoidYokeEndcapP_zmin - HcalEndcapP_length "/>
<constant name="HcalEndcapN_zmin" value="SolenoidYokeEndcapN_zmin - HcalEndcapN_length "/>
<comment> Material Thickness </comment> <comment> Material Thickness </comment>
<constant name="HcalSteelThickness" value="1.89 * cm"/> <constant name="HcalSteelThickness" value="1.89 * cm"/>
...@@ -524,8 +499,8 @@ ...@@ -524,8 +499,8 @@
<constant name="HcalBarrelThickness" value="HcalBarrelLayer_NRepeat * HcalSingleLayerThickness"/> <constant name="HcalBarrelThickness" value="HcalBarrelLayer_NRepeat * HcalSingleLayerThickness"/>
<comment> Hcal Endcap Layers and computed Thickness </comment> <comment> Hcal Endcap Layers and computed Thickness </comment>
<constant name="HcalEndcapPLayer_NRepeat" value="floor(HcalEndcapP_TotalThickness / HcalSingleLayerThickness)"/> <constant name="HcalEndcapPLayer_NRepeat" value="floor(HcalEndcapP_length / HcalSingleLayerThickness)"/>
<constant name="HcalEndcapNLayer_NRepeat" value="floor(HcalEndcapN_TotalThickness / HcalSingleLayerThickness)"/> <constant name="HcalEndcapNLayer_NRepeat" value="floor(HcalEndcapN_length / HcalSingleLayerThickness)"/>
<constant name="HcalEndcapP_thickness" value="HcalEndcapPLayer_NRepeat * HcalSingleLayerThickness"/> <constant name="HcalEndcapP_thickness" value="HcalEndcapPLayer_NRepeat * HcalSingleLayerThickness"/>
<constant name="HcalEndcapN_thickness" value="HcalEndcapNLayer_NRepeat * HcalSingleLayerThickness"/> <constant name="HcalEndcapN_thickness" value="HcalEndcapNLayer_NRepeat * HcalSingleLayerThickness"/>
......
...@@ -83,6 +83,7 @@ ...@@ -83,6 +83,7 @@
readout="EcalEndcapHits" readout="EcalEndcapHits"
vis="EcalEndcapVis" vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP" > calorimeterType="EM_ENDCAP" >
<position x="0" y="0" z="EcalBarrel_offset"/>
<dimensions <dimensions
numsides="CaloSides" numsides="CaloSides"
zmin="EcalEndcapP_zmin" zmin="EcalEndcapP_zmin"
...@@ -125,6 +126,7 @@ ...@@ -125,6 +126,7 @@
readout="EcalEndcapHits" readout="EcalEndcapHits"
vis="EcalEndcapVis" vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP"> calorimeterType="EM_ENDCAP">
<position x="0" y="0" z="EcalBarrel_offset"/>
<dimensions <dimensions
numsides="CaloSides" numsides="CaloSides"
zmin="EcalEndcapN_zmin" zmin="EcalEndcapN_zmin"
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
type="refdet_EcalBarrel" type="refdet_EcalBarrel"
readout="HcalBarrelHits" readout="HcalBarrelHits"
calorimeterType="HAD_BARREL" calorimeterType="HAD_BARREL"
offset="EcalBarrel_offset" offset="Barrel_offset"
gap="0.*cm" gap="0.*cm"
material="Steel235"> material="Steel235">
<dimensions <dimensions
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
vis="HcalEndcapVis" vis="HcalEndcapVis"
calorimeterType="HAD_ENDCAP" calorimeterType="HAD_ENDCAP"
reflect="false"> reflect="false">
<position x="0" y="0" z="0"/>
<dimensions <dimensions
numsides="CaloSides" numsides="CaloSides"
zmin="HcalEndcapP_zmin" zmin="HcalEndcapP_zmin"
...@@ -69,6 +70,7 @@ ...@@ -69,6 +70,7 @@
readout="HcalEndcapHits" readout="HcalEndcapHits"
vis="HcalEndcapVis" vis="HcalEndcapVis"
calorimeterType="HAD_ENDCAP" reflect="true"> calorimeterType="HAD_ENDCAP" reflect="true">
<position x="0" y="0" z="0"/>
<dimensions <dimensions
numsides="CaloSides" numsides="CaloSides"
zmin="HcalEndcapN_zmin" zmin="HcalEndcapN_zmin"
......
...@@ -6,6 +6,39 @@ ...@@ -6,6 +6,39 @@
Solenoid Magnet Parameters Solenoid Magnet Parameters
-------------------------- --------------------------
</comment> </comment>
<comment>Solenoid Barrel Parameters</comment>
<constant name="SolenoidBarrelCryostatThickness" value=" 1.0 * cm"/>
<constant name="SolenoidBarrelGapThickness" value=" 3.3 * cm"/>
<constant name="SolenoidBarrelAlConductorThickness" value="12.0 * cm"/>
<constant name="SolenoidBarrelQuenchbackThickness" value=" 1.5 * cm"/>
<constant name="SolenoidBarrelOuterGapThickness" value=" 5.6 * cm"/>
<constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/>
<constant name="SolenoidEndPlateGapThickness" value=" 5.7 * cm"/>
<constant name="SolenoidEndPlateCryostatThickness" value=" 1.5 * cm"/>
<comment> Solenoid Yoke Endcap </comment>
<constant name="SolenoidYokeEndcap_thickness" value="0.2 * m"/>
<constant name="SolenoidCoilConductor_rmin" 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"
value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/>
<constant name="SolenoidalFieldRadius"
value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/>
<constant name="SolenoidCoil_length" value="SolenoidCoil_zmax*2.0"/>
<constant name="SolenoidYokeEndcapP_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapN_rmin" value="SolenoidBarrel_rmin"/>
<constant name="SolenoidYokeEndcapP_zmax" value="SolenoidYokeEndcapP_zmin + SolenoidYokeEndcap_thickness"/>
<constant name="SolenoidYokeEndcapN_zmax" value="SolenoidYokeEndcapN_zmin + SolenoidYokeEndcap_thickness"/>
<constant name="SolenoidYokeChamferAngle" value="0.2"/>
</define> </define>
<detectors> <detectors>
......
...@@ -21,7 +21,8 @@ using namespace std; ...@@ -21,7 +21,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;
xml_dim_t dim = x_det.dimensions(); xml_dim_t dim = x_det.dimensions();
int det_id = x_det.id(); int det_id = x_det.id();
...@@ -29,6 +30,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -29,6 +30,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
string det_name = x_det.nameStr(); string det_name = x_det.nameStr();
Material air = description.air(); Material air = description.air();
int numsides = dim.numsides(); int numsides = dim.numsides();
xml::Component pos = x_det.position();
double rmin = dim.rmin(); double rmin = dim.rmin();
double rmax = dim.rmax() * std::cos(M_PI / numsides); double rmax = dim.rmax() * std::cos(M_PI / numsides);
double zmin = dim.zmin(); double zmin = dim.zmin();
...@@ -37,11 +39,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -37,11 +39,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 << "totalThickness = " << totalThickness << "\n";
std::cout << "zmin = " << zmin << "\n"; //std::cout << "zmin = " << zmin << "\n";
std::cout << "rmin = " << rmin << "\n"; //std::cout << "rmin = " << rmin << "\n";
std::cout << "rmax = " << rmax << "\n"; //std::cout << "rmax = " << rmax << "\n";
std::cout << "nlayers = " << std::size(layering.layers()) << "\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;
...@@ -49,11 +51,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -49,11 +51,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 << "l_num = " << l_num << "\n";
std::cout << "xc = " << xc << "\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"; //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);
...@@ -108,20 +110,18 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s ...@@ -108,20 +110,18 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
DetElement endcapAssyDE(det_name, det_id); DetElement endcapAssyDE(det_name, det_id);
Volume motherVol = description.pickMotherVolume(endcapAssyDE); Volume motherVol = description.pickMotherVolume(endcapAssyDE);
if (reflect) { if (reflect) {
pv = assembly.placeVolume(endcapVol, pv = assembly.placeVolume(endcapVol, Transform3D(RotationZYX(M_PI / numsides, M_PI, 0), Position(0, 0, -z_pos)));
Transform3D(RotationZYX(M_PI / numsides, M_PI, 0), Position(0, 0, -z_pos)));
pv.addPhysVolID("barrel", 2); pv.addPhysVolID("barrel", 2);
Ref_t(endcap)->SetName((det_name + "_backward").c_str()); Ref_t(endcap)->SetName((det_name + "_backward").c_str());
endcap.setPlacement(pv); endcap.setPlacement(pv);
} else { } else {
pv = assembly.placeVolume(endcapVol, pv = assembly.placeVolume(endcapVol, Transform3D(RotationZYX(M_PI / numsides, 0, 0), Position(0, 0, z_pos)));
Transform3D(RotationZYX(M_PI / numsides, 0, 0), Position(0, 0, z_pos)));
pv.addPhysVolID("barrel", 1); pv.addPhysVolID("barrel", 1);
Ref_t(endcap)->SetName((det_name + "_forward").c_str()); Ref_t(endcap)->SetName((det_name + "_forward").c_str());
endcap.setPlacement(pv); endcap.setPlacement(pv);
} }
endcapAssyDE.add(endcap); endcapAssyDE.add(endcap);
pv = motherVol.placeVolume(assembly); pv = motherVol.placeVolume(assembly,Position(pos.x(),pos.y(),pos.z()));
pv.addPhysVolID("system", det_id); pv.addPhysVolID("system", det_id);
endcapAssyDE.setPlacement(pv); endcapAssyDE.setPlacement(pv);
return endcapAssyDE; return endcapAssyDE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment