32 return std::any_of(workflow.begin(), workflow.end(), [
name](
const auto& spec) { return spec.name == name; });
69 const auto reco = resolveWorkflowOptions(input, aliases);
70 input.
kind = WorkflowKind::TrackerOnly;
71 const auto standalone = resolveWorkflowOptions(input, aliases);
73 BOOST_CHECK(reco.tracker.mode == standalone.tracker.mode);
76 BOOST_CHECK(reco.tracker.filterIRFrames == standalone.tracker.filterIRFrames);
77 BOOST_REQUIRE_EQUAL(reco.diagnostics.size(), 2u);
78 BOOST_CHECK(reco.diagnostics[0].find(
"MFTCATrackerParam.trackingMode") != std::string::npos);
79 BOOST_CHECK(reco.diagnostics[0].find(
"--tracking-mode") != std::string::npos);
80 BOOST_CHECK(reco.diagnostics[1].find(
"MFTCATrackerParam.nThreads") != std::string::npos);
81 BOOST_CHECK(reco.diagnostics[1].find(
"--nThreads") != std::string::npos);
87 for (
int stage = 0; stage < 3; ++stage) {
88 for (
const bool subscribe : {
false,
true}) {
89 for (
const bool filter : {
false,
true}) {
95 const auto resolved = resolveWorkflowOptions(input, {-1, 1,
filter});
100 const auto tracker = std::find_if(workflow.begin(), workflow.end(), [](
const auto& spec) { return spec.name ==
"mft-ca-tracker"; });
101 BOOST_REQUIRE(tracker != workflow.end());
102 const bool consumesIR = std::any_of(tracker->inputs.begin(), tracker->inputs.end(), [](
const auto& spec) { return spec.binding ==
"IRFramesITS"; });
133 BOOST_CHECK(hasDevice(workflow,
"mft-ca-tracker"));
134 BOOST_CHECK(hasDevice(workflow,
"mft-track-writer"));
138 BOOST_CHECK(!hasDevice(workflow,
"mft-ca-tracker"));
139 BOOST_CHECK(!hasDevice(workflow,
"mft-track-writer"));
140 BOOST_CHECK(!hasDevice(workflow,
"its-irframe-reader"));
142 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {}), std::invalid_argument);
145 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {}), std::invalid_argument);
152 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {99, 1,
false}), std::invalid_argument);
153 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {-1, 0,
false}), std::invalid_argument);
155 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {}), std::invalid_argument);
158 BOOST_CHECK_THROW(resolveWorkflowOptions(input, {}), std::invalid_argument);
165 std::vector<ConfigParamSpec> specs{
166 {
"nThreads", VariantType::Int, 4, {
"threads"}},
167 {
"tracking-mode", VariantType::String,
"sync", {
"mode"}},
168 {
"configKeyValues", VariantType::String,
"MFTCATrackerParam.nThreads=1;MFTCATrackerParam.trackingMode=1", {
"parameters"}}};
169 for (
const auto*
key : {
"disable-mc",
"disable-root-output",
"use-geom",
"use-full-geometry",
"use-irframes",
170 "digits-from-upstream",
"clusters-from-upstream",
"cluster-rof-branch-only",
"disable-tracking",
171 "run-assessment",
"disable-process-gen",
"run-tracks2records",
"enable-mft-staggering"}) {
172 specs.push_back({
key, VariantType::Bool,
false, {
key}});
174 auto store = std::make_unique<ConfigParamStore>(specs, std::vector<std::unique_ptr<ParamRetriever>>{});
180 const auto reco = readWorkflowOptions(context, WorkflowKind::Reconstruction);
181 const auto standalone = readWorkflowOptions(context, WorkflowKind::TrackerOnly);
185 BOOST_CHECK(reco.tracker.mode == standalone.tracker.mode);
186 registry.override(
"configKeyValues", std::string{
"MFTCATrackerParam.trackingMode=-1"});
188 o2::conf::ConfigurableParam::setValue<int>(
"MFTCATrackerParam",
"nThreads", 1);