diff --git a/sim/response/config/DigiConfig_event.yaml b/sim/response/config/DigiConfig_event.yaml index 6829a650e5296e05edf87e4641bd4e4b7e52a76e..97d12619ae11e5a93cd877a7d077fbf7e803fa08 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 7989ccf5a0157cd38768677855b9cd1b9b572322..e014050be8d0ebe781dcb9f1acaba5fd628d13fd 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 6cd0076dceb48169515e970fb2295a5ac3fd1913..15df8cf535b6191e6eb10561602822f48e729dcd 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 8d8c167b9fd10fb03fcd6306a2da7a60cefa05d9..c1916b0e89a472314bd093545af688a69b6628bf 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 bdab3b756d9daeb6b4ed6ed8a06033062c2c07cf..1e76e6be65651bbdb4696cdb08fb4df7de3208f9 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();