diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9be8dfc..134e2e6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,152 +1,152 @@ stages: - build - - test +# - test variables: LCG_VERSION: "101" BUILD_TYPE: "Release" BUILD_ROOFIT_TASK: "OFF" BUILD_DOCS: "OFF" .production_image: variables: LCG_OS: x86_64-centos7 image: gitlab-registry.cern.ch/ci-tools/ci-worker:cc7 tags: - cvmfs .lcg_setup: before_script: - set +e && source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_$LCG_VERSION $LCG_OS-$LCG_COMPILER; set -e .build_template: stage: build extends: - .lcg_setup script: - mkdir install - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE:STRING=$BUILD_TYPE -DCMAKE_INSTALL_PREFIX:PATH=$CI_PROJECT_DIR/install -DLAURA_BUILD_EXAMPLES:BOOL=ON -DLAURA_BUILD_TEST:BOOL=ON -DLAURA_BUILD_DOCS:BOOL=$BUILD_DOCS -DLAURA_BUILD_ROOFIT_TASK:BOOL=$BUILD_ROOFIT_TASK $CI_PROJECT_DIR - cmake --build . - cmake --build . --target install build_clang12_opt: variables: LCG_COMPILER: "clang12-opt" extends: - .production_image - .build_template build_gcc11_opt: variables: LCG_COMPILER: "gcc11-opt" extends: - .production_image - .build_template build_gcc11_dbg: variables: LCG_COMPILER: "gcc11-dbg" BUILD_TYPE: "Debug" BUILD_ROOFIT_TASK: "ON" BUILD_DOCS: "ON" extends: - .production_image - .build_template artifacts: paths: - install expire_in: 1 day -.test_template: - stage: test - variables: - LCG_COMPILER: "gcc11-dbg" - extends: - - .production_image - - .lcg_setup - dependencies: - - build_gcc11_dbg - artifacts: - paths: - - runtests - expire_in: 1 day - script: - - export PATH=$CI_PROJECT_DIR/install/bin:$PATH - - mkdir runtests && cd runtests - - curl -o ft-eta-hist.root https://laura.hepforge.org/CI-files/ft-eta-hist-realistic.root - - curl -O https://laura.hepforge.org/CI-files/dta-hist.root - - curl -O https://laura.hepforge.org/CI-files/dte-hist.root - - $CI_PROJECT_DIR/examples/runTimeDepTest.sh 0 $DTA_MODEL $DTR $DTR_PEREVENT - -test_flatDTA_noDTR: - variables: - DTA_MODEL: "flat" - DTR: "0" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_flatDTA_avgDTR: - variables: - DTA_MODEL: "flat" - DTR: "1" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_flatDTA_evtDTR: - variables: - DTA_MODEL: "flat" - DTR: "1" - DTR_PEREVENT: "1" - extends: - - .test_template - -test_histDTA_noDTR: - variables: - DTA_MODEL: "hist" - DTR: "0" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_histDTA_avgDTR: - variables: - DTA_MODEL: "hist" - DTR: "1" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_histDTA_evtDTR: - variables: - DTA_MODEL: "hist" - DTR: "1" - DTR_PEREVENT: "1" - extends: - - .test_template - -test_splineDTA_noDTR: - variables: - DTA_MODEL: "spline" - DTR: "0" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_splineDTA_avgDTR: - variables: - DTA_MODEL: "spline" - DTR: "1" - DTR_PEREVENT: "0" - extends: - - .test_template - -test_splineDTA_evtDTR: - variables: - DTA_MODEL: "spline" - DTR: "1" - DTR_PEREVENT: "1" - extends: - - .test_template +#.test_template: +# stage: test +# variables: +# LCG_COMPILER: "gcc11-dbg" +# extends: +# - .production_image +# - .lcg_setup +# dependencies: +# - build_gcc11_dbg +# artifacts: +# paths: +# - runtests +# expire_in: 1 day +# script: +# - export PATH=$CI_PROJECT_DIR/install/bin:$PATH +# - mkdir runtests && cd runtests +# - curl -o ft-eta-hist.root https://laura.hepforge.org/CI-files/ft-eta-hist-realistic.root +# - curl -O https://laura.hepforge.org/CI-files/dta-hist.root +# - curl -O https://laura.hepforge.org/CI-files/dte-hist.root +# - $CI_PROJECT_DIR/examples/runTimeDepTest.sh 0 $DTA_MODEL $DTR $DTR_PEREVENT +# +#test_flatDTA_noDTR: +# variables: +# DTA_MODEL: "flat" +# DTR: "0" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_flatDTA_avgDTR: +# variables: +# DTA_MODEL: "flat" +# DTR: "1" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_flatDTA_evtDTR: +# variables: +# DTA_MODEL: "flat" +# DTR: "1" +# DTR_PEREVENT: "1" +# extends: +# - .test_template +# +#test_histDTA_noDTR: +# variables: +# DTA_MODEL: "hist" +# DTR: "0" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_histDTA_avgDTR: +# variables: +# DTA_MODEL: "hist" +# DTR: "1" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_histDTA_evtDTR: +# variables: +# DTA_MODEL: "hist" +# DTR: "1" +# DTR_PEREVENT: "1" +# extends: +# - .test_template +# +#test_splineDTA_noDTR: +# variables: +# DTA_MODEL: "spline" +# DTR: "0" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_splineDTA_avgDTR: +# variables: +# DTA_MODEL: "spline" +# DTR: "1" +# DTR_PEREVENT: "0" +# extends: +# - .test_template +# +#test_splineDTA_evtDTR: +# variables: +# DTA_MODEL: "spline" +# DTR: "1" +# DTR_PEREVENT: "1" +# extends: +# - .test_template diff --git a/examples/runTimeDepTest.sh b/examples/runTimeDepTest.sh index 28a1b6c..b1a5bcd 100755 --- a/examples/runTimeDepTest.sh +++ b/examples/runTimeDepTest.sh @@ -1,228 +1,236 @@ #!/bin/bash #SBATCH --partition=epp #SBATCH --ntasks=1 #SBATCH --cpus-per-task=6 #SBATCH --mem-per-cpu=3997 #SBATCH --time=02:00:00 #Run with sbatch runTimeDepTest.sh # Copyright 2020 University of Warwick # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Laura++ package authors: # John Back # Paul Harrison # Thomas Latham processes=() # trap ^C and call ctrl_c() trap ctrl_c INT function ctrl_c() { echo " ** Caught ^C event!" for process in ${processes[@]} do if ps -u $USER | grep -q "$process" then echo "Killing : $process" kill $process fi done exit 1 } +# Check that we have a kerberos token, since nothing will work without one! +klist -s > /dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "You don't have a valid Kerberos ticket!" + exit 1 +fi + iFit=0 dta_model="spline" dtr=1 dtr_perevent=0 fixTau=1 fixDeltaM=1 seed=140279 # $(pwd | xargs basename) dataFit=1 runNo=12 # Modify these if you want to run more experiments nExpt=1 firstExpt=0 logName_genQFS_run1=Logs/gen-QFS-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_genQFS_run2=Logs/gen-QFS-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_genCPE_KK_run1=Logs/gen-CPEvenKK-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_genCPE_KK_run2=Logs/gen-CPEvenKK-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_genCPE_pipi_run1=Logs/gen-CPEvenpipi-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_genCPE_pipi_run2=Logs/gen-CPEvenpipi-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent.log logName_coord=Logs/coordinator-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskQFS_run1=Logs/task-QFS-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskQFS_run2=Logs/task-QFS-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskCPE_KK_run1=Logs/task-CPEvenKK-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskCPE_KK_run2=Logs/task-CPEvenKK-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskCPE_pipi_run1=Logs/task-CPEvenpipi-run1-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log logName_taskCPE_pipi_run2=Logs/task-CPEvenpipi-run2-dtamodel_$dta_model-dtr_$dtr-dtrperevent_$dtr_perevent-$iFit.log mkdir -p Logs # make sure we have the most up-to-date json files eosArea="root://eoslhcb.cern.ch//eos/lhcb/wg/b2oc/B2D0pipi/timedep_fit_histos" rm -f run1DTAsplines.json run2DTAsplines.json xrdcp $eosArea/run1DTAsplines.json . if [ $? -ne 0 ] then echo "Problem downloading json files from EOS, exiting" exit 1 fi xrdcp $eosArea/run2DTAsplines.json . if [ $? -ne 0 ] then echo "Problem downloading json files from EOS, exiting" exit 1 fi if [ $iFit == 0 -a $dataFit == 0 ] then #run generation of the modes in parallel (put the tasks in the bg) echo "Generating samples..." if [ $runNo -eq 1 -o $runNo -eq 12 ] then Test_Dpipi gen --dtype QFS --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_Kpi > $logName_genQFS_run1 2>&1 & task=$! processes+=( $task ) Test_Dpipi gen --dtype CPEven --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_KK > $logName_genCPE_KK_run1 2>&1 & task=$! processes+=( $task ) Test_Dpipi gen --dtype CPEven --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_pipi > $logName_genCPE_pipi_run1 2>&1 & task=$! processes+=( $task ) fi if [ $runNo -eq 2 -o $runNo -eq 12 ] then Test_Dpipi gen --dtype QFS --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_Kpi > $logName_genQFS_run2 2>&1 & task=$! processes+=( $task ) Test_Dpipi gen --dtype CPEven --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_KK > $logName_genCPE_KK_run2 2>&1 & task=$! processes+=( $task ) Test_Dpipi gen --dtype CPEven --sigOnly $sigOnly --fixTau $fixTau --seed $seed --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_pipi > $logName_genCPE_pipi_run2 2>&1 & task=$! processes+=( $task ) fi wait #wait for the generation to complete fi echo "Running fit $iFit" if [ $runNo -eq 12 ] then nTasks=6 else nTasks=3 fi SimFitCoordinator $iFit $nExpt $firstExpt $nTasks > $logName_coord 2>&1 & task=$! echo "SimFitCoordinator process : $task" processes+=( $task ) echo "Initialised coordinator process for fit $iFit" sleep 5 port="" while [ "x$port" == "x" ] do sleep 2 port=`tail $logName_coord | grep "Waiting for connection" | awk '{print $NF}'` done echo "Coordinator is listening on port $port" echo "Initialising tasks..." if [ $runNo -eq 1 -o $runNo -eq 12 ] then Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype QFS --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_Kpi --fixDm $fixDeltaM > $logName_taskQFS_run1 2>&1 & task=$! echo "QFS Run 1 process : $task" processes+=( $task ) sleep 5 Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype CPEven --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_KK --fixDm $fixDeltaM > $logName_taskCPE_KK_run1 2>&1 & task=$! echo "CP KK Run 1 process : $task" processes+=( $task ) sleep 5 Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype CPEven --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 1 --dir B2Dhh_pipi --fixDm $fixDeltaM > $logName_taskCPE_pipi_run1 2>&1 & task=$! echo "CP pipi Run 1 process : $task" processes+=( $task ) fi if [ $runNo -eq 2 -o $runNo -eq 12 ] then Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype QFS --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_Kpi --fixDm $fixDeltaM > $logName_taskQFS_run2 2>&1 & task=$! echo "QFS Run 2 process : $task" processes+=( $task ) sleep 5 Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype CPEven --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_KK --fixDm $fixDeltaM > $logName_taskCPE_KK_run2 2>&1 & task=$! echo "CP KK Run 2 process : $task" processes+=( $task ) sleep 5 Test_Dpipi simfit --blindFit $dataFit --dataFit $dataFit --dtype CPEven --seed $seed --port $port --iFit $iFit --fixTau $fixTau --dta-model $dta_model --dtr $dtr --dtr-perevent $dtr_perevent --firstExpt $firstExpt --nExpt $nExpt --firstExptGen $firstExpt --nExptGen $nExpt --run 2 --dir B2Dhh_pipi --fixDm $fixDeltaM > $logName_taskCPE_pipi_run2 2>&1 & task=$! echo "CP pipi Run 2 process : $task" processes+=( $task ) fi wait #wait for the fits and coordinator to terminate echo "Fit completed" echo "Warnings/Errors from coordinator:" grep -e ERROR -e WARNING -e Error -e Warning $logName_coord echo "Warnings/Errors from CPeven KK tasks:" if [ $runNo -eq 1 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskCPE_KK_run1 fi if [ $runNo -eq 2 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskCPE_KK_run2 fi echo "Warnings/Errors from CPeven pipi tasks:" if [ $runNo -eq 1 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskCPE_pipi_run1 fi if [ $runNo -eq 2 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskCPE_pipi_run2 fi echo "Warnings/Errors from QFS tasks:" if [ $runNo -eq 1 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskQFS_run1 fi if [ $runNo -eq 2 -o $runNo -eq 12 ] then grep -e ERROR -e WARNING -e Error -e Warning $logName_taskQFS_run2 fi