From ee94af224cba82bf826871d5df4b1ddd4b54aba1 Mon Sep 17 00:00:00 2001 From: Oleg Golosov <oleg.golosov@gmail.com> Date: Tue, 27 Apr 2021 20:43:29 +0300 Subject: [PATCH] fix: install CbmConfigBase.h, small change in geometry setting --- core/CMakeLists.txt | 4 +++ core/config/CbmConfigBase.h | 2 +- macro/run/config.json | 5 ++++ sim/transport/steer/CbmTransportConfig.cxx | 30 +++++++++++++++++++--- sim/transport/steer/CbmTransportConfig.h | 3 +++ 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 2af4efb1b6..0147239fcc 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -34,3 +34,7 @@ set(CBMDETECTORBASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/detectors PARENT_SCOPE) If(GTEST_FOUND) add_subdirectory(data/test) EndIf() + +Install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/config/CbmConfigBase.h + DESTINATION include + ) diff --git a/core/config/CbmConfigBase.h b/core/config/CbmConfigBase.h index 870816027a..9dc07e2658 100644 --- a/core/config/CbmConfigBase.h +++ b/core/config/CbmConfigBase.h @@ -37,7 +37,7 @@ public: SetLogLevel(tree); auto moduleTree {tree.get_child_optional(Config_t::GetModuleTag())}; if (!moduleTree) { - LOG(error) << "CbmConfig: module tag is not correct!\n"; + LOG(error) << "CbmConfig: module tag not found:" << Config_t::GetModuleTag(); return false; } if (!Validate(moduleTree.get())) return false; diff --git a/macro/run/config.json b/macro/run/config.json index 373b69fe6d..67b3383520 100644 --- a/macro/run/config.json +++ b/macro/run/config.json @@ -72,6 +72,11 @@ "psd": "v20a", "platform": "v13a" } + }, + "stackFilter": { + "storeAllPrimaries": true, + "storeAllMothers": true, + "storeAllDecays": true } }, diff --git a/sim/transport/steer/CbmTransportConfig.cxx b/sim/transport/steer/CbmTransportConfig.cxx index 4042f16c04..d7471ac7e1 100644 --- a/sim/transport/steer/CbmTransportConfig.cxx +++ b/sim/transport/steer/CbmTransportConfig.cxx @@ -64,7 +64,10 @@ CbmTransportConfig::TagSet_t CbmTransportConfig::GetValidationTags() "geometry.subsystems.psd", "geometry.subsystems.hodo", "geometry.subsystems.shield", - "geometry.subsystems.platform"}; + "geometry.subsystems.platform", + "stackFilter.storeAllPrimaries", + "stackFilter.storeAllMothers", + "stackFilter.storeAllDecays"}; } CbmTransportConfig::TagSet_t CbmTransportConfig::GetAcceptedGenerators() { return {"unigen", "pluto", "beam"}; } @@ -259,6 +262,11 @@ bool CbmTransportConfig::SetTransportParameters(CbmTransport& obj, const pt::ptr } bool CbmTransportConfig::SetGeometry(CbmTransport& obj, const pt::ptree& moduleTree) +{ + return SetGeometry(obj.GetSetup(), moduleTree); +}; + +bool CbmTransportConfig::SetGeometry(CbmSetup* setup, const pt::ptree& moduleTree) { auto geometry = moduleTree.get_child_optional("geometry"); if (!geometry) { @@ -267,9 +275,8 @@ bool CbmTransportConfig::SetGeometry(CbmTransport& obj, const pt::ptree& moduleT } auto geometryTree = geometry.get(); auto baseSetup = geometryTree.get_optional<string>("baseSetup"); - if (baseSetup) obj.LoadSetup(baseSetup.get().c_str()); + if (baseSetup) setup->LoadSetup(baseSetup.get().c_str()); - auto setup = obj.GetSetup(); auto fieldTag = geometryTree.get_optional<string>("magneticField.tag"); auto fieldScale = geometryTree.get_optional<float>("magneticField.scale"); auto fieldX = geometryTree.get_optional<float>("magneticField.position.x"); @@ -297,10 +304,25 @@ bool CbmTransportConfig::SetGeometry(CbmTransport& obj, const pt::ptree& moduleT return true; } +bool CbmTransportConfig::SetStackFilter(CbmTransport& obj, const pt::ptree& moduleTree) +{ + auto stackFilterSettings = moduleTree.get_child_optional("stackFilter"); + if (!stackFilterSettings) return true; + auto settingsTree = stackFilterSettings.get(); + auto& filter = obj.GetStackFilter(); + auto storeAllPrimaries = settingsTree.get_optional<bool>("storeAllPrimaries"); + auto storeAllMothers = settingsTree.get_optional<bool>("storeAllMothers"); + auto storeAllDecays = settingsTree.get_optional<bool>("storeAllDecays"); + if (storeAllPrimaries) filter->SetStoreAllPrimaries(storeAllPrimaries.get()); + if (storeAllMothers) filter->SetStoreAllPrimaries(storeAllMothers.get()); + if (storeAllDecays) filter->SetStoreAllPrimaries(storeAllDecays.get()); + return true; +} + bool CbmTransportConfig::LoadImpl(CbmTransport& obj, const pt::ptree& moduleTree) { return SetIO(obj, moduleTree) && SetTarget(obj, moduleTree) && SetBeamProfile(obj, moduleTree) - && SetTransportParameters(obj, moduleTree) && SetGeometry(obj, moduleTree); + && SetTransportParameters(obj, moduleTree) && SetGeometry(obj, moduleTree) && SetStackFilter(obj, moduleTree); } ClassImp(CbmTransportConfig) diff --git a/sim/transport/steer/CbmTransportConfig.h b/sim/transport/steer/CbmTransportConfig.h index 8c15558b68..ba7cea807b 100644 --- a/sim/transport/steer/CbmTransportConfig.h +++ b/sim/transport/steer/CbmTransportConfig.h @@ -3,6 +3,7 @@ #include "CbmConfigBase.h" class CbmTransport; +class CbmSetup; class CbmTransportConfig : public CbmConfigBase<CbmTransportConfig, CbmTransport> { @@ -18,6 +19,8 @@ public: static bool SetBeamProfile(CbmTransport& obj, const pt::ptree& moduleTree); static bool SetTransportParameters(CbmTransport& obj, const pt::ptree& moduleTree); static bool SetGeometry(CbmTransport& obj, const pt::ptree& moduleTree); + static bool SetGeometry(CbmSetup* setup, const pt::ptree& moduleTree); + static bool SetStackFilter(CbmTransport& obj, const pt::ptree& moduleTree); ClassDef(CbmTransportConfig, 1); }; -- GitLab