@@ -60,6 +60,7 @@ static constexpr bool is_enumeration_v<Enumeration<BEGIN, END, STEP>> = true;
6060
6161// Helper struct which builds a DataProcessorSpec from
6262// the contents of an AnalysisTask...
63+ namespace {
6364struct AnalysisDataProcessorBuilder {
6465 template <typename T>
6566 static ConfigParamSpec getSpec ()
@@ -374,6 +375,7 @@ struct AnalysisDataProcessorBuilder {
374375 std::invoke (processingFunction, task, g, std::get<A>(at)...);
375376 }
376377};
378+ }
377379
378380struct SetDefaultProcesses {
379381 std::vector<std::pair<std::string, bool >> map;
@@ -385,8 +387,9 @@ struct TaskName {
385387 std::string value;
386388};
387389
390+ namespace {
388391template <typename T, typename ... A>
389- auto getTaskNameSetProcesses (TaskName first, SetDefaultProcesses second, A... args)
392+ auto getTaskNameSetProcesses (std::string& outputName, TaskName first, SetDefaultProcesses second, A... args)
390393{
391394 auto task = std::make_shared<T>(std::forward<A>(args)...);
392395 for (auto & setting : second.map ) {
@@ -396,11 +399,12 @@ auto getTaskNameSetProcesses(TaskName first, SetDefaultProcesses second, A... ar
396399 },
397400 *task.get ());
398401 }
399- return std::make_tuple (first.value , task);
402+ outputName = first.value ;
403+ return task;
400404}
401405
402406template <typename T, typename ... A>
403- auto getTaskNameSetProcesses (SetDefaultProcesses first, TaskName second, A... args)
407+ auto getTaskNameSetProcesses (std::string& outputName, SetDefaultProcesses first, TaskName second, A... args)
404408{
405409 auto task = std::make_shared<T>(std::forward<A>(args)...);
406410 for (auto & setting : first.map ) {
@@ -410,11 +414,12 @@ auto getTaskNameSetProcesses(SetDefaultProcesses first, TaskName second, A... ar
410414 },
411415 *task.get ());
412416 }
413- return std::make_tuple (second.value , task);
417+ outputName = second.value ;
418+ return task;
414419}
415420
416421template <typename T, typename ... A>
417- auto getTaskNameSetProcesses (SetDefaultProcesses first, A... args)
422+ auto getTaskNameSetProcesses (std::string& outputName, SetDefaultProcesses first, A... args)
418423{
419424 auto task = std::make_shared<T>(std::forward<A>(args)...);
420425 for (auto & setting : first.map ) {
@@ -425,40 +430,27 @@ auto getTaskNameSetProcesses(SetDefaultProcesses first, A... args)
425430 *task.get ());
426431 }
427432 auto type_name_str = type_name<T>();
428- std::string name = type_to_task_name (type_name_str);
429- return std::make_tuple (name, task) ;
433+ outputName = type_to_task_name (type_name_str);
434+ return task;
430435}
431436
432437template <typename T, typename ... A>
433- auto getTaskNameSetProcesses (TaskName first, A... args)
438+ auto getTaskNameSetProcesses (std::string& outputName, TaskName first, A... args)
434439{
435440 auto task = std::make_shared<T>(std::forward<A>(args)...);
436- return std::make_tuple (first.value , task);
441+ outputName = first.value ;
442+ return task;
437443}
438444
439445template <typename T, typename ... A>
440- auto getTaskNameSetProcesses (A... args)
446+ auto getTaskNameSetProcesses (std::string& outputName, A... args)
441447{
442448 auto task = std::make_shared<T>(std::forward<A>(args)...);
443449 auto type_name_str = type_name<T>();
444- std::string name = type_to_task_name (type_name_str);
445- return std::make_tuple (name, task);
446- }
447-
448- template <typename T, typename ... A>
449- auto getTaskName (TaskName first, A... args)
450- {
451- auto task = std::make_shared<T>(std::forward<A>(args)...);
452- return std::make_tuple (first.value , task);
450+ outputName = type_to_task_name (type_name_str);
451+ return task;
453452}
454453
455- template <typename T, typename ... A>
456- auto getTaskName (A... args)
457- {
458- auto task = std::make_shared<T>(std::forward<A>(args)...);
459- auto type_name_str = type_name<T>();
460- std::string name = type_to_task_name (type_name_str);
461- return std::make_tuple (name, task);
462454}
463455
464456// / Adaptor to make an AlgorithmSpec from a o2::framework::Task
@@ -468,7 +460,8 @@ DataProcessorSpec adaptAnalysisTask(ConfigContext const& ctx, Args&&... args)
468460{
469461 TH1::AddDirectory (false );
470462
471- auto [name_str, task] = getTaskNameSetProcesses<T>(args...);
463+ std::string name_str;
464+ auto task = getTaskNameSetProcesses<T>(name_str, args...);
472465
473466 auto suffix = ctx.options ().get <std::string>(" workflow-suffix" );
474467 if (!suffix.empty ()) {
0 commit comments