diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 521e9b519646214a6154fc49f8195c60ed6806b2..240188b49a6584f118fdf14b7caf2492b97b9ee5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,53 +1,53 @@ -variables: - # all submodules will be cloned recursively upon start of CI job - GIT_SUBMODULE_STRATEGY: recursive - GIT_SSL_NO_VERIFY: "true" - ATLAS_LOCAL_ROOT_BASE: /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase - -stages: - - build - - test - -########################## -# BUILD stage # -########################## - -build_image: - # description: triggers a build of the project as a Docker image, - # each branch will have an individual Docker image that will be used - # in the following stages of the pipeline for testing the code - image: - name: gitlab-registry.cern.ch/linuxsupport/cc7-base:latest - stage: build - tags: - - k8s-cvmfs - script: - - yum -y install redhat-lsb redhat-lsb-core man uuid-devel libuuid libuuid-devel mesa-libGL-devel libXpm-devel - - mkdir build - - cd build - - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e - - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e - - cmake ../../calypso - - make -j 3 - artifacts: - paths: - - build/ - -test_unittest: - image: - name: gitlab-registry.cern.ch/linuxsupport/cc7-base:latest - stage: test - tags: - - k8s-cvmfs - script: - - yum -y install man git make cmake3 gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel - - cd build - - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e - - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e - - set +e && source `find . -name 'setup.sh'`; set -e - - ctest -j3 - dependencies: - - build_image - artifacts: - paths: - - LastTest.log +variables: + # all submodules will be cloned recursively upon start of CI job + GIT_SUBMODULE_STRATEGY: recursive + GIT_SSL_NO_VERIFY: "true" + ATLAS_LOCAL_ROOT_BASE: /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase + +stages: + - build + - test + +########################## +# BUILD stage # +########################## + +build_image: + # description: triggers a build of the project as a Docker image, + # each branch will have an individual Docker image that will be used + # in the following stages of the pipeline for testing the code + image: + name: gitlab-registry.cern.ch/linuxsupport/cc7-base:latest + stage: build + tags: + - k8s-cvmfs + script: + - yum -y install redhat-lsb redhat-lsb-core man uuid-devel libuuid libuuid-devel mesa-libGL-devel libXpm-devel + - mkdir build + - cd build + - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e + - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e + - cmake ../../calypso + - make -j 3 + artifacts: + paths: + - build/ + +test_unittest: + image: + name: gitlab-registry.cern.ch/linuxsupport/cc7-base:latest + stage: test + tags: + - k8s-cvmfs + script: + - yum -y install man which git make cmake3 gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel + - cd build + - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e + - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e + - set +e && source `find . -name 'setup.sh'`; set -e + - ctest -j3 + dependencies: + - build_image + artifacts: + paths: + - LastTest.log diff --git a/Calorimeter/CaloDetDescr/CaloIdDictFiles/data/IdDictCalorimeter.xml b/Calorimeter/CaloDetDescr/CaloIdDictFiles/data/IdDictCalorimeter.xml index 006fabfa2116e1390b3c2f612e3b378e45f5562d..37bed2379f814331055b953646980bbd9e3b444e 100644 --- a/Calorimeter/CaloDetDescr/CaloIdDictFiles/data/IdDictCalorimeter.xml +++ b/Calorimeter/CaloDetDescr/CaloIdDictFiles/data/IdDictCalorimeter.xml @@ -21,6 +21,6 @@ <range field="part" value="Ecal" /> <range field="row" values="Bottom Top" wraparound="FALSE" /> <range field="module" values="Starboard Port" wraparound="FALSE" /> - <range field="pmt" minvalue="0" maxvalue="0" /> + <range field="pmt" minvalue="0" maxvalue="1" /> </region> -</IdDictionary> \ No newline at end of file +</IdDictionary> diff --git a/Calorimeter/CaloDetDescr/EcalGeoModel/CMakeLists.txt b/Calorimeter/CaloDetDescr/EcalGeoModel/CMakeLists.txt index 8eceb3903e26d74f866b55511310b4abc8b84854..80e36dabc05dacb19253b6c75c4ac4ec6515d516 100644 --- a/Calorimeter/CaloDetDescr/EcalGeoModel/CMakeLists.txt +++ b/Calorimeter/CaloDetDescr/EcalGeoModel/CMakeLists.txt @@ -28,22 +28,33 @@ atlas_add_test( EcalGMConfig_test PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} PROPERTIES TIMEOUT 300 ) -# Decide which ecal gdml file to use based on option +# Decide which ecal gdml file to use based on option; tyvek density reduced in EcalTyvek04.gdml (June 2023) if (ECAL_GEO_TYVEK) add_custom_command (OUTPUT ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml COMMAND mkdir -p ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/ - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalTyvek.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml ) + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalTyvek04.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml ) + add_custom_command (OUTPUT ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml + COMMAND mkdir -p ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/ + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalTyvek04.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml ) add_custom_target (make_ecal_gdml ALL DEPENDS ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml) + add_custom_target (make_ecal_gdml04 ALL DEPENDS ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml) get_filename_component( _realpath ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalTyvek.gdml REALPATH ) + get_filename_component( _realpath04 ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalTyvek04.gdml REALPATH ) else() add_custom_command (OUTPUT ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml COMMAND mkdir -p ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/ - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalNoTyvek.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml ) + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalNoTyvek.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml ) + add_custom_command (OUTPUT ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml + COMMAND mkdir -p ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/ + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalNoTyvek.gdml ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml ) add_custom_target (make_ecal_gdml ALL DEPENDS ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal.gdml) + add_custom_target (make_ecal_gdml04 ALL DEPENDS ${CMAKE_XML_OUTPUT_DIRECTORY}/EcalGeoModel/Ecal04.gdml) get_filename_component( _realpath ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalNoTyvek.gdml REALPATH ) + get_filename_component( _realpath04 ${CMAKE_CURRENT_SOURCE_DIR}/data/EcalNoTyvek.gdml REALPATH ) endif() install(FILES ${_realpath} DESTINATION ${CMAKE_INSTALL_PREFIX}/XML/EcalGeoModel RENAME Ecal.gdml) +install(FILES ${_realpath04} DESTINATION ${CMAKE_INSTALL_PREFIX}/XML/EcalGeoModel RENAME Ecal04.gdml) unset( _realpath ) # Install files from the package: diff --git a/Calorimeter/CaloDetDescr/EcalGeoModel/data/EcalTyvek04.gdml b/Calorimeter/CaloDetDescr/EcalGeoModel/data/EcalTyvek04.gdml new file mode 100644 index 0000000000000000000000000000000000000000..eb51f82acc186db1f1aff23cc85f00a60020bdff --- /dev/null +++ b/Calorimeter/CaloDetDescr/EcalGeoModel/data/EcalTyvek04.gdml @@ -0,0 +1,3546 @@ +<?xml version="1.0"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + <define> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_FiberShieldLeft0x8a25340in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos" x="0" y="0" z="-40.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL0x8a28320in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="0" y="-23.280000000000001" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL_10x8a27590in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="0" y="23.280000000000001" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VAirSlotsL0x8a27820in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="11.090000000000002" y="0" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L0x8a29050in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="0" y="-23.280000000000001" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L_10x8a29110in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="0" y="23.280000000000001" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets1L0x8a293f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="11.090000000000002" y="0" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L0x8a296b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.1000000000000001" y="-21.780000000000001" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L_10x8a29770in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.1000000000000001" y="21.780000000000001" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets2L0x8a29a60in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="9.5900000000000016" y="0" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L0x8a2a0a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.5" y="0" z="40.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L_10x8a2a160in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.5" y="0" z="20.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L0x8a2a760in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.1000000000000001" y="0" z="6.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_10x8a2a820in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.1000000000000001" y="0" z="-14.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_20x8a2a8e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos" x="-1.1000000000000001" y="0" z="-35.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_InnSupportFrameLeft0x8a2a9d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos" x="-182.85000000000002" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleFrontCover0x8a2b9a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos" x="0" y="0" z="-33.350000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleBackCover0x8a2c990in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos" x="0" y="0" z="14.450000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOut_InnerReadOutBox0x8a2d720in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOutpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleReadOut0x8a2d780in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos" x="0" y="0" z="26.200000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontSteelMatrix0x8a2e7b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackSteelMatrix0x8a2e860in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontPlastic0x8a2f500in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackPlastic0x8a2f560in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber0x8a30470in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-1.5150000000000001" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_10x8a30520in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-0.50499999999999989" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_20x8a305d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="0.50500000000000012" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_30x8a306e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="1.5150000000000001" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_40x8a307c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-1.5150000000000001" y="0.50499999999999989" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_50x8a308f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-0.50499999999999989" y="0.50499999999999989" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_60x8a309a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="0.50500000000000012" y="0.50499999999999989" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_70x8a30a80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="1.5150000000000001" y="0.50499999999999989" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_80x8a30b60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-1.5150000000000001" y="-0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_90x8a30cd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-0.50499999999999989" y="-0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_100x8a30d60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="0.50500000000000012" y="-0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_110x8a30e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="1.5150000000000001" y="-0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_120x8a30f20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-1.5150000000000001" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_130x8a31000in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="-0.50499999999999989" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_140x8a310e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="0.50500000000000012" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_150x8a311c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos" x="1.5150000000000001" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells0x8a312a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-20.276" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_10x8a313d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-19.652000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_20x8a31480in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-19.028000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_30x8a31560in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-18.404" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_40x8a31640in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-17.780000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_50x8a317b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-17.156000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_60x8a31840in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-16.532" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_70x8a31920in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-15.908000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_80x8a31a00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-15.284000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_90x8a31ae0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-14.66" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_100x8a31bc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-14.036000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_110x8a31ca0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-13.412000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_120x8a31d80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-12.788" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_130x8a31720in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-12.164000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_140x8a31fc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-11.540000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_150x8a320a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-10.916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_160x8a32180in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-10.292000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_170x8a32260in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-9.668000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_180x8a32340in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-9.0440000000000023" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_190x8a32420in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-8.4200000000000017" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_200x8a32500in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-7.7960000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_210x8a325e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-7.1720000000000033" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_220x8a326c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-6.5480000000000018" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_230x8a327a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-5.9240000000000013" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_240x8a32880in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-5.3000000000000007" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_250x8a32960in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-4.6759999999999993" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_260x8a32a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-4.0519999999999987" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_270x8a32b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-3.4279999999999973" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_280x8a32c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-2.8039999999999963" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_290x8a31e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-2.1799999999999953" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_300x8a32ef0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-1.5559999999999952" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_310x8a32fa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-0.93199999999999372" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_320x8a33080in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="-0.30799999999999272" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_330x8a33160in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="0.31600000000000822" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_340x8a33240in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="0.94000000000000916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_350x8a33320in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="1.56400000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_360x8a33400in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="2.1880000000000108" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_370x8a334e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="2.8120000000000118" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_380x8a335c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="3.4360000000000128" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_390x8a336a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="4.0600000000000147" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_400x8a33780in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="4.6840000000000153" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_410x8a33860in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="5.3080000000000149" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_420x8a33940in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="5.9320000000000164" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_430x8a33a20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="6.5560000000000178" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_440x8a33b00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="7.1800000000000184" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_450x8a33be0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="7.8040000000000198" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_460x8a33cc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="8.4280000000000204" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_470x8a33da0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="9.0520000000000209" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_480x8a33e80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="9.6760000000000232" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_490x8a33f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="10.30000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_500x8a34040in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="10.924000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_510x8a34120in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="11.548000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_520x8a34200in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="12.172000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_530x8a342e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="12.796000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_540x8a343c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="13.42000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_550x8a344a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="14.044000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_560x8a34580in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="14.668000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_570x8a34660in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="15.29200000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_580x8a34740in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="15.916000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_590x8a34820in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="16.540000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_600x8a34900in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="17.16400000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_610x8a303f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="17.788000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_620x8a32d60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="18.412000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_630x8a32e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="19.03600000000004" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_640x8a34df0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="19.660000000000039" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_650x8a34ed0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos" x="0" y="0" z="20.284000000000042" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix0xed86e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="-4.04" y="4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_10xed86ec0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="0" y="4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_20xed87f90in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="4.04" y="4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_30xed880b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="-4.04" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_40xed881a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_50xed88960in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="4.04" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_60xed88a20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="-4.04" y="-4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_70xed88b10in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="0" y="-4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_80xed88c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos" x="4.04" y="-4.04" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleStack0xed86f20in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos" x="0" y="0" z="-10.600000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows10xed88e90in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-42.664999999999999" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_10xeda1ca0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_20xeda1d90in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_30xeda1eb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-6.0949999999999989" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_40xeda1fa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="6.0949999999999989" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_50xeda20e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_60xeda21a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="30.474999999999991" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_70xeda2290in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="42.664999999999992" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_80xeda2380in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-42.664999999999999" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_90xeda2500in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_100xeda25f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_110xeda26e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="-6.0949999999999989" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_120xeda27d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="6.0949999999999989" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_130xeda28c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_140xeda29b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="30.474999999999991" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_150xeda2aa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos" x="42.664999999999992" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left0xeda2c20in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="0" y="60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left_10xeda2d10in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="0" y="36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows20xeda2f30in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_10xeda3020in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_20xeda3110in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-6.0949999999999989" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_30xeda3230in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="6.095000000000006" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_40xeda3320in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_50xeda3460in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_60xeda3520in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_70xeda3610in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_80xeda3700in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="-6.0949999999999989" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_90xeda37f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="6.095000000000006" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_100xeda38e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_110xeda39d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos" x="30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows0xeda3b50in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="12.190000000000001" y="12.190000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows_10xeda3c70in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="12.190000000000001" y="-12.190000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left0xeda3d60in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="0" y="-60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left_10xeda3e50in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos" x="0" y="-36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAInner0xed88e30in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos" x="-146.28" y="0" z="0.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleFrontCover0xeda55f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos" x="0" y="0" z="-34.100000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleBackCover0xeda58d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos" x="0" y="0" z="13.950000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix0xeda5ea0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos" x="-3.0300000000000002" y="3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_10xeda5f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos" x="3.0300000000000002" y="3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_20xeda6070in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos" x="-3.0300000000000002" y="-3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_30xeda6190in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos" x="3.0300000000000002" y="-3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleReadOut0xeda5e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos" x="0" y="0" z="26.450000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontSteelMatrix0xeda6820in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackSteelMatrix0xeda68d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontPlastic0xeda6bf0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackPlastic0xeda6c80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber0xeda7000in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_10xeda70b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_20xeda7190in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_30xeda72a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_40xeda7380in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_50xeda74b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_60xeda7560in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_70xeda7640in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_80xeda7720in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_90xeda7890in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_100xeda7920in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_110xeda7a00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_120xeda7ae0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_130xeda7bc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_140xeda7ca0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_150xeda7d80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_160xeda7e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_170xeda7800in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="0.50500000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_180xeda80a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_190xeda8180in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_200xeda8260in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_210xeda8340in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_220xeda8420in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_230xeda8500in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="-0.50499999999999978" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_240xeda85e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_250xeda86c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_260xeda87a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_270xeda8880in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_280xeda8960in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_290xeda8a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="-1.5150000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_300xeda8b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-2.5250000000000004" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_310xeda8c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-1.5150000000000001" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_320xeda8ce0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="-0.50500000000000012" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_330xeda7f40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="0.50499999999999978" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_340xeda8fd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="1.5150000000000001" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_350xeda9080in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos" x="2.5250000000000004" y="-2.5250000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells0xeda9160in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-20.276" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_10xeda9290in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-19.652000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_20xeda9340in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-19.028000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_30xeda9420in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-18.404" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_40xeda9500in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-17.780000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_50xeda9670in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-17.156000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_60xeda9700in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-16.532" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_70xeda97e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-15.908000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_80xeda98c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-15.284000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_90xeda99a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-14.66" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_100xeda9a80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-14.036000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_110xeda9b60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-13.412000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_120xeda9c40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-12.788" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_130xeda95e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-12.164000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_140xeda9e80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-11.540000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_150xeda9f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-10.916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_160xedaa040in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-10.292000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_170xedaa120in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-9.668000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_180xedaa200in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-9.0440000000000023" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_190xedaa2e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-8.4200000000000017" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_200xedaa3c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-7.7960000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_210xedaa4a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-7.1720000000000033" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_220xedaa580in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-6.5480000000000018" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_230xedaa660in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-5.9240000000000013" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_240xedaa740in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-5.3000000000000007" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_250xedaa820in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-4.6759999999999993" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_260xedaa900in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-4.0519999999999987" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_270xedaa9e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-3.4279999999999973" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_280xedaaac0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-2.8039999999999963" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_290xeda9d20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-2.1799999999999953" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_300xedaadb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-1.5559999999999952" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_310xedaae60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-0.93199999999999372" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_320xedaaf40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="-0.30799999999999272" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_330xedab020in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="0.31600000000000822" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_340xedab100in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="0.94000000000000916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_350xedab1e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="1.56400000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_360xedab2c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="2.1880000000000108" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_370xedab3a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="2.8120000000000118" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_380xedab480in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="3.4360000000000128" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_390xedab560in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="4.0600000000000147" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_400xedab640in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="4.6840000000000153" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_410xedab720in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="5.3080000000000149" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_420xedab800in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="5.9320000000000164" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_430xedab8e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="6.5560000000000178" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_440xedab9c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="7.1800000000000184" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_450xedabaa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="7.8040000000000198" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_460xedabb80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="8.4280000000000204" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_470xedabc60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="9.0520000000000209" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_480xedabd40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="9.6760000000000232" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_490xedabe20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="10.30000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_500xedabf00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="10.924000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_510xedabfe0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="11.548000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_520xedac0c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="12.172000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_530xedac1a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="12.796000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_540xedac280in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="13.42000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_550xedac360in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="14.044000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_560xedac440in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="14.668000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_570xedac520in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="15.29200000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_580xedac600in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="15.916000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_590xedac6e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="16.540000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_600xedac7c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="17.16400000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_610xeda4d00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="17.788000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_620xedaaba0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="18.412000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_630xedaac80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="19.03600000000004" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_640xedaccb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="19.660000000000039" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_650xedacd40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos" x="0" y="0" z="20.284000000000042" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix0xedaceb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos" x="-3.0300000000000002" y="3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_10xedacfa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos" x="3.0300000000000002" y="3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_20xedad090in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos" x="-3.0300000000000002" y="-3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_30xedad1b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos" x="3.0300000000000002" y="-3.0300000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleStack0xedacf40in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos" x="0" y="0" z="-11.350000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows0xedad400in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-42.664999999999999" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_10xedad4f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_20xedad5e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_30xedad700in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-6.0949999999999989" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_40xedad7f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="6.0949999999999989" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_50xedad930in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_60xedad9f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="30.474999999999991" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_70xedadae0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="42.664999999999992" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_80xedadbd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-42.664999999999999" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_90xedadd50in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_100xedade40in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_110xedadf30in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="-6.0949999999999989" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_120xedae020in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="6.0949999999999989" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_130xedae110in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_140xedae200in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="30.474999999999991" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_150xedae2f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos" x="42.664999999999992" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left0xedae470in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="-48.760000000000005" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left_10xedae560in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="-48.760000000000005" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows0xedae650in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_10xedae770in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_20xedae860in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="60.950000000000017" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_30xedae950in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_40xedaea10in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="12.190000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_50xedaeb00in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="-12.189999999999991" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_60xedaebf0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="-36.569999999999986" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_70xedaed70in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="-60.949999999999982" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_80xedaee60in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="-85.329999999999984" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_90xedaef50in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="48.760000000000005" y="-109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left0xedaf040in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="-48.760000000000005" y="-109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left_10xedaf130in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos" x="-48.760000000000005" y="-85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAMiddle0xedad3a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos" x="-97.52000000000001" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleFrontCover0xedaff80in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos" x="0" y="0" z="-34.100000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleBackCover0xedb0ad0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos" x="0" y="0" z="13.950000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOut_OuterReadOutTube0xedb1090in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOutpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleReadOut0xedb10f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos" x="0" y="0" z="26.450000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontSteelMatrix0xedb1780in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackSteelMatrix0xedb1830in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="21.550000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontPlastic0xedb1b50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackPlastic0xedb1be0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="21.150000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber0xedb1f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_10xedb2010in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_20xedb20f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_30xedb2200in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_40xedb22e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_50xedb2410in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_60xedb24c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_70xedb25a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="5.3025000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_80xedb2680in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_90xedb27f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_100xedb2880in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_110xedb2960in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_120xedb2a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_130xedb2b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_140xedb2c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_150xedb2ce0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="3.7875000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_160xedb2dc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_170xedb2760in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_180xedb3000in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_190xedb30e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_200xedb31c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_210xedb32a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_220xedb3380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_230xedb3460in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_240xedb3540in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_250xedb3620in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_260xedb3700in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_270xedb37e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_280x8a6e670in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_290x8a6e720in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_300x8a6e800in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_310x8a6e8e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="0.75749999999999962" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_320x8a6e9c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_330xedb2ea0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_340x8a6ecb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_350x8a6ed60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_360x8a6ee40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_370x8a6ef20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_380x8a6f000in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_390x8a6f0e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="-0.75750000000000028" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_400x8a6f1c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_410x8a6f2a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_420x8a6f380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_430x8a6f460in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_440x8a6f540in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_450x8a6f620in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_460x8a6f700in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_470x8a6f7e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="-2.2725000000000004" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_480x8a6f8c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_490x8a6f9a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_500x8a6fa80in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_510x8a6fb60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_520x8a6fc40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_530x8a6fd20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_540x8a6fe00in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_550x8a6fee0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="-3.787500000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_560x8a6ffc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-5.3025000000000002" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_570x8a700a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-3.7875000000000001" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_580x8a70180in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-2.2725000000000004" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_590x8a70260in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="-0.75749999999999962" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_600x8a70340in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="0.75750000000000028" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_610x8a70420in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="2.2725000000000004" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_620x8a70500in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="3.787500000000001" y="-5.302500000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_630x8a705e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos" x="5.302500000000002" y="-5.302500000000002" z="0" unit="cm"/> + <!-- CBG: Position of tyvek within lead plates--> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper_OuterPb_Pos" x="0" y="0" z="0.012" unit="cm"/> + <!-- CBG: Position of lead plates--> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells0x8a70730in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-20.276" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_10x8a70860in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-19.652000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_20x8a70910in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-19.028000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_30x8a709f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-18.404" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_40x8a70ad0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-17.780000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_50x8a70c40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-17.156000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_60x8a70cd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-16.532" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_70x8a70db0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-15.908000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_80x8a70e90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-15.284000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_90x8a70f70in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-14.66" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_100x8a71050in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-14.036000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_110x8a71130in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-13.412000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_120x8a71210in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-12.788" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_130x8a70bb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-12.164000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_140x8a71450in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-11.540000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_150x8a71530in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-10.916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_160x8a71610in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-10.292000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_170x8a716f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-9.668000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_180x8a717d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-9.0440000000000023" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_190x8a718b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-8.4200000000000017" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_200x8a71990in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-7.7960000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_210x8a71a70in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-7.1720000000000033" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_220x8a71b50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-6.5480000000000018" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_230x8a71c30in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-5.9240000000000013" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_240x8a71d10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-5.3000000000000007" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_250x8a71df0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-4.6759999999999993" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_260x8a71ed0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-4.0519999999999987" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_270x8a71fb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-3.4279999999999973" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_280x8a72090in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-2.8039999999999963" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_290x8a712f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-2.1799999999999953" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_300x8a72380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-1.5559999999999952" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_310x8a72430in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-0.93199999999999372" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_320x8a72510in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="-0.30799999999999272" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_330x8a725f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="0.31600000000000822" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_340x8a726d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="0.94000000000000916" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_350x8a727b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="1.56400000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_360x8a72890in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="2.1880000000000108" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_370x8a72970in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="2.8120000000000118" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_380x8a72a50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="3.4360000000000128" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_390x8a72b30in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="4.0600000000000147" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_400x8a72c10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="4.6840000000000153" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_410x8a72cf0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="5.3080000000000149" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_420x8a72dd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="5.9320000000000164" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_430x8a72eb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="6.5560000000000178" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_440x8a72f90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="7.1800000000000184" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_450x8a73070in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="7.8040000000000198" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_460x8a73150in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="8.4280000000000204" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_470x8a73230in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="9.0520000000000209" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_480x8a73310in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="9.6760000000000232" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_490x8a733f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="10.30000000000002" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_500x8a734d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="10.924000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_510x8a735b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="11.548000000000021" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_520x8a73690in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="12.172000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_530x8a73770in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="12.796000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_540x8a73850in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="13.42000000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_550x8a73930in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="14.044000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_560x8a73a10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="14.668000000000029" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_570x8a73af0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="15.29200000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_580x8a73bd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="15.916000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_590x8a73cb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="16.540000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_600x8a73d90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="17.16400000000003" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_610xedb1ee0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="17.788000000000032" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_620x8a721f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="18.412000000000031" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_630x8a722d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="19.03600000000004" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_640x8a74280in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="19.660000000000039" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_650x8a74360in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos" x="0" y="0" z="20.284000000000042" unit="cm"/> + + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStack_Outer_Cell0x8a74440in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStackpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleStack0x8a74520in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos" x="0" y="0" z="-11.350000000000001" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows0x8a746e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-91.425000000000011" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_10x8a747d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-79.235000000000014" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_20x8a748c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-67.045000000000002" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_30x8a749e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-54.854999999999997" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_40x8a74ad0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-42.664999999999999" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_50x8a74c10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_60x8a74cd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-18.285" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_70x8a74dc0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-6.095000000000006" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_80x8a74eb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="6.0949999999999935" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_90x8a75030in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="18.284999999999993" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_100x8a75120in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="30.475000000000001" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_110x8a75210in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="42.665000000000013" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_120x8a75300in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="54.855000000000018" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_130x8a753f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="67.04500000000003" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_140x8a754e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="79.235000000000042" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_150x8a755d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="91.425000000000054" y="6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_160x8a756c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-91.425000000000011" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_170x8a74fa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-79.235000000000014" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_180x8a75920in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-67.045000000000002" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_190x8a75a10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-54.854999999999997" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_200x8a75b00in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-42.664999999999999" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_210x8a75bf0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_220x8a75ce0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-18.285" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_230x8a75dd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="-6.095000000000006" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_240x8a75ec0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="6.0949999999999935" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_250x8a75fb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="18.284999999999993" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_260x8a760a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="30.475000000000001" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_270x8a76190in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="42.665000000000013" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_280x8a76280in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="54.855000000000018" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_290x8a76370in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="67.04500000000003" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_300x8a76460in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="79.235000000000042" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_310x8a76550in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos" x="91.425000000000054" y="-6.0950000000000006" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left0x8a766d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_10x8a767c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_20x8a768b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_30x8a769d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_40x8a76ac0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_50x8a76bb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_60x8a76c70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_70x8a76d60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows0x8a76e50in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_10x8a76fd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_20x8a770c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_30x8a771b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_40x8a772a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_50x8a77390in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_60x8a77480in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_70x8a77570in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_80x8a77660in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_90x8a76640in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_100x8a778c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_110x8a779b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="36.569999999999986" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_120x8a77aa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="12.18999999999996" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_130x8a77b90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-12.190000000000051" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_140x8a77c80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-36.570000000000071" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_150x8a77d70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-60.950000000000095" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_160x8a77e60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-85.330000000000112" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_170x8a77f50in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-109.71000000000011" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_180x8a78040in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-134.09000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_190x8a78130in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-158.47000000000023" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_200x8a78220in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-182.85000000000022" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_210x8a78310in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-207.23000000000022" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_220x8a78400in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-231.61000000000024" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_230x8a784f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-255.99000000000021" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_240x8a785e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-280.37000000000029" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_250x8a77750in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="97.52000000000001" y="-304.75000000000034" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left0x8a788e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_10x8a789d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_20x8a78ac0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_30x8a78bb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_40x8a78ca0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_50x8a78d90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_60x8a78e80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_70x8a78f70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos" x="-97.52000000000001" y="-134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAOuter0x8a74680in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalA0x8a76f70in_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecalpos" x="195.04000000000002" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_FiberShieldRight0x8a7a5c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos" x="0" y="0" z="-40.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR0x8a7b680in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="0" y="-23.280000000000001" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR_10x8a7b740in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="0" y="23.280000000000001" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VAirSlotsR0x8a7b800in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="-11.090000000000002" y="0" z="29.5" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R0x8a7b920in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="0" y="-23.280000000000001" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R_10x8a7ba10in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="0" y="23.280000000000001" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets1R0x8a7bb90in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="-11.090000000000002" y="0" z="-11.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R0x8a7bc50in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.1000000000000001" y="-21.780000000000001" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R_10x8a7bd40in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.1000000000000001" y="21.780000000000001" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets2R0x8a7be30in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="-9.5900000000000016" y="0" z="24.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R0x8a7c320in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.5" y="0" z="40.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R_10x8a7c580in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.5" y="0" z="20.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R0x8a7c9b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.1000000000000001" y="0" z="6.25" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_10x8a7cc10in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.1000000000000001" y="0" z="-14.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_20x8a7ccd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos" x="1.1000000000000001" y="0" z="-35.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_InnSupportFrameRight0x8a7cdc0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos" x="182.85000000000002" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right0x8a7d2c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="0" y="60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right_10x8a7d380in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="0" y="36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows0x8a7d470in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="-12.190000000000001" y="12.190000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows_10x8a7d590in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="-12.190000000000001" y="-12.190000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right0x8a7d680in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="0" y="-60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right_10x8a7d800in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos" x="0" y="-36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCInner0x8a7d260in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos" x="146.28" y="0" z="0.75" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right0x8a7de80in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="48.760000000000005" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right_10x8a7df40in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="48.760000000000005" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows0x8a7e030in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_10x8a7e150in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_20x8a7e240in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="60.950000000000017" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_30x8a7e3c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="36.57" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_40x8a7e480in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="12.190000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_50x8a7e570in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="-12.189999999999991" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_60x8a7e660in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="-36.569999999999986" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_70x8a7e7e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="-60.949999999999982" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_80x8a7e8d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="-85.329999999999984" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_90x8a7e9c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="-48.760000000000005" y="-109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right0x8a7eab0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="48.760000000000005" y="-109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right_10x8a7de20in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos" x="48.760000000000005" y="-85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCMiddle0x8a7ecb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos" x="97.52000000000001" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right0x8a7f1d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_10x8a7f290in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_20x8a7f380in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_30x8a7f4a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_40x8a7f590in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_50x8a7f710in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_60x8a7f7d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_70x8a7f8c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows0x8a7f9b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_10x8a7fb30in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_20x8a7fc20in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_30x8a7fd10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_40x8a7fe00in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_50x8a7fef0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_60x8a7ffe0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_70x8a800d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_80x8a801c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="109.70999999999999" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_90x8a7f680in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="85.330000000000027" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_100x8a80420in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="60.950000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_110x8a80510in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="36.569999999999986" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_120x8a80600in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="12.18999999999996" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_130x8a806f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-12.190000000000051" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_140x8a807e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-36.570000000000071" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_150x8a808d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-60.950000000000095" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_160x8a809c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-85.330000000000112" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_170x8a80ab0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-109.71000000000011" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_180x8a80ba0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-134.09000000000012" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_190x8a80c90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-158.47000000000023" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_200x8a80d80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-182.85000000000022" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_210x8a80e70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-207.23000000000022" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_220x8a80f60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-231.61000000000024" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_230x8a81050in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-255.99000000000021" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_240x8a81140in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-280.37000000000029" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_250x8a802b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="-97.52000000000001" y="-304.75000000000034" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right0x8a81440in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-304.75" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_10x8a81530in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-280.37" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_20x8a81620in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-255.99000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_30x8a81710in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-231.61000000000001" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_40x8a81800in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-207.23000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_50x8a818f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-182.85000000000002" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_60x8a819e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-158.47000000000003" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_70x8a81ad0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos" x="97.52000000000001" y="-134.09" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCOuter0x8a7f170in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos" x="0" y="0" z="0" unit="cm"/> + <position name="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalC0x8a81c40in_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecalpos" x="-195.04000000000002" y="0" z="0" unit="cm"/> + </define> + <materials> + <element name="NITROGEN_elm" formula="N" Z="7"> + <atom unit="g/mole" value="14.006740000000001"/> + </element> + <element name="OXYGEN_elm" formula="O" Z="8"> + <atom unit="g/mole" value="15.9994"/> + </element> + <material name="_dd_Materials_Air"> + <D unit="g/cm3" value="0.001204999365978422"/> + <fraction n="0.69999998807907104" ref="NITROGEN_elm"/> + <fraction n="0.30000001192092896" ref="OXYGEN_elm"/> + </material> + <element name="ALUMINIUM_elm" formula="AL" Z="13"> + <atom unit="g/mole" value="26.981538"/> + </element> + <material name="_dd_Materials_Ecal_EcalDrilledAluminium"> + <D unit="g/cm3" value="1.350599289369673"/> + <fraction n="0.9995499849319458" ref="ALUMINIUM_elm"/> + <fraction n="0.00031500001205131412" ref="NITROGEN_elm"/> + <fraction n="0.00013499999477062374" ref="OXYGEN_elm"/> + </material> + <element name="CARBON_elm" formula="C" Z="6"> + <atom unit="g/mole" value="12.0107"/> + </element> + <element name="IRON_elm" formula="FE" Z="26"> + <atom unit="g/mole" value="55.844999999999999"/> + </element> + <material name="_dd_Materials_Ecal_EcalSteel"> + <D unit="g/cm3" value="7.8699958591287782"/> + <fraction n="0.029999999329447746" ref="CARBON_elm"/> + <fraction n="0.97000002861022949" ref="IRON_elm"/> + </material> + <element name="LEAD_elm" formula="PB" Z="82"> + <atom unit="g/mole" value="207.19999999999999"/> + </element> + <material name="_dd_Materials_Ecal_EcalPb"> + <D unit="g/cm3" value="11.3499940280955"/> + <fraction n="1" ref="LEAD_elm"/> + </material> + <!-- CBG: Add in Tyvek paper --> + <!-- density changed from 2.265 to 0.38 (June 2023)--> + <material name="_dd_Materials_Ecal_EcalPaper"> + <D unit="g/cm3" value="0.38"/> + <fraction n="1" ref="CARBON_elm"/> + </material> + <element name="HYDROGEN_elm" formula="H" Z="1"> + <atom unit="g/mole" value="1.0079400000000001"/> + </element> + <material name="_dd_Materials_Ecal_EcalPlasticInnFC"> + <D unit="g/cm3" value="0.28699984899237091"/> + <fraction n="0.91962671279907227" ref="CARBON_elm"/> + <fraction n="0.077173300087451935" ref="HYDROGEN_elm"/> + <fraction n="0.0022400000598281622" ref="NITROGEN_elm"/> + <fraction n="0.00095999997574836016" ref="OXYGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalPlasticBC"> + <D unit="g/cm3" value="0.1099999421225115"/> + <fraction n="0.92165637016296387" ref="CARBON_elm"/> + <fraction n="0.07734362781047821" ref="HYDROGEN_elm"/> + <fraction n="0.000699999975040555" ref="NITROGEN_elm"/> + <fraction n="0.00030000001424923539" ref="OXYGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalPlastic"> + <D unit="g/cm3" value="1.0319994570039259"/> + <fraction n="0.92257893085479736" ref="CARBON_elm"/> + <fraction n="0.077421046793460846" ref="HYDROGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalFiber"> + <D unit="g/cm3" value="1.0319994570039259"/> + <fraction n="0.92257893085479736" ref="CARBON_elm"/> + <fraction n="0.077421046793460846" ref="HYDROGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalSc"> + <D unit="g/cm3" value="1.0319994570039259"/> + <fraction n="0.92257893085479736" ref="CARBON_elm"/> + <fraction n="0.077421046793460846" ref="HYDROGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalPlasticMidFC"> + <D unit="g/cm3" value="0.25399986635561739"/> + <fraction n="0.91925764083862305" ref="CARBON_elm"/> + <fraction n="0.077142335474491119" ref="HYDROGEN_elm"/> + <fraction n="0.0025200000964105129" ref="NITROGEN_elm"/> + <fraction n="0.0010799999581649899" ref="OXYGEN_elm"/> + </material> + <material name="_dd_Materials_Ecal_EcalPlasticOutFC"> + <D unit="g/cm3" value="0.23499987635263819"/> + <fraction n="0.9188886284828186" ref="CARBON_elm"/> + <fraction n="0.077111363410949707" ref="HYDROGEN_elm"/> + <fraction n="0.00279999990016222" ref="NITROGEN_elm"/> + <fraction n="0.0012000000569969416" ref="OXYGEN_elm"/> + </material> + </materials> + <solids> + <box name="Ecal_Box" x="1580.1600000000001" y="638.88000000000011" z="83" lunit="cm"/> + <polycone name="EcalPipeHole" startphi="0" deltaphi="360" aunit="deg" lunit="cm"> + <zplane z="-42.25" rmin="0" rmax="15.602500000000001"/> + <zplane z="6.7610000000000019" rmin="0" rmax="16.092500000000001"/> + <zplane z="9.0610000000000017" rmin="0" rmax="16.199999999999999"/> + <zplane z="9.1110000000000024" rmin="0" rmax="19.100000000000001"/> + <zplane z="30.761000000000003" rmin="0" rmax="20.600000000000001"/> + <zplane z="42.25" rmin="0" rmax="20.600000000000001"/> + </polycone> + <subtraction name="Ecal_Total_shape_0x556245e66280"> + <first ref="Ecal_Box"/> + <second ref="EcalPipeHole"/> + <position name="Ecal_Total_shape_0x556245e66280EcalPipeHolepos" x="0" y="0.019000000000000003" z="0" unit="cm"/> + <rotation name="Ecal_Total_shape_0x556245e66280EcalPipeHolerot" x="-0.20699999999999999" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="Ecal_Box_Left" x="390.08000000000004" y="633.88000000000011" z="82.5" lunit="cm"/> + <polycone name="EcalPipeHoleLeft" startphi="0" deltaphi="360" aunit="deg" lunit="cm"> + <zplane z="-42.25" rmin="0" rmax="15.602500000000001"/> + <zplane z="6.7610000000000019" rmin="0" rmax="16.092500000000001"/> + <zplane z="9.0610000000000017" rmin="0" rmax="16.199999999999999"/> + <zplane z="9.1110000000000024" rmin="0" rmax="19.100000000000001"/> + <zplane z="30.761000000000003" rmin="0" rmax="20.600000000000001"/> + <zplane z="42.25" rmin="0" rmax="20.600000000000001"/> + </polycone> + <subtraction name="Ecal_Total_Left_shape_0x556245e614d0"> + <first ref="Ecal_Box_Left"/> + <second ref="EcalPipeHoleLeft"/> + <position name="Ecal_Total_Left_shape_0x556245e614d0EcalPipeHoleLeftpos" x="-195.04000000000002" y="0.019000000000000003" z="0" unit="cm"/> + <rotation name="Ecal_Total_Left_shape_0x556245e614d0EcalPipeHoleLeftrot" x="-0.20699999999999999" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="ShildBoxLeft" x="389.08000000000004" y="632.88000000000011" z="0.10000000000000001" lunit="cm"/> + <box name="Subtracted_Shild_Box_Left" x="49.760000000000005" y="49.760000000000005" z="1.1000000000000001" lunit="cm"/> + <subtraction name="ShieldSubLeft_shape_0x556245e5ac20"> + <first ref="ShildBoxLeft"/> + <second ref="Subtracted_Shild_Box_Left"/> + <position name="ShieldSubLeft_shape_0x556245e5ac20Subtracted_Shild_Box_Leftpos" x="-194.54000000000002" y="0" z="0" unit="cm"/> + </subtraction> + <box name="PlugboxL" x="24.380000000000003" y="48.760000000000005" z="82.5" lunit="cm"/> + <polycone name="PipeHoleL" startphi="0" deltaphi="360" aunit="deg" lunit="cm"> + <zplane z="-42.25" rmin="0" rmax="15.602500000000001"/> + <zplane z="6.7610000000000019" rmin="0" rmax="16.092500000000001"/> + <zplane z="9.0610000000000017" rmin="0" rmax="16.199999999999999"/> + <zplane z="9.1110000000000024" rmin="0" rmax="19.100000000000001"/> + <zplane z="30.761000000000003" rmin="0" rmax="20.600000000000001"/> + <zplane z="42.25" rmin="0" rmax="20.600000000000001"/> + </polycone> + <subtraction name="PlugWithHoleL_shape_0x556245e5cbc0"> + <first ref="PlugboxL"/> + <second ref="PipeHoleL"/> + <position name="PlugWithHoleL_shape_0x556245e5cbc0PipeHoleLpos" x="-12.190000000000001" y="0.019000000000000003" z="0" unit="cm"/> + <rotation name="PlugWithHoleL_shape_0x556245e5cbc0PipeHoleLrot" x="-0.20699999999999999" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="HAirSlot_shape_0x556245e5ad40" x="24.380000000000003" y="2.2000000000000002" z="23.5" lunit="cm"/> + <box name="VAirSlot_shape_0x556245e5ade0" x="2.2000000000000002" y="44.360000000000007" z="23.5" lunit="cm"/> + <box name="HSteelSheet1_shape_0x556245e5aed0" x="24.375" y="2.1899999999999999" z="58.990000000000002" lunit="cm"/> + <box name="VSteelSheet1_shape_0x556245e5afc0" x="2.1899999999999999" y="44.350000000000001" z="58.990000000000002" lunit="cm"/> + <box name="HSteelSheet2_shape_0x556245e5b0b0" x="22.175000000000001" y="0.79000000000000004" z="33.990000000000002" lunit="cm"/> + <box name="VSteelSheet2_shape_0x556245e5b1a0" x="0.79000000000000004" y="42.75" z="33.990000000000002" lunit="cm"/> + <box name="StSheet1L" x="21.375" y="42.75" z="0.9900000000000001" lunit="cm"/> + <tube name="CylinderHole1L" rmin="0" rmax="21" z="2" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <subtraction name="StSheetWithHole1L_shape_0x556245e5b910"> + <first ref="StSheet1L"/> + <second ref="CylinderHole1L"/> + <position name="StSheetWithHole1L_shape_0x556245e5b910CylinderHole1Lpos" x="-10.6875" y="0" z="0" unit="cm"/> + </subtraction> + <box name="StSheet2L" x="22.175000000000001" y="44.350000000000001" z="0.9900000000000001" lunit="cm"/> + <tube name="CylinderHole2L" rmin="0" rmax="16.5" z="3" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <subtraction name="StSheetWithHole2L_shape_0x556245e5c0c0"> + <first ref="StSheet2L"/> + <second ref="CylinderHole2L"/> + <position name="StSheetWithHole2L_shape_0x556245e5c0c0CylinderHole2Lpos" x="-11.0875" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Inner_Box_Left" x="97.52000000000001" y="146.28" z="69" lunit="cm"/> + <box name="Subtracted_Support_Box_Left" x="48.760000000000005" y="48.760000000000005" z="70" lunit="cm"/> + <subtraction name="Ecal_Inner_Section_Left_shape_0x556245e5e100"> + <first ref="Inner_Box_Left"/> + <second ref="Subtracted_Support_Box_Left"/> + <position name="Ecal_Inner_Section_Left_shape_0x556245e5e100Subtracted_Support_Box_Leftpos" x="-48.760000000000005" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Inner_Block1_shape_0x556245e5d850" x="97.52000000000001" y="24.380000000000003" z="69" lunit="cm"/> + <box name="Inner_Module_Box_shape_0x556245e5d720" x="12.190000000000001" y="12.190000000000001" z="69" lunit="cm"/> + <box name="Inner_Module_Front_Cover_Box_shape_0x556245e5cca0" x="12.190000000000001" y="12.190000000000001" z="2.3000000000000003" lunit="cm"/> + <box name="Inner_Module_Back_Cover_Box_shape_0x556245e5cd70" x="12.190000000000001" y="12.190000000000001" z="6.9000000000000004" lunit="cm"/> + <box name="Inner_Module_Read_Out_Box_shape_0x556245e5cfd0" x="12.190000000000001" y="12.190000000000001" z="16.600000000000001" lunit="cm"/> + <box name="Inner_Read_Out_Box_shape_0x556245e5ce70" x="11.07" y="11.07" z="16.600000000000001" lunit="cm"/> + <box name="Inner_Stack_Main_Box_shape_0x556245e5d5f0" x="12.170000000000002" y="12.170000000000002" z="43.200000000000003" lunit="cm"/> + <box name="Inner_Cell_Main_Box_shape_0x556245e5d4f0" x="4.04" y="4.04" z="43.200000000000003" lunit="cm"/> + <box name="Steel_Cell_Box_shape_0x556245e5d0d0" x="4.04" y="4.04" z="0.10000000000000001" lunit="cm"/> + <box name="Plastic_Cell_Box_shape_0x556245e5d1a0" x="4.04" y="4.04" z="0.70000000000000007" lunit="cm"/> + <box name="Pb_Cell_Box_shape_0x556245e5d420" x="4.04" y="4.04" z="0.20000000000000001" lunit="cm"/> + <tube name="Fiber_Tube_Pb_shape_0x556245e5d330" rmin="0" rmax="0.059999999999999998" z="0.20000000000000001" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <box name="Inner_Block2_shape_0x556245e5d940" x="73.140000000000015" y="24.380000000000003" z="69" lunit="cm"/> + <box name="Middle_Box_Left" x="195.04000000000002" y="243.80000000000001" z="70.5" lunit="cm"/> + <box name="Middle_Subtracted_Box_Left" x="195.04000000000002" y="146.28" z="71.5" lunit="cm"/> + <subtraction name="Ecal_Middle_Section_Left_shape_0x556245e5f570"> + <first ref="Middle_Box_Left"/> + <second ref="Middle_Subtracted_Box_Left"/> + <position name="Ecal_Middle_Section_Left_shape_0x556245e5f570Middle_Subtracted_Box_Leftpos" x="-97.52000000000001" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Middle_Block_shape_0x556245e5edc0" x="97.52000000000001" y="24.380000000000003" z="70.5" lunit="cm"/> + <box name="Middle_Module_Box_shape_0x556245e5ec90" x="12.190000000000001" y="12.190000000000001" z="70.5" lunit="cm"/> + <box name="Middle_Module_Front_Cover_Box_shape_0x556245e5e210" x="12.190000000000001" y="12.190000000000001" z="2.3000000000000003" lunit="cm"/> + <box name="Middle_Module_Back_Cover_Box_shape_0x556245e5e320" x="12.190000000000001" y="12.190000000000001" z="7.4000000000000004" lunit="cm"/> + <box name="Middle_Module_Read_Out_Box_shape_0x556245e5e630" x="12.190000000000001" y="12.190000000000001" z="17.600000000000001" lunit="cm"/> + <tube name="Middle_Read_Out_Tube_shape_0x556245e5e4b0" rmin="1.5" rmax="1.7000000000000002" z="17.600000000000001" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <box name="Middle_Stack_Main_Box_shape_0x556245e5eb60" x="12.170000000000002" y="12.170000000000002" z="43.200000000000003" lunit="cm"/> + <box name="Middle_Cell_Main_Box_shape_0x556245e5ea30" x="6.0600000000000005" y="6.0600000000000005" z="43.200000000000003" lunit="cm"/> + <box name="Steel_Cell_Box_shape_0x556245e5e700" x="6.0600000000000005" y="6.0600000000000005" z="0.10000000000000001" lunit="cm"/> + <box name="Plastic_Cell_Box_shape_0x556245e5e810" x="6.0600000000000005" y="6.0600000000000005" z="0.70000000000000007" lunit="cm"/> + <box name="Pb_Cell_Box_shape_0x556245e5e940" x="6.0600000000000005" y="6.0600000000000005" z="0.20000000000000001" lunit="cm"/> + <box name="Outer_Box" x="390.08000000000004" y="633.88000000000011" z="70.5" lunit="cm"/> + <box name="Outer_Subtracted_Box_Left" x="390.08000000000004" y="243.80000000000001" z="71.5" lunit="cm"/> + <subtraction name="Ecal_Outer_Section_Left_shape_0x556245e609b0"> + <first ref="Outer_Box"/> + <second ref="Outer_Subtracted_Box_Left"/> + <position name="Ecal_Outer_Section_Left_shape_0x556245e609b0Outer_Subtracted_Box_Leftpos" x="-195.04000000000002" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Outer_Block_shape_0x556245e60230" x="195.04000000000002" y="24.380000000000003" z="70.5" lunit="cm"/> + <box name="Outer_Module_Box_shape_0x556245e60100" x="12.190000000000001" y="12.190000000000001" z="70.5" lunit="cm"/> + <box name="Outer_Module_Front_Cover_Box_shape_0x556245e5f680" x="12.190000000000001" y="12.190000000000001" z="2.3000000000000003" lunit="cm"/> + <box name="Outer_Module_Back_Cover_Box_shape_0x556245e5f790" x="12.190000000000001" y="12.190000000000001" z="7.4000000000000004" lunit="cm"/> + <box name="Outer_Module_Read_Out_Box_shape_0x556245e5faa0" x="12.190000000000001" y="12.190000000000001" z="17.600000000000001" lunit="cm"/> + <tube name="Outer_Read_Out_Tube_shape_0x556245e5f920" rmin="1.5" rmax="1.7000000000000002" z="17.600000000000001" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <box name="Outer_Stack_Main_Box_shape_0x556245e5ffd0" x="12.170000000000002" y="12.170000000000002" z="43.200000000000003" lunit="cm"/> + <box name="Outer_Cell_Main_Box_shape_0x556245e5fea0" x="12.120000000000001" y="12.120000000000001" z="43.200000000000003" lunit="cm"/> + <box name="Steel_Cell_Box_shape_0x556245e5fb70" x="12.120000000000001" y="12.120000000000001" z="0.10000000000000001" lunit="cm"/> + <box name="Plastic_Cell_Box_shape_0x556245e5fc80" x="12.120000000000001" y="12.120000000000001" z="0.70000000000000007" lunit="cm"/> + <box name="Pb_Cell_Box_shape_0x556245e5fdb0" x="12.120000000000001" y="12.120000000000001" z="0.2000000000000001" lunit="cm"/> + <!-- CBG: added this to be 240 microns larger than above to include lead + tyvek --> + <box name="Paper_Cell_Box_shape_0x556245e5fdb0" x="12.120000000000001" y="12.120000000000001" z="0.22400000000000001" lunit="cm"/> + <box name="Ecal_Box_Right" x="390.08000000000004" y="633.88000000000011" z="82.5" lunit="cm"/> + <polycone name="EcalPipeHoleRight" startphi="0" deltaphi="360" aunit="deg" lunit="cm"> + <zplane z="-42.25" rmin="0" rmax="15.602500000000001"/> + <zplane z="6.7610000000000019" rmin="0" rmax="16.092500000000001"/> + <zplane z="9.0610000000000017" rmin="0" rmax="16.199999999999999"/> + <zplane z="9.1110000000000024" rmin="0" rmax="19.100000000000001"/> + <zplane z="30.761000000000003" rmin="0" rmax="20.600000000000001"/> + <zplane z="42.25" rmin="0" rmax="20.600000000000001"/> + </polycone> + <subtraction name="Ecal_Total_Right_shape_0x556245e65890"> + <first ref="Ecal_Box_Right"/> + <second ref="EcalPipeHoleRight"/> + <position name="Ecal_Total_Right_shape_0x556245e65890EcalPipeHoleRightpos" x="195.04000000000002" y="0.019000000000000003" z="0" unit="cm"/> + <rotation name="Ecal_Total_Right_shape_0x556245e65890EcalPipeHoleRightrot" x="-0.20699999999999999" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="ShildBoxRight" x="389.08000000000004" y="632.88000000000011" z="0.10000000000000001" lunit="cm"/> + <box name="Subtracted_Shild_Box_Right" x="49.760000000000005" y="49.760000000000005" z="1.1000000000000001" lunit="cm"/> + <subtraction name="ShieldSubRight_shape_0x556245e61c60"> + <first ref="ShildBoxRight"/> + <second ref="Subtracted_Shild_Box_Right"/> + <position name="ShieldSubRight_shape_0x556245e61c60Subtracted_Shild_Box_Rightpos" x="194.54000000000002" y="0" z="0" unit="cm"/> + </subtraction> + <box name="PlugboxR" x="24.380000000000003" y="48.760000000000005" z="82.5" lunit="cm"/> + <polycone name="PipeHoleR" startphi="0" deltaphi="360" aunit="deg" lunit="cm"> + <zplane z="-42.25" rmin="0" rmax="15.602500000000001"/> + <zplane z="6.7610000000000019" rmin="0" rmax="16.092500000000001"/> + <zplane z="9.0610000000000017" rmin="0" rmax="16.199999999999999"/> + <zplane z="9.1110000000000024" rmin="0" rmax="19.100000000000001"/> + <zplane z="30.761000000000003" rmin="0" rmax="20.600000000000001"/> + <zplane z="42.25" rmin="0" rmax="20.600000000000001"/> + </polycone> + <subtraction name="PlugWithHoleR_shape_0x556245e63640"> + <first ref="PlugboxR"/> + <second ref="PipeHoleR"/> + <position name="PlugWithHoleR_shape_0x556245e63640PipeHoleRpos" x="12.190000000000001" y="0.019000000000000003" z="0" unit="cm"/> + <rotation name="PlugWithHoleR_shape_0x556245e63640PipeHoleRrot" x="-0.20699999999999999" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="StSheet1R" x="21.375" y="42.75" z="0.9900000000000001" lunit="cm"/> + <tube name="CylinderHole1R" rmin="0" rmax="21" z="2" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <subtraction name="StSheetWithHole1R_shape_0x556245e62390"> + <first ref="StSheet1R"/> + <second ref="CylinderHole1R"/> + <position name="StSheetWithHole1R_shape_0x556245e62390CylinderHole1Rpos" x="10.6875" y="0" z="0" unit="cm"/> + </subtraction> + <box name="StSheet2R" x="22.175000000000001" y="44.350000000000001" z="0.9900000000000001" lunit="cm"/> + <tube name="CylinderHole2R" rmin="0" rmax="16.5" z="3" startphi="0" deltaphi="360" aunit="deg" lunit="cm"/> + <subtraction name="StSheetWithHole2R_shape_0x556245e62b40"> + <first ref="StSheet2R"/> + <second ref="CylinderHole2R"/> + <position name="StSheetWithHole2R_shape_0x556245e62b40CylinderHole2Rpos" x="11.0875" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Inner_Box_Right" x="97.52000000000001" y="146.28" z="69" lunit="cm"/> + <box name="Subtracted_Support_Box_Right" x="48.760000000000005" y="48.760000000000005" z="70" lunit="cm"/> + <subtraction name="Ecal_Inner_Section_Right_shape_0x556245e63d80"> + <first ref="Inner_Box_Right"/> + <second ref="Subtracted_Support_Box_Right"/> + <position name="Ecal_Inner_Section_Right_shape_0x556245e63d80Subtracted_Support_Box_Rightpos" x="48.760000000000005" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Middle_Box_Right" x="195.04000000000002" y="243.80000000000001" z="70.5" lunit="cm"/> + <box name="Middle_Subtracted_Box_Right" x="195.04000000000002" y="146.28" z="71.5" lunit="cm"/> + <subtraction name="Ecal_Middle_Section_Right_shape_0x556245e64570"> + <first ref="Middle_Box_Right"/> + <second ref="Middle_Subtracted_Box_Right"/> + <position name="Ecal_Middle_Section_Right_shape_0x556245e64570Middle_Subtracted_Box_Rightpos" x="97.52000000000001" y="0" z="0" unit="cm"/> + </subtraction> + <box name="Outer_Box_Right" x="390.08000000000004" y="633.88000000000011" z="70.5" lunit="cm"/> + <box name="Outer_Subtracted_Box_Right" x="390.08000000000004" y="243.80000000000001" z="71.5" lunit="cm"/> + <subtraction name="Ecal_Outer_Section_Right_shape_0x556245e64d70"> + <first ref="Outer_Box_Right"/> + <second ref="Outer_Subtracted_Box_Right"/> + <position name="Ecal_Outer_Section_Right_shape_0x556245e64d70Outer_Subtracted_Box_Rightpos" x="195.04000000000002" y="0" z="0" unit="cm"/> + </subtraction> + </solids> + <structure> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_ShieldLeft"> + <materialref ref="_dd_Materials_Ecal_EcalDrilledAluminium"/> + <solidref ref="ShieldSubLeft_shape_0x556245e5ac20"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalAirSlot"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="HAirSlot_shape_0x556245e5ad40"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_VerticalAirSlot"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="VAirSlot_shape_0x556245e5ade0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet1"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="HSteelSheet1_shape_0x556245e5aed0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet1"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="VSteelSheet1_shape_0x556245e5afc0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet2"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="HSteelSheet2_shape_0x556245e5b0b0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet2"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="VSteelSheet2_shape_0x556245e5b1a0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Left"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="StSheetWithHole1L_shape_0x556245e5b910"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Left"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="StSheetWithHole2L_shape_0x556245e5c0c0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft"> + <materialref ref="_dd_Materials_Ecal_EcalPb"/> + <solidref ref="PlugWithHoleL_shape_0x556245e5cbc0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL0x8a28320" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL0x8a28320in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL_10x8a27590" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HAirSlotsL_10x8a27590in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VAirSlotsL0x8a27820" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VerticalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VAirSlotsL0x8a27820in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L0x8a29050" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L0x8a29050in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L_10x8a29110" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets1L_10x8a29110in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets1L0x8a293f0" copynumber="1005"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets1L0x8a293f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L0x8a296b0" copynumber="1006"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L0x8a296b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L_10x8a29770" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_HSteelSheets2L_10x8a29770in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets2L0x8a29a60" copynumber="1008"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_VSteelSheets2L0x8a29a60in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L0x8a2a0a0" copynumber="1009"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Left"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L0x8a2a0a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L_10x8a2a160" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Left"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets1L_10x8a2a160in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L0x8a2a760" copynumber="1011"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Left"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L0x8a2a760in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_10x8a2a820" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Left"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_10x8a2a820in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_20x8a2a8e0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Left"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft_SteelSheets2L_20x8a2a8e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeftpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnFrontCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticInnFC"/> + <solidref ref="Inner_Module_Front_Cover_Box_shape_0x556245e5cca0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnBackCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticBC"/> + <solidref ref="Inner_Module_Back_Cover_Box_shape_0x556245e5cd70"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOutBox"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticBC"/> + <solidref ref="Inner_Read_Out_Box_shape_0x556245e5ce70"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOut"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Inner_Module_Read_Out_Box_shape_0x556245e5cfd0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOut_InnerReadOutBox0x8a2d720" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOutBox"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOut_InnerReadOutBox0x8a2d720in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOutpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellSteel"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Steel_Cell_Box_shape_0x556245e5d0d0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPlastic"> + <materialref ref="_dd_Materials_Ecal_EcalPlastic"/> + <solidref ref="Plastic_Cell_Box_shape_0x556245e5d1a0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"> + <materialref ref="_dd_Materials_Ecal_EcalFiber"/> + <solidref ref="Fiber_Tube_Pb_shape_0x556245e5d330"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"> + <materialref ref="_dd_Materials_Ecal_EcalPb"/> + <solidref ref="Pb_Cell_Box_shape_0x556245e5d420"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber0x8a30470" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber0x8a30470in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_10x8a30520" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_10x8a30520in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_20x8a305d0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_20x8a305d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_30x8a306e0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_30x8a306e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_40x8a307c0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_40x8a307c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_50x8a308f0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_50x8a308f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_60x8a309a0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_60x8a309a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_70x8a30a80" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_70x8a30a80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_80x8a30b60" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_80x8a30b60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_90x8a30cd0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_90x8a30cd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_100x8a30d60" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_100x8a30d60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_110x8a30e40" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_110x8a30e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_120x8a30f20" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_120x8a30f20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_130x8a31000" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_130x8a31000in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_140x8a310e0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_140x8a310e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_150x8a311c0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb_InnerPbFiber_150x8a311c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPbpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"> + <materialref ref="_dd_Materials_Ecal_EcalSc"/> + <solidref ref="Inner_Cell_Main_Box_shape_0x556245e5d4f0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontSteelMatrix0x8a2e7b0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontSteelMatrix0x8a2e7b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackSteelMatrix0x8a2e860" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackSteelMatrix0x8a2e860in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontPlastic0x8a2f500" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnFrontPlastic0x8a2f500in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackPlastic0x8a2f560" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_InnBackPlastic0x8a2f560in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells0x8a312a0" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells0x8a312a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_10x8a313d0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_10x8a313d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_20x8a31480" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_20x8a31480in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_30x8a31560" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_30x8a31560in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_40x8a31640" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_40x8a31640in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_50x8a317b0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_50x8a317b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_60x8a31840" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_60x8a31840in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_70x8a31920" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_70x8a31920in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_80x8a31a00" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_80x8a31a00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_90x8a31ae0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_90x8a31ae0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_100x8a31bc0" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_100x8a31bc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_110x8a31ca0" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_110x8a31ca0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_120x8a31d80" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_120x8a31d80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_130x8a31720" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_130x8a31720in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_140x8a31fc0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_140x8a31fc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_150x8a320a0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_150x8a320a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_160x8a32180" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_160x8a32180in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_170x8a32260" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_170x8a32260in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_180x8a32340" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_180x8a32340in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_190x8a32420" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_190x8a32420in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_200x8a32500" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_200x8a32500in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_210x8a325e0" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_210x8a325e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_220x8a326c0" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_220x8a326c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_230x8a327a0" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_230x8a327a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_240x8a32880" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_240x8a32880in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_250x8a32960" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_250x8a32960in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_260x8a32a40" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_260x8a32a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_270x8a32b20" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_270x8a32b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_280x8a32c00" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_280x8a32c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_290x8a31e60" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_290x8a31e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_300x8a32ef0" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_300x8a32ef0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_310x8a32fa0" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_310x8a32fa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_320x8a33080" copynumber="32"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_320x8a33080in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_330x8a33160" copynumber="33"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_330x8a33160in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_340x8a33240" copynumber="34"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_340x8a33240in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_350x8a33320" copynumber="35"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_350x8a33320in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_360x8a33400" copynumber="36"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_360x8a33400in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_370x8a334e0" copynumber="37"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_370x8a334e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_380x8a335c0" copynumber="38"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_380x8a335c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_390x8a336a0" copynumber="39"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_390x8a336a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_400x8a33780" copynumber="40"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_400x8a33780in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_410x8a33860" copynumber="41"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_410x8a33860in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_420x8a33940" copynumber="42"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_420x8a33940in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_430x8a33a20" copynumber="43"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_430x8a33a20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_440x8a33b00" copynumber="44"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_440x8a33b00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_450x8a33be0" copynumber="45"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_450x8a33be0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_460x8a33cc0" copynumber="46"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_460x8a33cc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_470x8a33da0" copynumber="47"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_470x8a33da0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_480x8a33e80" copynumber="48"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_480x8a33e80in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_490x8a33f60" copynumber="49"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_490x8a33f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_500x8a34040" copynumber="50"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_500x8a34040in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_510x8a34120" copynumber="51"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_510x8a34120in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_520x8a34200" copynumber="52"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_520x8a34200in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_530x8a342e0" copynumber="53"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_530x8a342e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_540x8a343c0" copynumber="54"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_540x8a343c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_550x8a344a0" copynumber="55"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_550x8a344a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_560x8a34580" copynumber="56"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_560x8a34580in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_570x8a34660" copynumber="57"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_570x8a34660in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_580x8a34740" copynumber="58"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_580x8a34740in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_590x8a34820" copynumber="59"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_590x8a34820in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_600x8a34900" copynumber="60"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_600x8a34900in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_610x8a303f0" copynumber="61"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_610x8a303f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_620x8a32d60" copynumber="62"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_620x8a32d60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_630x8a32e40" copynumber="63"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_630x8a32e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_640x8a34df0" copynumber="64"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_640x8a34df0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_650x8a34ed0" copynumber="65"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell_Inner_Pb_Cells_650x8a34ed0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCellpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Inner_Stack_Main_Box_shape_0x556245e5d5f0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix0xed86e60" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix0xed86e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_10xed86ec0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_10xed86ec0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_20xed87f90" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_20xed87f90in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_30xed880b0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_30xed880b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_40xed881a0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_40xed881a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_50xed88960" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_50xed88960in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_60xed88a20" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_60xed88a20in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_70xed88b10" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_70xed88b10in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_80xed88c00" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack_Inner_Cells_Matrix_80xed88c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStackpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Inner_Module_Box_shape_0x556245e5d720"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleFrontCover0x8a2b9a0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnFrontCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleFrontCover0x8a2b9a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleBackCover0x8a2c990" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnBackCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleBackCover0x8a2c990in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleReadOut0x8a2d780" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnReadOut"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleReadOut0x8a2d780in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleStack0xed86f20" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_InnStack"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner_InnerModuleStack0xed86f20in_dd_Geometry_DownstreamRegion_Ecal_Modules_Innerpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Inner_Block1_shape_0x556245e5d850"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows10xed88e90" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows10xed88e90in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_10xeda1ca0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_10xeda1ca0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_20xeda1d90" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_20xeda1d90in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_30xeda1eb0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_30xeda1eb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_40xeda1fa0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_40xeda1fa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_50xeda20e0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_50xeda20e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_60xeda21a0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_60xeda21a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_70xeda2290" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_70xeda2290in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_80xeda2380" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_80xeda2380in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_90xeda2500" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_90xeda2500in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_100xeda25f0" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_100xeda25f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_110xeda26e0" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_110xeda26e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_120xeda27d0" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_120xeda27d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_130xeda28c0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_130xeda28c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_140xeda29b0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_140xeda29b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_150xeda2aa0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1_Inner_Module_Rows1_150xeda2aa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1pos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Inner_Block2_shape_0x556245e5d940"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows20xeda2f30" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows20xeda2f30in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_10xeda3020" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_10xeda3020in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_20xeda3110" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_20xeda3110in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_30xeda3230" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_30xeda3230in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_40xeda3320" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_40xeda3320in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_50xeda3460" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_50xeda3460in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_60xeda3520" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_60xeda3520in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_70xeda3610" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_70xeda3610in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_80xeda3700" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_80xeda3700in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_90xeda37f0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_90xeda37f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_100xeda38e0" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_100xeda38e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_110xeda39d0" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Inner"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2_Inner_Module_Rows2_110xeda39d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2pos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Inner_Section_Left_shape_0x556245e5e100"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left0xeda2c20" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left0xeda2c20in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left_10xeda2d10" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Up_Rows_Left_10xeda2d10in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows0xeda3b50" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows0xeda3b50in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows_10xeda3c70" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Left_Rows_10xeda3c70in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left0xeda3d60" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left0xeda3d60in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left_10xeda3e50" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft_Inner_Down_Rows_Left_10xeda3e50in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeftpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidFrontCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticMidFC"/> + <solidref ref="Middle_Module_Front_Cover_Box_shape_0x556245e5e210"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidBackCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticBC"/> + <solidref ref="Middle_Module_Back_Cover_Box_shape_0x556245e5e320"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutTube"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Middle_Read_Out_Tube_shape_0x556245e5e4b0"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Middle_Module_Read_Out_Box_shape_0x556245e5e630"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix0xeda5ea0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutTube"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix0xeda5ea0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_10xeda5f60" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutTube"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_10xeda5f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_20xeda6070" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutTube"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_20xeda6070in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_30xeda6190" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutTube"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut_Middle_ReadOutTube_Matrix_30xeda6190in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOutpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellSteel"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Steel_Cell_Box_shape_0x556245e5e700"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPlastic"> + <materialref ref="_dd_Materials_Ecal_EcalPlastic"/> + <solidref ref="Plastic_Cell_Box_shape_0x556245e5e810"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"> + <materialref ref="_dd_Materials_Ecal_EcalPb"/> + <solidref ref="Pb_Cell_Box_shape_0x556245e5e940"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber0xeda7000" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber0xeda7000in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_10xeda70b0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_10xeda70b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_20xeda7190" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_20xeda7190in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_30xeda72a0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_30xeda72a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_40xeda7380" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_40xeda7380in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_50xeda74b0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_50xeda74b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_60xeda7560" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_60xeda7560in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_70xeda7640" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_70xeda7640in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_80xeda7720" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_80xeda7720in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_90xeda7890" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_90xeda7890in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_100xeda7920" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_100xeda7920in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_110xeda7a00" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_110xeda7a00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_120xeda7ae0" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_120xeda7ae0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_130xeda7bc0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_130xeda7bc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_140xeda7ca0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_140xeda7ca0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_150xeda7d80" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_150xeda7d80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_160xeda7e60" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_160xeda7e60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_170xeda7800" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_170xeda7800in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_180xeda80a0" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_180xeda80a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_190xeda8180" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_190xeda8180in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_200xeda8260" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_200xeda8260in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_210xeda8340" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_210xeda8340in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_220xeda8420" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_220xeda8420in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_230xeda8500" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_230xeda8500in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_240xeda85e0" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_240xeda85e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_250xeda86c0" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_250xeda86c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_260xeda87a0" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_260xeda87a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_270xeda8880" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_270xeda8880in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_280xeda8960" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_280xeda8960in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_290xeda8a40" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_290xeda8a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_300xeda8b20" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_300xeda8b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_310xeda8c00" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_310xeda8c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_320xeda8ce0" copynumber="32"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_320xeda8ce0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_330xeda7f40" copynumber="33"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_330xeda7f40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_340xeda8fd0" copynumber="34"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_340xeda8fd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_350xeda9080" copynumber="35"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb_MiddlePbFiber_350xeda9080in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPbpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell"> + <materialref ref="_dd_Materials_Ecal_EcalSc"/> + <solidref ref="Middle_Cell_Main_Box_shape_0x556245e5ea30"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontSteelMatrix0xeda6820" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontSteelMatrix0xeda6820in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackSteelMatrix0xeda68d0" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackSteelMatrix0xeda68d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontPlastic0xeda6bf0" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidFrontPlastic0xeda6bf0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackPlastic0xeda6c80" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_MidBackPlastic0xeda6c80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells0xeda9160" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells0xeda9160in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_10xeda9290" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_10xeda9290in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_20xeda9340" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_20xeda9340in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_30xeda9420" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_30xeda9420in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_40xeda9500" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_40xeda9500in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_50xeda9670" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_50xeda9670in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_60xeda9700" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_60xeda9700in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_70xeda97e0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_70xeda97e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_80xeda98c0" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_80xeda98c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_90xeda99a0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_90xeda99a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_100xeda9a80" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_100xeda9a80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_110xeda9b60" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_110xeda9b60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_120xeda9c40" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_120xeda9c40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_130xeda95e0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_130xeda95e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_140xeda9e80" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_140xeda9e80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_150xeda9f60" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_150xeda9f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_160xedaa040" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_160xedaa040in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_170xedaa120" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_170xedaa120in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_180xedaa200" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_180xedaa200in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_190xedaa2e0" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_190xedaa2e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_200xedaa3c0" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_200xedaa3c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_210xedaa4a0" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_210xedaa4a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_220xedaa580" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_220xedaa580in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_230xedaa660" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_230xedaa660in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_240xedaa740" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_240xedaa740in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_250xedaa820" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_250xedaa820in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_260xedaa900" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_260xedaa900in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_270xedaa9e0" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_270xedaa9e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_280xedaaac0" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_280xedaaac0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_290xeda9d20" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_290xeda9d20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_300xedaadb0" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_300xedaadb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_310xedaae60" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_310xedaae60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_320xedaaf40" copynumber="32"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_320xedaaf40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_330xedab020" copynumber="33"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_330xedab020in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_340xedab100" copynumber="34"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_340xedab100in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_350xedab1e0" copynumber="35"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_350xedab1e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_360xedab2c0" copynumber="36"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_360xedab2c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_370xedab3a0" copynumber="37"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_370xedab3a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_380xedab480" copynumber="38"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_380xedab480in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_390xedab560" copynumber="39"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_390xedab560in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_400xedab640" copynumber="40"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_400xedab640in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_410xedab720" copynumber="41"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_410xedab720in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_420xedab800" copynumber="42"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_420xedab800in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_430xedab8e0" copynumber="43"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_430xedab8e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_440xedab9c0" copynumber="44"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_440xedab9c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_450xedabaa0" copynumber="45"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_450xedabaa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_460xedabb80" copynumber="46"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_460xedabb80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_470xedabc60" copynumber="47"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_470xedabc60in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_480xedabd40" copynumber="48"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_480xedabd40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_490xedabe20" copynumber="49"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_490xedabe20in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_500xedabf00" copynumber="50"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_500xedabf00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_510xedabfe0" copynumber="51"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_510xedabfe0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_520xedac0c0" copynumber="52"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_520xedac0c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_530xedac1a0" copynumber="53"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_530xedac1a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_540xedac280" copynumber="54"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_540xedac280in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_550xedac360" copynumber="55"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_550xedac360in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_560xedac440" copynumber="56"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_560xedac440in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_570xedac520" copynumber="57"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_570xedac520in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_580xedac600" copynumber="58"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_580xedac600in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_590xedac6e0" copynumber="59"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_590xedac6e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_600xedac7c0" copynumber="60"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_600xedac7c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_610xeda4d00" copynumber="61"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_610xeda4d00in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_620xedaaba0" copynumber="62"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_620xedaaba0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_630xedaac80" copynumber="63"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_630xedaac80in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_640xedaccb0" copynumber="64"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_640xedaccb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_650xedacd40" copynumber="65"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell_Middle_Pb_Cells_650xedacd40in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCellpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Middle_Stack_Main_Box_shape_0x556245e5eb60"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix0xedaceb0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix0xedaceb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_10xedacfa0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_10xedacfa0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_20xedad090" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_20xedad090in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_30xedad1b0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack_Middle_Cells_Matrix_30xedad1b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStackpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Middle_Module_Box_shape_0x556245e5ec90"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleFrontCover0xeda55f0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidFrontCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleFrontCover0xeda55f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleBackCover0xeda58d0" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidBackCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleBackCover0xeda58d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleReadOut0xeda5e40" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidReadOut"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleReadOut0xeda5e40in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleStack0xedacf40" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_MidStack"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle_MiddleModuleStack0xedacf40in_dd_Geometry_DownstreamRegion_Ecal_Modules_Middlepos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Middle_Block_shape_0x556245e5edc0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows0xedad400" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows0xedad400in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_10xedad4f0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_10xedad4f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_20xedad5e0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_20xedad5e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_30xedad700" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_30xedad700in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_40xedad7f0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_40xedad7f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_50xedad930" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_50xedad930in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_60xedad9f0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_60xedad9f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_70xedadae0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_70xedadae0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_80xedadbd0" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_80xedadbd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_90xedadd50" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_90xedadd50in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_100xedade40" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_100xedade40in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_110xedadf30" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_110xedadf30in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_120xedae020" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_120xedae020in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_130xedae110" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_130xedae110in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_140xedae200" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_140xedae200in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_150xedae2f0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Middle"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock_Middle_Module_Rows_150xedae2f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlockpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Middle_Section_Left_shape_0x556245e5f570"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left0xedae470" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left0xedae470in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left_10xedae560" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Up_Rows_Left_10xedae560in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows0xedae650" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows0xedae650in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_10xedae770" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_10xedae770in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_20xedae860" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_20xedae860in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_30xedae950" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_30xedae950in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_40xedaea10" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_40xedaea10in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_50xedaeb00" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_50xedaeb00in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_60xedaebf0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_60xedaebf0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_70xedaed70" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_70xedaed70in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_80xedaee60" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_80xedaee60in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_90xedaef50" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Left_Rows_90xedaef50in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left0xedaf040" copynumber="1012"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left0xedaf040in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left_10xedaf130" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft_Middle_Down_Rows_Left_10xedaf130in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeftpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutFrontCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticOutFC"/> + <solidref ref="Outer_Module_Front_Cover_Box_shape_0x556245e5f680"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutBackCover"> + <materialref ref="_dd_Materials_Ecal_EcalPlasticBC"/> + <solidref ref="Outer_Module_Back_Cover_Box_shape_0x556245e5f790"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOutTube"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Outer_Read_Out_Tube_shape_0x556245e5f920"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOut"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Outer_Module_Read_Out_Box_shape_0x556245e5faa0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOut_OuterReadOutTube0xedb1090" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOutTube"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOut_OuterReadOutTube0xedb1090in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOutpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellSteel"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Steel_Cell_Box_shape_0x556245e5fb70"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPlastic"> + <materialref ref="_dd_Materials_Ecal_EcalPlastic"/> + <solidref ref="Plastic_Cell_Box_shape_0x556245e5fc80"/> + </volume> + + <!-- CBG: lead with fiber (L2248)--> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb"> + <materialref ref="_dd_Materials_Ecal_EcalPb"/> + <solidref ref="Pb_Cell_Box_shape_0x556245e5fdb0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber0xedb1f60" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber0xedb1f60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_10xedb2010" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_10xedb2010in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_20xedb20f0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_20xedb20f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_30xedb2200" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_30xedb2200in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_40xedb22e0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_40xedb22e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_50xedb2410" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_50xedb2410in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_60xedb24c0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_60xedb24c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_70xedb25a0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_70xedb25a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_80xedb2680" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_80xedb2680in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_90xedb27f0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_90xedb27f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_100xedb2880" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_100xedb2880in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_110xedb2960" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_110xedb2960in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_120xedb2a40" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_120xedb2a40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_130xedb2b20" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_130xedb2b20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_140xedb2c00" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_140xedb2c00in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_150xedb2ce0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_150xedb2ce0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_160xedb2dc0" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_160xedb2dc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_170xedb2760" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_170xedb2760in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_180xedb3000" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_180xedb3000in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_190xedb30e0" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_190xedb30e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_200xedb31c0" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_200xedb31c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_210xedb32a0" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_210xedb32a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_220xedb3380" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_220xedb3380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_230xedb3460" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_230xedb3460in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_240xedb3540" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_240xedb3540in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_250xedb3620" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_250xedb3620in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_260xedb3700" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_260xedb3700in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_270xedb37e0" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_270xedb37e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_280x8a6e670" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_280x8a6e670in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_290x8a6e720" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_290x8a6e720in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_300x8a6e800" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_300x8a6e800in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_310x8a6e8e0" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_310x8a6e8e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_320x8a6e9c0" copynumber="32"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_320x8a6e9c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_330xedb2ea0" copynumber="33"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_330xedb2ea0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_340x8a6ecb0" copynumber="34"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_340x8a6ecb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_350x8a6ed60" copynumber="35"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_350x8a6ed60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_360x8a6ee40" copynumber="36"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_360x8a6ee40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_370x8a6ef20" copynumber="37"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_370x8a6ef20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_380x8a6f000" copynumber="38"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_380x8a6f000in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_390x8a6f0e0" copynumber="39"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_390x8a6f0e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_400x8a6f1c0" copynumber="40"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_400x8a6f1c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_410x8a6f2a0" copynumber="41"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_410x8a6f2a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_420x8a6f380" copynumber="42"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_420x8a6f380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_430x8a6f460" copynumber="43"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_430x8a6f460in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_440x8a6f540" copynumber="44"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_440x8a6f540in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_450x8a6f620" copynumber="45"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_450x8a6f620in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_460x8a6f700" copynumber="46"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_460x8a6f700in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_470x8a6f7e0" copynumber="47"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_470x8a6f7e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_480x8a6f8c0" copynumber="48"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_480x8a6f8c0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_490x8a6f9a0" copynumber="49"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_490x8a6f9a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_500x8a6fa80" copynumber="50"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_500x8a6fa80in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_510x8a6fb60" copynumber="51"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_510x8a6fb60in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_520x8a6fc40" copynumber="52"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_520x8a6fc40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_530x8a6fd20" copynumber="53"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_530x8a6fd20in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_540x8a6fe00" copynumber="54"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_540x8a6fe00in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_550x8a6fee0" copynumber="55"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_550x8a6fee0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_560x8a6ffc0" copynumber="56"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_560x8a6ffc0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_570x8a700a0" copynumber="57"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_570x8a700a0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_580x8a70180" copynumber="58"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_580x8a70180in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_590x8a70260" copynumber="59"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_590x8a70260in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_600x8a70340" copynumber="60"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_600x8a70340in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_610x8a70420" copynumber="61"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_610x8a70420in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_620x8a70500" copynumber="62"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_620x8a70500in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_630x8a705e0" copynumber="63"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_FiberPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb_OuterPbFiber_630x8a705e0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPbpos"/> + </physvol> + </volume> + + <!-- CBG: tyvek with lead in--> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"> + <materialref ref="_dd_Materials_Ecal_EcalPaper"/> + <solidref ref="Paper_Cell_Box_shape_0x556245e5fdb0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper_OuterPb" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPb"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper_OuterPb_Pos"/> + </physvol> + </volume> + +<!-- CBG: Outer module built of copies of lead with fibre in --> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell"> + <materialref ref="_dd_Materials_Ecal_EcalSc"/> + <solidref ref="Outer_Cell_Main_Box_shape_0x556245e5fea0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontSteelMatrix0xedb1780" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontSteelMatrix0xedb1780in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackSteelMatrix0xedb1830" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellSteel"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackSteelMatrix0xedb1830in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontPlastic0xedb1b50" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutFrontPlastic0xedb1b50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackPlastic0xedb1be0" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPlastic"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_OutBackPlastic0xedb1be0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells0x8a70730" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells0x8a70730in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_10x8a70860" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_10x8a70860in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_20x8a70910" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_20x8a70910in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_30x8a709f0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_30x8a709f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_40x8a70ad0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_40x8a70ad0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_50x8a70c40" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_50x8a70c40in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_60x8a70cd0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_60x8a70cd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_70x8a70db0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_70x8a70db0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_80x8a70e90" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_80x8a70e90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_90x8a70f70" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_90x8a70f70in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_100x8a71050" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_100x8a71050in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_110x8a71130" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_110x8a71130in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_120x8a71210" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_120x8a71210in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_130x8a70bb0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_130x8a70bb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_140x8a71450" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_140x8a71450in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_150x8a71530" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_150x8a71530in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_160x8a71610" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_160x8a71610in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_170x8a716f0" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_170x8a716f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_180x8a717d0" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_180x8a717d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_190x8a718b0" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_190x8a718b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_200x8a71990" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_200x8a71990in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_210x8a71a70" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_210x8a71a70in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_220x8a71b50" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_220x8a71b50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_230x8a71c30" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_230x8a71c30in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_240x8a71d10" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_240x8a71d10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_250x8a71df0" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_250x8a71df0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_260x8a71ed0" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_260x8a71ed0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_270x8a71fb0" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_270x8a71fb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_280x8a72090" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_280x8a72090in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_290x8a712f0" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_290x8a712f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_300x8a72380" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_300x8a72380in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_310x8a72430" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_310x8a72430in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_320x8a72510" copynumber="32"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_320x8a72510in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_330x8a725f0" copynumber="33"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_330x8a725f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_340x8a726d0" copynumber="34"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_340x8a726d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_350x8a727b0" copynumber="35"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_350x8a727b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_360x8a72890" copynumber="36"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_360x8a72890in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_370x8a72970" copynumber="37"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_370x8a72970in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_380x8a72a50" copynumber="38"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_380x8a72a50in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_390x8a72b30" copynumber="39"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_390x8a72b30in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_400x8a72c10" copynumber="40"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_400x8a72c10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_410x8a72cf0" copynumber="41"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_410x8a72cf0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_420x8a72dd0" copynumber="42"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_420x8a72dd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_430x8a72eb0" copynumber="43"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_430x8a72eb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_440x8a72f90" copynumber="44"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_440x8a72f90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_450x8a73070" copynumber="45"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_450x8a73070in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_460x8a73150" copynumber="46"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_460x8a73150in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_470x8a73230" copynumber="47"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_470x8a73230in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_480x8a73310" copynumber="48"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_480x8a73310in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_490x8a733f0" copynumber="49"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_490x8a733f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_500x8a734d0" copynumber="50"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_500x8a734d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_510x8a735b0" copynumber="51"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_510x8a735b0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_520x8a73690" copynumber="52"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_520x8a73690in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_530x8a73770" copynumber="53"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_530x8a73770in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_540x8a73850" copynumber="54"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_540x8a73850in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_550x8a73930" copynumber="55"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_550x8a73930in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_560x8a73a10" copynumber="56"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_560x8a73a10in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_570x8a73af0" copynumber="57"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_570x8a73af0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_580x8a73bd0" copynumber="58"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_580x8a73bd0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_590x8a73cb0" copynumber="59"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_590x8a73cb0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_600x8a73d90" copynumber="60"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_600x8a73d90in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_610xedb1ee0" copynumber="61"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_610xedb1ee0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_620x8a721f0" copynumber="62"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_620x8a721f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_630x8a722d0" copynumber="63"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_630x8a722d0in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_640x8a74280" copynumber="64"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_640x8a74280in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_650x8a74360" copynumber="65"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellPaper"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell_Outer_Pb_Cells_650x8a74360in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCellpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStack"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Outer_Stack_Main_Box_shape_0x556245e5ffd0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStack_Outer_Cell0x8a74440" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStack_Outer_Cell0x8a74440in_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStackpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="Outer_Module_Box_shape_0x556245e60100"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleFrontCover0xedaff80" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutFrontCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleFrontCover0xedaff80in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleBackCover0xedb0ad0" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutBackCover"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleBackCover0xedb0ad0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleReadOut0xedb10f0" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutReadOut"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleReadOut0xedb10f0in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleStack0x8a74520" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_OutStack"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer_OuterModuleStack0x8a74520in_dd_Geometry_DownstreamRegion_Ecal_Modules_Outerpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Outer_Block_shape_0x556245e60230"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows0x8a746e0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows0x8a746e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_10x8a747d0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_10x8a747d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_20x8a748c0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_20x8a748c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_30x8a749e0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_30x8a749e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_40x8a74ad0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_40x8a74ad0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_50x8a74c10" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_50x8a74c10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_60x8a74cd0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_60x8a74cd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_70x8a74dc0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_70x8a74dc0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_80x8a74eb0" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_80x8a74eb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_90x8a75030" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_90x8a75030in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_100x8a75120" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_100x8a75120in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_110x8a75210" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_110x8a75210in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_120x8a75300" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_120x8a75300in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_130x8a753f0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_130x8a753f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_140x8a754e0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_140x8a754e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_150x8a755d0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_150x8a755d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_160x8a756c0" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_160x8a756c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_170x8a74fa0" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_170x8a74fa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_180x8a75920" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_180x8a75920in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_190x8a75a10" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_190x8a75a10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_200x8a75b00" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_200x8a75b00in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_210x8a75bf0" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_210x8a75bf0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_220x8a75ce0" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_220x8a75ce0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_230x8a75dd0" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_230x8a75dd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_240x8a75ec0" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_240x8a75ec0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_250x8a75fb0" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_250x8a75fb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_260x8a760a0" copynumber="26"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_260x8a760a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_270x8a76190" copynumber="27"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_270x8a76190in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_280x8a76280" copynumber="28"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_280x8a76280in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_290x8a76370" copynumber="29"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_290x8a76370in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_300x8a76460" copynumber="30"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_300x8a76460in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_310x8a76550" copynumber="31"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Modules_Outer"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock_Outer_Module_Rows_310x8a76550in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlockpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Outer_Section_Left_shape_0x556245e609b0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left0x8a766d0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left0x8a766d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_10x8a767c0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_10x8a767c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_20x8a768b0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_20x8a768b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_30x8a769d0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_30x8a769d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_40x8a76ac0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_40x8a76ac0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_50x8a76bb0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_50x8a76bb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_60x8a76c70" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_60x8a76c70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_70x8a76d60" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Up_Rows_Left_70x8a76d60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows0x8a76e50" copynumber="1008"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows0x8a76e50in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_10x8a76fd0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_10x8a76fd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_20x8a770c0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_20x8a770c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_30x8a771b0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_30x8a771b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_40x8a772a0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_40x8a772a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_50x8a77390" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_50x8a77390in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_60x8a77480" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_60x8a77480in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_70x8a77570" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_70x8a77570in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_80x8a77660" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_80x8a77660in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_90x8a76640" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_90x8a76640in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_100x8a778c0" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_100x8a778c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_110x8a779b0" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_110x8a779b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_120x8a77aa0" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_120x8a77aa0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_130x8a77b90" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_130x8a77b90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_140x8a77c80" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_140x8a77c80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_150x8a77d70" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_150x8a77d70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_160x8a77e60" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_160x8a77e60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_170x8a77f50" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_170x8a77f50in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_180x8a78040" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_180x8a78040in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_190x8a78130" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_190x8a78130in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_200x8a78220" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_200x8a78220in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_210x8a78310" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_210x8a78310in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_220x8a78400" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_220x8a78400in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_230x8a784f0" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_230x8a784f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_240x8a785e0" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_240x8a785e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_250x8a77750" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Left_Rows_250x8a77750in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left0x8a788e0" copynumber="1034"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left0x8a788e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_10x8a789d0" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_10x8a789d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_20x8a78ac0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_20x8a78ac0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_30x8a78bb0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_30x8a78bb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_40x8a78ca0" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_40x8a78ca0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_50x8a78d90" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_50x8a78d90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_60x8a78e80" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_60x8a78e80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_70x8a78f70" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft_Outer_Down_Rows_Left_70x8a78f70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeftpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Total_Left_shape_0x556245e614d0"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_FiberShieldLeft0x8a25340" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_ShieldLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_FiberShieldLeft0x8a25340in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_InnSupportFrameLeft0x8a2a9d0" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_InnSupportFrameLeft0x8a2a9d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAInner0xed88e30" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAInner0xed88e30in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAMiddle0xedad3a0" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAMiddle0xedad3a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAOuter0x8a74680" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft_EcalAOuter0x8a74680in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeftpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_ShieldRight"> + <materialref ref="_dd_Materials_Ecal_EcalDrilledAluminium"/> + <solidref ref="ShieldSubRight_shape_0x556245e61c60"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Right"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="StSheetWithHole1R_shape_0x556245e62390"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Right"> + <materialref ref="_dd_Materials_Ecal_EcalSteel"/> + <solidref ref="StSheetWithHole2R_shape_0x556245e62b40"/> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight"> + <materialref ref="_dd_Materials_Ecal_EcalPb"/> + <solidref ref="PlugWithHoleR_shape_0x556245e63640"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR0x8a7b680" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR0x8a7b680in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR_10x8a7b740" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HAirSlotsR_10x8a7b740in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VAirSlotsR0x8a7b800" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VerticalAirSlot"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VAirSlotsR0x8a7b800in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R0x8a7b920" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R0x8a7b920in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R_10x8a7ba10" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets1R_10x8a7ba10in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets1R0x8a7bb90" copynumber="1005"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets1R0x8a7bb90in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R0x8a7bc50" copynumber="1006"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R0x8a7bc50in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R_10x8a7bd40" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_HorizontalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_HSteelSheets2R_10x8a7bd40in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets2R0x8a7be30" copynumber="1008"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_VericalSteelSheet2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_VSteelSheets2R0x8a7be30in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R0x8a7c320" copynumber="1009"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Right"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R0x8a7c320in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R_10x8a7c580" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole1Right"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets1R_10x8a7c580in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R0x8a7c9b0" copynumber="1011"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Right"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R0x8a7c9b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_10x8a7cc10" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Right"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_10x8a7cc10in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_20x8a7ccd0" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_SteelSheetWithHole2Right"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight_SteelSheets2R_20x8a7ccd0in_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRightpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Inner_Section_Right_shape_0x556245e63d80"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right0x8a7d2c0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right0x8a7d2c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right_10x8a7d380" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Up_Rows_Right_10x8a7d380in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows0x8a7d470" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows0x8a7d470in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows_10x8a7d590" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock2"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Right_Rows_10x8a7d590in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right0x8a7d680" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right0x8a7d680in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right_10x8a7d800" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnBlock1"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight_Inner_Down_Rows_Right_10x8a7d800in_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRightpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Middle_Section_Right_shape_0x556245e64570"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right0x8a7de80" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right0x8a7de80in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right_10x8a7df40" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Up_Rows_Right_10x8a7df40in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows0x8a7e030" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows0x8a7e030in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_10x8a7e150" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_10x8a7e150in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_20x8a7e240" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_20x8a7e240in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_30x8a7e3c0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_30x8a7e3c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_40x8a7e480" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_40x8a7e480in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_50x8a7e570" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_50x8a7e570in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_60x8a7e660" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_60x8a7e660in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_70x8a7e7e0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_70x8a7e7e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_80x8a7e8d0" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_80x8a7e8d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_90x8a7e9c0" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Right_Rows_90x8a7e9c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right0x8a7eab0" copynumber="1012"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right0x8a7eab0in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right_10x8a7de20" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight_Middle_Down_Rows_Right_10x8a7de20in_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRightpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Outer_Section_Right_shape_0x556245e64d70"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right0x8a7f1d0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right0x8a7f1d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_10x8a7f290" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_10x8a7f290in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_20x8a7f380" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_20x8a7f380in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_30x8a7f4a0" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_30x8a7f4a0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_40x8a7f590" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_40x8a7f590in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_50x8a7f710" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_50x8a7f710in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_60x8a7f7d0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_60x8a7f7d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_70x8a7f8c0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Up_Rows_Right_70x8a7f8c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows0x8a7f9b0" copynumber="1008"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows0x8a7f9b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_10x8a7fb30" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_10x8a7fb30in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_20x8a7fc20" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_20x8a7fc20in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_30x8a7fd10" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_30x8a7fd10in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_40x8a7fe00" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_40x8a7fe00in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_50x8a7fef0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_50x8a7fef0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_60x8a7ffe0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_60x8a7ffe0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_70x8a800d0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_70x8a800d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_80x8a801c0" copynumber="8"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_80x8a801c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_90x8a7f680" copynumber="9"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_90x8a7f680in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_100x8a80420" copynumber="10"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_100x8a80420in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_110x8a80510" copynumber="11"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_110x8a80510in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_120x8a80600" copynumber="12"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_120x8a80600in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_130x8a806f0" copynumber="13"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_130x8a806f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_140x8a807e0" copynumber="14"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_140x8a807e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_150x8a808d0" copynumber="15"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_150x8a808d0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_160x8a809c0" copynumber="16"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_160x8a809c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_170x8a80ab0" copynumber="17"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_170x8a80ab0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_180x8a80ba0" copynumber="18"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_180x8a80ba0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_190x8a80c90" copynumber="19"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_190x8a80c90in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_200x8a80d80" copynumber="20"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_200x8a80d80in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_210x8a80e70" copynumber="21"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_210x8a80e70in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_220x8a80f60" copynumber="22"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_220x8a80f60in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_230x8a81050" copynumber="23"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_230x8a81050in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_240x8a81140" copynumber="24"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_240x8a81140in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_250x8a802b0" copynumber="25"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Right_Rows_250x8a802b0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right0x8a81440" copynumber="1034"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right0x8a81440in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_10x8a81530" copynumber="1"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_10x8a81530in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_20x8a81620" copynumber="2"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_20x8a81620in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_30x8a81710" copynumber="3"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_30x8a81710in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_40x8a81800" copynumber="4"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_40x8a81800in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_50x8a818f0" copynumber="5"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_50x8a818f0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_60x8a819e0" copynumber="6"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_60x8a819e0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_70x8a81ad0" copynumber="7"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutBlock"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight_Outer_Down_Rows_Right_70x8a81ad0in_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRightpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Total_Right_shape_0x556245e65890"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_FiberShieldRight0x8a7a5c0" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_ShieldRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_FiberShieldRight0x8a7a5c0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_InnSupportFrameRight0x8a7cdc0" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_PlugSupportRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_InnSupportFrameRight0x8a7cdc0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCInner0x8a7d260" copynumber="1002"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_InnSectionRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCInner0x8a7d260in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCMiddle0x8a7ecb0" copynumber="1003"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_MidSectionRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCMiddle0x8a7ecb0in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCOuter0x8a7f170" copynumber="1004"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_OutSectionRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight_EcalCOuter0x8a7f170in_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRightpos"/> + </physvol> + </volume> + <volume name="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal"> + <materialref ref="_dd_Materials_Air"/> + <solidref ref="Ecal_Total_shape_0x556245e66280"/> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalA0x8a76f70" copynumber="1000"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalLeft"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalA0x8a76f70in_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecalpos"/> + </physvol> + <physvol name="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalC0x8a81c40" copynumber="1001"> + <volumeref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_EcalRight"/> + <positionref ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal_EcalC0x8a81c40in_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecalpos"/> + </physvol> + </volume> + </structure> + <setup name="default" version="1.0"> + <world ref="_dd_Geometry_DownstreamRegion_Ecal_Installation_Ecal"/> + </setup> +</gdml> diff --git a/Calorimeter/CaloDigiAlgs/CMakeLists.txt b/Calorimeter/CaloDigiAlgs/CMakeLists.txt index 89d20eae8e67a52daa6a23b60825e06f43610ec3..baa67edad0d64091f117e4ced8cd5ef69ab4217d 100644 --- a/Calorimeter/CaloDigiAlgs/CMakeLists.txt +++ b/Calorimeter/CaloDigiAlgs/CMakeLists.txt @@ -11,7 +11,7 @@ atlas_add_component( CaloDigiAlgs src/components/*.cxx LINK_LIBRARIES AthenaBaseComps Identifier FaserCaloIdentifier WaveformConditionsToolsLib StoreGateLib WaveRawEvent - FaserCaloSimEvent WaveDigiToolsLib) + CaloReadoutGeometry FaserCaloSimEvent WaveDigiToolsLib) atlas_install_python_modules( python/*.py ) diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx index c3f5313c0e52ddc68009ac2d6d3e41103b103b8a..4d122f2e8ec6844496c4bff025779fca9045da1c 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.cxx @@ -1,9 +1,12 @@ #include "CaloWaveformDigiAlg.h" -#include "Identifier/Identifier.h" - #include "FaserCaloSimEvent/CaloHitIdHelper.h" +#include "CaloReadoutGeometry/EcalDetectorManager.h" + +#include "CaloReadoutGeometry/CaloDetectorElement.h" +#include "GaudiKernel/PhysicalConstants.h" + #include <map> #include <utility> #include <cmath> @@ -30,11 +33,12 @@ CaloWaveformDigiAlg::initialize() { // Set key to write container ATH_CHECK( m_waveformContainerKey.initialize() ); - // Set up helper - ATH_CHECK(detStore()->retrieve(m_ecalID, "EcalID")); - - // Need to set this on first event - m_kernel = 0; + // And print out our timing simulation + if (m_advancedTiming) { + ATH_MSG_INFO("Using improved digitization timing"); + } else { + ATH_MSG_INFO("Using simple digitization timing"); + } return StatusCode::SUCCESS; } @@ -43,9 +47,6 @@ StatusCode CaloWaveformDigiAlg::finalize() { ATH_MSG_INFO(name() << "::finalize()"); - if (m_kernel) - delete m_kernel; - return StatusCode::SUCCESS; } @@ -71,100 +72,37 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const { return StatusCode::SUCCESS; } - if (!m_kernel) { - - ATH_MSG_INFO(name() << ": initialize waveform digitization kernel"); - ATH_MSG_INFO(" Norm: " << m_digiCondTool->cb_norm(ctx)); - ATH_MSG_INFO(" Mean: " << m_digiCondTool->cb_mean(ctx)); - ATH_MSG_INFO(" Sigma: " << m_digiCondTool->cb_sigma(ctx)); - ATH_MSG_INFO(" Alpha: " << m_digiCondTool->cb_alpha(ctx)); - ATH_MSG_INFO(" N: " << m_digiCondTool->cb_n(ctx)); - - // Set up waveform shape - m_kernel = new TF1("PDF", "[4] * ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200); - - m_kernel->SetParameter(0, m_digiCondTool->cb_alpha(ctx)); - m_kernel->SetParameter(1, m_digiCondTool->cb_n(ctx)); - m_kernel->SetParameter(2, m_digiCondTool->cb_sigma(ctx)); - m_kernel->SetParameter(3, m_digiCondTool->cb_mean(ctx)); - m_kernel->SetParameter(4, m_digiCondTool->cb_norm(ctx)); - - // Pre-evaluate time kernel for each bin - m_timekernel = m_digiTool->evaluate_timekernel(m_kernel); - - // Also save the baseline parameters - m_base_mean = m_digiCondTool->base_mean(ctx); - m_base_rms = m_digiCondTool->base_rms(ctx); - } - // Create structure to store pulse for each channel - std::map<Identifier, std::vector<uint16_t>> waveforms = m_digiTool->create_waveform_map(m_ecalID); - - // Sum energy for each channel (i.e. identifier) - std::map<unsigned int, float> esum; - for (const auto& hit : *caloHitHandle) { - esum[hit.identify()] += hit.energyLoss(); - } + std::map<Identifier, std::vector<uint16_t>> waveforms; + waveforms.clear(); - // Loop over time samples - for (const auto& tk : m_timekernel) { - std::map<unsigned int, float> counts; + if (m_first) { + m_first = false; - // Convolve hit energy with evaluated kernel and sum for each hit id (i.e. channel) - //for (const auto& hit : *caloHitHandle) { - // counts[hit.identify()] += tk * hit.energyLoss(); - //} - - // Convolve summed energy with evaluated kernel for each hit id (i.e. channel) - for (const auto& e : esum) { - counts[e.first] = tk * e.second; - } - - // Subtract count from basleine and add result to correct waveform vector - for (const auto& c : counts) { - - float baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - int value = std::round(baseline - c.second); - - if (value < 0) { - ATH_MSG_WARNING("Found pulse " << c.second << " larger than baseline " << c.first); - value = 0; // Protect against scaling signal above baseline - } - - // Convert hit id to Identifier and store - Identifier id = CaloHitIdHelper::GetHelper()->getIdentifier(c.first); - waveforms[id].push_back(value); - } + // Write kernel parameters + ATH_MSG_INFO(name() << ": initialize waveform digitization kernel"); + ATH_MSG_INFO(" Norm: " << m_digiCondTool->cb_norm()); + ATH_MSG_INFO(" Mean: " << m_digiCondTool->cb_mean()); + ATH_MSG_INFO(" Sigma: " << m_digiCondTool->cb_sigma()); + ATH_MSG_INFO(" Alpha: " << m_digiCondTool->cb_alpha()); + ATH_MSG_INFO(" N: " << m_digiCondTool->cb_n()); } - - // This is a bit of a hack to make sure all waveforms have - // at least baseline entries. Should really add this to the - // logic above - for (const auto& w : waveforms) { - if (w.second.size() > 0) continue; - - // Waveform was empty, fill with baseline - int channel = m_mappingTool->getChannelMapping(w.first); - ATH_MSG_DEBUG("Writing baseline into empty waveform in channel "<< channel); - int i = m_digiTool->nsamples(); - while(i--) { // Use while to avoid unused variable warning with for - int baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - waveforms[w.first].push_back(baseline); - } + // Try our new tool instead + if (m_advancedTiming) { + waveforms = m_digiTool->generate_calo_timing_waveforms(ctx, m_digiCondTool, caloHitHandle.get()); + } else { + waveforms = m_digiTool->generate_calo_waveforms(ctx, m_digiCondTool, caloHitHandle.get()); } - //m_chrono->chronoStop("Digit"); - //m_chrono->chronoStart("Write"); - // Loop over wavefrom vectors to make and store waveform - unsigned int nsamples = m_digiTool->nsamples(); + unsigned int digitizer_samples = m_digiTool->digitizer_samples(); for (const auto& w : waveforms) { RawWaveform* wfm = new RawWaveform(); wfm->setWaveform(0, w.second); wfm->setIdentifier(w.first); wfm->setChannel(m_mappingTool->getChannelMapping(w.first)); - wfm->setSamples(nsamples); + wfm->setSamples(digitizer_samples); waveformContainerHandle->push_back(wfm); } @@ -172,5 +110,9 @@ CaloWaveformDigiAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("WaveformsHitContainer " << waveformContainerHandle.name() << "' filled with "<< waveformContainerHandle->size() <<" items"); + // Cleanup + waveforms.clear(); + return StatusCode::SUCCESS; } + diff --git a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h index 7ee25a2714dda12e20bdfa635c75d2804a0c4e31..f874f174f992bc35bf9fa3db021bfdd5f30ef130 100644 --- a/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h +++ b/Calorimeter/CaloDigiAlgs/src/CaloWaveformDigiAlg.h @@ -21,12 +21,6 @@ #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -// Helpers -#include "FaserCaloIdentifier/EcalID.h" - -// ROOT -#include "TF1.h" - // STL #include <string> #include <vector> @@ -45,6 +39,10 @@ class CaloWaveformDigiAlg: public AthReentrantAlgorithm { virtual StatusCode finalize() override; //@} + // + // Simulate detailed timing of waveforms + BooleanProperty m_advancedTiming{this, "AdvancedTiming", true}; + private: /** @name Disallow default instantiation, copy, assignment */ @@ -54,49 +52,38 @@ class CaloWaveformDigiAlg: public AthReentrantAlgorithm { CaloWaveformDigiAlg &operator=(const CaloWaveformDigiAlg&) = delete; //@} - // We use these a lot, so read them once from the conditions tool - mutable float m_base_mean; - mutable float m_base_rms; - - /** Kernel PDF and evaluated values **/ - // Mark these mutable, as they must be changed on first event... - //@{ - mutable TF1* m_kernel; - mutable std::vector<float> m_timekernel; - //@} - - /// Detector ID helper - const EcalID* m_ecalID{nullptr}; - /** * @name Digitisation tool */ + //@{ ToolHandle<IWaveformDigitisationTool> m_digiTool {this, "WaveformDigitisationTool", "WaveformDigitisationTool"}; + //@} /** * @name Mapping tool */ + //@{ ToolHandle<IWaveformCableMappingTool> m_mappingTool {this, "WaveformCableMappingTool", "WaveformCableMappingTool"}; + //@} /** * @name Digitization parameters tool */ + //@{ ToolHandle<IWaveformDigiConditionsTool> m_digiCondTool {this, "DigiConditionsTool", "CaloDigiConditionsTool"}; + //@} /** * @name Input HITS using SG::ReadHandleKey */ //@{ - SG::ReadHandleKey<CaloHitCollection> m_caloHitContainerKey {this, "CaloHitContainerKey", ""}; - //@} - /** * @name Output data using SG::WriteHandleKey */ @@ -105,6 +92,7 @@ class CaloWaveformDigiAlg: public AthReentrantAlgorithm { {this, "WaveformContainerKey", ""}; //@} + mutable bool m_first {true}; }; diff --git a/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSD.h b/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSD.h index d558c0e74e1a55a1e0b3680d7f4831dc3ba66341..4f2c35638e42c29f2eafe2075bea2748ccf8d811 100644 --- a/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSD.h +++ b/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSD.h @@ -280,9 +280,9 @@ inline double EcalSensorSD::localNonUniformity (double x, double y) const // Local uniformity is product of x and y sine-like functions // The Amplitude of the sin-like function is a function of x and y + // Deion: changed LHCb's parametrization by adding the (- A_local) at the end in order to center the correction on zero if ( A_local > lowTolerance ) - correction += A_local / 2. * ( 1. - cos( 2. * CLHEP::pi * (x-x0)/d ) ) * - ( 1. - cos( 2. * CLHEP::pi * (y-y0)/d ) ) ; + correction += A_local / 2. * ( 1. - cos( 2. * CLHEP::pi * (x-x0)/d ) ) * ( 1. - cos( 2. * CLHEP::pi * (y-y0)/d ) ) - A_local ; double rX(0.) , rY(0.) , hCell(0.) ; diff --git a/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSDTool.cxx b/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSDTool.cxx index f2715e28a99a32d357948f4d9fb0dbbb1359ca30..b9d9d3efae0ba53151d9edeaaa794102ea9315e6 100644 --- a/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSDTool.cxx +++ b/Calorimeter/CaloG4/EcalG4_SD/src/EcalSensorSDTool.cxx @@ -21,7 +21,7 @@ EcalSensorSDTool::EcalSensorSDTool(const std::string& type, const std::string& n , m_birk_c1 ( 0.013 * CLHEP::g/CLHEP::MeV/CLHEP::cm2 ) // 1st coef. of Birk's , m_birk_c2 ( 9.6E-6 * CLHEP::g*CLHEP::g/CLHEP::MeV/CLHEP::MeV/CLHEP::cm2/CLHEP::cm2 ) // 2nd coef. of Birk's law , m_birk_c1correction ( 0.57142857) //correction of c1 for 2e charged part. - , m_a_local_outer_ecal ( 0. ) + , m_a_local_outer_ecal ( 0.05 ) // sinusoidal non uniformity amplitude , m_a_global_outer_ecal ( 0.03 ) // global non uniformity amplitude , m_a_reflection_height ( 0.09 ) // reflection on the edges - height , m_a_reflection_width ( 6. * CLHEP::mm ) // reflection on the edges - width diff --git a/Calorimeter/CaloRecAlgs/python/CaloRecAlgsConfig.py b/Calorimeter/CaloRecAlgs/python/CaloRecAlgsConfig.py index c49770ad2b7e9468eca196af582d2156b9ab977c..bfa25550254ef72e1499e420d69a0ccde3a9f547 100644 --- a/Calorimeter/CaloRecAlgs/python/CaloRecAlgsConfig.py +++ b/Calorimeter/CaloRecAlgs/python/CaloRecAlgsConfig.py @@ -15,8 +15,11 @@ def CalorimeterReconstructionCfg(flags, **kwargs): acc = ComponentAccumulator() kwargs.setdefault("CaloWaveHitContainerKey", "CaloWaveformHits") + kwargs.setdefault("Calo2WaveHitContainerKey", "Calo2WaveformHits") kwargs.setdefault("PreshowerWaveHitContainerKey", "PreshowerWaveformHits") + kwargs.setdefault("CaloHitContainerKey", "CaloHits") + kwargs.setdefault("Calo2HitContainerKey", "Calo2Hits") kwargs.setdefault("PreshowerHitContainerKey", "PreshowerHits") acc.merge(CaloRecToolCfg(flags, **kwargs)) diff --git a/Calorimeter/CaloRecAlgs/src/CaloRecAlg.cxx b/Calorimeter/CaloRecAlgs/src/CaloRecAlg.cxx index b6df5fed6053f7499a6f45a95e4b51d2e6633ddd..c8844946d2f8b1242c22ec0540a07d23ff2c7ada 100644 --- a/Calorimeter/CaloRecAlgs/src/CaloRecAlg.cxx +++ b/Calorimeter/CaloRecAlgs/src/CaloRecAlg.cxx @@ -12,23 +12,19 @@ StatusCode CaloRecAlg::initialize() { // Set key to read calo hits from ATH_CHECK( m_caloWaveHitContainerKey.initialize() ); + ATH_CHECK( m_calo2WaveHitContainerKey.initialize() ); // Set key to read preshower hits from ATH_CHECK( m_preshowerWaveHitContainerKey.initialize() ); // Set key to write container ATH_CHECK( m_caloHitContainerKey.initialize() ); + ATH_CHECK( m_calo2HitContainerKey.initialize() ); ATH_CHECK( m_preshowerHitContainerKey.initialize() ); // Initalize tools ATH_CHECK( m_recoCalibTool.retrieve() ); - // Store calibrattiion factos in a vector for ease of access - m_EM_mu_Map[0] = m_calo_ch0_EM_mu; - m_EM_mu_Map[1] = m_calo_ch1_EM_mu; - m_EM_mu_Map[2] = m_calo_ch2_EM_mu; - m_EM_mu_Map[3] = m_calo_ch3_EM_mu; - return StatusCode::SUCCESS; } //---------------------------------------------------------------------- @@ -54,6 +50,15 @@ StatusCode CaloRecAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("Calorimeter Waveform Hit container found with zero length!"); } + SG::ReadHandle<xAOD::WaveformHitContainer> calo2WaveHitHandle(m_calo2WaveHitContainerKey, ctx); + + ATH_CHECK( calo2WaveHitHandle.isValid() ); + ATH_MSG_DEBUG("Found ReadHandle for WaveformHitContainer " << m_calo2WaveHitContainerKey); + + if (calo2WaveHitHandle->size() == 0) { + ATH_MSG_DEBUG("Calorimeter 2 Waveform Hit container found with zero length!"); + } + SG::ReadHandle<xAOD::WaveformHitContainer> preshowerWaveHitHandle(m_preshowerWaveHitContainerKey, ctx); ATH_CHECK( preshowerWaveHitHandle.isValid() ); @@ -63,116 +68,55 @@ StatusCode CaloRecAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("Preshower Waveform Hit container found with zero length!"); } - // Find the output waveform container + // Only correct gain in real data + bool correct_gain = !m_isMC; + + // Reconstruct calorimeter hits SG::WriteHandle<xAOD::CalorimeterHitContainer> caloHitContainerHandle(m_caloHitContainerKey, ctx); ATH_CHECK( caloHitContainerHandle.record( std::make_unique<xAOD::CalorimeterHitContainer>(), std::make_unique<xAOD::CalorimeterHitAuxContainer>() ) ); - - SG::WriteHandle<xAOD::CalorimeterHitContainer> preshowerHitContainerHandle(m_preshowerHitContainerKey, ctx); - ATH_CHECK( preshowerHitContainerHandle.record( std::make_unique<xAOD::CalorimeterHitContainer>(), - std::make_unique<xAOD::CalorimeterHitAuxContainer>() ) ); - ATH_MSG_DEBUG("WaveformsHitContainer '" << caloHitContainerHandle.name() << "' initialized"); - ATH_MSG_DEBUG("WaveformsHitContainer '" << preshowerHitContainerHandle.name() << "' initialized"); // Loop over calo hits and calibrate each primary hit for( const auto& hit : *caloWaveHitHandle ) { if (hit->status_bit(xAOD::WaveformStatus::SECONDARY)) continue; - - // Create a new calo hit xAOD::CalorimeterHit* calo_hit = new xAOD::CalorimeterHit(); caloHitContainerHandle->push_back(calo_hit); + calo_hit->addHit(caloWaveHitHandle.get(), hit); + m_recoCalibTool->reconstruct(ctx, calo_hit, correct_gain); + } + ATH_MSG_DEBUG("CaloHitContainer '" << caloHitContainerHandle.name() << "' filled with "<< caloHitContainerHandle->size() <<" items"); - ATH_MSG_DEBUG("calo_hit in channel " << hit->channel() ); - - float MIPcharge_ref = m_recoCalibTool->getMIPcharge_ref(hit->channel()); // get reference MIP charge from database - - float charge = hit->integral()/50.0; // divide by 50 ohms to get charge - ATH_MSG_DEBUG("calo_hit filled has charge of " << charge << " pC"); - - float gainRatio = 1.0; - if (!m_isMC) { // MC already has correct MIP charge stored in MIPcharge_ref, so only need to to HV extrapolation with reral data - gainRatio = extrapolateHVgain(hit->channel()); - } - ATH_MSG_DEBUG("HV gain ratio = " << gainRatio ); - - - float Nmip = (charge * gainRatio) / MIPcharge_ref; - ATH_MSG_DEBUG("Nmip = " << Nmip ); - calo_hit->set_Nmip(Nmip); // set Nmip value - - float E_dep = Nmip * m_MIP_sim_Edep_calo; - ATH_MSG_DEBUG("E_dep in MeV = " << E_dep ); - calo_hit->set_E_dep(E_dep); // set calibrated E_dep value - - float E_EM = Nmip * m_EM_mu_Map[hit->channel()]; - ATH_MSG_DEBUG("Em E in MeV = " << E_EM ); - calo_hit->set_E_EM(E_EM); // set calibrated E_EM value - - float fit_to_raw_ratio = 1.0; - if (hit->integral() != 0.0) { // avoid possibility of division by zero error - fit_to_raw_ratio = hit->raw_integral() / hit->integral(); - } - calo_hit->set_fit_to_raw_ratio(fit_to_raw_ratio); // set fit-to-raw-ratio that can be used to take any of the calibrated values to what they would be if we used the raw integral instead of the fit integral - - calo_hit->set_channel(hit->channel()); // set channel number + // Reconstruct high-gain calorimeter hits + SG::WriteHandle<xAOD::CalorimeterHitContainer> calo2HitContainerHandle(m_calo2HitContainerKey, ctx); + ATH_CHECK( calo2HitContainerHandle.record( std::make_unique<xAOD::CalorimeterHitContainer>(), + std::make_unique<xAOD::CalorimeterHitAuxContainer>() ) ); + ATH_MSG_DEBUG("WaveformsHitContainer '" << calo2HitContainerHandle.name() << "' initialized"); - calo_hit->clearWaveformLinks(); - calo_hit->addHit(caloWaveHitHandle.get(), hit); // create link to calo waveform hit + for( const auto& hit : *calo2WaveHitHandle ) { + if (hit->status_bit(xAOD::WaveformStatus::SECONDARY)) continue; + xAOD::CalorimeterHit* calo_hit = new xAOD::CalorimeterHit(); + calo2HitContainerHandle->push_back(calo_hit); + calo_hit->addHit(calo2WaveHitHandle.get(), hit); + m_recoCalibTool->reconstruct(ctx, calo_hit, correct_gain=false); } + ATH_MSG_DEBUG("Calo2HitContainer '" << calo2HitContainerHandle.name() << "' filled with "<< calo2HitContainerHandle->size() <<" items"); - ATH_MSG_DEBUG("CaloHitContainer '" << caloHitContainerHandle.name() << "' filled with "<< caloHitContainerHandle->size() <<" items"); + // Reconstruct preshower hits + SG::WriteHandle<xAOD::CalorimeterHitContainer> preshowerHitContainerHandle(m_preshowerHitContainerKey, ctx); + ATH_CHECK( preshowerHitContainerHandle.record( std::make_unique<xAOD::CalorimeterHitContainer>(), + std::make_unique<xAOD::CalorimeterHitAuxContainer>() ) ); + ATH_MSG_DEBUG("WaveformsHitContainer '" << preshowerHitContainerHandle.name() << "' initialized"); for( const auto& hit : *preshowerWaveHitHandle ) { if (hit->status_bit(xAOD::WaveformStatus::SECONDARY)) continue; - - // Create a new preshower hit - xAOD::CalorimeterHit* preshower_hit = new xAOD::CalorimeterHit(); - preshowerHitContainerHandle->push_back(preshower_hit); - - ATH_MSG_DEBUG("preshower_hit in channel " << hit->channel() ); - - float MIPcharge_ref = m_recoCalibTool->getMIPcharge_ref(hit->channel()); // get reference MIP charge from database - - float charge = hit->integral()/50.0; // divide by 50 ohms to get charge - ATH_MSG_DEBUG("preshower_hit filled has charge of " << charge << " pC"); - - float Nmip = charge / MIPcharge_ref; - ATH_MSG_DEBUG("Nmip = " << Nmip ); - preshower_hit->set_Nmip(Nmip); // set Nmip value - - float E_dep = Nmip * m_MIP_sim_Edep_preshower; - ATH_MSG_DEBUG("E_dep in GeV = " << E_dep ); - preshower_hit->set_E_dep(E_dep); // set calibrated E_dep value - - float fit_to_raw_ratio = 1.0; - if (hit->integral() != 0.0) { // avoid possibility of division by zero error - fit_to_raw_ratio = hit->raw_integral() / hit->integral(); - } - preshower_hit->set_fit_to_raw_ratio(fit_to_raw_ratio); // set fit-to-raw-ratio that can be used to take any of the calibrated values to what they would be if we used the raw integral instead of the fit integral - - preshower_hit->set_channel(hit->channel()); // set channel number - - preshower_hit->clearWaveformLinks(); - preshower_hit->addHit(preshowerWaveHitHandle.get(), hit); // create link to preshower waveform hit - } - + xAOD::CalorimeterHit* calo_hit = new xAOD::CalorimeterHit(); + preshowerHitContainerHandle->push_back(calo_hit); + calo_hit->addHit(preshowerWaveHitHandle.get(), hit); + m_recoCalibTool->reconstruct(ctx, calo_hit, correct_gain=false); + } ATH_MSG_DEBUG("PreshowerHitContainer '" << preshowerHitContainerHandle.name() << "' filled with "<< preshowerHitContainerHandle->size() <<" items"); - - + return StatusCode::SUCCESS; } -//---------------------------------------------------------------------- -float CaloRecAlg::extrapolateHVgain(int channel) const { - float PMT_hv = m_recoCalibTool->getHV(channel); - float PMT_hv_ref = m_recoCalibTool->getHV_ref(channel); - TF1 gaincurve = m_recoCalibTool->get_PMT_HV_curve(channel); - - float gaincurve_atHV = gaincurve.Eval(PMT_hv); - float gaincurve_atHVref = gaincurve.Eval(PMT_hv_ref); - - return ( gaincurve_atHVref / gaincurve_atHV ) * pow( PMT_hv_ref / PMT_hv , 6.6); -} -//---------------------------------------------------------------------- - diff --git a/Calorimeter/CaloRecAlgs/src/CaloRecAlg.h b/Calorimeter/CaloRecAlgs/src/CaloRecAlg.h index 721f521621ae519778a8ddadd8b5711f1beeac9b..b11fc05ae5cf91b8e5b4aed67074d07674a511a7 100644 --- a/Calorimeter/CaloRecAlgs/src/CaloRecAlg.h +++ b/Calorimeter/CaloRecAlgs/src/CaloRecAlg.h @@ -71,6 +71,10 @@ class CaloRecAlg : public AthReentrantAlgorithm { SG::ReadHandleKey<xAOD::WaveformHitContainer> m_caloWaveHitContainerKey {this, "CaloWaveHitContainerKey", "CaloWaveformHits"}; //@} + //@{ + SG::ReadHandleKey<xAOD::WaveformHitContainer> m_calo2WaveHitContainerKey {this, "Calo2WaveHitContainerKey", "Calo2WaveformHits"}; + //@} + //@{ SG::ReadHandleKey<xAOD::WaveformHitContainer> m_preshowerWaveHitContainerKey {this, "PreshowerWaveHitContainerKey", "PreshowerWaveformHits"}; //@} @@ -80,21 +84,10 @@ class CaloRecAlg : public AthReentrantAlgorithm { */ //@{ SG::WriteHandleKey<xAOD::CalorimeterHitContainer> m_caloHitContainerKey {this, "CaloHitContainerKey", "CaloHits"}; + SG::WriteHandleKey<xAOD::CalorimeterHitContainer> m_calo2HitContainerKey {this, "Calo2HitContainerKey", "Calo2Hits"}; SG::WriteHandleKey<xAOD::CalorimeterHitContainer> m_preshowerHitContainerKey {this, "PreshowerHitContainerKey", "PreshowerHits"}; //@} - float extrapolateHVgain(int channel) const; - - FloatProperty m_MIP_sim_Edep_calo {this, "MIP_sim_Edep_calo", 58.5}; // MIP deposits 5.85 MeV of energy in calo - FloatProperty m_MIP_sim_Edep_preshower {this, "MIP_sim_Edep_preshower", 4.894}; // MIP deposits 4.894 MeV of energy in a preshower layer - - FloatProperty m_calo_ch0_EM_mu {this, "m_calo_ch0_EM_mu", 330.0}; // factor used to do rough calibration of calo ch0 to EM energy: 0.33 GeV or 330 MeV - FloatProperty m_calo_ch1_EM_mu {this, "m_calo_ch1_EM_mu", 330.0}; // factor used to do rough calibration of calo ch1 to EM energy: 0.33 GeV or 330 MeV - FloatProperty m_calo_ch2_EM_mu {this, "m_calo_ch2_EM_mu", 330.0}; // factor used to do rough calibration of calo ch2 to EM energy: 0.33 GeV or 330 MeV - FloatProperty m_calo_ch3_EM_mu {this, "m_calo_ch3_EM_mu", 330.0}; // factor used to do rough calibration of calo ch3 to EM energy: 0.33 GeV or 330 MeV - - float m_EM_mu_Map[4]; // vector that holds EM_mu calibration factors for calo channels - Gaudi::Property<bool> m_isMC {this, "isMC", false}; }; diff --git a/Calorimeter/CaloRecTools/CMakeLists.txt b/Calorimeter/CaloRecTools/CMakeLists.txt index f0e9f07b53f5426b360c2639d4f7953a44d57792..abfdf9927c6467cbd3f8e847c09a1b799b0b327b 100644 --- a/Calorimeter/CaloRecTools/CMakeLists.txt +++ b/Calorimeter/CaloRecTools/CMakeLists.txt @@ -13,7 +13,8 @@ atlas_add_library( CaloRecToolsLib CaloRecTools/*.h src/*.cxx src/*.h PUBLIC_HEADERS CaloRecTools PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES AthenaBaseComps AthenaPoolUtilities AthenaKernel GaudiKernel + LINK_LIBRARIES xAODFaserWaveform xAODFaserCalorimeter + AthenaBaseComps AthenaPoolUtilities AthenaKernel GaudiKernel PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ) diff --git a/Calorimeter/CaloRecTools/CaloRecTools/ICaloRecTool.h b/Calorimeter/CaloRecTools/CaloRecTools/ICaloRecTool.h index feb141d915d6214a681f437d94b8118e14c33820..e52efd93dd560bc38a83b9a23c10c16e6df533d9 100644 --- a/Calorimeter/CaloRecTools/CaloRecTools/ICaloRecTool.h +++ b/Calorimeter/CaloRecTools/CaloRecTools/ICaloRecTool.h @@ -17,6 +17,10 @@ #include "GaudiKernel/ToolHandle.h" #include "GaudiKernel/EventContext.h" +// Data Classes +// #include "xAODFaserWaveform/WaveformHit.h" +#include "xAODFaserCalorimeter/CalorimeterHit.h" + #include "TF1.h" ///Interface for Calo reco algorithms @@ -40,6 +44,11 @@ class ICaloRecTool : virtual public IAlgTool virtual float getMIPcharge_ref(int channel) const = 0; virtual TF1 get_PMT_HV_curve(int channel) const = 0; + + // Reconstruct one waveform hit and put the resulting Calorimeter hit in the container + virtual void reconstruct(const EventContext& ctx, + xAOD::CalorimeterHit* hit, + bool correct_gain) const = 0; }; #endif // CALORECTOOL_ICALORECTOOL_H diff --git a/Calorimeter/CaloRecTools/src/CaloRecTool.cxx b/Calorimeter/CaloRecTools/src/CaloRecTool.cxx index 916011019805ab9087c57427859086dec456eb80..01a81e287ca312ecde8616cf22a1c23a29186767 100644 --- a/Calorimeter/CaloRecTools/src/CaloRecTool.cxx +++ b/Calorimeter/CaloRecTools/src/CaloRecTool.cxx @@ -40,6 +40,29 @@ CaloRecTool::initialize() { HVgaincurves_rootFile->Close(); // close the root file + // These should be in DB, but just hardcode this for now + m_MIP_sim_Edep[0] = m_MIP_sim_Edep_calo.value(); + m_MIP_sim_Edep[1] = m_MIP_sim_Edep_calo.value(); + m_MIP_sim_Edep[2] = m_MIP_sim_Edep_calo.value(); + m_MIP_sim_Edep[3] = m_MIP_sim_Edep_calo.value(); + + m_MIP_sim_Edep[12] = m_MIP_sim_Edep_preshower.value(); + m_MIP_sim_Edep[13] = m_MIP_sim_Edep_preshower.value(); + + m_MIP_sim_Edep[16] = m_MIP_sim_Edep_calo2.value(); + m_MIP_sim_Edep[17] = m_MIP_sim_Edep_calo2.value(); + m_MIP_sim_Edep[18] = m_MIP_sim_Edep_calo2.value(); + m_MIP_sim_Edep[19] = m_MIP_sim_Edep_calo2.value(); + + m_EM_mu_Map[0] = m_calo_EM_mu.value(); + m_EM_mu_Map[1] = m_calo_EM_mu.value(); + m_EM_mu_Map[2] = m_calo_EM_mu.value(); + m_EM_mu_Map[3] = m_calo_EM_mu.value(); + + m_EM_mu_Map[16] = m_calo_EM_mu.value(); + m_EM_mu_Map[17] = m_calo_EM_mu.value(); + m_EM_mu_Map[18] = m_calo_EM_mu.value(); + m_EM_mu_Map[19] = m_calo_EM_mu.value(); return StatusCode::SUCCESS; } @@ -150,7 +173,7 @@ float CaloRecTool::getMIPcharge_ref(const EventContext& ctx, int channel) const ATH_MSG_DEBUG("in getMIPcharge_ref("<<channel<<")"); - float MIP_charge_ref =0.; + float MIP_charge_ref =1.; // Default for no calibration parameters // Read Cond Handle SG::ReadCondHandle<CondAttrListCollection> readHandle{m_MIP_ref_ReadKey, ctx}; @@ -187,8 +210,63 @@ float CaloRecTool::getMIPcharge_ref(int channel) const { return CaloRecTool::getMIPcharge_ref(ctx, channel); } +//---------------------------------------------------------------------- +float CaloRecTool::extrapolateHVgain(const EventContext& ctx, int channel) const { + float PMT_hv = getHV(ctx, channel); + float PMT_hv_ref = getHV_ref(ctx, channel); + TF1 gaincurve = get_PMT_HV_curve(channel); + + float gaincurve_atHV = gaincurve.Eval(PMT_hv); + float gaincurve_atHVref = gaincurve.Eval(PMT_hv_ref); + + return ( gaincurve_atHVref / gaincurve_atHV ) * pow( PMT_hv_ref / PMT_hv , 6.6); +} + //-------------------------------------------------------------- +//---------------------------------------------------------------------- +// Reconstruct one waveform hit +//xAOD::CalorimeterHit* +void +CaloRecTool::reconstruct(const EventContext& ctx, + xAOD::CalorimeterHit* calo_hit, + bool correct_gain=false) const { + + // Get the waveform hit attached to this calo hit + const xAOD::WaveformHit* wave_hit = calo_hit->Hit(0); + ATH_MSG_DEBUG("calo_hit in channel " << wave_hit->channel() ); + + float MIPcharge_ref = getMIPcharge_ref(ctx, wave_hit->channel()); // get reference MIP charge from database + + float charge = wave_hit->integral()/50.0; // divide by 50 ohms to get charge + ATH_MSG_DEBUG("calo_hit filled has charge of " << charge << " pC"); + + float gainRatio = 1.0; + if (correct_gain) { // MC already has correct MIP charge stored in MIPcharge_ref, so only need to to HV extrapolation with reral data + gainRatio = extrapolateHVgain(ctx, wave_hit->channel()); + } + ATH_MSG_DEBUG("HV gain ratio = " << gainRatio ); + + float Nmip = (charge * gainRatio) / MIPcharge_ref; + ATH_MSG_DEBUG("Nmip = " << Nmip ); + calo_hit->set_Nmip(Nmip); // set Nmip value + + float E_dep = Nmip * m_MIP_sim_Edep[wave_hit->channel()]; + ATH_MSG_DEBUG("E_dep in MeV = " << E_dep ); + calo_hit->set_E_dep(E_dep); // set calibrated E_dep value + + float E_EM = Nmip * m_EM_mu_Map[wave_hit->channel()]; + ATH_MSG_DEBUG("Em E in MeV = " << E_EM ); + calo_hit->set_E_EM(E_EM); // set calibrated E_EM value + + float fit_to_raw_ratio = 1.0; + if (wave_hit->integral() != 0.0) { // avoid possibility of division by zero error + fit_to_raw_ratio = wave_hit->raw_integral() / wave_hit->integral(); + } + calo_hit->set_fit_to_raw_ratio(fit_to_raw_ratio); // set fit-to-raw-ratio that can be used to take any of the calibrated values to what they would be if we used the raw integral instead of the fit integral + +} + diff --git a/Calorimeter/CaloRecTools/src/CaloRecTool.h b/Calorimeter/CaloRecTools/src/CaloRecTool.h index 6ab891ad42784e3388d933f42de9267545fab3d9..de736af74393bf424b2fd471795aea7bc2808f52 100644 --- a/Calorimeter/CaloRecTools/src/CaloRecTool.h +++ b/Calorimeter/CaloRecTools/src/CaloRecTool.h @@ -25,6 +25,10 @@ #include "Gaudi/Property.h" #include "GaudiKernel/EventContext.h" +// Data Classes +#include "xAODFaserWaveform/WaveformHit.h" +#include "xAODFaserCalorimeter/CalorimeterHit.h" + // Include ROOT classes #include "TF1.h" #include "TFile.h" @@ -57,6 +61,11 @@ class CaloRecTool: public extends<AthAlgTool, ICaloRecTool> { // method for returning PMT HV calibration curves from root file virtual TF1 get_PMT_HV_curve(int channel) const override; + // Reconstruct one waveform hit and put the resulting Calorimeter hit in the container + virtual void reconstruct(const EventContext& ctx, + xAOD::CalorimeterHit* hit, + bool correct_gain) const override; + TFile* HVgaincurves_rootFile; TF1* chan0_HVgaincurve_pntr; @@ -80,6 +89,18 @@ class CaloRecTool: public extends<AthAlgTool, ICaloRecTool> { SG::ReadCondHandleKey<CondAttrListCollection> m_PMT_HV_ReadKey{this, "PMT_HV_ReadKey", "/WAVE/Calibration/HV", "Key of folder for PMT HV reading"}; SG::ReadCondHandleKey<CondAttrListCollection> m_MIP_ref_ReadKey{this, "MIP_ref_ReadKey", "/WAVE/Calibration/MIP_ref", "Key of folder for MIP charge calibration measurment, also stores PMT HV used to measure the reference MIP charge"}; + // Could also put these in DB, but just hardcode them for now + FloatProperty m_MIP_sim_Edep_calo {this, "MIP_sim_Edep_calo", 58.5}; // MIP deposits 5.85 MeV of energy in calo + FloatProperty m_MIP_sim_Edep_calo2 {this, "MIP_sim_Edep_calo", 58.5}; // MIP deposits 5.85 MeV of energy in calo + FloatProperty m_MIP_sim_Edep_preshower {this, "MIP_sim_Edep_preshower", 4.894}; // MIP deposits 4.894 MeV of energy in a preshower layer + + FloatProperty m_calo_EM_mu {this, "m_calo_EM_mu", 330.0}; // factor used to do rough calibration of calo to EM energy: 0.33 GeV or 330 MeV + + float m_MIP_sim_Edep[32]; // vector that holds Edep factors for calo and preshower + float m_EM_mu_Map[32]; // vector that holds EM_mu calibration factors for calo channels + + float extrapolateHVgain(const EventContext& ctx, int channel) const; + }; #endif // CALORECTOOLS_CALORECTOOL_H diff --git a/Control/CalypsoExample/Digitization/scripts/faser_digi.py b/Control/CalypsoExample/Digitization/scripts/faser_digi.py index 0da1361cec9191f96014543a68aaca777e0acff8..e718e7c2daa362a0a5e7447fd91e18f6534016a0 100755 --- a/Control/CalypsoExample/Digitization/scripts/faser_digi.py +++ b/Control/CalypsoExample/Digitization/scripts/faser_digi.py @@ -27,6 +27,8 @@ parser.add_argument("-t", "--tag", default="", help="Specify digi tag (to append to output filename)") parser.add_argument("--subtractTime", type=float, default=-999., help="Subtract time parameter for SCT RDOs") +parser.add_argument("--simpleTiming", action="store_true", + help="Use simple waveform time digitization") parser.add_argument("--digiTag", default="", help="Specify tag for waveform digi folder") parser.add_argument("--short", default="", @@ -76,11 +78,15 @@ if runtype == "TI12OldMC": # Testbeam setup elif runtype == "TestBeamMC" : - ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" # New geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB01" # New TI12 geometry (ugh) -elif runtype == "TI12MC": +elif runtype == "TI12MC" or runtype == "TI12MC04": + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # New geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" + +elif runtype == "TI12MC03": ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" @@ -169,10 +175,10 @@ pualg.PileUpTools['FaserSCT_DigitizationTool'].SurfaceChargesGenerator.SubtractT # Pass something to set folder tag from CaloDigiAlgs.CaloDigiAlgsConfig import CaloWaveformDigitizationCfg -acc.merge(CaloWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag)) +acc.merge(CaloWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming))) from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg -acc.merge(ScintWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag)) +acc.merge(ScintWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming))) # Configure verbosity if args.verbose: diff --git a/Control/CalypsoExample/Digitization/scripts/faser_digi_merge.py b/Control/CalypsoExample/Digitization/scripts/faser_digi_merge.py index b945ffbbd19c024d549d0d0f84fdfca768759f68..bc60bc057c7ec92ba29ee1a5431445565c8304b7 100755 --- a/Control/CalypsoExample/Digitization/scripts/faser_digi_merge.py +++ b/Control/CalypsoExample/Digitization/scripts/faser_digi_merge.py @@ -35,6 +35,8 @@ parser.add_argument("-t", "--tag", default="", help="Specify digi tag (to append to output filename)") parser.add_argument("--subtractTime", type=float, default=-999., help="Subtract time parameter for SCT RDOs") +parser.add_argument("--simpleTiming", action="store_true", + help="Use simple waveform time digitization") parser.add_argument("--digiTag", default="", help="Specify tag for waveform digi folder") parser.add_argument("--short", default="", @@ -186,17 +188,21 @@ if runtype == "TI12OldMC": # Testbeam setup elif runtype == "TestBeamMC" : - ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" # New geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB01" # New TI12 geometry (ugh) -elif runtype == "TI12MC": - ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" +elif runtype == "TI12MC" or runtype == "TI12MC04": + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # New geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" + +elif runtype == "TI12MC03": + ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # Old geometry ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" else: - print("Invalid run type found:", runtype) - print("Specify correct type or update list") + print("Invalid geometry type found:", runtype) + print("Specify correct geometry or update list") sys.exit(-1) @@ -239,10 +245,10 @@ pualg.PileUpTools['FaserSCT_DigitizationTool'].SurfaceChargesGenerator.SubtractT # Pass something to set folder tag from CaloDigiAlgs.CaloDigiAlgsConfig import CaloWaveformDigitizationCfg -acc.merge(CaloWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag)) +acc.merge(CaloWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming))) from ScintDigiAlgs.ScintDigiAlgsConfig import ScintWaveformDigitizationCfg -acc.merge(ScintWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag)) +acc.merge(ScintWaveformDigitizationCfg(ConfigFlags, digiTag=args.digiTag, AdvancedTiming=(not args.simpleTiming))) # Configure verbosity if args.verbose: diff --git a/Control/CalypsoExample/Digitization/scripts/submit_faser_digi.sh b/Control/CalypsoExample/Digitization/scripts/submit_faser_digi.sh index fcf5e2045b192ef913a9fc1ea0b75c8fae4074bd..539c836a7008077172154ff3168bd681591a816f 100644 --- a/Control/CalypsoExample/Digitization/scripts/submit_faser_digi.sh +++ b/Control/CalypsoExample/Digitization/scripts/submit_faser_digi.sh @@ -2,9 +2,9 @@ # Used with a condor file to submit to vanilla universe # # Usage: -# submit_faser_digi.sh filepath [release_directory] [working_directory] +# submit_faser_digi.sh [--script_options --] filepath [release_directory] [working_directory] [--other_options] # -# Options: +# Script Options: # --digiTag <tag> - override digitization tag for calo gain # --geom - geometry setting # --out - specify output location (in EOS) to copy output HITS file @@ -14,6 +14,8 @@ # release_directory - optional path to release install directory (default pwd) # working_directory - optional path to output directory location (default pwd) # +# Other Options will be passed to digi script +# # The release directory must already be set up # (so an unqualified asetup can set up the release properly) # @@ -68,9 +70,36 @@ do done # # Parse command-line options -file_path=${1} -release_directory=${2} -working_directory=${3} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # and stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next parameter value + + if [ -z "$file_path" ] + then + file_path=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$file_path" ] @@ -125,17 +154,16 @@ echo "Time: $timestr" echo "Release: $release_directory" echo "Output: $output_directory" echo "Starting: $starting_directory" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # -# Try automatic # Always go back to the starting directory in case paths are relative cd "$starting_directory" cd "$release_directory" -# asetup -# source build/x8*/setup.sh # # Do this by hand asetup --input=calypso/asetup.faser Athena,22.0.49 @@ -185,10 +213,15 @@ cd "$file_stem" # # Run job # -faser_digi.py $geomstr $gainstr $timestr $tagstr "$file_path" +echo +echo "Submit job:" +echo faser_digi.py $geomstr $gainstr $timestr $tagstr "$@" "$file_path" +echo +# +faser_digi.py $geomstr $gainstr $timestr $tagstr "$@" "$file_path" digi_code=$? +# echo "Return code: $digi_code" - # # Print out ending time date diff --git a/Control/CalypsoExample/Digitization/scripts/submit_faser_digi_merge.sh b/Control/CalypsoExample/Digitization/scripts/submit_faser_digi_merge.sh index 50278c33e2435236fff3bc2b6a94c13aa5794817..ab9e886e493a4a1edf1be1e31147183db6cef395 100755 --- a/Control/CalypsoExample/Digitization/scripts/submit_faser_digi_merge.sh +++ b/Control/CalypsoExample/Digitization/scripts/submit_faser_digi_merge.sh @@ -2,9 +2,9 @@ # Used with a condor file to submit to vanilla universe # # Usage: -# submit_faser_digi_merge.sh dirpath slice nfiles [release_directory] [working_directory] +# submit_faser_digi_merge.sh [--script_options --] dirpath slice nfiles [release_directory] [working_directory] [--other_options] # -# Options: +# Script Options: # --digiTag <tag> - override digitization tag for calo gain # --partial - allow missing files in merge # --geom - geometry setting @@ -17,6 +17,8 @@ # release_directory - optional path to release install directory (default pwd) # working_directory - optional path to output directory location (default pwd) # +# Other Options will be passed to job script +# # The release directory must already be set up # (so an unqualified asetup can set up the release properly) # @@ -82,11 +84,44 @@ do done # # Parse command-line options -dir_path=${1} -slice=${2} -nfiles=${3} -release_directory=${4} -working_directory=${5} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # and stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next parameter value + + if [ -z "$dir_path" ] + then + dir_path=${1} + shift + elif [ -z "$slice" ] + then + slice=${1} + shift + elif [ -z "$nfiles" ] + then + nfiles=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$dir_path" ] @@ -161,17 +196,16 @@ echo "Release: $release_directory" echo "Output: $output_directory" echo "Starting: $starting_directory" echo "job: $file_stem" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # -# Try automatic # Always go back to the starting directory in case paths are relative cd "$starting_directory" cd "$release_directory" -# asetup -# source build/x8*/setup.sh # # Do this by hand asetup --input=calypso/asetup.faser Athena,22.0.49 @@ -221,7 +255,12 @@ cd "$file_stem" # # Run job # -faser_digi_merge.py $partialstr $geomstr $gainstr $timestr $tagstr --slice $slice --files $nfiles $dir_path +echo +echo "Submit job:" +echo faser_digi_merge.py $partialstr $geomstr $gainstr $timestr $tagstr --slice $slice --files $nfiles "$@" $dir_path +echo +# +faser_digi_merge.py $partialstr $geomstr $gainstr $timestr $tagstr --slice $slice --files $nfiles "$@" $dir_path digi_code=$? echo "Return code: $digi_code" # diff --git a/Control/CalypsoExample/Generation/scripts/faser_particlegun.py b/Control/CalypsoExample/Generation/scripts/faser_particlegun.py index 7ec05e2aaf4df3d434577b3d7f423bcf56856722..e4a1ca645efb3d7e9bc2183c3af7ddfa793ccc77 100755 --- a/Control/CalypsoExample/Generation/scripts/faser_particlegun.py +++ b/Control/CalypsoExample/Generation/scripts/faser_particlegun.py @@ -72,7 +72,15 @@ if __name__ == '__main__': ConfigFlags.addFlag("Sim.Beam.xshift", 0) # Potential beam shift ConfigFlags.addFlag("Sim.Beam.yshift", 0) - if args.geom == "TI12MC": + if args.geom == "TI12MC" or args.geom == "TI12MC04": + # New TI12 geometry + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # Geometry set-up + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Conditions set-up + # TI12 detectors + detectors = ['Veto', 'VetoNu', 'Preshower', 'FaserSCT', 'Ecal', 'Trigger', + 'Dipole', 'Emulsion', 'Trench'] + + elif args.geom == "TI12MC03": # 2022 TI12 geometry ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # Geometry set-up ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Conditions set-up @@ -82,8 +90,8 @@ if __name__ == '__main__': elif args.geom == "TestBeamMC": # Define 2021 test beam geometry - ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" # Geometry set-up - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" # Conditions set-up + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" # Geometry set-up + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB01" # Conditions set-up # Testbeam detectors (trigger layers are actually veto counters) detectors = ['Veto', 'Preshower', 'FaserSCT', 'Ecal'] diff --git a/Control/CalypsoExample/Generation/scripts/submit_faser_particlegun.sh b/Control/CalypsoExample/Generation/scripts/submit_faser_particlegun.sh index 441ef2923b397274b74f53b8530adf592dc3e76f..9706a6c3cdfd7fc8f45c78fdf8e48efd92db5a09 100755 --- a/Control/CalypsoExample/Generation/scripts/submit_faser_particlegun.sh +++ b/Control/CalypsoExample/Generation/scripts/submit_faser_particlegun.sh @@ -2,9 +2,9 @@ # Used with a condor file to submit to vanilla universe # # Usage: -# submit_faser_particlegun.sh config_file segment [release_directory] [working_directory] +# submit_faser_particlegun.sh [script_options --] config_file segment [release_directory] [working_directory] [--other_options] # -# Options: +# Script Options: # --out - specify output location (in EOS) to copy output HITS file # --log - specify output location (in EOS) for log file # @@ -13,6 +13,8 @@ # release_directory - optional path to release install directory (default pwd) # working_directory - optional path to output directory location (default pwd) # +# Other Options will be passed directly to job script +# # Afterwards, the output file will be copied to the directory specified in working_directory # # The release directory must already be set up @@ -52,10 +54,40 @@ do done # # Parse command-line options -config_path=${1} -segment=${2} -release_directory=${3} -working_directory=${4} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # and stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next parameter value + + if [ -z "$config_path" ] + then + config_path=${1} + shift + elif [ -z "$segment" ] + then + segment=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$config_path" ]; then @@ -125,22 +157,21 @@ echo "Segment: $seg_str" echo "Release: $release_directory" echo "Output: $output_directory" echo "Starting: $starting_directory" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # -# Try automatic # Always go back to the starting directory in case paths are relative cd "$starting_directory" cd "$release_directory" -# This doesn't seem to work, as we need the --input argument -#asetup -#source build/x8*/setup.sh # # Do this by hand asetup --input=calypso/asetup.faser Athena,22.0.49 source run/setup.sh +# echo "ATLAS_POOLCOND_PATH = $ATLAS_POOLCOND_PATH" # # @@ -184,12 +215,18 @@ cd "${config_file_stem}-${seg_str}" # # Run job if [[ -z "$tag" ]]; then - faser_particlegun.py "--conf=$config_path" "--segment=$seg_str" - gen_code=$? + tagstr="" else - faser_particlegun.py "--conf=$config_path" "--segment=$seg_str" "--tag=$tag" - gen_code=$? + tagstr="--reco=$tag" fi +# +echo +echo "Submit job:" +echo faser_particlegun.py "--conf=$config_path" "--segment=$seg_str" $tagstr "$@" +echo +faser_particlegun.py "--conf=$config_path" "--segment=$seg_str" $tagstr "$@" +gen_code=$? +# echo "Return code: $gen_code" # # Print out ending time diff --git a/Control/CalypsoExample/GeoModelTest/CMakeLists.txt b/Control/CalypsoExample/GeoModelTest/CMakeLists.txt index 772543c3ad28c4f31b5d42e382cff2cc79215192..b9b37519456d895ddda155051328ed5681505126 100644 --- a/Control/CalypsoExample/GeoModelTest/CMakeLists.txt +++ b/Control/CalypsoExample/GeoModelTest/CMakeLists.txt @@ -30,12 +30,21 @@ atlas_add_test( Faser03GeoCheck PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} PROPERTIES TIMEOUT 300 ) +atlas_add_test( Faser04GeoCheck + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/Faser04TestConfig.py + PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + PROPERTIES TIMEOUT 300 ) -atlas_add_test( TestBeamGeoCheck - SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/TestBeamTestConfig.py +atlas_add_test( TestBeam00GeoCheck + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/TestBeam00TestConfig.py PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} PROPERTIES TIMEOUT 300 ) +atlas_add_test( TestBeam01GeoCheck + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/python/TestBeam01TestConfig.py + PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + PROPERTIES TIMEOUT 300 ) + # Install files from the package: #atlas_install_headers( GeoModelTest ) #atlas_install_joboptions( share/*.py ) diff --git a/Control/CalypsoExample/GeoModelTest/python/Faser04TestConfig.py b/Control/CalypsoExample/GeoModelTest/python/Faser04TestConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..512eb5c7909f230863452171fa001140ea2c6c8a --- /dev/null +++ b/Control/CalypsoExample/GeoModelTest/python/Faser04TestConfig.py @@ -0,0 +1,68 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +#!/usr/bin/env python +import sys +from AthenaCommon.Constants import VERBOSE, INFO +from AthenaConfiguration.ComponentFactory import CompFactory + +def GeoModelTestCfg(flags, name="GeoModelTestAlg", **kwargs): + + # Initialize GeoModel + from FaserGeoModel.FaserGeoModelConfig import FaserGeometryCfg + a = FaserGeometryCfg(flags) + + # Initialize field service + from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg + a.merge(MagneticFieldSvcCfg(flags)) + + # Configure the algorithm itself + GeoModelTestAlg = CompFactory.GeoModelTestAlg + a.addEventAlgo(GeoModelTestAlg(name, FirstSCTStation=0, + LastSCTStation=3, + PrintSctIDs=True, + **kwargs)) + + return a + +if __name__ == "__main__": + from AthenaCommon.Logging import log#, logging + from AthenaCommon.Configurable import Configurable + from CalypsoConfiguration.AllConfigFlags import ConfigFlags + + Configurable.configurableRun3Behavior = True + +# Flags for this job + ConfigFlags.Input.isMC = True # Needed to bypass autoconfig + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Always needed; must match FaserVersion + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # Default FASER geometry + ConfigFlags.GeoModel.GeoExportFile = "FaserNu04.db" # Writes out a GeoModel file with the full geometry tree (optional, comment out to skip) + ConfigFlags.Detector.GeometryEmulsion = True + ConfigFlags.Detector.GeometryTrench = True + # ConfigFlags.Detector.EnableVeto = True + # ConfigFlags.Detector.EnableTrigger = True + # ConfigFlags.Detector.EnablePreshower= True + # ConfigFlags.Detector.EnableFaserSCT = True + # ConfigFlags.Detector.EnableUpstreamDipole = True + # ConfigFlags.Detector.EnableCentralDipole = True + # ConfigFlags.Detector.EnableDownstreamDipole = True + # ConfigFlags.Detector.EnableEcal = True + ConfigFlags.lock() + +# Configure components + from CalypsoConfiguration.MainServicesConfig import MainServicesCfg + acc = MainServicesCfg(ConfigFlags) + +# Set up algorithm + acc.merge(GeoModelTestCfg(ConfigFlags)) + +# Configure verbosity + msgSvc = acc.getService("MessageSvc") + msgSvc.Format = "% F%30W%S%7W%R%T %0W%M" + # ConfigFlags.dump() + # logging.getLogger('forcomps').setLevel(VERBOSE) + acc.foreach_component("*").OutputLevel = VERBOSE + acc.foreach_component("*ClassID*").OutputLevel = INFO + log.setLevel(VERBOSE) + +# Execute and finish + sys.exit(int(acc.run(maxEvents=1).isFailure())) diff --git a/Control/CalypsoExample/GeoModelTest/python/TestBeamTestConfig.py b/Control/CalypsoExample/GeoModelTest/python/TestBeam00TestConfig.py similarity index 100% rename from Control/CalypsoExample/GeoModelTest/python/TestBeamTestConfig.py rename to Control/CalypsoExample/GeoModelTest/python/TestBeam00TestConfig.py diff --git a/Control/CalypsoExample/GeoModelTest/python/TestBeam01TestConfig.py b/Control/CalypsoExample/GeoModelTest/python/TestBeam01TestConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..e68644c58f240db05bfde68b3eef482ffb4982ae --- /dev/null +++ b/Control/CalypsoExample/GeoModelTest/python/TestBeam01TestConfig.py @@ -0,0 +1,74 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +#!/usr/bin/env python +import sys +from AthenaCommon.Constants import VERBOSE, INFO +from AthenaConfiguration.ComponentFactory import CompFactory + +def GeoModelTestCfg(flags, name="GeoModelTestAlg", **kwargs): + + # Initialize GeoModel + from FaserGeoModel.FaserGeoModelConfig import FaserGeometryCfg + a = FaserGeometryCfg(flags) + + # Initialize field service + from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg + a.merge(MagneticFieldSvcCfg(flags)) + # Disable the field + cacheAlg = a.getCondAlgo("FaserFieldCacheCondAlg") + cacheAlg.UseDipoScale = 0.0 + cacheAlg.UseDCS = False + + # Configure the algorithm itself + GeoModelTestAlg = CompFactory.GeoModelTestAlg + a.addEventAlgo(GeoModelTestAlg(name, FirstSCTStation=0, + LastSCTStation=0, + NumVetoStations=1, + NumVetoPlatesPerStation=2, + NumVetoNuStations=0, + NumTriggerStations=0, + PrintSctIDs=True, + **kwargs)) + + return a + +if __name__ == "__main__": + from AthenaCommon.Logging import log#, logging + from AthenaCommon.Configurable import Configurable + from CalypsoConfiguration.AllConfigFlags import ConfigFlags + + Configurable.configurableRun3Behavior = True + +# Flags for this job + ConfigFlags.Input.isMC = True # Needed to bypass autoconfig + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" # Always needed; must match FaserVersion + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" # Default FASER geometry + # ConfigFlags.GeoModel.GeoExportFile = "faserTestBeamGeo.db" # Writes out a GeoModel file with the full geometry tree (optional, comment out to skip) + # ConfigFlags.Detector.EnableVeto = True + # ConfigFlags.Detector.EnableTrigger = True + # ConfigFlags.Detector.EnablePreshower= True + # ConfigFlags.Detector.EnableFaserSCT = True + # ConfigFlags.Detector.EnableUpstreamDipole = True + # ConfigFlags.Detector.EnableCentralDipole = True + # ConfigFlags.Detector.EnableDownstreamDipole = True + # ConfigFlags.Detector.EnableEcal = True + ConfigFlags.lock() + +# Configure components + from CalypsoConfiguration.MainServicesConfig import MainServicesCfg + acc = MainServicesCfg(ConfigFlags) + +# Set up algorithm + acc.merge(GeoModelTestCfg(ConfigFlags)) + +# Configure verbosity + msgSvc = acc.getService("MessageSvc") + msgSvc.Format = "% F%30W%S%7W%R%T %0W%M" + # ConfigFlags.dump() + # logging.getLogger('forcomps').setLevel(VERBOSE) + acc.foreach_component("*").OutputLevel = VERBOSE + acc.foreach_component("*ClassID*").OutputLevel = INFO + log.setLevel(VERBOSE) + +# Execute and finish + sys.exit(int(acc.run(maxEvents=1).isFailure())) diff --git a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py index 5f1af19df0f1e4c021b799854f06401082bece8b..7364646c289ab6480b6430b8c6f0884384e31f67 100755 --- a/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py +++ b/Control/CalypsoExample/Reconstruction/scripts/faser_reco.py @@ -61,8 +61,8 @@ elif args.testBeam: runtype = "TestBeamData" else: - print(f"Assuming TI12 geometry") - runtype = "TI12Data03" + print(f"Assuming 2024 TI12 geometry (TI12Data04)") + runtype = "TI12Data04" # Try to pick correct geometry from run number # This won't work for testbeam data, @@ -77,7 +77,7 @@ else: else: if runnumber > 6700: # Not sure if this is exact print(f"Found run number {runnumber}, using TI12 configuration with IFT+faserNu") - runtype = "TI12Data03" + runtype = "TI12Data04" elif runnumber > 5302: # Last TI12 run on Nov. 23, 2021 without IFT print(f"Found run number {runnumber}, using TI12 configuration with IFT") runtype = "TI12Data02" @@ -128,9 +128,10 @@ if runtype == "TI12Data": ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-01" # Testbeam setup -elif runtype == "TestBeamData" or runtype == "TestBeamMC": - ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" +elif runtype in ["TestBeamData", "TestBeamMC"]: + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB01" + print("Set global tag to OFLCOND-FASER-TB01") useCKF = False useCal = True @@ -140,9 +141,24 @@ elif runtype == "TI12Data02": ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Final 2022 TI12 geometry -elif runtype == "TI12Data03": - ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Updated 2023 alignment +elif runtype in ["TI12Data03", "TI12MC03"]: + ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" + # Ugh, this is a horrible hack + # and I am not sure it is even needed as there may not be a difference + # in reco between the MC global tags... + if args.isMC: + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Consistent with sim/digi + else: + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Updated 2023 alignment + + useCal = True + if not args.isMC: + useLHC = True + +# Updated 2023 TI12 geometry +elif runtype in ["TI12Data04", "TI12MC04"]: + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" useCal = True if not args.isMC: useLHC = True @@ -243,13 +259,25 @@ if useCKF: # # Kalman Filter for tracking + + # Do both forward and backward tracking from FaserActsKalmanFilter.CKF2Config import CKF2Cfg if not args.isOverlay: + # 4-station tracks acc.merge(CKF2Cfg(ConfigFlags, noDiagnostics=True)) # Add tracking collection with no IFT acc.merge(CKF2Cfg(ConfigFlags, maskedLayers=[0, 1, 2], name="CKF_woIFT", - OutputCollection="CKFTrackCollectionWithoutIFT", noDiagnostics=True)) + OutputCollection="CKFTrackCollectionWithoutIFT", + BackwardPropagation=False, + noDiagnostics=True)) + + + # Backward tracking with no IFT + acc.merge(CKF2Cfg(ConfigFlags, maskedLayers=[0, 1, 2], name="CKF_Back_woIFT", + OutputCollection="CKFTrackCollectionBackwardWithoutIFT", + BackwardPropagation=True, + noDiagnostics=True)) # # Configure output diff --git a/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh b/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh index 35d5f638e23e8b13866af28a8302c62c40b11b81..04ab885872c6bf320236eb22bb27b50bd1b0d0f7 100755 --- a/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh +++ b/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh @@ -2,7 +2,7 @@ # Used with a condor file to submit to vanilla universe # # Usage: -# submit_faser_reco.sh file_path [release_directory] [working_directory] [nevents] +# submit_faser_reco.sh [options --] file_path [release_directory] [working_directory] [nevents] --other_options # # Options: # --out - specify output location (in EOS) to copy output HITS file @@ -12,6 +12,8 @@ # Monte Carlo options: # --isMC - needed for MC reco # --caloTag <tag> - override MC reco tag for calo gain (to match digi tag) +# +# Other --options will be passed to faser_reco.py # # file_path - full file name (with path) # release_directory - optional path to release install directory (default pwd) @@ -74,15 +76,45 @@ do done # # Parse command-line arguments -file_path=${1} -release_directory=${2} -working_directory=${3} -nevents=${4} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # and stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next value + + if [ -z "$file_path" ] + then + file_path=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + elif [ -z "$nevents" ] + then + nevents=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$file_path" ] then - echo "No file_path specified!" + echo "No file_path specified!" exit 1 fi # @@ -136,16 +168,16 @@ echo "Gain: $gainstr" echo "Release: $release_directory" echo "Output: $output_directory" echo "Starting: $starting_directory" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # # Always go back to the starting directory in case paths are relative cd "$starting_directory" cd "$release_directory" -#asetup -#source build/x8*/setup.sh # # Do this by hand asetup --input=calypso/asetup.faser Athena,22.0.49 @@ -230,7 +262,12 @@ else mcstr="--isMC" fi # -faser_reco.py "--nevents=$nevents" $geomstr $tagstr $mcstr $gainstr "$file_path" +echo +echo "Submit job:" +echo faser_reco.py "--nevents=$nevents" $geomstr $tagstr $mcstr $gainstr "$@" "$file_path" +echo +# +faser_reco.py "--nevents=$nevents" $geomstr $tagstr $mcstr $gainstr "$@" "$file_path" reco_code=$? echo "Return code: $reco_code" # diff --git a/Control/CalypsoExample/SimHitExample/src/SimHitAlg.cxx b/Control/CalypsoExample/SimHitExample/src/SimHitAlg.cxx index 7fc371479fba5adee99cc327970f5226186a48e2..995578e5b9b29a96674f8323353297c6b66ebe75 100644 --- a/Control/CalypsoExample/SimHitExample/src/SimHitAlg.cxx +++ b/Control/CalypsoExample/SimHitExample/src/SimHitAlg.cxx @@ -25,6 +25,15 @@ StatusCode SimHitAlg::initialize() ATH_CHECK(histSvc()->regHist("/HIST/plate_trigger", m_plate_trigger)); ATH_CHECK(histSvc()->regHist("/HIST/plate_veto", m_plate_veto)); + m_veto_hitTime = new TH1D("vetoTime", "Veto hit time", 120, -30, 30); + m_preshower_hitTime = new TH1D("preshowerTime", "Preshower hit time", 120, -30, 30); + m_trigger_hitTime = new TH1D("triggerTime", "Trigger hit time", 120, -30, 30); + m_ecal_hitTime = new TH1D("ecalTime", "Ecal hit time", 120, -30, 30); + ATH_CHECK(histSvc()->regHist("/HIST/vetoTime", m_veto_hitTime)); + ATH_CHECK(histSvc()->regHist("/HIST/triggerTime", m_trigger_hitTime)); + ATH_CHECK(histSvc()->regHist("/HIST/preshowerTime", m_preshower_hitTime)); + ATH_CHECK(histSvc()->regHist("/HIST/ecalTime", m_ecal_hitTime)); + m_ecalEnergy = new TH1D("ecalEnergy", "Ecal Energy Fraction", 100, 0.0, 0.20); ATH_CHECK(histSvc()->regHist("/HIST/ecal_energy", m_ecalEnergy)); @@ -140,7 +149,7 @@ StatusCode SimHitAlg::execute() if (m_printScintillator) hit.print(); m_hist->Fill(hit.energyLoss()); m_plate_preshower->Fill(hit.getStation(),hit.getPlate(),hit.energyLoss()); - + m_preshower_hitTime->Fill(hit.meanTime(), hit.energyLoss()); } } @@ -150,7 +159,7 @@ StatusCode SimHitAlg::execute() if (m_printScintillator) hit.print(); m_hist->Fill(hit.energyLoss()); m_plate_trigger->Fill(hit.getStation(),hit.getPlate(),hit.energyLoss()); - + m_trigger_hitTime->Fill(hit.meanTime(), hit.energyLoss()); } } @@ -160,7 +169,7 @@ StatusCode SimHitAlg::execute() if (m_printScintillator) hit.print(); m_hist->Fill(hit.energyLoss()); m_plate_veto->Fill(hit.getStation(),hit.getPlate(),hit.energyLoss()); - + m_veto_hitTime->Fill(hit.meanTime(), hit.energyLoss()); } } @@ -171,6 +180,7 @@ StatusCode SimHitAlg::execute() { if (m_printCalorimeter) hit.print(); ecalTotal += hit.energyLoss(); + m_ecal_hitTime->Fill(hit.meanTime(), hit.energyLoss()); } if (ePrimary > 0) m_ecalEnergy->Fill(ecalTotal/ePrimary); } diff --git a/Control/CalypsoExample/SimHitExample/src/SimHitAlg.h b/Control/CalypsoExample/SimHitExample/src/SimHitAlg.h index b385c87ed8f193dc0c1b90df941de6cfbaa441a8..881365dedd2cdd996166babdade3d8c3cf8a4b68 100644 --- a/Control/CalypsoExample/SimHitExample/src/SimHitAlg.h +++ b/Control/CalypsoExample/SimHitExample/src/SimHitAlg.h @@ -30,9 +30,13 @@ class SimHitAlg : public AthHistogramAlgorithm TH2* m_plate_preshower; TH2* m_plate_trigger; TH2* m_plate_veto; + TH1* m_veto_hitTime; + TH1* m_preshower_hitTime; + TH1* m_trigger_hitTime; // Ecal histogram TH1* m_ecalEnergy; + TH1* m_ecal_hitTime; // Emulsion PDG_ID TH1* m_emulsionPDG; diff --git a/Control/CalypsoExample/Simulation/scripts/faser_simulate.py b/Control/CalypsoExample/Simulation/scripts/faser_simulate.py index 1c8320245e6ecfa61857a6d60d04d1cf8d538d54..a19ff44a2c07b357412ea81fa350bf0cd692539e 100755 --- a/Control/CalypsoExample/Simulation/scripts/faser_simulate.py +++ b/Control/CalypsoExample/Simulation/scripts/faser_simulate.py @@ -146,7 +146,15 @@ if __name__ == '__main__': # # Figure out configuration # - if args.geom == "TI12MC": + if args.geom == "TI12MC" or args.geom == "TI12MC04": + # New TI12 geometry + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # Geometry set-up + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Conditions set-up + # TI12 detectors + detectors = ['Veto', 'VetoNu', 'Preshower', 'FaserSCT', 'Ecal', + 'Trigger', 'Dipole', 'Emulsion', 'Trench'] + + elif args.geom == "TI12MC03": # 2022 TI12 geometry ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # Geometry set-up ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Conditions set-up @@ -156,8 +164,8 @@ if __name__ == '__main__': elif args.geom == "TestBeamMC": # Define 2021 test beam geometry - ConfigFlags.GeoModel.FaserVersion = "FASER-TB00" # Geometry set-up - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB00" # Conditions set-up + ConfigFlags.GeoModel.FaserVersion = "FASER-TB01" # Geometry set-up + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-TB01" # Conditions set-up # Testbeam detectors (trigger layers are actually veto counters) detectors = ['Veto', 'Preshower', 'FaserSCT', 'Ecal'] diff --git a/Control/CalypsoExample/Simulation/scripts/submit_faser_simulate.sh b/Control/CalypsoExample/Simulation/scripts/submit_faser_simulate.sh index 6e4d4df2eac92d4836c2b77104093ab2dd81c01c..4c32a716db6eeef977e58fb035a56b3451e6b3f7 100755 --- a/Control/CalypsoExample/Simulation/scripts/submit_faser_simulate.sh +++ b/Control/CalypsoExample/Simulation/scripts/submit_faser_simulate.sh @@ -2,10 +2,11 @@ # Used with a condor file to submit to vanilla universe # # Usage: -# submit_faserMDC_simluate.sh [--shift] input_file output_file [release_directory] [working_directory] [skip] [nevts] +# submit_faser_simluate.sh [--script_options --] input_file output_file [release_directory] [working_directory] [skip] [nevts] [--other_options] # -# Options: +# Script Options: # --shift - apply crossing angle (and FASER shift) +# --geom - specify geometry (default TI12) # --out - specify output location (in EOS) to copy output HITS file # --log - specify output location (in EOS) for log file # @@ -16,6 +17,8 @@ # skip - events in input file to skip # nevts = events in input file to process # +# Other options will be passed to faser_simulate.py +# # The release directory must already be set up # (so an unqualified asetup can set up the release properly) # @@ -40,6 +43,11 @@ do xangle=2 shift;; + -g | --geom) + geomstr="--geom $2"; + shift; + shift;; + -l | --log) logdest="$2"; shift; @@ -64,12 +72,48 @@ done # # Parse command-line arguments -infile=${1} -outfile=${2} -release_directory=${3} -working_directory=${4} -skip_events=${5} -nevts=${6} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # and stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next parameter value + + if [ -z "$infile" ] + then + infile=${1} + shift + elif [ -z "$outfile" ] + then + outfile=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + elif [ -z "$skip_events" ] + then + skip_events=${1} + shift + elif [ -z "$nevts" ] + then + nevts=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$infile" ] @@ -148,22 +192,22 @@ echo "Output: $output_directory" echo "Starting: $starting_directory" echo "Skip: $skip_events" echo "Nevts: $nevts" +echo "Geom: $geomstr" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # # Try automatic # Always go back to the starting directory in case paths are relative cd "$starting_directory" cd "$release_directory" -# This doesn't seem to work, as we need the --input argument -#asetup -#source build/x8*/setup.sh # # Do this by hand asetup --input=calypso/asetup.faser Athena,22.0.49 -source build/x86*/setup.sh +source run/setup.sh # # Move to the run directory cd "$starting_directory" @@ -186,17 +230,25 @@ cd "${file_stem}" # Run job #if [[ -z "$tag" ]]; then #fi +# if [[ -z "$xangle" ]]; then - faser_simulate.py --skip "$skip_events" -n "$nevts" "$infile" "$outfile" - sim_code=$? + angle_string="" elif [[ $xangle == 1 ]]; then - faser_simulate.py --yangle -0.000160 --yshift 12.0 --skip "$skip_events" -n "$nevts" "$infile" "$outfile" - sim_code=$? + echo "Applying standard crossing angle" + angle_string="--yangle -0.000160 --yshift 12.0" else echo "Applying double crossing-angle shift for FLUKA!" - faser_simulate.py --yangle -0.000310 --yshift 12.0 --skip "$skip_events" -n "$nevts" "$infile" "$outfile" - sim_code=$? + angle_string="--yangle -0.000310 --yshift 12.0" fi +# +echo +echo "Submit job:" +echo faser_simulate.py $geomstr $angle_string "$@" --skip "$skip_events" -n "$nevts" "$infile" "$outfile" +echo +# +faser_simulate.py $geomstr $angle_string "$@" --skip "$skip_events" -n "$nevts" "$infile" "$outfile" +sim_code=$? + echo "Return code: $sim_code" # # Print out ending time diff --git a/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.cxx b/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.cxx index c9d8f9f90a8b826ec5f3dcdd89fe928d859f17ec..166d219c6fe29670843d5169ba5fea1c597c45f3 100644 --- a/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.cxx +++ b/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.cxx @@ -27,6 +27,7 @@ RawWaveformAccess::initialize() // Must initialize SG handles ATH_CHECK( m_CaloWaveformContainer.initialize() ); + ATH_CHECK( m_Calo2WaveformContainer.initialize() ); ATH_CHECK( m_VetoWaveformContainer.initialize() ); ATH_CHECK( m_TriggerWaveformContainer.initialize() ); ATH_CHECK( m_PreshowerWaveformContainer.initialize() ); @@ -53,6 +54,10 @@ RawWaveformAccess::execute(const EventContext& ctx) const ATH_MSG_INFO("Found ReadHandle for CaloWaveforms"); ATH_MSG_INFO(*caloHandle); + SG::ReadHandle<RawWaveformContainer> calo2Handle(m_Calo2WaveformContainer, ctx); + ATH_MSG_INFO("Found ReadHandle for Calo2Waveforms"); + ATH_MSG_INFO(*caloHandle); + SG::ReadHandle<RawWaveformContainer> vetoHandle(m_VetoWaveformContainer, ctx); ATH_MSG_INFO("Found ReadHandle for VetoWaveforms"); ATH_MSG_INFO(*vetoHandle); diff --git a/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.h b/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.h index 07cc4deb42b978b655ebaa9fb1eb7738fbc5c390..b07edde805c383b9b3750a10953df27b8aa28df7 100644 --- a/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.h +++ b/Control/CalypsoExample/WaveformDataAccessExample/src/RawWaveformAccess.h @@ -32,6 +32,8 @@ class RawWaveformAccess: public AthReentrantAlgorithm /// StoreGate key SG::ReadHandleKey<RawWaveformContainer> m_CaloWaveformContainer { this, "CaloWaveformContainerKey", "CaloWaveforms", "ReadHandleKey for CaloWaveforms Container"}; + SG::ReadHandleKey<RawWaveformContainer> m_Calo2WaveformContainer + { this, "Calo2WaveformContainerKey", "Calo2Waveforms", "ReadHandleKey for Calo2Waveforms Container"}; SG::ReadHandleKey<RawWaveformContainer> m_VetoWaveformContainer { this, "VetoWaveformContainerKey", "VetoWaveforms", "ReadHandleKey for CaloWaveforms Container"}; SG::ReadHandleKey<RawWaveformContainer> m_TriggerWaveformContainer diff --git a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql index 81a979c3cc714898a733bc15ffa8896047c0d5a9..173bfcce2acfd6f43a530b039dee125c47a27b95 100644 --- a/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql +++ b/DetectorDescription/GeoModel/FaserGeoModel/data/geomDB.sql @@ -269,6 +269,21 @@ CREATE TABLE IF NOT EXISTS "VETORADIATORGENERAL_DATA2TAG" ( "VETORADIATORGENERAL_DATA_ID" SLONGLONG ); -- +DROP TABLE IF EXISTS "VETOWRAPPINGGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "VETOWRAPPINGGENERAL_DATA" ( + "VETOWRAPPINGGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "VETOWRAPPINGGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "VETOWRAPPINGGENERAL_DATA2TAG" ( + "VETOWRAPPINGGENERAL_TAG_ID" SLONGLONG, + "VETOWRAPPINGGENERAL_DATA_ID" SLONGLONG +); +-- -- Tables for describing VetoNu scintillator plates (and passive radiators) -- DROP TABLE IF EXISTS "VETONUTOPLEVEL_DATA"; @@ -392,6 +407,21 @@ CREATE TABLE IF NOT EXISTS "TRIGGERPLATEGENERAL_DATA2TAG" ( "TRIGGERPLATEGENERAL_DATA_ID" SLONGLONG ); -- +DROP TABLE IF EXISTS "TRIGGERWRAPPINGGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "TRIGGERWRAPPINGGENERAL_DATA" ( + "TRIGGERWRAPPINGGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "TRIGGERWRAPPINGGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "TRIGGERWRAPPINGGENERAL_DATA2TAG" ( + "TRIGGERWRAPPINGGENERAL_TAG_ID" SLONGLONG, + "TRIGGERWRAPPINGGENERAL_DATA_ID" SLONGLONG +); +-- -- Tables for describing Preshower scintillator plates (and passive radiators) -- DROP TABLE IF EXISTS "PRESHOWERTOPLEVEL_DATA"; @@ -480,6 +510,22 @@ CREATE TABLE IF NOT EXISTS "PRESHOWERABSORBERGENERAL_DATA2TAG" ( "PRESHOWERABSORBERGENERAL_DATA_ID" SLONGLONG ); -- +-- +DROP TABLE IF EXISTS "PRESHOWERWRAPPINGGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "PRESHOWERWRAPPINGGENERAL_DATA" ( + "PRESHOWERWRAPPINGGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "PRESHOWERWRAPPINGGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "PRESHOWERWRAPPINGGENERAL_DATA2TAG" ( + "PRESHOWERWRAPPINGGENERAL_TAG_ID" SLONGLONG, + "PRESHOWERWRAPPINGGENERAL_DATA_ID" SLONGLONG +); +-- -- Ecal top level tables -- DROP TABLE IF EXISTS "ECALTOPLEVEL_DATA"; @@ -839,11 +885,13 @@ INSERT INTO "HVS_NODE" VALUES (211, "VetoStationGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (212, "VetoPlateGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (214, "VetoSwitches", 21, 0, NULL ); INSERT INTO "HVS_NODE" VALUES (215, "VetoRadiatorGeneral", 21, 0, NULL); +INSERT INTO "HVS_NODE" VALUES (216, "VetoWrappingGeneral", 21, 0, NULL); INSERT INTO "HVS_NODE" VALUES (22, "Trigger", 2, 1, NULL); INSERT INTO "HVS_NODE" VALUES (220, "TriggerTopLevel", 22, 0, NULL); INSERT INTO "HVS_NODE" VALUES (221, "TriggerStationGeneral", 22, 0, NULL); INSERT INTO "HVS_NODE" VALUES (222, "TriggerPlateGeneral", 22, 0, NULL); INSERT INTO "HVS_NODE" VALUES (224, "TriggerSwitches", 22, 0, NULL ); +INSERT INTO "HVS_NODE" VALUES (226, "TriggerWrappingGeneral", 22, 0, NULL); INSERT INTO "HVS_NODE" VALUES (23, "Preshower", 2, 1, NULL); INSERT INTO "HVS_NODE" VALUES (230, "PreshowerTopLevel", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (231, "PreshowerStationGeneral", 23, 0, NULL); @@ -851,6 +899,7 @@ INSERT INTO "HVS_NODE" VALUES (232, "PreshowerPlateGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (234, "PreshowerSwitches", 23, 0, NULL ); INSERT INTO "HVS_NODE" VALUES (235, "PreshowerRadiatorGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (236, "PreshowerAbsorberGeneral", 23, 0, NULL); +INSERT INTO "HVS_NODE" VALUES (237, "PreshowerWrappingGeneral", 23, 0, NULL); INSERT INTO "HVS_NODE" VALUES (24, "VetoNu", 2, 1, NULL); INSERT INTO "HVS_NODE" VALUES (240, "VetoNuTopLevel", 24, 0, NULL); INSERT INTO "HVS_NODE" VALUES (241, "VetoNuStationGeneral", 24, 0, NULL); @@ -873,10 +922,12 @@ INSERT INTO "HVS_NODE" VALUES (317, "SctConditions", 31, 0, NULL); INSERT INTO "HVS_NODE" VALUES (318, "SctFrame", 31, 1, NULL); INSERT INTO "HVS_NODE" VALUES (3181, "SctFrameGeneral", 318, 0, NULL); INSERT INTO "HVS_NODE" VALUES (3182, "SctFrameShape", 318, 0, NULL); +INSERT INTO "HVS_NODE" VALUES (319, "SctWrappingGeneral", 31, 0, NULL); INSERT INTO "HVS_NODE" VALUES (32, "Dipole", 3, 1, NULL); INSERT INTO "HVS_NODE" VALUES (320, "DipoleTopLevel", 32, 0, NULL); INSERT INTO "HVS_NODE" VALUES (321, "DipoleGeneral", 32, 0, NULL); INSERT INTO "HVS_NODE" VALUES (324, "DipoleSwitches", 32, 0, NULL); +INSERT INTO "HVS_NODE" VALUES (329, "DipoleWrappingGeneral", 32, 0, NULL); INSERT INTO "HVS_NODE" VALUES (4, "Calorimeter", 0, 1, NULL); INSERT INTO "HVS_NODE" VALUES (41, "Ecal", 4, 1, NULL); INSERT INTO "HVS_NODE" VALUES (410, "EcalTopLevel", 41, 0, NULL); @@ -894,8 +945,10 @@ INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASER-CR", 107784, NULL, 0, 0, 1598400000 INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASER-02", 107788, NULL, 0, 0, 1619222400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASERNU-02", 107804, NULL, 0, 0, 1619308800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASER-TB00", 107834, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASER-TB01", 107854, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASERNU-03", 107835, NULL, 0, 0, 1652054400000000000, NULL, 22); -INSERT INTO "HVS_TAG2NODE" VALUES (90, "FaserCommon-00", 100013, NULL, 0, 0, 1549324800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (0, "FASERNU-04", 107853, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (90, "FaserCommon-00", 100013, NULL, 0, 0, 1549324800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (5, "Cavern-00", 107850, NULL, 0, 0, 1652313600000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (51, "Trench-00", 107851, NULL, 0, 0, 1652313600000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (514,"TrenchSwitches-00", 107852, NULL, 0, 0, 1652313600000000000, NULL, 22); @@ -906,33 +959,46 @@ INSERT INTO "HVS_TAG2NODE" VALUES (9003, "Elements-00", 100008, NULL, 0, 0, 1549 INSERT INTO "HVS_TAG2NODE" VALUES (1, "Neutrino-00", 100031, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (1, "Neutrino-TB00", 107811, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (1, "Neutrino-01", 107839, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (1, "Neutrino-02", 107895, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (11,"Emulsion-00", 100034, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (11,"Emulsion-TB00", 107812, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (11,"Emulsion-01", 107840, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (11,"Emulsion-02", 107894, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (110, "EmulsionTopLevel-00", 100035, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (110, "EmulsionTopLevel-TB00", 107813, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (110, "EmulsionTopLevel-01", 107841, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (110, "EmulsionTopLevel-02", 107892, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (111, "EmulsionGeneral-00", 107805, NULL, 0, 0, 1619308800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (111, "EmulsionGeneral-01", 107891, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (112, "EmulsionFilm-00", 107806, NULL, 0, 0, 1619308800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (113, "EmulsionPlates-00", 107807, NULL, 0, 0, 1619308800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (112, "EmulsionFilm-01", 107889, NULL, 0, 0, 1696550400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (113, "EmulsionPlates-01", 107888, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (114, "EmulsionSwitches-00", 100036, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (115, "EmulsionSupport-00", 107842, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (115, "EmulsionSupport-01", 107893, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-00", 100001, NULL, 0, 0, 1549238400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-01", 100042, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-02", 107789, NULL, 0, 0, 1619222400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-TB00", 107814, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-TB01", 107862, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-03", 107843, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (2, "Scintillator-04", 107861, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-00", 100002, NULL, 0, 0, 1549238400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-01", 100038, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-CR", 107783, NULL, 0, 0, 1598400000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-02", 107790, NULL, 0, 0, 1619222400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-TB00", 107815, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-03", 107836, NULL, 0, 0, 1652054400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-04", 107882, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (3, "Tracker-TB01", 107883, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-00", 100026, NULL, 0, 0, 1567987200000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-01", 100037, NULL, 0, 0, 1159079680000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-CR", 107781, NULL, 0, 0, 1598400000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-02", 107791, NULL, 0, 0, 1619222400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-TB00", 107816, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-04", 107880, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (31, "SCT-TB01", 107881, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (32, "Dipole-00", 100027, NULL, 0, 0, 1568678400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (32, "Dipole-01", 100041, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (32, "Dipole-02", 107792, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -955,6 +1021,8 @@ INSERT INTO "HVS_TAG2NODE" VALUES (317, "SctConditions-00", 107779, NULL, 0, 0, INSERT INTO "HVS_TAG2NODE" VALUES (318, "SctFrame-00", 100053, NULL, 0, 0, 1591574400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3181,"SctFrameGeneral-00", 100054, NULL, 0, 0, 1591574400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3182,"SctFrameShape-00", 100055, NULL, 0, 0, 1591574400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (319, "SctWrappingGeneral-00", 107878, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (319, "SctWrappingGeneral-01", 107879, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (320, "DipoleTopLevel-00", 100029, NULL, 0, 0, 1568678400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (320, "DipoleTopLevel-01", 100040, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (320, "DipoleTopLevel-02", 107794, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -962,18 +1030,27 @@ INSERT INTO "HVS_TAG2NODE" VALUES (320, "DipoleTopLevel-TB00", 107819, NULL, 0, INSERT INTO "HVS_TAG2NODE" VALUES (320, "DipoleTopLevel-03", 107838, NULL, 0, 0, 1652054400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (321, "DipoleGeneral-00", 100004, NULL, 0, 0, 1568678400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (324, "DipoleSwitches-00", 100028, NULL, 0, 0, 1568678400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (329, "DipoleWrappingGeneral-00", 107884, NULL, 0, 0, 1688515200000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (329, "DipoleWrappingGeneral-01", 107885, NULL, 0, 0, 1688515200000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (4, "Calorimeter-00", 100003, NULL, 0, 0, 1549238400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (4, "Calorimeter-02", 107795, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (4, "Calorimeter-04", 107858, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (4, "Calorimeter-TB00", 107820, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (4, "Calorimeter-TB01", 107859, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (41, "Ecal-00", 100056, NULL, 0, 0, 1593907200000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (41, "Ecal-02", 107796, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (41, "Ecal-04", 107856, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (41, "Ecal-TB00", 107821, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (41, "Ecal-TB01", 107857, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (410, "EcalTopLevel-00", 100058, NULL, 0, 0, 1599350400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (410, "EcalTopLevel-02", 107797, NULL, 0, 0, 1619222400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (410, "EcalTopLevel-TB00", 107822, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (410, "EcalTopLevel-04", 107886, NULL, 0, 0, 1695600000000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (410, "EcalTopLevel-TB01", 107887, NULL, 0, 0, 1695600000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (411, "EcalRowGeneral-00", 100059, NULL, 0, 0, 1599350400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (411, "EcalRowGeneral-TB00", 107830, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (414, "EcalSwitches-00", 100057, NULL, 0, 0, 1593907200000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (414, "EcalSwitches-01", 107855, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (210, "VetoTopLevel-00", 100009, NULL, 0, 0, 1567123200000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (210, "VetoTopLevel-01", 100046, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (210, "VetoTopLevel-02", 107798, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -981,9 +1058,13 @@ INSERT INTO "HVS_TAG2NODE" VALUES (210, "VetoTopLevel-TB00", 107823, NULL, 0, 0 INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-00", 100010, NULL, 0, 0, 1567123200000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (212, "VetoPlateGeneral-00", 100025, NULL, 0, 0, 1567209600000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-01", 100049, NULL, 0, 0, 1590796800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-02", 107868, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (212, "VetoPlateGeneral-01", 100050, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-TB00", 107833, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (211, "VetoStationGeneral-TB01", 107867, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (215, "VetoRadiatorGeneral-00", 107810, NULL, 0, 0, 1627776000000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (216, "VetoWrappingGeneral-00", 107863, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (216, "VetoWrappingGeneral-01", 107864, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-00", 110009, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-01", 100047, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-02", 107799, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -991,6 +1072,8 @@ INSERT INTO "HVS_TAG2NODE" VALUES (220, "TriggerTopLevel-TB00", 107824, NULL, 0 INSERT INTO "HVS_TAG2NODE" VALUES (221, "TriggerStationGeneral-00", 110010, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (221, "TriggerStationGeneral-01", 100051, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (222, "TriggerPlateGeneral-00", 110025, NULL, 0, 0, 1581292800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (226, "TriggerWrappingGeneral-00", 107869, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (226, "TriggerWrappingGeneral-01", 107870, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (230, "PreshowerTopLevel-00", 120009, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (230, "PreshowerTopLevel-01", 100048, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (230, "PreshowerTopLevel-02", 107800, NULL, 0, 0, 1619222400000000000, NULL, 22); @@ -999,17 +1082,19 @@ INSERT INTO "HVS_TAG2NODE" VALUES (231, "PreshowerStationGeneral-00", 120010, N INSERT INTO "HVS_TAG2NODE" VALUES (231, "PreshowerStationGeneral-01", 100052, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (232, "PreshowerPlateGeneral-00", 120025, NULL, 0, 0, 1581292800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (235, "PreshowerRadatorGeneral-00", 107808, NULL, 0, 0, 1627776000000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (235, "PreshowerRadatorGeneral-01", 107877, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (236, "PreshowerAbsorberGeneral-00", 107809, NULL, 0, 0, 1627776000000000000, NULL, 22); - +INSERT INTO "HVS_TAG2NODE" VALUES (237, "PreshowerWrappingGeneral-00", 107875, NULL, 0, 0, 1685836800000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (237, "PreshowerWrappingGeneral-01", 107876, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (240, "VetoNuTopLevel-00", 107845, NULL, 0, 0, 1652054400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (241, "VetoNuStationGeneral-00", 107846, NULL, 0, 0, 1652054400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (242, "VetoNuPlateGeneral-00", 107847, NULL, 0, 0, 1652054400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (245, "VetoNuRadiatorGeneral-00", 107849, NULL, 0, 0, 1652054400000000000, NULL, 22); - INSERT INTO "HVS_TAG2NODE" VALUES (1003, "NeutrinoMaterials-00", 100032, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (1004, "NeutrinoMatComponents-00", 100033, NULL, 0, 0, 1582416000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2003, "ScintMaterials-00", 100011, NULL, 0, 0, 1549238400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2004, "ScintMatComponents-00", 100012, NULL, 0, 0, 1549238400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (2004, "ScintMatComponents-01", 107860, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3003, "TrackerMaterials-00", 100021, NULL, 0, 0, 1550448000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3004, "TrackerMatComponents-00", 100022, NULL, 0, 0, 1550448000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (4003, "CaloMaterials-00", 100023, NULL, 0, 0, 1550448000000000000, NULL, 22); @@ -1025,14 +1110,20 @@ INSERT INTO "HVS_TAG2NODE" VALUES (21, "Veto-01", 100043, NULL, 0, 0, 15907 INSERT INTO "HVS_TAG2NODE" VALUES (22, "Trigger-01", 100044, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (23, "Preshower-01", 100045, NULL, 0, 0, 1590796800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (21, "Veto-02", 107801, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (21, "Veto-04", 107865, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (22, "Trigger-02", 107802, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (22, "Trigger-04", 107871, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (23, "Preshower-02", 107803, NULL, 0, 0, 1619222400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (23, "Preshower-04", 107873, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (21, "Veto-TB00", 107826, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (21, "Veto-TB01", 107866, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (22, "Trigger-TB00", 107827, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (22, "Trigger-TB01", 107872, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (23, "Preshower-TB00", 107828, NULL, 0, 0, 1627862400000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (23, "Preshower-TB01", 107874, NULL, 0, 0, 1685836800000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (24, "VetoNu-00", 107844, NULL, 0, 0, 1652054400000000000, NULL, 22); - INSERT INTO "HVS_TAG2NODE" VALUES (1005, "NeutrinoIdentifier-00", 100030, NULL, 0, 0, 1582416000000000000, NULL, 22); +INSERT INTO "HVS_TAG2NODE" VALUES (1005, "NeutrinoIdentifier-01", 107890, NULL, 0, 0, 1696550400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2005, "ScintIdentifier-00", 100016, NULL, 0, 0, 1550448000000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (2005, "ScintIdentifier-TB00", 107832, NULL, 0, 0, 1627862400000000000, NULL, 22); INSERT INTO "HVS_TAG2NODE" VALUES (3005, "TrackerIdentifier-00", 100017, NULL, 0, 0, 1550448000000000000, NULL, 22); @@ -1044,44 +1135,58 @@ INSERT INTO "HVS_TAG2NODE" VALUES (4005, "CaloIdentifier-TB00", 107831, NULL, 0, -- Data for the HVS_LTAG2LTAG table INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 1, 100031); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 1, 107839); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 1, 107839); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 1, 107811); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 1, 107811); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100000, 2, 100001); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100039, 2, 100042); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107784, 2, 100042); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107788, 2, 107789); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 2, 107789); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 2, 107814); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 2, 107862); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 2, 107843); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 2, 107861); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100000, 3, 100002); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100039, 3, 100038); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107784, 3, 107783); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107788, 3, 107790); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 3, 107790); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 3, 107815); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 3, 107883); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 3, 107836); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 3, 107882); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100000, 4, 100003); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100039, 4, 100003); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107784, 4, 100003); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107788, 4, 107795); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 4, 107795); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 4, 107820); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 4, 107859); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 4, 107795); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 4, 107858); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100000, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100039, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107788, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 90, 100013); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 90, 100013); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 90, 100013); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 5, 107850); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 5, 107850); INSERT INTO "HVS_LTAG2LTAG" VALUES (5, 107850, 51, 107851); INSERT INTO "HVS_LTAG2LTAG" VALUES (51, 107835, 514, 107852); +INSERT INTO "HVS_LTAG2LTAG" VALUES (51, 107853, 514, 107852); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100000, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 100039, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107784, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107788, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107804, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107834, 9000, 100005); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107854, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107835, 9000, 100005); +INSERT INTO "HVS_LTAG2LTAG" VALUES (0, 107853, 9000, 100005); INSERT INTO "HVS_LTAG2LTAG" VALUES (9000, 100005, 9001, 100006); INSERT INTO "HVS_LTAG2LTAG" VALUES (9000, 100005, 9002, 100007); INSERT INTO "HVS_LTAG2LTAG" VALUES (9000, 100005, 9003, 100008); @@ -1125,10 +1230,17 @@ INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107789, 23, 107803); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 21, 107826); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 22, 107827); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 23, 107828); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 21, 107866); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 22, 107872); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 23, 107874); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 21, 107801); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 22, 107802); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 23, 107803); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 24, 107844); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 21, 107865); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 22, 107871); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 23, 107873); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 24, 107844); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 100001, 2003, 100011); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 100001, 2004, 100012); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 100001, 2005, 100016); @@ -1139,62 +1251,112 @@ INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107789, 2003, 100011); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107789, 2004, 100012); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107789, 2005, 100016); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 2003, 100011); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 2003, 100011); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 2004, 100012); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 2004, 107860); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107814, 2005, 100016); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107862, 2005, 100016); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 2003, 100011); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 2003, 100011); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 2004, 100012); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 2004, 107860); INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107843, 2005, 100016); +INSERT INTO "HVS_LTAG2LTAG" VALUES (2, 107861, 2005, 100016); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100015, 210, 100009); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100043, 210, 100046); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 210, 100046); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 210, 100046); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107826, 210, 107823); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 210, 107823); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100015, 211, 100010); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100043, 211, 100049); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 211, 100049); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 211, 100049); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107826, 211, 100049); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 211, 107868); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100015, 212, 100025); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100043, 212, 100050); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 212, 100050); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 212, 100025); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107826, 212, 100050); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 212, 100025); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100015, 214, 100014); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 100043, 214, 100014); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 214, 100014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 214, 100014); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107826, 214, 100014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 214, 100014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107826, 216, 107863); INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 215, 107810); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107801, 216, 107863); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 215, 107810); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107865, 216, 107864); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 215, 107810); +INSERT INTO "HVS_LTAG2LTAG" VALUES (21, 107866, 216, 107864); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100019, 220, 110009); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100044, 220, 100047); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107802, 220, 100047); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107871, 220, 100047); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107827, 220, 107824); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107872, 220, 107824); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100019, 221, 110010); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100044, 221, 100051); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107802, 221, 100051); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107871, 221, 100051); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107827, 221, 100051); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107872, 221, 100051); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100019, 222, 110025); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100044, 222, 110025); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107802, 222, 110025); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107871, 222, 110025); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107827, 222, 110025); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107872, 222, 110025); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100019, 224, 110014); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 100044, 224, 110014); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107802, 224, 110014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107871, 224, 110014); INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107827, 224, 110014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107872, 224, 110014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107827, 226, 107869); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107802, 226, 107869); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107871, 226, 107870); +INSERT INTO "HVS_LTAG2LTAG" VALUES (22, 107872, 226, 107870); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100020, 230, 120009); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100045, 230, 120048); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 230, 120048); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 230, 107825); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 230, 120048); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 230, 107825); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100020, 231, 120010); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100045, 231, 100052); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 231, 100052); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 231, 100052); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 231, 100052); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 231, 100052); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100020, 232, 120025); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100045, 232, 120025); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 232, 120025); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 232, 120025); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 232, 120025); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 232, 120025); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100020, 234, 120014); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 100045, 234, 120014); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 234, 120014); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 234, 120014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 234, 120014); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 234, 120014); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 235, 107808); INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 236, 107809); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107803, 237, 107875); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 235, 107808); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 236, 107809); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107828, 237, 107875); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 235, 107877); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 236, 107809); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107873, 237, 107876); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 235, 107877); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 236, 107809); +INSERT INTO "HVS_LTAG2LTAG" VALUES (23, 107874, 237, 107876); INSERT INTO "HVS_LTAG2LTAG" VALUES (24, 107844, 240, 107845); INSERT INTO "HVS_LTAG2LTAG" VALUES (24, 107844, 241, 107846); INSERT INTO "HVS_LTAG2LTAG" VALUES (24, 107844, 242, 107847); @@ -1205,29 +1367,39 @@ INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100038, 31, 100037); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107783, 31, 107781); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 31, 107791); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107815, 31, 107816); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107883, 31, 107881); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107836, 31, 107791); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107882, 31, 107880); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100002, 32, 100027); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100038, 32, 100041); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 32, 107792); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107815, 32, 107817); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107836, 32, 107837); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107883, 32, 107817); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107882, 32, 107837); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100002, 3003, 100021); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100038, 3003, 100021); -INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 3003, 100021); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107815, 3003, 100021); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107836, 3003, 100021); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107882, 3003, 100021); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107883, 3003, 100021); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 3003, 100021); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100002, 3004, 100022); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100038, 3004, 100022); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 3004, 100022); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107815, 3004, 100022); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107836, 3004, 100022); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107882, 3004, 100022); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107883, 3004, 100022); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100002, 3005, 100017); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 100038, 3005, 100017); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107781, 3005, 107785); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107790, 3005, 107787); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107815, 3005, 107829); INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107836, 3005, 107787); -INSERT INTO "HVS_LTAG2LTAG" VALUES (31, 100026, 310, 106788); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107882, 3005, 107829); +INSERT INTO "HVS_LTAG2LTAG" VALUES (3, 107883, 3005, 107787); +INSERT INTO "HVS_LTAG2LTAG" VALUES (31, 100026, 310, 106788); -- todo: add links to sct-04 (107791->107880) and sct-tb01 (107816->107881) below here INSERT INTO "HVS_LTAG2LTAG" VALUES (31, 100037, 310, 106790); INSERT INTO "HVS_LTAG2LTAG" VALUES (31, 100081, 310, 107786); INSERT INTO "HVS_LTAG2LTAG" VALUES (31, 107791, 310, 106790); @@ -1284,7 +1456,9 @@ INSERT INTO "HVS_LTAG2LTAG" VALUES (32, 107817, 324, 100028); INSERT INTO "HVS_LTAG2LTAG" VALUES (32, 107837, 324, 100028); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 100003, 41, 100056); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 107795, 41, 107796); +INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 107858, 41, 107856); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 107820, 41, 107821); +INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 107859, 41, 107857); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 100003, 4003, 100023); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 100003, 4004, 100024); INSERT INTO "HVS_LTAG2LTAG" VALUES (4, 100003, 4005, 100018); @@ -1301,8 +1475,10 @@ INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 100056, 411, 100059); INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 100056, 414, 100057); INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107796, 411, 100059); INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107796, 414, 100057); +INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107856, 414, 107855); INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107821, 411, 107830); INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107821, 414, 100057); +INSERT INTO "HVS_LTAG2LTAG" VALUES (41, 107857, 414, 107855); -- Data for the HVS_TAGCACHE table INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "FASER", "FASER-00", 100000); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "FaserCommon", "FaserCommon-00", 100013); @@ -1341,6 +1517,11 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoTopLevel", "VetoTopLev INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoStationGeneral", "VetoStationGeneral-00", 100010); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoPlateGeneral", "VetoPlateGeneral-00", 100025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerTopLevel", "TriggerTopLevel-00", 110009); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerStationGeneral", "TriggerStationGeneral-00", 110010); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-00", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); @@ -1405,6 +1586,11 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoTopLevel", "VetoTopLev INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerTopLevel", "TriggerTopLevel-01", 100047); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-01", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); @@ -1469,6 +1655,11 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoTopLevel", "VetoTopLev INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerTopLevel", "TriggerTopLevel-01", 100047); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-CR", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); @@ -1529,6 +1720,11 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoTopLevel", "VetoTopLev INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerTopLevel", "TriggerTopLevel-02", 107799); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-02", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); @@ -1596,6 +1792,11 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoTopLevel", "VetoTopL INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerTopLevel", "TriggerTopLevel-02", 107799); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-02", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); @@ -1650,10 +1851,12 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "SctConditions", "SctCondi INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "SctFrame", "SctFrame-00", 100053); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "SctFrameGeneral", "SctFrameGeneral-00", 100054); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "SctFrameShape", "SctFrameShape-00", 100055); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "Dipole", "Dipole-TB00", 107817); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "DipoleTopLevel", "DipoleTopLevel-TB00", 107819); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "DipoleGeneral", "DipoleGeneral-00", 100004); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "DipoleSwitches", "DipoleSwitches-00", 100028); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "Calorimeter", "Calorimeter-TB00", 107820); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "Ecal", "Ecal-TB00", 107821); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "EcalTopLevel", "EcalTopLevel-TB00", 107822); @@ -1663,14 +1866,17 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "VetoTopLevel", "VetoTopL INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "VetoStationGeneral", "VetoStationGeneral-TB00", 107833); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "VetoRadiatorGeneral","VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "TriggerTopLevel", "TriggerTopLevel-TB00", 107824); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerTopLevel", "PreshowerTopLevel-TB00", 107825); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB00", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1721,10 +1927,12 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "SctConditions", "SctCondi INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "SctFrame", "SctFrame-00", 100053); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "SctFrameGeneral", "SctFrameGeneral-00", 100054); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "SctFrameShape", "SctFrameShape-00", 100055); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "SctWrappingGeneral", "SctWrappingGeneral-00", 107878); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "Dipole", "Dipole-03", 107837); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "DipoleTopLevel", "DipoleTopLevel-03", 107838); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "DipoleGeneral", "DipoleGeneral-00", 100004); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "DipoleSwitches", "DipoleSwitches-00", 100028); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "DipoleWrappingGeneral", "DipoleWrappingGeneral-00", 107884); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "Calorimeter", "Calorimeter-02", 107795); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "Ecal", "Ecal-02", 107796); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "EcalTopLevel", "EcalTopLevel-02", 107797); @@ -1734,6 +1942,7 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoTopLevel", "VetoTopL INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoStationGeneral", "VetoStationGeneral-01", 100049); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoPlateGeneral", "VetoPlateGeneral-01", 100050); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoWrappingGeneral", "VetoWrappingGeneral-00", 107863); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoNuTopLevel", "VetoNuTopLevel-00", 107845); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoNuStationGeneral", "VetoNuStationGeneral-00", 107846); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoNuPlateGeneral", "VetoNuPlateGeneral-00", 107847); @@ -1741,11 +1950,13 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "VetoNuRadiatorGeneral","VetoNu INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "TriggerTopLevel", "TriggerTopLevel-02", 107799); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "TriggerWrappingGeneral", "TriggerWrappingGeneral-00", 107869); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerTopLevel", "PreshowerTopLevel-02", 107800); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-00", 107808); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-00", 107875); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "ScintMaterials", "ScintMaterials-00", 100011); @@ -1766,6 +1977,160 @@ INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "NeutrinoIdentifier", "Neutrino INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "ScintIdentifier", "ScintIdentifier-00", 100016); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "TrackerIdentifier", "TrackerIdentifier-02", 107787); INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-03", "CaloIdentifier", "CaloIdentifier-00", 100018); +-- +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "FASER", "FASERNU-04", 107853); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "FaserCommon", "FaserCommon-00", 100013); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Cavern", "Cavern-00", 107850); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Trench", "Trench-00", 107851); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TrenchSwitches", "TrenchSwitches-00", 107852); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Materials", "Materials-00", 100005); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "StdMaterials", "StdMaterials-00", 100006); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "StdMatComponents", "StdMatComponents-00", 100007); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Elements", "Elements-00", 100008); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Neutrino", "Neutrino-02", 107894); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Emulsion", "Emulsion-02", 107895); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionTopLevel", "EmulsionTopLevel-02", 107892); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionGeneral", "EmulsionGeneral-01", 107891); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionFilm", "EmulsionFilm-01", 107889); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionPlates", "EmulsionPlates-01", 107888); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionSwitches", "EmulsionSwitches-00", 100036); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EmulsionSupport", "EmulsionSupport-01", 107893); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Scintillator", "Scintillator-04", 107861); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Tracker", "Tracker-04", 107882); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SCT", "SCT-04", 107880); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctTopLevel", "SCTTopLevel-02", 107793); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctBrlModule", "SCTBrlModule-00", 107003); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctBrlSensor", "SCTBrlSensor-00", 106730); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctFaserGeneral", "SCTFaserGeneral-01", 106791); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctSwitches", "SCTSwitches-00", 107782); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SCTMaterials", "SCTMaterials-00", 107777); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SCTMatComponents", "SCTMatComponents-00", 107778); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctConditions", "SctConditions-00", 107779); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctFrame", "SctFrame-00", 100053); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctFrameGeneral", "SctFrameGeneral-00", 100054); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctFrameShape", "SctFrameShape-00", 100055); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "SctWrappingGeneral", "SctWrappingGeneral-01", 107879); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Dipole", "Dipole-03", 107837); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "DipoleTopLevel", "DipoleTopLevel-03", 107838); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "DipoleGeneral", "DipoleGeneral-00", 100004); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "DipoleSwitches", "DipoleSwitches-00", 100028); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "DipoleWrappingGeneral", "DipoleWrappingGeneral-01", 107885); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Calorimeter", "Calorimeter-04", 107858); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Ecal", "Ecal-04", 107856); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EcalTopLevel", "EcalTopLevel-04", 107886); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EcalRowGeneral", "EcalRowGeneral-00", 100059); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "EcalSwitches", "EcalSwitches-01", 107855); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoTopLevel", "VetoTopLevel-02", 107798); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoStationGeneral", "VetoStationGeneral-01", 107868); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoPlateGeneral", "VetoPlateGeneral-00", 100025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoRadiatorGeneral", "VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoWrappingGeneral", "VetoWrappingGeneral-01", 107864); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNuTopLevel", "VetoNuTopLevel-00", 107845); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNuStationGeneral", "VetoNuStationGeneral-00", 107846); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNuPlateGeneral", "VetoNuPlateGeneral-00", 107847); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNuRadiatorGeneral","VetoNuRadiatorGeneral-00", 107849); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TriggerTopLevel", "TriggerTopLevel-02", 107799); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TriggerWrappingGeneral", "TriggerWrappingGeneral-01", 107870); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerTopLevel", "PreshowerTopLevel-02", 107800); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-01", 107877); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-01", 107876); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "ScintMaterials", "ScintMaterials-00", 100011); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "ScintMatComponents", "ScintMatComponents-01", 107860); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TrackerMaterials", "TrackerMaterials-00", 100021); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TrackerMatComponents", "TrackerMatComponents-00", 100022); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "CaloMaterials", "CaloMaterials-00", 100023); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "CaloMatComponents", "CaloMatComponents-00", 100024); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoSwitches", "VetoSwitches-00", 100014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TriggerSwitches", "TriggerSwitches-00", 110014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "PreshowerSwitches", "PreshowerSwitches-00", 120014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNuSwitches", "VetoNuSwitches-00", 107848); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Veto", "Veto-04", 107865); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Trigger", "Trigger-04", 107871); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "Preshower", "Preshower-04", 107873); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "VetoNu", "VetoNu-00", 107844); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "NeutrinoIdentifier", "NeutrinoIdentifier-01", 107890); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "ScintIdentifier", "ScintIdentifier-00", 100016); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "TrackerIdentifier", "TrackerIdentifier-02", 107787); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASERNU-04", "CaloIdentifier", "CaloIdentifier-00", 100018); +-- +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "FASER", "FASER-TB01", 107854); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "FaserCommon", "FaserCommon-00", 100013); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Materials", "Materials-00", 100005); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "StdMaterials", "StdMaterials-00", 100006); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "StdMatComponents", "StdMatComponents-00", 100007); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Elements", "Elements-00", 100008); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Neutrino", "Neutrino-02", 107895); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Emulsion", "Emulsion-02", 107894); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EmulsionTopLevel", "EmulsionTopLevel-02", 107892); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EmulsionGeneral", "EmulsionGeneral-01", 107891); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EmulsionFilm", "EmulsionFilm-01", 107889); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EmulsionPlates", "EmulsionPlates-01", 107888); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EmulsionSwitches", "EmulsionSwitches-00", 100036); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Scintillator", "Scintillator-TB01", 107862); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Tracker", "Tracker-TB01", 107883); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SCT", "SCT-TB01", 107881); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctTopLevel", "SCTTopLevel-TB00", 107818); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctBrlModule", "SCTBrlModule-00", 107003); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctBrlSensor", "SCTBrlSensor-00", 106730); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctFaserGeneral", "SCTFaserGeneral-01", 106791); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctSwitches", "SCTSwitches-00", 107782); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SCTMaterials", "SCTMaterials-00", 107777); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SCTMatComponents", "SCTMatComponents-00", 107778); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctConditions", "SctConditions-00", 107779); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctFrame", "SctFrame-00", 100053); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctFrameGeneral", "SctFrameGeneral-00", 100054); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctFrameShape", "SctFrameShape-00", 100055); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "SctWrappingGeneral", "SctWrappingGeneral-01", 107879); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Dipole", "Dipole-TB00", 107817); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "DipoleTopLevel", "DipoleTopLevel-TB00", 107819); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "DipoleGeneral", "DipoleGeneral-00", 100004); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "DipoleSwitches", "DipoleSwitches-00", 100028); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "DipoleWrappingGeneral", "DipoleWrappingGeneral-01", 107885); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Calorimeter", "Calorimeter-TB01", 107859); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Ecal", "Ecal-TB01", 107857); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EcalTopLevel", "EcalTopLevel-TB00", 107887); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EcalRowGeneral", "EcalRowGeneral-TB00", 107830); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "EcalSwitches", "EcalSwitches-01", 107855); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoTopLevel", "VetoTopLevel-TB00", 107823); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoStationGeneral", "VetoStationGeneral-TB01", 107867); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoPlateGeneral", "VetoPlateGeneral-00", 100025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoRadiatorGeneral","VetoRadiatorGeneral-00", 107810); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoWrappingGeneral", "VetoWrappingGeneral-01", 107864); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TriggerTopLevel", "TriggerTopLevel-TB00", 107824); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TriggerStationGeneral", "TriggerStationGeneral-01", 100051); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TriggerPlateGeneral", "TriggerPlateGeneral-00", 110025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TriggerWrappingGeneral", "TriggerWrappingGeneral-01", 107870); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerTopLevel", "PreshowerTopLevel-TB00", 107825); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerStationGeneral", "PreshowerStationGeneral-01", 100052); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerPlateGeneral", "PreshowerPlateGeneral-00", 120025); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerRadiatorGeneral", "PreshowerRadiatorGeneral-01", 107877); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerAbsorberGeneral", "PreshowerAbsorberGeneral-00", 107809); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerWrappingGeneral", "PreshowerWrappingGeneral-01", 107876); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "NeutrinoMaterials", "NeutrinoMaterials-00", 100032); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "NeutrinoMatComponents", "NeutrinoMatComponents-00", 100033); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "ScintMaterials", "ScintMaterials-00", 100011); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "ScintMatComponents", "ScintMatComponents-01", 107860); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TrackerMaterials", "TrackerMaterials-00", 100021); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TrackerMatComponents", "TrackerMatComponents-00", 100022); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "CaloMaterials", "CaloMaterials-00", 100023); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "CaloMatComponents", "CaloMatComponents-00", 100024); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "VetoSwitches", "VetoSwitches-00", 100014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TriggerSwitches", "TriggerSwitches-00", 110014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "PreshowerSwitches", "PreshowerSwitches-00", 120014); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Veto", "Veto-TB01", 107866); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Trigger", "Trigger-TB01", 107872); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "Preshower", "Preshower-TB01", 107874); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "NeutrinoIdentifier", "NeutrinoIdentifier-01", 107890); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "ScintIdentifier", "ScintIdentifier-TB00", 107832); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "TrackerIdentifier", "TrackerIdentifier-TB00", 107829); +INSERT INTO "HVS_TAGCACHE" VALUES ("FASER-TB01", "CaloIdentifier", "CaloIdentifier-TB00", 107831); -- -- -- Part 2b: Content (Leaf node) data @@ -2311,30 +2676,46 @@ INSERT INTO "ELEMENTS_DATA2TAG" VALUES (100008, 91); INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, -2475.72, 0.0, 0.0, 0.0, 321, "Emulsion"); INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "StationA"); INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (2, 10.0, -21.0, -2510.27, 0.0, 0.0, 0.0, 321, "Emulsion"); +INSERT INTO "EMULSIONTOPLEVEL_DATA" VALUES (3, 10.0, -21.0, -2505.68, 0.0, 0.0, 0.0, 321, "Emulsion"); -- Actual box hardware is in same global position as previous INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (100035, 0); INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (100035, 1); INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (107841, 2); INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (107841, 1); +INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (107892, 3); +INSERT INTO "EMULSIONTOPLEVEL_DATA2TAG" VALUES (107892, 1); -- -- INSERT INTO "EMULSIONGENERAL_DATA" VALUES (0, 35, 22, -524.275, 525.275); +INSERT INTO "EMULSIONGENERAL_DATA" VALUES (1, 73, 10, -519.598, 520.685); INSERT INTO "EMULSIONGENERAL_DATA2TAG" VALUES (107805, 0); +INSERT INTO "EMULSIONGENERAL_DATA2TAG" VALUES (107891, 1); -- -- INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (0, "std::SSteel", 250.0, 300.0, 20.0, 0.0, 0.0, 535.45, "BoxBack"); INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (1, "std::SSteel", 250.0, 300.0, 30.0, 0.0, 0.0, -540.45, "Pusher"); INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (2, "std::SSteel", 250.0, 300.0, 20.0, 0.0, 0.0, -604.55, "BoxFront"); +INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (3, "std::SSteel", 250.0, 300.0, 20.0, 0.0, 0.0, 530.855, "BoxBack"); +INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (4, "std::SSteel", 250.0, 300.0, 30.0, 0.0, 0.0, -535.855, "Pusher"); +INSERT INTO "EMULSIONSUPPORT_DATA" VALUES (5, "std::SSteel", 250.0, 300.0, 20.0, 0.0, 0.0, -609.145, "BoxFront"); + INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107842, 0); INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107842, 1); INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107842, 2); +INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107893, 3); +INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107893, 4); +INSERT INTO "EMULSIONSUPPORT_DATA2TAG" VALUES (107893, 5); -- -- INSERT INTO "EMULSIONFILM_DATA" VALUES (0, 250.0, 300.0, 0.210, "neutrino::Polystyrene", 250.0, 300.0, 0.070, "neutrino::Emulsion"); +INSERT INTO "EMULSIONFILM_DATA" VALUES (1, 250.0, 300.0, 0.210, "neutrino::Polystyrene", 250.0, 300.0, 0.065, "neutrino::Emulsion"); INSERT INTO "EMULSIONFILM_DATA2TAG" VALUES (107806, 0); +INSERT INTO "EMULSIONFILM_DATA2TAG" VALUES (107889, 1); -- -- -INSERT INTO "EMULSIONPLATES_DATA" VALUES (0, 250.0, 300.0, 1050.9, 0.0, 0.0, 0.0, "std::Wolfram"); +INSERT INTO "EMULSIONPLATES_DATA" VALUES (0, 250.0, 300.0, 1050.9, 0.0, 0.0, 0.0, "std::Wolfram"); -- this is a slab of tungsten in which ALL base+film pieces are inserted +INSERT INTO "EMULSIONPLATES_DATA" VALUES (1, 250.0, 300.0, 1041.71, 0.0, 0.0, 0.0, "std::Wolfram"); INSERT INTO "EMULSIONPLATES_DATA2TAG" VALUES (107807, 0); +INSERT INTO "EMULSIONPLATES_DATA2TAG" VALUES (107888, 1); -- -- INSERT INTO "NEUTRINOMATERIALS_DATA" VALUES (0, "Polystyrene", 1.06); @@ -2396,9 +2777,12 @@ INSERT INTO "VETOTOPLEVEL_DATA2TAG" VALUES (107823, 11); INSERT INTO "VETOSTATIONGENERAL_DATA" VALUES (0, 2, 100.0); INSERT INTO "VETOSTATIONGENERAL_DATA" VALUES (1, 2, 20.0); INSERT INTO "VETOSTATIONGENERAL_DATA" VALUES (2, 2, 21.0); +INSERT INTO "VETOSTATIONGENERAL_DATA" VALUES (3, 2, 21.5); INSERT INTO "VETOSTATIONGENERAL_DATA2TAG" VALUES (100010, 0); INSERT INTO "VETOSTATIONGENERAL_DATA2TAG" VALUES (100049, 1); INSERT INTO "VETOSTATIONGENERAL_DATA2TAG" VALUES (107833, 2); +INSERT INTO "VETOSTATIONGENERAL_DATA2TAG" VALUES (107867, 3); +INSERT INTO "VETOSTATIONGENERAL_DATA2TAG" VALUES (107868, 3); -- INSERT INTO "VETOPLATEGENERAL_DATA" VALUES (0, 1, 300.0, 300.0, 20.0, "scint::Scintillator"); INSERT INTO "VETOPLATEGENERAL_DATA" VALUES (1, 1, 300.0, 300.0, 19.5, "scint::Scintillator"); @@ -2408,6 +2792,11 @@ INSERT INTO "VETOPLATEGENERAL_DATA2TAG" VALUES (100050, 1); INSERT INTO "VETORADIATORGENERAL_DATA" VALUES (0, 400.0, 350.0, 100.0, "std::Lead"); INSERT INTO "VETORADIATORGENERAL_DATA2TAG" VALUES (107810, 0); -- +INSERT INTO "VETOWRAPPINGGENERAL_DATA" VALUES (0, 300.0, 300.0, 0.5, "std::Air"); +INSERT INTO "VETOWRAPPINGGENERAL_DATA" VALUES (1, 300.0, 300.0, 0.5, "std::Aluminium"); +INSERT INTO "VETOWRAPPINGGENERAL_DATA2TAG" VALUES (107863, 0); +INSERT INTO "VETOWRAPPINGGENERAL_DATA2TAG" VALUES (107864, 1); +-- -- INSERT INTO "VETONUTOPLEVEL_DATA" VALUES (0, 10.0, -21.0, -3112.0, 0.0, 0.0, 0.0, 321, "VetoNu"); INSERT INTO "VETONUTOPLEVEL_DATA" VALUES (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "StationA"); @@ -2445,6 +2834,12 @@ INSERT INTO "TRIGGERPLATEGENERAL_DATA" VALUES (0, 2, 400.0, 200.0, 10.0, "scint: INSERT INTO "TRIGGERPLATEGENERAL_DATA2TAG" VALUES (110025, 0); -- -- +INSERT INTO "TRIGGERWRAPPINGGENERAL_DATA" VALUES (0, 400.0, 200.0, 0.5, "std::Air"); +INSERT INTO "TRIGGERWRAPPINGGENERAL_DATA" VALUES (1, 400.0, 200.0, 0.5, "std::Aluminium"); +INSERT INTO "TRIGGERWRAPPINGGENERAL_DATA2TAG" VALUES (107869, 0); +INSERT INTO "TRIGGERWRAPPINGGENERAL_DATA2TAG" VALUES (107870, 1); +-- +-- INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 2626.0, 0.0, 0.0, 0.0, 321, "Preshower"); INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 321, "StationA"); INSERT INTO "PRESHOWERTOPLEVEL_DATA" VALUES (2, 0.0, 0.0, 2662.7, 0.0, 0.0, 0.0, 321, "Preshower"); @@ -2471,19 +2866,31 @@ INSERT INTO "PRESHOWERPLATEGENERAL_DATA" VALUES (0, 1, 300.0, 300.0, 20.0, "scin INSERT INTO "PRESHOWERPLATEGENERAL_DATA2TAG" VALUES (120025, 0); -- INSERT INTO "PRESHOWERRADIATORGENERAL_DATA" VALUES (0, 300.0, 300.0, 3.0, "std::Wolfram"); +INSERT INTO "PRESHOWERRADIATORGENERAL_DATA" VALUES (1, 300.0, 300.0, 3.18, "std::Wolfram"); INSERT INTO "PRESHOWERRADIATORGENERAL_DATA2TAG" VALUES (107808, 0); +INSERT INTO "PRESHOWERRADIATORGENERAL_DATA2TAG" VALUES (107877, 1); -- INSERT INTO "PRESHOWERABSORBERGENERAL_DATA" VALUES (0, 300.0, 300.0, 50.0, "scint::Graphite"); INSERT INTO "PRESHOWERABSORBERGENERAL_DATA2TAG" VALUES (107809, 0); -- -- -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 3099.2, 0.0, 0.0, 0.0, 321, "Ecal"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (1, 0.0, -71.6, 0.0, 0.0, 2.8, 0.0, 321, "BottomRow"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (2, 0.0, 49.6, 0.0, 0.0, 2.8, 0.0, 321, "TopRow"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (3, 0.0, 0.0, 3098.9, 0.0, 0.0, 0.0, 321, "Ecal"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (4, 0.0, -71.6, 0.0, 0.0, 0.0, 0.0, 321, "BottomRow"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (5, 0.0, 49.6, 0.0, 0.0, 0.0, 0.0, 321, "TopRow"); -INSERT INTO "ECALTOPLEVEL_DATA" VALUES (6, -17.22, -22.80, 1088.66, -2.8, -2.8, 0.0, 321, "Ecal"); +INSERT INTO "PRESHOWERWRAPPINGGENERAL_DATA" VALUES (0, 300.0, 300.0, 0.5, "std::Air"); +INSERT INTO "PRESHOWERWRAPPINGGENERAL_DATA" VALUES (1, 300.0, 300.0, 0.5, "std::Aluminium"); +INSERT INTO "PRESHOWERWRAPPINGGENERAL_DATA2TAG" VALUES (107875, 0); +INSERT INTO "PRESHOWERWRAPPINGGENERAL_DATA2TAG" VALUES (107876, 1); +-- +-- +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (0, 0.0, 0.0, 3099.2, 0.0, 0.0, 0.0, 321, "Ecal"); -- Old TI12 +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (1, 0.0, -71.6, 0.0, 0.0, 2.8, 0.0, 321, "BottomRow"); -- TI12 (with overlap) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (2, 0.0, 49.6, 0.0, 0.0, 2.8, 0.0, 321, "TopRow"); -- TI12 (with overlap) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (3, 0.0, 0.0, 3098.9, 0.0, 0.0, 0.0, 321, "Ecal"); -- TI12 +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (4, 0.0, -71.6, 0.0, 0.0, 0.0, 0.0, 321, "BottomRow"); -- TB00 (with overlap) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (5, 0.0, 49.6, 0.0, 0.0, 0.0, 0.0, 321, "TopRow"); -- TB00 (with overlap) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (6, -17.22, -22.80, 1088.66, -2.8, -2.8, 0.0, 321, "Ecal"); -- test beam +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (7, 0.0, -72.0, 0.0, 0.0, 2.8, 0.0, 321, "BottomRow"); -- TI12 (overlap fixed) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (8, 0.0, 50.0, 0.0, 0.0, 2.8, 0.0, 321, "TopRow"); -- TI12 (overlap fixed) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (9, 0.0, -72.0, 0.0, 0.0, 0.0, 0.0, 321, "BottomRow"); -- TB01 (overlap fixed) +INSERT INTO "ECALTOPLEVEL_DATA" VALUES (10, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 321, "TopRow"); -- TB01 (overlap fixed) INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (100058, 0); INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (100058, 1); INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (100058, 2); @@ -2493,6 +2900,13 @@ INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107797, 3); INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107822, 4); INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107822, 5); INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107822, 6); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107886, 3); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107886, 7); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107886, 8); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107887, 6); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107887, 9); +INSERT INTO "ECALTOPLEVEL_DATA2TAG" VALUES (107887, 10); + -- -- INSERT INTO "ECALROWGENERAL_DATA" VALUES (0, 2, 0.0, 2.8); @@ -2507,12 +2921,17 @@ INSERT INTO "SCINTMATERIALS_DATA2TAG" VALUES (100011, 0); INSERT INTO "SCINTMATERIALS_DATA2TAG" VALUES (100011, 1); -- -- -INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (0, 0, "Carbon", 0.475); -INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (1, 0, "Hydrogen", 0.525); +INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (0, 0, "Carbon", 0.475); -- incorrect value used through FASERNU-03 and FASER-TB00 (through June 2023); molecular fractions were treated as mass fractions +INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (1, 0, "Hydrogen", 0.525); -- incorrect value used through FASERNU-03 and FASER-TB00 (through June 2023); molecular fractions were treated as mass fractions INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (2, 1, "Carbon", 1.0); +INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (3, 0, "Carbon", 0.915); -- correct mass fraction values used from FASERNU-04 and FASER-TB01 (from June 2023) +INSERT INTO "SCINTMATCOMPONENTS_DATA" VALUES (4, 0, "Hydrogen", 0.085); -- correct mass fraction values used from FASERNU-04 and FASER-TB01 (from June 2023) INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 0); INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 1); INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (100012, 2); +INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (107860, 2); +INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (107860, 3); +INSERT INTO "SCINTMATCOMPONENTS_DATA2TAG" VALUES (107860, 4); -- -- INSERT INTO "FASERCOMMON_DATA" VALUES (0, "RUN3", "TRACKER", "NONE"); @@ -2540,7 +2959,9 @@ INSERT INTO "PRESHOWERSWITCHES_DATA2TAG" VALUES (120014, 0); -- -- INSERT INTO "ECALSWITCHES_DATA" VALUES ( 0, "Ecal", 1, 0, "GEO", "Development", "Baseline geometry", "EcalGeoModel/Ecal.gdml"); +INSERT INTO "ECALSWITCHES_DATA" VALUES ( 1, "Ecal", 1, 0, "GEO", "Development", "Baseline geometry", "EcalGeoModel/Ecal04.gdml"); INSERT INTO "ECALSWITCHES_DATA2TAG" VALUES (100057, 0); +INSERT INTO "ECALSWITCHES_DATA2TAG" VALUES (107855, 1); -- -- INSERT INTO "TRENCHSWITCHES_DATA" VALUES ( 0, "Trench", 1, 0, "GEO", "Development", "Baseline geometry", "TrenchGeoModel/Trench.gdml"); @@ -2548,7 +2969,9 @@ INSERT INTO "TRENCHSWITCHES_DATA2TAG" VALUES (107852, 0); -- -- INSERT INTO "NEUTRINOIDENTIFIER_DATA" VALUES (0, "Neutrino", "NeutrinoIdDictFiles/IdDictNeutrino.xml", "Baseline layout"); +INSERT INTO "NEUTRINOIDENTIFIER_DATA" VALUES (1, "Neutrino", "NeutrinoIdDictFiles/IdDictNeutrino_730.xml", "FaserNu-04 layout"); INSERT INTO "NEUTRINOIDENTIFIER_DATA2TAG" VALUES (100030, 0); +INSERT INTO "NEUTRINOIDENTIFIER_DATA2TAG" VALUES (107890, 1); -- -- INSERT INTO "SCINTIDENTIFIER_DATA" VALUES (0, "Scintillator", "ScintIdDictFiles/IdDictScintillator.xml", "Baseline layout"); @@ -2667,6 +3090,26 @@ CREATE TABLE "SCTFRAMEGENERAL_DATA2TAG" ( "SCTFRAMEGENERAL_TAG_ID" SLONGLONG , " INSERT INTO "SCTFRAMEGENERAL_DATA2TAG" VALUES(100054, 0); -- -- +DROP TABLE IF EXISTS "SCTWRAPPINGGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "SCTWRAPPINGGENERAL_DATA" ( + "SCTWRAPPINGGENERAL_DATA_ID" SLONGLONG UNIQUE, + "WIDTH" DOUBLE, + "LENGTH" DOUBLE, + "THICKNESS" DOUBLE, + "MATERIAL" TEXT +); +-- +DROP TABLE IF EXISTS "SCTWRAPPINGGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "SCTWRAPPINGGENERAL_DATA2TAG" ( + "SCTWRAPPINGGENERAL_TAG_ID" SLONGLONG, + "SCTWRAPPINGGENERAL_DATA_ID" SLONGLONG +); +INSERT INTO "SCTWRAPPINGGENERAL_DATA" VALUES (0, 320.0, 320.0, 0.4, "std::Air"); +INSERT INTO "SCTWRAPPINGGENERAL_DATA" VALUES (1, 320.0, 320.0, 0.4, "sct::CFRP"); +INSERT INTO "SCTWRAPPINGGENERAL_DATA2TAG" VALUES (107878, 0); +INSERT INTO "SCTWRAPPINGGENERAL_DATA2TAG" VALUES (107879, 1); +-- +-- DROP TABLE IF EXISTS "SCTFRAMESHAPE_DATA"; CREATE TABLE "SCTFRAMESHAPE_DATA" ( "SCTFRAMESHAPE_DATA_ID" SLONGLONG , "DX" DOUBLE , "DY" DOUBLE , "DZ" DOUBLE , "X" DOUBLE , "Y" DOUBLE , "Z" DOUBLE , "STAGGERED" INT, UNIQUE( "SCTFRAMESHAPE_DATA_ID" ) ); INSERT INTO "SCTFRAMESHAPE_DATA" VALUES(1, 100.0, 285.0, 100.0, 0.0, 0.0, 0.0, 0); @@ -2783,6 +3226,27 @@ CREATE TABLE "DIPOLEGENERAL_DATA2TAG" ( "DIPOLEGENERAL_TAG_ID" SLONGLONG, "DIPOL INSERT INTO "DIPOLEGENERAL_DATA2TAG" VALUES(100004, 0); -- -- +DROP TABLE IF EXISTS "DIPOLEWRAPPINGGENERAL_DATA"; +CREATE TABLE IF NOT EXISTS "DIPOLEWRAPPINGGENERAL_DATA" ( + "DIPOLEWRAPPINGGENERAL_DATA_ID" SLONGLONG UNIQUE, + "RADIUS" DOUBLE, + "THICKNESS1" DOUBLE, + "THICKNESS2" DOUBLE, + "MATERIAL1" TEXT, + "MATERIAL2" TEXT +); +-- +DROP TABLE IF EXISTS "DIPOLEWRAPPINGGENERAL_DATA2TAG"; +CREATE TABLE IF NOT EXISTS "DIPOLEWRAPPINGGENERAL_DATA2TAG" ( + "DIPOLEWRAPPINGGENERAL_TAG_ID" SLONGLONG, + "DIPOLEWRAPPINGGENERAL_DATA_ID" SLONGLONG +); +INSERT INTO "DIPOLEWRAPPINGGENERAL_DATA" VALUES (0, 101.0, 0.4, 3.0, "std::Air", "std::Air"); +INSERT INTO "DIPOLEWRAPPINGGENERAL_DATA" VALUES (1, 101.0, 0.4, 3.0, "sct::CFRP", "std::Polystyrene"); +INSERT INTO "DIPOLEWRAPPINGGENERAL_DATA2TAG" VALUES (107884, 0); +INSERT INTO "DIPOLEWRAPPINGGENERAL_DATA2TAG" VALUES (107885, 1); +-- +-- DROP TABLE IF EXISTS "SCTMATCOMPONENTS_DATA"; CREATE TABLE "SCTMATCOMPONENTS_DATA" ( "SCTMATCOMPONENTS_DATA_ID" SLONGLONG ,"MATERIAL_ID" SLONGLONG ,"COMPNAME" TEXT ,"FRACTION" DOUBLE , UNIQUE ( "SCTMATCOMPONENTS_DATA_ID" ) ); INSERT INTO "SCTMATCOMPONENTS_DATA" VALUES(201,50,'Carbon',0.4816); diff --git a/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py b/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py index 4823fcde4cd212a0f3e6446bf690e29c8cf90616..79b84a01b53a950ec0e56b658e05ca0c592548fe 100644 --- a/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py +++ b/DetectorDescription/GeoModel/FaserGeoModel/python/GeoModelInit.py @@ -47,7 +47,7 @@ def _setupGeoModel(): emulsionDetectorTool = EmulsionDetectorTool(DetectorName = "Emulsion", Alignable = True, RDBAccessSvc = "RDBAccessSvc", GeometryDBSvc = "NeutrinoGeometryDBSvc", GeoDbTagSvc = "GeoDbTagSvc") geoModelSvc.DetectorTools += [ emulsionDetectorTool ] - if "FASERNU-03" in DDversion: + if "FASERNU-03" in DDversion or "FASERNU-04" in DDversion: from VetoNuGeoModel.VetoNuGeoModelConf import VetoNuDetectorTool vetoNuDetectorTool = VetoNuDetectorTool( DetectorName = "VetoNu", Alignable = True, @@ -124,7 +124,7 @@ def _setupGeoModel(): geoModelSvc.DetectorTools += [ ecalDetectorTool ] - if "FASERNU-03" in DDversion: + if "FASERNU-03" in DDversion or "FASERNU-04" in DDversion: from TrenchGeoModel.TrenchGeoModelConf import TrenchDetectorTool trenchDetectorTool = TrenchDetectorTool( ) diff --git a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx index a1bf57b7f50e2ccf84714e96ae86b600c32ba46e..6ba2dbc0b121bbe71ad364a51d2d843533ef4b5c 100644 --- a/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx +++ b/DetectorDescription/GeoModel/GeoModelSvc/src/GeoModelSvc.cxx @@ -281,7 +281,7 @@ StatusCode GeoModelSvc::geoInit() // Build the world node from which everything else will be suspended const GeoMaterial* air = theMaterialManager->getMaterial("std::Air"); - const GeoBox* worldBox = new GeoBox(1000*Gaudi::Units::cm,1000*Gaudi::Units::cm, 1000*Gaudi::Units::cm); + const GeoBox* worldBox = new GeoBox(6000*Gaudi::Units::cm,2500*Gaudi::Units::cm, 12000*Gaudi::Units::cm); const GeoLogVol* worldLog = new GeoLogVol("WorldLog", worldBox, air); GeoPhysVol *worldPhys=new GeoPhysVol(worldLog); diff --git a/Event/FaserByteStreamCnvSvcBase/python/FaserByteStreamCnvSvcBaseConfig.py b/Event/FaserByteStreamCnvSvcBase/python/FaserByteStreamCnvSvcBaseConfig.py index 3a87cc4c75388ff53954f9a75be77b9c5d1dc9cd..0762f26a32509e0dd8c0f565d58d46baad9f64d8 100644 --- a/Event/FaserByteStreamCnvSvcBase/python/FaserByteStreamCnvSvcBaseConfig.py +++ b/Event/FaserByteStreamCnvSvcBase/python/FaserByteStreamCnvSvcBaseConfig.py @@ -14,6 +14,7 @@ def FaserByteStreamCnvSvcBaseCfg(flags, **kwargs): adxProvider.TypeNames += [ "RawWaveformContainer/CaloWaveforms", + "RawWaveformContainer/Calo2Waveforms", "RawWaveformContainer/VetoWaveforms", "RawWaveformContainer/VetoNuWaveforms", "RawWaveformContainer/TriggerWaveforms", diff --git a/FaserGeometryCommon/TrenchGeoModel/data/Trench.gdml b/FaserGeometryCommon/TrenchGeoModel/data/Trench.gdml index 476363b731343f73f515a5f207714252772571df..891db127db12dc549223824d396e4fde2d0993d1 100644 --- a/FaserGeometryCommon/TrenchGeoModel/data/Trench.gdml +++ b/FaserGeometryCommon/TrenchGeoModel/data/Trench.gdml @@ -10,6 +10,7 @@ <constant name="RampLengthZ" value="8422"/> <constant name="RampMinThickness" value="2000"/> <constant name="RampSlope" value="0.08533"/> + <constant name="WallThickness" value="5000" /> </define> <materials> <isotope N="1.400000000000000e+01" Z="7.000000000000000e+00" name="N140x8e46440"> @@ -196,6 +197,7 @@ v5x="-RampWidth/2" v5y="-RampMinThickness" v6x="RampWidth/2" v6y="-RampMinThickness" v7x="RampWidth/2" v7y="0" v8x="-RampWidth/2" v8y="0" dz="RampLengthZ/2" /> <box name="world" lunit="mm" x="WorldSize" y="WorldSize" z="WorldSize" /> + <box name="faserWall" lunit="mm" x="RampWidth" y="(RampSlope*RampLengthZ+RampMinThickness)" z="WallThickness" /> <xtru name="trenchOutline" lunit="mm"> <twoDimVertex x="-249.75647241976003" y="-3162.7618497323056"/> <twoDimVertex x="436.065806982358" y="-3162.7608114181166"/> @@ -212,6 +214,11 @@ <section zOrder="0" zPosition="-375.0" xOffset="0" yOffset="0" scalingFactor="1" /> <section zOrder="1" zPosition="375.0" xOffset="0" yOffset="0" scalingFactor="1" /> </xtru> + <union name="rampAndWall"> + <first ref="ramp"/> + <second ref="faserWall"/> + <position name="WallShift" unit="mm" y="-RampMinThickness+(RampSlope*RampLengthZ+RampMinThickness)/2" z="-(RampLengthZ+WallThickness)/2"/> + </union> <subtraction name="faserTrench"> <first ref="ramp"/> <firstpositionref ref="RampinWorldpos"/> @@ -224,17 +231,34 @@ <rotation name="Xrotation" unit="deg" x="90"/> <position name="Yshift" unit="mm" y="75"/> </subtraction> + <subtraction name="faserTrenchAndWall"> + <first ref="rampAndWall"/> + <firstpositionref ref="RampinWorldpos"/> + <firstrotationref ref="RampinWorldrot"/> + <second ref="trenchOutline"/> + <!-- + <rotationref ref="Subrot"/> + <positionref ref="Subpos"/> + --> + <rotation name="Xrotation" unit="deg" x="90"/> + <position name="Yshift" unit="mm" y="75"/> + </subtraction> </solids> <structure> <volume name="Trench"> <solidref ref="faserTrench"/> <materialref ref="Concrete"/> </volume> + <volume name="TrenchAndWall"> + <solidref ref="faserTrenchAndWall"/> + <materialref ref="Concrete"/> + </volume> <volume name="World" > <materialref ref="Air" /> <solidref ref="world" /> <physvol> - <volumeref ref="Trench" /> +<!-- <volumeref ref="Trench" /> --> + <volumeref ref="TrenchAndWall" /> <!-- <rotationref ref="RampinWorldrot"/> <positionref ref="RampinWorldpos"/> diff --git a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx index da787acdfc58391b7cd3f68b00b7aae5f1055a91..c06054c480d99f02565c62e790887fa7d12d26cd 100644 --- a/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx +++ b/FaserGeometryCommon/TrenchGeoModel/src/TrenchDetectorFactory.cxx @@ -77,7 +77,8 @@ void TrenchDetectorFactory::create(GeoPhysVol *world) xercesParser.ParseFileAndNavigate(resolvedFile); // std::cout << "done parsing " << resolvedFile << std::endl; - const GeoLogVol* trenchLog = controller.retrieveLogicalVolume("Trench").first; +// const GeoLogVol* trenchLog = controller.retrieveLogicalVolume("Trench").first; + const GeoLogVol* trenchLog = controller.retrieveLogicalVolume("TrenchAndWall").first; GeoPhysVol* trenchPhys = new GeoPhysVol(trenchLog); GeoNameTag *tag = new GeoNameTag("Trench"); world->add(tag); diff --git a/Generators/DIFGenerator/python/DIFSampler.py b/Generators/DIFGenerator/python/DIFSampler.py index 007830b63c82ec06f19af6fbd3169cfc10ce8e2e..1f82f60d704e6d3a36707bfb48d47e2e2e2bed12 100644 --- a/Generators/DIFGenerator/python/DIFSampler.py +++ b/Generators/DIFGenerator/python/DIFSampler.py @@ -14,11 +14,12 @@ class CylinderSampler(PG.Sampler): Sampler of position 4-vectors within a cylindrical volume. """ - def __init__(self, rsq, phi, z, t=0): + def __init__(self, rsq, phi, z, t=0, axialTiming = True): self.rsq = rsq self.phi = phi self.z = z self.t = t + self.axialTiming = axialTiming @property def rsq(self): @@ -57,6 +58,8 @@ class CylinderSampler(PG.Sampler): phi = self.phi() z = self.z() t = self.t() + if self.axialTiming: + t += z #print "POS =", x, y, z, t return TLorentzVector(r * cos(phi), r * sin(phi), z, t) diff --git a/Generators/FaserCosmicGenerator/python/cosmicSampler.py b/Generators/FaserCosmicGenerator/python/cosmicSampler.py index 7a147e43638b7cc152bb18e2caff0cf30877b40d..5642de80dc8f520d73668a3f3210ed3c8889e29f 100644 --- a/Generators/FaserCosmicGenerator/python/cosmicSampler.py +++ b/Generators/FaserCosmicGenerator/python/cosmicSampler.py @@ -54,7 +54,8 @@ class CosmicSampler(Sampler): x, y, z = CR.pos px, py, pz = CR.mom - self.genPosition.SetXYZT(x + self.x0, y + self.y0, z + self.z0, 0) + # impose vertical timing constraint + self.genPosition.SetXYZT(x + self.x0, y + self.y0, z + self.z0, -(y + self.y0)/math.fabs(CR.costh)) self.genMomentum.SetPxPyPzE(px,py,pz,CR.Efinal) particles = [] diff --git a/Generators/FaserParticleGun/python/FaserParticleGunConfig.py b/Generators/FaserParticleGun/python/FaserParticleGunConfig.py index d2e82a88d3fd6229b2e3ad33932ead7d5d650720..f75fabf921090eb0988b950189362a4d465cc1e0 100644 --- a/Generators/FaserParticleGun/python/FaserParticleGunConfig.py +++ b/Generators/FaserParticleGun/python/FaserParticleGunConfig.py @@ -50,12 +50,14 @@ def FaserParticleGunSingleParticleCfg(ConfigFlags, **kwargs) : y = kwargs.setdefault("y", 0.0), z = kwargs.setdefault("z", -3750.0), r = kwargs.setdefault("radius", 1.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) else: pg.sampler.pos = PG.PosSampler(x = kwargs.setdefault("x", [-5, 5]), y = kwargs.setdefault("y", [-5, 5]), z = kwargs.setdefault("z", -3750.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) return cfg @@ -75,12 +77,14 @@ def FaserParticleGunSingleEcalParticleCfg(ConfigFlags, **kwargs) : y = kwargs.setdefault("y", 0.0), z = kwargs.setdefault("z", 0.0), r = kwargs.setdefault("radius", 1.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) else: pg.sampler.pos = PG.PosSampler(x = kwargs.setdefault("x", 0.0), y = kwargs.setdefault("y", 0.0), z = kwargs.setdefault("z", 0.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) return cfg @@ -98,7 +102,8 @@ def FaserParticleGunSingleEcalParticleCfg(ConfigFlags, **kwargs) : pg.sampler.pos = PG.PosSampler(x = kwargs.setdefault("x", [-5, 5]), y = kwargs.setdefault("y", [-5, 5]), z = kwargs.setdefault("z", 2730.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) return cfg ''' @@ -150,10 +155,11 @@ def FaserParticleGunDecayInFlightCfg(ConfigFlags, **kwargs) : y = kwargs.setdefault("y", 0.0), z = kwargs.setdefault("z", -3750.0), r = kwargs.setdefault("radius", 1.0), - t = kwargs.setdefault("t", 0.0) ) + t = kwargs.setdefault("t", 0.0), + axialTiming = kwargs.setdefault("axialTiming", True) ) else: from DIFGenerator.DIFSampler import CylinderSampler - kwargs["mother_pos"] = CylinderSampler([0, 100**2], [0, 2*pi], [-1500, 0], 0) + kwargs["mother_pos"] = CylinderSampler([0, 100**2], [0, 2*pi], [-1500, 0], 0, True) if not "mother_mom" in kwargs: kwargs["mother_mom"] = PG.EThetaMPhiSampler(kwargs.setdefault("energy", ((1*TeV)**2 + (500*MeV)**2)**0.5), diff --git a/Generators/FaserParticleGun/python/RadialPosSampler.py b/Generators/FaserParticleGun/python/RadialPosSampler.py index 19b1db116991c082d0771699813df2fe94c0a1d9..8f2fe2f0f7f45c138b775ca7c0e713f36b938564 100644 --- a/Generators/FaserParticleGun/python/RadialPosSampler.py +++ b/Generators/FaserParticleGun/python/RadialPosSampler.py @@ -8,12 +8,13 @@ class RadialPosSampler(Sampler): Sampler of Position 3-vectors, for modelling a beamspot, based on radius. """ - def __init__(self, r, x, y, z, t = 0): + def __init__(self, r, x, y, z, t = 0, axialTiming = True): self.radius = r self.x = x self.y = y self.z = z self.t = t + self.axialTiming = axialTiming @property def z(self): @@ -62,6 +63,8 @@ class RadialPosSampler(Sampler): y = self.y + r * sin(phi) z = self.z() t = self.t() + if self.axialTiming: + t += z return ROOT.TLorentzVector(x, y, z, t) diff --git a/Generators/FlukaReader/python/FlukaReaderAlg.py b/Generators/FlukaReader/python/FlukaReaderAlg.py index 4cc449e65e7a8285db742e1d05516ddd0915b206..5349e2226d636020eebfba846477f33af774eae6 100644 --- a/Generators/FlukaReader/python/FlukaReaderAlg.py +++ b/Generators/FlukaReader/python/FlukaReaderAlg.py @@ -266,7 +266,8 @@ class FlukaReader(EvgenAlg): ROOT.SetOwnership(mcEventInfo, False) # Create HepMC Vertex - pos = HepMC.FourVector(newentry["x"] * cm, newentry["y"] * cm, self.z, 0) + # Impose axial timing constraint + pos = HepMC.FourVector(newentry["x"] * cm, newentry["y"] * cm, self.z, self.z) gv = HepMC.GenVertex(pos) ROOT.SetOwnership(gv, False) diff --git a/Generators/ForeseeGenerator/share/generate_forsee_events.py b/Generators/ForeseeGenerator/share/generate_forsee_events.py index 9190f70fa37fd0094f8320e5e8fa63259c56bd2d..cb8db6c591469f837dd61a83885138b6c9bccbf5 100644 --- a/Generators/ForeseeGenerator/share/generate_forsee_events.py +++ b/Generators/ForeseeGenerator/share/generate_forsee_events.py @@ -9,7 +9,7 @@ class ForeseeGenerator(object): Generate LLP particles within FASER acceptance from FORESEE """ - def __init__(self, modelname, energy, mass, couplings, daughter1_pid, daughter2_pid, outdir = None, path = '.', randomSeed = 12345, t0 = 0, notime = False, suffix = ""): + def __init__(self, modelname, energy, mass, couplings, daughter1_pid, daughter2_pid, outdir = None, path = '.', randomSeed = 12345, t0Shift = 0, zFront = -1.5, notime = False, suffix = ""): self.modelname = modelname self.energy = energy @@ -21,7 +21,8 @@ class ForeseeGenerator(object): self.path = path self.version = 3 # Forsee "version" self.seed = randomSeed - self.t0 = t0 + self.zfront = zFront + self.t0 = t0Shift + zFront self.notime = notime self.suffix = f"_{suffix}" if suffix else "" self.nbinsample = 1 @@ -447,7 +448,7 @@ class ForeseeGenerator(object): filename = f"{self.outdir}/events_{self.energy}TeV_m{self.mass}GeV_c{self.couplings[0]:.1e}to_{self.daughter1_pid}_{self.daughter2_pid}{self.suffix}.hepmc" - _, weights, _ = self.foresee.write_events(self.mass, self.couplings[0], self.energy, filename, nevents, zfront = -1.5, seed = self.seed, decaychannels = [self.mode], + _, weights, _ = self.foresee.write_events(self.mass, self.couplings[0], self.energy, filename, nevents, zfront = self.zfront, seed = self.seed, decaychannels = [self.mode], notime = self.notime, t0 = self.t0, nsample = self.nbinsample, return_data = True) cfgname = f"{self.foresee.dirpath}/Models/{self.modelname}/" + filename.replace(".hepmc", ".cfg") @@ -538,7 +539,7 @@ def production(args): for m in masses: print(f">>> {nrun}: {data['model']} ({m} GeV) -> {data['pid1']} + {data['pid2']} with couplings = {couplings[0]:.2e} @ Ecom = {args.Ecom} TeV") - f = ForeseeGenerator(data["model"], args.Ecom, m, couplings, data["pid1"], data["pid2"], path = args.path, randomSeed = args.randomSeed, t0 = args.t0, notime = args.notime, suffix = data["name"]) + f = ForeseeGenerator(data["model"], args.Ecom, m, couplings, data["pid1"], data["pid2"], path = args.path, randomSeed = args.randomSeed, t0Shift = args.t0, zFront = args.zfront, notime = args.notime, suffix = data["name"]) with open("events.txt", "a") as fout: f.events(40, fout) @@ -591,6 +592,7 @@ if __name__ == "__main__": parser.add_argument("--nevents", "-n", default = 10, type = int, help = "Number of HepMC events ") parser.add_argument("--randomSeed", "-s", default = 1234, type = int, help = "Random seed for HepMC generation") parser.add_argument("--t0", "-t", default = 0, type = int, help = "Time offset for start of decay volume") + parser.add_argument("--zfront", "-z", default = -1.5, help = "Minimum FASER z coordinate for decays (in meters)") parser.add_argument("--notime", action = "store_true", help = "Set all vertex times to 0 rather than calculating from start of decay volume") parser.add_argument("--suffix", default = "", help = "Filename suffix") args = parser.parse_args() @@ -614,7 +616,7 @@ if __name__ == "__main__": print(f" decay = {args.pid1} {args.pid2}") print(f" couplings = {couplings}") - f = ForeseeGenerator(args.model, args.Ecom, args.mass, couplings, args.pid1, args.pid2, outdir = args.outdir, path = args.path, randomSeed = args.randomSeed, t0 = args.t0, notime = args.notime, suffix = args.suffix) + f = ForeseeGenerator(args.model, args.Ecom, args.mass, couplings, args.pid1, args.pid2, outdir = args.outdir, path = args.path, randomSeed = args.randomSeed, t0Shift = args.t0, zFront = args.zfront, notime = args.notime, suffix = args.suffix) if args.hepmc: f.write_hepmc(args.nevents) diff --git a/Generators/GenieReader/python/GenieReaderAlg.py b/Generators/GenieReader/python/GenieReaderAlg.py index c97ea494b089a25ff88e4c2a1f2abdd4bf472c6b..432d792cf9391ebedfb4e750c09f738ab5f51f45 100644 --- a/Generators/GenieReader/python/GenieReaderAlg.py +++ b/Generators/GenieReader/python/GenieReaderAlg.py @@ -3,7 +3,7 @@ from AthenaCommon.AppMgr import ServiceMgr as svcMgr from GeneratorModules.EvgenAlg import EvgenAlg from AthenaPython.PyAthena import StatusCode, EventInfo, EventID, EventType -from AthenaCommon.SystemOfUnits import GeV, m +from AthenaCommon.SystemOfUnits import GeV, m, nanosecond import ROOT __author__ = "Dave Caser <dcasper@uci.edu>" @@ -37,7 +37,8 @@ class GenieReader(EvgenAlg): ROOT.SetOwnership(mcEventId, False) ROOT.SetOwnership(mcEventInfo, False) - pos = HepMC.FourVector(self.evtStore["vx"]*m, self.evtStore["vy"]*m, self.evtStore["vz"]*m, 0) + # impose axial timing constraint - time is expected in units of length, so just use z position + pos = HepMC.FourVector(self.evtStore["vx"]*m, self.evtStore["vy"]*m, self.evtStore["vz"]*m, self.evtStore["vz"]*m) gv = HepMC.GenVertex(pos) ROOT.SetOwnership(gv, False) evt.add_vertex(gv) diff --git a/Generators/ParticleGun/python/samplers.py b/Generators/ParticleGun/python/samplers.py index 9126b607ca7246480e4129669f3933e236c2c126..b9edbd6c8ec5a18324412d5cf4c4da9d80b84e2e 100644 --- a/Generators/ParticleGun/python/samplers.py +++ b/Generators/ParticleGun/python/samplers.py @@ -309,11 +309,12 @@ class PosSampler(Sampler): Sampler of position 3-vectors, for modelling a beamspot. """ - def __init__(self, x, y, z, t=0): + def __init__(self, x, y, z, t=0, axialTiming = False): self.x = x self.y = y self.z = z self.t = t + self.axialTiming = axialTiming @property def x(self): @@ -352,6 +353,9 @@ class PosSampler(Sampler): y = self.y() z = self.z() t = self.t() + if self.axialTiming: + t += z + #print "POS =", x, y, z, t return ROOT.TLorentzVector(x, y, z, t) diff --git a/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx b/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx index 1322903932ee6ffdc8d41f31e3a850d680f1c391..1c0e49926225f2198d0ad6c8c4447a3bd966a628 100644 --- a/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx +++ b/LHCData/LHCDataAlgs/src/LHCDataAlg.cxx @@ -176,17 +176,21 @@ LHCDataAlg::findNearest(unsigned int bcid, const std::vector<unsigned char>& bci } // If we got to here, there was no match + // This is possible if for instance all BCIDs are colliding and mask = 0x01 + // Does the BCID make sense? ATH_MSG_WARNING("Couldn't find distance from BCID " << bcid << " and pattern " << int(mask) << "!"); + + // Only print this out in debug, otherwise floods log file int b1=0; int b2=0; int col = 0; for (int i=0; i<3564; i++) { - if (mask & 0x01) b1++; - if (mask & 0x02) b2++; - if (mask & 0x03) col++; - - ATH_MSG_WARNING("BCID " << i << " - " << int(bcid_mask[i])); + if (bcid_mask[i] & 0x01) b1++; + if (bcid_mask[i] & 0x02) b2++; + if (bcid_mask[i] & 0x03) col++; + if (bcid_mask[i] > 0) + ATH_MSG_DEBUG("BCID " << i << " - " << int(bcid_mask[i])); } //ATH_MSG_WARNING(bcid_mask); diff --git a/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino.xml b/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino.xml index 45ef3be3ececee0b112b79ff949054b70c6fb2fd..79b72cd8bfac2d3357ee038dc97b9b174404ebbb 100644 --- a/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino.xml +++ b/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino.xml @@ -1,4 +1,4 @@ -<IdDictionary name="Neutrino"> +<IdDictionary name="Neutrino" version="FASERNU-03-770"> <field name="part"> <label name="Emulsion" value="1" /> diff --git a/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino_730.xml b/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino_730.xml new file mode 100644 index 0000000000000000000000000000000000000000..e84740160373a8176cf1f046ad48865cb0450421 --- /dev/null +++ b/Neutrino/NeutrinoDetDescr/NeutrinoIdDictFiles/data/IdDictNeutrino_730.xml @@ -0,0 +1,19 @@ +<IdDictionary name="Neutrino" version="FASERNU-04-730"> + + <field name="part"> + <label name="Emulsion" value="1" /> + </field> + + <field name="film"> + <label name="Upstream" value="0" /> + <label name="Downstream" value="1" /> + </field> + + <region> + <range field="part" value="Emulsion" /> + <range field="module" minvalue="0" maxvalue="72" /> + <range field="base" minvalue="0" maxvalue="9" /> + <range field="film" values="Upstream Downstream" /> + </region> + +</IdDictionary> \ No newline at end of file diff --git a/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/NeutrinoIdentifier/EmulsionID.h b/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/NeutrinoIdentifier/EmulsionID.h index 9e396dd788940c30b3daaeb904134ecab7e04e88..ec1ee50213f23d2d0d3022e6f08561df0d1a45c4 100644 --- a/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/NeutrinoIdentifier/EmulsionID.h +++ b/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/NeutrinoIdentifier/EmulsionID.h @@ -53,8 +53,8 @@ class IdDictDictionary; ** element range meaning ** ------- ----- ------- ** - ** module 0 to 34 35 modules - ** base 0 to 21 22 bases per module + ** module 0 to 72 73 modules + ** base 0 to 9 10 bases per module ** film side 0 to 1 2 films per base ** ** @endverbatim @@ -527,8 +527,8 @@ inline int EmulsionID::base_bit ( void ) const { int base = static_cast<int>(m_film_impl.shift()); // lowest field base - return (base > 32) ? 32 : base; - // max base is 32 so we can still read old strip id's and differences + return (base > 9) ? 9 : base; + // max base is 9 so we can still read old strip id's and differences // from non-SLHC releases. } diff --git a/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/src/EmulsionID.cxx b/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/src/EmulsionID.cxx index 39639714210ce7124b68ceade844fd233e0b3dec..5f55b759c5b7185dbc3cf52f7b3776bf4a65662d 100644 --- a/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/src/EmulsionID.cxx +++ b/Neutrino/NeutrinoDetDescr/NeutrinoIdentifier/src/EmulsionID.cxx @@ -246,6 +246,8 @@ EmulsionID::initialize_from_dictionary(const IdDictMgr& dict_mgr) << std::endl; } + FaserDetectorID::setDictVersion(dict_mgr, "Neutrino"); + return 0; } diff --git a/Neutrino/NeutrinoSimEvent/src/NeutrinoHitIdHelper.cxx b/Neutrino/NeutrinoSimEvent/src/NeutrinoHitIdHelper.cxx index 8b60d732871df6fb37eef94d305640622a93d0ae..c52c57ade9525961f4f8ad570cd0186114efe755 100644 --- a/Neutrino/NeutrinoSimEvent/src/NeutrinoHitIdHelper.cxx +++ b/Neutrino/NeutrinoSimEvent/src/NeutrinoHitIdHelper.cxx @@ -45,11 +45,18 @@ void NeutrinoHitIdHelper::Initialize() { const EmulsionID* pix; ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "NeutrinoHitIdHelper"); if (detStore.retrieve().isSuccess()) { - if (detStore->retrieve(pix, "EmulsionID").isFailure()) { pix = 0; } + if (detStore->retrieve(pix, "EmulsionID").isFailure()) { pix = nullptr; } + } + if (pix == nullptr || pix->dictionaryVersion() == "FASERNU-03-770" || pix->dictionaryVersion() == "") + { + InitializeField("Module", 0, 34); + InitializeField("Base", 0, 21); + } + else // FASERNU-04-730 + { + InitializeField("Module", 0, 72); + InitializeField("Base", 0, 9); } - - InitializeField("Module", 0, 34); - InitializeField("Base", 0, 21); InitializeField("Film", 0, 1); } diff --git a/PhysicsAnalysis/NtupleDumper/CMakeLists.txt b/PhysicsAnalysis/NtupleDumper/CMakeLists.txt index dd8faf032f48b2c3d78453b84494e1903d64367d..24b788d23b88e95ed37a20e86a109f198e836851 100644 --- a/PhysicsAnalysis/NtupleDumper/CMakeLists.txt +++ b/PhysicsAnalysis/NtupleDumper/CMakeLists.txt @@ -7,9 +7,10 @@ atlas_add_component( src/NtupleDumperAlg.h src/NtupleDumperAlg.cxx src/component/NtupleDumper_entries.cxx - LINK_LIBRARIES AthenaBaseComps StoreGateLib xAODFaserWaveform xAODFaserCalorimeter xAODFaserTrigger xAODFaserLHC ScintIdentifier FaserCaloIdentifier GeneratorObjects FaserActsGeometryLib TrackerSimEvent TrackerSimData TrackerIdentifier TrackerReadoutGeometry TrkTrack GeoPrimitives TrackerRIO_OnTrack TrackerSpacePoint FaserActsKalmanFilterLib FaserActsmanVertexingLib + LINK_LIBRARIES AthenaBaseComps StoreGateLib xAODFaserWaveform xAODFaserCalorimeter xAODFaserTrigger xAODFaserLHC ScintIdentifier FaserCaloIdentifier GeneratorObjects FaserActsGeometryLib TrackerSimEvent TrackerSimData TrackerIdentifier TrackerReadoutGeometry TrkTrack GeoPrimitives TrackerRIO_OnTrack TrackerSpacePoint FaserActsKalmanFilterLib FaserActsmanVertexingLib AtlasHepMCLib PRIVATE_LINK_LIBRARIES nlohmann_json::nlohmann_json ) atlas_install_python_modules( python/*.py ) atlas_install_scripts( scripts/*.py scripts/*.sh ) + diff --git a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py index 2380a23a5dd250d237d8242f1f009071ca2a00d2..60312a01bb0c54ccf8e5fff25a7171c37a765bfd 100755 --- a/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py +++ b/PhysicsAnalysis/NtupleDumper/scripts/faser_ntuple_maker.py @@ -27,7 +27,8 @@ parser.add_argument("--merge", type=int, default=1, help="Specify merged files per reco file (MC only)") parser.add_argument("--last", type=int, default=0, help="Specify last file in slice (normally --files)") - +parser.add_argument("-g", "--geom", default="", + help="Specify geometry (if it can't be parsed from run number\n Values: Ti12Data03 (2022 TiT12)") parser.add_argument("--outfile", default="", help="Override output file name") @@ -46,6 +47,8 @@ parser.add_argument("--partial", action='store_true', parser.add_argument("-c", "--cond", default="", help="Specify global conditions tag (default: OFLCOND-FASER-04)") +parser.add_argument("--backward", action='store_true', + help="Use backward CKF tracks (default: forward)") parser.add_argument("--trigFilt", action='store_true', help="apply trigger event filter") @@ -53,6 +56,8 @@ parser.add_argument("--scintFilt", action='store_true', help="apply scintillator event filter") parser.add_argument("--NoTrackFilt", action='store_true', help="Don't apply track event filter (default: do)") +parser.add_argument("--no_stable", action='store_true', + help="Don't apply stable beam requirement (default: do)") parser.add_argument("--unblind", action='store_true', help="Don't apply signal blinding (default: do)") @@ -67,6 +72,7 @@ parser.add_argument("--fluka", action='store_true', parser.add_argument("--genie", action='store_true', help="Add Genie weights to ntuple") + args = parser.parse_args() from pathlib import Path @@ -218,6 +224,8 @@ print(f"Scintillator Filter = {args.scintFilt}") print(f"Track Filter = {not args.NoTrackFilt}") print(f"Blind = {not args.unblind}") print(f"OnlyBlinded = {args.onlyblind}") +print(f"Stable Beams = {not args.no_stable}") +print(f"Backward = {args.backward}") print(f"GRL = {args.grl}") # OK, lets run the job here @@ -233,9 +241,34 @@ Configurable.configurableRun3Behavior = True # Configure ConfigFlags.Input.Files = filelist -if len(args.cond) == 0: - ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Always needed; must match FaserVersionS + +if len(args.geom) > 0: + runtype = args.geom else: + if args.isMC: + runtype = "TI12MC04" + else: + runtype = "TI12Data04" + +if runtype in ["TI12Data04", "TI12MC04"]: + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # FASER geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" + +elif runtype == "TI12Data03": + ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # FASER geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-04" # Pick up new alignment + +elif runtype == "TI12MC03": + ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # FASER geometry + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" + +else: + print(f"Unknown: --geom {runtype}!") + print("Specify correct type or update list") + sys.exit(1) + +# Check if we override the global conditions tag +if len(args.cond): print(f"Setting ConfigFlags.IOVDb.GlobalTag = {args.cond}") ConfigFlags.IOVDb.GlobalTag = args.cond @@ -247,7 +280,6 @@ else: ConfigFlags.Input.ProjectName = "data21" # Needed to bypass autoconfig -ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # FASER geometry ConfigFlags.Common.isOnline = False ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.Beam.NumberOfCollisions = 0. @@ -270,6 +302,14 @@ if args.genie: if args.fluka: mc_kwargs['UseFlukaWeights'] = True +# Use backward tracks for ntuple +# Default for this parameter is "CKFTrackCollectionWithoutIFT" +if args.backward: + if args.isMC: + mc_kwargs['TrackCollectionWithoutIFT'] = "CKFTrackCollectionBackwardWithoutIFT" + else: + grl_kwargs['TrackCollectionWithoutIFT'] = "CKFTrackCollectionBackwardWithoutIFT" + # algorithm from NtupleDumper.NtupleDumperConfig import NtupleDumperAlgCfg if args.isMC: @@ -278,6 +318,8 @@ if args.isMC: else: acc.merge(NtupleDumperAlgCfg(ConfigFlags, outfile, DoBlinding = (not args.unblind), OnlyBlinded = args.onlyblind, DoScintFilter = args.scintFilt, DoTrackFilter = (not args.NoTrackFilt), DoTrigFilter = args.trigFilt, **grl_kwargs)) + #acc.merge(NtupleDumperAlgCfg(ConfigFlags, outfile, DoBlinding=(not args.unblind), OnlyBlinded=args.onlyblind, DoScintFilter = args.scintFilt, DoTrackFilter = (not args.NoTrackFilt), DoTrigFilter = args.trigFilt, StableOnly = (not args.no_stable), **grl_kwargs) ) + if not args.verbose: from AthenaConfiguration.ComponentFactory import CompFactory AthenaEventLoopMgr = CompFactory.AthenaEventLoopMgr() diff --git a/PhysicsAnalysis/NtupleDumper/scripts/submit_faser_ntuple_maker.sh b/PhysicsAnalysis/NtupleDumper/scripts/submit_faser_ntuple_maker.sh index 01fe05f49e3cc5c5355d1ddf64689d669fcb5650..6857f8e407906eba6dddb4834222970298654e0b 100755 --- a/PhysicsAnalysis/NtupleDumper/scripts/submit_faser_ntuple_maker.sh +++ b/PhysicsAnalysis/NtupleDumper/scripts/submit_faser_ntuple_maker.sh @@ -3,7 +3,7 @@ # Used with a condor file to submit a physics ntuple job # # Usage: -# submit_ntuple_maker.sh dirpath slice nfiles [release_directory] [working_directory] +# submit_ntuple_maker.sh [options --] dirpath slice nfiles [release_directory] [working_directory] --other_options # # Options: # --out - specify output location (in EOS) to copy output HITS file @@ -14,6 +14,8 @@ # --fluka - create fluka weights # --genie - create genie weights # +# Other --option will be passed to faser_ntuple_maker.py +# # dirpath - full directory path to HITS files # slice - ordinal output file number # nfiles - number of HITS files to process per slice @@ -32,9 +34,6 @@ SECONDS=0 ismc="" partialstr="" mergestr="" -flukastr="" -geniestr="" -unblindstr="" # # Parse command-line options while [ -n "$1" ] @@ -64,18 +63,6 @@ do shift; shift;; - --fluka) - flukastr="--fluka"; - shift;; - - --genie) - geniestr="--genie"; - shift;; - - --unblind) - unblindstr="--unblind"; - shift;; - --) # End of options shift; # Eat this break;; # And stop parsing @@ -89,12 +76,48 @@ do done # # Parse command-line options -dir_path=${1} -slice=${2} -nfiles=${3} -release_directory=${4} -working_directory=${5} -last_file=${6} +while [ -n "$1" ] +do + case "$1" in + --) # Stop parsing + shift; # Eat this + break;; # And stop parsing + + -*) # Some option + break;; # Stop parsing + + *) # Not an option, fill next value + + if [ -z "$dir_path" ] + then + dir_path=${1} + shift + elif [ -z "$slice" ] + then + slice=${1} + shift + elif [ -z "$nfiles" ] + then + nfiles=${1} + shift + elif [ -z "$release_directory" ] + then + release_directory=${1} + shift + elif [ -z "$working_directory" ] + then + working_directory=${1} + shift + elif [ -z "$last_file" ] + then + last_file=${1} + shift + else + break # Already filled everything + fi + ;; + esac +done # # Set defaults if arguments aren't provided if [ -z "$dir_path" ] @@ -170,10 +193,12 @@ echo "Output: $output_directory" echo "Starting: $starting_directory" echo "job: $file_stem" echo "Last: $last_file" +echo "Remaining: $@" # # Set up the release (do this automatically)? +# Must follow with -- to avoid command-line arguments being passed export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase -source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh +source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh -- # # Always go back to the starting directory in case paths are relative cd "$starting_directory" @@ -183,7 +208,7 @@ cd "$release_directory" asetup --input=calypso/asetup.faser Athena,22.0.49 source run/setup.sh # -echo "Initial ATLAS_POOLCOND_PATH = $ATLAS_POOLCOND_PATH" +echo "ATLAS_POOLCOND_PATH = $ATLAS_POOLCOND_PATH" # # Check if there are data overrides if [ -d "run/data/sqlite200" ]; then @@ -239,26 +264,15 @@ else cp -r $cond_directory . ls -R data fi -# -# Further check if there is a pool conditions override -if [[ -d "data/poolcond" ]]; then - echo "Local POOL directory found!" - echo "Change ATLAS_POOLCOND_PATH" - echo " from $ATLAS_POOLCOND_PATH" - export ATLAS_POOLCOND_PATH=`pwd -P`/data - echo " to $ATLAS_POOLCOND_PATH" -else - echo "No local pool files found, use default:" - echo " $ATLAS_POOLCOND_PATH" -fi -echo "Final ATLAS_POOLCOND_PATH: $ATLAS_POOLCOND_PATH" -# -# -export EOS_MGM_URL=root://eospublic.cern.ch # # Run job # -faser_ntuple_maker.py $last_file_str $partialstr $tagstr $ismc --slice $slice --files $nfiles $mergestr $flukastr $geniestr $unblindstr $dir_path +echo +echo "Submit job:" +echo faser_ntuple_maker.py $last_file_str $partialstr $tagstr $ismc --slice $slice --files $nfiles $mergestr "$@" $dir_path +echo +# +faser_ntuple_maker.py $last_file_str $partialstr $tagstr $ismc --slice $slice --files $nfiles $mergestr "$@" $dir_path ntup_code=$? echo "Return code: $ntup_code" # @@ -267,6 +281,9 @@ date echo "Job finished after $SECONDS seconds" # # Copy output to EOS if desired +# +export EOS_MGM_URL=root://eospublic.cern.ch +# if ! [ -z "$outdest" ] then ls -l diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx index 0e88d1e46f6d84ed87bda1b669c9f4ca35aa3ea6..468a6739bdd9606cc8f34c4ff0996cbda393273d 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.cxx @@ -14,6 +14,7 @@ #include "TrackerReadoutGeometry/SiDetectorElement.h" #include "TrackerPrepRawData/FaserSCT_Cluster.h" #include "xAODTruth/TruthParticle.h" +#include "AtlasHepMC/GenEvent.h" #include <cmath> #include <TH1F.h> #include <numeric> @@ -89,6 +90,7 @@ void NtupleDumperAlg::addCalibratedBranches(const std::string &name, StatusCode NtupleDumperAlg::initialize() { ATH_CHECK(m_truthEventContainer.initialize()); + ATH_CHECK(m_mcEventContainer.initialize()); ATH_CHECK(m_truthParticleContainer.initialize()); ATH_CHECK(m_lhcData.initialize()); ATH_CHECK(m_trackCollection.initialize()); @@ -99,6 +101,7 @@ StatusCode NtupleDumperAlg::initialize() ATH_CHECK(m_triggerContainer.initialize()); ATH_CHECK(m_preshowerContainer.initialize()); ATH_CHECK(m_ecalContainer.initialize()); + ATH_CHECK(m_ecal2Container.initialize()); ATH_CHECK(m_clusterContainer.initialize()); ATH_CHECK(m_simDataCollection.initialize()); ATH_CHECK(m_FaserTriggerData.initialize()); @@ -107,6 +110,7 @@ StatusCode NtupleDumperAlg::initialize() ATH_CHECK(m_preshowerCalibratedContainer.initialize()); ATH_CHECK(m_ecalCalibratedContainer.initialize()); + ATH_CHECK(m_ecal2CalibratedContainer.initialize()); ATH_CHECK(m_eventInfoKey.initialize()); ATH_CHECK(detStore()->retrieve(m_sctHelper, "FaserSCT_ID")); @@ -157,6 +161,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("run", &m_run_number, "run/I"); m_tree->Branch("eventID", &m_event_number, "eventID/I"); m_tree->Branch("eventTime", &m_event_time, "eventTime/I"); + m_tree->Branch("eventTimeNSOffset", &m_event_timeNSOffset, "eventTimeNSOffset/I"); m_tree->Branch("BCID", &m_bcid, "BCID/I"); m_tree->Branch("inGRL", &m_in_grl, "inGRL/I"); @@ -176,13 +181,15 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("inputBitsNext", &m_inputBitsNext, "inputBitsNext/I"); //WAVEFORMS + // Need to put an option in here for pre/post 2024 data addWaveBranches("VetoNu",2,4); - addWaveBranches("VetoSt1",1,14); + addWaveBranches("VetoSt1",2,14); addWaveBranches("VetoSt2",2,6); addWaveBranches("Timing",4,8); addWaveBranches("Preshower",2,12); addWaveBranches("Calo",4,0); - + addWaveBranches("CaloHi", 4,16); + m_tree->Branch("ScintHit", &m_scintHit); addCalibratedBranches("Calo",4,0); @@ -328,6 +335,18 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("t_st3_x", &m_t_st_x[3]); m_tree->Branch("t_st3_y", &m_t_st_y[3]); m_tree->Branch("t_st3_z", &m_t_st_z[3]); + m_tree->Branch("t_st0_px", &m_t_st_px[0]); + m_tree->Branch("t_st0_py", &m_t_st_py[0]); + m_tree->Branch("t_st0_pz", &m_t_st_pz[0]); + m_tree->Branch("t_st1_px", &m_t_st_px[1]); + m_tree->Branch("t_st1_py", &m_t_st_py[1]); + m_tree->Branch("t_st1_pz", &m_t_st_pz[1]); + m_tree->Branch("t_st2_px", &m_t_st_px[2]); + m_tree->Branch("t_st2_py", &m_t_st_py[2]); + m_tree->Branch("t_st2_pz", &m_t_st_pz[2]); + m_tree->Branch("t_st3_px", &m_t_st_px[3]); + m_tree->Branch("t_st3_py", &m_t_st_py[3]); + m_tree->Branch("t_st3_pz", &m_t_st_pz[3]); m_tree->Branch("isFiducial", &m_isFiducial); m_tree->Branch("truthParticleBarcode", &m_truthParticleBarcode); @@ -338,7 +357,7 @@ StatusCode NtupleDumperAlg::initialize() m_tree->Branch("truthBarcode", &m_truthBarcode, "truthBarcode/I"); m_tree->Branch("truthPdg", &m_truthPdg, "truthPdg/I"); m_tree->Branch("CrossSection", &m_crossSection, "crossSection/D"); - + m_tree->Branch("GenWeights", &m_genWeights); // first 10 truth particles @@ -414,6 +433,12 @@ StatusCode NtupleDumperAlg::initialize() m_HistRandomCharge[12] = new TH1F("hRandomCharge12", "Preshower ch12 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); m_HistRandomCharge[13] = new TH1F("hRandomCharge13", "Preshower ch13 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); m_HistRandomCharge[14] = new TH1F("hRandomCharge14", "Veto ch14 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); + m_HistRandomCharge[15] = new TH1F("hRandomCharge15", "Veto ch15 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); + + m_HistRandomCharge[16] = new TH1F("hRandomCharge16", "CaloHi ch0 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); + m_HistRandomCharge[17] = new TH1F("hRandomCharge17", "CaloHi ch1 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); + m_HistRandomCharge[18] = new TH1F("hRandomCharge18", "CaloHi ch2 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); + m_HistRandomCharge[19] = new TH1F("hRandomCharge19", "CaloHi ch3 Charge from Random Events;charge (pC);Events/bin", 100, -1.0, 1.0); ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge0", m_HistRandomCharge[0])); ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge1", m_HistRandomCharge[1])); @@ -430,6 +455,11 @@ StatusCode NtupleDumperAlg::initialize() ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge12", m_HistRandomCharge[12])); ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge13", m_HistRandomCharge[13])); ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge14", m_HistRandomCharge[14])); + ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge15", m_HistRandomCharge[15])); + ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge16", m_HistRandomCharge[16])); + ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge17", m_HistRandomCharge[17])); + ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge18", m_HistRandomCharge[18])); + ATH_CHECK(histSvc()->regHist("/HIST2/RandomCharge19", m_HistRandomCharge[19])); if (m_onlyBlinded){ ATH_MSG_INFO("Only events that would be blinded are saved in ntuple"); @@ -454,12 +484,21 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const if (truthEventContainer.isValid() && truthEventContainer->size() > 0) { isMC = true; + + } + + SG::ReadHandle<McEventCollection> mcEventContainer {m_mcEventContainer, ctx}; + if (isMC && (!mcEventContainer.isValid() || mcEventContainer->size() == 0)) { + ATH_MSG_WARNING("Could not retrieve MCEventCollection " << m_mcEventContainer); + return StatusCode::SUCCESS; } + // EventInfo data m_run_number = ctx.eventID().run_number(); m_event_number = ctx.eventID().event_number(); m_event_time = ctx.eventID().time_stamp(); + m_event_timeNSOffset = ctx.eventID().time_stamp_ns_offset(); m_bcid = ctx.eventID().bunch_crossing_id(); // For real data, find if data is in GoodRunsList @@ -551,23 +590,27 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const SG::ReadHandle<xAOD::WaveformHitContainer> ecalContainer { m_ecalContainer, ctx }; ATH_CHECK(ecalContainer.isValid()); + SG::ReadHandle<xAOD::WaveformHitContainer> ecal2Container { m_ecal2Container, ctx }; + ATH_CHECK(ecal2Container.isValid()); + FillWaveBranches(*vetoNuContainer); FillWaveBranches(*vetoContainer); FillWaveBranches(*triggerContainer); FillWaveBranches(*preshowerContainer); FillWaveBranches(*ecalContainer); + FillWaveBranches(*ecal2Container); // if real data, store charge in histograms from random events if (!isMC) { SG::ReadHandle<xAOD::FaserTriggerData> triggerData(m_FaserTriggerData, ctx); m_tap=triggerData->tap(); - // for random trigger, store charge of scintillators in histograms - if ((m_tap&16) != 0) { + + // for random (only) triggers, store charge of scintillators in histograms + if (m_tap == 16) { // Fill histograms - for (int chan = 0; chan<15; chan++) { + for (unsigned int chan = 0; chan<nchan; chan++) { m_HistRandomCharge[chan]->Fill(m_wave_raw_charge[chan]); } - return StatusCode::SUCCESS; // finished with this randomly triggered event } if (m_doTrigFilter) { @@ -621,8 +664,10 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const // load in LHC data SG::ReadHandle<xAOD::FaserLHCData> lhcData { m_lhcData, ctx }; ATH_CHECK(lhcData.isValid()); + // don't process events that were not taken during "Stable Beams" - if ( !(lhcData->stableBeams()) ) return StatusCode::SUCCESS; + if (!(lhcData->stableBeams()) && m_stableOnly) return StatusCode::SUCCESS; + // store interesting data in ntuple variables m_fillNumber = lhcData->fillNumber(); m_betaStar = lhcData->betaStar(); @@ -694,6 +739,13 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_crossSection = m_baseEventCrossSection; } + // Store event weights if exist + const HepMC::GenEvent* genEvent = mcEventContainer->at(0); + for (auto wt : genEvent->weights()) { + m_genWeights.push_back(wt); + } + + // Find truth particle information SG::ReadHandle<xAOD::TruthParticleContainer> truthParticleContainer { m_truthParticleContainer, ctx }; if (truthParticleContainer.isValid() && truthParticleContainer->size() > 0) { @@ -1014,6 +1066,14 @@ StatusCode NtupleDumperAlg::execute(const EventContext &ctx) const m_t_st_y[station].push_back(positions[station].y()); m_t_st_z[station].push_back(positions[station].z()); } + + auto momenta = m_fiducialParticleTool->getTruthMomenta(truthParticle->barcode()); + for (int station = 0; station < 4; ++station) { + m_t_st_px[station].push_back(momenta[station].x()); + m_t_st_py[station].push_back(momenta[station].y()); + m_t_st_pz[station].push_back(momenta[station].z()); + } + if (truthParticle->hasProdVtx()) { m_t_prodVtx_x.push_back(truthParticle->prodVtx()->x()); m_t_prodVtx_y.push_back(truthParticle->prodVtx()->y()); @@ -1341,6 +1401,7 @@ NtupleDumperAlg::clearTree() const m_run_number = 0; m_event_number = 0; m_event_time = 0; + m_event_timeNSOffset = 0; m_bcid = 0; m_in_grl = 0; @@ -1359,7 +1420,7 @@ NtupleDumperAlg::clearTree() const m_inputBits=0; m_inputBitsNext=0; - for(int ii=0;ii<15;ii++) { + for(unsigned int ii=0;ii<nchan;ii++) { m_wave_localtime[ii]=0; m_wave_peak[ii]=0; m_wave_width[ii]=0; @@ -1397,6 +1458,7 @@ NtupleDumperAlg::clearTree() const m_station2Clusters = 0; m_station3Clusters = 0; m_crossSection = 0; + m_genWeights.clear(); m_nspacepoints = 0; m_spacepointX.clear(); @@ -1508,6 +1570,11 @@ NtupleDumperAlg::clearTree() const m_t_st_y[station].clear(); m_t_st_z[station].clear(); } + for (int station = 0; station < 4; ++station) { + m_t_st_px[station].clear(); + m_t_st_py[station].clear(); + m_t_st_pz[station].clear(); + } m_truthParticleBarcode.clear(); m_truthParticleMatchedTracks.clear(); m_truthParticleIsFiducial.clear(); @@ -1592,6 +1659,11 @@ void NtupleDumperAlg::clearTrackTruth() const { m_t_st_y[station].push_back(999999); m_t_st_z[station].push_back(999999); } + for (int station = 0; station < 4; ++station) { + m_t_st_px[station].push_back(999999); + m_t_st_py[station].push_back(999999); + m_t_st_pz[station].push_back(999999); + } m_isFiducial.push_back(false); } diff --git a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h index a741bcbe55097ba754a256fe3804f0e6cc170db9..d4fc22b9754617ea8c68aba3c365ef334abd0d5d 100644 --- a/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h +++ b/PhysicsAnalysis/NtupleDumper/src/NtupleDumperAlg.h @@ -24,6 +24,7 @@ #include "xAODEventInfo/EventInfo.h" #include "StoreGate/ReadDecorHandle.h" #include "FaserActsVertexing/IVertexingTool.h" +#include "GeneratorObjects/McEventCollection.h" #include <boost/dynamic_bitset.hpp> #include <vector> @@ -69,6 +70,7 @@ private: SG::ReadHandleKey<xAOD::TruthEventContainer> m_truthEventContainer { this, "EventContainer", "TruthEvents", "Truth event container name." }; SG::ReadHandleKey<xAOD::TruthParticleContainer> m_truthParticleContainer { this, "ParticleContainer", "TruthParticles", "Truth particle container name." }; + SG::ReadHandleKey<McEventCollection> m_mcEventContainer {this, "McEventCollection", "BeamTruthEvent", "MC event collection name"}; SG::ReadHandleKey<TrackerSimDataCollection> m_simDataCollection {this, "TrackerSimDataCollection", "SCT_SDO_Map"}; SG::ReadHandleKey<xAOD::FaserLHCData> m_lhcData {this, "FaserLHCDataKey", "FaserLHCData"}; @@ -82,8 +84,10 @@ private: SG::ReadHandleKey<xAOD::WaveformHitContainer> m_triggerContainer { this, "TriggerContainer", "TriggerWaveformHits", "Trigger hit container name" }; SG::ReadHandleKey<xAOD::WaveformHitContainer> m_preshowerContainer { this, "PreshowerContainer", "PreshowerWaveformHits", "Preshower hit container name" }; SG::ReadHandleKey<xAOD::WaveformHitContainer> m_ecalContainer { this, "EcalContainer", "CaloWaveformHits", "Ecal hit container name" }; + SG::ReadHandleKey<xAOD::WaveformHitContainer> m_ecal2Container { this, "Ecal2Container", "Calo2WaveformHits", "Ecal hit container name" }; SG::ReadHandleKey<xAOD::CalorimeterHitContainer> m_ecalCalibratedContainer { this, "EcalCalibratedContainer", "CaloHits", "Ecal Calibrated hit container name" }; + SG::ReadHandleKey<xAOD::CalorimeterHitContainer> m_ecal2CalibratedContainer { this, "Ecal2CalibratedContainer", "Calo2Hits", "Ecal Calibrated hit container name" }; SG::ReadHandleKey<xAOD::CalorimeterHitContainer> m_preshowerCalibratedContainer { this, "preshowerCalibratedContainer", "PreshowerHits", "Preshower Calibrated hit container name" }; SG::ReadHandleKey<Tracker::FaserSCT_ClusterContainer> m_clusterContainer { this, "ClusterContainer", "SCT_ClusterContainer", "Tracker cluster container name" }; @@ -114,7 +118,8 @@ private: BooleanProperty m_onlyBlinded { this, "OnlyBlinded", false, "Only events that would be blinded are saved" }; BooleanProperty m_doTrigFilter { this, "DoTrigFilter", false, "Only events that pass trigger cuts are passed" }; BooleanProperty m_doScintFilter { this, "DoScintFilter", false, "Only events that pass scintillator coincidence cuts are passed" }; - BooleanProperty m_doTrackFilter { this, "DoTrackFilter", true, "Only events that have >= 1 long track are passed, also non-colliding events with a track or calo signal are passed" }; + BooleanProperty m_doTrackFilter { this, "DoTrackFilter", true, "Only events that have >= 1 long track are passed, also non-colliding events with a track or calo signal are passed (default)" }; + BooleanProperty m_stableOnly { this, "StableOnly", true, "Only events recorded during stable beams are saved (default)" }; BooleanProperty m_useFlukaWeights { this, "UseFlukaWeights", false, "Flag to weight events according to value stored in HepMC::GenEvent" }; BooleanProperty m_useGenieWeights { this, "UseGenieWeights", false, "Flag to weight events according to Genie luminosity" }; @@ -143,11 +148,14 @@ private: mutable TTree* m_tree; - mutable TH1* m_HistRandomCharge[15]; + const static unsigned int nchan=20; + + mutable TH1* m_HistRandomCharge[nchan]; mutable unsigned int m_run_number; mutable unsigned int m_event_number; mutable unsigned int m_event_time; + mutable unsigned int m_event_timeNSOffset; mutable unsigned int m_bcid; mutable unsigned int m_in_grl; @@ -166,22 +174,22 @@ private: mutable unsigned int m_inputBits; mutable unsigned int m_inputBitsNext; - mutable float m_wave_localtime[15]; - mutable float m_wave_peak[15]; - mutable float m_wave_width[15]; - mutable float m_wave_charge[15]; + mutable float m_wave_localtime[nchan]; + mutable float m_wave_peak[nchan]; + mutable float m_wave_width[nchan]; + mutable float m_wave_charge[nchan]; - mutable float m_wave_raw_peak[15]; - mutable float m_wave_raw_charge[15]; - mutable float m_wave_baseline_mean[15]; - mutable float m_wave_baseline_rms[15]; - mutable unsigned int m_wave_status[15]; + mutable float m_wave_raw_peak[nchan]; + mutable float m_wave_raw_charge[nchan]; + mutable float m_wave_baseline_mean[nchan]; + mutable float m_wave_baseline_rms[nchan]; + mutable unsigned int m_wave_status[nchan]; mutable unsigned int m_scintHit; - mutable float m_calibrated_nMIP[15]; - mutable float m_calibrated_E_dep[15]; - mutable float m_calibrated_E_EM[15]; + mutable float m_calibrated_nMIP[nchan]; + mutable float m_calibrated_E_dep[nchan]; + mutable float m_calibrated_E_EM[nchan]; mutable float m_calo_total_nMIP; mutable float m_calo_total_E_dep; @@ -200,6 +208,7 @@ private: mutable float m_Calo1_Edep; mutable float m_Calo2_Edep; mutable float m_Calo3_Edep; + mutable float m_Calo_Total_Edep; mutable float m_Preshower12_Edep; mutable float m_Preshower13_Edep; @@ -308,12 +317,16 @@ private: mutable std::array<std::vector<double>, 4> m_t_st_x; // vector of the x components of the simulated hits of the truth particle for each station mutable std::array<std::vector<double>, 4> m_t_st_y; // vector of the y components of the simulated hits of the truth particle for each station mutable std::array<std::vector<double>, 4> m_t_st_z; // vector of the z components of the simulated hits of the truth particle for each station + mutable std::array<std::vector<double>, 4> m_t_st_px; // x components of the true momentum at each station + mutable std::array<std::vector<double>, 4> m_t_st_py; // y components of the true momentum at each station + mutable std::array<std::vector<double>, 4> m_t_st_pz; // z components of the true momentum at each station mutable std::vector<bool> m_isFiducial; // track is fiducial if there are simulated hits for stations 1 - 3 and the distance from the center is smaller than 100 mm mutable std::vector<int> m_truthParticleBarcode; // vector of barcodes of all truth particles with a momentum larger 50 GeV mutable std::vector<int> m_truthParticleMatchedTracks; // vector of number of tracks to which a truth particle is matched to mutable std::vector<bool> m_truthParticleIsFiducial; // vector of boolean showing whether a truth particle is fiducial + // mother + daughter truth information mutable std::vector<double> m_truthM_P; @@ -364,10 +377,12 @@ private: mutable std::vector<int> m_truth_pdg; // pdg of first 10 truth particles - mutable double m_truthLeptonMomentum; + mutable double m_truthLeptonMomentum; mutable int m_truthBarcode; mutable int m_truthPdg; mutable double m_crossSection; + mutable std::vector<double> m_genWeights; + mutable int m_eventsPassed = 0; mutable int m_eventsFailedGRL = 0; diff --git a/README.md b/README.md index bcd917f069ec308e9657f013a9398dba24285145..f4d5bf64fd6f976f90be0bc39a369c8c992e84be 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,12 @@ When compiling, CERN IT recommends using condor to submit batch jobs. The basics ** `ConfigFlags.GeoModel.FaserVersion = "FASERNU-03"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-03` enables the full FaserNu (IFT + emulsion) setup with updated (10Nov22) magnetic field map +** `ConfigFlags.GeoModel.FaserVersion = "FASERNU-03"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-04` enables the full FaserNu (IFT + emulsion) setup with updated (2023) tracker alignment + +** `ConfigFlags.GeoModel.FaserVersion = "FASERNU-04"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-04` enables the full FaserNu (IFT + emulsion) setup with updated (2023) geometry + ** `ConfigFlags.GeoModel.FaserVersion = "FASER-TB00"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-TB00` enables the 2021 Test-beam setup. +** `ConfigFlags.GeoModel.FaserVersion = "FASER-TB01"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-TB01` enables the 2021 Test-beam setup with updated (2023) geometry. + * The command `source /cvmfs/sft.cern.ch/lcg/releases/LCG_101_ATLAS_6/sqlite/3320300/x86_64-centos7-gcc11-opt/sqlite-env.sh` may be necessary to avoid errors when generating a database diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx index 422c40ab4347b2669792d43994e0cc7dbc2c90c6..116ab55ef3153031463b559d8ced959a797a850d 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.cxx @@ -83,6 +83,9 @@ PreshowerDataBase::PreshowerDataBase(const PreshowerGeoModelAthenaComps * athena m_absorberGeneral = rdbSvc->getRecordsetPtr("PreshowerAbsorberGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table PreshowerAbsorberGeneral Fetched" << endmsg; + m_wrappingGeneral = rdbSvc->getRecordsetPtr("PreshowerWrappingGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table PreshowerWrappingGeneral Fetched" << endmsg; + } const PreshowerGeoModelAthenaComps* PreshowerDataBase::athenaComps() const { return m_athenaComps; } @@ -101,6 +104,7 @@ const IRDBRecord* PreshowerDataBase::stationGeneral() const {return (*m_stationG const IRDBRecord* PreshowerDataBase::plateGeneral() const {return (*m_plateGeneral)[0];} const IRDBRecord* PreshowerDataBase::radiatorGeneral() const {return (*m_radiatorGeneral)[0];} const IRDBRecord* PreshowerDataBase::absorberGeneral() const {return (*m_absorberGeneral)[0];} +const IRDBRecord* PreshowerDataBase::wrappingGeneral() const {return (*m_wrappingGeneral)[0];} const std::string & PreshowerDataBase::versionTag() const { return m_preshowerVersionTag; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h index ef6e4acbbe74446a4dd3035ea2bb0242d9de1e17..d9e63b745ffabd071052298437a9c86c1e88dede 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDataBase.h @@ -30,6 +30,7 @@ public: const IRDBRecord* plateGeneral() const; const IRDBRecord* radiatorGeneral() const; const IRDBRecord* absorberGeneral() const; + const IRDBRecord* wrappingGeneral() const; // Return the Preshower version tag. const std::string & versionTag() const; @@ -56,6 +57,7 @@ private: IRDBRecordset_ptr m_plateGeneral; IRDBRecordset_ptr m_radiatorGeneral; IRDBRecordset_ptr m_absorberGeneral; + IRDBRecordset_ptr m_wrappingGeneral; }; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDetectorFactory.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDetectorFactory.cxx index 02a6c67181bf164650d1f8b608bc5aaf02e6b72c..f063b2e9316f535886cbfe9191f2cc43ae9801cf 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDetectorFactory.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerDetectorFactory.cxx @@ -21,6 +21,7 @@ #include "PreshowerStation.h" #include "PreshowerPlate.h" +#include "PreshowerWrapping.h" #include "PreshowerDataBase.h" #include "PreshowerGeoModel/PreshowerGeoModelAthenaComps.h" @@ -157,11 +158,13 @@ void PreshowerDetectorFactory::create(GeoPhysVol *world) // bool absorberA_Present = preshowerGeneral->partPresent(absorberA_Label); // bool absorberB_Present = preshowerGeneral->partPresent(absorberB_Label); - // - // Plate is the same for all stations - // - PreshowerPlate plate("Plate", m_detectorManager, m_geometryManager, m_materials); - msg(MSG::DEBUG) << "Created Preshower plate with dimensions (" << plate.thickness() << "," << plate.width() << "," << plate.length() << ")" << endmsg; + // + // Plate is the same for all stations + // + PreshowerPlate plate("Plate", m_detectorManager, m_geometryManager, m_materials); + msg(MSG::DEBUG) << "Created Preshower plate with dimensions (" << plate.thickness() << "," << plate.width() << "," << plate.length() << ")" << endmsg; + PreshowerWrapping wrapping("Wrapping", m_detectorManager, m_geometryManager, m_materials); + msg(MSG::DEBUG) << "Created Preshower wrapping with dimensions (" << wrapping.thickness() << "," << wrapping.width() << "," << wrapping.length() << ")" << endmsg; // // Station A // @@ -171,7 +174,7 @@ void PreshowerDetectorFactory::create(GeoPhysVol *world) m_detectorManager->numerology().addStation(0); // Create the station - PreshowerStation stationA("PreshowerStationA", &plate, m_detectorManager, m_geometryManager, m_materials); + PreshowerStation stationA("PreshowerStationA", &plate, &wrapping, m_detectorManager, m_geometryManager, m_materials); PreshowerIdentifier id{m_geometryManager->athenaComps()->getIdHelper()}; id.setStation(0); GeoVPhysVol* stationA_PV = stationA.build(id); diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx index f635cf293ba2abcc77a39d63f58ada3fff845272..fefbbda7da500541eedc63c1ff6c974fb247945d 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.cxx @@ -11,6 +11,7 @@ #include "PreshowerPlateParameters.h" #include "PreshowerRadiatorParameters.h" #include "PreshowerAbsorberParameters.h" +#include "PreshowerWrappingParameters.h" #include "PreshowerDataBase.h" #include "PreshowerGeneralParameters.h" #include "PreshowerGeoModel/PreshowerGeoModelAthenaComps.h" @@ -27,6 +28,7 @@ PreshowerGeometryManager::PreshowerGeometryManager(PreshowerDataBase* rdb) m_radiatorParameters = std::make_unique<PreshowerRadiatorParameters>(m_rdb); m_absorberParameters = std::make_unique<PreshowerAbsorberParameters>(m_rdb); m_generalParameters = std::make_unique<PreshowerGeneralParameters>(m_rdb); + m_wrappingParameters = std::make_unique<PreshowerWrappingParameters>(m_rdb); m_distortedMatManager = std::make_unique<ScintDD::DistortedMaterialManager>(); } @@ -94,6 +96,12 @@ PreshowerGeometryManager::generalParameters() const return m_generalParameters.get(); } +const PreshowerWrappingParameters * +PreshowerGeometryManager::wrappingParameters() const +{ + return m_wrappingParameters.get(); +} + const ScintDD::DistortedMaterialManager * PreshowerGeometryManager::distortedMatManager() const { @@ -112,6 +120,7 @@ PreshowerGeometryManager::operator=(const PreshowerGeometryManager& right) { m_radiatorParameters.reset(new PreshowerRadiatorParameters(m_rdb)); m_absorberParameters.reset(new PreshowerAbsorberParameters(m_rdb)); m_generalParameters.reset(new PreshowerGeneralParameters(m_rdb)); + m_wrappingParameters.reset(new PreshowerWrappingParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } return *this; @@ -127,5 +136,6 @@ PreshowerGeometryManager::PreshowerGeometryManager(const PreshowerGeometryManage m_radiatorParameters.reset(new PreshowerRadiatorParameters(m_rdb)); m_absorberParameters.reset(new PreshowerAbsorberParameters(m_rdb)); m_generalParameters.reset(new PreshowerGeneralParameters(m_rdb)); + m_wrappingParameters.reset(new PreshowerWrappingParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h index 23d24bde7ac19e6db4de05fea7ee341b18149db8..ee33fc623993bebe1d67b5484240b8271ddc067d 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerGeometryManager.h @@ -18,6 +18,7 @@ class PreshowerStationParameters; class PreshowerPlateParameters; class PreshowerRadiatorParameters; class PreshowerAbsorberParameters; +class PreshowerWrappingParameters; class PreshowerDataBase; class PreshowerGeneralParameters; class PreshowerGeoModelAthenaComps; @@ -47,6 +48,7 @@ public: const PreshowerRadiatorParameters* radiatorParameters() const; const PreshowerAbsorberParameters* absorberParameters() const; const PreshowerGeneralParameters* generalParameters() const; + const PreshowerWrappingParameters* wrappingParameters() const; const ScintDD::DistortedMaterialManager* distortedMatManager() const; PreshowerGeometryManager& operator=(const PreshowerGeometryManager& right); @@ -64,6 +66,7 @@ private: std::unique_ptr<PreshowerRadiatorParameters> m_radiatorParameters; std::unique_ptr<PreshowerAbsorberParameters> m_absorberParameters; std::unique_ptr<PreshowerGeneralParameters> m_generalParameters; + std::unique_ptr<PreshowerWrappingParameters> m_wrappingParameters; std::unique_ptr<ScintDD::DistortedMaterialManager> m_distortedMatManager; }; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx index a511085e1fda3124716531849a838d773a2cf726..72188cd19cd964789b0a1f1add0b959bada1e9d2 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.cxx @@ -13,6 +13,7 @@ #include "PreshowerAbsorberParameters.h" #include "PreshowerIdentifier.h" #include "PreshowerPlate.h" +#include "PreshowerWrapping.h" #include "ScintReadoutGeometry/PreshowerDetectorManager.h" @@ -35,11 +36,12 @@ PreshowerStation::PreshowerStation(const std::string & name, PreshowerPlate* plate, + PreshowerWrapping* wrapping, ScintDD::PreshowerDetectorManager* detectorManager, const PreshowerGeometryManager* geometryManager, PreshowerMaterialManager* materials) : PreshowerUniqueComponentFactory(name, detectorManager, geometryManager, materials), - m_plate { plate } + m_plate { plate }, m_wrapping { wrapping } { getParameters(); m_logVolume = preBuild(); @@ -51,7 +53,7 @@ PreshowerStation::getParameters() { const PreshowerStationParameters * parameters = m_geometryManager->stationParameters(); - m_numPlates = parameters->numPlates(); + m_numPlates = parameters->numPlates(); m_platePitch = parameters->platePitch(); const PreshowerGeneralParameters* generalParameters = m_geometryManager->generalParameters(); @@ -79,13 +81,13 @@ PreshowerStation::getParameters() m_length = std::max(std::max(m_plate->length(), m_radiatorLength), m_absorberLength) + m_safety; // Compute air-gaps between slabs; for now assumed equal based on scintillator pitch - m_airGap = (m_platePitch - m_plate->thickness() - m_radiatorThickness - m_absorberThickness)/3; + m_airGap = (m_platePitch - m_plate->thickness() - m_radiatorThickness - m_absorberThickness - 2 * m_wrapping->thickness())/3; if (m_airGap < 0) { m_detectorManager->msg(MSG::FATAL) << "Invalid passive material geometry for preshower; air gap is negative." << endmsg; } - m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + 3 * m_airGap + 2 * m_absorberThickness + m_radiatorThickness + m_safety; + m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + 3 * m_airGap + 2 * m_absorberThickness + m_radiatorThickness + 2 * m_wrapping->thickness() + m_safety; } @@ -114,6 +116,7 @@ PreshowerStation::build(PreshowerIdentifier id) // double activeDepth = m_thickness - m_safety; double plateThickness = m_plate->thickness(); + double wrappingThickness = m_wrapping->thickness(); for (int iPlate = 0; iPlate < m_numPlates; iPlate++) { station->add(new GeoNameTag("Absorber#"+intToString(iPlate))); @@ -134,10 +137,18 @@ PreshowerStation::build(PreshowerIdentifier id) GeoVPhysVol* radiatorPV = new GeoPhysVol(m_radiatorLog); station->add(radiatorPV); + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"a")); + double zP = zR + m_airGap + wrappingThickness + (plateThickness + m_radiatorThickness)/2; + double zW = zP - (plateThickness + wrappingThickness)/2; + GeoTransform* wrappingTransformA = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + zW)); + station->add(wrappingTransformA); + station->add(m_wrapping->getVolume()); + station->add(new GeoNameTag("Plate#"+intToString(iPlate))); station->add(new GeoIdentifierTag(iPlate)); id.setPlate(iPlate); - double zP = zR + m_airGap + (plateThickness + m_radiatorThickness)/2; GeoAlignableTransform* transform = new GeoAlignableTransform(GeoTrf::Translate3D(0.0, 0.0, zP)); @@ -145,6 +156,15 @@ PreshowerStation::build(PreshowerIdentifier id) GeoVPhysVol* platePV = m_plate->build(id); station->add(platePV); m_detectorManager->addAlignableTransform(0, id.getPlateId(), transform, platePV); + + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"b")); + zW = zP + (plateThickness + wrappingThickness)/2; + GeoTransform* wrappingTransformB = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + zW)); + station->add(wrappingTransformB); + station->add(m_wrapping->getVolume()); + } // Now add the final downstream absorber after the last plate diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h index e1307290b3ef3c89f26a4453a0515f80780d9fea..162c25ef16242906eb57889d8bc450708a748354 100644 --- a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerStation.h @@ -13,6 +13,7 @@ class GeoLogVol; class GeoMaterial; class PreshowerIdentifier; class PreshowerPlate; +class PreshowerWrapping; class PreshowerStation : public PreshowerUniqueComponentFactory { @@ -20,6 +21,7 @@ class PreshowerStation : public PreshowerUniqueComponentFactory public: PreshowerStation(const std::string & name, PreshowerPlate* plate, + PreshowerWrapping* wrapping, ScintDD::PreshowerDetectorManager* detectorManager, const PreshowerGeometryManager* geometryManager, PreshowerMaterialManager* materials); @@ -49,6 +51,7 @@ private: virtual const GeoLogVol * preBuild(); PreshowerPlate* m_plate; + PreshowerWrapping* m_wrapping; int m_numPlates; double m_platePitch; diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7954887977b9916c38247597e5156f297754e3ef --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.cxx @@ -0,0 +1,55 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PreshowerWrapping.h" + +#include "PreshowerMaterialManager.h" + +#include "PreshowerGeometryManager.h" +#include "PreshowerGeneralParameters.h" +#include "PreshowerWrappingParameters.h" + +#include "GeoModelKernel/GeoBox.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoMaterial.h" + +PreshowerWrapping::PreshowerWrapping(const std::string & name, + ScintDD::PreshowerDetectorManager* detectorManager, + const PreshowerGeometryManager* geometryManager, + PreshowerMaterialManager* materials) + : PreshowerSharedComponentFactory(name, detectorManager, geometryManager, materials) +{ + getParameters(); + m_physVolume = build(); +} + +void +PreshowerWrapping::getParameters() +{ + const PreshowerWrappingParameters * parameters = m_geometryManager->wrappingParameters(); + const PreshowerGeneralParameters* generalParameters = m_geometryManager->generalParameters(); + + m_material = m_materials->getMaterial(parameters->wrappingMaterial()); + m_safety = generalParameters->safety(); + m_thickness = parameters->wrappingThickness(); + m_width = parameters->wrappingWidth(); + m_length = parameters->wrappingLength(); +} + +GeoVPhysVol * +PreshowerWrapping::build() +{ + // Just a simple box. + const GeoBox * simpleWrappingShape = new GeoBox(0.5*m_width, + 0.5*m_length, + 0.5*m_thickness); + + const GeoLogVol * simpleWrappingLog = + new GeoLogVol(getName(), simpleWrappingShape, m_material); + + GeoPhysVol * simpleWrapping = new GeoPhysVol(simpleWrappingLog); + + return simpleWrapping; +} diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.h new file mode 100644 index 0000000000000000000000000000000000000000..a29c03d88eea701a101b1cf5f092c4db2492413b --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrapping.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VETOGEOMODEL_VETOWRAPPING_H +#define VETOGEOMODEL_VETOWRAPPING_H + +#include "PreshowerComponentFactory.h" + +class GeoVPhysVol; +class GeoFullPhysVol; +class GeoLogVol; +class GeoMaterial; + +class PreshowerWrapping : public PreshowerSharedComponentFactory +{ + +public: + PreshowerWrapping(const std::string & name, + ScintDD::PreshowerDetectorManager* detectorManager, + const PreshowerGeometryManager* geometryManager, + PreshowerMaterialManager* materials); + +public: + const GeoMaterial * material() const {return m_material;} + double thickness() const {return m_thickness;} + double width() const {return m_width;} + double length() const {return m_length;} + +private: + virtual GeoVPhysVol * build(); + void getParameters(); + + const GeoMaterial * m_material; + double m_thickness; + double m_width; + double m_length; + + double m_safety; +}; + +#endif // VETOGEOMODEL_VETOWRAPPING_H diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.cxx b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d5c5bb9132318e099cbd2ea1392e0e707a977663 --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PreshowerWrappingParameters.h" +#include "PreshowerGeometryManager.h" + +#include "PreshowerDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +PreshowerWrappingParameters::PreshowerWrappingParameters(PreshowerDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Wrapping General +// +double +PreshowerWrappingParameters::wrappingWidth() const +{ + return m_rdb->wrappingGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +PreshowerWrappingParameters::wrappingLength() const +{ + return m_rdb->wrappingGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +PreshowerWrappingParameters::wrappingThickness() const +{ + return m_rdb->wrappingGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string PreshowerWrappingParameters::wrappingMaterial() const +{ + return m_rdb->wrappingGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.h b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..ba67d3b7bc36912ff9e9ae26813e49327051f20e --- /dev/null +++ b/Scintillator/ScintDetDescr/PreshowerGeoModel/src/PreshowerWrappingParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef PreshowerGeoModel_PreshowerWrappingParameters_H +#define PreshowerGeoModel_PreshowerWrappingParameters_H + +#include <string> + +class PreshowerDataBase; + +class PreshowerWrappingParameters { + +public: + + // Constructor + PreshowerWrappingParameters(PreshowerDataBase* rdb); + + // Barrel General + double wrappingThickness() const; + double wrappingWidth() const; + double wrappingLength() const; + std::string wrappingMaterial() const; + + private: + PreshowerDataBase * m_rdb; + +}; + + +#endif // PreshowerGeoModel_PreshowerWrappingParameters_H diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.cxx index fdc662e74df6fc709aba6e41fd61988fc4b1fdea..b76da53afb4d5a1f0bc770bb344e9a4a5f2a489e 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.cxx +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.cxx @@ -77,6 +77,10 @@ TriggerDataBase::TriggerDataBase(const TriggerGeoModelAthenaComps * athenaComps) m_plateGeneral = rdbSvc->getRecordsetPtr("TriggerPlateGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table TriggerPlateGeneral Fetched" << endmsg; + m_wrappingGeneral = rdbSvc->getRecordsetPtr("TriggerWrappingGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table TriggerWrappingGeneral Fetched" << endmsg; + + } const TriggerGeoModelAthenaComps* TriggerDataBase::athenaComps() const { return m_athenaComps; } @@ -93,6 +97,7 @@ IRDBRecordset_ptr TriggerDataBase::topLevelTable() const {return m_topLevel;} const IRDBRecord* TriggerDataBase::stationGeneral() const {return (*m_stationGeneral)[0];} const IRDBRecord* TriggerDataBase::plateGeneral() const {return (*m_plateGeneral)[0];} +const IRDBRecord* TriggerDataBase::wrappingGeneral() const {return (*m_wrappingGeneral)[0];} const std::string & TriggerDataBase::versionTag() const { return m_triggerVersionTag; diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.h b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.h index 99dcf0b53b0e543de00bb899ab60ddb5bfb8d99c..acffb89e06b924de017d5afdc4d8ab03df03f09a 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.h +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDataBase.h @@ -41,6 +41,7 @@ public: // const IRDBRecord* brlThermalShield() const; const IRDBRecord* stationGeneral() const; const IRDBRecord* plateGeneral() const; + const IRDBRecord* wrappingGeneral() const; // const IRDBRecord* brlFSI() const; // int brlFSISize() const; // const IRDBRecord* brlFSILocation(int i) const; @@ -119,6 +120,7 @@ private: // IRDBRecordset_ptr m_brlThermalShield; IRDBRecordset_ptr m_stationGeneral; IRDBRecordset_ptr m_plateGeneral; + IRDBRecordset_ptr m_wrappingGeneral; // IRDBRecordset_ptr m_brlFSI; // IRDBRecordset_ptr m_brlFSILocation; // IRDBRecordset_ptr m_fwdSensor; diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDetectorFactory.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDetectorFactory.cxx index 0df14cc6d216888f268ba7d71072583b78d14309..8816c6c49c7ebff06ab1ae412c7da64c5fae3d60 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDetectorFactory.cxx +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerDetectorFactory.cxx @@ -21,6 +21,7 @@ #include "TriggerStation.h" #include "TriggerPlate.h" +#include "TriggerWrapping.h" #include "TriggerDataBase.h" #include "TriggerGeoModel/TriggerGeoModelAthenaComps.h" @@ -162,6 +163,8 @@ void TriggerDetectorFactory::create(GeoPhysVol *world) // TriggerPlate plate("Plate", m_detectorManager, m_geometryManager, m_materials); msg(MSG::DEBUG) << "Created Trigger plate with dimensions (" << plate.thickness() << "," << plate.width() << "," << plate.length() << ")" << endmsg; + TriggerWrapping wrapping("Wrapping", m_detectorManager, m_geometryManager, m_materials); + msg(MSG::DEBUG) << "Created Trigger wrapping with dimensions (" << wrapping.thickness() << "," << wrapping.width() << "," << wrapping.length() << ")" << endmsg; // // Station A // @@ -171,7 +174,7 @@ void TriggerDetectorFactory::create(GeoPhysVol *world) m_detectorManager->numerology().addStation(0); // Create the station - TriggerStation stationA("TriggerStationA", &plate, m_detectorManager, m_geometryManager, m_materials); + TriggerStation stationA("TriggerStationA", &plate, &wrapping, m_detectorManager, m_geometryManager, m_materials); TriggerIdentifier id{m_geometryManager->athenaComps()->getIdHelper()}; id.setStation(0); msg(MSG::VERBOSE) << "Building Station A physical volume" << endmsg; diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.cxx index 39fef7a42a2c445d340834b2d7da55a9ef95b188..dc4876392fc57774fcc8f6e30ee7b1573fad73dc 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.cxx +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.cxx @@ -8,6 +8,7 @@ #include "ScintIdentifier/TriggerID.h" #include "ScintReadoutGeometry/ScintCommonItems.h" #include "TriggerStationParameters.h" +#include "TriggerWrappingParameters.h" #include "TriggerPlateParameters.h" #include "TriggerDataBase.h" #include "TriggerGeneralParameters.h" @@ -21,6 +22,7 @@ TriggerGeometryManager::TriggerGeometryManager(TriggerDataBase* rdb) m_commonItems = new ScintDD::ScintCommonItems(m_athenaComps->getIdHelper()); m_stationParameters = std::make_unique<TriggerStationParameters>(m_rdb); + m_wrappingParameters = std::make_unique<TriggerWrappingParameters>(m_rdb); m_plateParameters = std::make_unique<TriggerPlateParameters>(m_rdb); m_generalParameters = std::make_unique<TriggerGeneralParameters>(m_rdb); m_distortedMatManager = std::make_unique<ScintDD::DistortedMaterialManager>(); @@ -67,6 +69,12 @@ TriggerGeometryManager::stationParameters() const return m_stationParameters.get(); } +const TriggerWrappingParameters * +TriggerGeometryManager::wrappingParameters() const +{ + return m_wrappingParameters.get(); +} + const TriggerPlateParameters * TriggerGeometryManager::plateParameters() const { @@ -93,6 +101,7 @@ TriggerGeometryManager::operator=(const TriggerGeometryManager& right) { m_commonItems = right.m_commonItems; m_rdb = right.m_rdb; m_stationParameters.reset(new TriggerStationParameters(m_rdb)); + m_wrappingParameters.reset(new TriggerWrappingParameters(m_rdb)); m_plateParameters.reset(new TriggerPlateParameters(m_rdb)); m_generalParameters.reset(new TriggerGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); @@ -106,6 +115,7 @@ TriggerGeometryManager::TriggerGeometryManager(const TriggerGeometryManager& rig m_commonItems = right.m_commonItems; m_rdb = right.m_rdb; m_stationParameters.reset(new TriggerStationParameters(m_rdb)); + m_wrappingParameters.reset(new TriggerWrappingParameters(m_rdb)); m_plateParameters.reset(new TriggerPlateParameters(m_rdb)); m_generalParameters.reset(new TriggerGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.h b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.h index 862e5e49b9834a4ba00e1d5e766e18ab21ab6d98..302fa97778453fe2b32bf5a27247a3a3827718d0 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.h +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerGeometryManager.h @@ -15,6 +15,7 @@ namespace ScintDD { } class TriggerStationParameters; +class TriggerWrappingParameters; class TriggerPlateParameters; class TriggerDataBase; class TriggerGeneralParameters; @@ -41,6 +42,7 @@ public: const ScintDD::ScintCommonItems * commonItems() const; const TriggerStationParameters* stationParameters() const; + const TriggerWrappingParameters* wrappingParameters() const; const TriggerPlateParameters* plateParameters() const; const TriggerGeneralParameters* generalParameters() const; const ScintDD::DistortedMaterialManager* distortedMatManager() const; @@ -56,6 +58,7 @@ private: TriggerDataBase* m_rdb; std::unique_ptr<TriggerStationParameters> m_stationParameters; + std::unique_ptr<TriggerWrappingParameters> m_wrappingParameters; std::unique_ptr<TriggerPlateParameters> m_plateParameters; std::unique_ptr<TriggerGeneralParameters> m_generalParameters; std::unique_ptr<ScintDD::DistortedMaterialManager> m_distortedMatManager; diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.cxx index 06d5c2432f60466a996c3f9358641c3e2517ae4b..e3b256acf1c2ef112bb4dc362a6fc124b56c9c30 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.cxx +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.cxx @@ -11,6 +11,7 @@ #include "TriggerGeneralParameters.h" #include "TriggerIdentifier.h" #include "TriggerPlate.h" +#include "TriggerWrapping.h" #include "ScintReadoutGeometry/TriggerDetectorManager.h" @@ -33,11 +34,12 @@ TriggerStation::TriggerStation(const std::string & name, TriggerPlate* plate, + TriggerWrapping* wrapping, ScintDD::TriggerDetectorManager* detectorManager, const TriggerGeometryManager* geometryManager, TriggerMaterialManager* materials) : TriggerUniqueComponentFactory(name, detectorManager, geometryManager, materials), - m_plate { plate } + m_plate { plate }, m_wrapping{ wrapping } { getParameters(); m_logVolume = preBuild(); @@ -60,7 +62,7 @@ TriggerStation::getParameters() // m_length = m_plate->length() + m_safety; // veto // pitch includes thickness of one plate m_length = m_platePitchY + m_plate->length() + m_safety; - m_thickness = (m_numPlates - 1) * std::fabs(m_platePitchZ) + m_plate->thickness() + m_safety; + m_thickness = (m_numPlates - 1) * std::fabs(m_platePitchZ) + m_plate->thickness() + 2 * m_wrapping->thickness() + m_safety; // Set numerology m_detectorManager->numerology().setNumPlatesPerStation(m_numPlates); @@ -84,20 +86,37 @@ TriggerStation::build(TriggerIdentifier id) double activeDepth = m_thickness - m_safety; double plateThickness = m_plate->thickness(); + double wrappingThickness = m_wrapping->thickness(); for (int iPlate = 0; iPlate < m_numPlates; iPlate++) { + double plateCenterY = -0.5*m_platePitchY + (iPlate%2) * m_platePitchY; + double plateCenterZ = -((plateThickness - activeDepth)/2 + wrappingThickness + iPlate * m_platePitchZ); + + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"a")); + GeoTransform* transformA = new GeoTransform(GeoTrf::Translate3D(0.0, + plateCenterY, + plateCenterZ - plateThickness/2 - wrappingThickness/2)); + station->add(transformA); + station->add(m_wrapping->getVolume()); + station->add(new GeoNameTag("Plate#"+intToString(iPlate))); station->add(new GeoIdentifierTag(iPlate)); id.setPlate(iPlate); - double zPlate = -((plateThickness - activeDepth)/2 + iPlate * m_platePitchZ); - std::cout << "zPlate = " << zPlate << std::endl; + std::cout << "zPlate = " << plateCenterZ << std::endl; GeoAlignableTransform* transform = new GeoAlignableTransform(GeoTrf::Translate3D(0.0, - -0.5*m_platePitchY + (iPlate%2) * m_platePitchY, - zPlate)); + plateCenterY, + plateCenterZ)); station->add(transform); GeoVPhysVol* platePV = m_plate->build(id); station->add(platePV); m_detectorManager->addAlignableTransform(0, id.getPlateId(), transform, platePV); + + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"b")); + GeoTransform* transformB = new GeoTransform(GeoTrf::Translate3D(0.0, + plateCenterY, + plateCenterZ + plateThickness/2 + wrappingThickness/2)); + station->add(transformB); + station->add(m_wrapping->getVolume()); } return station; } diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.h b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.h index e76dab65e32adfb6cf0254a141dca92b36a5aef5..addb62d4d24f2a05e32ca1e10b8a33c5827c6429 100644 --- a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.h +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerStation.h @@ -12,6 +12,7 @@ class GeoFullPhysVol; class GeoLogVol; class TriggerIdentifier; class TriggerPlate; +class TriggerWrapping; class TriggerStation : public TriggerUniqueComponentFactory { @@ -19,6 +20,7 @@ class TriggerStation : public TriggerUniqueComponentFactory public: TriggerStation(const std::string & name, TriggerPlate* plate, + TriggerWrapping* wrapping, ScintDD::TriggerDetectorManager* detectorManager, const TriggerGeometryManager* geometryManager, TriggerMaterialManager* materials); @@ -37,6 +39,7 @@ private: virtual const GeoLogVol * preBuild(); TriggerPlate* m_plate; + TriggerWrapping* m_wrapping; int m_numPlates; double m_platePitchY; diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b20754630050368c48b575e16fba49293e4062bc --- /dev/null +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.cxx @@ -0,0 +1,55 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TriggerWrapping.h" + +#include "TriggerMaterialManager.h" + +#include "TriggerGeometryManager.h" +#include "TriggerGeneralParameters.h" +#include "TriggerWrappingParameters.h" + +#include "GeoModelKernel/GeoBox.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoMaterial.h" + +TriggerWrapping::TriggerWrapping(const std::string & name, + ScintDD::TriggerDetectorManager* detectorManager, + const TriggerGeometryManager* geometryManager, + TriggerMaterialManager* materials) + : TriggerSharedComponentFactory(name, detectorManager, geometryManager, materials) +{ + getParameters(); + m_physVolume = build(); +} + +void +TriggerWrapping::getParameters() +{ + const TriggerWrappingParameters * parameters = m_geometryManager->wrappingParameters(); + const TriggerGeneralParameters* generalParameters = m_geometryManager->generalParameters(); + + m_material = m_materials->getMaterial(parameters->wrappingMaterial()); + m_safety = generalParameters->safety(); + m_thickness = parameters->wrappingThickness(); + m_width = parameters->wrappingWidth(); + m_length = parameters->wrappingLength(); +} + +GeoVPhysVol * +TriggerWrapping::build() +{ + // Just a simple box. + const GeoBox * simpleWrappingShape = new GeoBox(0.5*m_width, + 0.5*m_length, + 0.5*m_thickness); + + const GeoLogVol * simpleWrappingLog = + new GeoLogVol(getName(), simpleWrappingShape, m_material); + + GeoPhysVol * simpleWrapping = new GeoPhysVol(simpleWrappingLog); + + return simpleWrapping; +} diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.h b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.h new file mode 100644 index 0000000000000000000000000000000000000000..15df4676c23887387323f414e5916ea5249f262c --- /dev/null +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrapping.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGGERGEOMODEL_TRIGGERWRAPPING_H +#define TRIGGERGEOMODEL_TRIGGERWRAPPING_H + +#include "TriggerComponentFactory.h" + +class GeoVPhysVol; +class GeoFullPhysVol; +class GeoLogVol; +class GeoMaterial; + +class TriggerWrapping : public TriggerSharedComponentFactory +{ + +public: + TriggerWrapping(const std::string & name, + ScintDD::TriggerDetectorManager* detectorManager, + const TriggerGeometryManager* geometryManager, + TriggerMaterialManager* materials); + +public: + const GeoMaterial * material() const {return m_material;} + double thickness() const {return m_thickness;} + double width() const {return m_width;} + double length() const {return m_length;} + +private: + virtual GeoVPhysVol * build(); + void getParameters(); + + const GeoMaterial * m_material; + double m_thickness; + double m_width; + double m_length; + + double m_safety; +}; + +#endif // VETOGEOMODEL_VETOWRAPPING_H diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.cxx b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..4e99528555743a7b4fc5c03a57ed9595a46cb879 --- /dev/null +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TriggerWrappingParameters.h" +#include "TriggerGeometryManager.h" + +#include "TriggerDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +TriggerWrappingParameters::TriggerWrappingParameters(TriggerDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Wrapping General +// +double +TriggerWrappingParameters::wrappingWidth() const +{ + return m_rdb->wrappingGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +TriggerWrappingParameters::wrappingLength() const +{ + return m_rdb->wrappingGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +TriggerWrappingParameters::wrappingThickness() const +{ + return m_rdb->wrappingGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string TriggerWrappingParameters::wrappingMaterial() const +{ + return m_rdb->wrappingGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.h b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..1d4cd5471871d04a127d2f309557f8876ec79c09 --- /dev/null +++ b/Scintillator/ScintDetDescr/TriggerGeoModel/src/TriggerWrappingParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TriggerGeoModel_TriggerWrappingParameters_H +#define TriggerGeoModel_TriggerWrappingParameters_H + +#include <string> + +class TriggerDataBase; + +class TriggerWrappingParameters { + +public: + + // Constructor + TriggerWrappingParameters(TriggerDataBase* rdb); + + // Barrel General + double wrappingThickness() const; + double wrappingWidth() const; + double wrappingLength() const; + std::string wrappingMaterial() const; + + private: + TriggerDataBase * m_rdb; + +}; + + +#endif // TriggerGeoModel_TriggerWrappingParameters_H diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx index 2ef72a43a9063a8f00c9f74b8eac89f75eb3121c..4cdf47ced2af4f38227ab7b08e259b24ebb7f50a 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.cxx @@ -80,6 +80,9 @@ VetoDataBase::VetoDataBase(const VetoGeoModelAthenaComps * athenaComps) m_radiatorGeneral = rdbSvc->getRecordsetPtr("VetoRadiatorGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table VetoRadiatorGeneral Fetched" << endmsg; + m_wrappingGeneral = rdbSvc->getRecordsetPtr("VetoWrappingGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table VetoWrappingGeneral Fetched" << endmsg; + } @@ -98,6 +101,7 @@ IRDBRecordset_ptr VetoDataBase::topLevelTable() const {return m_topLevel;} const IRDBRecord* VetoDataBase::stationGeneral() const {return (*m_stationGeneral)[0];} const IRDBRecord* VetoDataBase::plateGeneral() const {return (*m_plateGeneral)[0];} const IRDBRecord* VetoDataBase::radiatorGeneral() const {return (*m_radiatorGeneral)[0];} +const IRDBRecord* VetoDataBase::wrappingGeneral() const {return (*m_wrappingGeneral)[0];} const std::string & VetoDataBase::versionTag() const { return m_vetoVersionTag; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h index 74f2365b22dad7eb92ff5cb4513db45ceb29000f..6148a55c937b32bd2f491deb735b7dcf9ddb9546 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDataBase.h @@ -42,6 +42,7 @@ public: const IRDBRecord* stationGeneral() const; const IRDBRecord* plateGeneral() const; const IRDBRecord* radiatorGeneral() const; + const IRDBRecord* wrappingGeneral() const; // const IRDBRecord* brlFSI() const; // int brlFSISize() const; // const IRDBRecord* brlFSILocation(int i) const; @@ -121,6 +122,7 @@ private: IRDBRecordset_ptr m_stationGeneral; IRDBRecordset_ptr m_plateGeneral; IRDBRecordset_ptr m_radiatorGeneral; + IRDBRecordset_ptr m_wrappingGeneral; // IRDBRecordset_ptr m_brlFSI; // IRDBRecordset_ptr m_brlFSILocation; // IRDBRecordset_ptr m_fwdSensor; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx index 9d3d9659f6fd590cb053c589e53d8719cce3ebea..7a40a18e453dc3a1e459fbc665f7e643a11f4d3c 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoDetectorFactory.cxx @@ -22,6 +22,7 @@ #include "VetoStation.h" #include "VetoRadiator.h" #include "VetoPlate.h" +#include "VetoWrapping.h" #include "VetoDataBase.h" #include "VetoGeoModel/VetoGeoModelAthenaComps.h" @@ -160,6 +161,9 @@ void VetoDetectorFactory::create(GeoPhysVol *world) // VetoPlate plate("Plate", m_detectorManager, m_geometryManager, m_materials); msg(MSG::DEBUG) << "Created Veto plate with dimensions (" << plate.thickness() << "," << plate.width() << "," << plate.length() << ")" << endmsg; + VetoWrapping wrapping("Wrapping", m_detectorManager, m_geometryManager, m_materials); + msg(MSG::DEBUG) << "Created Veto wrapping with dimensions (" << wrapping.thickness() << "," << wrapping.width() << "," << wrapping.length() << ")" << endmsg; + // // Station A // @@ -169,7 +173,7 @@ void VetoDetectorFactory::create(GeoPhysVol *world) m_detectorManager->numerology().addStation(0); // Create the station - VetoStation stationA("VetoStationA", &plate, m_detectorManager, m_geometryManager, m_materials); + VetoStation stationA("VetoStationA", &plate, &wrapping, m_detectorManager, m_geometryManager, m_materials); VetoIdentifier id{m_geometryManager->athenaComps()->getIdHelper()}; id.setStation(0); GeoVPhysVol* stationA_PV = stationA.build(id); @@ -195,7 +199,7 @@ void VetoDetectorFactory::create(GeoPhysVol *world) m_detectorManager->numerology().addStation(1); // Create the station - VetoStation stationB("VetoStationB", &plate, m_detectorManager, m_geometryManager, m_materials); + VetoStation stationB("VetoStationB", &plate, &wrapping, m_detectorManager, m_geometryManager, m_materials); VetoIdentifier id{m_geometryManager->athenaComps()->getIdHelper()}; id.setStation(1); GeoVPhysVol* stationB_PV = stationB.build(id); diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx index 53190a50a7897d448b2ebdea0f108b83d5917765..3e3d23f2cbe3ad6358b4f6cbaedf1cad7b481a50 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.cxx @@ -10,6 +10,7 @@ #include "VetoStationParameters.h" #include "VetoPlateParameters.h" #include "VetoRadiatorParameters.h" +#include "VetoWrappingParameters.h" #include "VetoDataBase.h" #include "VetoGeneralParameters.h" #include "VetoGeoModel/VetoGeoModelAthenaComps.h" @@ -24,6 +25,7 @@ VetoGeometryManager::VetoGeometryManager(VetoDataBase* rdb) m_stationParameters = std::make_unique<VetoStationParameters>(m_rdb); m_plateParameters = std::make_unique<VetoPlateParameters>(m_rdb); m_radiatorParameters = std::make_unique<VetoRadiatorParameters>(m_rdb); + m_wrappingParameters = std::make_unique<VetoWrappingParameters>(m_rdb); m_generalParameters = std::make_unique<VetoGeneralParameters>(m_rdb); m_distortedMatManager = std::make_unique<ScintDD::DistortedMaterialManager>(); } @@ -81,6 +83,12 @@ VetoGeometryManager::radiatorParameters() const return m_radiatorParameters.get(); } +const VetoWrappingParameters * +VetoGeometryManager::wrappingParameters() const +{ + return m_wrappingParameters.get(); +} + const VetoGeneralParameters * VetoGeometryManager::generalParameters() const @@ -104,6 +112,7 @@ VetoGeometryManager::operator=(const VetoGeometryManager& right) { m_stationParameters.reset(new VetoStationParameters(m_rdb)); m_plateParameters.reset(new VetoPlateParameters(m_rdb)); m_radiatorParameters.reset(new VetoRadiatorParameters(m_rdb)); + m_wrappingParameters.reset(new VetoWrappingParameters(m_rdb)); m_generalParameters.reset(new VetoGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } @@ -118,6 +127,7 @@ VetoGeometryManager::VetoGeometryManager(const VetoGeometryManager& right) { m_stationParameters.reset(new VetoStationParameters(m_rdb)); m_plateParameters.reset(new VetoPlateParameters(m_rdb)); m_radiatorParameters.reset(new VetoRadiatorParameters(m_rdb)); + m_wrappingParameters.reset(new VetoWrappingParameters(m_rdb)); m_generalParameters.reset(new VetoGeneralParameters(m_rdb)); m_distortedMatManager.reset(new ScintDD::DistortedMaterialManager()); } diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h index 317cfd1442aace6744701381910420dec9172f13..91a811055b457f0d1aef47cfb9562c7de141ee69 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoGeometryManager.h @@ -17,6 +17,7 @@ namespace ScintDD { class VetoStationParameters; class VetoPlateParameters; class VetoRadiatorParameters; +class VetoWrappingParameters; class VetoDataBase; class VetoGeneralParameters; class VetoGeoModelAthenaComps; @@ -44,6 +45,7 @@ public: const VetoStationParameters* stationParameters() const; const VetoPlateParameters* plateParameters() const; const VetoRadiatorParameters* radiatorParameters() const; + const VetoWrappingParameters* wrappingParameters() const; const VetoGeneralParameters* generalParameters() const; const ScintDD::DistortedMaterialManager* distortedMatManager() const; @@ -60,6 +62,7 @@ private: std::unique_ptr<VetoStationParameters> m_stationParameters; std::unique_ptr<VetoPlateParameters> m_plateParameters; std::unique_ptr<VetoRadiatorParameters> m_radiatorParameters; + std::unique_ptr<VetoWrappingParameters> m_wrappingParameters; std::unique_ptr<VetoGeneralParameters> m_generalParameters; std::unique_ptr<ScintDD::DistortedMaterialManager> m_distortedMatManager; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.cxx index 7354aadd0329f299a531ec559067d9fa10e88b04..05e4a8b0bcb628a699b917cfecf9612d7910aeae 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.cxx +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.cxx @@ -11,6 +11,7 @@ #include "VetoGeneralParameters.h" #include "VetoIdentifier.h" #include "VetoPlate.h" +#include "VetoWrapping.h" #include "ScintReadoutGeometry/VetoDetectorManager.h" @@ -33,11 +34,12 @@ VetoStation::VetoStation(const std::string & name, VetoPlate* plate, + VetoWrapping* wrapping, ScintDD::VetoDetectorManager* detectorManager, const VetoGeometryManager* geometryManager, VetoMaterialManager* materials) : VetoUniqueComponentFactory(name, detectorManager, geometryManager, materials), - m_plate { plate } + m_plate { plate }, m_wrapping { wrapping } { getParameters(); m_logVolume = preBuild(); @@ -58,7 +60,7 @@ VetoStation::getParameters() m_width = m_plate->width() + m_safety; m_length = m_plate->length() + m_safety; // pitch includes thickness of one plate - m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + m_safety; + m_thickness = (m_numPlates - 1) * m_platePitch + m_plate->thickness() + 2 * m_wrapping->thickness() + m_safety; // Set numerology m_detectorManager->numerology().setNumPlatesPerStation(m_numPlates); @@ -82,18 +84,37 @@ VetoStation::build(VetoIdentifier id) double activeDepth = m_thickness - m_safety; double plateThickness = m_plate->thickness(); + double wrappingThickness = m_wrapping->thickness(); + for (int iPlate = 0; iPlate < m_numPlates; iPlate++) { + double plateCenterZ = (plateThickness - activeDepth)/2 + wrappingThickness + iPlate * m_platePitch; + + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"a")); + GeoTransform* transformA = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + plateCenterZ - plateThickness/2 - wrappingThickness/2)); + station->add(transformA); + station->add(m_wrapping->getVolume()); + station->add(new GeoNameTag("Plate#"+intToString(iPlate))); station->add(new GeoIdentifierTag(iPlate)); id.setPlate(iPlate); GeoAlignableTransform* transform = new GeoAlignableTransform(GeoTrf::Translate3D(0.0, 0.0, - (plateThickness - activeDepth)/2 + iPlate * m_platePitch)); + plateCenterZ)); station->add(transform); GeoVPhysVol* platePV = m_plate->build(id); station->add(platePV); m_detectorManager->addAlignableTransform(0, id.getPlateId(), transform, platePV); + + station->add(new GeoNameTag("Wrapping#"+intToString(iPlate)+"b")); + GeoTransform* transformB = new GeoTransform(GeoTrf::Translate3D(0.0, + 0.0, + plateCenterZ + plateThickness/2 + wrappingThickness/2)); + station->add(transformB); + station->add(m_wrapping->getVolume()); + } return station; } diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.h index bb91ace47c4942eeeb4d9b9cb6a44ae48f93fb58..1ef8b2e51c217b11d258dd569f3d97cb2651301d 100644 --- a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.h +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoStation.h @@ -12,6 +12,7 @@ class GeoFullPhysVol; class GeoLogVol; class VetoIdentifier; class VetoPlate; +class VetoWrapping; class VetoStation : public VetoUniqueComponentFactory { @@ -19,6 +20,7 @@ class VetoStation : public VetoUniqueComponentFactory public: VetoStation(const std::string & name, VetoPlate* plate, + VetoWrapping* wrapping, ScintDD::VetoDetectorManager* detectorManager, const VetoGeometryManager* geometryManager, VetoMaterialManager* materials); @@ -36,6 +38,7 @@ private: virtual const GeoLogVol * preBuild(); VetoPlate* m_plate; + VetoWrapping* m_wrapping; int m_numPlates; double m_platePitch; diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.cxx new file mode 100644 index 0000000000000000000000000000000000000000..a90c6005b3a48f72c9de5a00bb16ca4437121338 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.cxx @@ -0,0 +1,55 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "VetoWrapping.h" + +#include "VetoMaterialManager.h" + +#include "VetoGeometryManager.h" +#include "VetoGeneralParameters.h" +#include "VetoWrappingParameters.h" + +#include "GeoModelKernel/GeoBox.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoMaterial.h" + +VetoWrapping::VetoWrapping(const std::string & name, + ScintDD::VetoDetectorManager* detectorManager, + const VetoGeometryManager* geometryManager, + VetoMaterialManager* materials) + : VetoSharedComponentFactory(name, detectorManager, geometryManager, materials) +{ + getParameters(); + m_physVolume = build(); +} + +void +VetoWrapping::getParameters() +{ + const VetoWrappingParameters * parameters = m_geometryManager->wrappingParameters(); + const VetoGeneralParameters* generalParameters = m_geometryManager->generalParameters(); + + m_material = m_materials->getMaterial(parameters->wrappingMaterial()); + m_safety = generalParameters->safety(); + m_thickness = parameters->wrappingThickness(); + m_width = parameters->wrappingWidth(); + m_length = parameters->wrappingLength(); +} + +GeoVPhysVol * +VetoWrapping::build() +{ + // Just a simple box. + const GeoBox * simpleWrappingShape = new GeoBox(0.5*m_width, + 0.5*m_length, + 0.5*m_thickness); + + const GeoLogVol * simpleWrappingLog = + new GeoLogVol(getName(), simpleWrappingShape, m_material); + + GeoPhysVol * simpleWrapping = new GeoPhysVol(simpleWrappingLog); + + return simpleWrapping; +} diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.h new file mode 100644 index 0000000000000000000000000000000000000000..026f3c7cafab41ed178b24fa37faaa6c45a80072 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrapping.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VETOGEOMODEL_VETOWRAPPING_H +#define VETOGEOMODEL_VETOWRAPPING_H + +#include "VetoComponentFactory.h" + +class GeoVPhysVol; +class GeoFullPhysVol; +class GeoLogVol; +class GeoMaterial; + +class VetoWrapping : public VetoSharedComponentFactory +{ + +public: + VetoWrapping(const std::string & name, + ScintDD::VetoDetectorManager* detectorManager, + const VetoGeometryManager* geometryManager, + VetoMaterialManager* materials); + +public: + const GeoMaterial * material() const {return m_material;} + double thickness() const {return m_thickness;} + double width() const {return m_width;} + double length() const {return m_length;} + +private: + virtual GeoVPhysVol * build(); + void getParameters(); + + const GeoMaterial * m_material; + double m_thickness; + double m_width; + double m_length; + + double m_safety; +}; + +#endif // VETOGEOMODEL_VETOWRAPPING_H diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.cxx b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..5eee796e674b30f109790ac449c1ac2b4453f305 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "VetoWrappingParameters.h" +#include "VetoGeometryManager.h" + +#include "VetoDataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +VetoWrappingParameters::VetoWrappingParameters(VetoDataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Wrapping General +// +double +VetoWrappingParameters::wrappingWidth() const +{ + return m_rdb->wrappingGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +VetoWrappingParameters::wrappingLength() const +{ + return m_rdb->wrappingGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +VetoWrappingParameters::wrappingThickness() const +{ + return m_rdb->wrappingGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string VetoWrappingParameters::wrappingMaterial() const +{ + return m_rdb->wrappingGeneral()->getString("MATERIAL"); +} + diff --git a/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.h b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..c08a9985b104639ed9cae347417b90f56fbfba62 --- /dev/null +++ b/Scintillator/ScintDetDescr/VetoGeoModel/src/VetoWrappingParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef VetoGeoModel_VetoWrappingParameters_H +#define VetoGeoModel_VetoWrappingParameters_H + +#include <string> + +class VetoDataBase; + +class VetoWrappingParameters { + +public: + + // Constructor + VetoWrappingParameters(VetoDataBase* rdb); + + // Barrel General + double wrappingThickness() const; + double wrappingWidth() const; + double wrappingLength() const; + std::string wrappingMaterial() const; + + private: + VetoDataBase * m_rdb; + +}; + + +#endif // VetoGeoModel_VetoWrappingParameters_H diff --git a/Scintillator/ScintDigiAlgs/CMakeLists.txt b/Scintillator/ScintDigiAlgs/CMakeLists.txt index 5c1874e2502241f919efb21ade0e7c26de7369ca..d2de59c66529f8e9fb68e68a48259e764ecd96be 100644 --- a/Scintillator/ScintDigiAlgs/CMakeLists.txt +++ b/Scintillator/ScintDigiAlgs/CMakeLists.txt @@ -9,9 +9,9 @@ atlas_subdir( ScintDigiAlgs ) atlas_add_component( ScintDigiAlgs src/*.cxx src/*.h src/components/*.cxx - LINK_LIBRARIES AthenaBaseComps Identifier ScintIdentifier - WaveformConditionsToolsLib StoreGateLib WaveRawEvent - ScintSimEvent WaveDigiToolsLib) + LINK_LIBRARIES AthenaBaseComps Identifier StoreGateLib + ScintIdentifier ScintReadoutGeometry ScintSimEvent + WaveRawEvent WaveformConditionsToolsLib WaveDigiToolsLib) atlas_install_python_modules( python/*.py ) diff --git a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py index 538f8d2a3f64e9d8189bd8d849cd784af7441be5..5ed331105cc6fa9a493c923d4c32ea64e2de5a9c 100644 --- a/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py +++ b/Scintillator/ScintDigiAlgs/python/ScintDigiAlgsConfig.py @@ -20,13 +20,13 @@ def ScintWaveformDigitizationCfg(flags, **kwargs): kwargs.pop("digiTag") if "TB" in flags.GeoModel.FaserVersion: - acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto")) - acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower")) + acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto", **kwargs)) + acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower", **kwargs)) else: - acc.merge(ScintWaveformDigiCfg(flags, "TriggerWaveformDigiAlg", "Trigger")) - acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto")) - acc.merge(ScintWaveformDigiCfg(flags, "VetoNuWaveformDigiAlg", "VetoNu")) - acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower")) + acc.merge(ScintWaveformDigiCfg(flags, "TriggerWaveformDigiAlg", "Trigger", **kwargs)) + acc.merge(ScintWaveformDigiCfg(flags, "VetoWaveformDigiAlg", "Veto", **kwargs)) + acc.merge(ScintWaveformDigiCfg(flags, "VetoNuWaveformDigiAlg", "VetoNu", **kwargs)) + acc.merge(ScintWaveformDigiCfg(flags, "PreshowerWaveformDigiAlg", "Preshower", **kwargs)) acc.merge(ScintWaveformDigitizationOutputCfg(flags)) acc.merge(WaveformCableMappingCfg(flags)) @@ -39,7 +39,7 @@ def ScintWaveformDigiCfg(flags, name="ScintWaveformDigiAlg", source="", **kwargs acc = ComponentAccumulator() - tool = CompFactory.WaveformDigitisationTool(name=source+"WaveformDigtisationTool", **kwargs) + tool = CompFactory.WaveformDigitisationTool(name=source+"WaveformDigtisationTool") kwargs.setdefault("WaveformDigitisationTool", tool) kwargs.setdefault("ScintHitContainerKey", source+"Hits") diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx index 1869860e84a401fffbfe6a588d6b8e78ba702e9a..00d498b31ff73084f008048f6a643c2b3fabc699 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.cxx @@ -1,6 +1,13 @@ #include "ScintWaveformDigiAlg.h" -#include "ScintSimEvent/ScintHitIdHelper.h" +#include "ScintReadoutGeometry/VetoDetectorManager.h" +#include "ScintReadoutGeometry/VetoNuDetectorManager.h" +#include "ScintReadoutGeometry/TriggerDetectorManager.h" +#include "ScintReadoutGeometry/PreshowerDetectorManager.h" + +#include "ScintReadoutGeometry/ScintDetectorElement.h" + +#include "GaudiKernel/PhysicalConstants.h" #include <map> #include <cmath> @@ -27,15 +34,13 @@ ScintWaveformDigiAlg::initialize() { // Set key to write container ATH_CHECK( m_waveformContainerKey.initialize() ); - // Set up helpers - ATH_CHECK(detStore()->retrieve(m_vetoID, "VetoID")); - ATH_CHECK(detStore()->retrieve(m_vetoNuID, "VetoNuID")); - ATH_CHECK(detStore()->retrieve(m_triggerID, "TriggerID")); - ATH_CHECK(detStore()->retrieve(m_preshowerID, "PreshowerID")); - - // Need to set this on first event - m_kernel = 0; - + // And print out our timing simulation + if (m_advancedTiming) { + ATH_MSG_INFO("Using improved digitization timing"); + } else { + ATH_MSG_INFO("Using simple digitization timing"); + } + return StatusCode::SUCCESS; } @@ -43,9 +48,6 @@ StatusCode ScintWaveformDigiAlg::finalize() { ATH_MSG_INFO(name() << "::finalize()"); - if (m_kernel) - delete m_kernel; - return StatusCode::SUCCESS; } @@ -71,138 +73,31 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const { return StatusCode::SUCCESS; } - if (!m_kernel) { - - ATH_MSG_INFO(name() << ": initialize waveform digitization kernel"); - ATH_MSG_INFO(" Norm: " << m_digiCondTool->cb_norm(ctx)); - ATH_MSG_INFO(" Mean: " << m_digiCondTool->cb_mean(ctx)); - ATH_MSG_INFO(" Sigma: " << m_digiCondTool->cb_sigma(ctx)); - ATH_MSG_INFO(" Alpha: " << m_digiCondTool->cb_alpha(ctx)); - ATH_MSG_INFO(" N: " << m_digiCondTool->cb_n(ctx)); - - // Set up waveform shape - m_kernel = new TF1("PDF", "[4] * ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200); - - m_kernel->SetParameter(0, m_digiCondTool->cb_alpha(ctx)); - m_kernel->SetParameter(1, m_digiCondTool->cb_n(ctx)); - m_kernel->SetParameter(2, m_digiCondTool->cb_sigma(ctx)); - m_kernel->SetParameter(3, m_digiCondTool->cb_mean(ctx)); - m_kernel->SetParameter(4, m_digiCondTool->cb_norm(ctx)); - - // Pre-evaluate time kernel for each bin - m_timekernel = m_digiTool->evaluate_timekernel(m_kernel); - - // Also save the baseline parameters - m_base_mean = m_digiCondTool->base_mean(ctx); - m_base_rms = m_digiCondTool->base_rms(ctx); - } - // Create structure to store pulse for each channel std::map<Identifier, std::vector<uint16_t>> waveforms; + waveforms.clear(); - auto first = *scintHitHandle->begin(); - if (first.isVeto()) { - waveforms = m_digiTool->create_waveform_map(m_vetoID); - } else if (first.isVetoNu()) { - waveforms = m_digiTool->create_waveform_map(m_vetoNuID); - } else if (first.isTrigger()) { - waveforms = m_digiTool->create_waveform_map(m_triggerID); - } else if (first.isPreshower()) { - waveforms = m_digiTool->create_waveform_map(m_preshowerID); - } - - // Sum energy for each channel (i.e. identifier) - std::map<Identifier, float> esum; - - Identifier id; - for (const auto& hit : *scintHitHandle) { - if (first.isTrigger()) { - Identifier plate_id = m_triggerID->plate_id(hit.getIdentifier()); - // Need to do something better here, but for now just fill both - id = m_triggerID->pmt_id(plate_id, 0); // ID for PMT 0 - esum[id] += hit.energyLoss(); - id = m_triggerID->pmt_id(plate_id, 1); // ID for PMT 1 - esum[id] += hit.energyLoss(); - } else { - // All others have only 1 PMT - // Use detector id (not hit id) throughout - id = hit.getIdentifier(); - esum[id] += hit.energyLoss(); - } - } - - // Loop over time samples - for (const auto& tk : m_timekernel) { - std::map<Identifier, float> counts; - -// // Convolve hit energy with evaluated kernel and sum for each hit id (i.e. channel) -// Identifier id; -// for (const auto& hit : *scintHitHandle) { -// -// // Special handling for trigger scintillator -// if (first.isTrigger()) { -// // Hits are created per plate -// // Need to split between 2 PMTs -// -// // Identifier from hit is plate ID -// Identifier plate_id = m_triggerID->plate_id(hit.getIdentifier()); -// -// // Need to do something better here, but for now just fill both -// id = m_triggerID->pmt_id(plate_id, 0); // ID for PMT 0 -// counts[id] += tk * hit.energyLoss(); -// id = m_triggerID->pmt_id(plate_id, 1); // ID for PMT 1 -// counts[id] += tk * hit.energyLoss(); -// -// } else { -// // All others have only 1 PMT -// // Use detector id (not hit id) throughout -// id = hit.getIdentifier(); -// counts[id] += tk * hit.energyLoss(); -// } -// } - - // Convolve summed energy with evaluated kernel for each hit id (i.e. channel) - for (const auto& e : esum) { - // Convert hit id to Identifier and store - id = e.first; - counts[id] = tk * e.second; - } + if (m_first) { + m_first = false; - // Subtract count from basleine and add result to correct waveform vector - for (const auto& c : counts) { - - float baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - int value = std::round(baseline - c.second); - - if (value < 0) { - ATH_MSG_WARNING("Found pulse " << c.second << " larger than baseline " << c.first); - value = 0; // Protect against scaling signal above baseline - } - - // Convert hit id to Identifier and store - id = c.first; - waveforms[id].push_back(value); - } + // Write kernel parameters + ATH_MSG_INFO(name() << ": initialize waveform digitization kernel"); + ATH_MSG_INFO(" Norm: " << m_digiCondTool->cb_norm()); + ATH_MSG_INFO(" Mean: " << m_digiCondTool->cb_mean()); + ATH_MSG_INFO(" Sigma: " << m_digiCondTool->cb_sigma()); + ATH_MSG_INFO(" Alpha: " << m_digiCondTool->cb_alpha()); + ATH_MSG_INFO(" N: " << m_digiCondTool->cb_n()); } - - // This is a bit of a hack to make sure all waveforms have - // at least baseline entries. Should really add this to the - // logic above - for (const auto& w : waveforms) { - if (w.second.size() > 0) continue; - - // Waveform was empty, fill with baseline - int channel = m_mappingTool->getChannelMapping(w.first); - ATH_MSG_DEBUG("Writing baseline into empty waveform in channel "<< channel); - int i = m_digiTool->nsamples(); - while(i--) { // Use while to avoid unused variable warning with for - int baseline = m_digiTool->generate_baseline(m_base_mean, m_base_rms); - waveforms[w.first].push_back(baseline); - } + + // Try our new tool instead + if (m_advancedTiming) { + waveforms = m_digiTool->generate_scint_timing_waveforms(ctx, m_digiCondTool, scintHitHandle.get()); + } else { + waveforms = m_digiTool->generate_scint_waveforms(ctx, m_digiCondTool, scintHitHandle.get()); } - // Loop over wavefrom vectors to make and store raw waveform - unsigned int nsamples = m_digiTool->nsamples(); + // Loop over waveform vectors to make and store raw waveform + unsigned int nsamples = m_digiTool->digitizer_samples(); for (const auto& w : waveforms) { RawWaveform* wfm = new RawWaveform(); wfm->setWaveform(0, w.second); @@ -221,5 +116,10 @@ ScintWaveformDigiAlg::execute(const EventContext& ctx) const { ATH_MSG_DEBUG("WaveformsHitContainer " << waveformContainerHandle.name() << "' filled with "<< waveformContainerHandle->size() <<" items"); + // Cleanup + waveforms.clear(); + return StatusCode::SUCCESS; } + + diff --git a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h index 99c374f556226ff758e055ee35571f4ba742cac3..feaba91ae4de7e35dc750cb6d91bb46b519a1d3e 100644 --- a/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h +++ b/Scintillator/ScintDigiAlgs/src/ScintWaveformDigiAlg.h @@ -21,19 +21,6 @@ #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -//Helpers -#include "ScintIdentifier/VetoID.h" -#include "ScintIdentifier/VetoNuID.h" -#include "ScintIdentifier/TriggerID.h" -#include "ScintIdentifier/PreshowerID.h" -#include "ScintSimEvent/ScintHitIdHelper.h" -#include "Identifier/Identifier.h" - - -// ROOT -#include "TF1.h" - - // STL #include <string> #include <vector> @@ -52,6 +39,9 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm { virtual StatusCode finalize() override; //@} + // + // Simulate detailed timing of waveforms + BooleanProperty m_advancedTiming{this, "AdvancedTiming", true}; private: @@ -62,55 +52,38 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm { ScintWaveformDigiAlg &operator=(const ScintWaveformDigiAlg&) = delete; //@} - /// - - // We use these a lot, so read them once from the conditions tool - mutable float m_base_mean; - mutable float m_base_rms; - - - /** Kernel PDF and evaluated values **/ - //@{ - mutable TF1* m_kernel; - mutable std::vector<float> m_timekernel; - //@} - - - /// Detector ID helpers - const VetoID* m_vetoID{nullptr}; - const VetoNuID* m_vetoNuID{nullptr}; - const TriggerID* m_triggerID{nullptr}; - const PreshowerID* m_preshowerID{nullptr}; - /** * @name Digitisation tool */ + //@{ ToolHandle<IWaveformDigitisationTool> m_digiTool {this, "WaveformDigitisationTool", "WaveformDigitisationTool"}; + //@} /** * @name Mapping tool */ + //@{ ToolHandle<IWaveformCableMappingTool> m_mappingTool {this, "WaveformCableMappingTool", "WaveformCableMappingTool"}; + //@} /** * @name Digitization parameters tool */ + //@{ ToolHandle<IWaveformDigiConditionsTool> m_digiCondTool {this, "DigiConditionsTool", ""}; + //@} /** * @name Input HITS using SG::ReadHandleKey */ //@{ - SG::ReadHandleKey<ScintHitCollection> m_scintHitContainerKey {this, "ScintHitContainerKey", ""}; - //@} - /** * @name Output data using SG::WriteHandleKey */ @@ -119,6 +92,7 @@ class ScintWaveformDigiAlg : public AthReentrantAlgorithm { {this, "WaveformContainerKey", ""}; //@} + mutable bool m_first {true}; }; diff --git a/Simulation/G4Faser/G4FaserAlg/CMakeLists.txt b/Simulation/G4Faser/G4FaserAlg/CMakeLists.txt index 979897a94c4b476433d0ef3fe2ceeb31105f9ef5..ec2babac5f7c92340ffff8b39f318e7e7013fde2 100644 --- a/Simulation/G4Faser/G4FaserAlg/CMakeLists.txt +++ b/Simulation/G4Faser/G4FaserAlg/CMakeLists.txt @@ -31,21 +31,32 @@ atlas_add_test( G4FaserAlgConfig_TestFaser PROPERTIES TIMEOUT 300 PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -atlas_add_test( G4FaserAlgConfig_TestFaserNu - SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-02'" Output.HITSFileName='faserNu.HITS.pool.root' +atlas_add_test( G4FaserAlgConfig_TestFaserNu03 + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-02'" Output.HITSFileName='faserNu03.HITS.pool.root' PROPERTIES TIMEOUT 300 PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -atlas_add_test( G4FaserAlgConfig_TestFaserNu_NewField - SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu.HITS.pool.root' +atlas_add_test( G4FaserAlgConfig_TestFaserNu03_NewField + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASERNU-03'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu03_NewField.HITS.pool.root' PROPERTIES TIMEOUT 300 PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -atlas_add_test( G4FaserAlgConfig_TestTestbeam - SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASER-TB00'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb.HITS.pool.root' +atlas_add_test( G4FaserAlgConfig_TestFaserNu04 + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASERNU-04'" IOVDb.GlobalTag="'OFLCOND-FASER-03'" Output.HITSFileName='faserNu04.HITS.pool.root' PROPERTIES TIMEOUT 300 PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +atlas_add_test( G4FaserAlgConfig_TestTestbeam00 + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASER-TB00'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb00.HITS.pool.root' + PROPERTIES TIMEOUT 300 + PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + +atlas_add_test( G4FaserAlgConfig_TestTestbeam01 + SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/G4FaserAlgConfigNew_Test.py GeoModel.FaserVersion="'FASER-TB01'" IOVDb.GlobalTag="'OFLCOND-FASER-TB00'" Output.HITSFileName='tb01.HITS.pool.root' + PROPERTIES TIMEOUT 300 + PROPERTIES WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + + # Install files from the package: atlas_install_python_modules( python/*.py ) atlas_install_scripts( test/*.py ) diff --git a/Simulation/G4Faser/G4FaserAlg/test/G4FaserAlgConfigNew_Test.py b/Simulation/G4Faser/G4FaserAlg/test/G4FaserAlgConfigNew_Test.py index 5ff7e6b96d1c04ce7869062feb8bea942e8f380e..fb07e943ab87584ec8990cf7e1dbdb2d75359795 100755 --- a/Simulation/G4Faser/G4FaserAlg/test/G4FaserAlgConfigNew_Test.py +++ b/Simulation/G4Faser/G4FaserAlg/test/G4FaserAlgConfigNew_Test.py @@ -48,7 +48,7 @@ if __name__ == '__main__': ConfigFlags.addFlag("Sim.Beam.xshift", 0) # Potential beam shift ConfigFlags.addFlag("Sim.Beam.yshift", 0) - ConfigFlags.GeoModel.FaserVersion = "FASERNU-03" # Geometry set-up + ConfigFlags.GeoModel.FaserVersion = "FASERNU-04" # Geometry set-up ConfigFlags.IOVDb.GlobalTag = "OFLCOND-FASER-03" # Conditions set-up ConfigFlags.addFlag("Input.InitialTimeStamp", 0) # To avoid autoconfig ConfigFlags.GeoModel.Align.Dynamic = False @@ -84,7 +84,7 @@ if __name__ == '__main__': detectors += ['Trigger', 'Dipole'] if ConfigFlags.GeoModel.FaserVersion.count("FASERNU") > 0 : detectors += ['Emulsion'] - if ConfigFlags.GeoModel.FaserVersion.count("FASERNU-03") > 0: + if ConfigFlags.GeoModel.FaserVersion.count("FASERNU-03") > 0 or ConfigFlags.GeoModel.FaserVersion.count("FASERNU-04") > 0: detectors += ['VetoNu', 'Trench'] # # Setup detector flags @@ -172,6 +172,11 @@ if __name__ == '__main__': #cfg.getEventAlgo("OutputStreamHITS").ItemList += ["McEventCollection#BeamTruthEvent_ATLASCoord"] # +# Uncomment to check volumes for overlap - will cause CTest to fail due to overwriting file +# +# from G4DebuggingTools.G4DebuggingToolsConfigNew import VolumeDebugger +# cfg.merge(VolumeDebugger(ConfigFlags, name="G4UA::UserActionSvc", TargetVolume="", Verbose=True)) +# # Dump config # from AthenaConfiguration.ComponentFactory import CompFactory diff --git a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py index 4e6f59490a97baee0020453bb9572fab2b090fbc..a98b46638f7595405208e4b8932295c606360fb0 100644 --- a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py +++ b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py @@ -180,9 +180,9 @@ def FASEREnvelopeCfg(ConfigFlags, name="Faser", **kwargs): kwargs.setdefault("OffsetX", 0.0 * mm) kwargs.setdefault("OffsetY", 0.0 * mm) kwargs.setdefault("OffsetZ", 0.0 * mm) - kwargs.setdefault("dX", 600.0 * mm) - kwargs.setdefault("dY", 600.0 * mm) - kwargs.setdefault("dZ", 4000.0 * mm) + kwargs.setdefault("dX", 6000.0 * mm) + kwargs.setdefault("dY", 2500.0 * mm) + kwargs.setdefault("dZ", 12000.0 * mm) kwargs.setdefault("DetectorName", "Faser") SubDetectorList = result.popToolsAndMerge(generateSubDetectorList(ConfigFlags)) diff --git a/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleDataBase.h b/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleDataBase.h index 0e44163469241251bf38f77141c12350b87448d8..f49af0bf12e9d8d7d6f80d60b6daeea1f58c47a5 100644 --- a/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleDataBase.h +++ b/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleDataBase.h @@ -30,6 +30,7 @@ public: // const IRDBRecord* conditions() const; const IRDBRecord* dipoleGeneral() const; + const IRDBRecord* dipoleWrapping() const; // Return the Dipole version tag. const std::string & versionTag() const; @@ -52,6 +53,7 @@ private: // IRDBRecordset_ptr m_conditions; IRDBRecordset_ptr m_dipoleGeneral; + IRDBRecordset_ptr m_dipoleWrapping; }; diff --git a/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleWrappingParameters.h b/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleWrappingParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..c6976f917aee37fe7a567a20fdebed87f149f31e --- /dev/null +++ b/Tracker/TrackerDetDescr/DipoleGeoModel/DipoleGeoModel/DipoleWrappingParameters.h @@ -0,0 +1,40 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef DipoleGeoModel_DipoleWrappingParameters_H +#define DipoleGeoModel_DipoleWrappingParameters_H + +#include "GeoModelKernel/GeoDefinitions.h" + +#include <map> +#include <string> + +class DipoleDataBase; + +class DipoleWrappingParameters { + +public: + + DipoleWrappingParameters(DipoleDataBase* rdb); + ~DipoleWrappingParameters(); + //Explicitly disallow copy, assignment to appease coverity + DipoleWrappingParameters(const DipoleWrappingParameters &) = delete; + DipoleWrappingParameters & operator=(const DipoleWrappingParameters &) = delete; + + // General + double safety() const; + + std::string material1() const; + std::string material2() const; + double radius() const; + double thickness1() const; + double thickness2() const; +private: + + DipoleDataBase * m_rdb; + +}; + + +#endif // DipoleGeoModel_DipoleWrappingParameters_H diff --git a/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleDataBase.cxx b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleDataBase.cxx index 2feae9b62dfd0453c827ccbc58c8356b06937d25..cda5f7e9ee057a0b5382c6ee0921e23bc776c87d 100644 --- a/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleDataBase.cxx +++ b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleDataBase.cxx @@ -77,6 +77,10 @@ DipoleDataBase::DipoleDataBase(const TrackerDD::AthenaComps * athenaComps) m_dipoleGeneral = rdbSvc->getRecordsetPtr("DipoleGeneral", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table DipoleGeneral Fetched" << endmsg; + // Dipole Wrapping + m_dipoleWrapping = rdbSvc->getRecordsetPtr("DipoleWrappingGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table DipoleWrappingGeneral Fetched" << endmsg; + } const TrackerDD::AthenaComps* DipoleDataBase::athenaComps() const { return m_athenaComps; } @@ -92,6 +96,8 @@ IRDBRecordset_ptr DipoleDataBase::topLevelTable() const {return m_topLevel;} const IRDBRecord* DipoleDataBase::dipoleGeneral() const {return (*m_dipoleGeneral)[0];} +const IRDBRecord* DipoleDataBase::dipoleWrapping() const {return (*m_dipoleWrapping)[0];} + const std::string & DipoleDataBase::versionTag() const { return m_dipoleVersionTag; } diff --git a/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleFactory.cxx b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleFactory.cxx index 44a3416863e0c3c2e07cbce0782cb867b7900854..ccfda716028494d56d7c2cac629c42113252b1cd 100644 --- a/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleFactory.cxx +++ b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleFactory.cxx @@ -6,6 +6,7 @@ #include "DipoleGeoModel/DipoleDataBase.h" #include "DipoleGeoModel/DipoleGeneralParameters.h" +#include "DipoleGeoModel/DipoleWrappingParameters.h" // Extra material #include "TrackerGeoModelUtils/DistortedMaterialManager.h" @@ -83,15 +84,40 @@ void DipoleFactory::create(GeoPhysVol *world ) // materialManager->addScalingTable(scalingTable); auto parameters = std::make_unique<DipoleGeneralParameters>(m_db); + auto wrappingParameters = std::make_unique<DipoleWrappingParameters>(m_db); -// const GeoMaterial* air = materialManager->getMaterial("std::Air"); + const GeoMaterial* air = materialManager->getMaterial("std::Air"); const GeoMaterial* NdFeB = materialManager->getMaterial(parameters->material()); + const GeoMaterial* upstreamMaterial = materialManager->getMaterial(wrappingParameters->material1()); + const GeoMaterial* downstreamMaterial = materialManager->getMaterial(wrappingParameters->material2()); + double upstreamThickness = wrappingParameters->thickness1(); + double downstreamThickness = wrappingParameters->thickness2(); + double wrappingRadius = wrappingParameters->radius(); + msg(MSG::ALWAYS) << "Upstream wrapping thickness: " << upstreamThickness << "; Downstream wrapping thickness: " << downstreamThickness << endmsg; + msg(MSG::ALWAYS) << "Upstream wrapping position: " << -(parameters->longLength() + upstreamThickness)/2 << "; Downstream wrapping position: " << (parameters->longLength() + downstreamThickness)/2 << endmsg; GeoTrf::Transform3D dipoleTransform = parameters->partTransform("Dipole"); const GeoTube* shortShape = new GeoTube(parameters->innerRadius(), parameters->outerRadius(), parameters->shortLength()/2); GeoLogVol* shortLog = new GeoLogVol("ShortDipole", shortShape, NdFeB); const GeoTube* longShape = new GeoTube(parameters->innerRadius(), parameters->outerRadius(), parameters->longLength()/2); GeoLogVol* longLog = new GeoLogVol("LongDipole", longShape, NdFeB); + // const GeoTube* wrappedShape = new GeoTube(parameters->innerRadius(), std::max(parameters->outerRadius(), wrappingRadius), parameters->longLength()/2 + std::max(upstreamThickness, downstreamThickness)); + const GeoTube* wrappedShape = new GeoTube(0.0, std::max(parameters->outerRadius(), wrappingRadius), parameters->longLength()/2 + std::max(upstreamThickness, downstreamThickness)); + GeoLogVol* wrappedLog = new GeoLogVol("WrappedLongDipole", wrappedShape, air); + GeoPhysVol* wrappedPV = new GeoPhysVol(wrappedLog); + GeoPhysVol* longPV = new GeoPhysVol(longLog); + wrappedPV->add(longPV); + const GeoTube* upstreamShape = new GeoTube(0.0, wrappingRadius, upstreamThickness/2); + GeoLogVol* upstreamLog = new GeoLogVol("UpstreamWrapping", upstreamShape, upstreamMaterial); + GeoPhysVol* upstreamPV = new GeoPhysVol(upstreamLog); + wrappedPV->add(new GeoTransform(GeoTrf::Translate3D(0.0, 0.0, -(parameters->longLength() + upstreamThickness)/2))); + wrappedPV->add(upstreamPV); + + const GeoTube* downstreamShape = new GeoTube(0.0, wrappingRadius, downstreamThickness/2); + GeoLogVol* downstreamLog = new GeoLogVol("DownstreamWrapping", downstreamShape, downstreamMaterial); + GeoPhysVol* downstreamPV = new GeoPhysVol(downstreamLog); + wrappedPV->add(new GeoTransform(GeoTrf::Translate3D(0.0, 0.0, (parameters->longLength() + downstreamThickness)/2))); + wrappedPV->add(downstreamPV); std::vector<std::string> partNames {"UpstreamDipole", "CentralDipole", "DownstreamDipole"}; for (int station = 0; station < 3; station++) @@ -105,7 +131,8 @@ void DipoleFactory::create(GeoPhysVol *world ) GeoPhysVol* dipolePV {nullptr}; if (station == 0) { - dipolePV = new GeoPhysVol(longLog); + // dipolePV = new GeoPhysVol(longLog); + dipolePV = wrappedPV; } else { diff --git a/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleWrappingParameters.cxx b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleWrappingParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..4cf4eef59838585c4f685cf84ebe7b9613673304 --- /dev/null +++ b/Tracker/TrackerDetDescr/DipoleGeoModel/src/DipoleWrappingParameters.cxx @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "DipoleGeoModel/DipoleWrappingParameters.h" +#include "DipoleGeoModel/DipoleDataBase.h" +#include "RDBAccessSvc/IRDBRecord.h" +#include "RDBAccessSvc/IRDBRecordset.h" +#include "GaudiKernel/SystemOfUnits.h" +#include "GeoModelKernel/GeoDefinitions.h" + +const double DIPOLE_SAFETY = 0.01 * Gaudi::Units::mm; // Used in some places to make envelopes slightly larger to ensure + // no overlaps due to rounding errors. + + +DipoleWrappingParameters::DipoleWrappingParameters(DipoleDataBase* rdb) +{ + m_rdb = rdb; +} + + +DipoleWrappingParameters::~DipoleWrappingParameters() +{ } + +// +// General +// +double +DipoleWrappingParameters::safety() const +{ + return DIPOLE_SAFETY; +} + +std::string +DipoleWrappingParameters::material1() const +{ + return m_rdb->dipoleWrapping()->getString("MATERIAL1"); +} + +std::string +DipoleWrappingParameters::material2() const +{ + return m_rdb->dipoleWrapping()->getString("MATERIAL2"); +} + +double +DipoleWrappingParameters::radius() const +{ + return m_rdb->dipoleWrapping()->getDouble("RADIUS"); +} + +double +DipoleWrappingParameters::thickness1() const +{ + return m_rdb->dipoleWrapping()->getDouble("THICKNESS1"); +} + +double +DipoleWrappingParameters::thickness2() const +{ + return m_rdb->dipoleWrapping()->getDouble("THICKNESS2"); +} + + diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.cxx index 2333836f1dfd731b99d886ee9bedcd337499775b..f5b43930641141ea9361b5eca681bf691314ee4e 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.cxx +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.cxx @@ -71,6 +71,9 @@ SCT_DataBase::SCT_DataBase(const SCT_GeoModelAthenaComps * athenaComps) m_frameShapeTable = rdbSvc->getRecordsetPtr("SctFrameShape", versionTag, versionNode, "FASERDD"); msg(MSG::DEBUG) << "Table SctFrameShape Fetched" << endmsg; + m_wrappingGeneral = rdbSvc->getRecordsetPtr("SctWrappingGeneral", versionTag, versionNode, "FASERDD"); + msg(MSG::DEBUG) << "Table SctWrappingGeneral Fetched" << endmsg; + // // Default conditions // m_conditions = rdbSvc->getRecordsetPtr("SctConditions", versionTag, versionNode, "FASERDD"); // msg(MSG::DEBUG) << "Table SctConditions Fetched" << endmsg; @@ -111,6 +114,7 @@ const IRDBRecord* SCT_DataBase::brlModule() const {return (*m_brlModule)[0];} const IRDBRecord* SCT_DataBase::brlGeneral() const {return (*m_brlGeneral)[0];} const IRDBRecord* SCT_DataBase::frameGeneral() const {return (*m_frameGeneral)[0];} +const IRDBRecord* SCT_DataBase::wrappingGeneral() const {return (*m_wrappingGeneral)[0];} const std::string & SCT_DataBase::versionTag() const { return m_sctVersionTag; diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.h b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.h index 192d9e20b419c2358158edc2b69c31cbebb7a73a..249be9ea76ea20fa6d61a0e55aebb312c69b7044 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.h +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DataBase.h @@ -42,6 +42,7 @@ public: // const IRDBRecord* brlThermalShield() const; const IRDBRecord* brlGeneral() const; const IRDBRecord* frameGeneral() const; + const IRDBRecord* wrappingGeneral() const; // const IRDBRecord* brlFSI() const; // int brlFSISize() const; // const IRDBRecord* brlFSILocation(int i) const; @@ -121,6 +122,7 @@ private: // IRDBRecordset_ptr m_brlThermalShield; IRDBRecordset_ptr m_brlGeneral; IRDBRecordset_ptr m_frameGeneral; + IRDBRecordset_ptr m_wrappingGeneral; // IRDBRecordset_ptr m_brlFSI; // IRDBRecordset_ptr m_brlFSILocation; // IRDBRecordset_ptr m_fwdSensor; diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DetectorFactory.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DetectorFactory.cxx index 63763a9aa5d9c7a2dd60cc5fdf5144d8f9078a4d..0ea340ffaa1f2a9b8ac93c75098521d10cfb6244 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DetectorFactory.cxx +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_DetectorFactory.cxx @@ -18,6 +18,7 @@ #include "TrackerReadoutGeometry/SiCommonItems.h" #include "TrackerReadoutGeometry/TrackerDD_Defs.h" #include "TrackerReadoutGeometry/SCT_ModuleSideDesign.h" +#include "SCT_Wrapping.h" // #include "SCT_Barrel.h" #include "SCT_Station.h" @@ -142,7 +143,9 @@ void SCT_DetectorFactory::create(GeoPhysVol *world) GeoTrf::Transform3D sctTransform = sctGeneral->partTransform("SCT"); // SCT_Barrel station("Station", m_detectorManager, m_geometryManager, m_materials); - SCT_Station station("Station", m_detectorManager, m_geometryManager, m_materials); + SCT_Wrapping wrapping("Wrapping", m_detectorManager, m_geometryManager, m_materials); + SCT_Station station("Station", &wrapping, m_detectorManager, m_geometryManager, m_materials); + std::vector<std::string> partNames {"Interface", "StationA", "StationB", "StationC"}; for (size_t iStation = 0; iStation < partNames.size(); iStation++) diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.cxx index 6c923d0d964e0d33247770453a98ac14871b6cdc..e66a5d690d2237b326c8fb2157d74272864b604b 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.cxx +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.cxx @@ -9,6 +9,7 @@ #include "TrackerReadoutGeometry/SiCommonItems.h" #include "SCT_BarrelParameters.h" #include "SCT_BarrelModuleParameters.h" +#include "SCT_WrappingParameters.h" #include "SCT_DataBase.h" #include "SCT_GeneralParameters.h" #include "FaserSCT_GeoModel/SCT_GeoModelAthenaComps.h" @@ -23,6 +24,7 @@ SCT_GeometryManager::SCT_GeometryManager(SCT_DataBase* rdb) m_barrelParameters = std::make_unique<SCT_BarrelParameters>(m_rdb); m_barrelModuleParameters = std::make_unique<SCT_BarrelModuleParameters>(m_rdb); m_generalParameters = std::make_unique<SCT_GeneralParameters>(m_rdb); + m_wrappingParameters = std::make_unique<SCT_WrappingParameters>(m_rdb); m_distortedMatManager = std::make_unique<TrackerDD::DistortedMaterialManager>(); } @@ -79,6 +81,13 @@ SCT_GeometryManager::generalParameters() const return m_generalParameters.get(); } +const SCT_WrappingParameters * +SCT_GeometryManager::wrappingParameters() const +{ + return m_wrappingParameters.get(); +} + + const TrackerDD::DistortedMaterialManager * SCT_GeometryManager::distortedMatManager() const { @@ -95,6 +104,7 @@ SCT_GeometryManager::operator=(const SCT_GeometryManager& right) { m_barrelParameters.reset(new SCT_BarrelParameters(m_rdb)); m_barrelModuleParameters.reset(new SCT_BarrelModuleParameters(m_rdb)); m_generalParameters.reset(new SCT_GeneralParameters(m_rdb)); + m_wrappingParameters.reset(new SCT_WrappingParameters(m_rdb)); m_distortedMatManager.reset(new TrackerDD::DistortedMaterialManager()); } return *this; @@ -108,5 +118,6 @@ SCT_GeometryManager::SCT_GeometryManager(const SCT_GeometryManager& right) { m_barrelParameters.reset(new SCT_BarrelParameters(m_rdb)); m_barrelModuleParameters.reset(new SCT_BarrelModuleParameters(m_rdb)); m_generalParameters.reset(new SCT_GeneralParameters(m_rdb)); + m_wrappingParameters.reset(new SCT_WrappingParameters(m_rdb)); m_distortedMatManager.reset(new TrackerDD::DistortedMaterialManager()); } diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.h b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.h index a89e320796ac2db115da2986f92ffa0f42014223..c4853796fe8f5d0ab2b8f1c8fcc2d87afa971ffd 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.h +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_GeometryManager.h @@ -17,6 +17,7 @@ class SCT_BarrelParameters; class SCT_BarrelModuleParameters; class SCT_DataBase; class SCT_GeneralParameters; +class SCT_WrappingParameters; class SCT_GeoModelAthenaComps; class SCT_GeometryManager { @@ -42,6 +43,7 @@ public: const SCT_BarrelParameters * barrelParameters() const; const SCT_BarrelModuleParameters * barrelModuleParameters() const; const SCT_GeneralParameters * generalParameters() const; + const SCT_WrappingParameters * wrappingParameters() const; const TrackerDD::DistortedMaterialManager * distortedMatManager() const; SCT_GeometryManager& operator=(const SCT_GeometryManager& right); @@ -57,6 +59,7 @@ private: std::unique_ptr<SCT_BarrelParameters> m_barrelParameters; std::unique_ptr<SCT_BarrelModuleParameters> m_barrelModuleParameters; std::unique_ptr<SCT_GeneralParameters> m_generalParameters; + std::unique_ptr<SCT_WrappingParameters> m_wrappingParameters; std::unique_ptr<TrackerDD::DistortedMaterialManager> m_distortedMatManager; }; diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.cxx index 4d9d129ff03b4de2d32b3fa19758942021cf5c69..4f685a38b7e3cdec7152578bb6bff3d72a8becae 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.cxx +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.cxx @@ -12,6 +12,7 @@ #include "SCT_Identifier.h" #include "SCT_Frame.h" +#include "SCT_Wrapping.h" #include "TrackerReadoutGeometry/SCT_DetectorManager.h" @@ -34,10 +35,12 @@ #include <iostream> SCT_Station::SCT_Station(const std::string & name, + SCT_Wrapping* wrapping, TrackerDD::SCT_DetectorManager* detectorManager, const SCT_GeometryManager* geometryManager, SCT_MaterialManager* materials) - : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials) + : SCT_UniqueComponentFactory(name, detectorManager, geometryManager, materials), + m_wrapping { wrapping } { getParameters(); m_logVolume = preBuild(); @@ -71,7 +74,7 @@ SCT_Station::preBuild() m_centralPlane = new SCT_Frame("CentralPlane", m_detectorManager, m_geometryManager, m_materials); m_width = m_centralPlane->width() + m_safety; m_height = m_centralPlane->height() + m_safety; - m_thickness = m_centralPlane->thickness() + m_layerPitch * (m_numLayers - 1) + m_safety; + m_thickness = m_centralPlane->thickness() + m_layerPitch * (m_numLayers - 1) + 2 * m_wrapping->thickness() + m_safety; m_upstreamPlane = new SCT_Frame("UpstreamPlane", m_detectorManager, m_geometryManager, m_materials); m_downstreamPlane = new SCT_Frame("DownstreamPlane", m_detectorManager, m_geometryManager, m_materials); @@ -91,6 +94,13 @@ SCT_Station::build(SCT_Identifier id) double activeDepth = m_thickness - m_safety; double layerThickness = m_centralPlane->thickness(); + double wrappingThickness = m_wrapping->thickness(); + + station->add(new GeoNameTag("WrappingA")); + GeoTransform* wrappingTransformA = new GeoTransform(GeoTrf::Translate3D(0.0, 0.0, (wrappingThickness - activeDepth)/2)); + station->add(wrappingTransformA); + station->add(m_wrapping->getVolume()); + for (int iLayer = 0; iLayer < m_numLayers; iLayer++) { // Create the layers station->add(new GeoNameTag("Plane#"+intToString(iLayer))); @@ -98,7 +108,7 @@ SCT_Station::build(SCT_Identifier id) id.setLayer(iLayer); GeoAlignableTransform* transform = new GeoAlignableTransform(GeoTrf::Translate3D(0.0, 0.0 , - (layerThickness - activeDepth)/2 + iLayer * m_layerPitch) ); + wrappingThickness + (layerThickness - activeDepth)/2 + iLayer * m_layerPitch) ); station->add(transform); SCT_Frame* thePlane {nullptr}; switch (iLayer%3) @@ -119,6 +129,11 @@ SCT_Station::build(SCT_Identifier id) // Store alignable transform m_detectorManager->addAlignableTransform(2, id.getWaferId(), transform, planePV); } + + station->add(new GeoNameTag("WrappingB")); + GeoTransform* wrappingTransformB = new GeoTransform(GeoTrf::Translate3D(0.0, 0.0, (activeDepth - wrappingThickness)/2)); + station->add(wrappingTransformB); + station->add(m_wrapping->getVolume()); // Extra Material // TrackerDD::ExtraMaterial xMat(m_geometryManager->distortedMatManager()); diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.h b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.h index 499822f406545e3410f35bae8b01e42221ce2e52..e3175280c7bc7dd32efdc062070d282f596630af 100644 --- a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.h +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Station.h @@ -13,12 +13,14 @@ class GeoLogVol; class SCT_Identifier; // class SCT_Plane; class SCT_Frame; +class SCT_Wrapping; class SCT_Station : public SCT_UniqueComponentFactory { public: SCT_Station(const std::string & name, + SCT_Wrapping* wrapping, TrackerDD::SCT_DetectorManager* detectorManager, const SCT_GeometryManager* geometryManager, SCT_MaterialManager* materials); @@ -32,6 +34,8 @@ public: double thickness() const {return m_thickness;} private: + SCT_Wrapping* m_wrapping; + void getParameters(); virtual const GeoLogVol * preBuild(); diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.cxx new file mode 100644 index 0000000000000000000000000000000000000000..90bcf2b27395d02f847ed9a90977ce5787bf68f4 --- /dev/null +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.cxx @@ -0,0 +1,55 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "SCT_Wrapping.h" + +#include "SCT_MaterialManager.h" + +#include "SCT_GeometryManager.h" +#include "SCT_GeneralParameters.h" +#include "SCT_WrappingParameters.h" + +#include "GeoModelKernel/GeoBox.h" +#include "GeoModelKernel/GeoLogVol.h" +#include "GeoModelKernel/GeoPhysVol.h" +#include "GeoModelKernel/GeoMaterial.h" + +SCT_Wrapping::SCT_Wrapping(const std::string & name, + TrackerDD::SCT_DetectorManager* detectorManager, + const SCT_GeometryManager* geometryManager, + SCT_MaterialManager* materials) + : SCT_SharedComponentFactory(name, detectorManager, geometryManager, materials) +{ + getParameters(); + m_physVolume = build(); +} + +void +SCT_Wrapping::getParameters() +{ + const SCT_WrappingParameters * parameters = m_geometryManager->wrappingParameters(); + const SCT_GeneralParameters* generalParameters = m_geometryManager->generalParameters(); + + m_material = m_materials->getMaterial(parameters->wrappingMaterial()); + m_safety = generalParameters->safety(); + m_thickness = parameters->wrappingThickness(); + m_width = parameters->wrappingWidth(); + m_length = parameters->wrappingLength(); +} + +GeoVPhysVol * +SCT_Wrapping::build() +{ + // Just a simple box. + const GeoBox * simpleWrappingShape = new GeoBox(0.5*m_width, + 0.5*m_length, + 0.5*m_thickness); + + const GeoLogVol * simpleWrappingLog = + new GeoLogVol(getName(), simpleWrappingShape, m_material); + + GeoPhysVol * simpleWrapping = new GeoPhysVol(simpleWrappingLog); + + return simpleWrapping; +} diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.h b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.h new file mode 100644 index 0000000000000000000000000000000000000000..f33049e1025b4492fdd45962ec6246bca4dac474 --- /dev/null +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_Wrapping.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef SCT_GEOMODEL_SCT_WRAPPING_H +#define SCT_GEOMODEL_SCT_WRAPPING_H + +#include "SCT_ComponentFactory.h" + +class GeoVPhysVol; +class GeoFullPhysVol; +class GeoLogVol; +class GeoMaterial; + +class SCT_Wrapping : public SCT_SharedComponentFactory +{ + +public: + SCT_Wrapping(const std::string & name, + TrackerDD::SCT_DetectorManager* detectorManager, + const SCT_GeometryManager* geometryManager, + SCT_MaterialManager* materials); + +public: + const GeoMaterial * material() const {return m_material;} + double thickness() const {return m_thickness;} + double width() const {return m_width;} + double length() const {return m_length;} + +private: + virtual GeoVPhysVol * build(); + void getParameters(); + + const GeoMaterial * m_material; + double m_thickness; + double m_width; + double m_length; + + double m_safety; +}; + +#endif // SCT_GEOMODEL_SCT_WRAPPING_H diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.cxx b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.cxx new file mode 100644 index 0000000000000000000000000000000000000000..c92ed702a7a1efaaaffaed7d5840b09668c3a75e --- /dev/null +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.cxx @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "SCT_WrappingParameters.h" +#include "SCT_GeometryManager.h" + +#include "SCT_DataBase.h" + +#include "RDBAccessSvc/IRDBRecord.h" +#include "GaudiKernel/SystemOfUnits.h" + +#include <cmath> + + +SCT_WrappingParameters::SCT_WrappingParameters(SCT_DataBase* rdb) +{ + m_rdb = rdb; +} + +// +// Wrapping General +// +double +SCT_WrappingParameters::wrappingWidth() const +{ + return m_rdb->wrappingGeneral()->getDouble("WIDTH") * Gaudi::Units::mm; +} + +double +SCT_WrappingParameters::wrappingLength() const +{ + return m_rdb->wrappingGeneral()->getDouble("LENGTH") * Gaudi::Units::mm; +} + +double +SCT_WrappingParameters::wrappingThickness() const +{ + return m_rdb->wrappingGeneral()->getDouble("THICKNESS") * Gaudi::Units::mm; +} + +std::string SCT_WrappingParameters::wrappingMaterial() const +{ + return m_rdb->wrappingGeneral()->getString("MATERIAL"); +} + diff --git a/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.h b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..61b74e1caed43f6588419b0e92e2917436c9b505 --- /dev/null +++ b/Tracker/TrackerDetDescr/FaserSCT_GeoModel/src/SCT_WrappingParameters.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef SCT_GeoModel_SCT_WrappingParameters_H +#define SCT_GeoModel_SCT_WrappingParameters_H + +#include <string> + +class SCT_DataBase; + +class SCT_WrappingParameters { + +public: + + // Constructor + SCT_WrappingParameters(SCT_DataBase* rdb); + + // Barrel General + double wrappingThickness() const; + double wrappingWidth() const; + double wrappingLength() const; + std::string wrappingMaterial() const; + + private: + SCT_DataBase * m_rdb; + +}; + + +#endif // SCT_GeoModel_SCT_WrappingParameters_H diff --git a/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt b/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt index 874d604249142448e76634c8dac9a8d0ef1db8f5..143f819de580f72b2d390e78390a90e10bd28cb5 100755 --- a/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt +++ b/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt @@ -29,7 +29,7 @@ atlas_add_component(FaserActsKalmanFilter CircleFit.h CircleFitTrackSeedTool.h CKF2.h - CKF2Alignment.h + # CKF2Alignment.h CombinatorialKalmanFilterAlg.h EffPlotTool.h FASERSourceLink.h @@ -74,7 +74,7 @@ atlas_add_component(FaserActsKalmanFilter src/CircleFit.cxx src/CircleFitTrackSeedTool.cxx src/CKF2.cxx - src/CKF2Alignment.cxx + # src/CKF2Alignment.cxx src/CreateTrkTrackTool.h src/CreateTrkTrackTool.cxx # src/ClusterTrackSeedTool.cxx diff --git a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/IFiducialParticleTool.h b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/IFiducialParticleTool.h index 1df9aeab2ce991ee5d683d92fa5efb72eca7a5dd..081e6dc27913107fbd0cf4d4cb7a1646316eff49 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/IFiducialParticleTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/IFiducialParticleTool.h @@ -23,6 +23,12 @@ public: */ virtual std::array<HepGeom::Point3D<double>, 4> getTruthPositions(int barcode) const = 0; + + /** Return average truth momentum in each station. + * @param barcode of a xAOD::TruthParticle + */ + virtual std::array<HepGeom::Point3D<double>, 4> + getTruthMomenta(int barcode) const = 0; }; #endif // FASERACTSKALMANFILTER_IFIDUCIALEVENTSELECTIONTOOL_H diff --git a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h index 1ef1a7921bdaa55381ee9487c32b7f58bca3e05c..7a429b3e280d4ae811fcbbee416dc781fa386eb6 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/FaserActsKalmanFilter/ITrackSeedTool.h @@ -20,7 +20,7 @@ class ITrackSeedTool : virtual public IAlgTool { public: DeclareInterfaceID(ITrackSeedTool, 1, 0); - virtual StatusCode run(std::vector<int> maskedLayers = {}) = 0; + virtual StatusCode run(std::vector<int> maskedLayers = {}, bool backward = false) = 0; virtual const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const = 0; virtual const std::shared_ptr<const Acts::Surface> initialSurface() const = 0; virtual const std::shared_ptr<std::vector<IndexSourceLink>> sourceLinks() const = 0; diff --git a/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py b/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py index 5d6ed5c4f3170cfc57b058d6bc9432329c1da561..259a665572129d37b359bf51da6ce1ac584fdd28 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py +++ b/Tracking/Acts/FaserActsKalmanFilter/python/CKF2Config.py @@ -60,16 +60,16 @@ def CKF2Cfg(flags, **kwargs): track_seed_tool.TrackCollection = "Segments" trajectory_states_writer_tool = CompFactory.RootTrajectoryStatesWriterTool() - trajectory_states_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True) + trajectory_states_writer_tool.noDiagnostics = kwargs.get("noDiagnostics", True) trajectory_states_writer_tool1 = CompFactory.RootTrajectoryStatesWriterTool() - trajectory_states_writer_tool1.noDiagnostics = kwargs.pop("noDiagnostics", True) + trajectory_states_writer_tool1.noDiagnostics = kwargs.get("noDiagnostics", True) trajectory_states_writer_tool1.FilePath = "track_states_ckf1.root" trajectory_summary_writer_tool = CompFactory.RootTrajectorySummaryWriterTool() - trajectory_summary_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True) + trajectory_summary_writer_tool.noDiagnostics = kwargs.get("noDiagnostics", True) trajectory_summary_writer_tool1 = CompFactory.RootTrajectorySummaryWriterTool() trajectory_summary_writer_tool1.FilePath = "track_summary_ckf1.root" - trajectory_summary_writer_tool1.noDiagnostics = kwargs.pop("noDiagnostics", True) + trajectory_summary_writer_tool1.noDiagnostics = kwargs.get("noDiagnostics", True) actsExtrapolationTool = CompFactory.FaserActsExtrapolationTool("FaserActsExtrapolationTool") actsExtrapolationTool.MaxSteps = 1000 @@ -81,11 +81,11 @@ def CKF2Cfg(flags, **kwargs): trajectory_performance_writer_tool = CompFactory.PerformanceWriterTool("PerformanceWriterTool") trajectory_performance_writer_tool.ExtrapolationTool = actsExtrapolationTool - trajectory_performance_writer_tool.noDiagnostics = kwargs.pop("noDiagnostics", True) + trajectory_performance_writer_tool.noDiagnostics = kwargs.get("noDiagnostics", True) ckf = CompFactory.CKF2(**kwargs) kalman_fitter1 = CompFactory.KalmanFitterTool(name="fitterTool1") - kalman_fitter1.noDiagnostics = kwargs.pop("noDiagnostics", True) + kalman_fitter1.noDiagnostics = kwargs.get("noDiagnostics", True) kalman_fitter1.ActsLogging = "INFO" kalman_fitter1.SummaryWriter = True kalman_fitter1.StatesWriter = False @@ -102,6 +102,7 @@ def CKF2Cfg(flags, **kwargs): ckf.PerformanceWriterTool = trajectory_performance_writer_tool ckf.TrackingGeometryTool=actsTrackingGeometryTool ckf.isMC = flags.Input.isMC + ckf.noDiagnostics = kwargs.get("noDiagnostics", True) ckf.SummaryWriter = True ckf.StatesWriter = False ckf.PerformanceWriter = False diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx index 817fcfea171e76d70d75f49a540e0604f2f52984..0f41f2d91b103980e77494e31d3a4c46530bf1d9 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.cxx @@ -27,7 +27,7 @@ StatusCode ActsTrackSeedTool::initialize() { } -StatusCode ActsTrackSeedTool::run(std::vector<int> /*maskedLayers*/) { +StatusCode ActsTrackSeedTool::run(std::vector<int> /*maskedLayers*/, bool /*backward*/) { SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection}; ATH_CHECK(trackCollection.isValid()); diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h index 41aebd49ff0c7caf5f5615a47af1641b804b45fb..e957fa8f201ccc095ffed42b2fd78e5e0fb0fce2 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/ActsTrackSeedTool.h @@ -18,7 +18,7 @@ public: virtual ~ActsTrackSeedTool() = default; virtual StatusCode initialize() override; virtual StatusCode finalize() override; - virtual StatusCode run(std::vector<int> /*maskedLayers*/) override; + virtual StatusCode run(std::vector<int> /*maskedLayers*/, bool /*backward*/) override; const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override; const std::shared_ptr<const Acts::Surface> initialSurface() const override; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx index 14616c6f42dd0e60df67c5b73358da599093130c..87380dd7e41cb3d5b38d2f4b92ca784b95eca8b2 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/CKF2.cxx @@ -73,6 +73,7 @@ StatusCode CKF2::initialize() { } else { m_logger = Acts::getDefaultLogger("KalmanFitter", Acts::Logging::INFO); } + return StatusCode::SUCCESS; } @@ -97,7 +98,7 @@ StatusCode CKF2::execute() { Acts::MagneticFieldContext magFieldContext = getMagneticFieldContext(ctx); Acts::CalibrationContext calibContext; - CHECK(m_trackSeedTool->run(m_maskedLayers)); + CHECK(m_trackSeedTool->run(m_maskedLayers, m_backwardPropagation)); std::shared_ptr<const Acts::Surface> initialSurface = m_trackSeedTool->initialSurface(); std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialParameters = @@ -117,6 +118,11 @@ StatusCode CKF2::execute() { Acts::PropagatorPlainOptions pOptions; pOptions.maxSteps = m_maxSteps; + if (m_backwardPropagation) { + pOptions.direction = Acts::backward; + } else { + pOptions.direction = Acts::forward; + } Acts::MeasurementSelector::Config measurementSelectorCfg = { {Acts::GeometryIdentifier(), {m_chi2Max, m_nMax}}, @@ -208,10 +214,10 @@ StatusCode CKF2::execute() { // ATH_MSG_DEBUG(" position: " << params.position(gctx).transpose()); // ATH_MSG_DEBUG(" momentum: " << params.momentum().transpose()); // ATH_MSG_DEBUG(" charge: " << params.charge()); - // std::unique_ptr<Trk::Track> track = m_createTrkTrackTool->createTrack(gctx, traj); + // std::unique_ptr<Trk::Track> track = m_createTrkTrackTool->createTrack(gctx, traj, m_backwardPropagation); // if (track != nullptr) { // m_numberOfSelectedTracks++; - // std::unique_ptr<Trk::Track> track2 = m_kalmanFitterTool1->fit(ctx, gctx, track.get(), Acts::BoundVector::Zero(), m_isMC, origin); + // std::unique_ptr<Trk::Track> track2 = m_kalmanFitterTool1->fit(ctx, gctx, track.get(), Acts::BoundVector::Zero(), m_isMC); // if (track2) { // outputAllTracks->push_back(std::move(track2)); // } else { @@ -239,10 +245,11 @@ StatusCode CKF2::execute() { ATH_MSG_DEBUG(" position: " << params.position(gctx).transpose()); ATH_MSG_DEBUG(" momentum: " << params.momentum().transpose()); ATH_MSG_DEBUG(" charge: " << params.charge()); - std::unique_ptr<Trk::Track> track = m_createTrkTrackTool->createTrack(gctx, traj); + std::unique_ptr<Trk::Track> track = m_createTrkTrackTool->createTrack(gctx, traj, m_backwardPropagation); if (track != nullptr) { m_numberOfSelectedTracks++; - std::unique_ptr<Trk::Track> track2 = m_kalmanFitterTool1->fit(ctx, gctx, track.get(), Acts::BoundVector::Zero(), m_isMC, origin); + std::unique_ptr<Trk::Track> track2 = m_kalmanFitterTool1->fit( + ctx, gctx, track.get(), Acts::BoundVector::Zero(), m_isMC); if (track2) { outputTracks->push_back(std::move(track2)); } else { @@ -273,6 +280,7 @@ StatusCode CKF2::execute() { StatusCode CKF2::finalize() { ATH_MSG_INFO("CombinatorialKalmanFilterAlg::finalize()"); + ATH_MSG_INFO("BackwardPropagation: " << m_backwardPropagation); ATH_MSG_INFO(m_numberOfEvents << " events processed."); ATH_MSG_INFO(m_numberOfTrackSeeds << " seeds."); ATH_MSG_INFO(m_numberOfFittedTracks << " fitted tracks."); diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx index bbae70e3b10be38ff5de9675796bbe509c8f2483..51703a125489ce3ad31ccab1fb8425b8c076c17d 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.cxx @@ -34,7 +34,8 @@ StatusCode CircleFitTrackSeedTool::initialize() { } -StatusCode CircleFitTrackSeedTool::run(std::vector<int> maskedLayers) { +StatusCode CircleFitTrackSeedTool::run(std::vector<int> maskedLayers, bool backward) { + SG::ReadHandle<Tracker::FaserSCT_ClusterContainer> clusterContainer {m_clusterContainerKey}; ATH_CHECK(clusterContainer.isValid()); @@ -114,17 +115,17 @@ StatusCode CircleFitTrackSeedTool::run(std::vector<int> maskedLayers) { std::vector<Segment> combination {}; std::vector<Seed> seeds {}; // create seeds from four stations - go(segments, combination, seeds, 0, 4); + go(segments, combination, seeds, 0, 4, backward); if (seeds.size() < 2) { // create seeds from three stations - go(segments, combination, seeds, 0, 3); + go(segments, combination, seeds, 0, 3, backward); } // create seeds from two stations if (seeds.size() < 2) { - go(segments, combination, seeds, 0, 2); + go(segments, combination, seeds, 0, 2, backward); } if (seeds.size() < 2) { - go(segments, combination, seeds, 0, 1); + go(segments, combination, seeds, 0, 1, backward); } std::list<Seed> allSeeds; @@ -163,17 +164,22 @@ StatusCode CircleFitTrackSeedTool::run(std::vector<int> maskedLayers) { cov(Acts::eBoundQOverP, Acts::eBoundQOverP) = m_covQOverP; cov(Acts::eBoundTime, Acts::eBoundTime) = m_covTime; - auto minSeed = std::min_element( - selectedSeeds.begin(), selectedSeeds.end(), [](const Seed &lhs, const Seed &rhs) { - return lhs.minZ < rhs.minZ; - }); - double origin = !selectedSeeds.empty() ? minSeed->minZ - 10 : 0; + double origin; + if (!backward) { + auto minSeed = std::min_element( + selectedSeeds.begin(), selectedSeeds.end(), [](const Seed &lhs, const Seed &rhs) { + return lhs.minZ < rhs.minZ; + }); + origin = !selectedSeeds.empty() ? minSeed->minZ - 10 : 0; + } else { + origin = 2470; + } m_targetZPosition = origin; std::vector<Acts::CurvilinearTrackParameters> initParams {}; ATH_MSG_DEBUG("Sorted seed properties:"); for (const Seed &seed : selectedSeeds) { ATH_MSG_DEBUG("seed size: " << seed.size << ", chi2: " << seed.chi2); - initParams.push_back(seed.get_params(origin, cov)); + initParams.push_back(seed.get_params(origin, cov, backward)); } m_initialTrackParameters = std::make_shared<std::vector<Acts::CurvilinearTrackParameters>>(initParams); @@ -198,15 +204,16 @@ StatusCode CircleFitTrackSeedTool::finalize() { void CircleFitTrackSeedTool::go(const std::array<std::vector<Segment>, 4> &v, std::vector<Segment> &combination, std::vector<Seed> &seeds, - int offset, int k) { + int offset, int k, + bool backward) { if (k == 0) { - seeds.push_back(Seed(combination)); + seeds.push_back(Seed(combination, backward)); return; } for (std::size_t i = offset; i < v.size() + 1 - k; ++i) { for (const auto& ve : v[i]) { combination.push_back(ve); - go(v, combination, seeds, i+1, k-1); + go(v, combination, seeds, i+1, k-1, backward); combination.pop_back(); } } @@ -242,7 +249,7 @@ CircleFitTrackSeedTool::Segment::Segment(const Trk::Track* track, const FaserSCT fakePositions.push_back(position + 30 * momentum.normalized()); } -CircleFitTrackSeedTool::Seed::Seed(const std::vector<Segment> &segments) : +CircleFitTrackSeedTool::Seed::Seed(const std::vector<Segment> &segments, bool backward) : clusterSet(CircleFitTrackSeedTool::s_indexMap.size()) { for (const Segment &seg : segments) { clusters.insert(clusters.end(), seg.clusters.begin(), seg.clusters.end()); @@ -261,8 +268,11 @@ CircleFitTrackSeedTool::Seed::Seed(const std::vector<Segment> &segments) : } ); minZ = (*minCluster)->globalPosition().z(); - if (segments.size() > 1) { + if ((segments.size() > 1) && (!backward)) { direction = positions[1] - positions[0]; + } else if ((segments.size() > 1) && (backward)) { + size_t size = segments.size(); + direction = positions[size-1] - positions[size-2]; } else { direction = segments[0].momentum; } @@ -329,14 +339,21 @@ void CircleFitTrackSeedTool::Seed::getChi2() { chi2 += (m_dy * m_dy) / (m_sigma_y * m_sigma_y); } - for (const Acts::Vector3 &pos : positions) { - m_dx = pos.x() - getX(pos.x()); + for (const Acts::Vector3 &pos : fakePositions) { + m_dx = pos.x() - getX(pos.z()); chi2 += (m_dx * m_dx) / (m_sigma_x * m_sigma_x); } } -Acts::CurvilinearTrackParameters CircleFitTrackSeedTool::Seed::get_params(double origin, Acts::BoundSymMatrix cov) const { - Acts::Vector3 pos = positions[0] - (positions[0].z() - origin)/direction.z() * direction; - Acts::Vector4 pos4 {pos.x(), pos.y(), pos.z(), 0}; - return Acts::CurvilinearTrackParameters(pos4, direction.normalized(), momentum, charge, cov); +Acts::CurvilinearTrackParameters CircleFitTrackSeedTool::Seed::get_params(double origin, Acts::BoundSymMatrix cov, bool backward) const { + if (!backward) { + Acts::Vector3 pos = positions[0] - (positions[0].z() - origin)/direction.z() * direction; + Acts::Vector4 pos4 {pos.x(), pos.y(), pos.z(), 0}; + return Acts::CurvilinearTrackParameters(pos4, direction.normalized(), momentum, charge, cov); + } else { + size_t size = positions.size(); + Acts::Vector3 pos = positions[size-1] + (origin - positions[size-1].z())/direction.z() * direction; + Acts::Vector4 pos4 {pos.x(), pos.y(), pos.z(), 0}; + return Acts::CurvilinearTrackParameters(pos4, direction.normalized(), momentum, charge, cov); + } } diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h index a4d53c629c24f53e1dfe4488ca7524755f117ad3..ea3d0263ac99cd2656c6c6c206de83a16d68b2d0 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/CircleFitTrackSeedTool.h @@ -30,7 +30,7 @@ public: virtual ~CircleFitTrackSeedTool() = default; virtual StatusCode initialize() override; virtual StatusCode finalize() override; - virtual StatusCode run(std::vector<int> maskedLayers = {}) override; + virtual StatusCode run(std::vector<int> maskedLayers = {}, bool backward=false) override; const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override; const std::shared_ptr<const Acts::Surface> initialSurface() const override; @@ -56,7 +56,7 @@ private: }; struct Seed { - Seed(const std::vector<Segment> &segments); + Seed(const std::vector<Segment> &segments, bool backward=false); ClusterSet clusterSet; std::vector<const Tracker::FaserSCT_Cluster*> clusters; @@ -67,7 +67,7 @@ private: double c0, c1, cx, cy, r, chi2, momentum, charge, minZ; Acts::Vector3 direction; size_t size, stations, constraints; - Acts::CurvilinearTrackParameters get_params(double origin, Acts::BoundSymMatrix cov) const; + Acts::CurvilinearTrackParameters get_params(double origin, Acts::BoundSymMatrix cov, bool backward=false) const; private: void getChi2(); @@ -83,7 +83,7 @@ private: }; void go(const std::array<std::vector<Segment>, 4> &v, std::vector<Segment> &combination, - std::vector<Seed> &seeds, int offset, int k); + std::vector<Seed> &seeds, int offset, int k, bool backward=false); static std::map<Identifier, Index> s_indexMap; static std::map<Identifier, const Tracker::FaserSCT_SpacePoint*> s_spacePointMap; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.cxx index 994689010203a269946c3c88392004a61a42adf4..9a9bf115ca2db5ecd5e9a4b6f9a7e39a2a96ab11 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.cxx @@ -17,7 +17,7 @@ StatusCode CreateTrkTrackTool::finalize() { } std::unique_ptr<Trk::Track> -CreateTrkTrackTool::createTrack(const Acts::GeometryContext &gctx, const FaserActsRecMultiTrajectory &traj) const { +CreateTrkTrackTool::createTrack(const Acts::GeometryContext &gctx, const FaserActsRecMultiTrajectory &traj, bool backwardPropagation) const { std::unique_ptr<Trk::Track> newtrack = nullptr; DataVector<const Trk::TrackStateOnSurface>* finalTrajectory = new DataVector<const Trk::TrackStateOnSurface>{}; using ConstTrackStateProxy = Acts::detail_lt::TrackStateProxy<IndexSourceLink, 6, true>; @@ -69,9 +69,10 @@ CreateTrkTrackTool::createTrack(const Acts::GeometryContext &gctx, const FaserAc quality, nullptr, typePattern); - if (perState) - { + if ((perState) && (!backwardPropagation)) { finalTrajectory->insert(finalTrajectory->begin(), perState); + } else if ((perState) && (backwardPropagation)) { + finalTrajectory->push_back(perState); } } return; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.h index d0edfd5cb9aedb78d7fde03104377f3ff9aa5d1f..5fcf1f8c47d0fa0b95044d8237362b6d11f2a2a1 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/CreateTrkTrackTool.h @@ -18,7 +18,7 @@ public: virtual ~CreateTrkTrackTool() = default; virtual StatusCode initialize() override; virtual StatusCode finalize() override; - std::unique_ptr<Trk::Track> createTrack(const Acts::GeometryContext &gctx, const FaserActsRecMultiTrajectory &traj) const; + std::unique_ptr<Trk::Track> createTrack(const Acts::GeometryContext &gctx, const FaserActsRecMultiTrajectory &traj, bool backwardPropagation=false) const; const Trk::TrackParameters* ConvertActsTrackParameterToATLAS(const Acts::BoundTrackParameters &actsParameter, const Acts::GeometryContext& gctx) const; private: const FaserSCT_ID* m_idHelper {nullptr}; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.cxx index 101ddfdf99a645aaef69f6d824e782ff7525928f..71a469ba4cb1b20e682f610d0be13238394e9278 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.cxx @@ -6,8 +6,7 @@ constexpr float NaN = std::numeric_limits<double>::quiet_NaN(); -FiducialParticleTool::FiducialParticleTool(const std::string &type, - const std::string &name, +FiducialParticleTool::FiducialParticleTool(const std::string &type, const std::string &name, const IInterface *parent) : base_class(type, name, parent) {} @@ -32,23 +31,32 @@ bool FiducialParticleTool::isFiducial(int barcode) const { return isFiducial; } -HepGeom::Point3D<double> -FiducialParticleTool::getGlobalPosition(const FaserSiHit &hit) const { - Identifier waferId = - m_sctHelper->wafer_id(hit.getStation(), hit.getPlane(), hit.getRow(), - hit.getModule(), hit.getSensor()); +HepGeom::Point3D<double> FiducialParticleTool::getGlobalPosition(const FaserSiHit &hit) const { + Identifier waferId = m_sctHelper->wafer_id(hit.getStation(), hit.getPlane(), hit.getRow(), + hit.getModule(), hit.getSensor()); auto localStartPos = hit.localStartPosition(); auto localEndPos = hit.localEndPosition(); HepGeom::Point3D<double> localPos = 0.5 * (localEndPos + localStartPos); - const TrackerDD::SiDetectorElement *element = - m_detMgr->getDetectorElement(waferId); - auto globalPosition = - Amg::EigenTransformToCLHEP(element->transformHit()) * localPos; + const TrackerDD::SiDetectorElement *element = m_detMgr->getDetectorElement(waferId); + auto globalPosition = Amg::EigenTransformToCLHEP(element->transformHit()) * localPos; return globalPosition; } -std::array<HepGeom::Point3D<double>, 4> -FiducialParticleTool::getTruthPositions(int barcode) const { +HepGeom::Point3D<double> FiducialParticleTool::getMomentum(const FaserSiHit &hit) const { + Identifier waferId = m_sctHelper->wafer_id(hit.getStation(), hit.getPlane(), hit.getRow(), + hit.getModule(), hit.getSensor()); + auto localStartPos = hit.localStartPosition(); + auto localEndPos = hit.localEndPosition(); + const TrackerDD::SiDetectorElement *element = m_detMgr->getDetectorElement(waferId); + auto globalStartPosition = Amg::EigenTransformToCLHEP(element->transformHit()) * localStartPos; + auto globalEndPosition = Amg::EigenTransformToCLHEP(element->transformHit()) * localEndPos; + double p = hit.particleLink()->momentum().rho(); + HepGeom::Point3D<double> globalDirection = globalEndPosition - globalStartPosition; + HepGeom::Point3D<double> momentum = globalDirection / globalDirection.mag() * p; + return momentum; +} + +std::array<HepGeom::Point3D<double>, 4> FiducialParticleTool::getTruthPositions(int barcode) const { // initialize positions as NaN std::array<HepGeom::Point3D<double>, 4> positions{}; for (auto &station : positions) { @@ -89,3 +97,46 @@ FiducialParticleTool::getTruthPositions(int barcode) const { } return positions; } + +std::array<HepGeom::Point3D<double>, 4> FiducialParticleTool::getTruthMomenta(int barcode) const { + // initialize positions as NaN + std::array<HepGeom::Point3D<double>, 4> momenta{}; + for (auto &station : momenta) { + station.setX(NaN); + station.setY(NaN); + station.setZ(NaN); + } + + // get simulated hits + SG::ReadHandle<FaserSiHitCollection> siHitCollection(m_siHitCollectionKey); + if (!siHitCollection.isValid()) { + ATH_MSG_WARNING("FaserSiHitCollection not valid."); + return momenta; + } + + // create map with truth momenta in each station + std::array<std::vector<HepGeom::Point3D<double>>, 4> hitMap{}; + for (const FaserSiHit &hit : *siHitCollection) { + if (hit.trackNumber() == barcode) { + HepGeom::Point3D<double> momentum = getMomentum(hit); + hitMap[hit.getStation()].push_back(momentum); + } + } + + // calculate average momentum in each station + for (int station = 0; station < 4; ++station) { + std::vector<HepGeom::Point3D<double>> &hits{hitMap[station]}; + if (hits.empty()) { + continue; + } else { + // calculate average momentum of all FaserSiHits in a station + auto const count = static_cast<double>(hits.size()); + HepGeom::Point3D<double> sums{}; + for (const HepGeom::Point3D<double> &hit : hits) { + sums += hit; + } + momenta[station] = sums / count; + } + } + return momenta; +} diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.h index 8d1435734c6982e9dcbd0abd52acb07003914366..ecba3a8318f3730127ddf8786722a3509b96b4ac 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/FiducialParticleTool.h @@ -23,6 +23,10 @@ public: std::array<HepGeom::Point3D<double>, 4> getTruthPositions(int barcode) const override; + std::array<HepGeom::Point3D<double>, 4> + getTruthMomenta(int barcode) const override; + HepGeom::Point3D<double> + getMomentum(const FaserSiHit &hit) const; private: HepGeom::Point3D<double> getGlobalPosition(const FaserSiHit &hit) const; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.cxx index c0d02183f5616df5b624152fee61d4c1bf6bba37..5315404c72051fcb3c78a36e262dd97f9e44fdee 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.cxx @@ -45,7 +45,7 @@ StatusCode KalmanFitterTool::finalize() { std::vector<TSOS4Residual> KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::GeometryContext &gctx, Trk::Track* inputTrack, double clusz, const Acts::BoundVector& inputVector, - bool isMC, double origin) const { + bool /*isMC*/, double origin) const { std::vector<TSOS4Residual> resi; resi.clear(); std::vector<FaserActsRecMultiTrajectory> myTrajectories; @@ -126,14 +126,14 @@ KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::Geome state.referenceSurface().getSharedPtr(), state.smoothed(), state.smoothedCovariance()); - auto covariance = state.smoothedCovariance(); + // auto covariance = state.smoothedCovariance(); auto H = state.effectiveProjector(); auto residual = state.effectiveCalibrated() - H * state.smoothed(); const Tracker::FaserSCT_Cluster* cluster = state.uncalibrated().hit(); - const auto& surface = state.referenceSurface(); + // const auto& surface = state.referenceSurface(); Acts::BoundVector meas = state.projector().transpose() * state.calibrated(); Acts::Vector2 local(meas[Acts::eBoundLoc0], meas[Acts::eBoundLoc1]); - const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); + // const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); resi.push_back({local.x(),local.y(),parameter.position(gctx).x(), parameter.position(gctx).y(), parameter.position(gctx).z(), cluster,residual(Acts::eBoundLoc0),parameter}); ATH_MSG_DEBUG(" residual/global position: " << residual(Acts::eBoundLoc0)<<" "<<parameter.position(gctx).x()<<" "<<parameter.position(gctx).y()<<" "<<parameter.position(gctx).z()); } @@ -155,8 +155,8 @@ KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::Geome // std::vector<TSOS4Residual> KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::GeometryContext &gctx, - Trk::Track* inputTrack, const Acts::BoundVector& inputVector, - bool isMC, double origin, std::vector<const Tracker::FaserSCT_Cluster*>& clusters, const Acts::BoundTrackParameters ini_Param) const { + Trk::Track* inputTrack, const Acts::BoundVector& /*inputVector*/, + bool /*isMC*/, double origin, std::vector<const Tracker::FaserSCT_Cluster*>& clusters, const Acts::BoundTrackParameters ini_Param) const { std::vector<TSOS4Residual> resi; resi.clear(); std::vector<FaserActsRecMultiTrajectory> myTrajectories; @@ -232,14 +232,14 @@ KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::Geome state.referenceSurface().getSharedPtr(), state.smoothed(), state.smoothedCovariance()); - auto covariance = state.smoothedCovariance(); + // auto covariance = state.smoothedCovariance(); auto H = state.effectiveProjector(); auto residual = state.effectiveCalibrated() - H * state.smoothed(); const Tracker::FaserSCT_Cluster* cluster = state.uncalibrated().hit(); - const auto& surface = state.referenceSurface(); + // const auto& surface = state.referenceSurface(); Acts::BoundVector meas = state.projector().transpose() * state.calibrated(); Acts::Vector2 local(meas[Acts::eBoundLoc0], meas[Acts::eBoundLoc1]); - const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); + // const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); resi.push_back({local.x(),local.y(),parameter.position(gctx).x(), parameter.position(gctx).y(), parameter.position(gctx).z(), cluster,residual(Acts::eBoundLoc0),parameter}); } return true; @@ -261,7 +261,7 @@ KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::Geome std::vector<TSOS4Residual> KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::GeometryContext &gctx, Trk::Track* inputTrack, const Acts::BoundVector& inputVector, - bool isMC, double origin) const { + bool /*isMC*/, double origin) const { std::vector<TSOS4Residual> resi; resi.clear(); std::vector<FaserActsRecMultiTrajectory> myTrajectories; @@ -339,14 +339,14 @@ KalmanFitterTool::getUnbiasedResidual(const EventContext &ctx, const Acts::Geome state.referenceSurface().getSharedPtr(), state.smoothed(), state.smoothedCovariance()); - auto covariance = state.smoothedCovariance(); + // auto covariance = state.smoothedCovariance(); auto H = state.effectiveProjector(); auto residual = state.effectiveCalibrated() - H * state.smoothed(); const Tracker::FaserSCT_Cluster* cluster = state.uncalibrated().hit(); - const auto& surface = state.referenceSurface(); + // const auto& surface = state.referenceSurface(); Acts::BoundVector meas = state.projector().transpose() * state.calibrated(); Acts::Vector2 local(meas[Acts::eBoundLoc0], meas[Acts::eBoundLoc1]); - const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); + // const Acts::Vector3 dir = Acts::makeDirectionUnitFromPhiTheta(meas[Acts::eBoundPhi], meas[Acts::eBoundTheta]); resi.push_back({local.x(),local.y(),parameter.position(gctx).x(), parameter.position(gctx).y(), parameter.position(gctx).z(), cluster,residual(Acts::eBoundLoc0),parameter}); } return true; @@ -365,7 +365,7 @@ resi.push_back({local.x(),local.y(),parameter.position(gctx).x(), parameter.posi std::unique_ptr<Trk::Track> KalmanFitterTool::fit(const EventContext &ctx, const Acts::GeometryContext &gctx, Trk::Track* inputTrack, const Acts::BoundVector& inputVector, - bool isMC, double origin) const { + bool isMC) const { std::unique_ptr<Trk::Track> newTrack = nullptr; std::vector<FaserActsRecMultiTrajectory> myTrajectories; @@ -380,6 +380,9 @@ KalmanFitterTool::fit(const EventContext &ctx, const Acts::GeometryContext &gctx } + // set the start position 5 mm in front of the first track measurement + double origin = inputTrack->trackParameters()->front()->position().z() - 10; + auto pSurface = Acts::Surface::makeShared<Acts::PlaneSurface>( Acts::Vector3 {0, 0, origin}, Acts::Vector3{0, 0, -1}); @@ -544,7 +547,7 @@ KalmanFitterTool::getMeasurementsFromTrack(Trk::Track *track, std::vector<const } std::tuple<std::vector<IndexSourceLink>, std::vector<Measurement>> -KalmanFitterTool::getMeasurementsFromTrack(Trk::Track *track, Identifier& wafer_id) const { +KalmanFitterTool::getMeasurementsFromTrack(Trk::Track *track, Identifier& /*wafer_id*/) const { const int kSize = 1; std::array<Acts::BoundIndices, kSize> Indices = {Acts::eBoundLoc0}; using ThisMeasurement = Acts::Measurement<IndexSourceLink, Acts::BoundIndices, kSize>; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.h index 584cda2c98bf32d7050150a690a0926439e11f91..4901d324f9c7cb3ee1c3ecd8175130ffa82a694b 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/KalmanFitterTool.h @@ -90,7 +90,7 @@ public: std::unique_ptr<Trk::Track> fit(const EventContext &ctx, const Acts::GeometryContext &gctx, Trk::Track *inputTrack, const Acts::BoundVector& inputVector = Acts::BoundVector::Zero(), - bool isMC=false, double origin=0) const; + bool isMC=false) const; std::vector<TSOS4Residual> getUnbiasedResidual(const EventContext &ctx, const Acts::GeometryContext &gctx, Trk::Track *inputTrack, const Acts::BoundVector& inputVector = Acts::BoundVector::Zero(), diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx index b5a5e04895ed443cb4e868c4ce722ac45fe65f2f..4477735faf87c0132a1453430c1e35b9553bb81e 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.cxx @@ -26,7 +26,7 @@ StatusCode MyTrackSeedTool::initialize() { } -StatusCode MyTrackSeedTool::run(std::vector<int> /*maskedLayers*/) { +StatusCode MyTrackSeedTool::run(std::vector<int> /*maskedLayers*/, bool /*backward*/) { // create track seeds for multiple tracks SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection}; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h index df545c34abfd37e8b778a0c0be5b23852dbb7b7b..26e857b7b48648a6cc5557c5d5001a3d059242cb 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/MyTrackSeedTool.h @@ -25,7 +25,7 @@ public: virtual ~MyTrackSeedTool() = default; virtual StatusCode initialize() override; virtual StatusCode finalize() override; - virtual StatusCode run(std::vector<int> /*maskedLayers*/) override; + virtual StatusCode run(std::vector<int> /*maskedLayers*/, bool /*backward*/) override; const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override; const std::shared_ptr<const Acts::Surface> initialSurface() const override; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx index 15db300108f9090ba35c6b09ddc66a9b6cf7513a..65d15e723a54427eb35fdfbc330458cd29279cee 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.cxx @@ -23,7 +23,7 @@ StatusCode ThreeStationTrackSeedTool::initialize() { } -StatusCode ThreeStationTrackSeedTool::run(std::vector<int> /*maskedLayers*/) { +StatusCode ThreeStationTrackSeedTool::run(std::vector<int> /*maskedLayers*/, bool /*backward*/) { // create track seeds for multiple tracks SG::ReadHandle<TrackCollection> trackCollection {m_trackCollection}; ATH_CHECK(trackCollection.isValid()); diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h index deab07bb12c5b061376975ba5d984f95b15da71e..7c4c521b8eedd6bdd753b95e45ae98cde6176b73 100644 --- a/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h +++ b/Tracking/Acts/FaserActsKalmanFilter/src/ThreeStationTrackSeedTool.h @@ -23,7 +23,7 @@ public: virtual ~ThreeStationTrackSeedTool() = default; virtual StatusCode initialize() override; virtual StatusCode finalize() override; - virtual StatusCode run(std::vector<int> /*maskedLayers*/) override; + virtual StatusCode run(std::vector<int> /*maskedLayers*/, bool /*backward*/) override; const std::shared_ptr<std::vector<Acts::CurvilinearTrackParameters>> initialTrackParameters() const override; const std::shared_ptr<const Acts::Surface> initialSurface() const override; diff --git a/Tracking/Acts/FaserActsKalmanFilter/src/components/FaserActsKalmanFilter_entries.cxx b/Tracking/Acts/FaserActsKalmanFilter/src/components/FaserActsKalmanFilter_entries.cxx index be32f4959409c57903c674bf7fd5d28209ad295d..41fd700702bd99ab6bf8322e511ae86bbb9370ae 100755 --- a/Tracking/Acts/FaserActsKalmanFilter/src/components/FaserActsKalmanFilter_entries.cxx +++ b/Tracking/Acts/FaserActsKalmanFilter/src/components/FaserActsKalmanFilter_entries.cxx @@ -23,7 +23,7 @@ #include "../TrackSeedWriterTool.h" #include "../ActsTrackSeedTool.h" #include "../CKF2.h" -#include "../CKF2Alignment.h" +// #include "../CKF2Alignment.h" #include "../KalmanFitterTool.h" #include "../MyTrackSeedTool.h" #include "../SeedingAlg.h" @@ -54,7 +54,7 @@ DECLARE_COMPONENT(PerformanceWriterTool) DECLARE_COMPONENT(TrackSeedWriterTool) DECLARE_COMPONENT(ActsTrackSeedTool) DECLARE_COMPONENT(CKF2) -DECLARE_COMPONENT(CKF2Alignment) +// DECLARE_COMPONENT(CKF2Alignment) DECLARE_COMPONENT(KalmanFitterTool) DECLARE_COMPONENT(MyTrackSeedTool) DECLARE_COMPONENT(SeedingAlg) diff --git a/Waveform/WaveDigiTools/CMakeLists.txt b/Waveform/WaveDigiTools/CMakeLists.txt index d7e9fd857b273c764dad780aceebd0d3f58acc3a..64329d8fcc00e60316bdf97f76d7f1b2619bb2cd 100644 --- a/Waveform/WaveDigiTools/CMakeLists.txt +++ b/Waveform/WaveDigiTools/CMakeLists.txt @@ -13,12 +13,16 @@ atlas_add_library( WaveDigiToolsLib WaveDigiTools/*.h src/*.cxx src/*.h PUBLIC_HEADERS WaveDigiTools PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES AthenaBaseComps AthenaKernel GeoPrimitives WaveRawEvent Identifier + LINK_LIBRARIES AthenaBaseComps AthenaKernel GeoPrimitives + WaveRawEvent Identifier ScintSimEvent ScintReadoutGeometry + FaserCaloSimEvent CaloReadoutGeometry + WaveformConditionsToolsLib PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ) atlas_add_component( WaveDigiTools src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel WaveDigiToolsLib) + LINK_LIBRARIES ${ROOT_LIBRARIES} + AthenaBaseComps GaudiKernel WaveDigiToolsLib) diff --git a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h index 37cb7af183c2d89b9ada3579f76820bfe6487c5c..765f7f0e85d18c69354eb910a9324da653d352aa 100644 --- a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h +++ b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.h @@ -22,16 +22,23 @@ #include "WaveRawEvent/RawWaveformContainer.h" #include "WaveRawEvent/RawWaveform.h" +#include "ScintSimEvent/ScintHitCollection.h" +#include "FaserCaloSimEvent/CaloHitCollection.h" #include "Identifier/Identifier.h" #include "TF1.h" #include "TRandom3.h" +#include "TH1D.h" #include <utility> #include <map> #include <vector> +// Forward declaration +class IWaveformDigiConditionsTool; + +typedef std::map<Identifier, TH1D*> EvstHistMap; ///Interface for waveform digitisation tools class IWaveformDigitisationTool : virtual public IAlgTool @@ -47,25 +54,59 @@ public: virtual ~IWaveformDigitisationTool() = default; - /// Evaluate time kernel over time samples - virtual std::vector<float> evaluate_timekernel(TF1* kernel) const = 0; + /// Create waveforms - old method + virtual std::map<Identifier, std::vector<uint16_t>>& generate_scint_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const ScintHitCollection* hitCollection) const = 0; + + /// Create waveforms using hit timing + virtual std::map<Identifier, std::vector<uint16_t>>& generate_scint_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const ScintHitCollection* hitCollection) const = 0; + + /// Create waveforms - old method + virtual std::map<Identifier, std::vector<uint16_t>>& generate_calo_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const CaloHitCollection* hitCollection) const = 0; + + /// Create waveforms using hit timing + virtual std::map<Identifier, std::vector<uint16_t>>& generate_calo_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const CaloHitCollection* hitCollection) const = 0; + - /// Generate random baseline - virtual float generate_baseline(float mean, float rms) const = 0; + /* /// Evaluate time kernel over time samples */ + /* virtual std::vector<float> evaluate_timekernel(TF1* kernel) const = 0; */ + + /* /// Generate random baseline */ + /* virtual float generate_baseline(float mean, float rms) const = 0; */ - /// Create structure to store pulse for each channel + /* /// Create structure to store pulse for each channel */ template <class T> - std::map<Identifier, std::vector<uint16_t>> create_waveform_map(const T* idHelper) const; + std::map<Identifier, std::vector<uint16_t>> create_waveform_map(const T* idHelper) const; /// Number of time samples - unsigned int nsamples() const { return m_nsamples; } + virtual unsigned int digitizer_samples() const = 0; + virtual float digitizer_period() const = 0; // in ns + virtual unsigned int over_samples() const = 0; + virtual unsigned int pre_samples() const = 0; + + /// Fill histograms + //virtual void fill_evst_hist(EvstHistMap& map, const Identifier& id, float time, float energy) const = 0; + + // Remove old histograms + //virtual void clear_evst_hist(EvstHistMap& map) const = 0; private: ServiceHandle<IMessageSvc> m_msgSvc; protected: TRandom3* m_random; - unsigned int m_nsamples; + }; #include "WaveDigiTools/IWaveformDigitisationTool.icc" diff --git a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.icc b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.icc index 41b8c2650319a448df63d11e098fc8d0784dc056..140e4c5eb2bf30bcea84bc0bb763a61c98cc4517 100644 --- a/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.icc +++ b/Waveform/WaveDigiTools/WaveDigiTools/IWaveformDigitisationTool.icc @@ -10,8 +10,9 @@ std::map<Identifier, std::vector<uint16_t>> IWaveformDigitisationTool::create_w const ExpandedIdentifier& extId = *itr; Identifier id = idHelper->pmt_id(extId); waveforms[id] = std::vector<uint16_t>(); - waveforms[id].reserve(m_nsamples); + waveforms[id].reserve(digitizer_samples()); } return waveforms; } + diff --git a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx index 3a48027d57e3710a2ec592aed6a9ed749b9f6848..965fa34bfbb7bd29be58c688774303e8853732d6 100644 --- a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx +++ b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.cxx @@ -10,6 +10,9 @@ #include "WaveformDigitisationTool.h" +#include "ScintReadoutGeometry/ScintDetectorElement.h" +#include "CaloReadoutGeometry/CaloDetectorElement.h" + // Constructor WaveformDigitisationTool::WaveformDigitisationTool(const std::string& type, const std::string& name, const IInterface* parent) : base_class(type, name, parent) @@ -21,21 +24,45 @@ StatusCode WaveformDigitisationTool::initialize() { ATH_MSG_INFO( name() << "::initalize()" ); - m_nsamples = 600; + // Setup ID helpers + ATH_CHECK(detStore()->retrieve(m_vetoID, "VetoID")); + ATH_CHECK(detStore()->retrieve(m_vetoNuID, "VetoNuID")); + ATH_CHECK(detStore()->retrieve(m_triggerID, "TriggerID")); + ATH_CHECK(detStore()->retrieve(m_preshowerID, "PreshowerID")); + ATH_CHECK(detStore()->retrieve(m_ecalID, "EcalID")); + + // Setup detector managers + // These don't necessarily all exist depending on the geometry + // so don't use ATH_CHECK + if (StatusCode::SUCCESS != detStore()->retrieve(m_vetoDetMan, "Veto")) + ATH_MSG_WARNING("Couldn't load Veto detector manager!"); + if (StatusCode::SUCCESS != detStore()->retrieve(m_vetoNuDetMan, "VetoNu")) + ATH_MSG_WARNING("Couldn't load VetoNu detector manager!"); + if (StatusCode::SUCCESS != detStore()->retrieve(m_triggerDetMan, "Trigger")) + ATH_MSG_WARNING("Couldn't load Trigger detector manager!"); + if (StatusCode::SUCCESS != detStore()->retrieve(m_preshowerDetMan, "Preshower")) + ATH_MSG_WARNING("Couldn't load Preshower detector manager!"); + if (StatusCode::SUCCESS != detStore()->retrieve(m_caloDetMan, "Ecal")) + ATH_MSG_WARNING("Couldn't load Calo detector manager!"); + + // Show our parameters (for debugging for now) + ATH_MSG_INFO(m_digitizerPeriod); + ATH_MSG_INFO(m_digitizerSamples); + ATH_MSG_INFO(m_overSamples); + m_random = new TRandom3(0); return StatusCode::SUCCESS; } - std::vector<float> WaveformDigitisationTool::evaluate_timekernel(TF1* kernel) const { std::vector<float> timekernel; - timekernel.reserve(m_nsamples); + timekernel.reserve(m_digitizerSamples); - for (unsigned int i=0; i<m_nsamples; i++) { - timekernel.push_back(kernel->Eval(2.*i)); + for (unsigned int i=0; int(i) < m_digitizerSamples; i++) { + timekernel.push_back(kernel->Eval(m_digitizerPeriod*i)); } return timekernel; @@ -45,3 +72,563 @@ float WaveformDigitisationTool::generate_baseline(float mean, float rms) const { return m_random->Gaus(mean, rms); } + + +/// Fill EvsT histograms +/// Time should be in ns +void +WaveformDigitisationTool::fill_evst_hist(EvstHistMap& map, const Identifier& id, float time, float energy) const { + + if (map.find(id) == map.end()) { + ATH_MSG_DEBUG("Creating EvsT hist for channel" << id); + // Start histogram before zero to pick up any early arriving hits + map[id] = new TH1D("", "", m_overSamples * (m_digitizerSamples+m_preSamples), -m_digitizerPeriod*m_preSamples, m_digitizerPeriod*m_digitizerSamples); + } + + if (time < (-m_digitizerPeriod*m_preSamples)) + ATH_MSG_WARNING("ID " << id << " hit found with time " << time << " E " << energy << "!"); + + map[id]->Fill(time, energy); +} + +/// Delete histograms and clear map +void +WaveformDigitisationTool::clear_evst_hist(EvstHistMap& map) const { + + // Delete histogram objects + for (auto& it : map) + delete it.second; + + // Also remove map elements (now null pointers) + map.clear(); +} + +//template <class HitCollection> +//std::map<Identifier, std::vector<uint16_t>>& +//WaveformDigitisationTool::generateWaveforms( +// const EventContext& ctx, +// const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, +// const HitCollection* hitCollection) const { + +//std::map<Identifier, std::vector<uint16_t>>& +//WaveformDigitisationTool::test_context(const EventContext& ctx) const { +// static std::map<Identifier, std::vector<uint16_t>> waveforms; +// return waveforms; +//} + +TF1* +WaveformDigitisationTool::create_kernel(const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool) const { + + TF1* kernel = new TF1("PDF", "[4] * ROOT::Math::crystalball_pdf(x, [0],[1],[2],[3])", 0, 1200); + + kernel->SetParameter(0, digiCondTool->cb_alpha(ctx)); + kernel->SetParameter(1, digiCondTool->cb_n(ctx)); + kernel->SetParameter(2, digiCondTool->cb_sigma(ctx)); + kernel->SetParameter(3, digiCondTool->cb_mean(ctx)); + kernel->SetParameter(4, digiCondTool->cb_norm(ctx)); + + return kernel; +} + +std::map<Identifier, std::vector<uint16_t>>& +WaveformDigitisationTool::generate_scint_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const ScintHitCollection* hitCollection) const { + + // Create digitization kernel + TF1* kernel = create_kernel(ctx, digiCondTool); + + // Helpers, to be filled below as needed + + // Create structure to store waveform for each channel + // We return a reference to this, so it must be static + static std::map<Identifier, std::vector<uint16_t>> waveforms; + + // Make sure this is empty + waveforms.clear(); + + auto first = hitCollection->begin(); + + if (first->isVeto()) { + waveforms = create_waveform_map(m_vetoID); + } else if (first->isVetoNu()) { + waveforms = create_waveform_map(m_vetoNuID); + } else if (first->isTrigger()) { + waveforms = create_waveform_map(m_triggerID); + } else if (first->isPreshower()) { + waveforms = create_waveform_map(m_preshowerID); + } + + // Make energy sums + Identifier id; + std::map<Identifier, float> esum; + + for (const auto& hit : *hitCollection) { + + if (hit.isTrigger()) { + Identifier plate_id = m_triggerID->plate_id(hit.getIdentifier()); + + id = m_triggerID->pmt_id(plate_id, 0); // ID for PMT 0 + esum[id] += hit.energyLoss(); + + id = m_triggerID->pmt_id(plate_id, 1); // ID for PMT 1 + esum[id] += hit.energyLoss(); + } else { + id = hit.getIdentifier(); + esum[id] += hit.energyLoss(); + } + } // Done with loop over hits + + // Now make waveforms + int value; + float signal, baseline; + + for (const auto& w : waveforms) { + + auto id = w.first; + + // Now fill each entry with the sum of the kernel + // and some random background + for (unsigned int i=0; int(i) < m_digitizerSamples; i++) { + signal = kernel->Eval(m_digitizerPeriod * i) * esum[id]; + baseline = generate_baseline(digiCondTool->base_mean(ctx), + digiCondTool->base_rms(ctx)); + + // Waveform is some random baseline plus a negative signal + value = std::round(baseline - signal); + + // Don't let value go below zero + if (value < 0) + waveforms[id].push_back(0); + else + waveforms[id].push_back(value); + + } // End of loop over bins + + } // End of loop over channels + + // Clean up after ourselves + delete kernel; + + return waveforms; +} + +std::map<Identifier, std::vector<uint16_t>>& +WaveformDigitisationTool::generate_scint_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const ScintHitCollection* hitCollection) const { + + // Create structure to store waveform for each channel + // We return a reference to this, so it must be static + static std::map<Identifier, std::vector<uint16_t>> waveforms; + + // Make sure this is empty + waveforms.clear(); + + // Create TOF values + std::map<Identifier, float> time_of_flight; + + auto first = hitCollection->begin(); + + if (first->isVeto()) { + waveforms = create_waveform_map(m_vetoID); + time_of_flight = create_tof_map(m_vetoID, m_vetoDetMan); + } else if (first->isVetoNu()) { + waveforms = create_waveform_map(m_vetoNuID); + time_of_flight = create_tof_map(m_vetoNuID, m_vetoNuDetMan); + } else if (first->isTrigger()) { + waveforms = create_waveform_map(m_triggerID); + time_of_flight = create_tof_map(m_triggerID, m_triggerDetMan); + } else if (first->isPreshower()) { + waveforms = create_waveform_map(m_preshowerID); + time_of_flight = create_tof_map(m_preshowerID, m_preshowerDetMan); + } + + // Make energy sums + Identifier id; + + EvstHistMap evst_hist; + + // Make sure we clear this + clear_evst_hist(evst_hist); + + for (const auto& hit : *hitCollection) { + + float dtime; // Time offset due to light propogation time in scintillator + float tof; // Time offset due to detector z position + + // Trigger plane, horizontal readout + if (hit.isTrigger()) { + Identifier plate_id = m_triggerID->plate_id(hit.getIdentifier()); + + // Time delay based on horizontal distance + // Checked sign with Deion + dtime = digiCondTool->trigger_time_slope(ctx) * (hit.localStartPosition().x()+hit.localEndPosition().x()) / 2.; + id = m_triggerID->pmt_id(plate_id, 0); // ID for PMT 0 + tof = time_of_flight[id]; + + // Fill our histogram for this channel + fill_evst_hist(evst_hist, id, hit.meanTime()-dtime-tof, hit.energyLoss()); + + id = m_triggerID->pmt_id(plate_id, 1); // ID for PMT 1 + tof = time_of_flight[id]; + fill_evst_hist(evst_hist, id, hit.meanTime()+dtime-tof, hit.energyLoss()); + + // Could also change amplitude based on distance to PMT, but not yet + + } else { + + // All others have only 1 PMT, use vertical position for dtime + + id = hit.getIdentifier(); + tof = time_of_flight[id]; + + // +y means shorter times, only apply to preshower + if (hit.isPreshower()) + dtime = -digiCondTool->preshower_time_slope(ctx) * (hit.localStartPosition().y() + hit.localEndPosition().y()) / 2.; + else + dtime = 0.; + + fill_evst_hist(evst_hist, id, hit.meanTime()+dtime-tof, hit.energyLoss()); + } + + // Print out hit times + ATH_MSG_DEBUG("Scint Hit: " << id << " E: " << hit.energyLoss() + << " t: " << hit.meanTime() + << " x: " << hit.localStartPosition().x() + << " y: " << hit.localStartPosition().y() + << " dt: " << dtime + << " tof: " << tof + ); + + } // Done with loop over hits + + // Debugging printout + for (auto it : evst_hist) { + ATH_MSG_DEBUG("Nonzero bins Evst hist id = " << it.first); + for (unsigned int ibin=0; int(ibin) <= it.second->GetNbinsX(); ibin++) { + if (it.second->GetBinContent(ibin) == 0) continue; + ATH_MSG_DEBUG(" bin: " << ibin << " t:" << it.second->GetBinCenter(ibin) << " val: " << it.second->GetBinContent(ibin)); + } + } + + // Now make waveforms + convolve_waveforms(ctx, digiCondTool, evst_hist, waveforms); + + // Check what we have done + for (const auto& w : waveforms) { + ATH_MSG_DEBUG("Waveform for ID " << w.first); + for(unsigned int i=400; i<450; i++) + ATH_MSG_DEBUG(digitizer_period()*i << "ns -> " << w.second[i]); + } + + // Cleanup + clear_evst_hist(evst_hist); + + return waveforms; +} + +std::map<Identifier, std::vector<uint16_t>>& +WaveformDigitisationTool::generate_calo_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const CaloHitCollection* hitCollection) const { + + // Create digitization kernel + TF1* kernel = create_kernel(ctx, digiCondTool); + + // Helpers, to be filled below as needed + + // Create structure to store waveform for each channel + // We return a reference to this, so it must be static + static std::map<Identifier, std::vector<uint16_t>> waveforms; + + // Make sure this is empty + waveforms.clear(); + + waveforms = create_waveform_map(m_ecalID); + + // Make energy sums + Identifier id; + std::map<Identifier, float> esum; + + for (const auto& hit : *hitCollection) { + id = hit.getIdentifier(); + esum[id] += hit.energyLoss(); + } // Done with loop over hits + + // Now make waveforms + int value; + float signal, baseline; + + for (const auto& w : waveforms) { + + auto id = w.first; + + // Now fill each entry with the sum of the kernel + // and some random background + for (unsigned int i=0; int(i) < m_digitizerSamples; i++) { + signal = kernel->Eval(m_digitizerPeriod * i) * esum[id]; + baseline = generate_baseline(digiCondTool->base_mean(ctx), + digiCondTool->base_rms(ctx)); + + // Waveform is some random baseline plus a negative signal + value = std::round(baseline - signal); + + // Don't let value go below zero + if (value < 0) + waveforms[id].push_back(0); + else + waveforms[id].push_back(value); + + } // End of loop over bins + + } // End of loop over channels + + // Clean up after ourselves + delete kernel; + + return waveforms; +} + +std::map<Identifier, std::vector<uint16_t>>& +WaveformDigitisationTool::generate_calo_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const CaloHitCollection* hitCollection) const { + + // Create structure to store waveform for each channel + // We return a reference to this, so it must be static + static std::map<Identifier, std::vector<uint16_t>> waveforms; + + // Make sure this is empty + waveforms.clear(); + + // Create TOF values + std::map<Identifier, float> time_of_flight; + + waveforms = create_waveform_map(m_ecalID); + time_of_flight = create_calo_tof_map(m_ecalID, m_caloDetMan); + + // Make energy sums + Identifier id; + + EvstHistMap evst_hist; + + // Make sure we clear this + clear_evst_hist(evst_hist); + + for (const auto& hit : *hitCollection) { + + float tof; // Time offset due to detector z position + + id = hit.getIdentifier(); + tof = time_of_flight[id]; + + fill_evst_hist(evst_hist, id, hit.meanTime()-tof, hit.energyLoss()); + + // Print out hit times + ATH_MSG_DEBUG("Calo Hit: " << id << " E: " << hit.energyLoss() + << " t: " << hit.meanTime() + << " x: " << hit.localStartPosition().x() + << " y: " << hit.localStartPosition().y() + << " z: " << hit.localStartPosition().z() + << " tof: " << tof + ); + + } // Done with loop over hits + + // Debugging printout + for (auto it : evst_hist) { + ATH_MSG_DEBUG("Nonzero bins Evst hist id = " << it.first); + for (unsigned int ibin=0; int(ibin) <= it.second->GetNbinsX(); ibin++) { + if (it.second->GetBinContent(ibin) == 0) continue; + ATH_MSG_DEBUG(" bin: " << ibin << " t:" << it.second->GetBinCenter(ibin) << " val: " << it.second->GetBinContent(ibin)); + } + } + + // Now make waveforms + convolve_waveforms(ctx, digiCondTool, evst_hist, waveforms); + + // Check what we have done + for (const auto& w : waveforms) { + ATH_MSG_DEBUG("Waveform for ID " << w.first); + for(unsigned int i=400; i<450; i++) + ATH_MSG_DEBUG(digitizer_period()*i << "ns -> " << w.second[i]); + } + + // Cleanup + clear_evst_hist(evst_hist); + + return waveforms; +} + + +template <class ID, class DM> +std::map<Identifier, float> +WaveformDigitisationTool::create_tof_map(const ID* idHelper, const DM* detman) const { + + std::map<Identifier, float> time_of_flight; + for (auto itr = idHelper->pmt_begin(); itr != idHelper->pmt_end(); ++itr) { + const ExpandedIdentifier& extId = *itr; + Identifier pmtid = idHelper->pmt_id(extId); + + ScintDD::ScintDetectorElement* element = detman->getDetectorElement(pmtid); + time_of_flight[pmtid] = element->center().z() / CLHEP::c_light; + + ATH_MSG_DEBUG("Found TOF for " << pmtid << " = " << time_of_flight[pmtid]); + } + return time_of_flight; +} + +std::map<Identifier, float> +WaveformDigitisationTool::create_calo_tof_map(const EcalID* idHelper, const CaloDD::EcalDetectorManager* detman) const { + + std::map<Identifier, float> time_of_flight; + for (auto itr = idHelper->pmt_begin(); itr != idHelper->pmt_end(); ++itr) { + const ExpandedIdentifier& extId = *itr; + Identifier pmtid = idHelper->pmt_id(extId); + + CaloDD::CaloDetectorElement* element = detman->getDetectorElement(pmtid); + time_of_flight[pmtid] = element->center().z() / CLHEP::c_light; + + ATH_MSG_DEBUG("Found TOF for " << pmtid << " = " << time_of_flight[pmtid]); + } + return time_of_flight; +} + +void +WaveformDigitisationTool::convolve_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const EvstHistMap& evst_hist, + std::map<Identifier, std::vector<uint16_t>>& waveforms + ) const { + + // Create digitization kernel + TF1* kernel = create_kernel(ctx, digiCondTool); + + // Convolve Evst histogram vs. kernel for each waveform + for (const auto& w : waveforms) { + + auto id = w.first; + + // Convolve Evst histogram with time kernel + + // Get the histogram + auto it = evst_hist.find(id); + if (it == evst_hist.end()) { + ATH_MSG_DEBUG("Didn't find EvsT hist for id " << id <<"!"); + + // Fill waveform with background only as Evst is empty + for (unsigned int i=0; i < digitizer_samples(); i++) { + + float baseline = generate_baseline(digiCondTool->base_mean(ctx), + digiCondTool->base_rms(ctx)); + + // Waveform is some random baseline + int ivalue = std::round(baseline); + + // Don't let value go below zero + if (ivalue < 0) + waveforms[id].push_back(0); + else + waveforms[id].push_back(ivalue); + + } // End of loop over digitizer samples + + // Done with this waveform + continue; + } + + auto h = it->second; + + // Use this vector to sum our values + // We will oversample by the same amount as the Evst histogram + std::vector<double> dwave(digitizer_samples() * over_samples()); + // ATH_MSG_DEBUG("Creating dwave with length " << dwave.size()); + + // Convolute evst signals with the time kernel + for(unsigned int ih=1; int(ih) < h->GetNbinsX(); ih++) { + + float value = h->GetBinContent(ih); + + // If bin is empty, move on + if (value <= 0.) continue; + + // Bin to write into in dwave + // Histogram doesn't start at t=0, so subtract pre_samples + int iw = ih - 1 - (pre_samples() * over_samples()); + + // Convolute the histogram with the time kernel + for (unsigned int ik=0; ik < dwave.size(); ik++) { + // Figure out destination bin first, skip if out of range + if ((iw + int(ik)) < 0) continue; // add int() to fix comp warnings + if ((iw + ik) >= dwave.size()) continue; + + float ktime = ik * digitizer_period()/over_samples(); + float kval = kernel->Eval(ktime) * value; + dwave[iw+ik] += kval; + + // if (kval > 0.01) + // ATH_MSG_DEBUG(" Bin " << ih << " kernel bin " << ik << " time " << ktime << " value " << kval); + } + + } // Done with convolution + + // Debug printout + // ATH_MSG_DEBUG("dwave array for " << id); + // unsigned int iw=0; + // for (auto v : dwave) { + // iw++; + // if (v <= 0.1) continue; + // ATH_MSG_DEBUG(" bin "<< iw << " val " << v); + // } + + // Need to down-sample dwave to fit waveform spacing + // Take average (or sum / over_sampling) to get amplitude correct + std::vector<double> dswave(digitizer_samples()); + // ATH_MSG_DEBUG("Creating dswave with length " << dswave.size()); + + for (unsigned int i=0; i < dwave.size(); i++) { + dswave[i/over_samples()] += (dwave[i] / over_samples()); + } + + // Debug printout + // ATH_MSG_DEBUG("dswave array for " << id); + // iw=0; + // for (auto v : dswave) { + // iw++; + // if (v <= 0.1) continue; + // ATH_MSG_DEBUG(" bin "<< iw << " val " << v); + // } + + // Now fill each entry of the waveform with the down-sampled signal + // and some random background + for (unsigned int i=0; i < digitizer_samples(); i++) { + + float signal = dswave[i]; + float baseline = generate_baseline(digiCondTool->base_mean(ctx), + digiCondTool->base_rms(ctx)); + + // Waveform is some random baseline plus a negative signal + int ivalue = std::round(baseline - signal); + + // Don't let value go below zero + if (ivalue < 0) + waveforms[id].push_back(0); + else + waveforms[id].push_back(ivalue); + + } // End of loop over dswave + + } // End of loop over channels + + // Clean up after ourselves + delete kernel; + +} + diff --git a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h index b6554c337830fbd2183752cc1b05123ea827b4f1..d71fa9ed6ef248fbb204a2200db5bb0daf4c1da4 100644 --- a/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h +++ b/Waveform/WaveDigiTools/src/WaveformDigitisationTool.h @@ -12,9 +12,31 @@ //Athena #include "AthenaBaseComps/AthAlgTool.h" #include "WaveDigiTools/IWaveformDigitisationTool.h" +#include "WaveformConditionsTools/IWaveformDigiConditionsTool.h" //Gaudi #include "GaudiKernel/ToolHandle.h" +#include "StoreGate/ReadHandleKey.h" + +// Data classes +#include "ScintSimEvent/ScintHitCollection.h" + +// Helpers +#include "ScintIdentifier/VetoID.h" +#include "ScintIdentifier/VetoNuID.h" +#include "ScintIdentifier/TriggerID.h" +#include "ScintIdentifier/PreshowerID.h" +#include "FaserCaloIdentifier/EcalID.h" + +// Detector Managers +#include "ScintReadoutGeometry/VetoDetectorManager.h" +#include "ScintReadoutGeometry/VetoNuDetectorManager.h" +#include "ScintReadoutGeometry/TriggerDetectorManager.h" +#include "ScintReadoutGeometry/PreshowerDetectorManager.h" +#include "CaloReadoutGeometry/EcalDetectorManager.h" + +// ROOT +#include "TF1.h" //STL @@ -34,10 +56,94 @@ class WaveformDigitisationTool: public extends<AthAlgTool, IWaveformDigitisation /// Generate random baseline float generate_baseline(float mean, float rms) const; + /// Fill EvsT histograms + void fill_evst_hist(EvstHistMap& map, const Identifier& id, float time, float energy) const; + + void clear_evst_hist(EvstHistMap& map) const; + + /// Waveform digitization parameters + FloatProperty m_digitizerPeriod { this, "DigitizerPeriod", 2.0, "Duration of one sample (in ns)" }; + IntegerProperty m_digitizerSamples { this, "DigitizerSamples", 600, "Number of digitizer samples" }; + + /// This is used to set the time scale over which the hit energy + /// is histogramed before convoluting with the time kernel + IntegerProperty m_overSamples { this, "OverSamples", 20, "Oversampling of hit times compared to digitizer period" }; + + /// Digitizer samples to start before t0 (time = preSamples * digiPeriod) + IntegerProperty m_preSamples { this, "PreSamples", 10, "Presamples for energy histogram" }; + + /// Access functions for parameters + unsigned int digitizer_samples() const { return m_digitizerSamples; } + float digitizer_period() const { return m_digitizerPeriod; } + unsigned int over_samples() const { return m_overSamples; } + unsigned int pre_samples() const {return m_preSamples; } + + /// + /// New functions to handle entire digitization process + + //template <class HitCollection> + //std::map<Identifier, std::vector<uint16_t>>& generateWaveforms( + // const EventContext& ctx, + // const ToolHandle<IWaveformDigiConditionsTool>&, + // const HitCollection*) const; + + /// Simple (old-style) digitization + std::map<Identifier, std::vector<uint16_t>>& generate_scint_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>&, + const ScintHitCollection*) const; + + /// Less simple (new-style) digitization with timing + std::map<Identifier, std::vector<uint16_t>>& generate_scint_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>&, + const ScintHitCollection*) const; + + /// Simple (old-style) digitization + std::map<Identifier, std::vector<uint16_t>>& generate_calo_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>&, + const CaloHitCollection*) const; + + /// Less simple (new-style) digitization with timing + std::map<Identifier, std::vector<uint16_t>>& generate_calo_timing_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>&, + const CaloHitCollection*) const; private: - // None + template <class ID, class DM> + std::map<Identifier, float> + create_tof_map(const ID* idHelper, const DM* detman) const; + + std::map<Identifier, float> + create_calo_tof_map(const EcalID* idHelper, const CaloDD::EcalDetectorManager* detman) const; + + TF1* create_kernel(const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool) const; + + void convolve_waveforms( + const EventContext& ctx, + const ToolHandle<IWaveformDigiConditionsTool>& digiCondTool, + const EvstHistMap& evst_hist, + std::map<Identifier, std::vector<uint16_t>>& waveforms) const; + + private: + + /// ID helpers + const VetoID* m_vetoID{nullptr}; + const VetoNuID* m_vetoNuID{nullptr}; + const TriggerID* m_triggerID{nullptr}; + const PreshowerID* m_preshowerID{nullptr}; + const EcalID* m_ecalID{nullptr}; + + /// Detector manager helpers + const ScintDD::VetoDetectorManager* m_vetoDetMan{nullptr}; + const ScintDD::VetoNuDetectorManager* m_vetoNuDetMan{nullptr}; + const ScintDD::TriggerDetectorManager* m_triggerDetMan{nullptr}; + const ScintDD::PreshowerDetectorManager* m_preshowerDetMan{nullptr}; + const CaloDD::EcalDetectorManager* m_caloDetMan{nullptr}; }; #endif // WAVEDIGITOOLS_WAVEFORMDIGITISATIONTOOL_H diff --git a/Waveform/WaveEventCnv/WaveByteStream/src/RawWaveformDecoderTool.cxx b/Waveform/WaveEventCnv/WaveByteStream/src/RawWaveformDecoderTool.cxx index 852ae084edac08380e302ec3026548d667da70c2..d9728fa086b226b417d7af130431131f58d2d13b 100644 --- a/Waveform/WaveEventCnv/WaveByteStream/src/RawWaveformDecoderTool.cxx +++ b/Waveform/WaveEventCnv/WaveByteStream/src/RawWaveformDecoderTool.cxx @@ -61,34 +61,60 @@ RawWaveformDecoderTool::convert(const DAQFormats::EventFull* re, // Find the Waveform fragment const DigitizerDataFragment* digitizer = NULL; + const DigitizerDataFragment* digitizer0 = NULL; + const DigitizerDataFragment* digitizer1 = NULL; const DAQFormats::EventFragment* frag = NULL; + + // Dump all fragments for debugging + // for(const auto &id : re->getFragmentIDs()) { + // frag=re->find_fragment(id); + // ATH_MSG_DEBUG("Fragment:\n" << *frag); + // } + for(const auto &id : re->getFragmentIDs()) { frag=re->find_fragment(id); if ((frag->source_id()&0xFFFF0000) != DAQFormats::SourceIDs::PMTSourceID) continue; - ATH_MSG_DEBUG("Fragment:\n" << *frag); - - digitizer = new DigitizerDataFragment(frag->payload<const uint32_t*>(), frag->payload_size()); - - break; + ATH_MSG_DEBUG("Found Fragment:\n" << *frag); + + if ((frag->source_id()&0x03) == 0) + digitizer0 = new DigitizerDataFragment(frag->payload<const uint32_t*>(), frag->payload_size()); + else if ((frag->source_id()&0x03) == 1) + digitizer1 = new DigitizerDataFragment(frag->payload<const uint32_t*>(), frag->payload_size()); + else + ATH_MSG_WARNING("Couldn't match digitizer with fragment source id!"); } - if (!digitizer) { - ATH_MSG_WARNING("Failed to find digitizer fragment in raw event!"); + if (!digitizer0) { + ATH_MSG_WARNING("Failed to find digitizer0 fragment in raw event!"); return StatusCode::SUCCESS; - } - + } + // Check validity here, try to continue, as perhaps not all channels are bad - if (!digitizer->valid()) { - ATH_MSG_WARNING("Found invalid digitizer fragment:\n" << *digitizer); + if (!digitizer0->valid()) { + ATH_MSG_WARNING("Found invalid digitizer0 fragment:\n" << *digitizer0); } else { - ATH_MSG_DEBUG("Found valid digitizer fragment"); + ATH_MSG_DEBUG("Found valid digitizer0 fragment"); } + + if (!digitizer1) { + // Will happen in data before 2024 + ATH_MSG_INFO("Failed to find digitizer1 fragment in raw event!"); + } else { + if (!digitizer1->valid()) { + ATH_MSG_WARNING("Found invalid digitizer1 fragment:\n" << *digitizer1); + } else { + ATH_MSG_DEBUG("Found valid digitizer1 fragment"); + } + } + // Detector type to match in first element of cable map std::string det_type; if (key == std::string("CaloWaveforms")) { det_type = std::string("calo"); + } else if (key == std::string("Calo2Waveforms")) { + det_type = std::string("calo2"); } else if (key == std::string("VetoWaveforms")) { det_type = std::string("veto"); } else if (key == std::string("VetoNuWaveforms")) { @@ -104,8 +130,8 @@ RawWaveformDecoderTool::convert(const DAQFormats::EventFull* re, return StatusCode::FAILURE; } - // Loop over 16 digitizer channels - std::vector<int> channelList(16); + // Loop over 32 digitizer channels + std::vector<int> channelList(32); std::iota (std::begin(channelList), std::end(channelList), 0); for (int channel: channelList) { @@ -115,8 +141,15 @@ RawWaveformDecoderTool::convert(const DAQFormats::EventFull* re, ATH_MSG_DEBUG("Converting channel "+std::to_string(channel)+" for "+key); + int chan = channel; + digitizer = digitizer0; + if (channel > 15) { + chan = channel-16; + digitizer = digitizer1; + } + // Check if this has data - if (!digitizer->channel_has_data(channel)) { + if (!digitizer->channel_has_data(chan)) { ATH_MSG_DEBUG("Channel " << channel << " has no data - skipping!"); continue; } @@ -124,7 +157,7 @@ RawWaveformDecoderTool::convert(const DAQFormats::EventFull* re, RawWaveform* wfm = new RawWaveform(); try { - wfm->setWaveform( channel, digitizer->channel_adc_counts( channel ) ); + wfm->setWaveform( channel, digitizer->channel_adc_counts( chan ) ); } catch ( DigitizerData::DigitizerDataException& e ) { ATH_MSG_WARNING("RawWaveformDecoderTool:\n" <<e.what() @@ -162,8 +195,10 @@ RawWaveformDecoderTool::convert(const DAQFormats::EventFull* re, } // Don't spring a leak - delete digitizer; - + delete digitizer0; + if (digitizer1) + delete digitizer1; + ATH_MSG_DEBUG( "RawWaveformDecoderTool created container " << key << " with size=" << container->size()); return StatusCode::SUCCESS; diff --git a/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py b/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py index 527c4e289eb1533e130301ee3a9c916d48d8e129..6af8ed0e1c78771a1121bce792b4d69105dc46e1 100644 --- a/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py +++ b/Waveform/WaveRecAlgs/python/WaveRecAlgsConfig.py @@ -28,17 +28,14 @@ def WaveformReconstructionCfg(flags): else: acc.merge(WaveformHitRecCfg(flags, "CaloWaveformRecAlg", "Calo")) + acc.merge(WaveformHitRecCfg(flags, "Calo2WaveformRecAlg", "Calo2")) + # Make preshower window 200 ns wide (value in digitizer clock ticks) acc.merge(WaveformHitRecCfg(flags, "VetoWaveformRecAlg", "Veto", FitWindowWidth=100 )) acc.merge(WaveformHitRecCfg(flags, "PreshowerWaveformRecAlg", "Preshower", FitWindowWidth=100 )) acc.merge(WaveformHitRecCfg(flags, "TriggerWaveformRecAlg", "Trigger", FitWindowWidth=100)) acc.merge(WaveformHitRecCfg(flags, "VetoNuWaveformRecAlg", "VetoNu", FitWindowWidth=100)) - acc.merge(WaveformHitRecCfg(flags, "VetoWaveformRecAlg", "Veto", FitWindowWidth=100 )) - # Make preshower window 200 ns wide (value in digitizer clock ticks) - acc.merge(WaveformHitRecCfg(flags, "PreshowerWaveformRecAlg", "Preshower", FitWindowWidth=100 )) - acc.merge(WaveformHitRecCfg(flags, "CaloWaveformRecAlg", "Calo")) - acc.merge(WaveformTimingCfg(flags)) return acc diff --git a/Waveform/WaveRecTools/src/WaveformReconstructionTool.cxx b/Waveform/WaveRecTools/src/WaveformReconstructionTool.cxx index f7ef9339ae32919ef6600cf099da2d42c5eb4a69..1caf49d4a3be081da8c8b8339324125ee6df788b 100644 --- a/Waveform/WaveRecTools/src/WaveformReconstructionTool.cxx +++ b/Waveform/WaveRecTools/src/WaveformReconstructionTool.cxx @@ -96,6 +96,14 @@ WaveformReconstructionTool::reconstructPrimary( int lo_edge = int((trigger_time+offset)/2.) + m_windowStart; int hi_edge = int((trigger_time+offset)/2.) + m_windowStart + m_windowWidth; + if (hi_edge >= int(wave.size())) { + // This likely means we have the wrong digitizer range + ATH_MSG_WARNING("Found channel " << wave.channel() << " with low edge: " << lo_edge << " hi edge: " << hi_edge << " > wave.size() " << wave.size()); + ATH_MSG_WARNING(" trigger_time + offset: " << (trigger_time+offset) << " => " << int((trigger_time+offset)/2.)); + newhit->set_status_bit(xAOD::WaveformStatus::WAVEFORM_INVALID); + return StatusCode::SUCCESS; + } + // Fill raw hit values fillRawHitValues(wave, lo_edge, hi_edge, newhit); @@ -367,7 +375,11 @@ WaveformReconstructionTool::fillRawHitValues(const RawWaveform& wave, // First, make sure we don't overflow the waveform range if (lo_edge < 0) lo_edge = 0; if (hi_edge >= int(wave.size())) hi_edge = wave.size() - 1; - + if (hi_edge <= lo_edge) { + ATH_MSG_WARNING("Channel " << wave.channel() << " waveform with lo: " << lo_edge << " hi: " << hi_edge << "!"); + return; + } + ATH_MSG_DEBUG("Fill channel " << wave.channel() << " waveform from sample " << lo_edge << " to " << hi_edge); diff --git a/Waveform/WaveformConditions/WaveCondUtils/scripts/makeTimingDB.py b/Waveform/WaveformConditions/WaveCondUtils/scripts/makeTimingDB.py index 57c3390c087b7f41850716d6ec24aa7d7e7044f6..0074c2b69906eda40667defdebd2596ff96d8652 100755 --- a/Waveform/WaveformConditions/WaveCondUtils/scripts/makeTimingDB.py +++ b/Waveform/WaveformConditions/WaveCondUtils/scripts/makeTimingDB.py @@ -15,7 +15,7 @@ nominal_data = { 6525: 820. } -offset_channels = 16 +# offset_channels = 20 # Run # 0 - initial data @@ -53,7 +53,10 @@ offset_data = { 5042: ehn1_offsets, 5050: ti12_offsets, # IFT and VetoNu installed - 6525: [ -10., -10., -10., -10., -25., -25., 0., 0., 0., 0., 0., 0., 18., 18., 0., 0. ] + 6525: [ -10., -10., -10., -10., -25., -25., 0., 0., 0., 0., 0., 0., 18., 18., 0., 0. ], +# 2024, add 2nd digitizer + 13847: [ -10., -10., -10., -10., -25., -25., 0., 0., 0., 0., 0., 0., 18., 18., 0., 0., -10., -10., -10., -10. ] + } attr_list_desc = '<timeStamp>run-lumi</timeStamp><addrHeader><address_header service_type="71" clid="40774348" /></addrHeader><typeName>AthenaAttributeList</typeName>' @@ -82,13 +85,12 @@ for run, data in offset_data.items(): assert run > lastRun, 'Run numbers out of order' assert run <= maxInt32, 'Run number out of range' lastRun = run - assert len(data) == offset_channels, 'Offset data does not have '+str(offset_channels)+' entries' - for i in range(offset_channels): + #assert len(data) == offset_channels, 'Offset data does not have '+str(offset_channels)+' entries' + for i in range(len(data)): assert isinstance(data[i], float), 'Offset time is not float' # Data looks OK - from PyCool import cool from CoolConvUtilities.AtlCoolLib import indirectOpen @@ -135,7 +137,7 @@ offsetFolder = db.createFolder('/WAVE/DAQ/TimingOffset', offsetFolderSpec, cond_ lastValid = cool.ValidityKeyMax for firstValidRun, offset_list in reversed(offset_data.items()): firstValid = (firstValidRun << 32) - for channel in range(offset_channels): + for channel in range(len(offset_list)): offsetRecord = cool.Record(offsetSpec) offsetRecord[ 'TriggerOffset' ] = float(offset_list[channel]) offsetFolder.storeObject( firstValid, lastValid, offsetRecord, cool.ChannelId(channel) ) @@ -154,8 +156,9 @@ nominal_data = { 0: 820. } # No offsets by default +# Expand this to 20 channels for 2024 data offset_data = { - 0: [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] + 0: [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] } # Validate again just in case @@ -176,8 +179,8 @@ for run, data in offset_data.items(): assert run > lastRun, 'Run numbers out of order' assert run <= maxInt32, 'Run number out of range' lastRun = run - assert len(data) == offset_channels, 'Offset data does not have '+str(offset_channels)+' entries' - for i in range(offset_channels): + #assert len(data) == offset_channels, 'Offset data does not have '+str(offset_channels)+' entries' + for i in range(len(data)): assert isinstance(data[i], float), 'Offset time is not float' # Data looks OK @@ -224,7 +227,7 @@ offsetFolder = db.createFolder('/WAVE/DAQ/TimingOffset', offsetFolderSpec, cond_ lastValid = cool.ValidityKeyMax for firstValidRun, offset_list in reversed(offset_data.items()): firstValid = (firstValidRun << 32) - for channel in range(offset_channels): + for channel in range(len(offset_list)): offsetRecord = cool.Record(offsetSpec) offsetRecord[ 'TriggerOffset' ] = float(offset_list[channel]) offsetFolder.storeObject( firstValid, lastValid, offsetRecord, cool.ChannelId(channel) ) diff --git a/Waveform/WaveformConditions/WaveformConditionsTools/WaveformConditionsTools/IWaveformDigiConditionsTool.h b/Waveform/WaveformConditions/WaveformConditionsTools/WaveformConditionsTools/IWaveformDigiConditionsTool.h index 1bfaf0dd9b4c83030c89f02d0c957a9a03735b97..69d32c4292d7a85e2ca9c7513de73cafdfcb38e3 100644 --- a/Waveform/WaveformConditions/WaveformConditionsTools/WaveformConditionsTools/IWaveformDigiConditionsTool.h +++ b/Waveform/WaveformConditions/WaveformConditionsTools/WaveformConditionsTools/IWaveformDigiConditionsTool.h @@ -57,6 +57,14 @@ class IWaveformDigiConditionsTool: virtual public IAlgTool { virtual float cb_n(void) const = 0; virtual float cb_n(const EventContext& ctx) const = 0; + + // Time dependence parameters + virtual float preshower_time_slope(void) const = 0; + virtual float preshower_time_slope(const EventContext& ctx) const = 0; + + virtual float trigger_time_slope(void) const = 0; + virtual float trigger_time_slope(const EventContext& ctx) const = 0; + }; //---------------------------------------------------------------------- diff --git a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformCableMappingTool.cxx b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformCableMappingTool.cxx index 3922d0605339fce204cff01c9dbd69d3c6f21a97..2828113ed35bf6d24c19ccc31ca3470fd0a39d98 100644 --- a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformCableMappingTool.cxx +++ b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformCableMappingTool.cxx @@ -94,7 +94,17 @@ WaveformCableMappingTool::getCableMapping(const EventContext& ctx) const { // Ugh, cant use switch statement with strings // Must do this using an if ladder if (det_type == "calo") { - identifier = m_ecalID->pmt_id(rowVal, moduleVal, pmtVal); + // Do checks of PMT identifier + identifier = m_ecalID->pmt_id(rowVal, moduleVal, pmtVal, true); + // Test a few things + ATH_MSG_DEBUG("Calo ID:" << identifier); + ATH_MSG_DEBUG("PMT:" << m_ecalID->pmt(identifier) << " PMT Max:" << m_ecalID->pmt_max(identifier)); + } + else if (det_type == "calo2") { + // Do checks of PMT identifier + identifier = m_ecalID->pmt_id(rowVal, moduleVal, pmtVal, true); + ATH_MSG_DEBUG("Calo2 ID:" << identifier); + ATH_MSG_DEBUG("PMT:" << m_ecalID->pmt(identifier) << " PMT Max:" << m_ecalID->pmt_max(identifier)); } else if (det_type == "veto") { identifier = m_vetoID->pmt_id(stationVal, plateVal, pmtVal); @@ -186,6 +196,9 @@ WaveformCableMappingTool::getChannelMapping(const EventContext& ctx, const Ident if (det_type == "calo") { identifier = m_ecalID->pmt_id(rowVal, moduleVal, pmtVal); } + else if (det_type == "calo2") { + identifier = m_ecalID->pmt_id(rowVal, moduleVal, pmtVal); + } else if (det_type == "veto") { identifier = m_vetoID->pmt_id(stationVal, plateVal, pmtVal); } diff --git a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.cxx b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.cxx index 4e2fedd972d06d923b6a0a175e32349ab6b9ecbb..7da740c2d296e3ece6719bb664bb465ac3db64a3 100644 --- a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.cxx +++ b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.cxx @@ -93,6 +93,16 @@ WaveformDigiConditionsTool::cb_n(const EventContext& ctx) const { return get_value(ctx, "cb_n"); } +float +WaveformDigiConditionsTool::preshower_time_slope(const EventContext& ctx) const { + return 1/230.; // 23 cm/ns +} + +float +WaveformDigiConditionsTool::trigger_time_slope(const EventContext& ctx) const { + return 1/130.; // 13 cm/ns +} + //---------------------------------------------------------------------- float WaveformDigiConditionsTool::base_mean(void) const { @@ -136,6 +146,17 @@ WaveformDigiConditionsTool::cb_n(void) const { return cb_n(ctx); } +float +WaveformDigiConditionsTool::preshower_time_slope(void) const { + const EventContext& ctx(Gaudi::Hive::currentContext()); + return preshower_time_slope(ctx); +} + +float +WaveformDigiConditionsTool::trigger_time_slope(void) const { + const EventContext& ctx(Gaudi::Hive::currentContext()); + return trigger_time_slope(ctx); +} //---------------------------------------------------------------------- float @@ -156,7 +177,7 @@ WaveformDigiConditionsTool::get_value(const EventContext& ctx, std::string arg) if (payload.exists(arg) and not payload[arg].isNull()) { val = payload[arg].data<float>(); - ATH_MSG_DEBUG("Found digi COOL channel " << m_cool_channel << " " << arg << " as " << val); + // ATH_MSG_DEBUG("Found digi COOL channel " << m_cool_channel << " " << arg << " as " << val); } else { ATH_MSG_WARNING("No valid " << arg << " value found for digi COOL channel "<< m_cool_channel<<"!"); } diff --git a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.h b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.h index e5e8232085e3df7ebfeccc9235dbd26b3b5ba8af..258d9453d12784084cfc44825caf022bcea57c14 100644 --- a/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.h +++ b/Waveform/WaveformConditions/WaveformConditionsTools/src/WaveformDigiConditionsTool.h @@ -67,6 +67,12 @@ class WaveformDigiConditionsTool: public extends<AthAlgTool, IWaveformDigiCondit virtual float cb_n(void) const override; virtual float cb_n(const EventContext& ctx) const override; + // Time dependence parameters (probably should do this differently) + virtual float preshower_time_slope(void) const override; + virtual float preshower_time_slope(const EventContext& ctx) const override; + + virtual float trigger_time_slope(void) const override; + virtual float trigger_time_slope(const EventContext& ctx) const override; private: diff --git a/faser-common b/faser-common index 89ce6a07128eb2ebc367b6b68f29c9c88220e3e6..0a1e6ca7be9dbc17b0692f998e36c87541ca8be3 160000 --- a/faser-common +++ b/faser-common @@ -1 +1 @@ -Subproject commit 89ce6a07128eb2ebc367b6b68f29c9c88220e3e6 +Subproject commit 0a1e6ca7be9dbc17b0692f998e36c87541ca8be3 diff --git a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx index 27fd3362c4a18bfa999517529fc925951fbff20c..2365c79892a913def2fcbfdb1b74067eb5d96f0f 100644 --- a/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx +++ b/graphics/VTI12/VTI12Systems/VTI12GeometrySystems/src/VisAttributes.cxx @@ -375,7 +375,6 @@ MatVisAttributes::MatVisAttributes() { add("Polystyrene",material); } - { // C02: SoMaterial *m = new SoMaterial; @@ -926,6 +925,7 @@ MatVisAttributes::MatVisAttributes() { m->emissiveColor.setValue (0.028, 0.028, 0.028); m->shininess.setValue(.60); add("Glass",m); + add("CFRP", m); } {