Repository: gammasim/simtools
Pull request #1447: Remove docker prod image generation; documentation update and improved workflow naming.
Author: login: GernotMaier
Created: 2025-03-20T09:53:49Z | Merged: 2025-03-20T15:31:55Z

Stop building the simtools-prod images, as this is duplicated work with respect to the 'no-opt' images generated in the main production image workflow.

Additionally:

- updated documentation to reflect the changes
- improved naming of workflows to reflect better what they are doing
- remove obsolete docker/Dockerfile-prod file

Closes #1421 

Linked issue #1421: Stop building simtools-prod image?
I suggest to stop building the simtools-prod images. The new pipeline generating images for different CORSIKA/sim_telarray versions plus different CPU optimizing is a full replacement. The `no-opt` images without an optimized CORSIKA should be the standard replacement for simtools-prod.
Linked issue comments: user: login: orelgueta
created_at: 2025-03-19T15:03:54Z
body: The new pipeline is on GitLab, right? I agree it can replace the prod image. I would just add it to the documentation here as well so it's clear how to get it.
author_association: CONTRIBUTOR
user: login: GernotMaier
created_at: 2025-03-19T15:11:53Z
body: Yes, it is *also* on gitlab. My point here is that we generate exactly the same image with the no-opt option in e.g. in this workflow: https://github.com/gammasim/simtools/actions/runs/13947408153
author_association: CONTRIBUTOR
user: login: orelgueta
created_at: 2025-03-19T15:15:16Z
body: I see, so it's just about adding to that workflow the step to upload that image to the registry. I agree it's a good idea.
author_association: CONTRIBUTOR
user: login: GernotMaier
created_at: 2025-03-19T17:30:26Z
body: No, it is just about removing the simtools-prod workflow. 

The images are already available, see https://github.com/orgs/gammasim/packages?tab=packages&q=no_opt
author_association: CONTRIBUTOR
user: login: orelgueta
created_at: 2025-03-20T08:20:30Z
body: And updating the documentation. 
author_association: CONTRIBUTOR
user: login: GernotMaier
created_at: 2025-03-20T09:58:23Z
body: Note that many (all) of the gitlab workflows in the CTA-Science section are using the simulate-prod image. Need to change there the image names.
author_association: CONTRIBUTOR

Diff:
diff --git a/.github/workflows/build-docker-images.yml b/.github/workflows/build-simtools-dev-image.yml
similarity index 60%
rename from .github/workflows/build-docker-images.yml
rename to .github/workflows/build-simtools-dev-image.yml
index 1fe27f3458..076f4e1b32 100644
--- a/.github/workflows/build-docker-images.yml
+++ b/.github/workflows/build-simtools-dev-image.yml
@@ -1,6 +1,6 @@
 ---
-name: docker-simtools
-# Build simtools dev and prod images based on CORSIKA / sim_telarray images (no optimizations)
+name: docker-simtools-dev
+# Build simtools images for developers based on CORSIKA / sim_telarray images (no optimizations)
 
 on:
   workflow_dispatch:
@@ -18,10 +18,6 @@ on:
     - cron: '0 0 * * 0'  # Every Sunday at 00:00 UTC (build only)
 
 env:
-  SIMTOOLS_DB_SERVER: ${{ secrets.DB_SERVER }}
-  SIMTOOLS_DB_API_USER: ${{ secrets.DB_READ_USER }}
-  SIMTOOLS_DB_API_PW: ${{ secrets.DB_READ_PW }}
-  SIMTOOLS_DB_API_PORT: ${{ secrets.DB_API_PORT }}
   REGISTRY: ghcr.io
   IMAGE_NAME: ${{ github.repository }}
   TEST_TAG: user/app:test
@@ -35,7 +31,7 @@ jobs:
       packages: write
     strategy:
       matrix:
-        type: ['dev', 'prod']
+        type: ['dev']
 
     steps:
       - name: Checkout repository
