Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • drich-two-mirrors
  • 148-hcal-geometry-development
  • 144-irt-geometry
  • master
  • deathvalley-acts-dd4hep-plugin
  • canyonlands-acts-dd4hep-plugin
  • adjust-barrel-emcalo-geometry
  • 148-hcal-geometry-development-wdconinc-suggestion
  • WorkingGemTrd_MLmodel_andAnalysis
  • 144-test-small-sensor-overlap
  • 59-detailed-forward-gem-trd
  • vdesai-master-patch-09582
  • mriganka-branch02
  • zdemirog-master-patch-64142
  • weibin-master-patch-37475
  • vanekjan-master-patch-74522
  • lkosarzew-master-patch-25029
  • swapneshkhade-master-patch-16755
  • mlavinsky-master-patch-10431
  • niveditharam-master-patch-05822
  • shyam.kumar-master-patch-48113
  • wdconinc-master-patch-02076
  • 149-dump-geometry-ci-job-should-also-produce-ff-geometry-separately
  • 59-detailed-forward-gem-trd-2
  • 147-fix-dirc-overlaps-and-make-it-great-again
  • test-drich-tracker
  • deathvalley
  • zji-ScFiCal
  • deathvalley-1.5T
  • irt-init-v01
  • tmp_viz
  • test_tof_zy
  • canyonlands
  • update_becal_nlayers
  • 131-update-tof-for-canyonlands
  • zdc_prim_fix
  • rich-photos
  • backward_ecal_cleanup
  • 134-make-new-3d-views-of-ff-region-and-detectors
  • sly2j-master-patch-62318
  • vis_dirc
  • acadia
  • 126-improved-gem-rings
  • irt-erich
  • calo-digitization-json
  • calibrations-ecal-hcal
  • 116-fix-the-detector-views
  • acts_surface_binning
  • 98-update-barrel-and-endcap-tof
  • 104-add-realistic-cooling-for-gridpix
  • 42-grid-pix-pid-detector
  • 101-north-ecal-add-modules-around-beampipe
  • cherry-pick-ee231e50
  • cherry-pick-85aaf29d
  • optional_full_overlap_check
  • documentation_tag
  • lengthen_ecalbarrel
  • debug-vis
  • drich-optics-tests
  • 81-add-barrel-ecal-projection-at-positive-eta
  • line_drawing
  • 56-astropix-sampling-fraction-test-2
  • overlap_child_pipeline
  • remove_comment
  • acts_vertex_barrel
  • b0_acts
  • test
  • drich-space-update
  • 37-place-sifi-fibers-in-the-assembly-in-ecal-barrel
  • barrel-tracker-simplified
  • 53-acts-geometry-bug-outer-tracker-barrel
  • 54-dirc-better-parametrization
  • vis_ref
  • sphere_tests
  • sphere-issue
  • baseline-dimensions-rich-thickness
  • outer_tracker_fix
  • 38-mm-tracker-implementation
  • vis_check
  • 40-quick-viz
  • ecal-hcal-endcap-bore-and-length
  • add_segmentation
  • AllieWeary-master-patch-33350
  • 23-add-barrel-tof
  • hcal
  • 21-electron-endcap-ecal-glass-outer-ring-implementation-needed-2
  • 24-tweak-zdc-longitudinal-size
  • tmp_view
  • 12-job-failed-106994
  • module_frame
  • 7-central-tracker-endcap-detail
  • 9-detector-plugin-for-w-scfi-calorimeter-layers
  • hcal-klm
  • default_visibilities
  • testBranchRobin
  • acadia-v1.0
  • acadia-v1.0-alpha
  • acadia-v1.1
  • acadia-v2.0
  • acadia-v2.1
  • canyonlands-v1.0
  • canyonlands-v1.1
  • canyonlands-v1.2
  • canyonlands-v2.0
  • canyonlands-v2.1
  • canyonlands-v2.2
  • deathvalley-v1.0
  • deathvalley-v1.0-1.5T
  • deathvalley-v1.1
  • v0.1.0
  • v0.2.0
111 results

Target

Select target project
No results found
Select Git revision
  • 59-detailed-forward-gem-trd
  • master
  • 147-fix-dirc-overlaps-and-make-it-great-again
  • test-drich-tracker
  • 144-irt-geometry
  • deathvalley
  • drich-two-mirrors
  • zji-ScFiCal
  • deathvalley-1.5T
  • irt-init-v01
  • tmp_viz
  • test_tof_zy
  • canyonlands
  • update_becal_nlayers
  • 131-update-tof-for-canyonlands
  • zdc_prim_fix
  • rich-photos
  • backward_ecal_cleanup
  • 134-make-new-3d-views-of-ff-region-and-detectors
  • sly2j-master-patch-62318
  • vis_dirc
  • acadia
  • 126-improved-gem-rings
  • irt-erich
  • calo-digitization-json
  • calibrations-ecal-hcal
  • 116-fix-the-detector-views
  • acts_surface_binning
  • 98-update-barrel-and-endcap-tof
  • 104-add-realistic-cooling-for-gridpix
  • 42-grid-pix-pid-detector
  • 101-north-ecal-add-modules-around-beampipe
  • cherry-pick-ee231e50
  • cherry-pick-85aaf29d
  • optional_full_overlap_check
  • documentation_tag
  • lengthen_ecalbarrel
  • debug-vis
  • drich-optics-tests
  • 81-add-barrel-ecal-projection-at-positive-eta
  • line_drawing
  • 56-astropix-sampling-fraction-test-2
  • overlap_child_pipeline
  • remove_comment
  • acts_vertex_barrel
  • b0_acts
  • test
  • drich-space-update
  • 37-place-sifi-fibers-in-the-assembly-in-ecal-barrel
  • barrel-tracker-simplified
  • 53-acts-geometry-bug-outer-tracker-barrel
  • 54-dirc-better-parametrization
  • vis_ref
  • sphere_tests
  • sphere-issue
  • baseline-dimensions-rich-thickness
  • outer_tracker_fix
  • 38-mm-tracker-implementation
  • vis_check
  • 40-quick-viz
  • ecal-hcal-endcap-bore-and-length
  • add_segmentation
  • AllieWeary-master-patch-33350
  • 23-add-barrel-tof
  • hcal
  • 21-electron-endcap-ecal-glass-outer-ring-implementation-needed-2
  • 24-tweak-zdc-longitudinal-size
  • tmp_view
  • 12-job-failed-106994
  • module_frame
  • 7-central-tracker-endcap-detail
  • 9-detector-plugin-for-w-scfi-calorimeter-layers
  • hcal-klm
  • default_visibilities
  • testBranchRobin
  • acadia-v1.0
  • acadia-v1.0-alpha
  • acadia-v1.1
  • acadia-v2.0
  • acadia-v2.1
  • canyonlands-v1.0
  • canyonlands-v1.1
  • canyonlands-v1.2
  • canyonlands-v2.0
  • canyonlands-v2.1
  • canyonlands-v2.2
  • deathvalley-v1.0
  • deathvalley-v1.0-1.5T
  • deathvalley-v1.1
  • v0.1.0
  • v0.2.0
91 results
Show changes

Commits on Source 215

115 additional commits have been omitted to prevent performance issues.
150 files
+ 70694
3651
Compare changes
  • Side-by-side
  • Inline

Files

+7 −0
Original line number Diff line number Diff line
@@ -22,3 +22,10 @@ ip6

*.swp

fieldmaps

manifest.txt
acts.txt
acts2.txt

materials-map.cbor
+108 −52
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ workflow:
    - if: '$CI_PIPELINE_SOURCE == "web"'
    - if: '$CI_PIPELINE_SOURCE == "webide"'
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$CI_COMMIT_BRANCH == "acadia"'
    - if: '$CI_COMMIT_TAG'

default:
@@ -30,10 +31,9 @@ default:

stages:
  - config
  - initialize
  - build
  - docs
  - test
  - docs
  - collect
  - finalize 
  - deploy
@@ -47,7 +47,7 @@ common:setup:
  script:
    - export JUGGLER_DETECTOR="athena"
    - |
      if [[ "x${CI_PIPELINE_SOURCE}" == "xmerge_request_event"  || "$CI_COMMIT_BRANCH" == "master" ]]; then
      #      if [[ "x${CI_PIPELINE_SOURCE}" == "xmerge_request_event"  || "$CI_COMMIT_BRANCH" == "master" ]]; then
        export JUGGLER_DETECTOR_VERSION="${CI_COMMIT_REF_NAME}"
        echo "BEAMLINE_CONFIG          = ${BEAMLINE_CONFIG}"
        echo "BEAMLINE_CONFIG_VERSION  = ${BEAMLINE_CONFIG_VERSION}"
@@ -55,41 +55,42 @@ common:setup:
        echo "JUGGLER_DETECTOR_VERSION = ${CI_COMMIT_REF_NAME}"
        echo "JUGGLER_DETECTOR_VERSION=$CI_COMMIT_REF_NAME" >> juggler.env
        echo "JUGGLER_DETECTOR=$JUGGLER_DETECTOR" >> juggler.env
      fi
        #fi
    - source setup/bin/env.sh && ./setup/bin/install_common.sh

common:detector:
  stage: initialize
  needs: ["common:setup"]
  stage: build
  needs: 
    - common:setup
  script:
    - source .local/bin/env.sh && build_detector.sh
    - mkdir_local_data_link sim_output
    #- source .local/bin/env.sh && build_detector.sh
    - build_detector.sh
    - mkdir -p results
    - mkdir -p config
    - mkdir -p doc
    - mkdir -p geo
    - print_env.sh

compile:
build:simple:
  stage: build
  needs:
    - ["common:detector"]
  script:
    - mkdir -p build && cd build && cmake ../. -DCMAKE_INSTALL_PREFIX=/usr/local && make -j20 && make install  && cd ..
    - echo "Build successful."


.views:
  stage: docs
  tags:
    - phy-scratch
  before_script:
    - source .local/bin/env.sh
    - sed -i "s?<support inside?<\!--support inside?" compact/ecal_barrel.xml
    - sed -i "s?</support>?</support-->?" compact/ecal_barrel.xml
    - echo $DETECTOR_PATH
    - cp compact/ecal_barrel.xml ${DETECTOR_PATH}/compact/ecal_barrel.xml
    - env
    - pip3 install psutil
  needs:
    - ["common:detector"]

include:
  - local: 'views/generate_prim_files.yml'
  - local: 'views/view1.yml'
  - local: 'views/view2.yml'
  - local: 'views/view3.yml'
@@ -100,6 +101,7 @@ include:
  - local: 'views/view13.yml'
  - local: 'views/view14.yml'
  - local: 'views/view15.yml'
  - local: 'views/view20.yml'

dump_geometry:
  stage: test
