From b0f2db466bf05cab7d94d4242b995f143ac9ec72 Mon Sep 17 00:00:00 2001 From: Christopher Dilks <christopher.j.dilks@gmail.com> Date: Thu, 1 Sep 2022 04:38:03 -0400 Subject: [PATCH] feat: add PFRICH example for `Geant4OpticalTracker` SD plugin usage --- examples/CMakeLists.txt | 2 +- examples/OpticalTracker/.gitignore | 2 + examples/OpticalTracker/CMakeLists.txt | 59 +++ examples/OpticalTracker/README.md | 55 +++ examples/OpticalTracker/compact/materials.xml | 380 ++++++++++++++++++ examples/OpticalTracker/compact/pfrich.xml | 209 ++++++++++ examples/OpticalTracker/doc/geometry.png | Bin 0 -> 66224 bytes examples/OpticalTracker/scripts/richsim.py | 92 +++++ .../scripts/test_number_of_hits.C | 21 + examples/OpticalTracker/src/PFRICH_geo.cpp | 270 +++++++++++++ 10 files changed, 1089 insertions(+), 1 deletion(-) create mode 100644 examples/OpticalTracker/.gitignore create mode 100644 examples/OpticalTracker/CMakeLists.txt create mode 100644 examples/OpticalTracker/README.md create mode 100644 examples/OpticalTracker/compact/materials.xml create mode 100644 examples/OpticalTracker/compact/pfrich.xml create mode 100644 examples/OpticalTracker/doc/geometry.png create mode 100755 examples/OpticalTracker/scripts/richsim.py create mode 100644 examples/OpticalTracker/scripts/test_number_of_hits.C create mode 100644 examples/OpticalTracker/src/PFRICH_geo.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 0837e710d..1f4b7b2be 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -42,7 +42,7 @@ dd4hep_configure_output() #========================================================================== -SET(DD4HEP_EXAMPLES "AlignDet CLICSiD ClientTests Conditions DDCMS DDCodex DDDigi DDG4 DDG4_MySensDet LHeD OpticalSurfaces Persistency DDCAD SimpleDetector" +SET(DD4HEP_EXAMPLES "AlignDet CLICSiD ClientTests Conditions DDCMS DDCodex DDDigi DDG4 DDG4_MySensDet LHeD OpticalSurfaces OpticalTracker Persistency DDCAD SimpleDetector" CACHE STRING "List of DD4hep Examples to build") SEPARATE_ARGUMENTS(DD4HEP_EXAMPLES) diff --git a/examples/OpticalTracker/.gitignore b/examples/OpticalTracker/.gitignore new file mode 100644 index 000000000..ad9a4fb97 --- /dev/null +++ b/examples/OpticalTracker/.gitignore @@ -0,0 +1,2 @@ +install +*.root diff --git a/examples/OpticalTracker/CMakeLists.txt b/examples/OpticalTracker/CMakeLists.txt new file mode 100644 index 000000000..7c5b04ebe --- /dev/null +++ b/examples/OpticalTracker/CMakeLists.txt @@ -0,0 +1,59 @@ +#========================================================================== +# AIDA Detector description implementation +#-------------------------------------------------------------------------- +# Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +# All rights reserved. +# +# For the licensing terms see $DD4hepINSTALL/LICENSE. +# For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +# +#========================================================================== +cmake_minimum_required(VERSION 3.12 FATAL_ERROR) + +IF(NOT TARGET DD4hep::DDCore) + find_package ( DD4hep REQUIRED ) + include ( ${DD4hep_DIR}/cmake/DD4hep.cmake ) + include ( ${DD4hep_DIR}/cmake/DD4hepBuild.cmake ) + dd4hep_configure_output() +ENDIF() + +dd4hep_set_compiler_flags() +dd4hep_use_python_executable() + +#========================================================================== +dd4hep_print("|++> OpticalTracker: ROOT version: ${ROOT_VERSION}") + +if(NOT ${ROOT_VERSION} VERSION_GREATER_EQUAL 6.18.00) + dd4hep_print("|++> Not building OpticalTracker test") + return() +endif() +dd4hep_print("|++> Building OpticalTracker test") + +#-------------------------------------------------------------------------- +dd4hep_configure_output() + +set(OpticalTracker_INSTALL ${CMAKE_INSTALL_PREFIX}/examples/OpticalTracker) +dd4hep_add_plugin(OpticalTrackerExample SOURCES src/*.cpp + USES DD4hep::DDCore DD4hep::DDCond ROOT::Core ROOT::Geom ROOT::GenVector ROOT::MathCore) +install(TARGETS OpticalTrackerExample LIBRARY DESTINATION lib) +install(DIRECTORY compact scripts DESTINATION ${OpticalTracker_INSTALL} ) +dd4hep_configure_scripts( OpticalTracker DEFAULT_SETUP WITH_TESTS) + +# ---Test: run simulation +dd4hep_add_test_reg( OpticalTracker_simulation + COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_OpticalTracker.sh" + EXEC_ARGS ${Python_EXECUTABLE} ${OpticalTracker_INSTALL}/scripts/richsim.py + --outputFile "${OpticalTracker_INSTALL}/sim.root" + REGEX_PASS "TEST: passed" + REGEX_FAIL "Exception;EXCEPTION;ERROR;Error;FATAL" + ) + +# ---Test: Number of raw photon hits +dd4hep_add_test_reg( OpticalTracker_number_of_hits + COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_OpticalTracker.sh" + EXEC_ARGS root.exe -b -x -n -q -l + "${OpticalTracker_INSTALL}/scripts/test_number_of_hits.C(\"${OpticalTracker_INSTALL}/sim.root\")" + REGEX_PASS "TEST: passed" + REGEX_FAIL "TEST: failed" + DEPENDS OpticalTracker_simulation + ) diff --git a/examples/OpticalTracker/README.md b/examples/OpticalTracker/README.md new file mode 100644 index 000000000..c07b25ab5 --- /dev/null +++ b/examples/OpticalTracker/README.md @@ -0,0 +1,55 @@ +Proximity Focusing RICH +======================= + +Example RICH demonstrating `Geant4OpticalTracker` Sensitive Detector plugin usage. + +This detector design has been pulled from [EPIC](https://github.com/eic/epic), and was originally developed in +[ATHENA](https://eicweb.phy.anl.gov/EIC/detectors/athena), for the Electron-Ion Collider. + + + +For testing, it is recommended to follow `../README.md` and use `ctest`. See below for guidance for +running this example standalone. + +To use `ctest`, run: +```bash +cd .. # `pwd` should now be `DD4hep/examples` +mkdir build +cd build +cmake -DDD4HEP_EXAMPLES="OpticalTracker" .. && make && make install +ctest --output-on-failure # or use `--verbose` to see all output +``` + +## Local Development +If you want to run this example standalone, without needing to run `ctest`, +make a standalone build. The following assumes that your current working +directory is `DD4hep/examples/OpticalTracker`. + +Build with `cmake`, for example: +```bash +cmake -B build -S . -D CMAKE_INSTALL_PREFIX=install +cmake --build build -- install +``` + +Run a test simulation: +```bash +install/bin/run_test_OpticalTracker.sh \ + python install/examples/OpticalTracker/scripts/richsim.py +``` +- See default settings in `scripts/richsim.py` +- Override these settings, or add additional settings by appending `ddsim` options + +Draw the hits, to show Cherenkov photon rings: +```bash +root sim.root +``` +```cpp +// In ROOT interpreter: +EVENT->Draw("PFRICHHits.position.Y():PFRICHHits.position.X()"); // hit positions +EVENT->Draw("@PFRICHHits.size()"); // raw number of hits per event +``` + +Test for the expected number of hits: +```bash +root -b -q -l scripts/test_number_of_hits.C +``` diff --git a/examples/OpticalTracker/compact/materials.xml b/examples/OpticalTracker/compact/materials.xml new file mode 100644 index 000000000..97f37c61d --- /dev/null +++ b/examples/OpticalTracker/compact/materials.xml @@ -0,0 +1,380 @@ +<lccdd> + <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 + "/> + <!-- PFRICH property tables from https://github.com/cisbani/dRICh/blob/main/share/source/g4dRIChOptics.hh --> + <matrix name="RINDEX__C4F10_PFRICH" coldim="2" values=" + 1.7712*eV 1.0013 + 1.92389*eV 1.0013 + 2.10539*eV 1.00131 + 2.3247*eV 1.00131 + 2.59502*eV 1.00132 + 2.93647*eV 1.00133 + 3.38139*eV 1.00134 + 3.98521*eV 1.00136 + 4.85156*eV 1.0014 + 6.19921*eV 1.00149 + "/> + <matrix name="ABSLENGTH__C4F10_PFRICH" coldim="2" values=" + 1.7712*eV 6.0*m + 1.92389*eV 6.0*m + 2.10539*eV 6.0*m + 2.3247*eV 6.0*m + 2.59502*eV 6.0*m + 2.93647*eV 6.0*m + 3.38139*eV 6.0*m + 3.98521*eV 6.0*m + 4.85156*eV 6.0*m + 6.19921*eV 6.0*m + "/> + <matrix name="RINDEX__Aerogel_PFRICH" coldim="2" values=" + 1.87855*eV 1.01852 + 1.96673*eV 1.01856 + 2.05490*eV 1.01861 + 2.14308*eV 1.01866 + 2.23126*eV 1.01871 + 2.31943*eV 1.01876 + 2.40761*eV 1.01881 + 2.49579*eV 1.01887 + 2.58396*eV 1.01893 + 2.67214*eV 1.01899 + 2.76032*eV 1.01905 + 2.84849*eV 1.01912 + 2.93667*eV 1.01919 + 3.02485*eV 1.01926 + 3.11302*eV 1.01933 + 3.20120*eV 1.01941 + 3.28938*eV 1.01948 + 3.37755*eV 1.01956 + 3.46573*eV 1.01965 + 3.55391*eV 1.01973 + 3.64208*eV 1.01982 + 3.73026*eV 1.01991 + 3.81844*eV 1.02001 + 3.90661*eV 1.02010 + 3.99479*eV 1.02020 + 4.08297*eV 1.02030 + 4.17114*eV 1.02041 + 4.25932*eV 1.02052 + 4.34750*eV 1.02063 + 4.43567*eV 1.02074 + 4.52385*eV 1.02086 + 4.61203*eV 1.02098 + 4.70020*eV 1.02111 + 4.78838*eV 1.02123 + 4.87656*eV 1.02136 + 4.96473*eV 1.02150 + 5.05291*eV 1.02164 + 5.14109*eV 1.02178 + 5.22927*eV 1.02193 + 5.31744*eV 1.02208 + 5.40562*eV 1.02223 + 5.49380*eV 1.02239 + 5.58197*eV 1.02255 + 5.67015*eV 1.02271 + 5.75833*eV 1.02288 + 5.84650*eV 1.02306 + 5.93468*eV 1.02324 + 6.02286*eV 1.02342 + 6.11103*eV 1.02361 + 6.19921*eV 1.02381 + "/> + <matrix name="ABSLENGTH__Aerogel_PFRICH" coldim="2" values=" + 1.87855*eV 140.000*mm + 1.96673*eV 141.973*mm + 2.05490*eV 143.776*mm + 2.14308*eV 145.431*mm + 2.23126*eV 146.955*mm + 2.31943*eV 148.364*mm + 2.40761*eV 149.669*mm + 2.49579*eV 150.882*mm + 2.58396*eV 152.012*mm + 2.67214*eV 153.067*mm + 2.76032*eV 154.055*mm + 2.84849*eV 154.982*mm + 2.93667*eV 155.854*mm + 3.02485*eV 156.674*mm + 3.11302*eV 157.448*mm + 3.20120*eV 158.180*mm + 3.28938*eV 158.872*mm + 3.37755*eV 159.528*mm + 3.46573*eV 160.150*mm + 3.55391*eV 160.742*mm + 3.64208*eV 147.916*mm + 3.73026*eV 128.139*mm + 3.81844*eV 111.378*mm + 3.90661*eV 97.121*mm + 3.99479*eV 84.948*mm + 4.08297*eV 74.518*mm + 4.17114*eV 65.552*mm + 4.25932*eV 57.819*mm + 4.34750*eV 51.130*mm + 4.43567*eV 45.327*mm + 4.52385*eV 40.278*mm + 4.61203*eV 35.873*mm + 4.70020*eV 32.019*mm + 4.78838*eV 28.641*mm + 4.87656*eV 25.670*mm + 4.96473*eV 23.054*mm + 5.05291*eV 20.742*mm + 5.14109*eV 18.698*mm + 5.22927*eV 16.884*mm + 5.31744*eV 15.272*mm + 5.40562*eV 13.837*mm + 5.49380*eV 12.557*mm + 5.58197*eV 11.413*mm + 5.67015*eV 10.389*mm + 5.75833*eV 9.470*mm + 5.84650*eV 8.645*mm + 5.93468*eV 7.902*mm + 6.02286*eV 7.233*mm + 6.11103*eV 6.629*mm + 6.19921*eV 6.082*mm + "/> + <matrix name="RAYLEIGH__Aerogel_PFRICH" coldim="2" values=" + 1.87855*eV 281.107*mm + 1.96673*eV 233.984*mm + 2.05490*eV 196.334*mm + 2.14308*eV 165.962*mm + 2.23126*eV 141.242*mm + 2.31943*eV 120.958*mm + 2.40761*eV 104.188*mm + 2.49579*eV 90.226*mm + 2.58396*eV 78.527*mm + 2.67214*eV 68.663*mm + 2.76032*eV 60.301*mm + 2.84849*eV 53.174*mm + 2.93667*eV 47.070*mm + 3.02485*eV 41.816*mm + 3.11302*eV 37.277*mm + 3.20120*eV 33.336*mm + 3.28938*eV 29.903*mm + 3.37755*eV 26.900*mm + 3.46573*eV 24.265*mm + 3.55391*eV 21.946*mm + 3.64208*eV 19.896*mm + 3.73026*eV 18.080*mm + 3.81844*eV 16.468*mm + 3.90661*eV 15.030*mm + 3.99479*eV 13.746*mm + 4.08297*eV 12.596*mm + 4.17114*eV 11.564*mm + 4.25932*eV 10.637*mm + 4.34750*eV 9.799*mm + 4.43567*eV 9.043*mm + 4.52385*eV 8.358*mm + 4.61203*eV 7.738*mm + 4.70020*eV 7.172*mm + 4.78838*eV 6.659*mm + 4.87656*eV 6.191*mm + 4.96473*eV 5.762*mm + 5.05291*eV 5.370*mm + 5.14109*eV 5.011*mm + 5.22927*eV 4.681*mm + 5.31744*eV 4.379*mm + 5.40562*eV 4.100*mm + 5.49380*eV 3.844*mm + 5.58197*eV 3.606*mm + 5.67015*eV 3.386*mm + 5.75833*eV 3.184*mm + 5.84650*eV 2.996*mm + 5.93468*eV 2.822*mm + 6.02286*eV 2.660*mm + 6.11103*eV 2.510*mm + 6.19921*eV 2.370*mm + "/> + <matrix name="RINDEX__Acrylic_PFRICH" coldim="2" values=" + 4.13281*eV 1.5017 + 4.22099*eV 1.5017 + 4.30916*eV 1.5017 + 4.39734*eV 1.5017 + 4.48552*eV 1.5017 + 4.57369*eV 1.5017 + 4.66187*eV 1.5017 + 4.75005*eV 1.5017 + 4.83822*eV 1.5017 + 4.9264*eV 1.5017 + 5.01458*eV 1.5017 + 5.10275*eV 1.5017 + 5.19093*eV 1.5017 + 5.27911*eV 1.5017 + 5.36728*eV 1.5017 + 5.45546*eV 1.5017 + 5.54364*eV 1.5017 + 5.63181*eV 1.5017 + 5.71999*eV 1.5017 + 5.80817*eV 1.5017 + 5.89634*eV 1.5017 + 5.98452*eV 1.5017 + 6.0727*eV 1.5017 + 6.16087*eV 1.5017 + 6.24905*eV 1.5017 + 6.33723*eV 1.5017 + 6.4254*eV 1.5017 + 6.51358*eV 1.5017 + 6.60176*eV 1.5017 + 6.68993*eV 1.5017 + 6.77811*eV 1.5017 + 6.86629*eV 1.5017 + 6.95446*eV 1.5017 + 7.04264*eV 1.5017 + 7.13082*eV 1.5017 + 7.21899*eV 1.5017 + 7.30717*eV 1.5017 + 7.39535*eV 1.5017 + 7.48353*eV 1.5017 + 7.5717*eV 1.5017 + 7.65988*eV 1.5017 + 7.74806*eV 1.5017 + 7.83623*eV 1.5017 + 7.92441*eV 1.5017 + 8.01259*eV 1.5017 + 8.10076*eV 1.5017 + 8.18894*eV 1.5017 + 8.27712*eV 1.5017 + 8.36529*eV 1.5017 + 8.45347*eV 1.5017 + "/> + <matrix name="ABSLENGTH__Acrylic_PFRICH" coldim="2" values=" + 4.13281*eV 82.0704*mm + 4.22099*eV 36.9138*mm + 4.30916*eV 13.3325*mm + 4.39734*eV 5.03627*mm + 4.48552*eV 2.3393*mm + 4.57369*eV 1.36177*mm + 4.66187*eV 0.933192*mm + 4.75005*eV 0.708268*mm + 4.83822*eV 0.573082*mm + 4.9264*eV 0.483641*mm + 5.01458*eV 0.420282*mm + 5.10275*eV 0.373102*mm + 5.19093*eV 0.33662*mm + 5.27911*eV 0.307572*mm + 5.36728*eV 0.283902*mm + 5.45546*eV 0.264235*mm + 5.54364*eV 0.247641*mm + 5.63181*eV 0.233453*mm + 5.71999*eV 0.221177*mm + 5.80817*eV 0.210456*mm + 5.89634*eV 0.201012*mm + 5.98452*eV 0.192627*mm + 6.0727*eV 0.185134*mm + 6.16087*eV 0.178399*mm + 6.24905*eV 0.172309*mm + 6.33723*eV 0.166779*mm + 6.4254*eV 0.166779*mm + 6.51358*eV 0.166779*mm + 6.60176*eV 0.166779*mm + 6.68993*eV 0.166779*mm + 6.77811*eV 0.166779*mm + 6.86629*eV 0.166779*mm + 6.95446*eV 0.166779*mm + 7.04264*eV 0.166779*mm + 7.13082*eV 0.166779*mm + 7.21899*eV 0.166779*mm + 7.30717*eV 0.166779*mm + 7.39535*eV 0.166779*mm + 7.48353*eV 0.166779*mm + 7.5717*eV 0.166779*mm + 7.65988*eV 0.166779*mm + 7.74806*eV 0.166779*mm + 7.83623*eV 0.166779*mm + 7.92441*eV 0.166779*mm + 8.01259*eV 0.166779*mm + 8.10076*eV 0.166779*mm + 8.18894*eV 0.166779*mm + 8.27712*eV 0.166779*mm + 8.36529*eV 0.166779*mm + 8.45347*eV 0.166779*mm + "/> + </properties> + + <materials> + <material name="Air"> + <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"/> + </material> + <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__Air"/> + <property name="ABSLENGTH" coldim="2" values="1*eV 200*m 5*eV 200*m"/> + </material> + <material name="Vacuum"> + <D type="density" unit="g/cm3" value="0.0000000001"/> + <fraction n="0.754" ref="N"/> + <fraction n="0.234" ref="O"/> + <fraction n="0.012" ref="Ar"/> + </material> + <material name="VacuumOptical"> + <D type="density" unit="g/cm3" value="0.0000000001"/> + <fraction n="0.754" ref="N"/> + <fraction n="0.234" ref="O"/> + <fraction n="0.012" ref="Ar"/> + <property name="RINDEX" ref="RINDEX__Vacuum"/> + <property name="ABSLENGTH" coldim="2" values="1*eV 2000*m 5*eV 2000*m"/> + </material> + <material name="SiliconDioxide"> <!-- density from `G4_SILICON_DIOXIDE` (NIST DB) --> + <D type="density" value="2.32" unit="g/cm3"/> + <composite n="1" ref="Si"/> + <composite n="2" ref="O"/> + </material> + <material name="Plexiglass"> + <D type="density" value="1.19" unit="g/cm3"/> + <composite n="5" ref="C"/> + <composite n="8" ref="H"/> + <composite n="2" ref="O"/> + </material> + <material name="PolyvinylAcetate"> + <D type="density" value="1.19" unit="g/cm3"/> + <composite n="4" ref="C"/> + <composite n="6" ref="H"/> + <composite n="2" ref="O"/> + </material> + <material name="C4F10_PFRICH"> + <D type="density" value="0.009935" unit="g/cm3"/> + <composite n="4" ref="C"/> + <composite n="10" ref="F"/> + <property name="RINDEX" ref="RINDEX__C4F10_PFRICH"/> + <property name="ABSLENGTH" ref="ABSLENGTH__C4F10_PFRICH"/> + </material> + <material name="Aerogel_PFRICH"> + <D type="density" value="0.110" unit="g/cm3"/> + <comment> n_air = [dens(Si02)-dens(aerogel)] / [dens(Si02)-dens(Air) ] </comment> + <fraction n=" (2.32-0.11) / (2.32-0.0012)" ref="Air"/> + <fraction n="1 - (2.32-0.11) / (2.32-0.0012)" ref="SiliconDioxide"/> + <property name="RINDEX" ref="RINDEX__Aerogel_PFRICH"/> + <property name="ABSLENGTH" ref="ABSLENGTH__Aerogel_PFRICH"/> + <property name="RAYLEIGH" ref="RAYLEIGH__Aerogel_PFRICH"/> + </material> + <material name="Acrylic_PFRICH"> + <D type="density" value="1.19" unit="g/cm3"/> + <comment> TO BE IMPROVED </comment> + <fraction n="0.99" ref="Plexiglass"/> + <fraction n="0.01" ref="PolyvinylAcetate"/> + <property name="RINDEX" ref="RINDEX__Acrylic_PFRICH"/> + <property name="ABSLENGTH" ref="ABSLENGTH__Acrylic_PFRICH"/> + </material> + </materials> + + <surfaces> + <opticalsurface name="SensorSurface_PFRICH" model="glisur" finish="polished" type="dielectric_dielectric"> + <property name="EFFICIENCY" coldim="2" values=" + 1*eV 1 + 4*eV 1 + 7*eV 1 + "/> + </opticalsurface> + </surfaces> + +</lccdd> diff --git a/examples/OpticalTracker/compact/pfrich.xml b/examples/OpticalTracker/compact/pfrich.xml new file mode 100644 index 000000000..9f3581575 --- /dev/null +++ b/examples/OpticalTracker/compact/pfrich.xml @@ -0,0 +1,209 @@ +<lccdd + xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd" + > + +<info + name="PFRICH" + title="Proximity Focusing Ring Imaging Cherenkov Detector" + author="Christopher Dilks" + url="https://github.com/eic/epic" + status="development" + version="1.0" + > + <comment> + Example RICH Detector + </comment> +</info> + +<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> + +<includes> + <gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/elements.xml"/> + <file ref="materials.xml"/> +</includes> + +<display> + <vis name="vessel_vis" r="102/256" g="102/256" b="102/256" alpha="1.0" showDaughters="true" visible="true" /> + <vis name="gas_vis" r="100/256" g="200/256" b="0/256" alpha="0.5" showDaughters="true" visible="true" /> + <vis name="aerogel_vis" r="0/256" g="161/256" b="156/256" alpha="1.0" showDaughters="true" visible="true" /> + <vis name="filter_vis" r="248/256" g="188/256" b="0/256" alpha="1.0" showDaughters="true" visible="true" /> + <vis name="sensor_vis" r="0/256" g="96/256" b="156/256" alpha="1.0" showDaughters="true" visible="true" /> + <vis name="service_vis" r="102/256" g="102/256" b="102/256" alpha="1.0" showDaughters="true" visible="true" /> + <vis name="no_vis" showDaughters="false" visible="false" /> +</display> + +<define> + <!-- global constants --> + <constant name="world_side" value="30*m"/> + <constant name="world_x" value="world_side"/> + <constant name="world_y" value="world_side"/> + <constant name="world_z" value="100*m"/> + <constant name="Pi" value="3.14159265359"/> + <constant name="mil" value="0.0254*mm"/> + <constant name="inch" value="2.54*cm"/> + <!-- RICH constants --> + <constant name="PFRICH_ID" value="1"/> <!-- unique ID for this detector --> + <constant name="PFRICH_Length" value="58.0*cm"/> <!-- vessel z-length --> + <constant name="PFRICH_zmin" value="-150*cm"/> <!-- vessel front --> + <constant name="PFRICH_zmax" value="PFRICH_zmin - PFRICH_Length"/> <!-- vessel back --> + <constant name="PFRICH_rmin0" value="5*cm"/> <!-- bore radius at vessel frontplane --> + <constant name="PFRICH_rmin1" value="7*cm"/> <!-- bore radius at vessel backplane --> + <constant name="PFRICH_rmax" value="93*cm"/> <!-- vessel backplane radius --> + <constant name="PFRICH_wall_thickness" value="0.5*cm"/> <!-- thickness of radial walls --> + <constant name="PFRICH_window_thickness" value="0.1*cm"/> <!-- thickness of entrance and exit walls --> + <constant name="PFRICH_aerogel_thickness" value="3.0*cm"/> <!-- aerogel thickness --> + <constant name="PFRICH_filter_thickness" value="0.3*mm"/> <!-- filter thickness (between aerogel and gas) --> + <constant name="PFRICH_sensor_active_size" value="24.0*mm"/> <!-- sensor side length (effective area) --> + <constant name="PFRICH_sensor_full_size" value="25.8*mm"/> <!-- sensor side length (full size, with enclosure) --> + <constant name="PFRICH_sensor_thickness" value="0.5*mm"/> <!-- sensor thickness --> + <constant name="PFRICH_sensor_dist" value="40*cm"/> <!-- distance between aerogel exit plane and sensor entrance plane --> + <constant name="PFRICH_num_px" value="8"/> <!-- number of pixels along one side of the sensor --> + <constant name="PFRICH_pixel_pitch" value="PFRICH_sensor_active_size / PFRICH_num_px"/> <!-- center-to-center distance between sensor pixels --> +</define> + +<detectors> + + <!-- /detectors/detector --> + <comment> + ### PFRICH: Proximity Focusing RICH + </comment> + <detector + id="PFRICH_ID" + name="PFRICH" + type="PFRICH" + readout="PFRICHHits" + gas="C4F10_PFRICH" + material="Aluminum" + vis_vessel="vessel_vis" + vis_gas="gas_vis" + > + + <!-- /detectors/detector/dimensions --> + <comment> + #### Vessel + - dimensions: + - `zmin`: z-position of vessel front plane + - `length`: overall z-length of the full vessel + - `rmin0` and `rmin1`: bore radius at front plane and back plane, respectively + - `rmax0` and `rmax1`: outer radius of vessel, at front plane and back plane, respectively + - `wall_thickness`: thickness of radial walls + - `window_thickness`: thickness of entrance and exit disks + </comment> + <dimensions + zmin="PFRICH_zmin" + zmax="PFRICH_zmax" + length="PFRICH_Length" + rmin0="PFRICH_rmin0" + rmin1="PFRICH_rmin1" + rmax0="PFRICH_rmax" + rmax1="PFRICH_rmax" + wall_thickness="PFRICH_wall_thickness" + window_thickness="PFRICH_window_thickness" + /> + + <!-- /detectors/detector/radiator --> + <comment> + #### Radiator + - `radiator` includes aerogel and a filter; the filter is applied to the back of the aerogel, so that it + separates the aerogel and gas radiators + - dimensions: + - `frontplane`: front of the aerogel, w.r.t. front plane of the vessel envelope + - `rmin` and `rmax`: inner and outer radius (at the front plane; radial bounds are conical) + - `thickness`: radiator thickness, defined separately for aerogel and filter + </comment> + <radiator + frontplane="-PFRICH_window_thickness" + rmin="PFRICH_rmin0 + PFRICH_wall_thickness + 0.2*cm" + rmax="(PFRICH_rmax/PFRICH_zmax)*PFRICH_zmin + 8.0*cm" + > + <aerogel material="Aerogel_PFRICH" vis="aerogel_vis" thickness="PFRICH_aerogel_thickness" /> + <filter material="Acrylic_PFRICH" vis="filter_vis" thickness="PFRICH_filter_thickness" /> + </radiator> + + <!-- /detectors/detector/sensors --> + <comment> + #### Sensors + </comment> + <sensors> + + <!-- /detectors/detector/sensors/module --> + <comment> + ##### Sensor module + - dimensions: + - `side`: side length of the square module + - `thickness`: thickness of the sensor module + - `gap`: provides room between the squares, to help prevent them from overlapping + - notes: + - the values of `side` and `gap` will determine how many sensors there are, since the + sensor placement algorithm will try to place as many as it can in the specified region + - the material is `AirOptical`, to resolve a technical issue with the refractive boundary + </comment> + <module + material="AirOptical" + surface="SensorSurface_PFRICH" + vis="sensor_vis" + side="PFRICH_sensor_active_size" + thickness="PFRICH_sensor_thickness" + gap="0.5*(PFRICH_sensor_full_size-PFRICH_sensor_active_size) + 0.5*mm" + /> + + <!-- /detectors/detector/sensors/plane --> + <comment> + ##### Sensor plane + - sensors will be placed on a plane + - plane dimensions: + - `sensordist`: distance between sensor plane active surface (e.g., photocathode) and aerogel backplane + - `rmin`: minimum radial position of a sensor's centroid + - `rmax`: maximum radial position of a sensor's centroid + </comment> + <plane + sensordist="PFRICH_sensor_dist" + rmin="PFRICH_rmin1 + 2*cm" + rmax="PFRICH_rmax - 4*cm" + /> + + <services> + <comment> + Material should be equivalent with 3x0.5cm Al, spread over the entire available distance. + </comment> + <component name="aluminum" thickness="5*mm" vis="service_vis" material="Aluminum"/> + <component name="air" thickness="40*mm" vis="no_vis" material="Air"/> + <component name="aluminum" thickness="5*mm" vis="service_vis" material="Aluminum"/> + <component name="air" thickness="40*mm" vis="no_vis" material="Air"/> + <component name="aluminum" thickness="5*mm" vis="service_vis" material="Aluminum"/> + </services> + + </sensors> + </detector> +</detectors> + +<comment> + #### Readout + - segmentation: square matrix of pixels + - `grid_size_x,y`: size of each sensor pixel + - `offset_x,y`: specified such that the `x` and `y` field values are unsigned +</comment> +<readouts> + <readout name="PFRICHHits"> + <segmentation + type="CartesianGridXY" + grid_size_x="PFRICH_pixel_pitch" + grid_size_y="PFRICH_pixel_pitch" + offset_x="-0.5*(PFRICH_num_px-1)*PFRICH_pixel_pitch" + offset_y="-0.5*(PFRICH_num_px-1)*PFRICH_pixel_pitch" + /> + <id>system:8,module:12,x:32:-16,y:-16</id> + </readout> +</readouts> + +</lccdd> diff --git a/examples/OpticalTracker/doc/geometry.png b/examples/OpticalTracker/doc/geometry.png new file mode 100644 index 0000000000000000000000000000000000000000..0b85d7c9a47118c0e33ae795e06bc6ca11162773 GIT binary patch literal 66224 zcmZsDbySpH_x6A&AYIZWNS6%V($YvbNY_x(ol2K<w{&-df^<oDcX$8p@p+&3{r>n| z_tLdy&7Aw}efGJoYwxp<!3uH`D6a`#gFqmZkCLLFK%f_FAP_7V0T%c~<MRLm@Xree z;g8A)2nh45@+%+^8R(<v2W1!CgI4%dO5?QW=PxST=`Gw9%|>rvU=;167>KfIy0X$u zc`*2~N5J+}5Bml;NkaUHA$~pxKYpsj(2y}4b!~AqgPW^k9ptymp1h0FXXlcS_R^1% z(v$Xf<y(6yw+pvj_gt6Q54^7KJ^blo`w(;~g<${t43lMY8RBcdM2rIc`}oNDtcA71 z|Mx4DD`c?Prl@ZC+OPlp3J6gl_0-u1PV(P}NYrO-@B_2IG&u|=*?*o8@Du9)Gpav= zLMr!;u`TWY1{SjGS^nSmF>TRd>iws>@_-+Oy+e=e)pOg;n=Dp4p0BsDwPlHx{C$st zf>OU=k7OSGcd~<0uuQ55iE+nqDMepkcfZ_uKVN%$U*wQFIy-M48F%`<Bqk=V;>QfG zsjJ(%datFdQVRSjE=GFg|FQ|EA@1^<>-pAD61YI<*`wa+aPD#~l(|f+9+lM1-Ti&( z$hM`Gm6e4B&)IJZdH%~kv2r}L=m;BxkUDuU{z`SL>!Zc3fEiQ{_9KT`U#KVYgF!#> znE~@9Fnj_J792(xPb5G;lNwjrA2yj^x@p>c$WF8C!Oyt+Q}Fb3-JVdhTq3dXWkU8H z%JK1W`|VarB>&Zn-SqCM3sd{Unc&lDWS>!02L)9l$sn?OuH*ZR=Z9@1zKD9L)Af@P zN4KpO+L>p3;qp^D651~EOw(Pd_6u290~w~_rr7xSkTqUe5>d|e$I%176O`AFi3t)i z^gMQ7)~d6@|1)xTx!+41`lMhoYWkJP{&(y35--Ht3A%Q^8XtYutW?`nAw_<O9m5wB z8Bc!}I<mf!+?{lzb*~~*+pRuM52x``H+C~>)oFhj6U(?AG^OH}_g!UVWK{5deq4S= zQB==NIV|OOztVOXVlT+>;%Pau;;o2=`pM)y%qzITwS<9E6-wV;Qg0#w75m+gY`&`* z!;@Y*FKT+#67@EZ#@hCLa}g1d6KVg0f#hv?!J7}Bo{wtncav+|%vIY#D1=N6E3gyq zhlw12Vn}Fvoc=<$KHnbsnu5EqLbkZ_^s;%bdPLwJScbe$wAEmuKiOk6GC^Vj-xvS- z&j~$~D~0$tx;c>_PS<r4#{p~`#r!eJVCAde!z!Uo%X?gSA}S8Z!cC~&1FQ+RC}AS; ziqKX1bqjn!YNH6%0<5?9&7g50YpUnf><J(5?MAFaK_Ks(ae_`zw>EO;Yww$G(yNP$ z4JSh+=%!Idgdwq1?F-%Fpbrw#(n@JmO*N0VTx3evPc)3UJ&p86w&Ac8r3{$kY	N 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%0D-!qKN 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 HjD!9!&(ez% literal 0 HcmV?d00001 diff --git a/examples/OpticalTracker/scripts/richsim.py b/examples/OpticalTracker/scripts/richsim.py new file mode 100755 index 000000000..b371ce3a9 --- /dev/null +++ b/examples/OpticalTracker/scripts/richsim.py @@ -0,0 +1,92 @@ +""" +DD4hep simulation with some argument parsing +Based on M. Frank and F. Gaede runSim.py + @author A.Sailer + @version 0.1 + +Modified with settings for RICH simulation +""" +from __future__ import absolute_import, unicode_literals +import logging +import sys +import os + +from DDSim.DD4hepSimulation import DD4hepSimulation + + +if __name__ == "__main__": + logging.basicConfig( + format="%(name)-16s %(levelname)s %(message)s", + level=logging.INFO, + stream=sys.stdout, + ) + logger = logging.getLogger("DDSim") + + SIM = DD4hepSimulation() + + # Ensure that Cerenkov and optical physics are always loaded + def setupCerenkov(kernel): + from DDG4 import PhysicsList + + seq = kernel.physicsList() + cerenkov = PhysicsList(kernel, "Geant4CerenkovPhysics/CerenkovPhys") + cerenkov.MaxNumPhotonsPerStep = 10 + cerenkov.MaxBetaChangePerStep = 10.0 + cerenkov.TrackSecondariesFirst = False + cerenkov.VerboseLevel = 0 + cerenkov.enableUI() + seq.adopt(cerenkov) + ph = PhysicsList(kernel, "Geant4OpticalPhotonPhysics/OpticalGammaPhys") + ph.addParticleConstructor("G4OpticalPhoton") + ph.VerboseLevel = 0 + ph.enableUI() + seq.adopt(ph) + return None + + SIM.physics.setupUserPhysics(setupCerenkov) + + # Allow energy depositions to 0 energy in trackers (which include optical detectors) + SIM.filter.tracker = "edep0" + + # Some detectors are only sensitive to optical photons + SIM.filter.filters["opticalphotons"] = dict( + name="ParticleSelectFilter/OpticalPhotonSelector", + parameter={"particle": "opticalphoton"}, + ) + SIM.filter.mapDetFilter["PFRICH"] = "opticalphotons" + + # Use the optical tracker for the PFRICH + SIM.action.mapActions["PFRICH"] = "Geant4OpticalTrackerAction" + + # Disable user tracker particle handler, so hits can be associated to photons + SIM.part.userParticleHandler = "" + + # Particle gun settings: pions with fixed energy and theta, varying phi + SIM.numberOfEvents = 500 + SIM.enableGun = True + SIM.gun.energy = "40*GeV" + SIM.gun.particle = "pi+" + SIM.gun.thetaMin = "195.0*deg" + SIM.gun.thetaMax = "195.1*deg" + SIM.gun.distribution = "cos(theta)" + + # Installed compact file, otherwise assume the user passed `--compactFile` + install_prefix = os.environ.get("DD4hepExamplesINSTALL") + if install_prefix: + SIM.compactFile = install_prefix + "/examples/OpticalTracker/compact/pfrich.xml" + + # Output file (assuming CWD) + SIM.outputFile = "sim.root" + + # Override with user options + SIM.parseOptions() + + # Run the simulation + try: + SIM.run() + logger.info("TEST: passed") + except NameError as e: + logger.fatal("TEST: failed") + if "global name" in str(e): + globalToSet = str(e).split("'")[1] + logger.fatal("Unknown global variable, please add\nglobal %s\nto your steeringFile" % globalToSet) diff --git a/examples/OpticalTracker/scripts/test_number_of_hits.C b/examples/OpticalTracker/scripts/test_number_of_hits.C new file mode 100644 index 000000000..f5bef5bd5 --- /dev/null +++ b/examples/OpticalTracker/scripts/test_number_of_hits.C @@ -0,0 +1,21 @@ +void test_number_of_hits(TString sim_file_name="sim.root") { + + // test requirements + const Double_t expected_number_of_hits = 230.0; + const Double_t allowed_deviation = 15.0; + + // get average number of hits + auto sim_file = new TFile(sim_file_name); + auto t = (TTree*) sim_file->Get("EVENT"); + auto h = new TH1D("h","<hits>",500,0,1000); + t->Project("h","@PFRICHHits.size()"); + auto ave_hits = h->GetMean(); + + // check if this is the expected number of hits + bool pass_test = abs(ave_hits - expected_number_of_hits) < allowed_deviation; + std::cout << "TEST: " << (pass_test ? "passed" : "failed") + << " with average number of hits = " << ave_hits + << " (expected " << expected_number_of_hits + << "+/-" << allowed_deviation << ")" + << std::endl; +} diff --git a/examples/OpticalTracker/src/PFRICH_geo.cpp b/examples/OpticalTracker/src/PFRICH_geo.cpp new file mode 100644 index 000000000..779e2243d --- /dev/null +++ b/examples/OpticalTracker/src/PFRICH_geo.cpp @@ -0,0 +1,270 @@ +//---------------------------------- +// pfRICH: Proximity Focusing RICH +// Author: C. Dilks +//---------------------------------- + +#include "DD4hep/DetFactoryHelper.h" +#include "DD4hep/OpticalSurfaces.h" +#include "DD4hep/Printout.h" +#include "DDRec/DetectorData.h" +#include <XML/Helper.h> + +using namespace dd4hep; +using namespace dd4hep::rec; + +// create the detector +static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetector sens) +{ + xml::DetElement detElem = handle; + std::string detName = detElem.nameStr(); + int detID = detElem.id(); + xml::Component dims = detElem.dimensions(); + OpticalSurfaceManager surfMgr = desc.surfaceManager(); + DetElement det(detName, detID); + + // constant attributes ----------------------------------------------------------- + // - vessel + double vesselLength = dims.attr<double>(_Unicode(length)); + double vesselZmin = dims.attr<double>(_Unicode(zmin)); + double vesselRmin0 = dims.attr<double>(_Unicode(rmin0)); + double vesselRmin1 = dims.attr<double>(_Unicode(rmin1)); + double vesselRmax0 = dims.attr<double>(_Unicode(rmax0)); + double vesselRmax1 = dims.attr<double>(_Unicode(rmax1)); + double wallThickness = dims.attr<double>(_Unicode(wall_thickness)); + double windowThickness = dims.attr<double>(_Unicode(window_thickness)); + auto vesselMat = desc.material(detElem.attr<std::string>(_Unicode(material))); + auto gasvolMat = desc.material(detElem.attr<std::string>(_Unicode(gas))); + auto vesselVis = desc.visAttributes(detElem.attr<std::string>(_Unicode(vis_vessel))); + auto gasvolVis = desc.visAttributes(detElem.attr<std::string>(_Unicode(vis_gas))); + // - radiator (applies to aerogel and filter) + auto radiatorElem = detElem.child(_Unicode(radiator)); + double radiatorRmin = radiatorElem.attr<double>(_Unicode(rmin)); + double radiatorRmax = radiatorElem.attr<double>(_Unicode(rmax)); + double radiatorFrontplane = radiatorElem.attr<double>(_Unicode(frontplane)); + // - aerogel + auto aerogelElem = radiatorElem.child(_Unicode(aerogel)); + auto aerogelMat = desc.material(aerogelElem.attr<std::string>(_Unicode(material))); + auto aerogelVis = desc.visAttributes(aerogelElem.attr<std::string>(_Unicode(vis))); + double aerogelThickness = aerogelElem.attr<double>(_Unicode(thickness)); + // - filter + auto filterElem = radiatorElem.child(_Unicode(filter)); + auto filterMat = desc.material(filterElem.attr<std::string>(_Unicode(material))); + auto filterVis = desc.visAttributes(filterElem.attr<std::string>(_Unicode(vis))); + double filterThickness = filterElem.attr<double>(_Unicode(thickness)); + // - sensor module + auto sensorElem = detElem.child(_Unicode(sensors)).child(_Unicode(module)); + auto sensorMat = desc.material(sensorElem.attr<std::string>(_Unicode(material))); + auto sensorVis = desc.visAttributes(sensorElem.attr<std::string>(_Unicode(vis))); + auto sensorSurf = surfMgr.opticalSurface(sensorElem.attr<std::string>(_Unicode(surface))); + double sensorSide = sensorElem.attr<double>(_Unicode(side)); + double sensorGap = sensorElem.attr<double>(_Unicode(gap)); + double sensorThickness = sensorElem.attr<double>(_Unicode(thickness)); + // - sensor plane + auto sensorPlaneElem = detElem.child(_Unicode(sensors)).child(_Unicode(plane)); + double sensorPlaneDist = sensorPlaneElem.attr<double>(_Unicode(sensordist)); + double sensorPlaneRmin = sensorPlaneElem.attr<double>(_Unicode(rmin)); + double sensorPlaneRmax = sensorPlaneElem.attr<double>(_Unicode(rmax)); + + // BUILD VESSEL ////////////////////////////////////// + /* - `vessel`: aluminum enclosure, the mother volume of the pfRICH + * - `gasvol`: gas volume, which fills `vessel`; all other volumes defined below + * are children of `gasvol` + */ + + // tank solids + double boreDelta = vesselRmin1 - vesselRmin0; + Cone vesselSolid( + vesselLength / 2.0, + vesselRmin1, + vesselRmax1, + vesselRmin0, + vesselRmax0 + ); + Cone gasvolSolid( + vesselLength / 2.0 - windowThickness, + vesselRmin1 + wallThickness, + vesselRmax1 - wallThickness, + vesselRmin0 + wallThickness, + vesselRmax0 - wallThickness + ); + + // volumes + Volume vesselVol(detName, vesselSolid, vesselMat); + Volume gasvolVol(detName+"_gas", gasvolSolid, gasvolMat); + vesselVol.setVisAttributes(vesselVis); + gasvolVol.setVisAttributes(gasvolVis); + + // reference positions + /* - the vessel is created such that the center of the cylindrical tank volume + * coincides with the origin; this is called the "origin position" of the vessel + * - when the vessel (and its children volumes) is placed, it is translated in + * the z-direction to be in the proper full-detector integration location + * - these reference positions are for the frontplane and backplane of the vessel, + * with respect to the vessel origin position + */ + auto originFront = Position(0., 0., vesselLength / 2.0); + + // sensitive detector type + sens.setType("tracker"); + + // BUILD RADIATOR ////////////////////////////////////// + + // attributes + double airGap = 0.01 * mm; // air gap between aerogel and filter (FIXME? actually it's currently a gas gap) + + // solid and volume: create aerogel and filter + Cone aerogelSolid( + aerogelThickness / 2, + radiatorRmin + boreDelta * aerogelThickness / vesselLength, // at backplane + radiatorRmax, + radiatorRmin, // at frontplane + radiatorRmax + ); + Cone filterSolid( + filterThickness / 2, + radiatorRmin + boreDelta * (aerogelThickness + airGap + filterThickness) / vesselLength, // at backplane + radiatorRmax, + radiatorRmin + boreDelta * (aerogelThickness + airGap) / vesselLength, // at frontplane + radiatorRmax + ); + Volume aerogelVol(detName + "_aerogel", aerogelSolid, aerogelMat); + Volume filterVol(detName + "_filter", filterSolid, filterMat); + aerogelVol.setVisAttributes(aerogelVis); + filterVol.setVisAttributes(filterVis); + + // aerogel placement and surface properties + // FIXME: define skin properties for aerogel and filter + auto radiatorPos = Position(0., 0., radiatorFrontplane - 0.5 * aerogelThickness) + originFront; + auto aerogelPV = gasvolVol.placeVolume( + aerogelVol, + Transform3D(Translation3D(radiatorPos.x(), radiatorPos.y(), radiatorPos.z())) // re-center to originFront + ); + DetElement aerogelDE(det, "aerogel_de", 0); + aerogelDE.setPlacement(aerogelPV); + + // filter placement and surface properties + auto filterPV = gasvolVol.placeVolume( + filterVol, + Transform3D( + Translation3D(0., 0., -airGap) // add an airgap (FIXME: actually a gas gap) + * + Translation3D(radiatorPos.x(), radiatorPos.y(), radiatorPos.z()) // re-center to originFront + * + Translation3D(0., 0., -(aerogelThickness + filterThickness) / 2.) // move to aerogel backplane + ) + ); + DetElement filterDE(det, "filter_de", 0); + filterDE.setPlacement(filterPV); + + // BUILD SENSORS /////////////////////// + + // solid and volume: single sensor module + Box sensorSolid(sensorSide / 2., sensorSide / 2., sensorThickness / 2.); + Volume sensorVol(detName + "_sensor", sensorSolid, sensorMat); + sensorVol.setVisAttributes(sensorVis); + + // sensitivity + sensorVol.setSensitiveDetector(sens); + + // sensor plane positioning: we want `sensorPlaneDist` to be the distance between the + // aerogel backplane (i.e., aerogel/filter boundary) and the sensor active surface (e.g, photocathode) + double sensorZpos = radiatorFrontplane - aerogelThickness - sensorPlaneDist - 0.5 * sensorThickness; + auto sensorPlanePos = Position(0., 0., sensorZpos) + originFront; // reference position + // miscellaneous + int imod = 0; // module number + double tBoxMax = vesselRmax1; // sensors will be tiled in tBox, within annular limits + + // SENSOR MODULE LOOP ------------------------ + /* cartesian tiling loop + * - start at (x=0,y=0), to center the grid + * - loop over positive-x positions; for each, place the corresponding negative-x sensor too + * - nested similar loop over y positions + */ + double sx, sy; + for (double usx = 0; usx <= tBoxMax; usx += sensorSide + sensorGap) { + for (int sgnx = 1; sgnx >= (usx > 0 ? -1 : 1); sgnx -= 2) { + for (double usy = 0; usy <= tBoxMax; usy += sensorSide + sensorGap) { + for (int sgny = 1; sgny >= (usy > 0 ? -1 : 1); sgny -= 2) { + + // sensor (x,y) center + sx = sgnx * usx; + sy = sgny * usy; + + // annular cut + if (std::hypot(sx, sy) < sensorPlaneRmin || std::hypot(sx, sy) > sensorPlaneRmax) + continue; + + // placement (note: transformations are in reverse order) + auto sensorPV = gasvolVol.placeVolume( + sensorVol, + Transform3D( + Translation3D(sensorPlanePos.x(), sensorPlanePos.y(), sensorPlanePos.z()) // move to reference position + * + Translation3D(sx, sy, 0.) // move to grid position + ) + ); + + // generate LUT for module number -> sensor position, for readout mapping tests + // printf("%d %f %f\n",imod,sensorPV.position().x(),sensorPV.position().y()); + + // properties + sensorPV.addPhysVolID("module", imod); + DetElement sensorDE(det, Form("sensor_de_%d", imod), imod); + sensorDE.setPlacement(sensorPV); + SkinSurface sensorSkin(desc, sensorDE, "sensor_optical_surface", sensorSurf, sensorVol); // FIXME: 3rd arg needs `imod`? + sensorSkin.isValid(); + + // increment sensor module number + imod++; + } + } + } + } + // END SENSOR MODULE LOOP ------------------------ + + // Add service material if desired (added by Sylvester Joosten) //////////////// + if (detElem.child("sensors").hasChild(_Unicode(services))) { + xml_comp_t x_service = detElem.child("sensors").child(_Unicode(services)); + Assembly service_vol("services"); + service_vol.setVisAttributes(desc, x_service.visStr()); + + // Compute service total thickness from components + double total_thickness = 0; + for (xml_coll_t ci(x_service, _Unicode(component)); ci; ++ci) { + total_thickness += xml_comp_t(ci).thickness(); + } + + int ncomponents = 0; + double thickness_sum = -total_thickness / 2.0; + for (xml_coll_t ci(x_service, _Unicode(component)); ci; ++ci, ncomponents++) { + xml_comp_t x_comp = ci; + double thickness = x_comp.thickness(); + Tube c_tube{sensorPlaneRmin, sensorPlaneRmax, thickness / 2}; + Volume c_vol{_toString(ncomponents, "component%d"), c_tube, desc.material(x_comp.materialStr())}; + c_vol.setVisAttributes(desc, x_comp.visStr()); + service_vol.placeVolume(c_vol, Position(0, 0, thickness_sum + thickness / 2.0)); + thickness_sum += thickness; + } + gasvolVol.placeVolume(service_vol, + Transform3D(Translation3D(sensorPlanePos.x(), sensorPlanePos.y(), + sensorPlanePos.z() - sensorThickness - total_thickness))); + } + + // VESSEL PLACEMENT ///////////////////////////////////////////////////////////// + + // place gas volume + PlacedVolume gasvolPV = vesselVol.placeVolume(gasvolVol, Position(0, 0, 0)); + DetElement gasvolDE(det, "gasvol_de", 0); + gasvolDE.setPlacement(gasvolPV); + + // place mother volume (vessel) + Volume motherVol = desc.pickMotherVolume(det); + PlacedVolume vesselPV = motherVol.placeVolume(vesselVol, Position(0, 0, vesselZmin) - originFront); + vesselPV.addPhysVolID("system", detID); + det.setPlacement(vesselPV); + + return det; +} + +// clang-format off +DECLARE_DETELEMENT(PFRICH, createDetector) -- GitLab