From ab31a7705e6a94237d45556a574148d19fad5ff7 Mon Sep 17 00:00:00 2001 From: Sylvester Joosten <sjoosten@anl.gov> Date: Tue, 9 Mar 2021 09:43:50 -0600 Subject: [PATCH] Update CI setup based on new upstream container --- .containers/Dockerfile.in | 22 + .containers/Makefile | 64 +++ .containers/config.env | 17 + {containers => .containers}/docker/Makefile | 0 .containers/hcana.def.in | 14 + .../singularity/Singularity.broadwell | 0 .containers/version.sh | 3 + .gitlab-ci.yml | 167 ++++--- .gitlabci/build.sh | 0 .gitlabci/configure.sh | 26 + .gitlabci/setup.sh | 34 -- .gitlabci/sregistry-gitlab.png | Bin 38298 -> 0 bytes .gitlabci/sregistry-gitlab.xcf | Bin 100932 -> 0 bytes VERSION | 1 + bin/compile | 35 -- containers/docker/Dockerfile | 53 --- containers/docker/Dockerfile.broadwell | 58 --- containers/docker/README.md | 18 - containers/docker/config.env | 23 - containers/docker/deploy.env | 5 - containers/docker/usage.sh | 26 - containers/docker/version.sh | 3 - containers/singularity/Singularity | 125 ----- setup.fish | 37 -- tests/README.md | 13 - tests/elastic_coin_replay.cxx | 296 ------------ tests/elastic_test.cxx | 446 ------------------ tests/elastic_test.sh | 26 - tests/elastic_test2.sh | 30 -- tests/my_root_script.cxx | 20 - tests/replay_elastic_data.sh | 38 -- 31 files changed, 245 insertions(+), 1355 deletions(-) create mode 100644 .containers/Dockerfile.in create mode 100644 .containers/Makefile create mode 100644 .containers/config.env rename {containers => .containers}/docker/Makefile (100%) create mode 100644 .containers/hcana.def.in rename {containers => .containers}/singularity/Singularity.broadwell (100%) create mode 100644 .containers/version.sh mode change 100644 => 100755 .gitlabci/build.sh create mode 100755 .gitlabci/configure.sh delete mode 100644 .gitlabci/setup.sh delete mode 100644 .gitlabci/sregistry-gitlab.png delete mode 100644 .gitlabci/sregistry-gitlab.xcf create mode 100644 VERSION delete mode 100755 bin/compile delete mode 100644 containers/docker/Dockerfile delete mode 100644 containers/docker/Dockerfile.broadwell delete mode 100644 containers/docker/README.md delete mode 100644 containers/docker/config.env delete mode 100644 containers/docker/deploy.env delete mode 100644 containers/docker/usage.sh delete mode 100644 containers/docker/version.sh delete mode 100644 containers/singularity/Singularity delete mode 100644 setup.fish delete mode 100644 tests/README.md delete mode 100644 tests/elastic_coin_replay.cxx delete mode 100644 tests/elastic_test.cxx delete mode 100644 tests/elastic_test.sh delete mode 100644 tests/elastic_test2.sh delete mode 100644 tests/my_root_script.cxx delete mode 100644 tests/replay_elastic_data.sh diff --git a/.containers/Dockerfile.in b/.containers/Dockerfile.in new file mode 100644 index 0000000..06567d3 --- /dev/null +++ b/.containers/Dockerfile.in @@ -0,0 +1,22 @@ +FROM eicweb.phy.anl.gov:4567/containers/image_recipes/root_spack:@CONTAINER_TAG@ + +LABEL maintainer "Sylvester Joosten <sjoosten@anl.gov>" + +RUN cd /tmp \ + && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hallac_evio.git \ + && mkdir hallac_evio/build && cd hallac_evio/build \ + && cmake ../. && make -j20 && make install \ + && cd /tmp && rm -rf hallac_evio \ + && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/analyzer.git \ + && mkdir analyzer/build && cd analyzer/build && git pull && git checkout v1.8.3 \ + && cmake ../. && make -j20 VERBOSE=1 && make install \ + && cd /tmp && rm -rf analyzer + +## 2 layers so we can isolate hcana from the rest of the stack + +RUN cd /tmp \ + && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hcana.git \ + && mkdir hcana/build && cd hcana/build \ + && git pull \ + && cmake ../. && make -j20 VERBOSE=1 && make install \ + && cd /tmp && rm -rf hcana diff --git a/.containers/Makefile b/.containers/Makefile new file mode 100644 index 0000000..d5e8233 --- /dev/null +++ b/.containers/Makefile @@ -0,0 +1,64 @@ +# import config. +# You can change the default config with `make cnf="config_special.env" build` +cnf ?= config.env +include $(cnf) +# exports variables in config.env as environment variables +export $(shell sed 's/=.*//' $(cnf)) + +SHELL = bash + +# grep the version from the mix file +VERSION=$(shell bash version.sh) +TAG_VERSION=$(VERSION) +LONG_TAG=$(VERSION)-$(PUBLISH_TAG) + +# help will output the help for each task +# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html +.PHONY: help + +help: ## This help. + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +.DEFAULT_GOAL := help + +# ========================================================================== +# +build: ## build the image + docker build -t $(APP_NAME):$(LONG_TAG) . + +build-nc: ## Build the container without caching (from scratch) + docker build --no-cache -t $(APP_NAME):$(LONG_TAG) . + +# ========================================================================== +# +login: ## Auto login to AWS-ECR unsing aws-cli + @docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} + echo "Login COMPLETE" + +# ========================================================================== +# + +publish: login ## Publish a tagged container to ECR + @echo 'publish $(PUBLISH_TAG) to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)' + docker tag $(APP_NAME):$(LONG_TAG) $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(PUBLISH_TAG) + docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(PUBLISH_TAG) + docker rmi $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(PUBLISH_TAG) + +publish-version: login ## Publish the `{version}` taged container to ECR + @echo 'publish $(VERSION) to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION)' + docker tag $(APP_NAME):$(LONG_TAG) $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION) + docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION) + docker rmi $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION) + +# ========================================================================== +# remove container from registry +unpublish: login + @echo 'removing $(PUBLISH_TAG)' + curl --request DELETE --header "PRIVATE-TOKEN: $(CI_JOB_TOKEN)" "$(REG_API_URL)/$(PUBLISH_TAG)" + +# ========================================================================== +# cleanup docker registry on system used by runner +cleanup: + @echo 'removing $(REG_NAME):$(LONG_TAG)' + docker rmi $(REG_NAME):$(LONG_TAG) + diff --git a/.containers/config.env b/.containers/config.env new file mode 100644 index 0000000..79a52b2 --- /dev/null +++ b/.containers/config.env @@ -0,0 +1,17 @@ +# Port to run the container + +APP_NAME = hcana +REPO_NAME = hcana + +REG_HOST ?= eicweb.phy.anl.gov +REG_NAME ?= eicweb.phy.anl.gov:4567 +REG_PORT ?= 4567 +REG_URL ?= https://$(REG_HOST) + +GL_GROUP = jlab/hallc/analyzer_software +GL_REG_GROUP = jlab/hallc/analyzer_software/hcana +GL_REG_NAME = $(REG_NAME) + +PUBLISH_TAG = $(HCANA_TAG) + +REG_API_URL = $(REG_URL)/api/v4/projects/$(CI_PROJECT_ID)/registry/repositories/49/tags diff --git a/containers/docker/Makefile b/.containers/docker/Makefile similarity index 100% rename from containers/docker/Makefile rename to .containers/docker/Makefile diff --git a/.containers/hcana.def.in b/.containers/hcana.def.in new file mode 100644 index 0000000..12ab7e6 --- /dev/null +++ b/.containers/hcana.def.in @@ -0,0 +1,14 @@ +Bootstrap: docker +From: eicweb.phy.anl.gov:4567/jlab/hallc/analyzer_software/hcana:@HCANA_TAG@ + +%help + singularity container for hcana development + +%labels + Maintainer "Whitney Armstrong, Sylvester Joosten" + Version v1-dev + +%post -c /bin/bash + echo " -------------------------------------------------" + echo " ===> Image setup complete" + echo " -------------------------------------------------" diff --git a/containers/singularity/Singularity.broadwell b/.containers/singularity/Singularity.broadwell similarity index 100% rename from containers/singularity/Singularity.broadwell rename to .containers/singularity/Singularity.broadwell diff --git a/.containers/version.sh b/.containers/version.sh new file mode 100644 index 0000000..93ef8dc --- /dev/null +++ b/.containers/version.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cat ../VERSION diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0aaf4ed..e2978a1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,84 +1,113 @@ -image: eicweb.phy.anl.gov:4567/containers/image_recipes/root_base:latest +variables: + CONTAINER_TAG: "1.4.0" + +default: + image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest + tags: + - silicon stages: + - config - build - - build_docker - - build_sing_img - - data_replays - - data_tests + - push + - deploy + - cleanup -hcana_build: - stage: build - tags: - - sodium - script: - - ls -lrth /usr/local/bin - - bash bin/compile - -hcana_docker: - stage: build_docker - only: - - tags - tags: - - eic0 docker - script: - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - cd containers/docker && make release +workflow: + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_COMMIT_BRANCH == "master"' + - if: '$CI_COMMIT_TAG' -hcana_singularity: - tags: - - singularity - stage: build_sing_img - when: manual - dependencies: - - hcana_docker +env: + stage: config script: - - /bin/bash .gitlabci/setup.sh - - mkdir -p build - - pwd - - cp containers/singularity/Singularity Singularity.hcana - - cp Singularity.hcana build/. - - /bin/bash .gitlabci/build.sh Singularity.hcana - - cp Singularity.hcana.simg build/. + - export HCANA_TAG="latest" + - | + if [ "x${CI_PIPELINE_SOURCE}" == "xmerge_request_event" ]; then + export HCANA_TAG="testing-mr-${CI_MERGE_REQUEST_IID}" + fi + - echo "CI HCANA_TAG for this pipeline set to ${HCANA_TAG}" + - echo "HCANA_TAG=$HCANA_TAG" >> hcana.env artifacts: - paths: - - build/Singularity.hcana - - build/Singularity.hcana.simg + reports: + dotenv: hcana.env -elastic_replay: - when: manual - tags: - - eic0 docker - stage: data_replays - dependencies: - - hcana_singularity +docker: + stage: build + needs: + - env script: - - bash tests/replay_elastic_data.sh - artifacts: - paths: - - ROOTfiles/* - - build/Singularity.hcana - - build/Singularity.hcana.simg - + - echo $HCANA_TAG + - ./.gitlabci/configure.sh .containers/Dockerfile.in + - cd .containers + - make build-nc -elastic_test1: - when: manual - tags: - - eic0 docker - stage: data_tests - dependencies: - - elastic_replay +## for now only publish the stable versions to the registry. +## if we change this down the line for some CI-time testing +## make sure to also enable the cleanup job +publish: + stage: push + rules: + - if: '$CI_COMMIT_BRANCH == "master"' + when: manual + - if: '$CI_COMMIT_TAG' + when: manual + needs: + - env + - docker script: - - bash tests/elastic_test.sh + - cd .containers + - | + if [ "x$CI_COMMIT_TAG" != "x" ]; then + make publish publish-version + else + make publish + fi + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure -elastic_test2: - when: manual - tags: - - eic0 docker - stage: data_tests - dependencies: - - elastic_replay +.singularity: + stage: deploy + needs: + - env + - publish script: - - bash tests/elastic_test2.sh + - ./.gitlabci/configure.sh .containers/hcana.def.in + - mkdir -p build + - mv .containers/hcana.def build + - singularity build build/hcana.sif build/hcana.def + retry: + max: 2 + when: + - runner_system_failure + - stuck_or_timeout_failure +singularity:latest: + extends: .singularity + rules: + - if: '$CI_COMMIT_BRANCH == "master"' + when: manual + - if: '$CI_COMMIT_TAG' + when: manual + artifacts: + expire_in: 90 days + paths: + - build/hcana.sif + - build/hcana.def +purge_image: + stage: cleanup + needs: + - env + - publish + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + script: + - cd .containers + - make cleanup || true + - make unpublish || true diff --git a/.gitlabci/build.sh b/.gitlabci/build.sh old mode 100644 new mode 100755 diff --git a/.gitlabci/configure.sh b/.gitlabci/configure.sh new file mode 100755 index 0000000..c59d8a4 --- /dev/null +++ b/.gitlabci/configure.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +## Configure a CI file based on a template file (first and only +## argument to this script). + +## Known variables that will be substituted: +## @CONTAINER_TAG@ - docker tag for the ROOT container +## @HCANA_TAG@ - output tag for the hcana version +## @HCANA_BRANCH@ - hcana git branch for build + +TEMPLATE_FILE=$1 +OUTPUT_FILE=${TEMPLATE_FILE%.*} +HCANA_BRANCH="master" + +if [ -n "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}" ] ; then + HCANA_BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME +fi + +echo "Configuring CI file: ${TEMPLATE_FILE}" +echo "Output will be written to: ${OUTPUT_FILE}" + +sed "s/@CONTAINER_TAG@/$CONTAINER_TAG/g" $TEMPLATE_FILE | \ + sed "s/@HCANA_TAG@/$HCANA_TAG/g" | \ + sed "s/@HCANA_BRANCH@/$HCANA_BRANCH/g" > ${OUTPUT_FILE} + +echo "Done" diff --git a/.gitlabci/setup.sh b/.gitlabci/setup.sh deleted file mode 100644 index 5c9bbe5..0000000 --- a/.gitlabci/setup.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -apt-get update && apt-get install -y wget git \ - build-essential \ - squashfs-tools \ - libtool \ - autotools-dev \ - libarchive-dev \ - automake \ - autoconf \ - uuid-dev \ - python3 \ - libssl-dev - - -sed -i -e 's/^Defaults\tsecure_path.*$//' /etc/sudoers - -# Check Python -echo "Python Version:" -which python -python --version -pip install sregistry[all] -sregistry version - -echo "sregistry Version:" - -# Install Singularity - -cd /tmp && \ - git clone -b vault/release-2.5 https://www.github.com/sylabs/singularity.git - cd singularity && \ - ./autogen.sh && \ - ./configure --prefix=/usr/local && \ - make -j8 && make install diff --git a/.gitlabci/sregistry-gitlab.png b/.gitlabci/sregistry-gitlab.png deleted file mode 100644 index a14e917a20fb32011329af6bc6abd04012acd0d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38298 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 diff --git a/.gitlabci/sregistry-gitlab.xcf b/.gitlabci/sregistry-gitlab.xcf deleted file mode 100644 index f2742162bfc602f92d3d9c5cd573f29e334e042d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100932 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ϐvJ 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 B=kx#o diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..88c5fb8 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.4.0 diff --git a/bin/compile b/bin/compile deleted file mode 100755 index ea6387a..0000000 --- a/bin/compile +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -#set -o nounset -set -o errexit -startdir=$(pwd) -export PYTHONPATH=/usr/local/lib:$PYTHONPATH -export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH -export PATH=/usr/local/bin:$PATH -source /usr/local/bin/thisroot.sh -cd /tmp -git clone https://github.com/fmtlib/fmt.git && cd fmt -git checkout 6.2.1 && mkdir /tmp/build && cd /tmp/build -cmake -DBUILD_SHARED_LIBS=TRUE ../fmt -make -j20 install -cd /tmp && rm -r /tmp/build && rm -r /tmp/fmt -cd /tmp -git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hallac_evio.git -mkdir hallac_evio/build && cd hallac_evio/build -cmake ../. && make -j20 && make install -cd /tmp && rm -rf hallac_evio -cd /tmp -export PYTHONPATH=/usr/local/lib:$PYTHONPATH -export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH -export PATH=/usr/local/bin:$PATH -git clone --depth 1 https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/analyzer.git -mkdir analyzer/build && cd analyzer/build -cmake ../. && make -j20 VERBOSE=1 && make install -cd /tmp && rm -rf analyzer -export PYTHONPATH=/usr/local/lib:$PYTHONPATH -export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH -export PATH=/usr/local/bin:$PATH -source /usr/local/bin/thisroot.sh -cd $startdir -mkdir build && cd build -cmake ../. && make -j20 VERBOSE=1 && make install - diff --git a/containers/docker/Dockerfile b/containers/docker/Dockerfile deleted file mode 100644 index f3a412a..0000000 --- a/containers/docker/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -FROM eicweb.phy.anl.gov:4567/containers/image_recipes/root_base:latest - -LABEL maintainer "Whitney Armstrong <warmstrong@anl.gov>" -# - -RUN ls -lrth /usr/local/lib/lib*.so \ - && export PYTHONPATH=/usr/local/lib:$PYTHONPATH \ - && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH \ - && export PATH=/usr/local/bin:$PATH \ - && source /usr/local/bin/thisroot.sh \ - && cd /tmp \ - && git clone https://github.com/fmtlib/fmt.git && cd fmt \ - && git checkout 6.2.1 && mkdir /tmp/build && cd /tmp/build \ - && cmake -DBUILD_SHARED_LIBS=TRUE ../fmt \ - && make -j20 install \ - && cd /tmp && rm -r /tmp/build && rm -r /tmp/fmt \ - && cd /tmp \ - && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hallac_evio.git \ - && mkdir hallac_evio/build && cd hallac_evio/build \ - && cmake ../. && make -j20 && make install \ - && cd /tmp && rm -rf hallac_evio \ - && cd /tmp \ - && export PYTHONPATH=/usr/local/lib:$PYTHONPATH \ - && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH \ - && export PATH=/usr/local/bin:$PATH \ - && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/analyzer.git \ - && mkdir analyzer/build && cd analyzer/build && git pull && git checkout v1.8.2 \ - && cmake ../. && make -j20 VERBOSE=1 && make install \ - && cd /tmp && rm -rf analyzer \ - && export PYTHONPATH=/usr/local/lib:$PYTHONPATH \ - && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH \ - && export PATH=/usr/local/bin:$PATH \ - && source /usr/local/bin/thisroot.sh \ - && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hcana.git \ - && mkdir hcana/build && cd hcana/build \ - && git pull \ - && cmake ../. && make -j20 VERBOSE=1 && make install \ - && cd /tmp && rm -rf hcana - - -#-DCMAKE_CXX_FLAGS=" -march=haswell -O3 -mfma -malign-data=cacheline -finline-functions " -#&& wget -O- https://root.cern.ch/download/root_v6.14.06.source.tar.gz | tar -zxvf - \ -#&& mv root-6.14.06 root_master \ -#RUN which c++ && ls -lrth /usr/bin/c++ && cd /tmp/builds/root_build && make -j38 VERBOSE=1 && make install \ -# && cd /tmp && rm -rf /tmp/root_master && rm -rf /tmp/builds/root_build - -#RUN useradd -ms /bin/bash -d /opt/user user -#USER user -#WORKDIR /opt/bubble_user - -##CMD ["-c" ] -#ENTRYPOINT ["/bin/bash"] - diff --git a/containers/docker/Dockerfile.broadwell b/containers/docker/Dockerfile.broadwell deleted file mode 100644 index 9185d45..0000000 --- a/containers/docker/Dockerfile.broadwell +++ /dev/null @@ -1,58 +0,0 @@ -# ROOT base -# -# A container for the latest root -# -FROM whit/image_recipes/ubuntu_base:latest -LABEL maintainer "Whitney Armstrong <warmstrong@anl.gov>" -# - -RUN cd /tmp \ - && wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2 \ - && tar -xvf 3.3.4.tar.bz2 \ - && cd eigen-* \ - && mkdir build && cd build \ - && cmake ../. -DCMAKE_CXX_FLAGS=" -march=haswell -O3 -mfma -malign-data=cacheline -finline-functions " \ - && make -j10 > /tmp/eigen_build.log && make install - -RUN cd /tmp \ - && git clone --depth=1 https://gitlab.cern.ch/CLHEP/CLHEP.git \ - && mkdir -p builds/clhep_build \ - && cd builds/clhep_build \ - && cmake /tmp/CLHEP/. -DCMAKE_CXX_FLAGS=" -march=haswell -O3 -mfma -malign-data=cacheline -finline-functions "\ - && make -j38 install > /tmp/clhep_build.log \ - && cd /tmp && rm -rf /tmp/CLHEP && rm -rf /tmp/builds/clhep_build - -RUN cd /tmp \ -&& git clone https://github.com/VcDevel/Vc.git \ -&& cd Vc \ -&& git submodule update --init \ -&& mkdir build && cd build \ -&& cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTING=OFF -DTARGET_ARCHITECTURE=broadwell ../. \ -&& make -j30 > /tmp/vc_build.log \ -&& make install - -# Build root from the repo master -RUN cd /tmp \ - && pwd \ - && git clone --depth=1 https://github.com/root-project/root.git root_master \ - && cd /tmp && mkdir -p builds/root_build \ - && cd builds/root_build \ - && cmake ../../root_master/. -Droot7:BOOL=ON -Dcxx17:BOOL=ON -Dfortran:BOOL=ON \ - -Dgdml:BOOL=ON -Dmathmore:BOOL=ON -Dminuit2:BOOL=ON -Dbuiltin_vdt:BOOL=ON -Dbuiltin_veccore:BOOL=ON \ - -Dvc:BOOL=ON -Dbuiltin_vecgeom:BOOL=ON -Dunuran:BOOL=ON \ - && cd /tmp/builds/root_build && make -j38 > /tmp/root_build.log && make install \ - && cd /tmp && rm -rf /tmp/root_master && rm -rf /tmp/builds/root_build - -#-DCMAKE_CXX_FLAGS=" -march=haswell -O3 -mfma -malign-data=cacheline -finline-functions " -#&& wget -O- https://root.cern.ch/download/root_v6.14.06.source.tar.gz | tar -zxvf - \ -#&& mv root-6.14.06 root_master \ -#RUN which c++ && ls -lrth /usr/bin/c++ && cd /tmp/builds/root_build && make -j38 VERBOSE=1 && make install \ -# && cd /tmp && rm -rf /tmp/root_master && rm -rf /tmp/builds/root_build - -#RUN useradd -ms /bin/bash -d /opt/user user -#USER user -#WORKDIR /opt/bubble_user - -##CMD ["-c" ] -#ENTRYPOINT ["/bin/bash"] - diff --git a/containers/docker/README.md b/containers/docker/README.md deleted file mode 100644 index d633796..0000000 --- a/containers/docker/README.md +++ /dev/null @@ -1,18 +0,0 @@ -Hall A/C Software -================= - - -Images for running containers for all aspects of the SANE experimental -analysis. - -The starting point is a pre-built image for the ROOT libraries. (ubuntu + ROOT) - -Main software libraries: - - - `evio`: Built from https://github.com/whit2333/hallac_evio - - `analyzer`: Hall A analyzer (podd)from https://github.com/whit2333/analyzer - - `hcana`: Hall C analyzer from https://github.com/whit2333/hcana - -These are all built using the super build project `cool_halls` (https://github.com/whit2333/cool_halls) - - diff --git a/containers/docker/config.env b/containers/docker/config.env deleted file mode 100644 index 6319518..0000000 --- a/containers/docker/config.env +++ /dev/null @@ -1,23 +0,0 @@ -# Port to run the container -PORT=4000 - -REG_TOKEN ?= ${CI_IMAGE_BUILD_PAT} -REG_USER ?= whit -REG_NAME ?= eicweb.phy.anl.gov:4567 -REG_HOST ?= eicweb.phy.anl.gov:4567 - -# name of alternate build: -# Dockerfile.$(ALT_NAME) --> $(APP_NAME)_${ALT_NAME} -ALT_NAME ?= broadwell - -APP_NAME = hcana -REPO_NAME = hcana -DH_ORG = hallac -GL_GROUP = jlab/hallc/analyzer_software -GL_REG_GROUP = jlab/hallc/analyzer_software -GL_REG_NAME = hcana -REPO = hcana -TAG_VERSION = latest - - - diff --git a/containers/docker/deploy.env b/containers/docker/deploy.env deleted file mode 100644 index 909aa72..0000000 --- a/containers/docker/deploy.env +++ /dev/null @@ -1,5 +0,0 @@ -# You have to define the values in {} -#DOCKER_REPO={account-nr}.dkr.ecr.{region}.amazonaws.com -## optional aws-cli options -#AWS_CLI_PROFILE={aws-cli-profile} -#AWS_CLI_REGION={aws-cli-region} diff --git a/containers/docker/usage.sh b/containers/docker/usage.sh deleted file mode 100644 index 0b72b47..0000000 --- a/containers/docker/usage.sh +++ /dev/null @@ -1,26 +0,0 @@ -# INSTALL -# - copy the files deploy.env, config.env, version.sh and Makefile to your repo -# - replace the vars in deploy.env -# - define the version script - -# Build the container -make build - -# Build and publish the container -make release - -# Publish a container to AWS-ECR. -# This includes the login to the repo -make publish - -# Run the container -make run - -# Build an run the container -make up - -# Stop the running container -make stop - -# Build the container with differnt config and deploy file -make cnf=another_config.env dpl=another_deploy.env build \ No newline at end of file diff --git a/containers/docker/version.sh b/containers/docker/version.sh deleted file mode 100644 index 504899f..0000000 --- a/containers/docker/version.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -echo "0.1" diff --git a/containers/singularity/Singularity b/containers/singularity/Singularity deleted file mode 100644 index e57ff64..0000000 --- a/containers/singularity/Singularity +++ /dev/null @@ -1,125 +0,0 @@ -Bootstrap: docker -From: eicweb.phy.anl.gov:4567/jlab/hallc/analyzer_software/hcana:latest - -%help - Hall A/C container. - Tools: - - evio : EVIO DAQ data format - - analyzer : Hall A analyzer (podd) - - hcana : Hall C analyzer (hcana) - - root : root version used for the analyzer - - rootls, rootbrowse, root_config - -%labels - Maintainer "Whitney Armstrong, Sylvester Joosten" - Version v1.0 - -%setup -c /bin/bash - export SINGULARITY_SHELL=/bin/bash - -%environment -c /bin/bash - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include:/usr/local/include/podd:/usr/local/include/hcana - -%post -c /bin/bash - echo "Hello from post" - echo "Install additional software here" - source /usr/local/bin/thisroot.sh - ## libformat and nlohmann json used heavily in new generation replay scripts - ## libformat - #cd /tmp && git clone https://github.com/fmtlib/fmt.git && cd fmt && \ - # git checkout 5.3.0 && mkdir /tmp/build && cd /tmp/build && \ - # cmake -DBUILD_SHARED_LIBS=TRUE ../fmt && - # make -j4 install && cd /tmp && rm -r /tmp/build && rm -r /tmp/fmt - ### json - -# ======================= -# global -# ======================= - -%runscript - echo "Launching a shell in the Hall A/C singularity container - exec bash - - -# ======================= -# root -# ======================= -%apprun root - root "$@" - -%appenv root - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include/podd:/usr/local/include/hcana - -# ======================= -# analyzer -# ======================= -%apprun analyzer - analyzer "$@" - -%appenv analyzer - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include/podd:/usr/local/include/hcana - -# ======================= -# hcana -# ======================= -%apphelp hcana - Run the Hall-C analyzer with same root-style arguments. - -%apprun hcana - source /usr/local/bin/thisroot.sh - hcana "$@" - -%appenv hcana - export DB_DIR=DBASE - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOTSYS=/usr/local - export ROOT_INCLUDE_PATH=/usr/local/include - export ROOT_INCLUDE_PATH=/usr/local/include:/usr/local/include/podd:/usr/local/include/hcana - -# ======================= -# root-config -# ======================= -%apprun root_config - root-config "$@" - -%appenv root_config - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include/podd:/usr/local/include/hcana - - -# ======================= -# rootbrowse -# ======================= -%apprun rootbrowse - rootbrowse "$@" - -%appenv rootbrowse - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include/podd:/usr/local/include/hcana - -# ======================= -# rootls -# ======================= -%apprun rootls - rootls "$@" - -%appenv rootls - export PYTHONPATH=/usr/local/lib:${PYTHONPATH} - export PATH=/usr/local/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH - export ROOT_INCLUDE_PATH=/usr/local/include/podd:/usr/local/include/hcana diff --git a/setup.fish b/setup.fish deleted file mode 100644 index 0ad82c6..0000000 --- a/setup.fish +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/fish - -function update_path -d "Remove argv[2]argv[3] from argv[1] if argv[2], and prepend argv[4]" - # Assert that we got enough arguments - if test (count $argv) -ne 4 - echo "update_path: needs 4 arguments but have " (count $argv) - return 1 - end - - set var $argv[1] - - set newpath $argv[4] - for el in $$var - if test "$argv[2]" = ""; or not test "$el" = "$argv[2]$argv[3]" - set newpath $newpath $el - end - end - - set -xg $var $newpath -end - - -if set -q HCANALYZER - set old_hcanalyzer $HCANALYZER -end - -if set -q ANALYZER - set old_analyzer $ANALYZER -end -set -x HCANALYZER (realpath (dirname (status -f))) -set -x ANALYZER $HCANALYZER/podd - -update_path LD_LIBRARY_PATH "$old_hcanalyzer" "" $HCANALYZER -update_path LD_LIBRARY_PATH "$old_analyzer" "$HCANALYZER" $ANALYZER -update_path DYLD_LIBRARY_PATH "$old_hcanalyzer" "" $HCANALYZER -update_path DYLD_LIBRARY_PATH "$old_analyzer" "$HCANALYZER" $ANALYZER - diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 6a0afb3..0000000 --- a/tests/README.md +++ /dev/null @@ -1,13 +0,0 @@ -Hcana tests -=========== - -## Current tests: - -- ep elastic tests - -## Tests to add: - -- Start time check -- Focal plane times test -- "Tracking efficiency" test -- Invariant mass check (jpsi) diff --git a/tests/elastic_coin_replay.cxx b/tests/elastic_coin_replay.cxx deleted file mode 100644 index 7011fa8..0000000 --- a/tests/elastic_coin_replay.cxx +++ /dev/null @@ -1,296 +0,0 @@ -#include <fmt/core.h> -#include <fmt/ostream.h> -#include <vector> - -#include "TString.h" - -R__LOAD_LIBRARY(libHallC.so) -#include "hcana/HallC_Data.h" -#include "DecData.h" -//R__LOAD_LIBRARY(libScandalizer.so) -//#include "monitor/DetectorDisplay.h" -//#include "monitor/DisplayPlots.h" -//#include "monitor/MonitoringDisplay.h" -//#include "scandalizer/PostProcessors.h" -//#include "scandalizer/ScriptHelpers.h" -// -//#include "THaPostProcess.h" -//#include "monitor/ExperimentMonitor.h" -//#include "scandalizer/PostProcessors.h" -#include "THcAnalyzer.h" -#include "THaCut.h" -#include "THcGlobals.h" -#include "THcHallCSpectrometer.h" -#include "THcDetectorMap.h" -#include "THcCherenkov.h" -#include "THcDC.h" -#include "THcHodoscope.h" -#include "THcParmList.h" -#include "THaGoldenTrack.h" -#include "THcHodoEff.h" -#include "THcScalerEvtHandler.h" -#include "THcShower.h" -#include "THcReactionPoint.h" -#include "THcExtTarCor.h" -#include "THcRasteredBeam.h" -#include "THcRun.h" -#include "THcCoinTime.h" -#include "THcConfigEvtHandler.h" -#include "THcTrigDet.h" -#include "THcTrigApp.h" -#include "THcSecondaryKine.h" -#include "THcAerogel.h" -#include "THcPrimaryKine.h" -#include "THaReactionPoint.h" - - - -void elastic_coin_replay(Int_t RunNumber = 0, Int_t MaxEvent = -1) { - using namespace std; - - // Get RunNumber and MaxEvent if not provided. - if( RunNumber<=0 ) { - std::exit(-1); - } - - // Create file name patterns. - const char* RunFileNamePattern = "coin_all_%05d.dat"; - vector<TString> pathList; - pathList.push_back("."); - pathList.push_back("./raw"); - pathList.push_back("./raw/../raw.copiedtotape"); - pathList.push_back("./cache"); - - //const char* RunFileNamePattern = "raw/coin_all_%05d.dat"; - const char* ROOTFileNamePattern = "ROOTfiles/coin_replay_production_%d_%d.root"; - - // Load global parameters - gHcParms->Define("gen_run_number", "Run Number", RunNumber); - gHcParms->AddString("g_ctp_database_filename", "DBASE/COIN/standard.database"); - gHcParms->Load(gHcParms->GetString("g_ctp_database_filename"), RunNumber); - gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename")); - gHcParms->Load(gHcParms->GetString("g_ctp_kinematics_filename"), RunNumber); - // Load params for COIN trigger configuration - gHcParms->Load("PARAM/TRIG/tcoin.param"); - // Load fadc debug parameters - gHcParms->Load("PARAM/HMS/GEN/h_fadc_debug.param"); - gHcParms->Load("PARAM/SHMS/GEN/p_fadc_debug.param"); - - // const char* CurrentFileNamePattern = "low_curr_bcm/bcmcurrent_%d.param"; - // gHcParms->Load(Form(CurrentFileNamePattern, RunNumber)); - - // Load the Hall C detector map - gHcDetectorMap = new THcDetectorMap(); - gHcDetectorMap->Load("MAPS/COIN/DETEC/coin.map"); - - // Dec data - gHaApps->Add(new Podd::DecData("D","Decoder raw data")); - //=:=:=:= - // SHMS - //=:=:=:= - - // Set up the equipment to be analyzed. - THcHallCSpectrometer* SHMS = new THcHallCSpectrometer("P", "SHMS"); - SHMS->SetEvtType(1); - SHMS->AddEvtType(4); - SHMS->AddEvtType(5); - SHMS->AddEvtType(6); - SHMS->AddEvtType(7); - gHaApps->Add(SHMS); - // Add Noble Gas Cherenkov to SHMS apparatus - THcCherenkov* pngcer = new THcCherenkov("ngcer", "Noble Gas Cherenkov"); - SHMS->AddDetector(pngcer); - // Add drift chambers to SHMS apparatus - THcDC* pdc = new THcDC("dc", "Drift Chambers"); - SHMS->AddDetector(pdc); - // Add hodoscope to SHMS apparatus - THcHodoscope* phod = new THcHodoscope("hod", "Hodoscope"); - SHMS->AddDetector(phod); - // Add Heavy Gas Cherenkov to SHMS apparatus - THcCherenkov* phgcer = new THcCherenkov("hgcer", "Heavy Gas Cherenkov"); - SHMS->AddDetector(phgcer); - // Add Aerogel Cherenkov to SHMS apparatus - THcAerogel* paero = new THcAerogel("aero", "Aerogel"); - SHMS->AddDetector(paero); - // Add calorimeter to SHMS apparatus - THcShower* pcal = new THcShower("cal", "Calorimeter"); - SHMS->AddDetector(pcal); - - // THcBCMCurrent* hbc = new THcBCMCurrent("H.bcm", "BCM current check"); - // gHaPhysics->Add(hbc); - - // Add rastered beam apparatus - THaApparatus* pbeam = new THcRasteredBeam("P.rb", "Rastered Beamline"); - gHaApps->Add(pbeam); - // Add physics modules - // Calculate reaction point - THcReactionPoint* prp = new THcReactionPoint("P.react", "SHMS reaction point", "P", "P.rb"); - gHaPhysics->Add(prp); - // Calculate extended target corrections - THcExtTarCor* pext = new THcExtTarCor("P.extcor", "HMS extended target corrections", "P", "P.react"); - gHaPhysics->Add(pext); - // Calculate golden track quantites - THaGoldenTrack* pgtr = new THaGoldenTrack("P.gtr", "SHMS Golden Track", "P"); - gHaPhysics->Add(pgtr); - // Calculate the hodoscope efficiencies - THcHodoEff* peff = new THcHodoEff("phodeff", "SHMS hodo efficiency", "P.hod"); - gHaPhysics->Add(peff); - - // Add event handler for scaler events - THcScalerEvtHandler* pscaler = new THcScalerEvtHandler("P", "Hall C scaler event type 1"); - pscaler->AddEvtType(1); - pscaler->AddEvtType(4); - pscaler->AddEvtType(5); - pscaler->AddEvtType(6); - pscaler->AddEvtType(7); - pscaler->AddEvtType(129); - pscaler->SetDelayedType(129); - pscaler->SetUseFirstEvent(kTRUE); - gHaEvtHandlers->Add(pscaler); - - //=:=:= - // HMS - //=:=:= - - // Set up the equipment to be analyzed. - THcHallCSpectrometer* HMS = new THcHallCSpectrometer("H", "HMS"); - HMS->SetEvtType(2); - HMS->AddEvtType(4); - HMS->AddEvtType(5); - HMS->AddEvtType(6); - HMS->AddEvtType(7); - gHaApps->Add(HMS); - // Add drift chambers to HMS apparatus - THcDC* hdc = new THcDC("dc", "Drift Chambers"); - HMS->AddDetector(hdc); - // Add hodoscope to HMS apparatus - THcHodoscope* hhod = new THcHodoscope("hod", "Hodoscope"); - HMS->AddDetector(hhod); - // Add Cherenkov to HMS apparatus - THcCherenkov* hcer = new THcCherenkov("cer", "Heavy Gas Cherenkov"); - HMS->AddDetector(hcer); - // Add Aerogel Cherenkov to HMS apparatus - // THcAerogel* haero = new THcAerogel("aero", "Aerogel"); - // HMS->AddDetector(haero); - // Add calorimeter to HMS apparatus - THcShower* hcal = new THcShower("cal", "Calorimeter"); - HMS->AddDetector(hcal); - - // Add rastered beam apparatus - THaApparatus* hbeam = new THcRasteredBeam("H.rb", "Rastered Beamline"); - gHaApps->Add(hbeam); - // Add physics modules - // Calculate reaction point - THcReactionPoint* hrp = new THcReactionPoint("H.react", "HMS reaction point", "H", "H.rb"); - gHaPhysics->Add(hrp); - // Calculate extended target corrections - THcExtTarCor* hext = new THcExtTarCor("H.extcor", "HMS extended target corrections", "H", "H.react"); - gHaPhysics->Add(hext); - // Calculate golden track quantities - THaGoldenTrack* hgtr = new THaGoldenTrack("H.gtr", "HMS Golden Track", "H"); - gHaPhysics->Add(hgtr); - // Calculate the hodoscope efficiencies - THcHodoEff* heff = new THcHodoEff("hhodeff", "HMS hodo efficiency", "H.hod"); - gHaPhysics->Add(heff); - - // Add event handler for scaler events - THcScalerEvtHandler *hscaler = new THcScalerEvtHandler("H", "Hall C scaler event type 4"); - hscaler->AddEvtType(2); - hscaler->AddEvtType(4); - hscaler->AddEvtType(5); - hscaler->AddEvtType(6); - hscaler->AddEvtType(7); - hscaler->AddEvtType(129); - hscaler->SetDelayedType(129); - hscaler->SetUseFirstEvent(kTRUE); - gHaEvtHandlers->Add(hscaler); - - //=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= - // Kinematics Modules - //=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= - - // Add Physics Module to calculate primary (scattered electrons) beam kinematics - THcPrimaryKine* hkin_primary = new THcPrimaryKine("H.kin.primary", "HMS Single Arm Kinematics", "H", "H.rb"); - gHaPhysics->Add(hkin_primary); - // Add Physics Module to calculate secondary (scattered hadrons) beam kinematics - THcSecondaryKine* pkin_secondary = new THcSecondaryKine("P.kin.secondary", "SHMS Single Arm Kinematics", "P", "H.kin.primary"); - gHaPhysics->Add(pkin_secondary); - - //=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= - // Global Objects & Event Handlers - //=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= - - // Add trigger apparatus - THaApparatus* TRG = new THcTrigApp("T", "TRG"); - gHaApps->Add(TRG); - // Add trigger detector to trigger apparatus - THcTrigDet* coin = new THcTrigDet("coin", "Coincidence Trigger Information"); - // Suppress missing reference time warnings for these event types - coin->SetEvtType(1); - coin->AddEvtType(2); - TRG->AddDetector(coin); - - - //Add coin physics module THcCoinTime::THcCoinTime (const char *name, const char* description, const char* hadArmName, - // const char* elecArmName, const char* coinname) : - THcCoinTime* coinTime = new THcCoinTime("CTime", "Coincidende Time Determination", "P", "H", "T.coin"); - gHaPhysics->Add(coinTime); - - // Add event handler for prestart event 125. - THcConfigEvtHandler* ev125 = new THcConfigEvtHandler("HC", "Config Event type 125"); - gHaEvtHandlers->Add(ev125); - // Add event handler for EPICS events - THaEpicsEvtHandler* hcepics = new THaEpicsEvtHandler("epics", "HC EPICS event type 180"); - gHaEvtHandlers->Add(hcepics); - - // Set up the analyzer - we use the standard one, - // but this could be an experiment-specific one as well. - // The Analyzer controls the reading of the data, executes - // tests/cuts, loops over Acpparatus's and PhysicsModules, - // and executes the output routines. - THcAnalyzer* analyzer = new THcAnalyzer; - - // A simple event class to be output to the resulting tree. - // Creating your own descendant of THaEvent is one way of - // defining and controlling the output. - THaEvent* event = new THaEvent; - - // Define the run(s) that we want to analyze. - // We just set up one, but this could be many. - THcRun* run = new THcRun( pathList, Form(RunFileNamePattern, RunNumber) ); - - // Set to read in Hall C run database parameters - run->SetRunParamClass("THcRunParameters"); - - // Eventually need to learn to skip over, or properly analyze the pedestal events - run->SetEventRange(1, MaxEvent); // Physics Event number, does not include scaler or control events. - run->SetNscan(1); - run->SetDataRequired(0x7); - run->Print(); - - // Define the analysis parameters - TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber, MaxEvent); - analyzer->SetCountMode(2); // 0 = counter is # of physics triggers - // 1 = counter is # of all decode reads - // 2 = counter is event number - - analyzer->SetEvent(event); - // Set EPICS event type - analyzer->SetEpicsEvtType(180); - // Define crate map - analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat"); - // Define output ROOT file - analyzer->SetOutFile(ROOTFileName.Data()); - // Define DEF-file+ - analyzer->SetOdefFile("DEF-files/COIN/PRODUCTION/coin_production_hElec_pProt.def"); - // Define cuts file - analyzer->SetCutFile("DEF-files/COIN/PRODUCTION/CUTS/coin_production_cuts.def"); // optional - // File to record accounting information for cuts - analyzer->SetSummaryFile(Form("REPORT_OUTPUT/COIN/PRODUCTION/summary_production_%d_%d.report", RunNumber, MaxEvent)); // optional - // Start the actual analysis. - analyzer->Process(run); - // Create report file from template - analyzer->PrintReport("TEMPLATES/COIN/PRODUCTION/coin_production.template", - Form("REPORT_OUTPUT/COIN/PRODUCTION/replay_coin_production_%d_%d.report", RunNumber, MaxEvent)); // optional - -} diff --git a/tests/elastic_test.cxx b/tests/elastic_test.cxx deleted file mode 100644 index 4c9ad79..0000000 --- a/tests/elastic_test.cxx +++ /dev/null @@ -1,446 +0,0 @@ -#include "nlohmann/json.hpp" -#include <cmath> -#include <iostream> - -#include "ROOT/RDataFrame.hxx" -#include "ROOT/RVec.hxx" - -#include "Math/Vector3D.h" -#include "Math/Vector4D.h" -#include "Math/VectorUtil.h" -#include "TCanvas.h" -#include "TLatex.h" -#include "TStyle.h" -#include "TSystem.h" -R__LOAD_LIBRARY(libMathMore.so) -R__LOAD_LIBRARY(libGenVector.so) - -R__LOAD_LIBRARY(libfmt.so) -#include "fmt/core.h" - -#include "THStack.h" - -#ifdef __cpp_lib_filesystem -#include <filesystem> -namespace fs = std::filesystem; -#else -#include <experimental/filesystem> -namespace fs = std::experimental::filesystem; -#endif - -using RDFNode = decltype(ROOT::RDataFrame{0}.Filter("")); -using Histo1DProxy = - decltype(ROOT::RDataFrame{0}.Histo1D(ROOT::RDF::TH1DModel{"", "", 128u, 0., 0.}, "")); - -struct RDFInfo { - RDFNode& df; - const std::string title; - RDFInfo(RDFNode& df, std::string_view title) : df{df}, title{title} {} -}; - -constexpr const double M_P = .938272; -constexpr const double M_P2 = M_P * M_P; -constexpr const double M_pion = 0.139; -constexpr const double M_pion2 = M_pion * M_pion; -constexpr const double M_e = .000511; - -// ================================================================================= -// Cuts -// ================================================================================= -std::string goodTrackSHMS = "P.gtr.dp > -10 && P.gtr.dp < 22"; -std::string goodTrackHMS = "H.gtr.dp > -8 && H.gtr.dp < 8"; - -std::string piCutSHMS = "P.cal.etottracknorm<1.0"; -//std::string piCutSHMS = "P.aero.npeSum > 1.0 && P.cal.eprtracknorm < 0.2 && P.cal.etottracknorm<1.0"; - -std::string eCutHMS = "H.cal.etottracknorm > 0.50 && H.cal.etottracknorm < 2. && " - "H.cer.npeSum > 1."; - -std::string epiCut = "P.aero.npeSum > 1.0 && P.cal.eprtracknorm < 0.2 && " - "H.cer.npeSum > 1.0 && H.cal.etottracknorm > 0.6 && " - "H.cal.etottracknorm < 2.0 && P.cal.etottracknorm<1.0"; - -using Pvec3D = ROOT::Math::XYZVector; -using Pvec4D = ROOT::Math::PxPyPzMVector; - -// ================================================================================= -// reconstruction -// ================================================================================= -auto p_pion = [](double px, double py, double pz) { - return Pvec4D{px * 0.996, py * 0.996, pz * 0.996, M_e}; -}; -auto p_electron = [](double px, double py, double pz) { - return Pvec4D{px * 0.994, py * 0.994, pz * 0.994, M_e}; -}; -auto t = [](const double Egamma, Pvec4D& jpsi) { - Pvec4D beam{0, 0, Egamma, 0}; - return (beam - jpsi).M2(); -}; - -bool root_file_exists(std::string rootfile) { - bool found_good_file = false; - if (!gSystem->AccessPathName(rootfile.c_str())) { - TFile file(rootfile.c_str()); - if (file.IsZombie()) { - std::cout << rootfile << " is a zombie.\n"; - std::cout - << " Did your replay finish? Check that the it is done before running this script.\n"; - return false; - // return; - } else { - std::cout << " using : " << rootfile << "\n"; - return true; - } - } - return false; -} - -void elastic_test(int RunNumber = 6012, int nevents = 50000, int prompt = 0, int update = 0, - int default_count_goal = 10000, int redo_timing = 0) { - - // =============================================================================================== - // Initialization - // =============================================================================================== - using nlohmann::json; - json j; - { - std::ifstream json_input_file("db2/run_list_coin.json"); - try { - json_input_file >> j; - } catch (json::parse_error) { - std::cerr << "error: json file, db2/run_list.json, is incomplete or has broken syntax.\n"; - std::quick_exit(-127); - } - } - - auto runnum_str = std::to_string(RunNumber); - if (j.find(runnum_str) == j.end()) { - std::cout << "Run " << RunNumber << " not found in db2/run_list_coin.json\n"; - std::cout << "Check that run number and replay exists. \n"; - std::cout << "If problem persists please contact Sylvester (217-848-0565)\n"; - } - double P0_shms_setting = j[runnum_str]["spectrometers"]["shms_momentum"].get<double>(); - double P0_shms = std::abs(P0_shms_setting); - - bool found_good_file = false; - - std::string rootfile = - fmt::format("full_online/coin_replay_production_{}_{}.root", RunNumber, nevents); - found_good_file = root_file_exists(rootfile.c_str()); - if (!found_good_file) { - rootfile = - fmt::format("ROOTfiles_volatile/coin_replay_production_{}_{}.root", RunNumber, nevents); - found_good_file = root_file_exists(rootfile.c_str()); - } - if (!found_good_file) { - rootfile = fmt::format("ROOTfiles_csv/coin_replay_production_{}_{}.root", RunNumber, nevents); - found_good_file = root_file_exists(rootfile.c_str()); - } - if (!found_good_file) { - rootfile = fmt::format("ROOTfiles/coin_replay_production_{}_{}.root", RunNumber, nevents); - found_good_file = root_file_exists(rootfile.c_str()); - } - if (!found_good_file) { - std::cout << " Error: suitable root file not found\n"; - return; - } - - // =============================================================================================== - // Dataframe - // =============================================================================================== - - ROOT::EnableImplicitMT(24); - - //--------------------------------------------------------------------------- - // Detector tree - ROOT::RDataFrame d("T", rootfile); - - //// SHMS Scaler tree - //ROOT::RDataFrame d_sh("TSP", rootfile); - //// int N_scaler_events = *(d_sh.Count()); - - auto d_coin = d.Filter("fEvtHdr.fEvtType == 4"); - - // Good track cuts - auto dHMSGoodTrack = d_coin.Filter(goodTrackHMS); - auto dSHMSGoodTrack = d_coin.Filter(goodTrackSHMS); - auto dCOINGoodTrack = dHMSGoodTrack.Filter(goodTrackSHMS) - .Define("p_electron", p_electron, {"H.gtr.px", "H.gtr.py", "H.gtr.pz"}) - .Define("p_pion", p_pion, {"P.gtr.px", "P.gtr.py", "P.gtr.pz"}); - // PID cuts - auto dHMSEl = dHMSGoodTrack.Filter(eCutHMS); - auto dSHMSEl = dSHMSGoodTrack.Filter(piCutSHMS); - auto dCOINEl = dCOINGoodTrack.Filter(eCutHMS + " && " + piCutSHMS); - //.Filter( - // [=](double npe, double dp) { - // double p_track = P0_shms * (100.0 + dp) / 100.0; - // // no cerenkov cut needed when momentum is below 2.8 GeV/c - // if (p_track < 2.8) { - // return true; - // } - // return npe > 1.0; - // }, - // {"P.hgcer.npeSum", "P.gtr.dp"}); - - // Timing cuts - // Find the timing peak - // Find the coin peak - double coin_peak_center = 0; - if (redo_timing) { - auto h_coin_time = - dCOINEl.Histo1D({"coin_time", "coin_time", 8000, 0, 1000}, "CTime.ePositronCoinTime_ROC2"); - h_coin_time->DrawClone(); - int coin_peak_bin = h_coin_time->GetMaximumBin(); - coin_peak_center = h_coin_time->GetBinCenter(coin_peak_bin); - std::cout << "COINCIDENCE time peak found at: " << coin_peak_center << std::endl; - } else { - //coin_peak_center = 43.0; // run 7240-7241 - coin_peak_center = 23.0; // run 6012 - std::cout << "COINCIDENCE time peak: using pre-calculated value at: " << coin_peak_center - << std::endl; - ; - } - // timing cut lambdas - // TODO: evaluate timing cut and offset for random background - auto timing_cut = [=](double coin_time) { return std::abs(coin_time - coin_peak_center) < 2.; }; - // anti-timing set to 5x width of regular - auto anti_timing_cut = [=](double coin_time) { - return std::abs(coin_time - coin_peak_center - 28.) < 10.; - }; - - // timing counts - auto dHMSElInTime = dHMSEl.Filter(timing_cut, {"CTime.ePositronCoinTime_ROC2"}); - auto dHMSElRandom = dHMSEl.Filter(anti_timing_cut, {"CTime.ePositronCoinTime_ROC2"}); - auto dSHMSElInTime = dSHMSEl.Filter(timing_cut, {"CTime.ePositronCoinTime_ROC2"}); - auto dSHMSElRandom = dSHMSEl.Filter(anti_timing_cut, {"CTime.ePositronCoinTime_ROC2"}); - - auto dCOINElInTime = dCOINEl.Filter(timing_cut, {"CTime.ePiCoinTime_ROC2"}); - auto dCOINElRandom = dCOINEl.Filter(anti_timing_cut, {"CTime.ePiCoinTime_ROC2"}); - - // Output root file - //auto out_file = - // new TFile(fmt::format("monitoring/{}/good_csv_counter.root", RunNumber).c_str(), "UPDATE"); - //out_file->cd(); - - // ========================================================================================= - // Histograms - // ========================================================================================= - // 2D correlations - auto hTheta2DNoCuts = d_coin.Histo2D( - {"theta2D", "No cuts;#theta_{SHMS};#theta_{HMS};#counts", 50, -.1, .1, 50, -.1, .1}, - "P.gtr.th", "H.gtr.th"); - auto hTheta2DTracking = dCOINGoodTrack.Histo2D( - {"theta2D", "Cuts: tracking;#theta_{SHMS};#theta_{HMS};#counts", 50, -.1, .1, 50, -.1, .1}, - "P.gtr.th", "H.gtr.th"); - auto hTheta2DPID = - dCOINEl.Histo2D({"theta2D", "Cuts: tracking+PID;#theta_{SHMS};#theta_{HMS};#counts", 50, -.1, - .1, 50, -.1, .1}, - "P.gtr.th", "H.gtr.th"); - auto hTheta2DTiming = - dCOINElInTime.Histo2D({"theta2D", "Cuts: tracking+PID;#theta_{SHMS};#theta_{HMS};#counts", 50, - -.1, .1, 50, -.1, .1}, - "P.gtr.th", "H.gtr.th"); - // timing - auto hCoinTimeNoCuts = - d_coin.Histo1D({"coin_time.NoCuts", "No Cuts;coin_time;counts", 8000, 0, 1000}, - "CTime.ePositronCoinTime_ROC2"); - auto hCoinTimeTracking = dCOINGoodTrack.Histo1D( - {"coin_time.Tracking", "Cuts: Tracking;coin_time;counts", 8000, 0, 1000}, - "CTime.ePositronCoinTime_ROC2"); - auto hCoinTimePID = - dCOINEl.Histo1D({"coin_time.PID", "Cuts: Tracking+PID;coin_time;counts", 8000, 0, 1000}, - "CTime.ePositronCoinTime_ROC2"); - auto hCoinTimeTiming = dCOINElInTime.Histo1D( - {"coin_time.Timing", "Cuts: Tracking+PID+Timing;coin_time;counts", 8000, 0, 1000}, - "CTime.ePositronCoinTime_ROC2"); - - auto hRandCoinTimePID = dCOINElRandom.Histo1D( - {"rand_coin_time.PID", "Cuts: Tracking+PID;coin_time;counts", 8000, 0, 1000}, - "CTime.ePositronCoinTime_ROC2"); - - // P.gtr.dp - auto hPdpNoCuts = - d_coin.Histo1D({"P.gtr.dp.NoCuts", "No Cuts;#deltap [%];counts", 200, -30, 40}, "P.gtr.dp"); - auto hPdpTracking = dSHMSGoodTrack.Histo1D( - {"P.gtr.dp.Tracking", "Cuts: Tracking;#deltap [%];counts", 200, -30, 40}, "P.gtr.dp"); - auto hPdpPID = dSHMSEl.Histo1D( - {"P.gtr.dp.PID", "Cuts: Tracking+PID;#deltap [%];counts", 200, -30, 40}, "P.gtr.dp"); - auto hPdpTiming = dSHMSElInTime.Histo1D( - {"P.gtr.dp.Timing", "Cuts: Tracking+PID+Timing;#deltap [%];counts", 200, -30, 40}, - "P.gtr.dp"); - // P.gtr.th - auto hPthNoCuts = d_coin.Histo1D( - {"P.gtr.th.NoCuts", "No Cuts;#theta_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.th"); - auto hPthTracking = dSHMSGoodTrack.Histo1D( - {"P.gtr.th.Tracking", "Cuts: Tracking;#theta_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.th"); - auto hPthPID = dSHMSEl.Histo1D( - {"P.gtr.th.PID", "Cuts: Tracking+PID;#theta_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.th"); - auto hPthTiming = dSHMSElInTime.Histo1D( - {"P.gtr.th.Timing", "Cuts: Tracking+PID+Timing;#theta_{SHMS};counts", 200, -0.1, 0.1}, - "P.gtr.th"); - // P.gtr.ph - auto hPphNoCuts = - d_coin.Histo1D({"P.gtr.ph.NoCuts", "No Cuts;#phi_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.ph"); - auto hPphTracking = dSHMSGoodTrack.Histo1D( - {"P.gtr.ph.Tracking", "Cuts: Tracking;#phi_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.ph"); - auto hPphPID = dSHMSEl.Histo1D( - {"P.gtr.ph.PID", "Cuts: Tracking+PID;#phi_{SHMS};counts", 200, -0.1, 0.1}, "P.gtr.ph"); - auto hPphTiming = dSHMSElInTime.Histo1D( - {"P.gtr.ph.Timing", "Cuts: Tracking+PID+Timing;#phi_{SHMS};counts", 200, -0.1, 0.1}, - "P.gtr.ph"); - // P.gtr.y - auto hPyNoCuts = - d_coin.Histo1D({"P.gtr.y.NoCuts", "No Cuts;ytar;counts", 200, -10., 10.}, "P.gtr.y"); - auto hPyTracking = dSHMSGoodTrack.Histo1D( - {"P.gtr.y.Tracking", "Cuts: Tracking;ytar;counts", 200, -10., 10.}, "P.gtr.y"); - auto hPyPID = - dSHMSEl.Histo1D({"P.gtr.y.PID", "Cuts: Tracking+PID;ytar;counts", 200, -10., 10.}, "P.gtr.y"); - auto hPyTiming = dSHMSElInTime.Histo1D( - {"P.gtr.y.Timing", "Cuts: Tracking+PID+Timing;ytar;counts", 200, -10., 10.}, "P.gtr.y"); - // P.cal.etottracknorm - auto hPcalEPNoCuts = - d_coin.Histo1D({"P.cal.etottracknorm.NoCuts", "No Cuts;SHMS E/P;counts", 200, -.5, 1.5}, - "P.cal.etottracknorm"); - auto hPcalEPTracking = dSHMSGoodTrack.Histo1D( - {"P.cal.etottracknorm.Tracking", "Cuts: Tracking;SHMS E/P;counts", 200, -.5, 1.5}, - "P.cal.etottracknorm"); - auto hPcalEPPID = dSHMSEl.Histo1D( - {"P.cal.etottracknorm.PID", "Cuts: Tracking+PID;SHMS E/P;counts", 200, -.5, 1.5}, - "P.cal.etottracknorm"); - auto hPcalEPAll = dCOINElInTime.Histo1D( - {"P.cal.etottracknorm.All", "Cuts: Tracking+PID+Coincidence;SHMS E/P;counts", 200, -.5, 1.5}, - "P.cal.etottracknorm"); - // P.ngcer.npeSum - auto hPcerNpheNoCuts = d_coin.Histo1D( - {"P.ngcer.npeSum.NoCuts", "No Cuts;SHMS NGC #phe;counts", 200, -5, 76}, "P.ngcer.npeSum"); - auto hPcerNpheTracking = dSHMSGoodTrack.Histo1D( - {"P.ngcer.npeSum.Tracking", "Cuts: Tracking;SHMS NGC #phe;counts", 200, -5, 76}, - "P.ngcer.npeSum"); - auto hPcerNphePID = dSHMSEl.Histo1D( - {"P.ngcer.npeSum.PID", "Cuts: Tracking+PID;SHMS NGC #phe;counts", 200, -5, 76}, - "P.ngcer.npeSum"); - auto hPcerNpheAll = dCOINElInTime.Histo1D( - {"P.ngcer.npeSum.All", "Cuts: Tracking+PID+Coincidence;SHMS NGC #phe;counts", 200, -5, 76}, - "P.ngcer.npeSum"); - // P.hgcer.npeSum - auto hPhgcerNpheNoCuts = d_coin.Histo1D( - {"P.hgcer.npeSum.NoCuts", "No Cuts;SHMS HGC #phe;counts", 200, -5, 76}, "P.hgcer.npeSum"); - auto hPhgcerNpheTracking = dSHMSGoodTrack.Histo1D( - {"P.hgcer.npeSum.Tracking", "Cuts: Tracking;SHMS HGC #phe;counts", 200, -5, 76}, - "P.hgcer.npeSum"); - auto hPhgcerNphePID = dSHMSEl.Histo1D( - {"P.hgcer.npeSum.PID", "Cuts: Tracking+PID;SHMS HGC #phe;counts", 200, -5, 76}, - "P.hgcer.npeSum"); - auto hPhgcerNpheAll = dCOINElInTime.Histo1D( - {"P.hgcer.npeSum.All", "Cuts: Tracking+PID+Coincidence;SHMS HGC #phe;counts", 200, -5, 76}, - "P.hgcer.npeSum"); - // H.cal.etottracknorm - auto hHcalEPNoCuts = - d_coin.Histo1D({"H.cal.etottracknorm.NoCuts", "No Cuts;HMS E/P;counts", 200, -.5, 1.5}, - "H.cal.etottracknorm"); - auto hHcalEPTracking = dHMSGoodTrack.Histo1D( - {"H.cal.etottracknorm.Tracking", "Cuts: Tracking;HMS E/P;counts", 200, -.5, 1.5}, - "H.cal.etottracknorm"); - auto hHcalEPPID = dHMSEl.Histo1D( - {"H.cal.etottracknorm.PID", "Cuts: Tracking+PID;HMS E/P;counts", 200, -.5, 1.5}, - "H.cal.etottracknorm"); - auto hHcalEPAll = dCOINElInTime.Histo1D( - {"H.cal.etottracknorm.All", "Cuts: Tracking+PID+Coincidence;HMS E/P;counts", 200, -.5, 1.5}, - "H.cal.etottracknorm"); - // H.cer.npeSum - auto hHcerNpheNoCuts = d_coin.Histo1D( - {"H.cer.npeSum.NoCuts", "No Cuts;HMS Cer #phe;counts", 200, -1, 15}, "H.cer.npeSum"); - auto hHcerNpheTracking = dHMSGoodTrack.Histo1D( - {"H.cer.npeSum.Tracking", "Cuts: Tracking;HMS Cer #phe;counts", 200, -1, 15}, "H.cer.npeSum"); - auto hHcerNphePID = dHMSEl.Histo1D( - {"H.cer.npeSum.PID", "Cuts: Tracking+PID+Coincidence;HMS Cer #phe;counts", 200, -1, 15}, - "H.cer.npeSum"); - auto hHcerNpheAll = dCOINElInTime.Histo1D( - {"H.cer.npeSum.PID", "Cuts: Tracking+PID+Coincidence;HMS Cer #phe;counts", 200, -1, 15}, - "H.cer.npeSum"); - // H.gtr.dp - auto hHdpNoCuts = - d_coin.Histo1D({"H.gtr.dp.NoCuts", "No Cuts;#deltap [%];counts", 200, -30, 40}, "H.gtr.dp"); - auto hHdpTracking = dHMSGoodTrack.Histo1D( - {"H.gtr.dp.Tracking", "Cuts: Tracking;#deltap [%];counts", 200, -30, 40}, "H.gtr.dp"); - auto hHdpPID = dHMSEl.Histo1D( - {"H.gtr.dp.PID", "Cuts: Tracking+PID;#deltap [%];counts", 200, -30, 40}, "H.gtr.dp"); - auto hHdpTiming = dHMSElInTime.Histo1D( - {"H.gtr.dp.Timing", "Cuts: Tracking+PID+Timing;#deltap [%];counts", 200, -30, 40}, - "H.gtr.dp"); - // H.gtr.th - auto hHthNoCuts = d_coin.Histo1D( - {"H.gtr.th.NoCuts", "No Cuts;#theta_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.th"); - auto hHthTracking = dHMSGoodTrack.Histo1D( - {"H.gtr.th.Tracking", "Cuts: Tracking;#theta_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.th"); - auto hHthPID = dHMSEl.Histo1D( - {"H.gtr.th.PID", "Cuts: Tracking+PID;#theta_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.th"); - auto hHthTiming = dHMSElInTime.Histo1D( - {"H.gtr.th.Timing", "Cuts: Tracking+PID+Timing;#theta_{HMS};counts", 200, -0.1, 0.1}, - "H.gtr.th"); - // H.gtr.ph - auto hHphNoCuts = - d_coin.Histo1D({"H.gtr.ph.NoCuts", "No Cuts;#phi_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.ph"); - auto hHphTracking = dHMSGoodTrack.Histo1D( - {"H.gtr.ph.Tracking", "Cuts: Tracking;#phi_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.ph"); - auto hHphPID = dHMSEl.Histo1D( - {"H.gtr.ph.PID", "Cuts: Tracking+PID;#phi_{HMS};counts", 200, -0.1, 0.1}, "H.gtr.ph"); - auto hHphTiming = dHMSElInTime.Histo1D( - {"H.gtr.ph.Timing", "Cuts: Tracking+PID+Timing;#phi_{HMS};counts", 200, -0.1, 0.1}, - "H.gtr.ph"); - // H.gtr.y - auto hHyNoCuts = - d_coin.Histo1D({"H.gtr.y.NoCuts", "No Cuts;ytar;counts", 200, -10., 10.}, "H.gtr.y"); - auto hHyTracking = dHMSGoodTrack.Histo1D( - {"H.gtr.y.Tracking", "Cuts: Tracking;ytar;counts", 200, -10., 10.}, "H.gtr.y"); - auto hHyPID = - dHMSEl.Histo1D({"H.gtr.y.PID", "Cuts: Tracking+PID;ytar;counts", 200, -10., 10.}, "H.gtr.y"); - auto hHyTiming = dHMSElInTime.Histo1D( - {"H.gtr.y.Timing", "Cuts: Tracking+PID+Timing;ytar;counts", 200, -10., 10.}, "H.gtr.y"); - - // scalers - //auto total_charge = d_sh.Max("P.BCM4B.scalerChargeCut"); - //auto shms_el_real_scaler = d_sh.Max("P.pEL_REAL.scaler"); - //auto hms_el_real_scaler = d_sh.Max("P.hEL_REAL.scaler"); - //auto time_1MHz = d_sh.Max("P.1MHz.scalerTime"); - //auto time_1MHz_cut = d_sh.Max("P.1MHz.scalerTimeCut"); - - auto yield_all = d.Count(); - // 5 timing cut widths worth of random backgrounds - auto yield_coin = d_coin.Count(); - auto yield_HMSGoodTrack = dHMSGoodTrack.Count(); - auto yield_SHMSGoodTrack = dSHMSGoodTrack.Count(); - auto yield_COINGoodTrack = dCOINGoodTrack.Count(); - auto yield_HMSEl = dHMSEl.Count(); - auto yield_SHMSEl = dSHMSEl.Count(); - auto yield_COINEl = dCOINEl.Count(); - auto yield_HMSElInTime = dHMSElInTime.Count(); - auto yield_HMSElRandom = dHMSElRandom.Count(); - auto yield_SHMSElInTime = dSHMSElInTime.Count(); - auto yield_SHMSElRandom = dSHMSElRandom.Count(); - auto yield_COINElInTime = dCOINElInTime.Count(); - auto yield_COINElRandom = dCOINElRandom.Count(); - auto yield_coin_raw = dCOINElInTime.Count(); - auto yield_coin_random = dCOINElRandom.Count(); - - - // ------------------------------------- - // End lazy eval - // ------------------------------------- - auto n_coin_good = *yield_coin_raw - *yield_coin_random / 5.; - auto n_HMSElGood = *yield_HMSElInTime - *yield_HMSElRandom / 5; - auto n_SHMSElGood = *yield_SHMSElInTime - *yield_SHMSElRandom / 5; - auto n_COINElGood = *yield_COINElInTime - *yield_COINElRandom / 5; - - hPdpNoCuts->DrawCopy(); - //std::cout << " coin COUNTS : " << *(d_coin.Count()) << "\n"; - //std::cout << " yield_HMSEl : " << *(yield_HMSEl) << "\n"; - std::cout << " yield_COINEl : " << *(yield_COINEl) << "\n"; - //std::cout << " ALL COUNTS : " << *yield_all << "\n"; - //std::cout << " GOOD COUNTS : " << n_COINElGood << "\n"; - // - if( 4 != (*(yield_COINEl)) ){ - std::exit(-1); - } - std::exit(0); -} diff --git a/tests/elastic_test.sh b/tests/elastic_test.sh deleted file mode 100644 index 5d137e5..0000000 --- a/tests/elastic_test.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -#echo "This is the elastic testing..." -#echo " " -#echo "There are currently 0 tests to run!" -#which hcana -# -#ls -lrth -#ls -lrth build -# -#git clone git@eicweb.phy.anl.gov:jlab/hallc/exp/CSV/hallc_replay_csv.git -#git clone git@eicweb.phy.anl.gov:jlab/hallc/exp/CSV/online_csv.git -#cd online_csv -#ln -s ../hallc_reaply_csv/PARAM -## and the reset -# -#mkdir raw -#pushd raw -# wget coin.dat -#popd - - -singularity help build/Singularity.hcana.simg - - -singularity exec build/Singularity.hcana.simg hcana tests/elastic_test.cxx diff --git a/tests/elastic_test2.sh b/tests/elastic_test2.sh deleted file mode 100644 index 36da205..0000000 --- a/tests/elastic_test2.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -echo "This is the elastic testing..." -echo " " -echo "There are currently 0 tests to run!" -which hcana - -ls -lrth -ls -lrth build - -git clone git@eicweb.phy.anl.gov:jlab/hallc/exp/CSV/hallc_replay_csv.git -git clone git@eicweb.phy.anl.gov:jlab/hallc/exp/CSV/online_csv.git - -cd online_csv -ln -s ../hallc_reaply_csv/PARAM -# and the reset - -mkdir raw -pushd raw - wget coin.dat -popd - - -singularity help build/Singularity.hcana.simg - -singularity exec build/Singularity.hcana.simg which hcana - -singularity exec build/Singularity.hcana.simg hcana tests/my_root_script.cxx - -echo " WOOOO" diff --git a/tests/my_root_script.cxx b/tests/my_root_script.cxx deleted file mode 100644 index 0d36862..0000000 --- a/tests/my_root_script.cxx +++ /dev/null @@ -1,20 +0,0 @@ -void my_root_script() { - - - - std::cout << "Hello from my_root_script.cxx!\n"; - - std::cout << "This should be run with singularity\n"; - double pi = 3.14; - - auto pi_equals_3 = (3 == pi); - std::cout << " pi_equals_3 = " << pi_equals_3 << "\n"; - - if( pi_equals_3) { - std::cout << "what the hell?\n"; - std::exit( 0 ); - } - /* else */ - - std::exit( -1 ); -} diff --git a/tests/replay_elastic_data.sh b/tests/replay_elastic_data.sh deleted file mode 100644 index 48b147f..0000000 --- a/tests/replay_elastic_data.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -echo "This is the elastic testing..." -echo " " -echo "There are currently 0 tests to run!" -which hcana - -ls -lrth -ls -lrth build -mkdir -p ROOTfiles -git clone https://eicweb.phy.anl.gov/whit/ci_test_data.git -git clone https://eicweb.phy.anl.gov/jlab/hallc/exp/CSV/hallc_replay_csv.git -git clone https://eicweb.phy.anl.gov/jlab/hallc/exp/CSV/online_csv.git - -cd online_csv -mkdir -p logs -ln -s ../hallc_replay_csv/PARAM -ln -s ../hallc_replay_csv/DBASE -ln -s ../hallc_replay_csv/CALIBRATION -ln -s ../hallc_replay_csv/DEF-files -ln -s ../hallc_replay_csv/MAPS -ln -s ../hallc_replay_csv/SCRIPTS -ln -s ../hallc_replay_csv/DATFILES -ln -s ../ci_test_data/raw -ln -s ../ROOTfiles -# and the reset - -ls -lrth -ls -lrth raw/ -ls -lrth ROOTfiles/ -pwd -# run replay script -df -h - -singularity exec ../build/Singularity.hcana.simg hcana -b -q "../tests/elastic_coin_replay.cxx+(6012,50000)" - -echo "hcana calls... the coin replay script and outputs blah.root" - -- GitLab