@@ -77,7 +73,6 @@ jobs:
 
       - name: Build Docker image
         uses: docker/build-push-action@v6
-        if: matrix.type == 'prod'
         with:
           context: .
           build-args: BUILD_BRANCH=${{ env.BUILD_BRANCH }}
@@ -85,35 +80,6 @@ jobs:
           file: ./docker/Dockerfile-${{ matrix.type }}
           tags: ${{ env.TEST_TAG }}
 
-      # test the prod image with one application using the database
-      # and the sim_telarray installation
-      - name: Test Docker image
-        if: matrix.type == 'prod'
-        run: >
-          # run docker
-          docker run --rm
-          -e "SIMTOOLS_SIMTEL_PATH='/workdir/sim_telarray'"
-          -e "SIMTOOLS_DB_API_PORT=${{ env.SIMTOOLS_DB_API_PORT }}"
-          -e "SIMTOOLS_DB_API_USER=${{ env.SIMTOOLS_DB_API_USER }}"
-          -e "SIMTOOLS_DB_API_PW=${{ env.SIMTOOLS_DB_API_PW }}"
-          -e "SIMTOOLS_DB_SERVER=${{ env.SIMTOOLS_DB_SERVER }}"
-          -v "$(pwd):/workdir/external" ${{ env.TEST_TAG }}
-          bash -c "cd /workdir/external && simtools-simulate-prod --config /workdir/external/tests/integration_tests/config/simulate_prod_gamma_20_deg_pack_for_grid.yml"
-        shell: /usr/bin/bash -e {0}
-
-      - name: Test Command Line Tools
-        if: matrix.type == 'prod'
-        run: |
-          set -e
-          echo "Reading scripts defined in pyproject.toml"
-          ls -l pyproject.toml
-          scripts=$(grep 'scripts.simtools-' pyproject.toml | sed -e 's/^scripts\.//' -e 's/ =.*$//')
-          for script in $scripts; do
-            echo "Testing command: $script --help"
-            docker run --rm ${{ env.TEST_TAG }} $script --help
-          done
-        shell: /usr/bin/bash -e {0}
-
       - name: Build and push image
         uses: docker/build-push-action@v6
         with:
diff --git a/.github/workflows/build-docker-corsika-simtelarray-image.yml b/.github/workflows/build-simtools-production-image.yml
similarity index 99%
rename from .github/workflows/build-docker-corsika-simtelarray-image.yml
rename to .github/workflows/build-simtools-production-image.yml
index 6dd876a9ac..e654b7aed2 100644
--- a/.github/workflows/build-docker-corsika-simtelarray-image.yml
+++ b/.github/workflows/build-simtools-production-image.yml
@@ -1,6 +1,6 @@
 ---
 name: docker-corsika-simtelarray
-# Build and push vanilla CORSIKA / sim_telarray image and simtools-prod images for different CPU architectures.
+# Build and push vanilla CORSIKA / sim_telarray image and simtools images for different CPU architectures.
 # Integration tests are running on the non-optimized ('no_opt') image.
 
 on:
