diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 122ef5a47bcf2ccbea9ed7cdb52c8c7dcc42a874..2e14a6588bc2ee7a8436986c1bb930654e92af0f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -119,6 +119,20 @@ dump_geometry: - dd_web_display --output geo/detector_geo.root ${DETECTOR_PATH}/athena.xml - echo "Geometry viewer at https://eic.phy.anl.gov/geoviewer/index.htm?file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/${CI_JOB_ID}/artifacts/raw/geo/detector_geo_full.root?job=dump_geometry&item=default;1&opt=clipxyz;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&" +detector_documentation: + stage: docs + needs: + - common:detector + script: + - mkdir -p doc + - bash bin/build_documentation | tee doc/detector.md + #- | + # xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee doc/detector.md + # xmllint --format --xpath '//comment/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true + # for afile in ${DETECTOR_PATH}/compact/*.xml ; do + # xmllint --format --xpath '//comment/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true + # done + report: stage: finalize needs: diff --git a/athena.xml b/athena.xml index cf0b2ccb074406ef3bb21b499cc28c0999fb0d41..ee4c3b0658f9f97b6ed31048d19d805afe880a93 100644 --- a/athena.xml +++ b/athena.xml @@ -4,6 +4,7 @@ <debug> <type name="surface" value="1"/> + <type name="material" value="1"/> <type name="readout" value="1"/> <type name="segmentation" value="1"/> <type name="limits" value="1"/> @@ -11,11 +12,11 @@ <type name="includes" value="1"/> </debug> - <documentation><![CDATA[ + <documentation level="-1"> # Athena Detector - https://eicweb.phy.anl.gov/EIC/detectors/athena.git - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git - ]]></documentation> + </documentation> <!-- Some information about detector --> <info name="Athena Detector" title="Athena Detector" @@ -23,18 +24,19 @@ url="https://eicweb.phy.anl.gov/EIC/detectors/athena.git" status="development" version="v1 2021-03-16"> - <comment> Athena Detector - - https://eicweb.phy.anl.gov/EIC/detectors/athena.git - - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git - </comment> + <comment> Athena </comment> </info> - <define> - <include ref="ip6/ip6_defs.xml" /> <comment> IP definitions should be first</comment> + <documentation level="2"> + ## Main Constant Definitions + + The ip6 (or other ip) defines should be included first. + These files have only a define tags. + </documentation> + <include ref="ip6/ip6_defs.xml" /> <include ref="compact/definitions.xml" /> </define> - <includes> <gdmlFile ref="compact/elements.xml"/> <gdmlFile ref="compact/materials.xml"/> @@ -58,7 +60,26 @@ <include ref="compact/display.xml" /> </display> - <comment> Include the IP components first </comment> + <documentation level="0"> + ## Detector Subsystems + + ### IP Subsystems + + The interaction point subsystems are included before the central detector subsystems. + This is becuase the IP subsystems, for exmaple the beampipe, will define paramters + which are subsquently used in the central detector construction -- e.g. the vertex tracker + uses the beampipe OD to help define its placement. + + The IP subsystems include the Far forward and backward regions. The list of subsystem includes: + - Interaction region beampipe + - B0 tracker + - Off-momentum tracker + - Far forward roman pots + - Zero Degree Calorimeter + - Beam line magnets. + - and more... + </documentation> + <include ref="ip6/forward_ion_beamline.xml"/> <include ref="ip6/beampipe.xml"/> @@ -109,35 +130,6 @@ <composite name="BackwardTOF"/> </detector> - <!-- - <detector id="TrackerBarrelSubAssembly_Inner_ID" - name="TrackerBarrelSubAssembly_Inner" - type="DD4hep_SubdetectorAssembly" - vis="TrackerSubAssemblyVis"> - <composite name="TrackerBarrel_Inner"/> - </detector> - <detector id="TrackerEndcapSubAssembly_Inner_ID" - name="TrackerEndcapSubAssembly_Inner" - type="DD4hep_SubdetectorAssembly" - vis="TrackerSubAssemblyVis"> - <composite name="TrackerEndcapN_Inner"/> - <composite name="TrackerBarrel_Inner"/> - <composite name="TrackerEndcapP_Inner"/> - </detector> - <detector id="TrackerBarrelSubAssembly_Outer_ID" - name="TrackerBarrelSubAssembly_Outer" - type="DD4hep_SubdetectorAssembly" - vis="TrackerSubAssemblyVis"> - <composite name="TrackerBarrel_Outer"/> - </detector> - <detector id="TrackerEndcapSubAssembly_Outer_ID" - name="TrackerEndcapSubAssembly_Outer" - type="DD4hep_SubdetectorAssembly" - vis="TrackerSubAssemblyVis"> - <composite name="TrackerEndcapP_Outer"/> - <composite name="TrackerEndcapN_Outer"/> - </detector> - --> </detectors> <include ref="compact/vertex_tracker.xml"/> @@ -145,10 +137,11 @@ <include ref="compact/central_tracker.xml"/> <include ref="compact/tof_barrel.xml"/> + <include ref="compact/tof_endcap.xml"/> <!--include ref="compact/rwell_tracker_barrel.xml"--> - <include ref="compact/cb_DIRC.xml"/> - + + <!--include ref="compact/dirc.xml"/--> <!-- When changing magnet, also select dimensions in definitions.xml. --> <include ref="compact/solenoid.xml"/> @@ -166,7 +159,6 @@ <!--include ref="compact/ce_GEM.xml"/--> <!--include ref="compact/gem_tracker_endcap.xml"/--> <!--include ref="compact/mrich.xml"/--> - <include ref="compact/tof_endcap.xml"/> <include ref="compact/forward_trd.xml"/> <include ref="compact/gaseous_rich.xml"/> @@ -175,7 +167,6 @@ <include ref="ip6/far_forward_romanpots.xml"/> <include ref="ip6/far_forward_detectors.xml"/> - <!-- <include ref="compact/mm_tracker_barrel.xml"/> <include ref="compact/cb_VTX_Barrel.xml"/> @@ -184,5 +175,4 @@ <readouts> </readouts> - </lccdd> diff --git a/bin/build_documentation b/bin/build_documentation new file mode 100644 index 0000000000000000000000000000000000000000..24d1a76e60ef6900c4c49264c4bca2e3ab04e571 --- /dev/null +++ b/bin/build_documentation @@ -0,0 +1,77 @@ +#!/bin/bash + +#included files +detector_file="./athena.xml" + +#filelist=$(xmllint --format --xpath '//include/@ref' ${detector_file} | sed 's/ref=\"//g' | sed 's/\"/\n/g' ) +#echo $filelist + +# Searches for included files two levels down +get_includes() { + local input_file="${1}" + #echo ${1} + local filelist=$(xmllint --format --xpath '//include/@ref' ${input_file} | sed 's/ref=\"//g' | sed 's/\"//g' ) + for afile in $filelist ; do + xmllint --format --xpath '//include/@ref' ${input_file} &> /dev/null + local res="$?" + if [ "${res}" == "0" ] ; then + local subincluded=$(xmllint --format --xpath '//include/@ref' ${input_file} 2> /dev/null | sed 's/ref=\"//g' | sed 's/\"//g' ) + filelist="${filelist} ${subincluded}" + #echo "sub include $afile" + fi + done + # <includes > <gdmlFile > <file> + local otherfiles=$(xmllint --format --xpath '//includes/file/@ref | //includes/gdmlFile/@ref' ${input_file} | sed 's/ref=\"//g' | sed 's/\"/\n/g' ) + #echo $otherfiles + filelist=$(echo "${filelist} ${otherfiles}" | sed 's/ /\n/g' | sort | uniq ) + echo "$input_file $filelist" +} + + +xml_files=$(get_includes ${detector_file}) +#echo $xml_files + +get_doc_levels() { + # levels + local levels=0 + for afile in $xml_files ; do + xmllint --format --xpath '//documentation/@level' $afile &> /dev/null + local res="$?" + if [ "${res}" == "0" ] ; then + local new_levels=$(xmllint --format --xpath '//documentation/@level' $afile 2> /dev/null | sed 's/level=\"/ /g' | sed 's/\"//g' ) + levels="${levels} ${new_levels}" + fi + done + echo "$levels" | sed 's/ /\n/g' | sort | uniq +} + +all_levels=$(get_doc_levels ${xml_file_array}) +#echo " levels: " +#echo $all_levels + +for alevel in $(echo ${all_levels} | sed 's/ /\n/g' | sort -n | uniq ) ; do + #echo " doing level $alevel ..." + for afile in $(echo $xml_files | sed 's/ / \n/g') ; do + #echo $afile + #xmllint --format --xpath '//documentation[@level="'"$alevel"'"]/text()' $afile + level_doc=$(xmllint --format --xpath '//documentation[@level="'$alevel'"]' ${afile} 2> /dev/null ) + if [ "$?" -eq "0" ] ; then + xmllint --format --xpath '//documentation[@level="'$alevel'"]/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/g' + fi + done +done + + + +#${DETECTOR_PATH}=. +# +# +#xmllint --format --xpath '// +# +#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee doc/detector.md +#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true +#for afile in ${DETECTOR_PATH}/compact/*.xml ; do +# xmllint --format --xpath '//documentation/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true +#done +# + diff --git a/compact/cb_DIRC.xml b/compact/cb_DIRC.xml deleted file mode 100644 index 5ff2d2be27bff0bc476fbf82f7101c2e98c94fbb..0000000000000000000000000000000000000000 --- a/compact/cb_DIRC.xml +++ /dev/null @@ -1,55 +0,0 @@ -<lccdd> - - <comment>Initial implementation of the Athena Detector - DIRC (ported from g4e). Currently constructed around - a fixed radius of 83.65cm (between the uRWEL layers). - TODO: this needs to be properly parameterized. - </comment> - - <define> - <constant name="cb_DIRC_length" value="DIRCLength"/> - <constant name="cb_DIRC_rmin" value="82.00*cm"/> - <constant name="cb_DIRC_rmax" value="88.00*cm"/> - </define> - - <limits> - </limits> - - <regions> - </regions> - - <display> - </display> - - <detectors> - <detector id="BarrelDIRC_ID" name="cb_DIRC" type="cb_DIRC" readout="DIRCHits" vis="AnlTeal"> - <dimensions rmin="cb_DIRC_rmin" rmax="cb_DIRC_rmax" length="cb_DIRC_length" radius="DIRCRadius" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/> - <position x="0" y="0" z="DIRCOffset"/> - <module name="Module0" R="DIRCRadius" phi="0*DIRCDPhi" /> - <module name="Module1" R="DIRCRadius" phi="1*DIRCDPhi" /> - <module name="Module2" R="DIRCRadius" phi="2*DIRCDPhi" /> - <module name="Module3" R="DIRCRadius" phi="3*DIRCDPhi" /> - <module name="Module4" R="DIRCRadius" phi="4*DIRCDPhi" /> - <module name="Module5" R="DIRCRadius" phi="5*DIRCDPhi" /> - <module name="Module6" R="DIRCRadius" phi="6*DIRCDPhi" /> - <module name="Module7" R="DIRCRadius" phi="7*DIRCDPhi" /> - <module name="Module8" R="DIRCRadius" phi="8*DIRCDPhi" /> - <module name="Module9" R="DIRCRadius" phi="9*DIRCDPhi" /> - <module name="Module10" R="DIRCRadius" phi="10*DIRCDPhi" /> - <module name="Module11" R="DIRCRadius" phi="11*DIRCDPhi" /> - </detector> - </detectors> - - <readouts> - <readout name="DIRCHits"> - <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" /> - <id>system:8,barrel:3,module:12,x:32:-16,y:-16</id> - </readout> - </readouts> - - <plugins> - </plugins> - - <fields> - </fields> -</lccdd> diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml index 62e9816bfe7299151f03b8f306ca9e80ebf7d1de..e71a333ad7ce7220c387d3b3497028ae4c4fab37 100644 --- a/compact/central_tracker.xml +++ b/compact/central_tracker.xml @@ -5,7 +5,6 @@ Silicon Tracker --------------- - Some references: With some added info on ITS3 chip from https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf @@ -17,8 +16,8 @@ <define> - <constant name="TrackerBarrelSpaceFrame_width" value="40.0*mm"/> - <constant name="TrackerBarrelSpaceFrame_height" value="sqrt(3.0)*32.0*mm/2.0"/> + <constant name="TrackerBarrelSpaceFrame_width" value="4.0*cm"/> + <constant name="TrackerBarrelSpaceFrame_height" value="2.5*cm"/> <constant name="TrackerSensor_thickness" value="0.03*mm"/> <constant name="TrackerBarrel_thickness" value="0.55/100*9.37*cm"/> <constant name="TrackerBarrelService_thickness" value="TrackerBarrel_thickness-TrackerSensor_thickness"/> diff --git a/compact/definitions.xml b/compact/definitions.xml index 53af0d6ffd0029731462649ca71ee8fc4171e2f2..f1aa6ac6b4592bc86ab08cc4c22b720c44523163 100644 --- a/compact/definitions.xml +++ b/compact/definitions.xml @@ -9,12 +9,9 @@ <constant name="inch" value="2.54*cm"/> <comment> - ------------ - Detector IDs - ------------ + ## Detector IDs - Note about ACTS tracking geometry construction - ---------------------------------------------- + ### Note about ACTS tracking geometry construction The tracking surfaces need to be structured in a barrel + endcapP + endcapN where endcapP/endcapN are the endcaps at positive/negative z values. @@ -35,17 +32,20 @@ <comment> + + ### Allocated IDs + =================== - (1-9) Reserved IDs + #### (1-9) Reserved IDs =================== - Unused IDs: 1-9 + - Unused IDs: 1-9 ==================================== - (10-24) Interaction region beamline + #### (10-24) Interaction region beamline ==================================== - Beampipe ID : 10 - Unused IDs: 11-24 + - Beampipe ID : 10 + - Unused IDs: 11-24 </comment> <constant name="BeamPipe_ID" value="10"/> @@ -53,14 +53,14 @@ <comment> =============================== - (25-49) Silicon Vertex Tracker + #### (25-49) Silicon Vertex Tracker =============================== - SiVertex subsystem ID: 25 - Layer 1 subassembly ID: 26 - Layer 2 subassembly ID: 27 - Layer 3 subassembly ID: 28 - Layer 4 subassembly ID: 29 - Layer 5 subassembly ID: 30 + - SiVertex subsystem ID: 25 + - Layer 1 subassembly ID: 26 + - Layer 2 subassembly ID: 27 + - Layer 3 subassembly ID: 28 + - Layer 4 subassembly ID: 29 + - Layer 5 subassembly ID: 30 </comment> <constant name="VertexBarrel_ID" value="25"/> <constant name="VertexBarrelSubAssembly_ID" value="26"/> @@ -79,7 +79,7 @@ <comment> =============================== - (50-74) Silicon Tracker System + #### (50-74) Silicon Tracker System =============================== SiTracker subsystem ID: 50 @@ -128,7 +128,7 @@ <comment> =================== - (75-84) Barrel Tracker IDs + #### (75-84) Barrel Tracker IDs =================== MMTrackerBarrel ID: 75 RWellTrackerBarrel ID: 76 @@ -141,7 +141,7 @@ <comment> =================== - (85-99) Reserved IDs + #### (85-99) Reserved IDs =================== Unused IDs: 85-89 @@ -149,7 +149,7 @@ </comment> <comment> ====================== - (90-99) Barrel PID IDs + #### (90-99) Barrel PID IDs ====================== DIRC subsystem ID: 90 @@ -166,7 +166,7 @@ <comment> ===================================== - (100-109) Electromagnetic Calorimeter + #### (100-109) Electromagnetic Calorimeter ===================================== ECal subsystem ID: 100 @@ -188,7 +188,7 @@ <comment> ===================================== - (110-119) Hadronic Calorimeter + #### (110-119) Hadronic Calorimeter ===================================== HCal subsystem ID: 110 @@ -205,7 +205,7 @@ <constant name="ci_HCAL_id" value="200"/> <comment> ===================================== - (120-129) (near) Forward reserved + #### (120-129) (near) Forward reserved ===================================== Forwardtracking ID: 120 @@ -224,7 +224,7 @@ <comment> ===================================== - (130-139) Backward reserved + #### (130-139) Backward reserved ===================================== Modular RICH ID: 130 @@ -237,7 +237,7 @@ <comment> ===================================== - (140-149) Central Magnet + #### (140-149) Central Magnet ===================================== Solenoid ID: 140 @@ -253,7 +253,7 @@ <comment> ===================================== - (150-169) Far Forward Detectors + #### (150-169) Far Forward Detectors ===================================== Forward Roman Pot ID: 150 @@ -267,34 +267,43 @@ <constant name="B0Tracker_Station_2_ID" value="151"/> <constant name="B0Tracker_Station_3_ID" value="152"/> <constant name="B0Tracker_Station_4_ID" value="153"/> - <constant name="ForwardRomanPot_Station_1_ID" value="155"/> - <constant name="ForwardRomanPot_Station_2_ID" value="156"/> - <constant name="ForwardRomanPotB_ID" value="157"/> - <constant name="ForwardRomanPotC_ID" value="158"/> + <constant name="ForwardRomanPot_Station_1_ID" value="155"/> + <constant name="ForwardRomanPot_Station_2_ID" value="156"/> + <constant name="ForwardRomanPotB_ID" value="157"/> + <constant name="ForwardRomanPotC_ID" value="158"/> <constant name="ForwardOffMTracker_station_1_ID" value="159"/> <constant name="ForwardOffMTracker_station_2_ID" value="160"/> <constant name="ForwardOffMTracker_station_3_ID" value="161"/> <constant name="ForwardOffMTracker_station_4_ID" value="162"/> - <constant name="ffi_ZDC_ECAL_ID" value="163"/> - <constant name="ffi_ZDC_HCAL_ID" value="164"/> + <constant name="ffi_ZDC_ECAL_ID" value="163"/> + <constant name="ffi_ZDC_HCAL_ID" value="164"/> <comment> ===================================== - (170-189) Forward Beamline Magnets + #### (170-189) Forward Beamline Magnets ===================================== </comment> <comment> ===================================== - (190-199) Backward Beamline Magnets + #### (190-199) Backward Beamline Magnets ===================================== </comment> <comment> - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Detector Definition Parameters - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ------------------------------ + ## Detector Definition Parameters + ------------------------------ + + ## Constant naming convention + SubSystemNameFurtherDescriptor_quantity + + Examples: + - TrackerBarrelInside_length + - EcalEndcapP_rmin + - MRichFresnelLens_thickness + ## Parameter nomenclature - "rmin", "rmax", "thickness" all refer to the radial direction. @@ -305,14 +314,12 @@ also positive then negated when required. (Many endcap constructions are mirrored, hence a postive value.) - We will try to keep the subsystem component name first and the parameter after an "_" (eg, EcalBarrel_length"). - TODO: fix parameter naming to be uniform in the above convention. </comment> <comment> - ========================== - Solenoid Magnet Parameters - ========================== + ## Solenoid Magnet Parameters + When changing here, also change the include file in athena.xml. </comment> @@ -337,11 +344,12 @@ <comment> - -------------------------------- - Key Central Detector Parameters - -------------------------------- + ## Key Central Detector Parameters These are needed here to compute the dependent parameters. + + + ### PID Detector Region Parameters </comment> <constant name="ForwardRICH_length" value="1.1*m"/> @@ -364,14 +372,12 @@ <constant name="BarrelExtraPIDThickness" value="14.0 * cm"/> <constant name="BarrelTRDThickness" value="1.0 * cm"/> <constant name="BarrelTOFThickness" value="1.0 * cm"/> - - + <constant name="BarrelPIDThickness" value="BarrelExtraPIDThickness + BarrelTRDThickness + BarrelTOFThickness"/> <comment> - ============================ - Tracking Detector Parameters - ============================ + ## Tracking Detector Parameters + Generic tracking space allocations </comment> @@ -383,16 +389,15 @@ ------------------------- GEM Tracker Parameters ------------------------- + TODO: this section should be in the gem xml file </comment> <constant name="ForwardTrackingGEMLength" value="ForwardTracking_length"/> <constant name="BackwardTrackingGEMLength" value="BackwardTracking_length"/> <comment> - ------------------------- - Vertex Tracker Parameters - ------------------------- + ## Vertex Tracker Parameters </comment> - <constant name="VertexTrackerBarrel_rmin" value="Beampipe_rmax+5.0*mm"/> + <constant name="VertexTrackerBarrel_rmin" value="Beampipe_rmax + 5.0*mm"/> <constant name="VertexTrackerBarrel_rmax" value="200.0*mm"/> <constant name="VertexTrackerBarrel_length" value="300.0*mm"/> <constant name="VertexTrackerBarrel_zmax" value="VertexTrackerBarrel_length/2.0"/> @@ -400,38 +405,31 @@ <constant name="VertexTrackerEndcapP_rmax" value="VertexTrackerBarrel_rmax"/> <constant name="VertexTrackerEndcapN_rmax" value="VertexTrackerBarrel_rmax"/> - <constant name="VertexTrackerEndcapP_rmin" value="Beampipe_rmax+5.0*mm"/> - <constant name="VertexTrackerEndcapN_rmin" value="Beampipe_rmax+5.0*mm"/> + <constant name="VertexTrackerEndcapP_rmin" value="Beampipe_rmax + 5.0*mm"/> + <constant name="VertexTrackerEndcapN_rmin" value="Beampipe_rmax + 5.0*mm"/> - <constant name="VertexTrackerEndcapP_zmax" value="600.0*mm/2.0"/> - <constant name="VertexTrackerEndcapN_zmax" value="600.0*mm/2.0"/> + <constant name="VertexTrackerEndcapP_zmax" value="300.0*mm"/> + <constant name="VertexTrackerEndcapN_zmax" value="300.0*mm"/> <comment> - Vertex Tracking Region + ### Vertex Tracking Region </comment> <constant name="VertexTrackingRegion_length" value="VertexTrackerEndcapP_zmax + VertexTrackerEndcapN_zmax "/> - <constant name="VertexTrackingRegion_zmin" value="VertexTrackingRegion_length/2.0"/> - <constant name="VertexTrackingRegion_rmax" value="VertexTrackingRegion_length/2.0"/> - - <comment>Deprecated - name="VertexTrackerOuterRadius" value="VertexTrackerBarrel_rmax" - name="VertexTrackerInnerRadius" value="VertexTrackerBarrel_rmin" - name="VertexTrackerOuterBarrelLength" value="VertexTrackingRegion_length" - </comment> + <constant name="VertexTrackingRegion_zmax" value="VertexTrackerEndcapP_zmax"/> + <constant name="VertexTrackingRegion_rmax" value="VertexTrackerBarrel_rmax"/> <comment> - -------------------------- - Tracker Detector Parameters - -------------------------- + ### Tracker Detector Parameters </comment> - <constant name="TrackerBarrel_rmin" value="VertexTrackerBarrel_rmax"/> - <comment> This is just inside of the potential uRWEL detector hugging the DIRC from the inside </comment> - <constant name="TrackerBarrel_rmax" value="78*cm"/> - <constant name="TrackerBarrelOuter_length" value="2600.0*mm"/> - <constant name="TrackerBarrelInner_length" value="VertexTrackingRegion_length"/> - <constant name="TrackerBarrelInner_zmax" value="TrackerBarrelInner_length/2.0"/> - <constant name="TrackerBarrelOuter_zmax" value="TrackerBarrelOuter_length/2.0"/> + <constant name="TrackerBarrel_rmin" value="VertexTrackingRegion_zmax"/> + <constant name="TrackerBarrel_thickness" value="58.0*cm"/> + <constant name="TrackerBarrel_rmax" value="TrackerBarrel_rmin + TrackerBarrel_thickness"/> + + <constant name="TrackerBarrel_length" value="VertexTrackingRegion_length + 2000.0*mm"/> + <constant name="TrackerBarrelInside_length" value="VertexTrackingRegion_length"/> + <constant name="TrackerBarrelInside_zmax" value="TrackerBarrelInside_length/2.0"/> + <constant name="TrackerBarrel_zmax" value="TrackerBarrel_length/2.0"/> <comment> Deprecated constant name="SiliconTrackerInnerRadius" value="TrackerBarrel_rmin" @@ -439,36 +437,34 @@ constant name="SiliconTrackerOuterRadius" value="TrackerBarrel_rmax" constant name="SiliconTrackerOuterBarrelLength" value="TrackerBarrelOuter_length" constant name="SiliconTrackerOuterBarrel_zmax" value="TrackerBarrelOuter_length/2.0" + TrackerBarrelOuter_length -> TrackerBarrel_length + TrackerBarrelInner_length -> TrackerBarrelInside_length </comment> <comment> - -------------------------------------------- - Central tracking and PID detector boundaries - -------------------------------------------- + ## Central tracking and PID detector boundaries The central tracking detectors are assumed to be symmtric about the origin. </comment> - <constant name="BarrelTracking_length" value="TrackerBarrelOuter_length"/> + <constant name="BarrelTracking_length" value="TrackerBarrel_length"/> <constant name="BarrelTracking_rmax" value="TrackerBarrel_rmax"/> <constant name="BarrelTracking_zmax" value="BarrelTracking_length/2.0"/> <constant name="BarrelTrackingAndPID_length" value="BarrelTracking_length "/> - <constant name="BarrelTrackingAndPID_rmax" value="BarrelTracking_rmax + BarrelExtraPIDThickness"/> + <constant name="BarrelTrackingAndPID_rmax" value="BarrelTracking_rmax + BarrelPIDThickness"/> <constant name="CentralTracking_length" value="BarrelTracking_length + ForwardTracking_length + BackwardTracking_length"/> <constant name="CentralTracking_rmax" value="TrackerBarrel_rmax"/> <comment> These are used by ddsim </comment> - <constant name="tracker_region_rmax" value="Solenoid_rmax/2.0"/> - <constant name="tracker_region_zmax" value="Solenoid_length/2.0"/> + <constant name="tracker_region_rmax" value="CentralTracking_rmax"/> + <constant name="tracker_region_zmax" value="CentralTracking_length/2.0"/> - <comment> - ---------------------- - Calorimeter Parameters - ---------------------- + <documentation level="0"> + ## Calorimeter Parameters - Note on paramaeterization + ### Note on paramaeterization The HCal Barrel is outside of the solenoid magnet. However, there is an option to add some HCal barrel inside the magnet but this @@ -477,12 +473,12 @@ The space for the calorimeters inside the solenoid is assumed to be fixed by the solenoid inner diameter/length and by the central tracking and PID outer diameter/length. - Endcaps + ### Endcaps The extra HCal endcap lengths are for offsetting the outside endcap surface (zmax) from the end of the solenoid coils. - </comment> + </documentation> <comment> these offesets could be implemented differently for clarity. </comment> <constant name="EcalEndcapPSolenoid_offset" value="800.0*mm" /> @@ -503,11 +499,11 @@ <constant name="EcalEndcapP_zmin" value="BarrelTracking_length/2.0 + ForwardTracking_length + ForwardPIDLength"/> <constant name="EcalEndcapN_zmin" value="BarrelTracking_length/2.0 + BackwardTracking_length + BackwardPIDLength"/> - <constant name="BarrelLength" value="TrackerBarrelOuter_length + ForwardPIDLength + BackwardPIDLength" /> + <constant name="BarrelLength" value="BarrelTrackingAndPID_length" /> <constant name="Barrel_offset" value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0" /> <comment> - Endcaps + ### Ecal Endcaps </comment> <constant name="EndcapPTotalCal_length" value="(SolenoidYokeEndcapP_zmin + EcalEndcapPSolenoid_offset) - (EcalEndcapP_zmin)"/> @@ -530,11 +526,9 @@ <constant name="HcalEndcapN_rmin" value="EcalEndcapN_rmin"/> <comment> - ------------------------- - EM Calorimeter Parameters - ------------------------- + ## EM Calorimeter Parameters - ## Note about Calormieter parameterization. + ### Note about Calormieter parameterization. The logic goes like this: 1. The space for the calorimeter is fixed via parameterization above. @@ -595,9 +589,7 @@ <constant name="EcalBarrel_offset" value="(CentralTracking_length - EcalBarrel_length)/2.0"/> <comment> - ------------------------------- - Hadronic Calorimeter Parameters - ------------------------------- + ## Hadronic Calorimeter Parameters </comment> <constant name="HcalEndcapP_length" value="120.0*cm"/> @@ -613,140 +605,27 @@ <constant name="HcalEndcapN_zmin" value="max(EcalEndcapN_zmin + EcalEndcapN_length, Solenoid_length / 2.0 - Solenoid_offset) "/> <constant name="HcalBarrelLength" value="HcalEndcapP_zmin + HcalEndcapN_zmin "/> - <comment> Material Thickness </comment> + <comment> #### Material Thickness </comment> <constant name="HcalSteelThickness" value="1.89 * cm"/> <constant name="HcalPyrexThickness" value="1.10 * mm"/> <constant name="HcalRPCGasThickness" value="1.20 * mm"/> <constant name="HcalG10Thickness" value="3.00 * mm"/> <constant name="HcalAirThickness" value="1.60 * mm"/> - <comment> Single Layer Thickness (for both barrel and endcap)</comment> + <comment> - Single Layer Thickness (for both barrel and endcap)</comment> <constant name="HcalSingleLayerThickness" value="HcalSteelThickness + (2 * HcalPyrexThickness) + HcalRPCGasThickness + HcalG10Thickness + HcalAirThickness"/> - <comment> Hcal Barrel Layers and computed Thickness </comment> + <comment> - Hcal Barrel Layers and computed Thickness </comment> <constant name="HcalBarrelLayer_NRepeat" value="floor(HcalBarrelAvailThickness / HcalSingleLayerThickness)"/> <constant name="HcalBarrelThickness" value="HcalBarrelLayer_NRepeat * HcalSingleLayerThickness"/> - <comment> Hcal Endcap Layers and computed Thickness </comment> + <comment> - Hcal Endcap Layers and computed Thickness </comment> <constant name="HcalEndcapPLayer_NRepeat" value="floor(HcalEndcapP_length / HcalSingleLayerThickness)"/> <constant name="HcalEndcapNLayer_NRepeat" value="floor(HcalEndcapN_length / HcalSingleLayerThickness)"/> <constant name="HcalEndcapP_thickness" value="HcalEndcapPLayer_NRepeat * HcalSingleLayerThickness"/> <constant name="HcalEndcapN_thickness" value="HcalEndcapNLayer_NRepeat * HcalSingleLayerThickness"/> - <comment> - ---------------------- - DIRC parameters - ---------------------- - </comment> - <constant name="DIRCLength" value="CentralTracking_length + BackwardPIDLength"/> - <constant name="DIRCOffset" value="(CentralTracking_length - DIRCLength)/2.0"/> - <constant name="DIRCRadius" value="83.65*cm"/> - <constant name="DIRCBars_DX" value="1.7*cm"/> - <constant name="DIRCBars_DY" value="42.*cm"/> - <constant name="DIRCNum" value="2*Pi*DIRCRadius/DIRCBars_DY"/> - <constant name="DIRCDPhi" value="DIRCBars_DY/DIRCRadius"/> - - - <comment> - ---------------------- - Zero Degree Parameters - ---------------------- - </comment> - <comment> BeamLines: IP6 </comment> - <constant name="ffi_ZDC_z_pos" value="3800.0 * cm"/> - <constant name="ffi_ZDC_x_pos" value="ffi_ZDC_z_pos * ionCrossingAngle"/> <comment> original value="90.0 * cm" </comment> - <constant name="ffi_ZDC_y_pos" value="0.0 * cm"/> - <constant name="ffi_ZDC_rotateX_angle" value="0.0 * rad"/> - <constant name="ffi_ZDC_rotateY_angle" value="-0.0125 * rad"/> - <constant name="ffi_ZDC_rotateZ_angle" value="0.0 * rad"/> - - <comment> BeamLines: IP8 </comment> - <!-- - <constant name="ffi_ZDC_x_pos" value="127.0 * cm"/> - <constant name="ffi_ZDC_y_pos" value="0.0 * cm"/> - <constant name="ffi_ZDC_z_pos" value="3600.0 * cm"/> - <constant name="ffi_ZDC_rotateX_angle" value="0.0 * rad"/> - <constant name="ffi_ZDC_rotateY_angle" value="-0.025 * rad"/> - <constant name="ffi_ZDC_rotateZ_angle" value="0.0 * rad"/> - --> - - <comment> Global parameters </comment> - <constant name="ffi_ZDC_width" value="60.0 * cm"/> - <constant name="ffi_ZDC_thickness" value="200.0 * cm"/> - <comment> Original Global parameters </comment> - <!-- - <constant name="ffi_ZDC_thickness" value="250.0 * cm"/> - --> - <constant name="ffi_ZDC_ECAL_thickness" value="30.0 * cm"/> - <constant name="ffi_ZDC_ECAL_inner_radius" value="0.0 * cm"/> - <constant name="ffi_ZDC_ECAL_outer_radius" value="60.0 * cm"/> - <constant name="ffi_ZDC_ECAL_width" value="5.0 * cm"/> - <constant name="ffi_ZDC_ECAL_gap" value="5.0 * mm"/> - <constant name="ffi_ZDC_ECAL_ntower" value="10"/> - <comment> Original number of towers parameter </comment> - <!-- - <constant name="ffi_ZDC_ECAL_ntower" value="20"/> - --> ->>>>>>> 8c0ea6ff318b7d28c2c1554f70fe003a2949c34b - - <comment> - ----------------------- - Gaseous RICH Parameters - ----------------------- - </comment> - - - <comment> - -------------------------- - Forward Tracker Parameters - -------------------------- - </comment> - - <comment> - -------------------------- - Forward ECal Parameters - -------------------------- - </comment> - - <comment> - -------------------------- - Forward HCal Parameters - -------------------------- - </comment> - - - - - <comment> - -------------------------- - Central Ion HCal Parameters - -------------------------- - </comment> - <constant name="ci_HCAL_rin" value="90 * cm"/><comment> Orginally 0, changed to not overlap solenoid </comment> - <constant name="ci_HCAL_rout" value="300 * cm"/> - <constant name="ci_HCAL_sizez" value="160 * cm"/> - <constant name="ci_HCAL_shiftz" value="5 * cm"/> - <constant name="ci_HCAL_posz" value="0 * cm"/> - - <constant name="ci_HCAL_nlayers" value="20"/> - <constant name="ci_HCAL_lay_rin" value="ci_HCAL_rin"/> <comment> Orginally 80cm, changed to not overlap solenoid </comment> - <constant name="ci_HCAL_lay_rout" value="ci_HCAL_rout - 1 * cm"/> - <constant name="ci_HCAL_lay_thickness" value="2* cm"/> - <constant name="ci_HCAL_lay_gapz" value="2* cm"/> - - <comment> - -------------------------- - Central Ion GEM Parameters - -------------------------- - </comment> - <constant name="ci_GEM_rin" value="10 * cm"/> - <constant name="ci_GEM_rout" value="95 * cm"/> - <constant name="ci_GEM_sizez" value="30 * cm"/> - <constant name="ci_GEM_shiftz" value="0 * cm"/> - <constant name="ci_GEM_posz" value="0 * cm"/> - <constant name="ci_GEM_posx" value="0 * cm"/> - <constant name="ci_GEM_nlayers" value="8"/> </define> diff --git a/compact/dirc.xml b/compact/dirc.xml new file mode 100644 index 0000000000000000000000000000000000000000..42deb8241349a0eba6be5d287d87cf10976c5b3a --- /dev/null +++ b/compact/dirc.xml @@ -0,0 +1,66 @@ +<lccdd> + + <comment>Initial implementation of the Athena Detector + DIRC (ported from g4e). Currently constructed around + a fixed radius of 83.65cm (between the uRWEL layers). + TODO: this needs to be properly parameterized. + </comment> + + <define> + <comment> + ### DIRC parameters + </comment> + <constant name="DIRC_length" value="CentralTracking_length + BackwardPIDLength"/> + <constant name="DIRC_offset" value="(CentralTracking_length - DIRC_length)/2.0"/> + + <constant name="DIRC_rmin" value="83.65*cm"/> + <constant name="DIRCBars_DX" value="1.7*cm"/> + <constant name="DIRCBars_DY" value="42.*cm"/> + <constant name="DIRCNum" value="2*Pi*DIRC_rmin/DIRCBars_DY"/> + <constant name="DIRCDPhi" value="DIRCBars_DY/DIRC_rmin"/> + + <constant name="DIRC_rmin" value="82.00*cm"/> + <constant name="DIRC_rmax" value="88.00*cm"/> + </define> + + <limits> + </limits> + + <regions> + </regions> + + <display> + </display> + + <detectors> + <detector id="BarrelDIRC_ID" name="DIRC" type="DIRC" readout="DIRCHits" vis="AnlTeal"> + <dimensions rmin="DIRC_rmin" rmax="DIRC_rmax" length="DIRC_length" radius="DIRC_rmin" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/> + <position x="0" y="0" z="DIRC_offset"/> + <module name="Module0" R="DIRC_rmin" phi="0*DIRCDPhi" /> + <module name="Module1" R="DIRC_rmin" phi="1*DIRCDPhi" /> + <module name="Module2" R="DIRC_rmin" phi="2*DIRCDPhi" /> + <module name="Module3" R="DIRC_rmin" phi="3*DIRCDPhi" /> + <module name="Module4" R="DIRC_rmin" phi="4*DIRCDPhi" /> + <module name="Module5" R="DIRC_rmin" phi="5*DIRCDPhi" /> + <module name="Module6" R="DIRC_rmin" phi="6*DIRCDPhi" /> + <module name="Module7" R="DIRC_rmin" phi="7*DIRCDPhi" /> + <module name="Module8" R="DIRC_rmin" phi="8*DIRCDPhi" /> + <module name="Module9" R="DIRC_rmin" phi="9*DIRCDPhi" /> + <module name="Module10" R="DIRC_rmin" phi="10*DIRCDPhi" /> + <module name="Module11" R="DIRC_rmin" phi="11*DIRCDPhi" /> + </detector> + </detectors> + + <readouts> + <readout name="DIRCHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" /> + <id>system:8,barrel:3,module:12,x:32:-16,y:-16</id> + </readout> + </readouts> + + <plugins> + </plugins> + + <fields> + </fields> +</lccdd> diff --git a/compact/materials.xml b/compact/materials.xml index 47eaeb078819bf85964007834d1a811ebeeee0c3..494cebffbeac02540533c708f9b1a5aa9dfeebf7 100644 --- a/compact/materials.xml +++ b/compact/materials.xml @@ -100,6 +100,10 @@ <fraction n="0.0278" ref="SodiumOxide"/> <fraction n="0.0050" ref="ArsenicOxide"/> </material> + <documentation level="3"> + #### Carbon fiber + a level 3 doc + </documentation> <material name="CarbonFiber"> <D type="density" value="1.5" unit="g/cm3"/> <fraction n="0.65" ref="C"/> diff --git a/compact/optical_materials.xml b/compact/optical_materials.xml index fec77a672343420030f6f54e3a071a12fb63ab4e..75daac07776c820bc5965bea763a7ecafa6957ba 100644 --- a/compact/optical_materials.xml +++ b/compact/optical_materials.xml @@ -88,15 +88,11 @@ </material> </materials> <surfaces> - <comment> For the values of "finish", model and type, see TGeoOpticalSurface.h ! - </comment> - <opticalsurface finish="polished" model="glisur" name="MirrorOpticalSurface" type="dielectric_metal" value="0"> <property name="REFLECTIVITY" ref="REFLECTIVITY_mirror"/> <property name="RINDEX" coldim="2" values="1.034*eV 1.5 4.136*eV 1.5"/> <!--<property name="EFFICIENCY" ref="EFFICIENCY0x8b77240"/>--> </opticalsurface> - <!-- <opticalsurface name="mirror2" finish="polished" model="glisur" type="dielectric_dielectric"> <property name="REFLECTIVITY" coldim="2" values="1.034*eV 0.8 4.136*eV 0.9"/> diff --git a/src/cb_DIRC.cpp b/src/DIRC_geo.cpp similarity index 98% rename from src/cb_DIRC.cpp rename to src/DIRC_geo.cpp index 9a68f093d3da212b14649859dfed5bb489feeac4..160b022a9b37c3ed8b68d667cda1dcc68cdbcf17 100644 --- a/src/cb_DIRC.cpp +++ b/src/DIRC_geo.cpp @@ -68,4 +68,4 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens) return det; } -DECLARE_DETELEMENT(cb_DIRC, createDetector) +DECLARE_DETELEMENT(DIRC, createDetector)