From fac74d1812280da6cb56759b36fd2c5efd5ac046 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Tue, 5 Nov 2024 11:12:54 +0100 Subject: [PATCH] Use Geant4 transport on macosx With newer version of macosx and/or XCode the Geant3 code compiles without problems but when it comes to memory allocation during runtime the execution crashes. Up to now the underlying problem couldn't be identified. Change CI tests such that on macosx only Geant4 is used. On Linux still Geant3 is used as simulation engine. --- macro/dimuon/CMakeLists.txt | 8 +++++++- macro/dimuon/dimuon_transport.C | 4 ++-- macro/mcbm/CMakeLists.txt | 14 ++++++++++++-- macro/mcbm/mcbm_transport.C | 7 +++++-- macro/much/CMakeLists.txt | 8 +++++++- macro/much/run_transport.C | 4 ++-- macro/mvd/qa/CMakeLists.txt | 9 +++++++-- macro/mvd/qa/mvd_qa1_transUrqmd.C | 4 ++-- macro/mvd/qa/mvd_qa2_transDelta.C | 4 ++-- macro/reco/CMakeLists.txt | 12 +++++++++--- macro/run/CMakeLists.txt | 12 +++++++++--- 11 files changed, 64 insertions(+), 22 deletions(-) diff --git a/macro/dimuon/CMakeLists.txt b/macro/dimuon/CMakeLists.txt index 1fbb183910..71bcdd2d03 100644 --- a/macro/dimuon/CMakeLists.txt +++ b/macro/dimuon/CMakeLists.txt @@ -26,6 +26,12 @@ set_tests_properties(dimuon_cleanup PROPERTIES FIXTURES_SETUP dimuon_cleanup ) +if(APPLE) + set(simulationEngine kGeant4) +else() + set(simulationEngine kGeant3) +endif() + ForEach(setup IN LISTS cbm_setup) @@ -37,7 +43,7 @@ ForEach(setup IN LISTS cbm_setup) # --- Transport run, using run_transport.C Set(testname dimuon_transport_${setup}) Set(fixture_dimuon_digi fixture_dimuon_digi_${testname}) - Add_Test(${testname} ${MACRO_DIR}/dimuon_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed}) + Add_Test(${testname} ${MACRO_DIR}/dimuon_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed} ${simulationEngine}) Set_Tests_Properties(${testname} PROPERTIES TIMEOUT "600" PASS_REGULAR_EXPRESSION "Test Passed;All ok" diff --git a/macro/dimuon/dimuon_transport.C b/macro/dimuon/dimuon_transport.C index a78a7e5cc7..13787530a5 100644 --- a/macro/dimuon/dimuon_transport.C +++ b/macro/dimuon/dimuon_transport.C @@ -40,7 +40,7 @@ //--------------------------------------------------- void dimuon_transport(Int_t nEvents = 1000, const char* setupName = "sis100_muon_lmvm", const char* output = "test", - const char* inputFile = "", Bool_t overwrite = kFALSE, int randomSeed = 0) + const char* inputFile = "", Bool_t overwrite = kFALSE, int randomSeed = 0, ECbmEngine engine = kGeant3) { // --- Logger settings ---------------------------------------------------- @@ -103,7 +103,7 @@ void dimuon_transport(Int_t nEvents = 1000, const char* setupName = "sis100_muon }; run.SetBeamPosition(0., 0., 0.1, 0.1); - run.SetEngine(kGeant3); + run.SetEngine(engine); run.SetRandomSeed(randomSeed); // ------------------------------------------------------------------------ diff --git a/macro/mcbm/CMakeLists.txt b/macro/mcbm/CMakeLists.txt index 7313634988..a569078abd 100644 --- a/macro/mcbm/CMakeLists.txt +++ b/macro/mcbm/CMakeLists.txt @@ -19,6 +19,16 @@ Set(NumEvents 10) Set(BeamAngle 25) Set(randomSeed 1) +if(APPLE) + set(simulationEngine kGeant4) + set(sim_timeout 1800) + set(reco_timeout 500) +else() + set(simulationEngine kGeant3) + set(sim_timeout 600) + set(reco_timeout 300) +endif() + # Define the different setups to be tested # Default should always be tested in all case # additional ones for current/future setups should also be added to the CI tests @@ -49,9 +59,9 @@ ForEach(setup IN LISTS cbm_setup) Set(testname mcbm_transport_${setup}) Set(fixture_mcbm_transport fixture_${testname}) - Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/mcbm/mcbm_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/mcbm/mcbm_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed} ${simulationEngine}) Set_Tests_Properties(${testname} PROPERTIES - TIMEOUT "600" + TIMEOUT "${sim_timeout}" PASS_REGULAR_EXPRESSION "Test Passed;All ok" FIXTURES_REQUIRED mcbm_cleanup FIXTURES_SETUP ${fixture_mcbm_transport} diff --git a/macro/mcbm/mcbm_transport.C b/macro/mcbm/mcbm_transport.C index 063ade51e2..598122bc53 100644 --- a/macro/mcbm/mcbm_transport.C +++ b/macro/mcbm/mcbm_transport.C @@ -48,7 +48,8 @@ void mcbm_transport(Int_t nEvents = 10, // const char* setupName = "mcbm_beam_2019_03", // const char* setupName = "sis18_mcbm_25deg_long", const char* output = "data/test", const char* inputFile = "", - Bool_t overwrite = kTRUE, int randomSeed = 0) + Bool_t overwrite = kTRUE, int randomSeed = 0, + ECbmEngine engine = kGeant3, Bool_t generateGeoTracks = kFALSE) { // --- Define the beam angle ---------------------------------------------- Double_t beamRotY = 25.; @@ -200,6 +201,7 @@ void mcbm_transport(Int_t nEvents = 10, // clang-format on + run.SetEngine(engine); // comment the following line to remove target interaction run.AddInput(inFile); run.SetOutFileName(outFile, overwrite); @@ -211,8 +213,9 @@ void mcbm_transport(Int_t nEvents = 10, targetRotY * TMath::DegToRad()); run.SetBeamPosition(0., 0., 0.1, 0.1); // Beam width 1 mm is assumed run.SetBeamAngle(beamRotY * TMath::DegToRad(), 0.); - if (nEvents <= 10) // store only for small number of events + if (generateGeoTracks) { run.StoreTrajectories(); + } run.SetRandomSeed(randomSeed); run.Run(nEvents); // ------------------------------------------------------------------------ diff --git a/macro/much/CMakeLists.txt b/macro/much/CMakeLists.txt index d24589908d..9d7221e6e4 100644 --- a/macro/much/CMakeLists.txt +++ b/macro/much/CMakeLists.txt @@ -20,9 +20,15 @@ set_tests_properties(much_cleanup PROPERTIES FIXTURES_SETUP much_cleanup ) +if(APPLE) + set(simulationEngine kGeant4) +else() + set(simulationEngine kGeant3) +endif() + # --- Transport of UrQMD events Set(testname much_transport) -add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm\" \"data/muons\" \"\" \"\" kFALSE ${randomSeed}) +add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm\" \"data/muons\" \"\" \"\" kFALSE ${randomSeed} ${simulationEngine}) SET_TESTS_PROPERTIES(${testname} PROPERTIES TIMEOUT "1200" PASS_REGULAR_EXPRESSION "TestPassed;All ok" diff --git a/macro/much/run_transport.C b/macro/much/run_transport.C index a2f510a4ec..7ae179c4e3 100644 --- a/macro/much/run_transport.C +++ b/macro/much/run_transport.C @@ -41,7 +41,7 @@ void run_transport(Int_t nEvents = 3, const char* setupName = "sis100_muon_lmvm", const char* output = "muons", const char* inputFile = "", const char* plutoFile = "", Bool_t overwrite = kFALSE, - int randomSeed = 0) + int randomSeed = 0, ECbmEngine engine = kGeant3) { // --- Logger settings ---------------------------------------------------- @@ -139,7 +139,7 @@ void run_transport(Int_t nEvents = 3, const char* setupName = "sis100_muon_lmvm" } run.SetBeamPosition(0., 0., 0.1, 0.1); - run.SetEngine(kGeant3); + run.SetEngine(engine); run.SetRandomSeed(randomSeed); // run.GetStackFilter()->SetMinNofPoints(kSts,0); // run.GetStackFilter()->SetMinNofPoints(kMuch,0); diff --git a/macro/mvd/qa/CMakeLists.txt b/macro/mvd/qa/CMakeLists.txt index 96f0d9dc5f..b826e2e6e6 100644 --- a/macro/mvd/qa/CMakeLists.txt +++ b/macro/mvd/qa/CMakeLists.txt @@ -10,9 +10,14 @@ set_tests_properties(mvd_cleanup PROPERTIES FIXTURES_SETUP mvd_cleanup ) +if(APPLE) + set(simulationEngine "TGeant4") +else() + set(simulationEngine "TGeant3") +endif() GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.C) -add_test(mvd_qa1_transUrqmd ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.sh) +add_test(mvd_qa1_transUrqmd ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.sh \"sis100_electron\" \"${simulationEngine}\") SET_TESTS_PROPERTIES(mvd_qa1_transUrqmd PROPERTIES TIMEOUT "300" PASS_REGULAR_EXPRESSION "Test Passed;All ok" @@ -21,7 +26,7 @@ SET_TESTS_PROPERTIES(mvd_qa1_transUrqmd PROPERTIES ) GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa2_transDelta.C) -add_test(mvd_qa2_transDelta ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa2_transDelta.sh) +add_test(mvd_qa2_transDelta ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa2_transDelta.sh \"sis100_electron\" \"${simulationEngine}\") SET_TESTS_PROPERTIES(mvd_qa2_transDelta PROPERTIES TIMEOUT "500" PASS_REGULAR_EXPRESSION "Test Passed;All ok" diff --git a/macro/mvd/qa/mvd_qa1_transUrqmd.C b/macro/mvd/qa/mvd_qa1_transUrqmd.C index 6ad2d6d393..47f60602e1 100644 --- a/macro/mvd/qa/mvd_qa1_transUrqmd.C +++ b/macro/mvd/qa/mvd_qa1_transUrqmd.C @@ -10,7 +10,7 @@ // V. Friese 06/02/2007 // // -------------------------------------------------------------------------- -void mvd_qa1_transUrqmd(const char* setup = "sis100_electron") +void mvd_qa1_transUrqmd(const char* setup = "sis100_electron", const char* simulationEngine = "TGeant3") { // ======================================================================== // Adjust this part according to your requirements @@ -105,7 +105,7 @@ void mvd_qa1_transUrqmd(const char* setup = "sis100_electron") // ----- Create simulation run ---------------------------------------- FairRunSim* fRun = new FairRunSim(); - fRun->SetName("TGeant3"); // Transport engine + fRun->SetName(simulationEngine); // Transport engine fRun->SetOutputFile(outFile); // Output file fRun->SetGenerateRunInfo(kTRUE); // Create FairRunInfo file FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); diff --git a/macro/mvd/qa/mvd_qa2_transDelta.C b/macro/mvd/qa/mvd_qa2_transDelta.C index e6adbd5d0e..e636b47c46 100644 --- a/macro/mvd/qa/mvd_qa2_transDelta.C +++ b/macro/mvd/qa/mvd_qa2_transDelta.C @@ -11,7 +11,7 @@ // // -------------------------------------------------------------------------- -void mvd_qa2_transDelta(const char* setup = "sis100_electron") +void mvd_qa2_transDelta(const char* setup = "sis100_electron", const char* simulationEngine = "TGeant3") { // ======================================================================== // Adjust this part according to your requirements @@ -105,7 +105,7 @@ void mvd_qa2_transDelta(const char* setup = "sis100_electron") // ----- Create simulation run ---------------------------------------- FairRunSim* fRun = new FairRunSim(); - fRun->SetName("TGeant3"); // Transport engine + fRun->SetName(simulationEngine); // Transport engine fRun->SetOutputFile(outFile); // Output file fRun->SetGenerateRunInfo(kTRUE); // Create FairRunInfo file FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); diff --git a/macro/reco/CMakeLists.txt b/macro/reco/CMakeLists.txt index 9287c0ccdd..85ce87e89c 100644 --- a/macro/reco/CMakeLists.txt +++ b/macro/reco/CMakeLists.txt @@ -25,6 +25,12 @@ else() Set(nEvents 3) endIf() +if(APPLE) + set(simulationEngine kGeant4) +else() + set(simulationEngine kGeant3) +endif() + math(EXPR timeOutTime "${nEvents} * 200") math(EXPR nBeam "${nEvents} * 3") @@ -82,7 +88,7 @@ foreach(setup IN LISTS cbm_setup) set(input ${CBMROOT_SOURCE_DIR}/input/urqmd.auau.10gev.centr.root) set(output ${datadir}/${sname}_coll) add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_file.sh - \"${input}\" ${nEvents} \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + \"${input}\" ${nEvents} \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" @@ -98,7 +104,7 @@ foreach(setup IN LISTS cbm_setup) set(input ${CBMROOT_SOURCE_DIR}/input/pluto.auau.8gev.omega.mpmm.0001.root) set(output ${datadir}/${sname}_sign) add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_file.sh - \"${input}\" ${nEvents} \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + \"${input}\" ${nEvents} \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" @@ -113,7 +119,7 @@ foreach(setup IN LISTS cbm_setup) set(testname reco_tra_beam_${sname}) set(output ${datadir}/${sname}_beam) add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_beam.sh - ${nBeam} \"Au\" 10 -1 \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + ${nBeam} \"Au\" 10 -1 \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" diff --git a/macro/run/CMakeLists.txt b/macro/run/CMakeLists.txt index 7bbcbeccc9..a52e295b5d 100644 --- a/macro/run/CMakeLists.txt +++ b/macro/run/CMakeLists.txt @@ -37,6 +37,12 @@ else() Set(randomSeed 1) endIf() +if(APPLE) + set(simulationEngine kGeant4) +else() + set(simulationEngine kGeant3) +endif() + math(EXPR timeOutTime "${nEvents} * 200") math(EXPR nBeam "${nEvents} * 3") @@ -98,7 +104,7 @@ foreach(setup IN LISTS cbm_setup) set(testname run_${sname}_tra_coll) set(input ${CBMROOT_SOURCE_DIR}/input/urqmd.auau.10gev.centr.root) add_test(${testname} ${MACRO_DIR}/run_tra_file.sh - \"${input}\" ${nEvents} \"data/${sname}_coll\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + \"${input}\" ${nEvents} \"data/${sname}_coll\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" @@ -113,7 +119,7 @@ foreach(setup IN LISTS cbm_setup) set(testname run_${sname}_tra_sign) set(input ${CBMROOT_SOURCE_DIR}/input/pluto.auau.8gev.omega.mpmm.0001.root) add_test(${testname} ${MACRO_DIR}/run_tra_file.sh - \"${input}\" ${nEvents} \"data/${sname}_sign\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + \"${input}\" ${nEvents} \"data/${sname}_sign\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" @@ -127,7 +133,7 @@ foreach(setup IN LISTS cbm_setup) # --- Transport run with beam events, using run_tra_beam.C set(testname run_${sname}_tra_beam) add_test(${testname} ${MACRO_DIR}/run_tra_beam.sh - ${nBeam} \"Au\" 10 -1 \"data/${sname}_beam\" \"${setup}\" kGeant3 ${randomSeed} kTRUE) + ${nBeam} \"Au\" 10 -1 \"data/${sname}_beam\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE) set_tests_properties(${testname} PROPERTIES TIMEOUT ${timeOutTime} FAIL_REGULAR_EXPRESSION "segmentation violation" -- GitLab