diff --git a/docker/Dockerfile-prod b/docker/Dockerfile-prod
deleted file mode 100644
index 06f4cc0f2e..0000000000
--- a/docker/Dockerfile-prod
+++ /dev/null
@@ -1,25 +0,0 @@
-ARG BUILD_OPT="prod6-sc"
-ARG HADRONIC_MODEL="qgs2"
-ARG SIMTEL_VERSION="240927"
-ARG CORSIKA_VERSION="77550"
-ARG BERNLOHR_VERSION="1.68"
-FROM ghcr.io/gammasim/simtools-corsika-sim-telarray-${SIMTEL_VERSION}-corsika-${CORSIKA_VERSION}-bernlohr-${BERNLOHR_VERSION}-${BUILD_OPT}-${HADRONIC_MODEL}
-WORKDIR /workdir
-ARG BUILD_BRANCH=main
-
-RUN microdnf update -y && microdnf install -y \
-    findutils gcc-c++ git \
-    python3.11-pip python3.11-devel && \
-    microdnf clean all
-
-RUN BUILD_BRANCH=$(echo $BUILD_BRANCH | sed 's#refs/tags/##') && \
-    git clone -b $BUILD_BRANCH https://github.com/gammasim/simtools.git --depth 1 && \
-    python3.11 -m venv env && \
-    source env/bin/activate && \
-    pip install -U pip && \
-    pip install --no-cache-dir ./simtools && \
-    rm -rf simtools
-
-ENV SIMTEL_PATH="/workdir/sim_telarray/"
-ENV PATH="/workdir/env/bin/:$PATH"
-SHELL ["/bin/bash", "-c"]
diff --git a/docker/download_simulationsoftware.sh b/docker/download_simulation_software.sh
similarity index 100%
rename from docker/download_simulationsoftware.sh
rename to docker/download_simulation_software.sh
diff --git a/docs/changes/1447.maintenance.md b/docs/changes/1447.maintenance.md
new file mode 100644
index 0000000000..8472866f30
--- /dev/null
+++ b/docs/changes/1447.maintenance.md
@@ -0,0 +1 @@
+Remove docker prod image generation; documentation update and improved workflow naming.
diff --git a/docs/source/user-guide/docker_files.md b/docs/source/user-guide/docker_files.md
index 6806b62877..a052b8e853 100644
--- a/docs/source/user-guide/docker_files.md
+++ b/docs/source/user-guide/docker_files.md
@@ -6,12 +6,11 @@ Docker files are available for [simtools](https://github.com/gammasim/simtools)
 
 Types of docker files and containers available:
 
-- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull latest release with: `docker pull ghcr.io/gammasim/simtools-prod:latest`
+- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull one of the images from the [page registry (non-vector-code optimized images)](https://github.com/orgs/gammasim/packages?tab=packages&q=no_opt), e.g., `docker pull ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt:latest`
 - [simtools developers](#container-for-simtools-developers): a container with CORSIKA, sim\_telarray, and simtools conda environment installed. Pull latest release with: `docker pull ghcr.io/gammasim/simtools-dev:latest`
+- containers with vector-code optimized CORSIKA compilation are available from the [simtools package registry](https://github.com/orgs/gammasim/packages) page
 - [CORSIKA and sim_telarray](#container-for-corsika-and-simtelarray): provides containers with the CORSIKA and sim\_telarray installed (for different sim\_telarray version, hadronic interaction models, CTAO MC productions).
-This provides a base image for the previously listed containers.
-
-See the [simtools container repository](https://github.com/orgs/gammasim/packages?repo_name=simtools) for image prepared for different versions of the simulation software.
+This provides a base image for the development container.
 
 ## Simtools package registry
 
@@ -22,12 +21,12 @@ Follow the [instruction](https://docs.github.com/en/packages/working-with-a-gith
 Note: if the docker image already exists in your system, this same image will be used to run the container. This might especially be an issue when using the `latest` tag, which might not be the latest version available in the registry. To force a pull of the latest image, use the `--pull` option, e.g.:
 
 ```bash
-docker run --pull always --rm -it ghcr.io/gammasim/simtools-prod:latest bash
+docker run --pull always --rm -it ghcr.io/gammasim/simtools-dev:latest bash
 ```
 
 Alternatively, delete the image first and pull the latest version from the registry.
 
-## Container for simtools users (simtools-prod)
+## Container for simtools users ('no opt' images)
 
 Provides a container for simtools users, which includes:
 
@@ -35,14 +34,14 @@ Provides a container for simtools users, which includes:
 - packages required by simtools
 - simtools (main branch)
 
-### Run a simtools-prod container
+### Run a simtools user container
 
 Prerequisite: configure the simulation model database access (see simtools documentation) similar to the [template example](https://github.com/gammasim/simtools/blob/main/.env_template).
 
 To startup a container to use bash
 
 ```bash
-docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod:latest bash
+docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt:latest bash
 ```
 
 In the container, simtools applications are installed and can be called directly (e.g., `simtools-convert-geo-coordinates-of-array-elements -h`).
@@ -53,7 +52,7 @@ The following example runs an application inside the container and writes the ou
 ```bash
 docker run --rm -it --env-file .env \
     -v "$(pwd):/workdir/external" \
-    ghcr.io/gammasim/simtools-prod:latest \
+    ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt:latest \
     simtools-convert-geo-coordinates-of-array-elements \
     --array_element_list ./simtools/tests/resources/telescope_positions-North-utm.ecsv \
     --export corsika --use_corsika_telescope_height \
@@ -62,16 +61,6 @@ docker run --rm -it --env-file .env \
 
 Output files can be found `./simtools-output/`.
 
-### Building a simtools-prod container
-
-To build a new container locally run in the [docker](https://github.com/gammasim/simtools/tree/main/docker) directory::
-
-```bash
-docker build -f Dockerfile-prod  -t simtools-prod .
-```
-
-Building will take a while and the image is large (~2.1 GB). For using images build on your own, replace in all examples `ghcr.io/gammasim/simtools-prod:latest` by the local image name `simtools-prod`.
-
 ## Container for simtools developers (simtools-dev)
 
 Provide a container for testing and development of simtools, including:
@@ -149,7 +138,7 @@ Building expects that a tar ball of corsika/sim\_telarray (named corsika7.7\_sim
 Download the tar package from MPIK (password applies) with
 
 ```bash
-./download_simulationsoftware.sh
+./download_simulation_software.sh
 ```
 
 Run the newly build container:
diff --git a/src/simtools/applications/simulate_prod_htcondor_generator.py b/src/simtools/applications/simulate_prod_htcondor_generator.py
index f229284181..36d011b583 100644
--- a/src/simtools/applications/simulate_prod_htcondor_generator.py
+++ b/src/simtools/applications/simulate_prod_htcondor_generator.py
@@ -17,8 +17,8 @@
 
 Requirements for the 'simtools-simulate-prod-htcondor-generator' application:
 
-- Availability of an Apptainer image 'simtools-prod' (obtainable from the package registry on
-  GitHub, e.g., via 'apptainer pull --force docker://ghcr.io/gammasim/simtools-prod:latest').
+- Availability of an Apptainer image for production (obtainable from the package registry on
+  GitHub, e.g., via 'apptainer pull --force docker://ghcr.io/gammasim/simtools-<tag>:latest').
 - Environment parameters required to run CORSIKA and sim_telarray, as well as DB access
   credentials.  These should be listed similarly to a '.env' file and copied to
   'output_path/env.txt'.  Ensure that the path to the simulation software is correctly set to


Reviews:
user: login: orelgueta
body: minor comments.
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T14:28:32Z
user: login: GernotMaier
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:14:27Z
user: login: GernotMaier
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T15:16:17Z

Review comments:
diff_hunk: @@ -6,12 +6,11 @@ Docker files are available for [simtools](https://github.com/gammasim/simtools)
 
 Types of docker files and containers available:
 
-- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull latest release with: `docker pull ghcr.io/gammasim/simtools-prod:latest`
+- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull one of the images from the [page registry (non-vector-code optimized images)](https://github.com/orgs/gammasim/packages?tab=packages&q=no_opt)
path: docs/source/user-guide/docker_files.md
user: login: orelgueta
body: I think it would be useful to also have the example like 

`docker pull ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt:latest`
created_at: 2025-03-20T14:25:34Z
author_association: CONTRIBUTOR
diff_hunk: @@ -22,27 +21,27 @@ Follow the [instruction](https://docs.github.com/en/packages/working-with-a-gith
 Note: if the docker image already exists in your system, this same image will be used to run the container. This might especially be an issue when using the `latest` tag, which might not be the latest version available in the registry. To force a pull of the latest image, use the `--pull` option, e.g.:
 
 ```bash
-docker run --pull always --rm -it ghcr.io/gammasim/simtools-prod:latest bash
+docker run --pull always --rm -it ghcr.io/gammasim/simtools-dev:latest bash
 ```
 
 Alternatively, delete the image first and pull the latest version from the registry.
 
-## Container for simtools users (simtools-prod)
+## Container for simtools users ('no opt' images)
 
 Provides a container for simtools users, which includes:
 
 - corsika and sim\_telarray
 - packages required by simtools
 - simtools (main branch)
 
-### Run a simtools-prod container
+### Run a simtools user container
 
 Prerequisite: configure the simulation model database access (see simtools documentation) similar to the [template example](https://github.com/gammasim/simtools/blob/main/.env_template).
 
 To startup a container to use bash
 
 ```bash
-docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod:latest bash
+docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt::latest bash
path: docs/source/user-guide/docker_files.md
user: login: orelgueta
body: There are two `:` before latest. Probably not an issue, but still.
created_at: 2025-03-20T14:27:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -22,27 +21,27 @@ Follow the [instruction](https://docs.github.com/en/packages/working-with-a-gith
 Note: if the docker image already exists in your system, this same image will be used to run the container. This might especially be an issue when using the `latest` tag, which might not be the latest version available in the registry. To force a pull of the latest image, use the `--pull` option, e.g.:
 
 ```bash
-docker run --pull always --rm -it ghcr.io/gammasim/simtools-prod:latest bash
+docker run --pull always --rm -it ghcr.io/gammasim/simtools-dev:latest bash
 ```
 
 Alternatively, delete the image first and pull the latest version from the registry.
 
-## Container for simtools users (simtools-prod)
+## Container for simtools users ('no opt' images)
 
 Provides a container for simtools users, which includes:
 
 - corsika and sim\_telarray
 - packages required by simtools
 - simtools (main branch)
 
-### Run a simtools-prod container
+### Run a simtools user container
 
 Prerequisite: configure the simulation model database access (see simtools documentation) similar to the [template example](https://github.com/gammasim/simtools/blob/main/.env_template).
 
 To startup a container to use bash
 
 ```bash
-docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod:latest bash
+docker run --rm -it --env-file .env -v "$(pwd):/workdir/external" ghcr.io/gammasim/simtools-prod-240205-corsika-77500-bernlohr-1.67-prod6-baseline-qgs2-no_opt::latest bash
path: docs/source/user-guide/docker_files.md
user: login: GernotMaier
body: Fixed.
created_at: 2025-03-20T15:14:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -6,12 +6,11 @@ Docker files are available for [simtools](https://github.com/gammasim/simtools)
 
 Types of docker files and containers available:
 
-- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull latest release with: `docker pull ghcr.io/gammasim/simtools-prod:latest`
+- [simtools users](#container-for-simtools-users): a container with all software installed (CORSIKA, sim\_telarray, simtools python environment, simtools). Pull one of the images from the [page registry (non-vector-code optimized images)](https://github.com/orgs/gammasim/packages?tab=packages&q=no_opt)
path: docs/source/user-guide/docker_files.md
user: login: GernotMaier
body: Agree - added.
created_at: 2025-03-20T15:16:17Z
author_association: CONTRIBUTOR

PR comments:
user: login: ctao-dpps-sonarqube[bot]
created_at: 2025-03-20T09:57:31Z
body: ![Passed](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/QualityGateBadge/passed.svg?sanitize=true)

# Analysis Details
## 0 Issues
- ![Bug](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/bug.svg?sanitize=true) 0 Bugs
- ![Vulnerability](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/vulnerability.svg?sanitize=true) 0 Vulnerabilities
- ![Code Smell](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/code_smell.svg?sanitize=true) 0 Code Smells

## Coverage and Duplications
- ![Coverage](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/CoverageChart/NoCoverageInfo.svg?sanitize=true) No coverage information (95.90% Estimated after merge)
- ![Duplications](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/Duplications/NoDuplicationInfo.svg?sanitize=true) No duplication information (0.00% Estimated after merge)

**Project ID:** gammasim_simtools_AY_ssha9WiFxsX-2oy_w

[View in SonarQube](https://sonar-cta-dpps.zeuthen.desy.de/dashboard?id=gammasim_simtools_AY_ssha9WiFxsX-2oy_w&pullRequest=1447)


author_association: NONE
user: login: ctao-dpps-sonarqube[bot]
created_at: 2025-03-20T09:58:40Z
body: ![Passed](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/QualityGateBadge/passed.svg?sanitize=true)

# Analysis Details
## 0 Issues
- ![Bug](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/bug.svg?sanitize=true) 0 Bugs
- ![Vulnerability](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/vulnerability.svg?sanitize=true) 0 Vulnerabilities
- ![Code Smell](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/code_smell.svg?sanitize=true) 0 Code Smells

## Coverage and Duplications
- ![Coverage](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/CoverageChart/NoCoverageInfo.svg?sanitize=true) No coverage information (95.90% Estimated after merge)
- ![Duplications](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/Duplications/NoDuplicationInfo.svg?sanitize=true) No duplication information (0.00% Estimated after merge)

**Project ID:** gammasim_simtools_AY_ssha9WiFxsX-2oy_w

[View in SonarQube](https://sonar-cta-dpps.zeuthen.desy.de/dashboard?id=gammasim_simtools_AY_ssha9WiFxsX-2oy_w&pullRequest=1447)


author_association: NONE
user: login: ctao-dpps-sonarqube[bot]
created_at: 2025-03-20T11:02:35Z
body: ![Passed](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/QualityGateBadge/passed.svg?sanitize=true)

# Analysis Details
## 0 Issues
- ![Bug](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/bug.svg?sanitize=true) 0 Bugs
- ![Vulnerability](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/vulnerability.svg?sanitize=true) 0 Vulnerabilities
- ![Code Smell](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/code_smell.svg?sanitize=true) 0 Code Smells

## Coverage and Duplications
- ![Coverage](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/CoverageChart/NoCoverageInfo.svg?sanitize=true) No coverage information (95.90% Estimated after merge)
- ![Duplications](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/Duplications/NoDuplicationInfo.svg?sanitize=true) No duplication information (0.00% Estimated after merge)

**Project ID:** gammasim_simtools_AY_ssha9WiFxsX-2oy_w

[View in SonarQube](https://sonar-cta-dpps.zeuthen.desy.de/dashboard?id=gammasim_simtools_AY_ssha9WiFxsX-2oy_w&pullRequest=1447)


author_association: NONE
user: login: ctao-dpps-sonarqube[bot]
created_at: 2025-03-20T15:20:11Z
body: ![Passed](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/QualityGateBadge/passed.svg?sanitize=true)

# Analysis Details
## 0 Issues
- ![Bug](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/bug.svg?sanitize=true) 0 Bugs
- ![Vulnerability](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/vulnerability.svg?sanitize=true) 0 Vulnerabilities
- ![Code Smell](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/common/code_smell.svg?sanitize=true) 0 Code Smells

## Coverage and Duplications
- ![Coverage](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/CoverageChart/NoCoverageInfo.svg?sanitize=true) No coverage information (95.90% Estimated after merge)
- ![Duplications](https://sonar-cta-dpps.zeuthen.desy.de/static/communityBranchPlugin/checks/Duplications/NoDuplicationInfo.svg?sanitize=true) No duplication information (0.00% Estimated after merge)

**Project ID:** gammasim_simtools_AY_ssha9WiFxsX-2oy_w

[View in SonarQube](https://sonar-cta-dpps.zeuthen.desy.de/dashboard?id=gammasim_simtools_AY_ssha9WiFxsX-2oy_w&pullRequest=1447)


author_association: NONE