@@ -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