@@ -107,13 +109,59 @@ dump_geometry:
    - common:detector
  script:
    - echo "dumping geometry"
    ## DEBUG
    - echo "LD_LIBRARY_PATH - $LD_LIBRARY_PATH"
    - echo "PATH - $PATH"
    - print_env.sh
    ## DEBUG
    - mkdir -p geo
    - |
      sed -i -e '/<detectors>/,/<\/detectors>/d' ${DETECTOR_PATH}/compact/tracking_config*.xml
      mv ${DETECTOR_PATH}/compact/display_geoviewer.xml ${DETECTOR_PATH}/compact/display.xml
      for xml in ${DETECTOR_PATH}/compact/subsystem_views/*.xml; do
        echo $xml
        geo_name=`basename $xml .xml`_geo.root
        cp $xml ${DETECTOR_PATH}/geo.xml
        dd_web_display --output geo/${geo_name} ${DETECTOR_PATH}/geo.xml
      done
    ## Lower-resolution display of the pfRICH sensors for global views
    - sed -i 's/_default"\/>/_lores"\/>/' ${DETECTOR_PATH}/compact/pfrich.xml
    ## full geo with downstream beamline
    - dd_web_display --output geo/detector_geo_full.root ${DETECTOR_PATH}/athena.xml
    ## only central detector geo
    - sed -i '/forward_ion_beamline/d' ${DETECTOR_PATH}/athena.xml
   - sed -i '/far_forward/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/beampipe_hadron_B0/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/B0_/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/far_forward_offM/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/far_forward_detectors/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/roman_pots/d' ${DETECTOR_PATH}/athena.xml
    - sed -i '/inner_vacuum_FF_magnets/d' ${DETECTOR_PATH}/athena.xml
    - dd_web_display --output geo/detector_geo.root ${DETECTOR_PATH}/athena.xml
    ## print some useful output
    - |
      echo "Geometry viewer at:"
      echo "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=clipx;clipy;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all"
      echo " - Central detector view at: "
      echo "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.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom120;ROTY320;ROTZ340;trz0;trr0;ctrl;all"
      for xml in ${DETECTOR_PATH}/compact/subsystem_views/*.xml; do
        geo_name=`basename $xml .xml`_geo.root
        echo " - Subsystem view for `basename $xml .xml` at:"
        echo "   https://eic.phy.anl.gov/geoviewer/index.htm?file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/${CI_JOB_ID}/artifacts/raw/geo/${geo_name}?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY320;ROTZ340;trz0;trr0;ctrl;all"
      done

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/definitions.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
@@ -128,12 +176,14 @@ report:
    - view_13
    - view_14
    - view_15
    - view_20
    - dump_constants
    - dump_geometry
    - convert_to_gdml
    - dump_gdml
  script:
    - pip3 install jinja2 &&  ls -lrth
    - ./bin/make_images > doc/dawn_views.md
    - 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=finalize&item=default;1&opt=clipxyz;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&"

dump_constants:
  stage: test
@@ -147,34 +197,61 @@ overlap_check_tgeo:
  needs: 
    - ["common:detector"]
  script:
    ## disable fibers in ECAL for normal overlap check
    - sed -i '/<fiber/,+6d' ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward/ZDC_Ecal_WSciFi.xml
    - checkOverlaps -c ${DETECTOR_PATH}/athena.xml  | tee doc/overlap_check_tgeo.out 
    - echo "$(cat doc/overlap_check_tgeo.out | grep ovlp | wc -l) overlaps..."
    - if [[ "$(cat doc/overlap_check_tgeo.out | grep ovlp | wc -l)" -gt "0" ]] ; then echo "Overlaps exist!" && false ; fi

overlap_check_geant4:
overlap_check_geant4:full_fast:
  stage: test
  needs: 
    - ["common:detector"]
  script:
    ## disable fibers in ECAL for normal overlap check
    - sed -i '/<fiber/,+6d' ${DETECTOR_PATH}/compact/ecal_barrel_interlayers.xml
    - sed -i '/<fiber/,+4d' ${DETECTOR_PATH}/ip6/far_forward/ZDC_Ecal_WSciFi.xml
    ## reduce the number of fibers in Hadron EMCal for overlap check
    ## not needed, as we are running with a different setup now
    #- sed -i 's/radius="EcalEndcapP_FiberRadius"/radius="EcalEndcapP_FiberRadius*10"/' ${DETECTOR_PATH}/compact/ci_ecal_scfi.xml
    - python scripts/checkOverlaps.py -c ${DETECTOR_PATH}/athena.xml | tee doc/overlap_check_geant4.out
    - echo "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l) overlaps..."
    - if [[ "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l)" -gt "0" ]] ; then echo "Overlaps exist!" && false ; fi

convert_to_gdml:
## TODO: add real full overlap check as child pipeline to run on branches only

overlap_check_geant4:inner_detector:
  stage: test
  needs: 
    - ["common:detector"]
  script:
    - cp ${DETECTOR_PATH}/compact/subsystem_views/inner_detector.xml ${DETECTOR_PATH}/inner_detector.xml
    - python scripts/checkOverlaps.py -c ${DETECTOR_PATH}/inner_detector.xml | tee doc/overlap_check_geant4.out
    - echo "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l) overlaps..."
    - if [[ "$(cat doc/overlap_check_geant4.out | grep GeomVol1002 | wc -l)" -gt "0" ]] ; then echo "Overlaps exist!" && false ; fi

dump_gdml:
  stage: test
  needs: 
    - ["common:detector"]
  script:
    - mkdir -p geo
    - python scripts/convert_to_gdml.py --compact ${DETECTOR_PATH}/athena.xml --output geo/athena.gdml
    - |
      python scripts/convert_to_gdml.py --compact ${DETECTOR_PATH}/athena.xml --output geo/athena.gdml
      for xml in ${DETECTOR_PATH}/compact/subsystem_views/*.xml; do
        cp $xml ${DETECTOR_PATH}/geo.xml
        gdml_name=`basename $xml .xml`.gdml
        python scripts/convert_to_gdml.py --compact ${DETECTOR_PATH}/geo.xml --output geo/${gdml_name}
      done

tracking_geometry_debug:
  stage: test
  allow_failure: true
  needs: 
    - ["common:detector"]
  script:
    - root -b -q "scripts/test_ACTS.cxx+(\"${DETECTOR_PATH}/athena.xml\")" | tee geo/tracking_geometry_debug.out 
    - ./bin/acts_geo_check geo/tracking_geometry_debug.out

detector:config_testing:
  stage: test
@@ -192,27 +269,6 @@ benchmarks:detector:
  trigger:
    project: EIC/benchmarks/detector_benchmarks
    strategy: depend
  needs: ["overlap_check_tgeo","overlap_check_geant4","report"]


    #benchmarks:reconstruction:
    #  stage: deploy
    #  variables:
    #    JUGGLER_DETECTOR: "$JUGGLER_DETECTOR"
    #    JUGGLER_DETECTOR_VERSION: "$JUGGLER_DETECTOR_VERSION"
    #  trigger:
    #    project: EIC/benchmarks/reconstruction_benchmarks
    #    strategy: depend
    #  needs: ["env","overlap_check_tgeo","overlap_check_geant4","report"]
    #  
    #
    #benchmarks:physics:
    #  stage: deploy
    #  variables:
    #    JUGGLER_DETECTOR: "$JUGGLER_DETECTOR"
    #    JUGGLER_DETECTOR_VERSION: "$JUGGLER_DETECTOR_VERSION"
    #  trigger:
    #    project: EIC/benchmarks/physics_benchmarks
    #    strategy: depend
    #  needs: ["env","overlap_check_tgeo","overlap_check_geant4","report"]
  needs: 
    - overlap_check_geant4:full_fast
    - common:detector
+53 −6
Original line number Diff line number Diff line
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

# CMP0074: find_package() uses <PackageName>_ROOT variables
cmake_policy(SET CMP0074 NEW)

PROJECT(athena
  VERSION 0.0.1
  LANGUAGES CXX
@@ -6,20 +10,51 @@ PROJECT(athena
  )

set(CMAKE_CXX_STANDARD 17)
find_package( DD4hep REQUIRED COMPONENTS DDCore DDG4 )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")

find_package(DD4hep REQUIRED COMPONENTS DDCore DDG4)
find_package(ActsDD4hep)
if(ActsDD4hep_FOUND)
  add_compile_definitions(USE_ACTSDD4HEP)
  set(ActsDD4hep ActsDD4hep::ActsDD4hep)
else()
  find_package(Acts REQUIRED COMPONENTS Core PluginIdentification PluginTGeo PluginDD4hep)
  set(ActsDD4hep ActsCore ActsPluginDD4hep)
endif()
find_package(fmt REQUIRED)

#-----------------------------------------------------------------------------------
set(a_lib_name athena)

dd4hep_configure_output()

dd4hep_add_plugin(${a_lib_name} SOURCES src/*.cpp
          USES ActsCore ActsPluginDD4hep
dd4hep_add_plugin(${a_lib_name} SOURCES 
  src/BarrelBarDetectorWithSideFrame_geo.cpp
  src/BarrelCalorimeter_geo.cpp
  src/BarrelCalorimeterInterlayers_geo.cpp
  src/BarrelTrackerWithFrame_geo.cpp
  src/CompositeTracker_geo.cpp
  src/CylinderTrackerBarrel_geo.cpp
  src/DIRC_geo.cpp
  src/DRICH_geo.cpp
  src/PFRICH_geo.cpp
  src/FileLoader.cpp
  src/FieldMapBrBz.cpp
  src/GaseousRICH_geo.cpp
  src/GeometryHelpers.cpp
  src/HomogeneousCalorimeter_geo.cpp
  src/HybridCalorimeter_geo.cpp
  src/MRich_geo.cpp
  src/PolyhedraEndcapCalorimeter2_geo.cpp
  src/ScFiCalorimeter_geo.cpp
  src/ShashlikCalorimeter_geo.cpp
  src/SimpleDiskDetector_geo.cpp
  src/SolenoidCoil_geo.cpp
  src/TrapEndcapTracker_geo.cpp
  USES ${ActsDD4hep}
  )
target_link_libraries(${a_lib_name}
  PUBLIC DD4hep::DDCore  DD4hep::DDRec
  PUBLIC DD4hep::DDCore DD4hep::DDRec fmt::fmt
  )

#-----------------------------------------------------------------------------------
@@ -28,3 +63,15 @@ install(DIRECTORY compact/
    DESTINATION share/${PROJECT_NAME}/${a_lib_name}
    FILES_MATCHING PATTERN "*.xml"
    )
install(DIRECTORY compact/
    DESTINATION share/${PROJECT_NAME}/compact
    FILES_MATCHING PATTERN "*.xml"
    )
install(FILES athena.xml
    DESTINATION share/${PROJECT_NAME}/
    )
#-----------------------------------------------------------------------------------
# Install the detector calibration files.
install(DIRECTORY calibrations/
    DESTINATION share/${PROJECT_NAME}/calibrations
    )
+20 −8
Original line number Diff line number Diff line
@@ -3,22 +3,34 @@ Overview
The Athena Detector at IP6 for Electron-Ion Collider experiment.

**Detector geometry viewer:**
- [Central detector geometry](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/geo/detector_geo.root?job=report&item=default;1&opt=clipxyz;transp30;zoom100;ROTY0;ROTZ0;trz100;trr0;ctrl;all&)
- [Full Detector geometry (including beamline)](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/geo/detector_geo_full.root?job=report&item=default;1&opt=clipxyz;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all&)

<a href="https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/images/view01.pdf?job=report">
<img src="https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/images/view01.png?job=report" width="400px" />
- [Central detector](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/detector_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom120;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
- [Full Detector (including beamline)](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/detector_geo_full.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all)
- [Inner detector (without calorimetry)](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/inner_detector_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
- Subsystem views:
  - [Calorimetry](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/calorimeters_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom120;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
  - [PID](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/pid_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
    - [dRICH](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/drich_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY290;ROTZ350;trz0;trr0;ctrl;all)
    - [pfRICH](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/pfrich_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom55;ROTY49;ROTZ350;trz0;trr0;ctrl;all&)
    - [DIRC](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/dirc_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom120;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
    - [ToF](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/tof_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom55;ROTY49;ROTZ350;trz0;trr0;ctrl;all&)
  - [Tracking](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/tracking_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom75;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
    - [Vertex detector](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/vertex_only_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom120;ROTY320;ROTZ340;trz0;trr0;ctrl;all)
  - [Far-forward](https://eic.phy.anl.gov/geoviewer/index.htm?nobrowser&file=https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/geo/ip6_geo.root?job=dump_geometry&item=default;1&opt=clipx;clipy;transp30;zoom40;ROTY290;ROTZ350;trz0;trr0;ctrl;all)

<a href="https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/images/view01.pdf?job=report">
<img src="https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/images/view01.png?job=report" width="400px" />
</a>

<br />
<a href="https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/images/view01_top.pdf?job=report">
<img src="https://eicweb.phy.anl.gov/api/v4/projects/473/jobs/artifacts/master/raw/images/view01_top.png?job=report" width="400px" />
<a href="https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/images/view01_top.pdf?job=report">
<img src="https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/images/view01_top.png?job=report" width="400px" />
</a>

[Browse latest](https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/browse/images?job=report)

[Detector views](views/detector_views.md)
[Detector views](https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/doc/dawn_views.md?job=report)

[Constants listing](https://eicweb.phy.anl.gov/EIC/detectors/athena/-/jobs/artifacts/master/raw/doc/constants.out?job=report)

Getting Started
---------------
+97 −177
Original line number Diff line number Diff line
@@ -2,94 +2,48 @@
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">

       <debug>
         <type name="surface"       value="0"/>
         <type name="material"      value="0"/>
         <type name="readout"       value="0"/>
         <type name="segmentation"  value="0"/>
         <type name="limits"        value="0"/>
         <type name="region"        value="0"/>
         <type name="includes"      value="0"/>
       </debug>

  <documentation level="-1">
  # Athena Detector 
  - https://eicweb.phy.anl.gov/EIC/detectors/athena.git 
  - https://eicweb.phy.anl.gov/EIC/detectors/ip6.git
  </documentation>

  <!-- Some information about detector  -->
  <info name="Athena Detector" title="Athena Detector"
        author="Jihee Kim, Whitney Armstrong"
        author="Athena Collaboration"
	url="https://eicweb.phy.anl.gov/EIC/detectors/athena.git"
	status="development"
	version="v1 2021-03-16">
    <comment>Athena Detector</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/definitions.xml" /> 
    <include ref="ip6/far_forward/fields_275.xml" />
    <include ref="compact/definitions.xml" />
  </define>

  <properties>
    <matrix name="RINDEX__Vacuum" coldim="2" values="
      1.0*eV 1.0
      5.1*eV 1.0
      "/>
    <matrix name="RINDEX__Air" coldim="2" values="
      1.0*eV 1.00029
      5.1*eV 1.00029
      "/>
    <matrix name="RINDEX__Quartz" coldim="2" values="
      1.0*eV 1.46
      5.1*eV 1.46
      "/>
    <matrix name="RINDEX__N2" coldim="2" values="
      1.0*eV 1.00033
      4.0*eV 1.00033
      5.1*eV 1.00033
      "/>
    <matrix name="RINDEX__Pyrex" coldim="2" values="
      1.0*eV 1.5
      4.0*eV 1.5
      5.1*eV 1.5
      "/>
    <matrix name= "REFLECTIVITY_mirror" coldim="2" values="
      1.0*eV  0.9
      4.0*eV  0.9
      5.1*eV  0.9
    "/>
  </properties>

  <includes>
    <gdmlFile ref="compact/elements.xml"/>
    <gdmlFile ref="compact/materials.xml"/>
    <file     ref="compact/optical_materials.xml"/>
  </includes>

  <materials>
    <material name="AirOptical">
      <D type="density" unit="g/cm3" value="0.0012"/>
      <fraction n="0.754" ref="N"/>
      <fraction n="0.234" ref="O"/>
      <fraction n="0.012" ref="Ar"/>
      <property name="RINDEX" ref="RINDEX__Vacuum"/>
    </material>
    <material name="N2cherenkov">
      <D type="density" value="0.00125" unit="g/cm3"/>
      <composite n="1" ref="N"/>
      <property name="RINDEX"  ref="RINDEX__N2"/>
    </material>
    <material name="PyrexGlass">
      <D type="density" value="2.23" unit="g/cm3"/>
      <fraction n="0.806" ref="SiliconOxide"/>
      <fraction n="0.130" ref="BoronOxide"/>
      <fraction n="0.040" ref="SodiumOxide"/>
      <fraction n="0.023" ref="AluminumOxide"/>
      <property name="RINDEX" ref="RINDEX__Pyrex"/>
    </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"/>
      <property name="EFFICIENCY"              coldim="2" values="2.034*eV  0.8   4.136*eV  1.0"/>
      <property name="RINDEX"                  coldim="2" values="1.034*eV  1.5   4.136*eV  1.5"/>
    </opticalsurface>
  <!-- Define the dimensions of the world volume -->

  </surfaces>
  <limits>
    <limitset name="EICBeamlineLimits">
      <limit name="step_length_max" particles="*" value="1.0" unit="mm" />
@@ -104,118 +58,84 @@
  </limits>

  <display>
  <include ref="compact/colors.xml" />
  <!--include ref="compact/colors2.xml"/-->
  <include ref="compact/display.xml" />
  <!--include ref="compact/display_detailed.xml"/-->
  </display>

  <comment> Include the IP components first </comment>
  <include ref="ip6/forward_ion_beamline.xml"/>
  <include ref="ip6/beampipe.xml"/>

  <detectors>
    <detector id="VertexBarrelSubAssembly_ID" 
      name="VertexBarrelSubAssembly" 
      type="DD4hep_SubdetectorAssembly" 
      vis="TrackerSubAssemblyVis">
      <composite name="VertexBarrel" />
    </detector>
    <detector id="VertexEndcapSubAssembly_ID" 
      name="VertexEndcapSubAssembly" 
      type="DD4hep_SubdetectorAssembly" 
      vis="TrackerSubAssemblyVis">
      <composite name="VertexEndcapN" />
      <composite name="VertexEndcapP" />
    </detector>

    <detector id="TrackerEndcapSubAssembly_Inner_ID"
      name="TrackerSubAssembly_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="TrackerSubAssembly_Outer"
      type="DD4hep_SubdetectorAssembly"
      vis="TrackerSubAssemblyVis">
      <composite name="TrackerBarrel_Outer"/>
      <composite name="TrackerEndcapP_Outer"/>
      <composite name="TrackerEndcapN_Outer"/>
    </detector>
    
    <detector id="TOFSubAssembly_ID"
      name="TOFSubAssembly"
      type="DD4hep_SubdetectorAssembly"
      vis="TOFSubAssemblyVis">
      <composite name="BarrelTOF"/>
      <composite name="ForwardTOF"/>
      <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"/>

  <include ref="compact/central_tracker.xml"/>

  <include ref="compact/tof_barrel.xml"/>
  
  <!--include ref="compact/rwell_tracker_barrel.xml"/-->
  <include ref="compact/cb_DIRC.xml"/>
  <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>

  <documentation level="5">
     ## Main magnet

      Note: When changing magnet, also select dimensions in definitions.xml.
  </documentation>
  <include ref="compact/solenoid.xml"/>

  <documentation level="10">
    ## Central tracking detectors
  </documentation>

  <!--include ref="compact/tracking_config_acadia.xml"/-->
  <!--include ref="compact/tracking_config_canyonlands.xml"/-->
  <include ref="compact/tracking_config_deathvalley.xml"/>

  <documentation level="10">
  ### PID detectors
  </documentation>
  <!--include ref="compact/pid_config_acadia.xml" /-->
  <!--include ref="compact/pid_config_canyonlands.xml" /-->
  <include ref="compact/pid_config_deathvalley.xml" />

  <documentation level="10">
  ## Central calorimetry
  </documentation>
  <include ref="compact/ecal.xml"/>
  <include ref="compact/hcal.xml"/>
  <!--include ref="compact/ce_GEM.xml"/-->
  <!--include ref="compact/gem_tracker_endcap.xml"/-->
  <include ref="compact/ce_mrich.xml"/>
  <include ref="compact/tof_endcap.xml"/>
  <include ref="compact/forward_trd.xml"/>
  <include ref="compact/gaseous_rich.xml"/>

  <include ref="ip6/B0_tracker.xml"/>
  <include ref="ip6/far_forward_offM_tracker.xml"/>
  <include ref="ip6/far_forward_romanpots.xml"/>
  <include ref="ip6/far_forward_detectors.xml"/>
  <documentation level="11">
  ## Far foward detectors
  </documentation>
  <include ref="ip6/central_beampipe.xml"/>

  <documentation level="11">
  ## Far foward detectors
  </documentation>
  <include ref="ip6/far_forward.xml"/>

  <!--
  <include ref="compact/mm_tracker_barrel.xml"/>
  <include ref="compact/cb_VTX_Barrel.xml"/>
  -->
  <documentation level="11">
  ## Far backward detectors
  </documentation>
  <include ref="ip6/far_backward.xml"/>

  <comment>
      FB elements
      -----------
      None (TODO)

      What is FB?
  </comment>

  <readouts>
  </readouts>


</lccdd>

bin/acts_geo_check

0 → 100755
+24 −0
Original line number Diff line number Diff line
#!/bin/bash

logfile=$1

# parse the verobse output of scripts/test_ACTS.cxx
res=0

nlines=$(grep -in error ${logfile} | grep -in D2A_ | wc -l)
if [[ "$nlines" > "0" ]] ; then
  echo " ACTS geometry error: "
  grep -in error ${logfile} | grep -in D2A_ 
  res="1"
fi


nlines=$(grep -in warn ${logfile} | grep -in D2A_ | wc -l)
if [[ "$nlines" > "0" ]] ; then
  echo " ACTS geometry error: "
  grep -in warn ${logfile} | grep -in D2A_ 
  res="1"
fi

exit ${res}
+90 −0
Original line number Diff line number Diff line
#!/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
    # see if there are tags without level attribute
    xmllint --format --xpath '//documentation[not(@level)]' $afile  &> /dev/null 
    if [ "${?}" == "0" ] ; then 
      #echo "DERP"
      levels="${levels} 100"
    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
    # sets the tags without attribute level to 100
    xmllint --format --xpath '//documentation[not(@level)]/text()' ${afile} &> /dev/null 
    if [ "$?" -eq "0" ] ;  then
      if [ "$alevel" -eq "100" ] ; then
        xmllint --format --xpath '//documentation[not(@level)]/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/g' 
      fi
    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
#
+14 −0
Original line number Diff line number Diff line
@@ -99,6 +99,20 @@ do
      shift # past argument
      shift # past value
      ;;
    --light-theta)
      echo "updating drawing to ${2}"
      sed -i '19d' ${DAWN_RUN_DIR}/${OUT_FILE}
      sed -i '19i'${2} ${DAWN_RUN_DIR}/${OUT_FILE}
      shift # past argument
      shift # past value
      ;;
    --light-phi)
      echo "updating drawing to ${2}"
      sed -i '18d' ${DAWN_RUN_DIR}/${OUT_FILE}
      sed -i '18i'${2} ${DAWN_RUN_DIR}/${OUT_FILE}
      shift # past argument
      shift # past value
      ;;
    -i|--input)
      OUT_FILE="$2"
      shift # past argument

bin/debug_mrich

0 → 100755
+8 −0
Original line number Diff line number Diff line
#!/bin/bash

npsim --enableG4GPS \
  --compact athena.xml \
  --runType vis \
  --macro macro/mrich_vis.mac \
  -O derp.root

bin/generate_prim_file

0 → 100755
+164 −0
Original line number Diff line number Diff line
#!/usr/local/bin/python

# same as make_dawn_views but stops at generating the prim file.
# W. Armstrong (ANL), original bash script
# C. Peng (ANL), translate to python and add flexible run time for simulation

import os
import signal
import subprocess
import argparse
import atexit
import time
from datetime import datetime
import fcntl
import psutil


def readline_nonblocking(output):
    fd = output.fileno()
    fl = fcntl.fcntl(fd, fcntl.F_GETFL)
    fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
    try:
        return output.readline()
    except:
        return ''


# arguments
parser = argparse.ArgumentParser()

parser.add_argument('-c', '--compact-file', type=str, dest='compact',
        default=os.path.join(os.environ.get('DETECTOR_PATH', '.'), 'athena.xml'),
        help='Top level compact file for detectors')

parser.add_argument('-s', '--skip', type=int,
        default=0,
        help='Number of events number to skip in the input')

parser.add_argument('-i', '--input', type=str,
        default='scripts/input_data/few_events.hepmc',
        help='Input hepmc file')

parser.add_argument('-o', '--output-dir', type=str, dest='out_dir',
        default='sim_output',
        help='output directory')

parser.add_argument('-D', '--detector-only', action='store_true', dest='detector_only',
        help='only generate the prim files for the detector geometry')

parser.add_argument('-t', '--tag', type=str,dest='file_tag',
        default='view',
        help='Output file tag')

parser.add_argument('--timeout', type=int,
        default=3600,
        help='Timeout in seconds')

parser.add_argument('passthrough', nargs='*')

args = parser.parse_args()

macro = 'macro/dawn_picture.mac' if args.detector_only else 'macro/dawn_picture2.mac'

# raise error if cannot create a temporary working dir
# os.makedirs('dawn_view_tmp', exist_ok=False)
os.makedirs(args.out_dir, exist_ok=True)

# use absolute path so the chdir does not affect them
args.input = os.path.abspath(args.input)
args.out_dir = os.path.abspath(args.out_dir)
args.compact = os.path.abspath(args.compact)
macro = os.path.abspath(macro)

# adjust fiber radius to reduce the number of fibers
compact_dir = os.path.dirname(os.path.realpath(args.compact))
ci_ecal = os.path.join(compact_dir, 'compact', 'ci_ecal_scfi.xml')
os.system('sed -i \'s/radius=\"EcalEndcapP_FiberRadius\"/radius=\"EcalEndcapP_FiberRadius*10\"/\' {}'.format(ci_ecal))

prim_file = 'g4_0000.prim'
dawn_env = os.environ.copy()
dawn_env['DAWN_BATCH'] = 'a'
# sdir = os.path.dirname(os.path.realpath(__file__))

# Using a python warpper such as npsim introduces some problem in managing the subprocess.
# The process1 managed by subprocess will generate another process with proc2_pid = proc1_pid + 1, which will not
# be terminated by terminating or killing the process1.
# In addition, running Geant4 with vis mode will never exit automatically (it waits for input).
# Thus the created process 2 will occupy the system resources.
sim_cmd = ['npsim', '--runType', 'vis',
        '--compact', args.compact,
        '--inputFiles', args.input,
        '--outputFile', 'derp.root',
        '--numberOfEvents', '1',
        '--skipNEvents', str(args.skip),
        '--macroFile', macro]

start = datetime.now()
elapse = datetime.now() - start
last_update = datetime.now()
finished = False

# run simulation
print(' '.join(sim_cmd))
p = subprocess.Popen(args=sim_cmd, env=dawn_env,
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
__child_pid = p.pid
while elapse.seconds < args.timeout:
    line = readline_nonblocking(p.stdout)
    elapse = datetime.now() - start
    time_left = args.timeout - elapse.seconds
    time_str = '[{:02d}:{:02d}]'.format(elapse.seconds // 60, elapse.seconds % 60)

    if time_left < 10:
        print('{} === TIMEOUT ===: Terminating in {:d} seconds'.format(time_str, time_left))

    if line:
        decoded_line = line.decode('utf-8').strip()
        print('{} {}'.format(time_str, decoded_line))
        # what we are looking for
        if decoded_line == 'File  {}  is generated.'.format(prim_file):
            print('{} === FINISHED ===: Got the prim file, terminating.'.format(time_str))
            finished = True
            break
        if decoded_line == 'Idle>':
            p.stdin.write(b'exit')
            break
        # do not sleep
        continue

    # ended early before file
    if p.poll() is not None:
        print(p.poll())
        break

    time.sleep(1)

p.kill()
# use to kill the subprocess generated from the python wrapper
# this is unsafe so maybe more checks required
for proc in psutil.process_iter():
    pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
    if pinfo['pid'] == p.pid + 1 and pinfo['name'] == 'python':
        print('kill {}, generated from {}'.format(pinfo, p.pid))
        os.kill(pinfo['pid'], signal.SIGTERM)

# revert the change
os.system('sed -i \'s/radius=\"EcalEndcapP_FiberRadius*10\"/radius=\"EcalEndcapP_FiberRadius\"/\' {}'.format(ci_ecal))

line = b'stderr outputs:\n'
while line:
    print(line.decode('utf-8'), end='')
    line = readline_nonblocking(p.stderr)

if finished:
    print('Simulation finished')
else:
    print('Simulation failed')
    exit(1)

# move the prim files (which can be quite large)
# to the local pipeline storage path
os.system('mv g4_0000.prim {}/{}.prim'.format(args.out_dir,args.file_tag))

+98 −180
Original line number Diff line number Diff line
#!/bin/bash

#git clone --depth 1 https://eicweb.phy.anl.gov/EIC/datasets.git
export DAWN_PS_PREVIEWER="ls "
export G4DAWNFILE_VIEWER="ls -lrth "
export G4DAWNFILE_PS_VIEWER="ls "

function print_the_help {
  echo "USAGE: ${0} [-s <skip_events>] -d <dawn_run_dir> "
  echo "  OPTIONS: "
  echo "            -D,--detector-only            Only generate the prim files for the detector geometry."
  echo "            -s,--skip <skip_events>       Required run number"
  echo "            -i,--input <input_file>       Input hepmc file"
  echo "            -d,--dawn-dir <dawn_run_dir>  Directory with the .DAWN files and a generate script "
  echo "            -t,--tag <file_tag>           Output file tag"
  exit 
}

function yes_or_no {
  while true; do
    read -p "$* [y/n]: " yn
    case $yn in
      [Yy]*) return 0 ;;
      [Nn]*) echo "No entered" ; return 1 ;;
    esac
  done
}

if [[ $# -eq 0 ]] ; then
  print_the_help
  exit 
fi

SKIP_EVENTS=0
DETECTOR_ONLY=0
FILE_TAG="view"
DAWN_RUN_DIR="scripts/view1"
DETECTOR_FILE="${DETECTOR_PATH}/athena.xml"

POSITIONAL=()
while [[ $# -gt 0 ]]
do
  key="$1"

  case $key in
    -h|--help)
      shift # past argument
      print_the_help
      ;;
    -c|--compact-file)
      DETECTOR_FILE="$2"
      shift # past argument
      shift # past value
      ;;
    -s|--skip)
      SKIP_EVENTS="$2"
      shift # past argument
      shift # past value
      ;;
    -i|--input)
      INPUT_FILE="$2"
      shift # past argument
      shift # past value
      ;;
    -o|--ouput-dir)
      OUTPUT_DIR="$2"
      shift # past argument
      shift # past value
      ;;
    -D|--detector-only)
      DETECTOR_ONLY=1
      shift # past argument
      #shift # past value
      ;;
    -d|--dawn-dir)
      DAWN_RUN_DIR=$2
      shift # past argument
      shift # past value
      ;;
    -t|--tag)
      FILE_TAG=$2
      shift # past argument
      shift # past value
      ;;
    *)    # unknown option
      #POSITIONAL+=("$1") # save it in an array for later
      echo "unknown option $1"
      print_the_help
      shift # past argument
      ;;
  esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters


rm -f *.prim

if [  "${DETECTOR_ONLY}" -eq "1" ] ; then

  ./scripts/run_detector_simulation.py  \
    --compact ${DETECTOR_PATH}/athena.xml \
  -i scripts/input_data/few_events.hepmc \
  -o derp.root -n 1 \
  --ui csh --vis -b -m macro/dawn_picture.mac & 

sleep 10
echo "sleeping 20 secs ..  " 
sleep 10
echo "sleeping 10 secs " 
sleep 5 
echo "sleeping 5 secs " 
sleep 5 
kill %1

else 

  echo " Running simulation for tracks"
./scripts/run_detector_simulation.py \
    --compact ${DETECTOR_PATH}/athena.xml \
  -i scripts/input_data/few_events.hepmc \
  -o derp.root -s ${SKIP_EVENTS} -n 1 \
  --ui csh --vis -b -m macro/dawn_picture2.mac & 

sleep 40 
kill %1

fi

#./scripts/run_detector_simulation.py -i scripts/input_data/few_events.hepmc \
#  -o derp.root -s 2 -n 1 \
#  --ui csh --vis -b -m macro/dawn_picture2.mac & 
#
#sleep 20 
#kill %1

#./scripts/run_detector_simulation.py -i scripts/input_data/few_events.hepmc \
#  -o derp.root -s 5 -n 1 \
#  --ui csh --vis -b -m macro/dawn_picture2.mac & 
#
#sleep 20 
#kill %1
#
#./scripts/run_detector_simulation.py -i scripts/input_data/few_events.hepmc \
#  -o derp.root -s 6 -n 1 \
#  --ui csh --vis -b -m macro/dawn_picture2.mac & 
#
#sleep 20 
#kill %1

[[ -f "g4_0000.prim" ]]  || exit -1

echo "simulating done" 
#npsim --runType vis \
#      -v WARNING \
#      --macroFile macro/dawn_picture.mac \
#      --numberOfEvents 1 \
#      --compactFile topside.xml \
#      --inputFiles scripts/input_data/few_events.hepmc \
#      --outputFile  derp.root \
#      --dumpSteeringFile >> derp.out


ls -lrth
mkdir -p images
#mkdir -p images/prim

pushd ${DAWN_RUN_DIR}

if [  "${DETECTOR_ONLY}" -eq "1" ] ; then
  ./generate_eps -t ${FILE_TAG} -i ../../g4_0000.prim
else 
  ./generate_eps -t ${FILE_TAG} -i ../../g4_0000.prim
fi
ls -lrth

cp *.pdf ../../images/.
cp *.png ../../images/.
#cp *.prim ../../images/prim/.
popd

#!/usr/local/bin/python

# get dawn view of detectors
# W. Armstrong (ANL), original bash script
# C. Peng (ANL), translate to python and add flexible run time for simulation

import os
import signal
import subprocess
import argparse
import atexit
import time
from datetime import datetime
import fcntl
import psutil


def readline_nonblocking(output):
    fd = output.fileno()
    fl = fcntl.fcntl(fd, fcntl.F_GETFL)
    fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
    try:
        return output.readline()
    except:
        return ''


# arguments
parser = argparse.ArgumentParser()

parser.add_argument('-c', '--compact-file', type=str, dest='compact',
        default=os.path.join(os.environ.get('DETECTOR_PATH', '.'), 'athena.xml'),
        help='Top level compact file for detectors')

parser.add_argument('-s', '--skip', type=int,
        default=0,
        help='Number of events number to skip in the input')

parser.add_argument('-i', '--input', type=str, dest='input',
        default='sim_output',
        help='Input hepmc file')

parser.add_argument('-o', '--output-dir', type=str, dest='out_dir',
        default='images',
        help='output directory')

parser.add_argument('-D', '--detector-only', action='store_true', dest='detector_only',
        help='only generate the prim files for the detector geometry')

parser.add_argument('-d', '--dawn-dir', type=str, dest='dawn_dir',
        default='scripts/view1',
        help='Directory to dawn script dir (with .DAWN files and a generate_eps script)')

parser.add_argument('-t', '--tag', type=str,dest='file_tag',
        default='view',
        help='Output file tag')

parser.add_argument('--timeout', type=int,
        default=60,
        help='Timeout in seconds')
        
parser.add_argument('passthrough', nargs='*')

args = parser.parse_args()

macro = 'macro/dawn_picture.mac' if args.detector_only else 'macro/dawn_picture2.mac'

# raise error if cannot create a temporary working dir
# os.makedirs('dawn_view_tmp', exist_ok=False)
os.makedirs(args.out_dir, exist_ok=True)

# use absolute path so the chdir does not affect them
args.input = os.path.abspath(args.input)
args.out_dir = os.path.abspath(args.out_dir)
args.compact = os.path.abspath(args.compact)
macro = os.path.abspath(macro)

prim_file = 'g4_0000.prim'
dawn_env = os.environ.copy()
dawn_env['DAWN_BATCH'] = 'a'
# sdir = os.path.dirname(os.path.realpath(__file__))


# generate DAWN images
out_dir = os.path.abspath(args.out_dir)
input_file = os.path.abspath(args.input)
#prim_file = '{}/{}.prim'.format(input_dir,args.file_tag)
#prim_file = os.path.abspath(prim_file)
owd = os.getcwd()
os.chdir(args.dawn_dir)
subprocess.run(['pwd'])
subprocess.run(['./generate_eps', '-t', args.file_tag, '-i', input_file] + args.passthrough)
subprocess.run(['ls', '-lrth'])

# upload the results
os.system('cp *.pdf {}'.format(out_dir))
os.system('cp *.png {}'.format(out_dir))
os.chdir(owd)
+7 −1
Original line number Diff line number Diff line
@@ -7,9 +7,15 @@ env = Environment(
    autoescape=select_autoescape(['html', 'xml'])
)

import os
import glob

base_url = "https://eicweb.phy.anl.gov/api/v4/projects/390/jobs/artifacts/master/raw"
if "CI_PROJECT_ID" in os.environ:
    CI_PROJECT_ID = str(os.environ["CI_PROJECT_ID"])
else:
    CI_PROJECT_ID = "473"

base_url = f"https://eicweb.phy.anl.gov/api/v4/projects/{CI_PROJECT_ID}/jobs/artifacts/master/raw"

#images = ["images/view2a.png","images/view2b.png", "images/view1.png"]
images = glob.glob("images/*.png")

bin/set_beam_energy

0 → 100755
+75 −0
Original line number Diff line number Diff line
#!/bin/bash

function print_the_help {
  echo "USAGE:    --ebeam E --pbeam E -c compact.xml"
  echo "REQUIRED ARGUMENTS:"
  echo "          -h|--help     Print this message"
  echo "          --ebeam       Electron beam energy (5, 10 or 18)"
  echo "          --pbeam       Ion beam energy (41, 100 or 275)"
  echo "          -c|--compact  Compact file to set beam energy for"
  exit
}

EBEAM=
PBEAM=
COMPACT=

while [ $# -gt 0 ]
do
  key="$1"
  case $key in
    -h|--help)
      print_the_help
      ;;
    --ebeam)
      EBEAM=$2
      shift
      shift
      ;;
    --pbeam)
      PBEAM=$2
      shift
      shift
      ;;
    -c|--compact)
      COMPACT=$2
      shift
      shift
      ;;
    *)    # unknown option
      echo "unknown option"
      exit 1
      ;;
  esac
done

echo "Setting beam energies to $EBEAM on $PBEAM for $COMPACT"

if [ -z $COMPACT ]; then
  echo "Error: no compact file given, use -h for help"
  exit 1
fi
if [ -z $EBEAM ]; then
  echo "Error: --ebeam argument missing, use -h for help"
  exit 1
fi
if [ -z $PBEAM ]; then
  echo "Error: --pbeam argument missing, use -h for help"
  exit 1
fi

if [[ $PBEAM != "41" &&  $PBEAM != "100" && $PBEAM != "275" ]]; then
  echo "Error: Ion beam energy should be 41, 100, or 275 GeV"
  exit 1
fi
if [[ $EBEAM != 5 && $EBEAM != 10 && $EBEAM != 18 ]]; then
  echo "Error: Electron beam energy should be 5, 10, or 18 GeV"
  exit 1
fi
if [ ! -f ${COMPACT} ]; then
  echo "Error: Compact file ${COMPACT} does not exist"
  exit 1
fi

sed -i "s?far_forward_fields_.\{2,3\}.xml?far_forward_fields_${PBEAM}.xml?" athena.xml
sed -i "s?far_backward_fields_.\{1,2\}.xml?far_backward_fields_${EBEAM}.xml?" athena.xml

calibrations/README.md

0 → 100644
+9 −0
Original line number Diff line number Diff line
## Calibrations for the ATHENA detector

Calibrations and constants for this ATHENA detector setup. These values are used in the
reconstruction. Each relevant subsystem that requires calibration data should have
its own subdirectory with relevant calibration files, preferably in JSON format.

Note that these calibrations are strongly versioned and tied directy to this specific
detector configuration. Therefore, please do not add an extra layer of versioning in the
file names, but rather only add those calibrations relevant for this particular setup.
+58 −0
Original line number Diff line number Diff line
{
    "ecal_neg_endcap": {
        "readout": "module",
        "dynamicRange": "20*GeV",
        "capacityBitsADC": 14,
        "pedestalMean": 100,
        "pedestalSigma": 1,
        "thresholdValue": 3
    },
    "hcal_neg_endcap": {
        "readout": "tile",
        "dynamicRange": "20*MeV",
        "capacityBitsADC": 8,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    },
    "ecal_pos_endcap": {
        "readout": "module",
        "dynamicRange": "3*GeV",
        "capacityBitsADC": 14,
        "pedestalMean": 100,
        "pedestalSigma": 0.7,
        "thresholdValue": 2
    },
    "hcal_pos_endcap": {
        "readout": "tile",
        "dynamicRange": "3.6*GeV",
        "capacityBitsADC": 10,
        "pedestalMean": 20,
        "pedestalSigma": 0.8,
        "thresholdValue": 3
    },
    "ecal_barrel_imaging": {
        "readout": "pixel",
        "dynamicRange": "3*MeV",
        "capacityBitsADC": 13,
        "pedestalMean": 100,
        "pedestalSigma": 14,
        "thresholdValue": 50
    },
    "ecal_barrel_scfi": {
        "readout": "light_guide",
        "dynamicRange": "750*MeV",
        "capacityBitsADC": 14,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    },
    "hcal_barrel": {
        "readout": "tile",
        "dynamicRange": "20*MeV",
        "capacityBitsADC": 8,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    }
}
+58 −0
Original line number Diff line number Diff line
{
    "ecal_neg_endcap": {
        "readout": "module",
        "dynamicRange": "20*GeV",
        "capacityBitsADC": 14,
        "pedestalMean": 100,
        "pedestalSigma": 1,
        "thresholdValue": 3
    },
    "hcal_neg_endcap": {
        "readout": "tile",
        "dynamicRange": "20*MeV",
        "capacityBitsADC": 8,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    },
    "ecal_pos_endcap": {
        "readout": "module",
        "dynamicRange": "3*GeV",
        "capacityBitsADC": 14,
        "pedestalMean": 100,
        "pedestalSigma": 0.7,
        "thresholdValue": 2
    },
    "hcal_pos_endcap": {
        "readout": "tile",
        "dynamicRange": "3.6*GeV",
        "capacityBitsADC": 10,
        "pedestalMean": 20,
        "pedestalSigma": 0.8,
        "thresholdValue": 3
    },
    "ecal_barrel_imaging": {
        "readout": "pixel",
        "dynamicRange": "3*MeV",
        "capacityBitsADC": 13,
        "pedestalMean": 100,
        "pedestalSigma": 14,
        "thresholdValue": 50
    },
    "ecal_barrel_scfi": {
        "readout": "light_guide",
        "dynamicRange": "750*MeV",
        "capacityBitsADC": 14,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    },
    "hcal_barrel": {
        "readout": "tile",
        "dynamicRange": "20*MeV",
        "capacityBitsADC": 8,
        "pedestalMean": 20,
        "pedestalSigma": 0.3,
        "thresholdValue": 1
    }
}
Original line number Diff line number Diff line
{
    "electron": {
        "particle_name": "electron",
        "sampling_fraction": 0.1053739677993623,
        "sampling_fraction_error": 0.00014385360879111712,
        "sampling_fraction_error_img": 7.262477989358573e-05,
        "sampling_fraction_error_scfi": 0.0001238835428684493,
        "sampling_fraction_img": 0.006008855583640059,
        "sampling_fraction_scfi": 0.09940809338992981,
        "thrown_energy": 5.000000028019361
    }
}
+16 −0
Original line number Diff line number Diff line
{
    "ffi_zdc_ecal": {
        "sampling_fraction": 1.0,
        "minClusterCenterEdep": "3.*MeV",
        "minClusterHitEdep": "0.1*MeV",
        "localDistXY": ["50*mm", "50*mm"],
        "splitCluster": true
    },
    "ffi_zdc_hcal": {
        "sampling_fraction": 1.0,
        "minClusterCenterEdep": "1.*MeV",
        "minClusterHitEdep": "0.1*MeV",
        "localDistXY": ["200*mm", "200*mm"],
        "splitCluster": false
    }
}

compact/cb_CTD_Si.xml

deleted100644 → 0
+0 −45
Original line number Diff line number Diff line
<lccdd>

  <comment> Central Barrel Tracker Silicon </comment>        

  <define>
    <constant name="cb_CTD_rmin"   value="SiliconTrackerInnerRadius + 70.0 * mm"/>
    <constant name="cb_CTD_rmax"   value="SiliconTrackerOuterRadius"/>
    <constant name="cb_CTD_zmax"   value="SiliconTrackerOuterBarrel_zmax"/>
    <constant name="cb_CTD_length" value="SiliconTrackerOuterBarrelLength"/>
    <comment> Si layer opiton </comment>
    <constant name="cb_CTD_Si_gap"    value="5.0 * cm"/>
    <constant name="cb_CTD_Si_layer"  value="15"/>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <detectors>
    <detector id="cb_CTD_Si_ID" name="cb_CTD_Si" type="cb_CTD_Si" readout="cb_CTD_Si_Hits" vis="cb_CTDVis" insideTrackingVloume="true">
      <dimensions rmin="cb_CTD_rmin" rmax="cb_CTD_rmax" length="cb_CTD_length" zmax="cb_CTD_zmax" gap="cb_CTD_Si_gap"/>
      <layer repeat="cb_CTD_Si_layer" vis="cb_CTD_Si_layerVis">
        <slice name="Silicon_slice" material="Si" sensitive="true"/>
      </layer>
    </detector>
  </detectors>

  <readouts>
    <readout name="cb_CTD_Si_Hits">
      <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" />
      <id>system:8,barrel:3,layer:4,x:32:-16,y:-16</id>  
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>

compact/cb_DIRC.xml

deleted100644 → 0
+0 −43
Original line number Diff line number Diff line
<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"/>
      <position x="0" y="0" z="DIRCOffset"/>
    </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>

compact/cb_Solenoid.xml

deleted100644 → 0
+0 −34
Original line number Diff line number Diff line
<lccdd>

  <comment>Central Barrel Solenoid</comment>        

  <define>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <!-- Define detector -->
  <detectors>
    <comment>
      Central Barrel Solenoid Magnet
    </comment>
    <detector id="Solenoid_ID" name="cb_Solenoid" type="cb_Solenoid" insideTrackingVolume="false" vis="cb_SolenoidVis">
	    <material name="Vacuum"/>  <!-- G4_Galactic -->	    
      <dimensions rmin="Solenoid_rmin" rmax="Solenoid_rmax" z="b_Solenoid_z" delta="cb_Solenoid_shift"/>
    </detector>
  </detectors>

  <plugins>
  </plugins>

  <!-- TODO: Define field using field map-->
  <fields>
  </fields>
</lccdd>

compact/cb_VTX_Barrel.xml

deleted100644 → 0
+0 −145
Original line number Diff line number Diff line
<lccdd>

  <comment> Central Barrel Vertex Detector </comment>        

  <define>
    <constant name="cb_VTX_Barrel_rmin"   value="VertexTrackerInnerRadius"/>
    <constant name="cb_VTX_Barrel_rmax"   value="VertexTrackerOuterRadius"/>
    <constant name="cb_VTX_Barrel_length" value="VertexTrackerOuterBarrelLength"/>

    <constant name="cb_VTX_Barrel_x_pos"   value="0.0*mm"/>
    <constant name="cb_VTX_Barrel_y_pos"   value="0.0*mm"/>
    <constant name="cb_VTX_Barrel_z_pos"   value="0.0*mm"/>

    <constant name="cb_VTX_Barrel_layer"   value="6"/>

    <comment> Need to cleanup and be more consistent with naming here </comment>

    <constant name="VertexTrackerBarrelLength" value="400.0*mm"/>

    <constant name="SiVertexEndcapP_rmin" value="VertexTrackerInnerRadius"/>
    <constant name="SiVertexEndcapP_rmax" value="VertexTrackerOuterRadius"/>
    <constant name="SiVertexEndcapP_zmin" value="VertexTrackerBarrelLength + 5*mm"/>

    <constant name="SiVertexEndcapN_rmin" value="VertexTrackerInnerRadius"/>
    <constant name="SiVertexEndcapN_rmax" value="VertexTrackerOuterRadius"/>
    <constant name="SiVertexEndcapN_zmin" value="VertexTrackerBarrelLength + 5*mm"/>

    <constant name="SiVertexEndcap_NLayers" value="5"/>
    <constant name="SiVertexEndcapP_zmax" value="VertexTrackingRegion_length/2 - SiVertexEndcapN_zmin"/>
    <constant name="SiVertexEndcapP_zmax" value="VertexTrackingRegion_length/2 - SiVertexEndcapN_zmin"/>
    <constant name="SiVertexEndcap_delta" value="(SiVertexEndcapP_zmax - SiVertexEndcapP_zmin)/SiVertexEndcap_NLayers"/>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <detectors>

    <detector id="SiVertexSubAssembly_ID" 
      name="SiVertexSubAssembly" 
      type="DD4hep_SubdetectorAssembly" 
      vis="SiTrackerSubAssemblyVis">
      <composite name="SiVertexEndcapN"/>
      <composite name="SiVertexEndcapP"/> 
      <composite name="cb_VTX_Barrel"/>
    </detector>

    <detector id="cb_VTX_Barrel_ID" name="cb_VTX_Barrel" type="cb_VTX_Barrel" readout="cb_VTX_Barrel_Hits" vis="cb_VTX_BarrelVis" insideTrackingVloume="true">
      <dimensions rmin="cb_VTX_Barrel_rmin" rmax="cb_VTX_Barrel_rmax" length="cb_VTX_Barrel_length"/>
      <position x="cb_VTX_Barrel_x_pos" y="cb_VTX_Barrel_y_pos" z="cb_VTX_Barrel_z_pos"/>
      <layer repeat="cb_VTX_Barrel_layer" vis="cb_VTX_Barrel_layerVis">
	<slice name="Silicon_slice" material="Si" sensitive="true"/>
      </layer>
    </detector>

    <detector id="SiVertexEndcapP_ID" name="SiVertexEndcapP" type="ref_DiskTracker"
      insideTrackingVolume="true" reflect="false" vis="AnlRed">
      <position x="0" y="0" z="0"/>
      <layer id="1" vis="AnlOrange"
        inner_z="SiVertexEndcapP_zmin + 0*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapP_rmin" 
        outer_r="SiVertexEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="2" vis="AnlOrange"
        inner_z="SiVertexEndcapP_zmin + 1*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapP_rmin" 
        outer_r="SiVertexEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="3" vis="AnlOrange"
        inner_z="SiVertexEndcapP_zmin + 2*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapP_rmin" 
        outer_r="SiVertexEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="4" vis="AnlOrange"
        inner_z="SiVertexEndcapP_zmin + 3*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapP_rmin" 
        outer_r="SiVertexEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="5" vis="AnlOrange"
        inner_z="SiVertexEndcapP_zmin + 4*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapP_rmin" 
        outer_r="SiVertexEndcapP_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
    </detector>

    <detector id="SiVertexEndcapN_ID" name="SiVertexEndcapN" type="ref_DiskTracker"
      insideTrackingVolume="true" reflect="true" vis="AnlRed">
      <position x="0" y="0" z="0"/>
      <layer id="1" vis="AnlOrange"
        inner_z="SiVertexEndcapN_zmin + 0*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapN_rmin" 
        outer_r="SiVertexEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="2" vis="AnlOrange"
        inner_z="SiVertexEndcapN_zmin + 1*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapN_rmin" 
        outer_r="SiVertexEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="3" vis="AnlOrange"
        inner_z="SiVertexEndcapN_zmin + 2*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapN_rmin" 
        outer_r="SiVertexEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="4" vis="AnlOrange"
        inner_z="SiVertexEndcapN_zmin + 3*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapN_rmin" 
        outer_r="SiVertexEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
      <layer id="5" vis="AnlOrange"
        inner_z="SiVertexEndcapN_zmin + 4*SiVertexEndcap_delta" 
        inner_r="SiVertexEndcapN_rmin" 
        outer_r="SiVertexEndcapN_rmax">
        <slice material="Air" thickness="1.0*mm" vis="AnlOrange" />
      </layer>
    </detector>
  </detectors>

  <readouts>
    <readout name="cb_VTX_Barrel_Hits">
      <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" />
      <id>system:8,barrel:3,layer:4,module:8,x:32:-16,y:-16</id>  
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>

compact/ce_GEM.xml

deleted100644 → 0
+0 −55
Original line number Diff line number Diff line
<lccdd>

  <comment> Electron endcap GEM tracking </comment>        

  <define>
    <comment>
      ------------------
      ce_GEM Parameters
      ------------------
    </comment>
    <constant name="ce_GEM_rmin"            value="10.0 * cm"/> <comment> temporary number. Need beampipe radius  </comment>
    <!--<constant name="ce_GEM_rmin"        value="0.0 * cm"/>-->
    <constant name="ce_GEM_rmax"            value="HcalEndcapN_rmin + 0.0 * cm"/> <comment> temporary number to avoid overlaps  </comment>
    <!--<constant name="ce_GEM_rmax"        value="45.0 * cm + 50.0 * cm"/>-->
    <constant name="ce_GEM_length"          value="30.0 * cm"/>
    <constant name="ce_GEM_x_pos"           value="0.0 * cm"/>
    <constant name="ce_GEM_y_pos"           value="0.0 * cm"/>
    <!--<constant name="ce_GEM_z_pos"           value="-Solenoid_length/2.0 + ce_GEM_length/2.0"/>-->
    <constant name="ce_GEM_z_pos"           value="-EcalEndcapN_zmin - CrystalBox_z_length - ce_GEM_length/2.0"/>
    <constant name="ce_GEM_layer"           value="8"/>
    <constant name="ce_GEM_layer_thickness" value="1.0 * cm"/>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <detectors>
    <detector id="ce_GEM_ID" name="ce_GEM" type="ce_GEM" readout="ce_GEM_Hits" vis="ce_GEMVis" insideTrackingVloume="true">
      <dimensions rmin="ce_GEM_rmin" rmax="ce_GEM_rmax" length="ce_GEM_length"/>
      <position x="ce_GEM_x_pos" y="ce_GEM_y_pos" z="ce_GEM_z_pos"/>
      <layer repeat="ce_GEM_layer" vis="ce_GEM_layerVis">
        <slice name="Ar10CO2_slice" material="Ar10CO2" thickness="ce_GEM_layer_thickness" sensitive="true"/>
      </layer>
    </detector>
  </detectors>

  <readouts>
    <readout name="ce_GEM_Hits">
      <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" />
      <id>system:8,layer:8,x:32:-16,y:-16</id>  
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>

compact/ce_ecal.xml

deleted100644 → 0
+0 −109
Original line number Diff line number Diff line
<lccdd>

  <define>
    <constant name="CrystalEndcap_rmin"  value="VertexTrackerBarrel_rmin"/>
    <constant name="CrystalEndcap_rmax"  value="EcalEndcapN_rmin"/>
    <constant name="CrystalBox_x_length" value="20.0*mm"/>
    <constant name="CrystalBox_y_length" value="20.0*mm"/>
    <constant name="CrystalBox_z_length" value="200.0*mm"/>
    <constant name="CrystalBox_offset"   value="0.000001*mm"/>
    <constant name="CrystalEndcap_x_pos" value="0.0*m"/>
    <constant name="CrystalEndcap_y_pos" value="0.0*m"/>
    <constant name="CrystalEndcap_z_pos" value="-EcalEndcapN_zmin"/>
  </define>


  <limits>
  </limits>

  <regions>
  </regions>

  <!-- Common Generic visualization attributes -->
  <comment>Common Generic visualization attributes</comment>
  <display>
  </display>

  <detectors>
    <comment>
      -------------------------------
      Backwards Endcap EM Calorimeter
      -------------------------------
      A layered EM calorimeter with tungsten and silicon (or scintillator) strips
    </comment>
    <detector id="ECalEndcapN_ID" 
      name="EcalEndcapN" 
      type="refdet_PolyhedraEndcapCalorimeter2" 
      reflect="true" 
      readout="EcalEndcapHits" 
      vis="EcalEndcapVis" 
      calorimeterType="EM_ENDCAP">
      <position x="0" y="0" z="0"/>
      <dimensions 
        numsides="CaloSides" 
        zmin="EcalEndcapN_zmin" 
        rmin="EcalEndcapN_rmin" 
        rmax="EcalBarrel_rmin " />
      <layer repeat="EcalEndcapNLayer1_NRepeat">
        <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
        <slice material="Copper" thickness="EcalCopperThickness"/>
        <slice material="Kapton" thickness="EcalKaptonThickness"/>
        <slice material="Air" thickness="EcalAir1Thickness"/>
      </layer>
      <layer repeat="EcalEndcapNLayer2_NRepeat">
        <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
        <slice material="Air" thickness="EcalAir2Thickness"/>
        <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
        <slice material="Copper" thickness="EcalCopperThickness"/>
        <slice material="Kapton" thickness="EcalKaptonThickness"/>
        <slice material="Air" thickness="EcalAir1Thickness"/>
      </layer>
      <layer repeat="EcalEndcapNLayer3_NRepeat">
        <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
        <slice material="Air" thickness="EcalAir2Thickness"/>
        <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
        <slice material="Copper" thickness="EcalCopperThickness"/>
        <slice material="Kapton" thickness="EcalKaptonThickness"/>
        <slice material="Air" thickness="EcalAir1Thickness"/>
      </layer>
    </detector>

    <comment>
      -------------------
      Crystal Calorimeter
      -------------------
      Backward (negative pseudorapidity) angle electron detector
    </comment>
    <detector 
      id="CrystalEndcap_ID" 
      name="ElectronECAL" 
      type="CrystalCalorimeterEndcap" 
      readout="CrystalEcalHits" 
      vis="GreenVis">
      <position x="CrystalEndcap_x_pos" y="CrystalEndcap_y_pos" z="CrystalEndcap_z_pos" />
      <dimensions rmin="CrystalEndcap_rmin" rmax="CrystalEndcap_rmax" x="CrystalBox_x_length" y="CrystalBox_y_length" z="CrystalBox_z_length" delta="CrystalBox_offset"/>
    </detector>
  </detectors>

  <!--  Definition of the readout segmentation/definition  -->
  <readouts>
    <!--  
    <readout name="PlaneTrackerHits">
      <segmentation type="CartesianGridXY" grid_size_x="20.0*mm" grid_size_y="20.0*mm" />
      <id>system:5,module:4,x:32:-16,y:-16</id>
    </readout>
    -->
    <readout name="CrystalEcalHits">
      <segmentation type="CartesianGridXY" grid_size_x="CrystalBox_x_length" grid_size_y="CrystalBox_y_length" />
      <id>system:8,sector:4,module:20,x:48:-8,y:-8</id>
    </readout>
    <readout name="EcalEndcapNHits">
      <segmentation type="CartesianGridXY" grid_size_x="3.5 * mm" grid_size_y="3.5 * mm"/>
      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
    </readout>
  </readouts>

  <plugins>
  </plugins>

</lccdd>

compact/ce_mrich.xml

deleted100644 → 0
+0 −25
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<lccdd>
  <define>
    <constant name="ce_MRICHRMin"   value="15*cm"/>
    <constant name="ce_MRICHRMax"   value="BarrelTracking_rmax"/>
    <constant name="ce_MRICHLength" value="BackwardCherenkov_length"/>
    <constant name="ce_MRICHZMin"   value="-BarrelTracking_length/2.0 - BackwardTracking_length"/>

  </define>

  <detectors>
    <detector id="ce_MRICH_ID" name="ce_MRICH" type="refdet_ce_MRICH" readout="MRICHHits" vis="BlueVis" material="Air">
      <dimensions rmin="ce_MRICHRMin" rmax="ce_MRICHRMax" length="ce_MRICHLength" z="ce_MRICHZMin"/>
      <modules material="Quartz" thickness="10*cm" width="10*cm" gap="1*cm" />
    </detector>
  </detectors>

  <readouts>
    <readout name="MRICHHits">
      <segmentation type="CartesianGridXY" grid_size_x="3*mm" grid_size_y="3*mm" />
      <id>system:8,sector:8,module:14,x:32:-16,y:-16</id>
    </readout>
  </readouts>

</lccdd>

compact/colors.xml

0 → 100644
+26 −0
Original line number Diff line number Diff line
<display>

  <comment> 
    Colors tweaked to be displayable by geoViewer
  </comment>
  <vis name="AnlGreen"        alpha="1" r="100/256" g="200/256" b="0/256"/>
  <vis name="AnlViolet"       alpha="1" r="100/256" g="0/256"   b="150/256"/>
  <vis name="AnlProcess_Blue" alpha="1" r="0/256"   g="100/256" b="202/256"/>
  <vis name="AnlOrange"       alpha="1" r="255/256" g="121/256" b="0"/>
  <vis name="AnlRed"          alpha="1" r="205/256" g="45/256 " b="45/256"/>
  <vis name="AnlGold"         alpha="1" r="248/256" g="188/256" b="0/256"/>
  <vis name="AnlBlue"         alpha="1" r="0/256"   g="96/256"  b="156/256"/>
  <vis name="AnlTeal"         alpha="1" r="0/256"   g="161/256" b="156/256"/>
  <vis name="AnlGray"         alpha="1" r="102/256" g="102/256" b="102/256"/>
  <vis name="AnlLight_Gray"   alpha="1" r="209/256" g="209/256" b="209/256"/>
  <vis name="AnlLightGray"    ref="AnlLight_Gray" />
  <!-- off-white (or white) don't work! -->
  <!--vis name="AnlOff_White"    alpha="1" r="242/256" g="242/256" b="242/256"/-->
  <vis name="AnlDarkRed"      alpha="1" r="161/256" g="45/256"  b="45/256"/>
  <vis name="AnlDarkGreen"    alpha="1" r="0"       g="110/256" b="50/256"/>
  <vis name="AnlDarkBlue"     alpha="1" r="45/256"   g="45/256"  b="110/256"/>
  <vis name="AnlDelta_Red"    ref="AnlDarkRed"/>
  <vis name="AnlDelta_Green"    ref="AnlDarkGreen"/>
  <vis name="AnlDelta_Blue"    ref="AnlDarkBlue"/>

</display>
+0 −246
Original line number Diff line number Diff line
<lccdd>

  <comment> Simplified All Silicon Tracker based on:
    https://github.com/reynier0611/g4lblvtx/blob/master/macros/auxiliary_studies/simplified_geometry/Fun4All_G4_simplified_v2.C
    With some added info on ITS3 chip from
    https://indico.bnl.gov/event/10677/contributions/45591/attachments/33204/53254/20210318-IR2%40EIC-SVT.pdf
    To be used as standin until we get more detailed specs from the working group on the tracker.
    Note that most details are replaced with 

    Note: initial implementation with hard-coded values,
          TODO: add parametrization
  </comment>

  <define>

    <constant name="VtxRadius1"                 value="3.3*cm"/>
    <constant name="VtxRadius2"                 value="5.7*cm"/>
    <constant name="VtxLength"                  value="30*cm"/>
    <constant name="VtxThickness"               value="0.05/100*9.37*cm"/>
    <constant name="VtxServiceThickness"        value="VtxThickness-ITS3Thickness"/>

    <constant name="TrkBarrelThickness"         value="0.55/100*9.37*cm"/>
    <constant name="TrkBarrelServiceThickness"  value="TrkBarrelThickness-ITS3Thickness"/>

    <constant name="TrkBarrel1Radius1"          value="21.0*cm"/>
    <constant name="TrkBarrel1Radius2"          value="22.68*cm"/>
    <constant name="TrkBarrel1Length1"          value="54.0*cm"/>
    <constant name="TrkBarrel1Length2"          value="60.0*cm"/>

    <constant name="TrkBarrel2Radius1"          value="39.3*cm"/>
    <constant name="TrkBarrel2Radius2"          value="43.23*cm"/>
    <constant name="TrkBarrel2Length1"          value="105.0*cm"/>
    <constant name="TrkBarrel2Length2"          value="114.0*cm"/>

    <constant name="TrkDiskThickness"           value="0.25/100*9.37*cm"/>
    <constant name="TrkDiskServiceThickness"    value="TrkDiskThickness-ITS3Thickness"/>
    <constant name="TrkNumOuterDisks"           value="3"/>
    <constant name="TrkInnerDisk1_z"            value="25.0*cm"/>
    <constant name="TrkInnerDisk2_z"            value="49.0*cm"/>
    <constant name="TrkOuterDisk_zmin"          value="73.0*cm"/>
    <constant name="TrkOuterDisk_zmax"          value="121.0*cm"/>
    <constant name="TrkOuterDisk_deltaz"        value="(TrkOuterDisk_zmax-TrkOuterDisk_zmin)/(TrkNumOuterDisks-1)" />

    <constant name="TrkInnerDisk1_rmin"         value="0.05025461*TrkInnerDisk1_z-0.180808*cm"/>
    <constant name="TrkInnerDisk2_rmin"         value="0.05025461*TrkInnerDisk2_z-0.180808*cm"/>
    <constant name="TrkOuterDisk_rmin"          value="3.18*cm"/>

    <constant name="TrkInnerDisk1_rmax"         value="18.5*TrkInnerDisk1_z/TrkInnerDisk1_z*cm"/>
    <constant name="TrkInnerDisk2_rmax"         value="18.5*TrkInnerDisk2_z/TrkInnerDisk1_z*cm"/>
    <constant name="TrkOuterDisk_rmax"          value="43.23*cm"/>
  </define>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
  </display>

  <detectors>
    <detector id="AllSiliconVtx_ID" name="AllSiliconVtx" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
      <module name="Module1" vis="AnlGreen">
        <module_envelope rmin="VtxRadius1" thickness="VtxThickness" length="VtxLength" phi="360*degree" />
        <module_component rmin="VtxRadius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="VtxRadius1 + ITS3Thickness" thickness="VtxServiceThickness" material="Silicon" name="VtxServices" />
      </module>
      <module name="Module2" vis="AnlGreen">
        <module_envelope rmin="VtxRadius2" thickness="VtxThickness" length="VtxLength" phi="360*degree" />
        <module_component rmin="VtxRadius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="VtxRadius2 + ITS3Thickness" thickness="VtxServiceThickness" material="Silicon" name="VtxServices" />
      </module>
      <layer module="Module1" id="1" vis="AnlGreen">
        <barrel_envelope inner_r="VtxRadius1" outer_r="VtxRadius1 + VtxThickness" z_length="VtxLength" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="VtxRadius1" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
      <layer module="Module2" id="2" vis="AnlGreen">
        <barrel_envelope inner_r="VtxRadius2" outer_r="VtxRadius2 + VtxThickness" z_length="VtxLength" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="VtxRadius2" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
    </detector>

    <detector id="AllSiliconTrk1Assembly_ID" name="AllSiliconTrkAssembly1" type="DD4hep_SubdetectorAssembly" vis="AnlGreen">
      <composite name="AllSiliconTrkDisk1N" />
      <composite name="AllSiliconTrkDisk1P" />
      <composite name="AllSiliconBarrel1" />
    </detector>
    <detector id="AllSiliconTrkBarrel1_ID" name="AllSiliconTrkBarrel1" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
      <module name="Module1" id="1" vis="AnlGreen">
        <module_envelope rmin="TrkBarrel1Radius1" thickness="TrkBarrelThickness" length="TrkBarrel1Length1" phi="360*degree" />
        <module_component rmin="TrkBarrel1Radius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="TrkBarrel1Radius1 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel1Services" />
      </module>
      <module name="Module2" id="2" vis="AnlGreen">
        <module_envelope rmin="TrkBarrel1Radius2" thickness="TrkBarrelThickness" length="TrkBarrel1Length2" phi="360*degree" />
        <module_component rmin="TrkBarrel1Radius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="TrkBarrel1Radius2 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel1Services" />
      </module>
      <layer module="Module1" id="1" vis="AnlGreen">
        <barrel_envelope inner_r="TrkBarrel1Radius1" outer_r="TrkBarrel1Radius1 + TrkBarrelThickness" z_length="TrkBarrel1Length1" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel1Radius1" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
      <layer module="Module2" id="2" vis="AnlGreen">
        <barrel_envelope inner_r="TrkBarrel1Radius2" outer_r="TrkBarrel1Radius2 + TrkBarrelThickness" z_length="TrkBarrel1Length2" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel1Radius2" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
    </detector>
    <detector id="AllSiliconTrkDisk1N_ID" name="AllSiliconTrkDisk1N" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>
        <layer id="1" vis="AnlGreen"
          inner_z="TrkInnerDisk1_z"
          inner_r="TrkInnerDisk1_rmin"
          outer_r="TrkInnerDisk1_rmax">
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
    </detector>
    <detector id="AllSiliconTrkDisk1P_ID" name="AllSiliconTrkDisk1P" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>
        <layer id="1" vis="AnlGreen"
          inner_z="TrkInnerDisk1_z"
          inner_r="TrkInnerDisk1_rmin"
          outer_r="TrkInnerDisk1_rmax">
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
    </detector>

    <detector id="AllSiliconTrk2Assembly_ID" name="AllSiliconTrkAssembly2" type="DD4hep_SubdetectorAssembly" vis="AnlGreen">
      <composite name="AllSiliconTrkDisk2N" />
      <composite name="AllSiliconTrkDisk2P" />
      <composite name="AllSiliconBarrel2" />
    </detector>
    <detector id="AllSiliconTrkBarrel2_ID" name="AllSiliconTrkBarrel2" type="refdet_CylinderTrackerBarrel" readout="ITS3Hits">
      <module name="Module1" id="1" vis="AnlGreen">
        <module_envelope rmin="TrkBarrel2Radius1" thickness="TrkBarrelThickness" length="TrkBarrel2Length1" phi="360*degree" />
        <module_component rmin="TrkBarrel2Radius1" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="TrkBarrel2Radius1 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel2Services" />
      </module>
      <module name="Module2" id="2" vis="AnlGreen">
        <module_envelope rmin="TrkBarrel2Radius2" thickness="TrkBarrelThickness" length="TrkBarrel2Length2" phi="360*degree" />
        <module_component rmin="TrkBarrel2Radius2" thickness="ITS3Thickness" material="Silicon" name="ITS3" sensitive="true" />
        <module_component rmin="TrkBarrel2Radius2 + ITS3Thickness" thickness="TrkBarrelServiceThickness" material="Silicon" name="TrkBarrel2Services" />
      </module>
      <layer module="Module1" id="1" vis="AnlGreen">
        <barrel_envelope inner_r="TrkBarrel2Radius1" outer_r="TrkBarrel2Radius1 + TrkBarrelThickness" z_length="TrkBarrel2Length1" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel2Radius1" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
      <layer module="Module2" id="2" vis="AnlGreen">
        <barrel_envelope inner_r="TrkBarrel2Radius2" outer_r="TrkBarrel2Radius2 + TrkBarrelThickness" z_length="TrkBarrel2Length2" />
        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0.0" rc="TrkBarrel2Radius2" dr="0.0*mm" />
        <z_layout dr="0.0*mm" z0="0" nz="1" />
      </layer>
    </detector>
    <detector id="AllSiliconTrkDisk2N_ID" name="AllSiliconTrkDisk2N" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>
        <layer id="1" vis="AnlGreen"
          inner_z="TrkInnerDisk2_z"
          inner_r="TrkInnerDisk2_rmin"
          outer_r="TrkInnerDisk2_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
    </detector>
    <detector id="AllSiliconTrkDisk2P_ID" name="AllSiliconTrkDisk2P" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>
        <layer id="1" vis="AnlGreen"
          inner_z="TrkInnerDisk2_z"
          inner_r="TrkInnerDisk2_rmin"
          outer_r="TrkInnerDisk2_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
    </detector>
    <detector id="AllSiliconTrkOuterN_ID" name="AllSiliconTrkOuterN" type="ref_DiskTracker" insideTrackingVolume="true" reflect="true" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>

        <layer id="1" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
        <layer id="2" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin + 1 * TrkOuterDisk_deltaz"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
        <layer id="3" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin + 2 * TrkOuterDisk_deltaz"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
    </detector>
    <detector id="AllSiliconTrkOuterP_ID" name="AllSiliconTrkOuterP" type="ref_DiskTracker" insideTrackingVolume="true" reflect="false" vis="kAnlGreen">
        <position x="0" y="0" z="0"/>
        <layer id="1" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
        <layer id="2" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin + 1 * TrkOuterDisk_deltaz"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
        <layer id="3" vis="AnlGreen"
          inner_z="TrkOuterDisk_zmin + 2 * TrkOuterDisk_deltaz"
          inner_r="TrkOuterDisk_rmin"
          outer_r="TrkOuterDisk_rmax">
          <!--slice material="Silicon" thickness="ITS3Thickness" vis="AnlGreen" sensitive="true"/-->
          <!--slice material="Silicon" thickness="TrkDiskServiceThickness" vis="AnlGreen" /-->
          <slice material="Silicon" thickness="TrkDiskThickness" vis="AnlGreen" />
        </layer>
      </detector>
    </detectors>

  <readouts>
    <readout name="ITS3Hits">
      <segmentation type="CartesianGridXY" grid_size_x="0.010*mm" grid_size_y="0.010*mm" />
      <id>system:8,barrel:2,layer:4,module:7,sensor:2,x:30:-17,y:-17</id>  
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>

compact/dirc.xml

0 → 100644
+185 −0
Original line number Diff line number Diff line
<lccdd>

  <comment>
    DIRC consists of 16 (default) identical modules making a barrel.
    Each DIRC module consists of:
    _______
    [  |   \
    [  |    \
    [FD|Prizm|Lens|--------bars+glue-----|mirror]

    Main constants to control DIRC global geometry:
      - DIRC_length
      - DIRC_offset
      - DIRC_rmin
      - DIRCBox_count  (16 full dirc, 1 - a single module)
      - DIRC_rotation  (allows to flip the DIRC)

    When DIRC_length is set, it affects bars length (all other lengths are fixed)
    The width of each DIRC module is derived from DIRCPrism_width

  </comment>

  <define>
    <constant name="DIRCFake_rmin"             value="BarrelTracking_rmax-11*cm"/>
    <constant name="DIRC_rotation"         value="pi" comment="Allows DIRC flip"/>
    <!-- <constant name="cb_DIRC_length"    value="DIRCLength"/> -->
    <!-- CLEANUP THIS if not sure. This is from the initial implementation
    <constant name="DIRC_length"            value="285.500*cm"/>
    <constant name="DIRCFake_rmin"              value="82.00*cm"/>-->

    <!-- Prism -->
    <constant name="DIRCPrism_width"        value="360*mm"/>
    <constant name="DIRCPrism_length"       value="300*mm"/>
    <constant name="DIRCPrism_short_edge"   value="50*mm"/>
    <constant name="DIRCPrism_angle"        value="32*deg"/>
    <constant name="DIRCPrism_long_edge"    value="DIRCPrism_short_edge + DIRCPrism_length * tan(DIRCPrism_angle)"/>
    <constant name="DIRCPrism_height"       value="DIRCPrism_long_edge"/>

    <!-- DIRC length -->
    <constant name="DIRCMain_length"           value="DIRC_length"/>
    <constant name="DIRCFake_offset"           value="DIRC_offset+15*cm"/>

    <!-- Box - main DIRC modules -->
    <constant name="DIRCBox_count"          value="16"  comment="Number of DIRC boxes per... DIRC. 16 - default"/>
    <constant name="DIRCBox_width"          value="DIRCPrism_width"/>

    <!-- Mirror -->
    <constant name="DIRCMirror_height"      value="20 * mm"/>
    <constant name="DIRCMirror_width"       value="DIRCPrism_width"/>
    <constant name="DIRCMirror_thickness"   value="1 * mm"/>

    <!-- Lens -->
    <constant name="DIRCLens_height"        value="DIRCPrism_long_edge"/>
    <constant name="DIRCLens_width"         value="DIRCPrism_width"/>
    <constant name="DIRCLens_thickness"     value="12 * mm"/>
    <constant name="DIRCLens_r1"            value="33 * mm"/>
    <constant name="DIRCLens_r2"            value="24 * mm"/>
    <constant name="DIRCLens_shight"        value="25 * mm" comment="Is 'shight' from UK urban dictionary???"/>

    <!-- FD (Foto detectors?) -->
    <constant name="DIRCFd_height"          value="DIRCPrism_height"/>
    <constant name="DIRCFd_width"           value="DIRCPrism_width"/>
    <constant name="DIRCFd_thickness"       value="1*mm"/>

    <!-- Bar - Each DIRC box consists of N "bars" -->
    <!-- BarAssembly - Bars + Glue -->
    <constant name="DIRCBarAssm_length"     value="DIRCMain_length - DIRCPrism_length - DIRCMirror_thickness - DIRCLens_thickness - DIRCFd_thickness" comment="Length of bars+glue assembly"/>
    <constant name="DIRCBar_count"          value="11" comment="Number of bars per box"/>
    <constant name="DIRCBar_gap"            value="0.15 * mm"/>
    <constant name="DIRCBar_height"         value="17 * mm"/>
    <constant name="DIRCBar_width"          value="(DIRCPrism_width - (DIRCBar_count - 1) * DIRCBar_gap) / DIRCBar_count"/>
    <constant name="DIRCGlue_thickness"     value="0.05 * mm"/>
    <constant name="DIRCBar_length"         value="(DIRCBarAssm_length-4*DIRCGlue_thickness)/4"/>

    <!-- dirc outer volume -->
    <comment>
      RMax is calculated according to "rectangle inside ring" problem solution
      https://math.stackexchange.com/questions/4222684/calculate-rectangle-inside-ring-parameters/4222691#4222691
    </comment>
    <constant name="DIRCFake_rmax"              value="sqrt( (DIRCFake_rmin+DIRCPrism_height)^2 + 0.25*(DIRCPrism_height)^2 )"/>
  </define>

  <materials>
    <comment>
      Only non optical material variants are here.
      See optical_materials.xml for optical ones
      -
    </comment>

    <material name="Epotek">
      <D type="density" value="1.2" unit="g/cm3"/>
      <composite n="5" ref="H"/>
      <composite n="3" ref="C"/>
      <composite n="2" ref="O"/>
    </material>
    <material name="Nlak33a">
      <D type="density" value="4.220" unit="g/cm3"/>
      <composite n="1" ref="Si"/>
      <composite n="2" ref="O"/>
    </material>
  </materials>

  <limits>
  </limits>

  <regions>
  </regions>

  <display>
    <vis name="DIRCTube"   ref="AnlTeal" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCBox"    ref="AnlLight_Gray" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens1"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens2"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCLens3"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCBar"    ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCGlue"   ref="AnlViolet" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCMirror" ref="AnlGray" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCPrism"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
    <vis name="DIRCFd"     ref="AnlRed" visible="true"  showDaughters="false" />
  </display>

  <detectors>
    <detector id="BarrelDIRC_ID" name="cb_DIRC" type="cb_DIRC" readout="DIRCBarHits" vis="DIRCTube">
      <dimensions rmin="DIRCFake_rmin" rmax="DIRCFake_rmax" length="DIRCMain_length" radius="DIRCRadius" dx="DIRCBars_DX" dy="DIRCBars_DY" number="DIRCNum" deltaphi="DIRCDPhi"/>
      <position x="0" y="0" z="DIRCFake_offset"/>
      <rotation theta="DIRC_rotation"/>
      <module name="DircBox" R="DIRCRadius" repeat="DIRCBox_count" width="DIRCPrism_width + 1*mm" height="DIRCPrism_height*2" length="DIRCBarAssm_length + 550*mm" vis="DIRCBox">
        <!-- Mirror (at the end of the module) -->
        <mirror
          height="DIRCMirror_height"
          width="DIRCMirror_width"
          thickness="DIRCMirror_thickness"
          material="Aluminum"
          vis="DIRCMirror"
        />

        <!-- DIRC Bar -->
        <!-- TODO parametrize as bar+glue assembly with layers -->
        <bar
          height="DIRCBar_height"
          width="DIRCBar_width"
          length="DIRCBar_length"
          repeat="DIRCBar_count"
          gap="DIRCBar_gap"
          material="Quartz"
          vis="DIRCBar"
        />

        <glue thickness="DIRCGlue_thickness" material="Epotek" vis="DIRCGlue"/>

        <!-- lens -->
        <lens
          height="DIRCLens_height"
          width="DIRCLens_width"
          thickness="DIRCLens_thickness"
          r1="DIRCLens_r1"
          r2="DIRCLens_r2"
        />

        <prism/> <!-- TODO parametrize here -->

        <fd
          height="DIRCFd_height"
          width="DIRCFd_width"
          thickness="DIRCFd_thickness"
          vis="DIRCFd"
          material="Quartz"
        />
      </module>
    </detector>
  </detectors>

  <readouts>
    <readout name="DIRCBarHits">
      <segmentation type="CartesianGridXY" grid_size_x="3.0*mm" grid_size_y="3.0*mm" />
      <id>system:8,module:8,section:8,bar:8,x:32:-16,y:-16</id>
    </readout>
  </readouts>

  <plugins>
  </plugins>

  <fields>
  </fields>
</lccdd>
+158 −73
Original line number Diff line number Diff line
  <display>

    <vis name="AnlGreen"        alpha="1" r="119/255" g="179/255" b="0"/>
    <vis name="AnlViolet"       alpha="1" r="91/256" g="0" b="145/256"/>
    <vis name="AnlProcess_Blue" alpha="1" r="0/256" g="130/256" b="202/256"/>
    <vis name="AnlOrange"       alpha="1" r="255/256" g="121/256" b="0"/>
    <vis name="AnlRed"          alpha="1" r="205/256" g="32/256" b="44/256"/>
    <vis name="AnlGold"         alpha="1" r="248/256" g="178/256" b="0/256"/>
    <vis name="AnlBlue"         alpha="1" r="0/256" g="96/256" b="156/256"/>
    <vis name="AnlTeal"         alpha="1" r="0/256" g="161/256" b="156/256"/>
    <vis name="AnlGray"         alpha="1" r="102/256" g="102/256" b="102/256"/>
    <vis name="AnlLight_Gray"   alpha="1" r="209/256" g="209/256" b="209/256"/>
    <vis name="AnlOff_White"    alpha="1" r="242/256" g="242/256" b="242/256"/>
    <vis name="AnlDelta_Red"    alpha="1" r="161/256" g="43/256" b="47/256"/>
    <vis name="AnlDelta_Green"  alpha="1" r="0" g="120/256" b="54/256"/>
    <vis name="AnlDelta_Blue"   alpha="1" r="11/256" g="31/256" b="143/256"/>

    <vis name="AnlRed_1"        alpha="0.5" r="205/256" g="32/256" b="44/256"/>

    <comment>Tracker_Layer_Vis is AnlGold</comment>
    <vis name="Tracker_Layer_Vis"  alpha="0.5" r="248/256" g="178/256" b="0/256" showDaughters="true" />
    <comment>
      See compact/colors.xml for list of colors.
    </comment>

    <vis name="InvisibleNoDaughters"      showDaughters="false" visible="false"/>
    <vis name="InvisibleWithDaughters"    showDaughters="true" visible="false"/>

    <vis name="SiVertexVis" alpha="0.9" r="1" g="0" b="1" showDaughters="true" />
    <vis name="SiTrackerBarrelVis" alpha="0.5" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="SiTrackerVis" alpha="0.9" r="1.0" g="0.0" b="0.0" showDaughters="true" lineStyle="solid"  drawingStyle="solid" />
    <comment>
      Tracking Visualizations
    </comment>
    <vis name="TrackerVis"        ref="AnlRed" />
    <vis name="TrackerSupportVis" ref="AnlBlue"         visible="true"  showDaughters="true" />
    <vis name="TrackerServiceVis" ref="AnlGold"         showDaughters="false" />
    <vis name="TrackerLayerVis"   ref="AnlGray"         visible="true"  showDaughters="true" />
    <vis name="TrackerModuleVis"  ref="TrackerLayerVis" visible="true"  showDaughters="false" />
    <vis name="TrackerMPGDVis"    ref="AnlRed"          visible="true"  showDaughters="false" />
    <comment> Visualization for Barrel MMGAS (apply to layers) and GEM endcap (apply to modules) </comment>
    <vis name="TrackerGEMModuleVis"  ref="TrackerMPGDVis"  visible="true"  showDaughters="false" />
    <vis name="TrackerMMGASLayerVis" ref="TrackerMPGDVis"  visible="true"  showDaughters="false" />

    <vis name="VertexSupportLayerVis" ref="AnlBlue"         visible="true"  showDaughters="false" />
    <vis name="VertexSupportVis"      ref="VertexSupportLayerVis" visible="true"  showDaughters="true" />
    <vis name="VertexLayerVis"   ref="AnlGray"         visible="true"  showDaughters="true" />
    <vis name="VertexModuleVis"  ref="TrackerLayerVis" visible="true"  showDaughters="false" />

    <vis name="TOFVis"            ref="AnlTeal"             visible="true"  showDaughters="true"/>
    <vis name="TOFLayerVis"       ref="TOFVis"              visible="true"  showdaughters="true"/>
    <vis name="TOFModuleVis"      ref="TOFVis"              visible="true"  showdaughters="true"/>
    <vis name="TOFSupportVis"     ref="TrackerSupportVis"   visible="true"  showDaughters="true"/>
    <vis name="TOFSensorVis"      ref="TOFVis"              visible="true"  showDaughters="true"/>
    <comment> By default don't display the barrel module details </comment>
    <vis name="TOFBarrelModuleVis" ref="TOFVis"             visible="true"  showdaughters="true"/>
    <comment> extra detailed vizualizations for the barrel </comment>
    <vis name="TOFHybridVis"      ref="AnlGold"             visible="true"  showDaughters="true"/>
    <vis name="TOFCoolingTube"    ref="AnlRed"              visible="true"  showDaughters="true"/>
    <vis name="TOFCoolant"        ref="TrackerServiceVis"   visible="true"  showDaughters="true"/>
    <vis name="TOFCSkinVis"       ref="TrackerSupportVis"   visible="true"  showDaughters="true"/>
    <vis name="TOFCFoamVis"       ref="TrackerSupportVis"   visible="true"  showDaughters="true"/>
    <vis name="TOFCHoneycombVis"  ref="TrackerServiceVis"   visible="true"  showDaughters="true"/>


    <vis name="FFTrackerVis"        ref="AnlRed" />
    <vis name="FFTrackerSupportVis" ref="AnlBlue"             visible="true"  showDaughters="false" />
    <vis name="FFTrackerShieldingVis" ref="AnlGray"           visible="true"  showDaughters="false" />
    <vis name="FFTrackerServiceVis" ref="AnlGold"             visible="true"  showDaughters="false" />
    <vis name="FFTrackerLayerVis"   ref="TrackerVis"          visible="true"  showDaughters="true" />
    <vis name="FFTrackerModuleVis"  ref="FFTrackerLayerVis"   visible="true"  showDaughters="true" />
    <vis name="FFTrackerSurfaceVis" ref="FFTrackerLayerVis"   visible="true"  showDaughters="true" />
    <comment> For shielded modules by default just display to module instead of 6 layers </comment>
    <vis name="FFTrackerShieldedModuleVis" ref="FFTrackerModuleVis"   visible="true"  showDaughters="false" />

    <comment>
      ECal Vis
    </comment>
    <vis name="EcalVis"                 ref="AnlGold"   showDaughters="true"  visible="true"/>
    <vis name="EcalBarrelVis"           ref="AnlGold"   showDaughters="false" visible="true"/>
    <vis name="EcalBarrelStaveVis"      ref="AnlOrange" showDaughters="false" visible="true" />
    <vis name="EcalBarrelEnvelopeVis"   ref="AnlGold" showDaughters="false" visible="true" />
    <vis name="EcalBarrelSupportVis"    ref="AnlOrange" showDaughters="false" visible="true"/>
    <vis name="EcalBarrelLayerVis"      ref="AnlGold"   showDaughters="true"  visible="true"/>
    <vis name="EcalBarrelSliceVis"      ref="AnlGray"   showDaughters="false" visible="true"/>
    <vis name="EcalBarrelFiberLayerVis" ref="AnlGold"   showDaughters="false" visible="true" />

    <vis name="EcalEndcapVis"           ref="AnlGold"   showDaughters="true" visible="false"/>
    <vis name="EcalEndcapLayerVis"      ref="AnlGold"   showDaughters="false" visible="true"/>
    <vis name="EcalEndcapBlockVis"      ref="AnlGold"   showDaughters="false" visible="true"/>

    <vis name="EcalEndcapNModuleVis"    ref="AnlGold"   showDaughters="false" visible="true"/>

    <vis name="FFPreVis"            ref="AnlGold"             showDaughters="true" visible="true"/>
    <vis name="FFPreLayerVis"       ref="FFPreVis"            showDaughters="true" visible="true"/>
    <vis name="FFPreModuleVis"      ref="FFPreLayerVis"       showDaughters="true" visible="true"/>
    <vis name="FFPreRadiatorVis"    ref="FFPreModuleVis"      showDaughters="true" visible="true"/>
    <vis name="FFPreReadoutVis"     ref="FFTrackerSurfaceVis" showDaughters="true" visible="true"/>

    <comment>
      HCal Vis
    </comment>
    <vis name="HcalVis"               ref="AnlBlue"   showDaughters="true"  visible="true"/>
    <vis name="HcalBarrelVis"         ref="AnlBlue"   showDaughters="true"  visible="true"/>
    <vis name="HcalBarrelStaveVis"    ref="AnlBlue"   showDaughters="false" visible="true"/>
    <vis name="HcalBarrelLayerVis"    ref="AnlBlue"   showDaughters="false" visible="true"/>
    <vis name="HcalEndcapVis"         ref="AnlBlue"   showDaughters="false" visible="true"/>
    <vis name="HcalEndcapLayerVis"    ref="AnlBlue"   showDaughters="false" visible="true"/>
    <vis name="HcalSensorVis"         ref="AnlBlue"   showDaughters="false" visible="false"/>
    <vis name="HcalAbsorberVis"       ref="AnlGray"   showDaughters="false" visible="false"/>

    <comment>
      Passive steel for flux return
    </comment>
    <vis name="PassiveSteelVis"       ref="AnlViolet" showDaughters="false" visible="true"/>

    <comment>
      Solenoid
    </comment>
    <vis name="SolenoidCoilVis"     ref="AnlLightGray" showDaughters="true"  visible="true" lineStyle="solid" drawingStyle="solid" />
    <vis name="SolenoidCryostatVis" ref="AnlGray"       showDaughters="true"  visible="true" lineStyle="solid" drawingStyle="solid" />
    <vis name="SolenoidYokeVis"     ref="AnlLight_Gray" showDaughters="false" visible="true" lineStyle="solid" drawingStyle="solid" />


    <comment>
      PID Detectors
    </comment>
    <vis name="RICHVis"         ref="AnlTeal"     showDaughters="true"/>

    <vis name="TrackerSupportVis" alpha="1.0" r="1.0" g="0.0" b="0.0" visible="true"  showDaughters="false" />
    <vis name="TrackerLayerVis" alpha="0.9" r="0.0" g="1.0" b="0.0" visible="true"  showDaughters="true" />
    <vis name="DIRCVis"         ref="AnlTeal"       showDaughters="true" visible="false"/>
    <vis name="DIRCLayerVis"    ref="AnlTeal"       showDaughters="true" visible="false"/>
    <vis name="DIRCModuleVis"   ref="AnlTeal"       showDaughters="true" visible="false"/>
    <vis name="DIRCSupportVis"  ref="AnlTeal" showDaughters="true" visible="true"/>
    <vis name="DIRCFrameVis"    ref="AnlOrange"     showDaughters="true" visible="true"/>
    <vis name="DIRCBarVis"      ref="AnlTeal"       showDaughters="true" visible="true"/>

    <vis name="SiTrackerBarrelVis1" alpha="0.8" r="0.0" g="0.9" b="0.9" showDaughters="true" />
    <vis name="SiTrackerBarrelVis2" alpha="0.8" r="0.1" g="0.9" b="0.0" showDaughters="true" visible="true"/>
    <vis name="SiTrackerEndcapVis1" alpha="0.8" r="1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="SiTrackerEndcapVis2" alpha="0.8" r="1.0" g="0.45" b="0.0" showDaughters="false" visible="true"/>
    <vis name="SiTrackerSubAssemblyVis" alpha="1" r="0.0" g="0.99" b="0.0" showDaughters="true" visible="true"/>
    <vis name="SiTrackerLayerVis" alpha="1" r="0.0" g="1" b="0.0" showDaughters="true" visible="true"  lineStyle="solid"  drawingStyle="solid" />
    <comment>
      Beam line with magnets
    </comment>
    <vis name="BeamPipeVis"         ref="AnlLightGray"       showDaughters="true" visible="true"/>
    <vis name="FFMagnetVis"         ref="AnlGreen"            showDaughters="true" visible="true"/>
    <vis name="FFMagnetCoilVis"     ref="AnlRed"              showDaughters="true" visible="true"/>

    <vis name="EcalVis" alpha="0.1" r="0.0" g="0.75" b="0.1" showDaughters="false"/>
    <vis name="EcalEndcapVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" />
    <vis name="EcalBarrelVis" alpha="1.0" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true" />
    <comment>
      ZDC visualization
    </comment>

    <vis name="TOFVis" alpha="0.5" r="1" g="0" b="1" showDaughters="true" />
    <vis name="ffi_ZDC_ECAL_Vis"        ref="AnlGreen" showDaughters="true"  visible="true"/>
    <vis name="ffi_ZDC_ECAL_module_Vis" ref="AnlRed"   showDaughters="false" visible="true"/>
    <vis name="ffi_ZDC_HCAL_Vis"        ref="AnlBlue"  showDaughters="true"  visible="true"/>

    <comment>
      PID visualization
    </comment>

    <vis name="DRICH_vessel_vis"  ref="AnlGray" showDaughters="true" visible="true" />
    <vis name="DRICH_gas_vis"     ref="AnlGreen" alpha="0.5" showDaughters="true" visible="true" />
    <vis name="DRICH_aerogel_vis" ref="AnlTeal" showDaughters="true" visible="true" />
    <vis name="DRICH_filter_vis"  alpha="1.0" r="1.0" g="1.0" b="0.0" showDaughters="true" visible="true" />
    <vis name="DRICH_mirror_vis"  ref="AnlGray" showDaughters="true" visible="true" />
    <vis name="DRICH_sensor_vis"  ref="AnlBlue" showDaughters="true" visible="true" />
    <vis name="PFRICH_sensor_vis" ref="AnlBlue" showDaughters="true" visible="true" />

    <vis name="SolenoidCoilVis" alpha="1.0" r="0.55" g="0.55" b="0.7" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" />
    <vis name="SolenoidCryostatVis" alpha="0.4" r="0.55" g="0.55" b="0.7" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" />
    <vis name="SolenoidYokeVis" alpha="0.2" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true" lineStyle="solid"  drawingStyle="solid" />
    <vis name="RICHVis" alpha="0.5" r="1" g="0" b="1" showDaughters="true"/>
    <vis name="BeamPipeVis"    alpha="1"  r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/>
    <vis name="MRICH_aerogel_vis" ref="AnlTeal" showDaughters="true" visible="true" />
    <vis name="MRICH_frame_vis" ref="AnlGold" showDaughters="true" visible="true" />
    <vis name="MRICH_lens_vis" ref="AnlGray" showDaughters="true" visible="true" />
    <vis name="MRICH_mirror_vis"  ref="AnlGray" showDaughters="true" visible="true" />

    <vis name="cb_SolenoidVis"          alpha="0.4"  r= "0.1"  g="0.0"  b="0.1"  showDaughters="true" visible="true"/>
    <vis name="ffi_ZDC_ECAL_Vis"        alpha="0.1"  r= "0.1"  g="0.0"  b="1.0"  showDaughters="true" visible="true"/>
    <vis name="ffi_ZDC_ECAL_module_Vis" alpha="1.0"  r= "0.1"  g="1.0"  b="0.9"  showDaughters="true" visible="true"/>
    <vis name="ffi_ZDC_HCAL_Vis"        alpha="0.1"  r= "0.1"  g="0.0"  b="1.0"  showDaughters="true" visible="true"/>
    <vis name="cb_CTDVis"               alpha="0.1"  r= "0.1"  g="0.0"  b="1.0"  showDaughters="true" visible="true"/>
    <vis name="cb_CTD_Si_layerVis"      alpha="1.0"  r= "0.9"  g="1.0"  b="0.1"  showDaughters="true" visible="true"/>
    <vis name="ce_GEMVis"               alpha="0.1"  r= "0.1"  g="0.0"  b="1.0"  showDaughters="true" visible="true"/>
    <vis name="cb_GEM_layerVis"         alpha="0.8"  r= "0.8"  g="0.4"  b="0.3"  showDaughters="true" visible="true"/>
    <vis name="cb_VTX_BarrelVis"        alpha="0.1"  r= "0.1"  g="0.0"  b="1.0"  showDaughters="true" visible="true"/>
    <vis name="cb_VTX_Barrel_layerVis"  alpha="2.0"  r= "0.0"  g="0.2"  b="0.8"  showDaughters="true" visible="true"/>
    <vis name="RICHServiceVis"  ref="AnlGray" showDaughters="true" visible="true" />

    <vis name="ci_GEMVis"  r= "0.8"  g="0.4"  b="0.3" alpha="0.8" showDaughters="true" visible="true"/>
    <vis name="ci_HCALVis"  r= "0.6"  g="0"  b="0.6" alpha="1.0" showDaughters="true" visible="true"/>
  </display>

    <comment>
      Deprecated colors.
    vis name="GreenVis"       alpha="1.0"  r= "0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/
    vis name="RedVis"         alpha="0.2"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/
    vis name="RPVis"          alpha="0.99"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/
    vis name="RPLayerVis"     alpha="0.99"  r= "0.0" g="0.7" b="0.3" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" /
    vis name="BlueVis"        alpha="1.0"  r= "0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/
    vis name="OrangeVis"      alpha="1.0"  r= "1.0" g="0.45" b="0.0" showDaughters="true" visible="true"/
    vis name="RedGreenVis"    alpha="0.5"  r= "1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/
    vis name="BlueGreenVis"   alpha="0.5"  r= "0.0" g="1.0" b="1.0" showDaughters="true" visible="true"/
    vis name="PurpleVis"      alpha="1.0"  r= "1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/
    vis name="DoubleRedG"     alpha="0.5"  r= "2.0" g=".10" b="0.0" showDaughters="true" visible="true"/
    vis name="RBG015"         alpha="0.5"  r= "0.0" g=".2"  b="1.0" showDaughters="true" visible="true"/
    vis name="RBG510"         alpha="0.5"  r= "1.0" g=".2"  b="0.0" showDaughters="true" visible="true"/
    vis name="RBG"            alpha="0.5"  r= "1.0" g="1.0" b="1.0" showDaughters="true" visible="true"/
    vis name="GrayVis"        alpha="1.0"  r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/
    </comment>
    <vis name="GreenVis"       alpha="1.0"  r= "0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
    <vis name="RedVis"         alpha="0.2"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
    <vis name="RPVis"          alpha="0.99"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
    <vis name="RPLayerVis"     alpha="0.99"  r= "0.0" g="0.7" b="0.3" showDaughters="true" visible="true" lineStyle="solid" drawingStyle="solid" />
    <vis name="BlueVis"        alpha="1.0"  r= "0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="OrangeVis"      alpha="1.0"  r= "1.0" g="0.45" b="0.0" showDaughters="true" visible="true"/>
    <vis name="RedGreenVis"    alpha="0.5"  r= "1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
    <vis name="BlueGreenVis"   alpha="0.5"  r= "0.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="PurpleVis"      alpha="1.0"  r= "1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="DoubleRedG"     alpha="0.5"  r= "2.0" g=".10" b="0.0" showDaughters="true" visible="true"/>
    <vis name="RBG015"         alpha="0.5"  r= "0.0" g=".2"  b="1.0" showDaughters="true" visible="true"/>
    <vis name="RBG510"         alpha="0.5"  r= "1.0" g=".2"  b="0.0" showDaughters="true" visible="true"/>
    <vis name="RBG"            alpha="0.5"  r= "1.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
    <vis name="GrayVis"        alpha="1.0"  r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/>

  </display>

compact/drich.xml

0 → 100644
+257 −0

File added.

Preview size limit exceeded, changes collapsed.

+10 −76

File changed.

Preview size limit exceeded, changes collapsed.

compact/fake_dirc.xml

0 → 100644
+105 −0

File added.

Preview size limit exceeded, changes collapsed.

+74 −23

File changed.

Preview size limit exceeded, changes collapsed.

compact/helmholtz.xml

0 → 100644
+348 −0

File added.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

compact/mrich.xml

0 → 100644
+172 −0

File added.

Preview size limit exceeded, changes collapsed.

compact/pfrich.xml

0 → 100644
+210 −0

File added.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

compact/tof.xml

0 → 100644
+21 −0

File added.

Preview size limit exceeded, changes collapsed.

macro/dirc_vis.mac

0 → 100644
+203 −0

File added.

Preview size limit exceeded, changes collapsed.

macro/mrich_vis.mac

0 → 100644
+50 −0

File added.

Preview size limit exceeded, changes collapsed.

macro/vis.mac

0 → 100644
+29 −0

File added.

Preview size limit exceeded, changes collapsed.

src/DIRC_geo.cpp

0 → 100644
+362 −0

File added.

Preview size limit exceeded, changes collapsed.

src/DRICH_geo.cpp

0 → 100644
+549 −0

File added.

Preview size limit exceeded, changes collapsed.

src/FieldMapBrBz.cpp

0 → 100644
+226 −0

File added.

Preview size limit exceeded, changes collapsed.

src/FileLoader.cpp

0 → 100644
+66 −0

File added.

Preview size limit exceeded, changes collapsed.

src/FileLoaderHelper.h

0 → 100644
+144 −0

File added.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

src/MRich_geo.cpp

0 → 100644
+460 −0

File added.

Preview size limit exceeded, changes collapsed.

src/PFRICH_geo.cpp

0 → 100644
+316 −0

File added.

Preview size limit exceeded, changes collapsed.

src/allsilicon_support.cpp

deleted100644 → 0
+0 −81

File deleted.

Preview size limit exceeded, changes collapsed.

src/cb_CTD_Si.cpp

deleted100644 → 0
+0 −74

File deleted.

Preview size limit exceeded, changes collapsed.

src/cb_DIRC.cpp

deleted100644 → 0
+0 −73

File deleted.

Preview size limit exceeded, changes collapsed.

src/cb_VTX_Barrel.cpp

deleted100644 → 0
+0 −117

File deleted.

Preview size limit exceeded, changes collapsed.

src/ce_MRICH.cpp

deleted100644 → 0
+0 −101

File deleted.

Preview size limit exceeded, changes collapsed.

+15 −6

File changed.

Preview size limit exceeded, changes collapsed.

+29 −9

File changed.

Preview size limit exceeded, changes collapsed.

+11 −2

File changed.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

+10 −2

File changed.

Preview size limit exceeded, changes collapsed.

+10 −2

File changed.

Preview size limit exceeded, changes collapsed.

+25 −9

File changed.

Preview size limit exceeded, changes collapsed.

views/view20.yml

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

+15 −4

File changed.

Preview size limit exceeded, changes collapsed.

+32 −9

File changed.

Preview size limit exceeded, changes collapsed.

+15 −4

File changed.

Preview size limit exceeded, changes collapsed.