FROM ubuntu:22.04 SHELL ["/bin/bash", "-c"] USER root ENV DEBIAN_FRONTEND=noninteractive # Build tools + minimal Python RUN apt-get update -y && apt-get install -y \ python3 python3-dev python3-pip \ cmake g++ gcc binutils \ libssl-dev wget git \ && rm -rf /var/lib/apt/lists/* RUN python3 -m pip install --upgrade pip && \ python3 -m pip install numpy pandas uproot awkward plotly ipython && \ ln -sf /usr/bin/python3 /usr/bin/python # Geant4 v11.1.2 — batch mode only (no visualization, no multithreading) RUN wget -q https://gitlab.cern.ch/geant4/geant4/-/archive/v11.1.2/geant4-v11.1.2.tar.gz && \ tar -xzf geant4-v11.1.2.tar.gz -C /tmp && \ rm geant4-v11.1.2.tar.gz && \ mkdir /tmp/geant4-v11.1.2-build && \ cmake \ -S /tmp/geant4-v11.1.2 \ -B /tmp/geant4-v11.1.2-build \ -DCMAKE_INSTALL_PREFIX=/opt/geant4-v11.1.2 \ -DCMAKE_RULE_MESSAGES=OFF \ -DGEANT4_INSTALL_DATA=ON \ -DGEANT4_BUILD_MULTITHREADED=OFF \ -DGEANT4_BUILD_TLS_MODEL=global-dynamic \ > /dev/null && \ cmake --build /tmp/geant4-v11.1.2-build --parallel $(nproc) > /dev/null && \ cmake --install /tmp/geant4-v11.1.2-build > /dev/null && \ rm -rf /tmp/geant4-v11.1.2 /tmp/geant4-v11.1.2-build ENV LD_LIBRARY_PATH="/opt/geant4-v11.1.2/lib" # Build minicalo ARG BUILD_DATE ARG COMMIT ARG USER LABEL org.label-schema.build-date=$BUILD_DATE ADD minicalosim /root/minicalosim RUN cd /root/minicalosim && git checkout $COMMIT && \ git submodule update --init && \ cmake \ -S . -B build \ -DWITH_GEANT4_UIVIS=OFF \ > /dev/null && \ cmake --build build --parallel $(nproc) && \ cp build/minicalo*.so /usr/local/lib/python3.10/dist-packages/ RUN cp /root/minicalosim/bind/G4Calo.py \ /root/minicalosim/bind/minicalo_tools.py \ /root/minicalosim/bind/minipandas.py \ /usr/local/lib/python3.10/dist-packages/ && \ install -m 755 /root/minicalosim/bind/G4Calo_exec.py /usr/local/bin/G4Calo_exec.py # Copy examples RUN cp -r /root/minicalosim/bind /examples && \ rm -rf /root/minicalosim WORKDIR /examples CMD ["bash"]