Files
minicalosim/docker/Dockerfile-mini
T
lars 5fc50bcefc print commit hash on import; fix event_id offset in multi-core steps
G4Calo.py prints the commit at import time, resolved via a
minicalo_version.py file (baked in by Docker) or git rev-parse
from the file's directory as fallback.

event_id in the Steps ntuple restarts from 0 in each subprocess;
_assemble_results_to_mini_df now accepts per-file event_id_offsets
so IDs are globally unique after merging. run_batch passes cumulative
nevents as offsets when loading the Steps tree.

Dockerfiles write minicalo_version.py before copying Python files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 16:35:31 +02:00

69 lines
2.1 KiB
Plaintext

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 — build from submodule source (batch mode only, no visualization, no multithreading)
ADD minicalosim/lib/geant4 /tmp/geant4-src
RUN rm -f /tmp/geant4-src/.git && \
cmake \
-S /tmp/geant4-src \
-B /tmp/geant4-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-build --parallel $(nproc) > /dev/null && \
cmake --install /tmp/geant4-build > /dev/null && \
rm -rf /tmp/geant4-src /tmp/geant4-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 lib/pybind11 && \
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 echo "commit = '${COMMIT}'" > /root/minicalosim/bind/minicalo_version.py && \
cp /root/minicalosim/bind/G4Calo.py \
/root/minicalosim/bind/minicalo_tools.py \
/root/minicalosim/bind/minipandas.py \
/root/minicalosim/bind/minicalo_version.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"]