From 85647f2f61b6268c957a05ae71a50b0eee45ff94 Mon Sep 17 00:00:00 2001 From: Frederic Julian Linz <f.linz@gsi.de> Date: Tue, 9 Jul 2024 07:08:25 +0000 Subject: [PATCH] Digitization binary feature: allow for multiple detectors to be deactivated --- sim/response/config/DigiConfig_event.yaml | 3 ++- sim/response/config/DigiConfig_timeslice.yaml | 3 ++- sim/response/steer/Config.cxx | 10 ++++++++-- sim/response/steer/Config.h | 3 +-- sim/response/steer/Run.cxx | 5 ++++- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/sim/response/config/DigiConfig_event.yaml b/sim/response/config/DigiConfig_event.yaml index 6829a650e5..97d12619ae 100644 --- a/sim/response/config/DigiConfig_event.yaml +++ b/sim/response/config/DigiConfig_event.yaml @@ -6,7 +6,8 @@ global: nTimeslices: -1 firstTimeslice: -1 detectors: - deactivate: "" + deactivate: + - "" deactivateAllBut: "" timeslice: timeslicelength: 1.e5 diff --git a/sim/response/config/DigiConfig_timeslice.yaml b/sim/response/config/DigiConfig_timeslice.yaml index 7989ccf5a0..e014050be8 100644 --- a/sim/response/config/DigiConfig_timeslice.yaml +++ b/sim/response/config/DigiConfig_timeslice.yaml @@ -6,7 +6,8 @@ global: nTimeslices: -1 firstTimeslice: -1 detectors: - deactivate: "" + deactivate: + - "" deactivateAllBut: "" timeslice: timeslicelength: 1.e13 diff --git a/sim/response/steer/Config.cxx b/sim/response/steer/Config.cxx index 6cd0076dce..15df8cf535 100644 --- a/sim/response/steer/Config.cxx +++ b/sim/response/steer/Config.cxx @@ -39,7 +39,10 @@ namespace cbm::sim::digitization // --- Detector choice f_det_deactivateAllBut = ToECbmModuleId(settings["detectors"]["deactivateAllBut"].as<string>()); - f_det_deactivate = ToECbmModuleId(settings["detectors"]["deactivate"].as<string>()); + + YAML::Node deactivatedSystems = settings["detectors"]["deactivate"]; + for (auto det : deactivatedSystems) + f_det_deactivate.push_back(ToECbmModuleId(det.as<string>())); // --- Timeslice settings f_ts_tslength = settings["timeslice"]["timeslicelength"].as<float>(); @@ -218,7 +221,10 @@ namespace cbm::sim::digitization // --- Detector choice settings["detectors"]["deactivateAllBut"] = ToString(f_det_deactivateAllBut); - settings["detectors"]["deactivate"] = ToString(f_det_deactivate); + + for (int i = 0; i < (int) f_det_deactivate.size(); ++i) { + settings["detectors"]["deactivate"][i] = ToString(f_det_deactivate.at(i)); + } // --- Timeslice settings settings["timeslice"]["timeslicelength"] = f_ts_tslength; diff --git a/sim/response/steer/Config.h b/sim/response/steer/Config.h index 8d8c167b9f..c1916b0e89 100644 --- a/sim/response/steer/Config.h +++ b/sim/response/steer/Config.h @@ -94,8 +94,7 @@ namespace cbm::sim::digitization // --- Detector selection ECbmModuleId f_det_deactivateAllBut = ECbmModuleId::kNotExist; - ECbmModuleId f_det_deactivate = - ECbmModuleId::kNotExist; // TODO: option should be able to deal with several detectors + std::vector<ECbmModuleId> f_det_deactivate; // --- Timeslice settings float f_ts_tslength = 1.e5; diff --git a/sim/response/steer/Run.cxx b/sim/response/steer/Run.cxx index bdab3b756d..1e76e6be65 100644 --- a/sim/response/steer/Run.cxx +++ b/sim/response/steer/Run.cxx @@ -110,7 +110,10 @@ namespace cbm::sim::digitization if (fConfig.f_det_deactivateAllBut != ECbmModuleId::kNotExist) fRun.DeactivateAllBut(fConfig.f_det_deactivateAllBut); - if (fConfig.f_det_deactivate != ECbmModuleId::kNotExist) fRun.Deactivate(fConfig.f_det_deactivate); + + for (auto det : fConfig.f_det_deactivate) { + if (det != ECbmModuleId::kNotExist) fRun.Deactivate(det); + } timer.Stop(); double timeInit = timer.RealTime(); -- GitLab