Skip to content
Snippets Groups Projects
Commit 6cc1bfab authored by Sylvester Joosten's avatar Sylvester Joosten
Browse files

Switched forward ECAL to a homogenous approximation

parent c239e93a
No related branches found
No related tags found
No related merge requests found
......@@ -114,7 +114,8 @@ dump_geometry:
## DEBUG
- mkdir -p geo
## disable fibers in SciFi endcap ECAL for better performance
- sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
## not needed, as we have no fibers in the current setup
#- sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
## subsystem views
- |
mv ${DETECTOR_PATH}/compact/display_geoviewer.xml ${DETECTOR_PATH}/compact/display.xml
......@@ -132,6 +133,7 @@ dump_geometry:
- sed -i '/B0_/d' ${DETECTOR_PATH}/athena.xml
- sed -i '/far_forward/d' ${DETECTOR_PATH}/athena.xml
- sed -i '/roman_pots/d' ${DETECTOR_PATH}/athena.xml
- sed -i '/inner_vacuum_FF_magnets/d' ${DETECTOR_PATH}/athena.xml
- dd_web_display --output geo/detector_geo.root ${DETECTOR_PATH}/athena.xml
## print some useful output
- |
......@@ -203,7 +205,8 @@ overlap_check_geant4:full_fast:
## disable fibers in ECAL for normal overlap check
- sed -i '/<fiber/,+6d' ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
## reduce the number of fibers in Hadron EMCal for overlap check
- sed -i 's/radius="EcalEndcapP_FiberRadius"/radius="EcalEndcapP_FiberRadius*10"/' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
## not needed, as we are running with a different setup now
#- sed -i 's/radius="EcalEndcapP_FiberRadius"/radius="EcalEndcapP_FiberRadius*10"/' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
- python scripts/checkOverlaps.py -c ${DETECTOR_PATH}/athena.xml | tee doc/overlap_check_geant4.out
- echo "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l) overlaps..."
- if [[ "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l)" -gt "0" ]] ; then echo "Overlaps exist!" && false ; fi
......
<lccdd>
<define>
<constant name="CrystalEndcap_rmin" value="VertexTrackerBarrel_rmin"/>
<constant name="CrystalEndcap_rmax" value="EcalEndcapN_rmin"/>
<constant name="CrystalBox_x_length" value="20.0*mm"/>
<constant name="CrystalBox_y_length" value="20.0*mm"/>
<constant name="CrystalBox_z_length" value="200.0*mm"/>
<constant name="CrystalBox_offset" value="0.000001*mm"/>
<constant name="CrystalEndcap_x_pos" value="0.0*m"/>
<constant name="CrystalEndcap_y_pos" value="0.0*m"/>
<constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/>
</define>
<limits>
</limits>
<regions>
</regions>
<!-- Common Generic visualization attributes -->
<comment>Common Generic visualization attributes</comment>
<display>
</display>
<detectors>
<comment>
-------------------------------
Backwards Endcap EM Calorimeter
-------------------------------
A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</comment>
<detector id="ECalEndcapN_ID"
name="EcalEndcapN"
type="athena_PolyhedraEndcapCalorimeter2"
reflect="true"
readout="EcalEndcapHits"
vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP">
<position x="0" y="0" z="0"/>
<dimensions
numsides="CaloSides"
zmin="EcalEndcapN_zmin"
rmin="EcalEndcapN_rmin"
rmax="TrackerBarrel_rmax" />
<layer repeat="EcalEndcapNLayer1_NRepeat">
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer2_NRepeat">
<slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapNLayer3_NRepeat">
<slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
<slice material="Air" thickness="EcalAir2Thickness"/>
<slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalCopperThickness"/>
<slice material="Kapton" thickness="EcalKaptonThickness"/>
<slice material="Air" thickness="EcalAir1Thickness"/>
</layer>
</detector>
<comment>
-------------------
Crystal Calorimeter
-------------------
Backward (negative pseudorapidity) angle electron detector
</comment>
<detector
id="CrystalEndcap_ID"
name="ElectronECAL"
type="CrystalCalorimeterEndcap"
readout="CrystalEcalHits"
vis="GreenVis">
<position x="CrystalEndcap_x_pos" y="CrystalEndcap_y_pos" z="CrystalEndcap_z_pos" />
<dimensions rmin="CrystalEndcap_rmin" rmax="CrystalEndcap_rmax" x="CrystalBox_x_length" y="CrystalBox_y_length" z="CrystalBox_z_length" delta="CrystalBox_offset"/>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<!--
<readout name="PlaneTrackerHits">
<segmentation type="CartesianGridXY" grid_size_x="20.0*mm" grid_size_y="20.0*mm" />
<id>system:5,module:4,x:32:-16,y:-16</id>
</readout>
-->
<readout name="CrystalEcalHits">
<segmentation type="CartesianGridXY" grid_size_x="CrystalBox_x_length" grid_size_y="CrystalBox_y_length" />
<id>system:8,sector:4,module:20,x:48:-8,y:-8</id>
</readout>
<readout name="EcalEndcapNHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5 * mm" grid_size_y="3.5 * mm"/>
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
</readouts>
<plugins>
</plugins>
</lccdd>
<lccdd>
<define>
<constant name="EcalEndcapPSiliconThickness" value="9.00 * mm" />
<constant name="EcalEndcapPCopperThickness" value="0.05 * mm" />
<constant name="EcalEndcapPKaptonThickness" value="0.30 * mm" />
<constant name="EcalEndcapPAir1Thickness" value="0.33 * mm" />
<constant name="EcalEndcapPAir2Thickness" value="0.25 * mm" />
<constant name="EcalEndcapPThinTungstenThickness" value="2.50 * mm" />
<constant name="EcalEndcapPThickTungstenThickness" value="5.00 * mm" />
<constant name="EcalEndcapPLayer1_thickness"
value="EcalEndcapPSiliconThickness + EcalEndcapPCopperThickness + EcalEndcapPKaptonThickness + EcalEndcapPAir1Thickness"/>
<constant name="EcalEndcapPLayer2_thickness"
value="EcalEndcapPThinTungstenThickness + EcalEndcapPAir2Thickness + EcalEndcapPSiliconThickness + EcalEndcapPCopperThickness + EcalEndcapPKaptonThickness + EcalEndcapPAir1Thickness"/>
<constant name="EcalEndcapPLayer3_thickness"
value="EcalEndcapPThickTungstenThickness + EcalEndcapPAir2Thickness + EcalEndcapPSiliconThickness + EcalEndcapPCopperThickness + EcalEndcapPKaptonThickness + EcalEndcapPAir1Thickness"/>
<constant name="EcalEndcapPLayers"
value="floor((EcalEndcapP_length - EcalEndcapPLayer1_thickness) / (EcalEndcapPLayer2_thickness + EcalEndcapPLayer3_thickness))"/>
<constant name="EcalEndcapPLayer1_NRepeat" value="1"/>
<constant name="EcalEndcapPLayer2_NRepeat" value="EcalEndcapPLayers"/>
<constant name="EcalEndcapPLayer3_NRepeat" value="EcalEndcapPLayers"/>
</define>
<limits>
</limits>
<regions>
</regions>
<display>
</display>
<detectors>
<documentation level="10">
#### Forward (Positive Z) Endcap EM Calorimeter
A layered EM calorimeter with tungsten and silicon (or scintillator) strips
</documentation>
<detector id="ECalEndcapP_ID"
name="EcalEndcapP"
reflect="false"
type="athena_PolyhedraEndcapCalorimeter2"
readout="EcalEndcapPHits"
vis="EcalEndcapVis"
calorimeterType="EM_ENDCAP" >
<position x="0" y="0" z="-0"/>
<dimensions
numsides="CaloSides"
zmin="EcalEndcapP_zmin"
rmin="EcalEndcapP_rmin"
rmax="EcalEndcapP_rmax " />
<layer repeat="EcalEndcapPLayer1_NRepeat" vis="EcalEndcapLayerVis">
<slice material="Silicon" thickness="EcalEndcapPSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalEndcapPCopperThickness"/>
<slice material="Kapton" thickness="EcalEndcapPKaptonThickness"/>
<slice material="Air" thickness="EcalEndcapPAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapPLayer2_NRepeat" vis="EcalEndcapLayerVis">
<slice material="TungstenDens24" thickness="EcalEndcapPThinTungstenThickness"/>
<slice material="Air" thickness="EcalEndcapPAir2Thickness"/>
<slice material="Silicon" thickness="EcalEndcapPSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalEndcapPCopperThickness"/>
<slice material="Kapton" thickness="EcalEndcapPKaptonThickness"/>
<slice material="Air" thickness="EcalEndcapPAir1Thickness"/>
</layer>
<layer repeat="EcalEndcapPLayer3_NRepeat" vis="EcalEndcapLayerVis">
<slice material="TungstenDens24" thickness="EcalEndcapPThickTungstenThickness"/>
<slice material="Air" thickness="EcalEndcapPAir2Thickness"/>
<slice material="Silicon" thickness="EcalEndcapPSiliconThickness" sensitive="yes" limits="cal_limits"/>
<slice material="Copper" thickness="EcalEndcapPCopperThickness"/>
<slice material="Kapton" thickness="EcalEndcapPKaptonThickness"/>
<slice material="Air" thickness="EcalEndcapPAir1Thickness"/>
</layer>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<readout name="EcalEndcapPHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5 * mm" grid_size_y="3.5 * mm"/>
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
</readouts>
<plugins>
</plugins>
</lccdd>
......@@ -8,12 +8,11 @@
<documentation level="10">
### Ecal configuration
</documentation>
<include ref="ci_ecal_scfi.xml"/>
<!--<include ref="ci_ecal.xml"/>-->
<!--include ref="ecal_forward_scfi.xml"/-->
<include ref="ecal_forward_homogenous.xml"/>
<!--<include ref="ce_ecal.xml"/>-->
<!--<include ref="ce_ecal_crystal_glass.xml"/>-->
<include ref="hybrid_ecal.xml"/>
<!--<include ref="ecal_backward_crystal_glass.xml"/>-->
<include ref="ecal_backward_hybrid.xml"/>
<!-- <include ref="ecal_barrel.xml"/> -->
<!-- <include ref="ecal_barrel_hybrid.xml"/> -->
......
File moved
<lccdd>
<comment>
Simplified homogenous implementation of the forward ScFi calorimeter
</comment>
<define>
<constant name="EcalEndcapP_rmax" value="Solenoid_rmax"/>
<constant name="EcalEndcapP_FiberRadius" value="0.235*cm"/>
<constant name="EcalEndcapP_FiberOffset" value="0.5*mm"/>
<constant name="EcalEndcapP_FiberSpaceX" value="0.265*mm"/>
<constant name="EcalEndcapP_FiberSpaceY" value="0.425*mm"/>
</define>
<limits>
</limits>
<regions>
</regions>
<!-- Common Generic visualization attributes -->
<comment>Common Generic visualization attributes</comment>
<display>
</display>
<detectors>
<comment>
------------------------------------------
Forward (Positive Z) Endcap EM Calorimeter
------------------------------------------
An EM calorimeter with ScFi modules
</comment>
<detector id="ECalEndcapP_ID"
name="EcalEndcapP"
type="ScFiCalorimeter"
vis="EcalEndcapVis"
readout="EcalEndcapPHits">
<position x="0" y="0" z="EcalEndcapP_zmin + EcalEndcapP_length/2."/>
<dimensions rmin="EcalEndcapP_rmin" rmax="EcalEndcapP_rmax" length="EcalEndcapP_length"/>
<module sizex="25*mm" sizey="25*mm" sizez="170*mm" material="AvgTungstenScFi" vis="EcalEndcapBlockVis">
</module>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<readout name="EcalEndcapPHits">
<segmentation type="NoSegmentation"/>
<id>system:8,ring:8,module:20,fiber_x:8,fiber_y:8</id>
</readout>
</readouts>
<plugins>
</plugins>
</lccdd>
File moved
File moved
......@@ -194,6 +194,12 @@
<fraction n="0.044" ref="Ni"/>
<fraction n="0.006" ref="Fe"/>
</material>
<material name="AvgTungstenScFi">
<D value="10.15" unit="g / cm3"/>
<fraction n="0.948" ref="W"/>
<fraction n="0.052*19./40" ref="C"/>
<fraction n="0.052*21./40" ref="H"/>
</material>
<material name="CarbonFiber_25percent">
<D type="density" value="0.375" unit="g / cm3"/>
<fraction n="1.0" ref="CarbonFiber"/>
......
......@@ -146,67 +146,6 @@
<include ref="compact/ecal.xml"/>
<include ref="compact/hcal.xml"/>
<fields>
<field name="B0PF_Magnet" type="MultipoleMagnet">
<position x="B0PF_XPosition" y="0" z="B0PF_CenterPosition"/>
<rotation x="0" y="B0PF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="B0PF_InnerRadius" dz="B0PF_Length*0.5"/>
<coefficient coefficient="B0PF_Bmax" skew="0.0*tesla"/>
<!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
</field>
<field name="B0APF_Magnet" type="MultipoleMagnet">
<position x="B0APF_XPosition" y="0" z="B0APF_CenterPosition"/>
<rotation x="0" y="B0APF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="B0APF_InnerRadius" dz="B0APF_Length*0.5"/>
<coefficient coefficient="B0APF_Bmax" skew="0.0*tesla"/>
<!--<coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> -->
</field>
<field name="Q1APF_Magnet" type="MultipoleMagnet">
<position x="Q1APF_XPosition" y="0" z="Q1APF_CenterPosition"/>
<rotation x="0" y="Q1APF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="Q1APF_InnerRadius" dz="Q1APF_Length*0.5"/>
<coefficient coefficient="Q1APF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="Q1APF_GradientMax" skew="0.0*tesla/cm"/>
</field>
<field name="Q1BPF_Magnet" type="MultipoleMagnet">
<position x="Q1BPF_XPosition" y="0" z="Q1BPF_CenterPosition"/>
<rotation x="0" y="Q1BPF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="Q1BPF_InnerRadius" dz="Q1BPF_Length*0.5"/>
<coefficient coefficient="Q1BPF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="Q1BPF_GradientMax" skew="0.0*tesla/cm"/>
</field>
<field name="Q2PF_Magnet" type="MultipoleMagnet">
<position x="Q2PF_XPosition" y="0" z="Q2PF_CenterPosition"/>
<rotation x="0" y="Q2PF_RotationAngle" z="pi/2.0"/>
<shape type="Tube" rmin="0.0" rmax="Q2PF_InnerRadius" dz="Q2PF_Length*0.5"/>
<coefficient coefficient="Q2PF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="Q2PF_GradientMax" skew="0.0*tesla/cm"/>
</field>
<field name="B1PF_Magnet" type="MultipoleMagnet">
<position x="B1PF_XPosition" y="0" z="B1PF_CenterPosition"/>
<rotation x="0" y="B1PF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="B1PF_InnerRadius" dz="B1PF_Length*0.5"/>
<coefficient coefficient="B1PF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="B1PF_GradientMax" skew="0.0*tesla/cm"/>
</field>
<field name="B1APF_Magnet" type="MultipoleMagnet">
<position x="B1APF_XPosition" y="0" z="B1APF_CenterPosition"/>
<rotation x="0" y="B1APF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="B1APF_InnerRadius" dz="B1APF_Length*0.5"/>
<coefficient coefficient="B1APF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="B1APF_GradientMax" skew="0.0*tesla/cm"/>
</field>
<field name="B2PF_Magnet" type="MultipoleMagnet">
<position x="B2PF_XPosition" y="0" z="B2PF_CenterPosition"/>
<rotation x="0" y="B2PF_RotationAngle" z="0"/>
<shape type="Tube" rmin="0.0" rmax="B2PF_InnerRadius" dz="B2PF_Length*0.5"/>
<coefficient coefficient="B2PF_Bmax" skew="0.0*tesla"/>
<coefficient coefficient="B2PF_GradientMax" skew="0.0*tesla/cm"/>
</field>
</fields>
<comment>
FB elements
-----------
......
......@@ -169,8 +169,12 @@ std::tuple<Volume, Position> build_module(const Detector &desc, const xml::Compo
fiberPV.addPhysVolID("fiber_x", ix + 1).addPhysVolID("fiber_y", iy + 1);
}
}
// if no fibers we make the module itself sensitive
} else {
modVol.setSensitiveDetector(sens);
}
return std::make_tuple(modVol, Position{sx, sy, sz});
}
......
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