Skip to content

Commit 8a0371c

Browse files
committed
Modularize activeModules/readoutModules determination
Make this decoupled from the rest of SimConfig initializatin so that it can be used in other places as well.
1 parent 2748872 commit 8a0371c

2 files changed

Lines changed: 30 additions & 10 deletions

File tree

Common/SimConfig/include/SimConfig/SimConfig.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@ class SimConfig
111111
// get selected active detectors
112112
std::vector<std::string> const& getActiveModules() const { return mConfigData.mActiveModules; }
113113
std::vector<std::string> const& getReadoutDetectors() const { return mConfigData.mReadoutDetectors; }
114+
115+
// static helper functions to determine list of active / readout modules
116+
// can also be used from outside
117+
static void determineActiveModules(std::vector<std::string> const& input, std::vector<std::string> const& skipped, std::vector<std::string>& active);
118+
static void determineReadoutDetectors(std::vector<std::string> const& active, std::vector<std::string> const& enabledRO, std::vector<std::string> const& skippedRO, std::vector<std::string>& finalRO);
119+
114120
// get selected generator (to be used to select a genconfig)
115121
std::string getGenerator() const { return mConfigData.mGenerator; }
116122
std::string getTrigger() const { return mConfigData.mTrigger; }

Common/SimConfig/src/SimConfig.cxx

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,13 @@ void SimConfig::initOptions(boost::program_options::options_description& options
5959
"noGeant", bpo::bool_switch(), "prohibits any Geant transport/physics (by using tight cuts)");
6060
}
6161

62-
bool SimConfig::resetFromParsedMap(boost::program_options::variables_map const& vm)
62+
void SimConfig::determineActiveModules(std::vector<std::string> const& inputargs, std::vector<std::string> const& skippedModules, std::vector<std::string>& activeModules)
6363
{
6464
using o2::detectors::DetID;
65-
mConfigData.mMCEngine = vm["mcEngine"].as<std::string>();
66-
mConfigData.mActiveModules = vm["modules"].as<std::vector<std::string>>();
67-
auto& activeModules = mConfigData.mActiveModules;
65+
66+
// input args is a vector of module strings as obtained from the -m,--modules options
67+
// of SimConfig
68+
activeModules = inputargs;
6869
if (activeModules.size() == 1 && activeModules[0] == "all") {
6970
activeModules.clear();
7071
for (int d = DetID::First; d <= DetID::Last; ++d) {
@@ -86,19 +87,19 @@ bool SimConfig::resetFromParsedMap(boost::program_options::variables_map const&
8687
activeModules.emplace_back("SHIL");
8788
}
8889
// now we take out detectors listed as skipped
89-
auto& skipped = vm["skipModules"].as<std::vector<std::string>>();
90-
for (auto& s : skipped) {
90+
for (auto& s : skippedModules) {
9191
auto iter = std::find(activeModules.begin(), activeModules.end(), s);
9292
if (iter != activeModules.end()) {
9393
// take it out
9494
activeModules.erase(iter);
9595
}
9696
}
97+
}
98+
99+
void SimConfig::determineReadoutDetectors(std::vector<std::string> const& activeModules, std::vector<std::string> const& enableReadout, std::vector<std::string> const& disableReadout, std::vector<std::string>& readoutDetectors)
100+
{
101+
using o2::detectors::DetID;
97102

98-
// find all detectors that should be readout
99-
auto enableReadout = vm["readoutDetectors"].as<std::vector<std::string>>();
100-
auto& disableReadout = vm["skipReadoutDetectors"].as<std::vector<std::string>>();
101-
auto& readoutDetectors = mConfigData.mReadoutDetectors;
102103
readoutDetectors.clear();
103104

104105
auto isDet = [](std::string const& s) {
@@ -141,6 +142,19 @@ bool SimConfig::resetFromParsedMap(boost::program_options::variables_map const&
141142
readoutDetectors.erase(iter);
142143
}
143144
}
145+
}
146+
147+
bool SimConfig::resetFromParsedMap(boost::program_options::variables_map const& vm)
148+
{
149+
using o2::detectors::DetID;
150+
mConfigData.mMCEngine = vm["mcEngine"].as<std::string>();
151+
152+
// get final set of active Modules
153+
determineActiveModules(vm["modules"].as<std::vector<std::string>>(), vm["skipModules"].as<std::vector<std::string>>(), mConfigData.mActiveModules);
154+
const auto& activeModules = mConfigData.mActiveModules;
155+
156+
// get final set of detectors which are readout
157+
determineReadoutDetectors(activeModules, vm["readoutDetectors"].as<std::vector<std::string>>(), vm["skipReadoutDetectors"].as<std::vector<std::string>>(), mConfigData.mReadoutDetectors);
144158

145159
mConfigData.mGenerator = vm["generator"].as<std::string>();
146160
mConfigData.mTrigger = vm["trigger"].as<std::string>();

0 commit comments

Comments
 (0)