diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6965b0101e0a62b6adf94c82ad7d7609f45ace6..621842481637366c5ef834afa8914da43d13731a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,6 +184,40 @@ CbmRoot_Merge_macosx: - cat Dart.cfg - $PWD/Dart.sh MergeRequest Dart.cfg +CbmRoot_Merge_realData: + stage: build + tags: + - CbmRoot_realData + only: + refs: + - merge_requests + variables: + - $CI_MERGE_REQUEST_PROJECT_PATH == "computing/cbmroot" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" + script: + - echo $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH + - echo $CI_MERGE_REQUEST_PROJECT_PATH + - if [ "$CI_MERGE_REQUEST_PROJECT_PATH" != "computing/cbmroot" ]; then + - echo "Should not come here" + - exit 1 + - fi + - echo $CI_MERGE_REQUEST_TARGET_BRANCH_NAME + - echo $CI_MERGE_REQUEST_ID + - echo $CI_MERGE_REQUEST_IID + - echo "export LINUX_FLAVOUR=Debian10" >> Dart.cfg + - echo "export FAIRSOFT_VERSION=jun19p2" >> Dart.cfg + - echo "export FAIRROOT_VERSION=v18.2.1" >> Dart.cfg + - echo "export SIMPATH=/opt/cbmsoft/fairsoft_\${FAIRSOFT_VERSION}_root6/installation" >> Dart.cfg + - echo "export FAIRROOTPATH=/opt/cbmsoft/fairroot_\${FAIRROOT_VERSION}-fairsoft_\${FAIRSOFT_VERSION}_root6" >> Dart.cfg + - echo "export RAW_DATA_PATH=/opt/cbmsoft/beamtime-test-data/mcbm2020/" >> Dart.cfg + - echo "export BUILDDIR=$PWD/build" >> Dart.cfg + - echo "export SOURCEDIR=$PWD" >> Dart.cfg + - echo "export NCPU=16" >> Dart.cfg + - echo "export PATH=\$SIMPATH/bin:$PATH" >> Dart.cfg + - ls + - pwd + - cat Dart.cfg + - $PWD/Dart.sh MergeRequest Dart.cfg + pages: stage: documentation image: alpine diff --git a/macro/beamtime/CMakeLists.txt b/macro/beamtime/CMakeLists.txt index 1b1766c8cf9b4db8654ca40bf96dbcc92e3fb793..d31987f2cbe904cac70c84d9263b977f776890ea 100644 --- a/macro/beamtime/CMakeLists.txt +++ b/macro/beamtime/CMakeLists.txt @@ -1,3 +1,6 @@ + +##### Old beamtime tests +##### TODO: check if still running and cleanup if needed # Put the .rootrc file into the directory from which root is executed. # Otherwise the rootalias file is not loaded File(COPY ${CBMROOT_SOURCE_DIR}/macro/include/.rootrc DESTINATION ${CBMROOT_BINARY_DIR}/macro/beamtime/tests) @@ -20,264 +23,14 @@ If(EXISTS ${CBMROOT_SOURCE_DIR}/input/hodoTop_source_1000ts_20160422.tsa) SET_TESTS_PROPERTIES(StsLabSetup PROPERTIES TIMEOUT "60") SET_TESTS_PROPERTIES(StsLabSetup PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") EndIf() +##################### ##### mCBM 2019 tests - -## Generate scripts -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/convert_tsa_mcbm.C ) # CbmMcbm2018RawConverterXXX -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/unpack_tsa_mcbm.C ) # Unpackers -# CbmCheckDigisNbCorr.h => missing script? -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_timing.C ) # CbmCheckTiming.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_much_digis.C ) # CbmMcbm2019CheckDigisMuch.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_sts_digis.C ) # CbmMcbm2019CheckDigisSts.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_pulser.C ) # CbmMcbm2019CheckPulser.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/build_events.C ) # CbmMcbm2018EventBuilder.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_events.C ) # CbmCheckEvents.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorT0.C ) # CbmMcbm2018MonitorTaskT0 + CbmMcbm2018MonitorAlgoT -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorSts.C ) # CbmMcbm2018MonitorSts.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorMuch.C ) # CbmMcbm2018MonitorMuchLite.h -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorTof.C ) # CbmMcbm2018MonitorTaskTof + CbmMcbm2018MonitorAlgoTof -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorRich.C ) # CbmMcbm2018UnpackerTaskRich.h in monitor mode -GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorPsd.C ) # CbmMcbm2018MonitorTaskPsd + CbmMcbm2018MonitorAlgoPsd - -## Define tests + dependencies -Set(testname mcbm_convert_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/convert_tsa_mcbm.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "60") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - -Set(testname mcbm_unpack_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/unpack_tsa_mcbm.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" 399 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "60") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -Set(fixture_unpacked fixture_done_${testname}) -set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_unpacked}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_convert_2019) - -Set(testname mcbm_check_timing_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_timing.sh \"data/unp_mcbm_399.root\" 399 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of T0 digis: 18") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Sts digis: 1061912") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Much digis: 319732") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Tof digis: 246711") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Rich digis: 5359") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Psd digis: 0") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) - -Set(testname mcbm_check_stsdigis_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_sts_digis.sh 399 1 200.0 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_timing_2019) - -Set(testname mcbm_check_muchdigis_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_much_digis.sh 399 1 200.0 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_stsdigis_2019) - -Set(testname mcbm_check_pulser_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_pulser.sh 399 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_muchdigis_2019) - -Set(testname mcbm_build_event_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/build_events.sh \"data/unp_mcbm_399.root\" 399 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_pulser_2019) -Set(fixture_built_evt fixture_done_${testname}) -set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt}) - -Set(testname mcbm_check_event_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_events.sh 99999 399 ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_built_evt}) -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_build_event_2019) - -Set(testname mcbm_monit0_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorT0.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_event_2019) - -Set(testname mcbm_monists_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorSts.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monit0_2019) - -Set(testname mcbm_monimuch_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorMuch.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monists_2019) - -Set(testname mcbm_monitof_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorTof.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monimuch_2019) - -Set(testname mcbm_monirich_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorRich.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitof_2019) - -Set(testname mcbm_monipsd_2019) -Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorPsd.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) -Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") -Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") -set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monirich_2019) - +add_subdirectory(mcbm2019) ##################### ##### mCBM 2020 tests: only if test TSA files for "typical runs" present -If(DEFINED ENV{RAW_DATA_PATH} ) - SET( RAW_DATA_PATH $ENV{RAW_DATA_PATH} ) - - Message( STATUS "Raw data path provided => Performing mCBM 2020 tests using tsa files in ${RAW_DATA_PATH}" ) - - ## Generate scripts - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C ) # Unpackers - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_timing.C ) # CbmCheckTiming.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_pulser.C ) # CbmMcbm2019CheckPulser.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/build_events.C ) # CbmMcbm2018EventBuilder.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_events.C ) # CbmCheckEvents.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/build_event_win.C ) # CbmMcbm2019TimeWinEventBuilderTask.h + CbmMcbm2019TimeWinEventBuilderAlgo.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/mcbm_reco.C ) # Cluster Finding + Hit reconstruction, time based (no events) - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorT0.C ) # CbmMcbm2018MonitorTaskT0 + CbmMcbm2018MonitorAlgoT0 - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorSts.C ) # CbmMcbm2018MonitorSts.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorMuch.C ) # CbmMcbm2018MonitorMuchLite.h - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorTrd.C ) # CbmMcbm2018UnpackerTaskTrd.h in monitor mode - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorTof.C ) # CbmMcbm2018MonitorTaskTof + CbmMcbm2018MonitorAlgoTof - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorRich.C ) # CbmMcbm2018UnpackerTaskRich.h in monitor mode - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorPsd.C ) # CbmMcbm2018MonitorTaskPsd + CbmMcbm2018MonitorAlgoPsd - - ## Run only if raw data files present - ForEach(RUN 759 760 761 762 811 812 819 824 831 856 ) - Message( STATUS "Checking if raw data file exists: ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa" ) - If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa) - Message( STATUS "Raw data file found, tests will be performed for mCBM run ${RUN}" ) - - ## Define tests + dependencies - ### Raw data analysis tests - Set(testname mcbm_unpack_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/unpack_tsa_mcbm.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - Set(fixture_unpacked_${RUN} fixture_done_${testname}) - set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_unpacked_${RUN}}) - - Set(testname mcbm_check_timing_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_timing.sh \"data/unp_mcbm_${RUN}.root\" ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of T0 digis: 18") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Sts digis: 1061912") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Much digis: 319732") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Tof digis: 246711") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Rich digis: 5359") - # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Psd digis: 0") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) - #### Make this test run alone to try to avoid memory errors on test machines - set_tests_properties(${testname} PROPERTIES RUN_SERIAL true ) - - Set(testname mcbm_check_pulser_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_pulser.sh ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_timing_2020_${RUN}) - - Set(testname mcbm_build_event_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/build_events.sh \"data/unp_mcbm_${RUN}.root\" ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_pulser_2020_${RUN}) - Set(fixture_built_evt_${RUN} fixture_done_${testname}) - set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt_${RUN}}) - - Set(testname mcbm_check_event_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_events.sh 99999 ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_built_evt_${RUN}}) - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_build_event_2020_${RUN}) - - Set(testname mcbm_build_event_win_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/build_event_win.sh ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_event_2020_${RUN}) - Set(fixture_built_evt_win_${RUN} fixture_done_${testname}) - set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt_win_${RUN}}) - - Set(testname mcbm_reco_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/mcbm_reco.sh ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) - set_tests_properties(${testname} PROPERTIES DEPENDS fixture_built_evt_win_${RUN}) - Set(fixture_mcbm_reco_${RUN} fixture_done_${testname}) - set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_mcbm_reco_${RUN}}) - - ### Monitors tests - Set(testname mcbm_monit0_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorT0.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS fixture_mcbm_reco_${RUN}) - - Set(testname mcbm_monists_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorSts.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" \"\" ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monit0_2020_${RUN}) - - Set(testname mcbm_monimuch_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorMuch.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" \"\" ${RUN} ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monists_2020_${RUN}) - - Set(testname mcbm_monitrd_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorTrd.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monimuch_2020_${RUN}) - - Set(testname mcbm_monitof_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorTof.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitrd_2020_${RUN}) - - Set(testname mcbm_monirich_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorRich.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitof_2020_${RUN}) - - Set(testname mcbm_monipsd_2020_${RUN}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorPsd.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) - Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") - Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") - set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monirich_2020_${RUN}) - EndIf() # If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa)) - EndForEach() # ForEach(RUN 759 760 761 762 811 812 819 824 856 ) -EndIf() # If(DEFINED ENV{RAW_DATA_PATH} ) +add_subdirectory(mcbm2020) ##################### ### Copy beamtime folder to allow execution of tasks on batch farm after installation diff --git a/macro/beamtime/mcbm2019/CMakeLists.txt b/macro/beamtime/mcbm2019/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..493b893f29a76ecb25d780ae6f07a231f04b2b94 --- /dev/null +++ b/macro/beamtime/mcbm2019/CMakeLists.txt @@ -0,0 +1,131 @@ + +### Cleanup of old root files +add_test(run_cleanup_mcbm2019 + ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/scripts/cleanmacrodir.cmake) +set_tests_properties(run_cleanup_mcbm2019 PROPERTIES + TIMEOUT 30 + FIXTURES_SETUP cleanup_mcbm2019 +) +##################### + +##### mCBM 2019 tests + +## Generate scripts +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/convert_tsa_mcbm.C ) # CbmMcbm2018RawConverterXXX +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/unpack_tsa_mcbm.C ) # Unpackers +# CbmCheckDigisNbCorr.h => missing script? +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_timing.C ) # CbmCheckTiming.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_much_digis.C ) # CbmMcbm2019CheckDigisMuch.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_sts_digis.C ) # CbmMcbm2019CheckDigisSts.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_pulser.C ) # CbmMcbm2019CheckPulser.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/build_events.C ) # CbmMcbm2018EventBuilder.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/check_events.C ) # CbmCheckEvents.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorT0.C ) # CbmMcbm2018MonitorTaskT0 + CbmMcbm2018MonitorAlgoT +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorSts.C ) # CbmMcbm2018MonitorSts.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorMuch.C ) # CbmMcbm2018MonitorMuchLite.h +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorTof.C ) # CbmMcbm2018MonitorTaskTof + CbmMcbm2018MonitorAlgoTof +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorRich.C ) # CbmMcbm2018UnpackerTaskRich.h in monitor mode +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2019/MonitorPsd.C ) # CbmMcbm2018MonitorTaskPsd + CbmMcbm2018MonitorAlgoPsd + +## Define tests + dependencies +Set(testname mcbm_convert_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/convert_tsa_mcbm.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "60") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +Set_tests_properties(${testname} PROPERTIES DEPENDS run_cleanup_mcbm2019) +Set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED run_cleanup_mcbm2019) + +Set(testname mcbm_unpack_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/unpack_tsa_mcbm.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" 399 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "60") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +Set(fixture_unpacked fixture_done_${testname}) +set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_unpacked}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_convert_2019) + +Set(testname mcbm_check_timing_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_timing.sh \"data/unp_mcbm_399.root\" 399 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of T0 digis: 18") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Sts digis: 1061912") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Much digis: 319732") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Tof digis: 246711") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Rich digis: 5359") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Psd digis: 0") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) + +Set(testname mcbm_check_stsdigis_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_sts_digis.sh 399 1 200.0 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_timing_2019) + +Set(testname mcbm_check_muchdigis_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_much_digis.sh 399 1 200.0 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_stsdigis_2019) + +Set(testname mcbm_check_pulser_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_pulser.sh 399 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_muchdigis_2019) + +Set(testname mcbm_build_event_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/build_events.sh \"data/unp_mcbm_399.root\" 399 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_pulser_2019) +Set(fixture_built_evt fixture_done_${testname}) +set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt}) + +Set(testname mcbm_check_event_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/check_events.sh 99999 399 ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_built_evt}) +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_build_event_2019) + +Set(testname mcbm_monit0_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorT0.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_event_2019) + +Set(testname mcbm_monists_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorSts.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monit0_2019) + +Set(testname mcbm_monimuch_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorMuch.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monists_2019) + +Set(testname mcbm_monitof_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorTof.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monimuch_2019) + +Set(testname mcbm_monirich_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorRich.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitof_2019) + +Set(testname mcbm_monipsd_2019) +Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2019/MonitorPsd.sh \"${CBMROOT_SOURCE_DIR}/input/mcbm_run399_first20Ts.tsa\" ) +Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") +Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") +set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monirich_2019) + +##################### diff --git a/macro/beamtime/mcbm2020/CMakeLists.txt b/macro/beamtime/mcbm2020/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..122cf6cc37033aec6b409b6f2a314696c26ee175 --- /dev/null +++ b/macro/beamtime/mcbm2020/CMakeLists.txt @@ -0,0 +1,170 @@ + +### Cleanup of old root files +add_test(run_cleanup_mcbm2020 + ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/scripts/cleanmacrodir.cmake) +set_tests_properties(run_cleanup_mcbm2020 PROPERTIES + TIMEOUT 30 + FIXTURES_SETUP cleanup_mcbm2020 +) +##################### + +##### mCBM 2020 tests: only if test TSA files for "typical runs" present +If(DEFINED ENV{RAW_DATA_PATH} ) + SET( RAW_DATA_PATH $ENV{RAW_DATA_PATH} ) + + Message( STATUS "Raw data path provided => Performing mCBM 2020 tests using tsa files in ${RAW_DATA_PATH}" ) + + ## Generate scripts + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C ) # Unpackers + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_timing.C ) # CbmCheckTiming.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_pulser.C ) # CbmMcbm2019CheckPulser.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/build_events.C ) # CbmMcbm2018EventBuilder.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/check_events.C ) # CbmCheckEvents.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/build_event_win.C ) # CbmMcbm2019TimeWinEventBuilderTask.h + CbmMcbm2019TimeWinEventBuilderAlgo.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/mcbm_reco.C ) # Cluster Finding + Hit reconstruction, time based (no events) + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/mcbm_build_and_reco.C ) # TW event building + Cluster Finding + Hit reconstruction, Event based + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/mcbm_event_reco.C ) # Digi dt event building + Cluster Finding + Hit reconstruction, Event based + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorT0.C ) # CbmMcbm2018MonitorTaskT0 + CbmMcbm2018MonitorAlgoT0 + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorSts.C ) # CbmMcbm2018MonitorSts.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorMuch.C ) # CbmMcbm2018MonitorMuchLite.h + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorTrd.C ) # CbmMcbm2018UnpackerTaskTrd.h in monitor mode + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorTof.C ) # CbmMcbm2018MonitorTaskTof + CbmMcbm2018MonitorAlgoTof + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorRich.C ) # CbmMcbm2018UnpackerTaskRich.h in monitor mode + GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2020/MonitorPsd.C ) # CbmMcbm2018MonitorTaskPsd + CbmMcbm2018MonitorAlgoPsd + + ## Run only if raw data files present + ForEach(RUN 759 760 761 762 811 812 819 824 831 856 ) + Message( STATUS "Checking if raw data file exists: ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa" ) + If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa) + Message( STATUS "Raw data file found, tests will be performed for mCBM run ${RUN}" ) + + ## Define tests + dependencies + ### Raw data analysis tests + Set(testname mcbm_unpack_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/unpack_tsa_mcbm.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS run_cleanup_mcbm2020) + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED run_cleanup_mcbm2020) + Set(fixture_unpacked_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_unpacked_${RUN}}) + + Set(testname mcbm_check_timing_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_timing.sh \"data/unp_mcbm_${RUN}.root\" ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of T0 digis: 18") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Sts digis: 1061912") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Much digis: 319732") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Tof digis: 246711") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Rich digis: 5359") + # Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Total number of Psd digis: 0") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + #### Make this test run alone to try to avoid memory errors on test machines + set_tests_properties(${testname} PROPERTIES RUN_SERIAL true ) + + Set(testname mcbm_check_pulser_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_pulser.sh ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_timing_2020_${RUN}) + + Set(testname mcbm_build_event_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/build_events.sh \"data/unp_mcbm_${RUN}.root\" ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_pulser_2020_${RUN}) + Set(fixture_built_evt_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt_${RUN}}) + + Set(testname mcbm_check_event_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/check_events.sh 99999 ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_built_evt_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_build_event_2020_${RUN}) + + Set(testname mcbm_build_event_win_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/build_event_win.sh ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_check_event_2020_${RUN}) + Set(fixture_built_evt_win_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_built_evt_win_${RUN}}) + + Set(testname mcbm_reco_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/mcbm_reco.sh ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS fixture_built_evt_win_${RUN}) + Set(fixture_mcbm_reco_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_mcbm_reco_${RUN}}) + + Set(testname mcbm_build_reco_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/mcbm_build_and_reco.sh ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS fixture_mcbm_reco_${RUN}) + Set(fixture_mcbm_build_reco_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_mcbm_build_reco_${RUN}}) + + Set(testname mcbm_event_reco_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/mcbm_event_reco.sh ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED ${fixture_unpacked_${RUN}}) + set_tests_properties(${testname} PROPERTIES DEPENDS fixture_mcbm_build_reco_${RUN}) + Set(fixture_mcbm_event_reco_${RUN} fixture_done_${testname}) + set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP ${fixture_mcbm_event_reco_${RUN}}) + + ### Monitors tests => Should run 1 by 1 after unpacker test to avoid concurrent access to tsa file + Set(testname mcbm_monit0_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorT0.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_unpack_2020_${RUN}) + + Set(testname mcbm_monists_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorSts.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" \"\" ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monit0_2020_${RUN}) + + Set(testname mcbm_monimuch_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorMuch.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" \"\" ${RUN} ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monists_2020_${RUN}) + + Set(testname mcbm_monitrd_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorTrd.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monimuch_2020_${RUN}) + + Set(testname mcbm_monitof_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorTof.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitrd_2020_${RUN}) + + Set(testname mcbm_monirich_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorRich.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monitof_2020_${RUN}) + + Set(testname mcbm_monipsd_2020_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2020/MonitorPsd.sh \"${RAW_DATA_PATH}/${RUN}_first20Ts.tsa\" ) + Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "300") + Set_Tests_Properties(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "Test Passed;All ok") + set_tests_properties(${testname} PROPERTIES DEPENDS mcbm_monirich_2020_${RUN}) + EndIf() # If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa)) + EndForEach() # ForEach(RUN 759 760 761 762 811 812 819 824 856 ) +EndIf() # If(DEFINED ENV{RAW_DATA_PATH} ) +##################### diff --git a/macro/beamtime/mcbm2020/mcbm_build_and_reco.C b/macro/beamtime/mcbm2020/mcbm_build_and_reco.C new file mode 100644 index 0000000000000000000000000000000000000000..f9850fa97dfc17016fb8db5f91d69e019ef61520 --- /dev/null +++ b/macro/beamtime/mcbm2020/mcbm_build_and_reco.C @@ -0,0 +1,299 @@ +// -------------------------------------------------------------------------- +// +// Macro for reconstruction of mcbm data (2020) +// Combined event based reconstruction (Event building + cluster + hit finder) +// for different subsystems. +// +// -------------------------------------------------------------------------- + + +void mcbm_build_and_reco(UInt_t uRunId = 28, + Int_t nTimeslices = 300, + TString outDir = "data/") { + // ======================================================================== + // Adjust this part according to your requirements + + // --- Logger settings ---------------------------------------------------- + TString logLevel = "INFO"; + TString logVerbosity = "LOW"; + // ------------------------------------------------------------------------ + + + // ----- Environment -------------------------------------------------- + TString myName = "mcbm_reco"; // this macro's name for screen output + TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory + TString paramDir = srcDir + "/macro/beamtime/mcbm2020/"; + // ------------------------------------------------------------------------ + + + // ----- In- and output file names ------------------------------------ + TString inFile = Form("./data/unp_mcbm_%i.root", uRunId); + TString parFileIn = Form("./data/unp_mcbm_params_%i.root", uRunId); + TString geoFile = paramDir + "mcbm2020_reco.geo.root"; // Created in sim. run + TString parFileOut = Form("./data/reco_mcbm_evt_win_params_%u.root", uRunId); + TString outFile = Form("./data/reco_mcbm_evt_win_%u.root", uRunId); + // ------------------------------------------------------------------------ + + + // ----- Timer -------------------------------------------------------- + TStopwatch timer; + timer.Start(); + // ------------------------------------------------------------------------ + + + // ----- FairRunAna --------------------------------------------------- + FairRunAna* run = new FairRunAna(); + run->SetEventHeaderPersistence(kFALSE); + + FairFileSource* inputSource = new FairFileSource(inFile); + run->SetSource(inputSource); + + FairRootFileSink* outputSink = new FairRootFileSink(outFile); + run->SetSink(outputSink); + run->SetGeomFile(geoFile); + + // Define output file for FairMonitor histograms + TString monitorFile {outFile}; + monitorFile.ReplaceAll("rec", "rec.monitor"); + FairMonitor::GetMonitor()->EnableMonitor(kTRUE, monitorFile); + // ------------------------------------------------------------------------ + + + // ----- Logger settings ---------------------------------------------- + FairLogger::GetLogger()->SetLogScreenLevel(logLevel.Data()); + FairLogger::GetLogger()->SetLogVerbosityLevel(logVerbosity.Data()); + // ------------------------------------------------------------------------ + + //-------- Event builder -------------------------------------------------- + // CbmMcbm2019TimeWinEventBuilder* eventBuilder = new CbmMcbm2019TimeWinEventBuilder(); + CbmMcbm2019TimeWinEventBuilderTask* eventBuilder = + new CbmMcbm2019TimeWinEventBuilderTask(); + + eventBuilder->SetFillHistos(kTRUE); + + eventBuilder->SetEventOverlapMode(EOverlapMode::NoOverlap); + // eventBuilder->SetEventOverlapMode(EOverlapMode::MergeOverlap); + // eventBuilder->SetEventOverlapMode(EOverlapMode::AllowOverlap); + + /* + * Available Pre-defined detectors: + * kEventBuilderDetSts + * kEventBuilderDetMuch + * kEventBuilderDetTrd + * kEventBuilderDetTof + * kEventBuilderDetRich + * kEventBuilderDetPsd + * kEventBuilderDetT0 + */ + + /// Change the selection window limits for T0 as ref + eventBuilder->SetTriggerWindow(ECbmModuleId::kSts, -50, 100); + eventBuilder->SetTriggerWindow(ECbmModuleId::kMuch, -150, 50); + eventBuilder->SetTriggerWindow(ECbmModuleId::kTrd, -250, 100); + eventBuilder->SetTriggerWindow(ECbmModuleId::kTof, -150, 10); + eventBuilder->SetTriggerWindow(ECbmModuleId::kRich, -50, 50); + eventBuilder->SetTriggerWindow(ECbmModuleId::kPsd, -50, 50); + /// To get T0 Digis (seed + close digis) in the event + eventBuilder->SetTriggerWindow(ECbmModuleId::kT0, -1, 10); + + /* + /// Use TOF as reference + eventBuilder->SetReferenceDetector( kEventBuilderDetTof ); + eventBuilder->AddDetector( kEventBuilderDetT0 ); + + /// Change the selection window limits for TOF as ref + /// => Should always be after changes of detector lists! + eventBuilder->SetTriggerWindow(ECbmModuleId::kT0, -150, 0); + eventBuilder->SetTriggerWindow(ECbmModuleId::kSts, -50, 100); + eventBuilder->SetTriggerWindow(ECbmModuleId::kMuch, -50, 200); + eventBuilder->SetTriggerWindow(ECbmModuleId::kTrd, -50, 300); + eventBuilder->SetTriggerWindow(ECbmModuleId::kTof, 0, 60); + eventBuilder->SetTriggerWindow(ECbmModuleId::kRich, -100, 150); + eventBuilder->SetTriggerWindow(ECbmModuleId::kPsd, -200, 50); +*/ + + /// Change the trigger requirements + /// => Should always be after changes of detector lists! + /// --- Minimum + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kT0, 1); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kSts, 0); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kMuch, 0); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kTrd, 0); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kTof, 10); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kRich, 0); + eventBuilder->SetTriggerMinNumber(ECbmModuleId::kPsd, 0); + /// --- Maximum (-1 to disable cut) + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kT0, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kSts, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kMuch, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kTrd, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kTof, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kRich, -1); + eventBuilder->SetTriggerMaxNumber(ECbmModuleId::kPsd, -1); + + + if (0 < uRunId) + eventBuilder->SetOutFilename( + Form("%sHistosEvtWin_%03u.root", outDir.Data(), uRunId)); + + run->AddTask(eventBuilder); + // ------------------------------------------------------------------------ + + + // ----- Reconstruction tasks ----------------------------------------- + + // ----- Local reconstruction in STS ---------------------------------- + CbmRecoSts* recoSts = new CbmRecoSts(); + recoSts->SetMode(kCbmRecoEvent); + + //recoSts->SetTimeCutDigisAbs( 20 );// cluster finder: time cut in ns + //recoSts->SetTimeCutClustersAbs(20.); // hit finder: time cut in ns + + // ASIC params: #ADC channels, dyn. range, threshold, time resol., dead time, + // noise RMS, zero-threshold crossing rate + auto parAsic = + new CbmStsParAsic(32, 75000., 3000., 5., 800., 1000., 3.9789e-3); + + // Module params: number of channels, number of channels per ASIC + auto parMod = new CbmStsParModule(2048, 128); + parMod->SetAllAsics(*parAsic); + recoSts->UseModulePar(parMod); + + // Sensor params + auto sensorPar = new CbmStsParSensor(CbmStsSensorClass::kDssdStereo); + sensorPar->SetPar(0, 6.2092); // Extension in x + sensorPar->SetPar(1, 6.2); // Extension in y + sensorPar->SetPar(2, 0.03); // Extension in z + sensorPar->SetPar(3, 5.9692); // Active size in y + sensorPar->SetPar(4, 1024.); // Number of strips front side + sensorPar->SetPar(5, 1024.); // Number of strips back side + sensorPar->SetPar(6, 0.0058); // Strip pitch front side + sensorPar->SetPar(7, 0.0058); // Strip pitch back side + sensorPar->SetPar(8, 7.5); // Stereo angle front side + sensorPar->SetPar(9, 0.0); // Stereo angle back side + recoSts->UseSensorPar(sensorPar); + + // Sensor conditions: full depletion voltage, bias voltage, temperature, + // coupling capacitance, inter-strip capacitance + auto sensorCond = new CbmStsParSensorCond(70., 140., 268., 17.5, 1.); + recoSts->UseSensorCond(sensorCond); + + run->AddTask(recoSts); + std::cout << "-I- : Added task " << recoSts->GetName() << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in MUCH --------------------------------- + Int_t flag = 1; + TString parDir = + TString(gSystem->Getenv("VMCWORKDIR")) + TString("/parameters"); + TString muchDigiFile( + parDir + "/much/much_v19c_mcbm_digi_sector.root"); // MUCH digi file + CbmMuchFindHitsGem* muchFindHits = + new CbmMuchFindHitsGem(muchDigiFile.Data(), flag); + muchFindHits->SetBeamTimeDigi(kTRUE); + run->AddTask(muchFindHits); + std::cout << "-I- : Added task " << muchFindHits->GetName() << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in TRD ---------------------------------- + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in TOF ---------------------------------- + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction of RICH Hits ------------------------------ + CbmRichMCbmHitProducer* hitProdRich = new CbmRichMCbmHitProducer(); + hitProdRich->setToTLimits(23.7, 30.0); + hitProdRich->applyToTCut(); + TString sRichMapFile = + srcDir + "/macro/rich/mcbm/beamtime/mRICH_Mapping_vert_20190318_elView.geo"; + hitProdRich->SetMappingFile(sRichMapFile.Data()); + run->AddTask(hitProdRich); + // ------------------------------------------------------------------------ + + // ----- Local reconstruction in RICh -> Finding of Rings --------------- + CbmRichReconstruction* richReco = new CbmRichReconstruction(); + richReco->UseMCbmSetup(); + run->AddTask(richReco); + // ------------------------------------------------------------------------ + + + // ----- Psd hit producer ---------------------------------------------- + CbmPsdMCbmHitProducer* hitProdPsd = new CbmPsdMCbmHitProducer(); + run->AddTask(hitProdPsd); + // ------------------------------------------------------------------------ + + + // ----- Parameter database -------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Set runtime DB" << std::endl; + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); + FairParRootFileIo* parIo3 = new FairParRootFileIo(); + parIo1->open(parFileIn.Data(), "READ"); + parIo3->open(parFileOut.Data(), "RECREATE"); + rtdb->setFirstInput(parIo1); + // ------------------------------------------------------------------------ + + + // ----- Run initialisation ------------------------------------------- + std::cout << std::endl; + std::cout << "-I- " << myName << ": Initialise run" << std::endl; + run->Init(); + rtdb->setOutput(parIo3); + rtdb->saveOutput(); + rtdb->print(); + // ------------------------------------------------------------------------ + + + // ----- Start run ---------------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Starting run" << std::endl; + run->Run(0, nTimeslices); + // ------------------------------------------------------------------------ + + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + FairMonitor::GetMonitor()->Print(); + Double_t rtime = timer.RealTime(); + Double_t ctime = timer.CpuTime(); + std::cout << std::endl << std::endl; + std::cout << "Macro finished successfully." << std::endl; + std::cout << "Output file is " << outFile << std::endl; + std::cout << "Parameter file is " << parFileOut << std::endl; + std::cout << "Real time " << rtime << " s, CPU time " << ctime << " s" + << std::endl; + std::cout << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Resource monitoring ------------------------------------------ + // Extract the maximal used memory an add is as Dart measurement + // This line is filtered by CTest and the value send to CDash + FairSystemInfo sysInfo; + Float_t maxMemory = sysInfo.GetMaxMemory(); + std::cout << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">"; + std::cout << maxMemory; + std::cout << "</DartMeasurement>" << std::endl; + + Float_t cpuUsage = ctime / rtime; + std::cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">"; + std::cout << cpuUsage; + std::cout << "</DartMeasurement>" << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Function needed for CTest runtime dependency ----------------- + // RemoveGeoManager(); + // ------------------------------------------------------------------------ + + /// --- Screen output for automatic tests + std::cout << " Test passed" << std::endl; + std::cout << " All ok " << std::endl; +} diff --git a/macro/beamtime/mcbm2020/mcbm_event_reco.C b/macro/beamtime/mcbm2020/mcbm_event_reco.C index 00553c221caeb4830fdb8c666d7eeefa0fada438..e27b8f175b7cf3bf710eade720e83386e099e48d 100644 --- a/macro/beamtime/mcbm2020/mcbm_event_reco.C +++ b/macro/beamtime/mcbm2020/mcbm_event_reco.C @@ -194,7 +194,7 @@ void mcbm_event_reco(Int_t runId = 831, Int_t nTimeslices = 300) { std::cout << std::endl << std::endl; std::cout << "Macro finished successfully." << std::endl; std::cout << "Output file is " << outFile << std::endl; - std::cout << "Parameter file is " << parFileOut << std::endl; + std::cout << "Parameter file is " << parFile << std::endl; std::cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << std::endl; std::cout << std::endl; diff --git a/macro/beamtime/mcbm2020/mcbm_event_reco_kronos.C b/macro/beamtime/mcbm2020/mcbm_event_reco_kronos.C new file mode 100644 index 0000000000000000000000000000000000000000..fd73801f79caa3a989caf0ba7a0e6dcf158ce192 --- /dev/null +++ b/macro/beamtime/mcbm2020/mcbm_event_reco_kronos.C @@ -0,0 +1,235 @@ +// -------------------------------------------------------------------------- +// +// Macro for reconstruction of mcbm data (2020) +// Combined Event based local reconstruction (Event Building (Florian one) + +// cluster + hit finder) for different subsystems. +// +// -------------------------------------------------------------------------- + +void mcbm_event_reco(Int_t runId = 831, Int_t nTimeslices = 300) { + + // --- Logger settings ---------------------------------------------------- + TString logLevel = "INFO"; + TString logVerbosity = "LOW"; + // ------------------------------------------------------------------------ + + + // ----- Environment -------------------------------------------------- + TString myName = "mcbm_reco"; // this macro's name for screen output + TString srcDir = gSystem->Getenv("VMCWORKDIR"); // top source directory + TString paramDir = srcDir + "/macro/beamtime/mcbm2020/"; + // ------------------------------------------------------------------------ + + + // ----- In- and output file names ------------------------------------ + TString inFile = Form("/lustre/cbm/users/ploizeau/mcbm2020/" + "unp_evt_data_7f229b3f_20201103/unp_mcbm_%i.root", + runId); + TString parFileIn = + Form("/lustre/cbm/users/ploizeau/mcbm2020/unp_evt_data_7f229b3f_20201103/" + "unp_mcbm_params_%i.root", + runId); + TString geoFile = paramDir + "mcbm2020_reco.geo.root"; // Created in sim. run + TString parFileOut = Form("./data/reco_mcbm_params_%i.root", runId); + TString outFile = Form("./data/reco_mcbm_%i.root", runId); + // ------------------------------------------------------------------------ + + + // ----- Timer -------------------------------------------------------- + TStopwatch timer; + timer.Start(); + // ------------------------------------------------------------------------ + + + // ----- FairRunAna --------------------------------------------------- + FairRunAna* run = new FairRunAna(); + FairFileSource* inputSource = new FairFileSource(inFile); + run->SetSource(inputSource); + + FairRootFileSink* outputSink = new FairRootFileSink(outFile); + run->SetSink(outputSink); + run->SetGeomFile(geoFile); + + // Define output file for FairMonitor histograms + TString monitorFile {outFile}; + monitorFile.ReplaceAll("rec", "rec.monitor"); + FairMonitor::GetMonitor()->EnableMonitor(kTRUE, monitorFile); + // ------------------------------------------------------------------------ + + + // ----- Logger settings ---------------------------------------------- + FairLogger::GetLogger()->SetLogScreenLevel(logLevel.Data()); + FairLogger::GetLogger()->SetLogVerbosityLevel(logVerbosity.Data()); + // ------------------------------------------------------------------------ + + //--------------------event builder-------------------// + CbmMcbm2018EventBuilder* eventBuilder = new CbmMcbm2018EventBuilder(); + // eventBuilder->SetEventBuilderAlgo(EventBuilderAlgo::MaximumTimeGap); + //eventBuilder->SetMaximumTimeGap(50.); + eventBuilder->SetEventBuilderAlgo(EventBuilderAlgo::FixedTimeWindow); + eventBuilder->SetFixedTimeWindow(200.); + eventBuilder->SetTriggerMinNumberT0(1); + //eventBuilder->SetTriggerMinNumberSts(0); + eventBuilder->SetTriggerMinNumberMuch(1); + eventBuilder->SetTriggerMinNumberTof(10); + run->AddTask(eventBuilder); + // ------------------------------------------------------------------------ + + + // ----- Reconstruction tasks ----------------------------------------- + + // ----- Local reconstruction in MUCH --------------------------------- + Int_t flag = 1; + TString parDir = + TString(gSystem->Getenv("VMCWORKDIR")) + TString("/parameters"); + TString muchDigiFile( + parDir + "/much/much_v19c_mcbm_digi_sector.root"); // MUCH digi file + CbmMuchFindHitsGem* muchFindHits = + new CbmMuchFindHitsGem(muchDigiFile.Data(), flag); + muchFindHits->SetBeamTimeDigi(kTRUE); + run->AddTask(muchFindHits); + std::cout << "-I- : Added task " << muchFindHits->GetName() << std::endl; + //------------------------------------------------------------------------------- + + + // ----- Local reconstruction in STS ---------------------------------- + CbmRecoSts* recoSts = new CbmRecoSts(); + recoSts->SetMode(kCbmRecoEvent); + + //recoSts->SetTimeCutDigisAbs( 20 );// cluster finder: time cut in ns + //recoSts->SetTimeCutClustersAbs(20.); // hit finder: time cut in ns + + // ASIC params: #ADC channels, dyn. range, threshold, time resol., dead time, + // noise RMS, zero-threshold crossing rate + auto parAsic = + new CbmStsParAsic(32, 75000., 3000., 5., 800., 1000., 3.9789e-3); + + // Module params: number of channels, number of channels per ASIC + auto parMod = new CbmStsParModule(2048, 128); + parMod->SetAllAsics(*parAsic); + recoSts->UseModulePar(parMod); + + // Sensor params + auto sensorPar = new CbmStsParSensor(CbmStsSensorClass::kDssdStereo); + sensorPar->SetPar(0, 6.2092); // Extension in x + sensorPar->SetPar(1, 6.2); // Extension in y + sensorPar->SetPar(2, 0.03); // Extension in z + sensorPar->SetPar(3, 5.9692); // Active size in y + sensorPar->SetPar(4, 1024.); // Number of strips front side + sensorPar->SetPar(5, 1024.); // Number of strips back side + sensorPar->SetPar(6, 0.0058); // Strip pitch front side + sensorPar->SetPar(7, 0.0058); // Strip pitch back side + sensorPar->SetPar(8, 7.5); // Stereo angle front side + sensorPar->SetPar(9, 0.0); // Stereo angle back side + recoSts->UseSensorPar(sensorPar); + + // Sensor conditions: full depletion voltage, bias voltage, temperature, + // coupling capacitance, inter-strip capacitance + auto sensorCond = new CbmStsParSensorCond(70., 140., 268., 17.5, 1.); + recoSts->UseSensorCond(sensorCond); + + run->AddTask(recoSts); + std::cout << "-I- : Added task " << recoSts->GetName() << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in TRD ---------------------------------- + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction in TOF ---------------------------------- + // ------------------------------------------------------------------------ + + + // ----- Local reconstruction of RICH Hits ------------------------------ + CbmRichMCbmHitProducer* hitProdRich = new CbmRichMCbmHitProducer(); + hitProdRich->setToTLimits(23.7, 30.0); + hitProdRich->applyToTCut(); + TString sRichMapFile = + srcDir + "/macro/rich/mcbm/beamtime/mRICH_Mapping_vert_20190318_elView.geo"; + hitProdRich->SetMappingFile(sRichMapFile.Data()); + run->AddTask(hitProdRich); + // ------------------------------------------------------------------------ + + // ----- Local reconstruction in RICh -> Finding of Rings --------------- + CbmRichReconstruction* richReco = new CbmRichReconstruction(); + richReco->UseMCbmSetup(); + run->AddTask(richReco); + // ------------------------------------------------------------------------ + + + // ----- Psd hit producer ---------------------------------------------- + CbmPsdMCbmHitProducer* hitProdPsd = new CbmPsdMCbmHitProducer(); + run->AddTask(hitProdPsd); + // ------------------------------------------------------------------------ + + + // ----- Parameter database -------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Set runtime DB" << std::endl; + FairRuntimeDb* rtdb = run->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); + FairParRootFileIo* parIo3 = new FairParRootFileIo(); + parIo1->open(parFileIn.Data(), "READ"); + parIo3->open(parFileOut.Data(), "RECREATE"); + rtdb->setFirstInput(parIo1); + // ------------------------------------------------------------------------ + + + // ----- Run initialisation ------------------------------------------- + std::cout << std::endl; + std::cout << "-I- " << myName << ": Initialise run" << std::endl; + run->Init(); + rtdb->setOutput(parIo3); + rtdb->saveOutput(); + rtdb->print(); + // ------------------------------------------------------------------------ + + + // ----- Start run ---------------------------------------------------- + std::cout << std::endl << std::endl; + std::cout << "-I- " << myName << ": Starting run" << std::endl; + run->Run(0, nTimeslices); + // ------------------------------------------------------------------------ + + + // ----- Finish ------------------------------------------------------- + timer.Stop(); + FairMonitor::GetMonitor()->Print(); + Double_t rtime = timer.RealTime(); + Double_t ctime = timer.CpuTime(); + std::cout << std::endl << std::endl; + std::cout << "Macro finished successfully." << std::endl; + std::cout << "Output file is " << outFile << std::endl; + std::cout << "Parameter file is " << parFileOut << std::endl; + std::cout << "Real time " << rtime << " s, CPU time " << ctime << " s" + << std::endl; + std::cout << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Resource monitoring ------------------------------------------ + // Extract the maximal used memory an add is as Dart measurement + // This line is filtered by CTest and the value send to CDash + FairSystemInfo sysInfo; + Float_t maxMemory = sysInfo.GetMaxMemory(); + std::cout << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">"; + std::cout << maxMemory; + std::cout << "</DartMeasurement>" << std::endl; + + Float_t cpuUsage = ctime / rtime; + std::cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">"; + std::cout << cpuUsage; + std::cout << "</DartMeasurement>" << std::endl; + // ------------------------------------------------------------------------ + + + // ----- Function needed for CTest runtime dependency ----------------- + // RemoveGeoManager(); + // ------------------------------------------------------------------------ + + /// --- Screen output for automatic tests + std::cout << " Test passed" << std::endl; + std::cout << " All ok " << std::endl; +}