diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bba6f93130748bd186cd5a639a6d86b9323a61f1..5b9ffb10e2c54885ab2fdfa4f9d9fb468e6238d6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/compact/ce_ecal.xml b/compact/ce_ecal.xml deleted file mode 100644 index ec38d03b30f432703b5c393876dd2e57ad8443e1..0000000000000000000000000000000000000000 --- a/compact/ce_ecal.xml +++ /dev/null @@ -1,109 +0,0 @@ -<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> diff --git a/compact/ci_ecal.xml b/compact/ci_ecal.xml deleted file mode 100644 index dae29485f80aee87d16048a0537d080c14c307d1..0000000000000000000000000000000000000000 --- a/compact/ci_ecal.xml +++ /dev/null @@ -1,94 +0,0 @@ -<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> diff --git a/compact/ecal.xml b/compact/ecal.xml index 0b743c8854bf7e2dda8286e3d3775597555bb3bb..f6ce08ec84ccb61b0e0c7ebda8eab6bbed766603 100644 --- a/compact/ecal.xml +++ b/compact/ecal.xml @@ -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"/> --> diff --git a/compact/ce_ecal_crystal_glass.xml b/compact/ecal_backward_crystal_glass.xml similarity index 100% rename from compact/ce_ecal_crystal_glass.xml rename to compact/ecal_backward_crystal_glass.xml diff --git a/compact/hybrid_ecal.xml b/compact/ecal_backward_hybrid.xml similarity index 100% rename from compact/hybrid_ecal.xml rename to compact/ecal_backward_hybrid.xml diff --git a/compact/ecal_forward_homogenous.xml b/compact/ecal_forward_homogenous.xml new file mode 100644 index 0000000000000000000000000000000000000000..783fb26e283cf7c9b1783b12bdad8f7b40756cce --- /dev/null +++ b/compact/ecal_forward_homogenous.xml @@ -0,0 +1,58 @@ +<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> + diff --git a/compact/ci_ecal_scfi.xml b/compact/ecal_forward_scfi.xml similarity index 100% rename from compact/ci_ecal_scfi.xml rename to compact/ecal_forward_scfi.xml diff --git a/compact/ci_ecal_shashlik.xml b/compact/ecal_forward_shashlik.xml similarity index 100% rename from compact/ci_ecal_shashlik.xml rename to compact/ecal_forward_shashlik.xml diff --git a/compact/materials.xml b/compact/materials.xml index d6c3e5208d55ab8b0ae79e5891102d5349a72310..4829091dba36c1632c098cf201fb2a74fc5928cd 100644 --- a/compact/materials.xml +++ b/compact/materials.xml @@ -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"/> diff --git a/compact/subsystem_views/calorimeters.xml b/compact/subsystem_views/calorimeters.xml index 49799815aa6fac00e8ea9d0c14390d4150cd12ab..7e52ee1c6686440bbcefdfb253251cb2877d37dc 100644 --- a/compact/subsystem_views/calorimeters.xml +++ b/compact/subsystem_views/calorimeters.xml @@ -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 ----------- diff --git a/src/ScFiCalorimeter_geo.cpp b/src/ScFiCalorimeter_geo.cpp index d16e87cbd842332e27914d45ad9c21c0de320fc1..904a6ae2f1f7984c7e8fcbe8f6aa66b09d0744e6 100644 --- a/src/ScFiCalorimeter_geo.cpp +++ b/src/ScFiCalorimeter_geo.cpp @@ -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}); }