11d01d7015
Mirrors run_pbwo4 but alternates thin absorber and active layers, with four selectable configs (by name or 1-based index): pb_scint, fe_scint, w_scint_ecal (homogeneous ECAL-like preshower + W/scint sampling section), and pb_lar. Each is sized to reach ~20-25 X0 of absorber despite the dilution from inactive gaps. Wired into the top-level CMakeLists, superbuild, and Dockerfile alongside run_pbwo4. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
67 lines
2.6 KiB
CMake
67 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(minicalosim-superbuild NONE)
|
|
|
|
include(ExternalProject)
|
|
include(ProcessorCount)
|
|
|
|
ProcessorCount(NPROC)
|
|
if(NOT NPROC OR NPROC EQUAL 0)
|
|
set(NPROC 4)
|
|
endif()
|
|
# Cap at 16 to avoid memory exhaustion on large machines (mirrors Dockerfile)
|
|
if(NPROC GREATER 16)
|
|
set(NPROC 16)
|
|
endif()
|
|
|
|
set(G4_INSTALL ${CMAKE_BINARY_DIR}/geant4-install)
|
|
set(G4_SRC ${CMAKE_SOURCE_DIR}/../lib/geant4)
|
|
set(MINI_SRC ${CMAKE_SOURCE_DIR}/..)
|
|
|
|
option(GEANT4_INSTALL_DATA "Download Geant4 physics data files (~2 GB)" ON)
|
|
|
|
# ── Geant4 ────────────────────────────────────────────────────────────────────
|
|
ExternalProject_Add(geant4
|
|
SOURCE_DIR ${G4_SRC}
|
|
BINARY_DIR ${CMAKE_BINARY_DIR}/geant4-build
|
|
INSTALL_DIR ${G4_INSTALL}
|
|
CMAKE_ARGS
|
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DGEANT4_INSTALL_DATA=${GEANT4_INSTALL_DATA}
|
|
-DGEANT4_USE_GDML=ON
|
|
-DGEANT4_BUILD_MULTITHREADED=OFF
|
|
-DGEANT4_BUILD_TLS_MODEL=global-dynamic
|
|
BUILD_COMMAND cmake --build <BINARY_DIR> --parallel ${NPROC}
|
|
INSTALL_COMMAND cmake --install <BINARY_DIR>
|
|
)
|
|
|
|
# ── minicalosim (run_pbwo4) ───────────────────────────────────────────────────
|
|
ExternalProject_Add(run_pbwo4
|
|
SOURCE_DIR ${MINI_SRC}
|
|
BINARY_DIR ${CMAKE_BINARY_DIR}/minicalosim-build
|
|
CMAKE_ARGS
|
|
-DCMAKE_PREFIX_PATH=${G4_INSTALL}
|
|
-DWITH_GEANT4_UIVIS=OFF
|
|
BUILD_COMMAND cmake --build <BINARY_DIR> --target run_pbwo4 --parallel ${NPROC}
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
${CMAKE_BINARY_DIR}/minicalosim-build/run_pbwo4
|
|
${CMAKE_BINARY_DIR}/run_pbwo4
|
|
DEPENDS geant4
|
|
)
|
|
|
|
# ── minicalosim (run_sampling) ─────────────────────────────────────────────
|
|
# Shares run_pbwo4's BINARY_DIR (already configured against G4_INSTALL) and
|
|
# depends on it so the two ExternalProjects don't reconfigure that dir concurrently.
|
|
ExternalProject_Add(run_sampling
|
|
SOURCE_DIR ${MINI_SRC}
|
|
BINARY_DIR ${CMAKE_BINARY_DIR}/minicalosim-build
|
|
CMAKE_ARGS
|
|
-DCMAKE_PREFIX_PATH=${G4_INSTALL}
|
|
-DWITH_GEANT4_UIVIS=OFF
|
|
BUILD_COMMAND cmake --build <BINARY_DIR> --target run_sampling --parallel ${NPROC}
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
${CMAKE_BINARY_DIR}/minicalosim-build/run_sampling
|
|
${CMAKE_BINARY_DIR}/run_sampling
|
|
DEPENDS run_pbwo4
|
|
)
|