Skip to content

Commit c66faec

Browse files
committed
detect tfnsource rather than the converter
1 parent 1120c99 commit c66faec

2 files changed

Lines changed: 18 additions & 5 deletions

File tree

Framework/Core/src/ArrowSupport.cxx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -696,8 +696,12 @@ o2::framework::ServiceSpec ArrowSupport::arrowBackendSpec()
696696
workflow.erase(reader);
697697
} else {
698698
// load reader algorithm before deployment
699-
auto mctracks2aod = std::find_if(workflow.begin(), workflow.end(), [](auto const& x) { return x.name == "mctracks-to-aod"; });
700-
if (mctracks2aod == workflow.end()) { // add normal reader algorithm only if no on-the-fly generator is injected
699+
auto tfnsource = std::ranges::find_if(workflow, [](DataProcessorSpec const& spec) {
700+
return !spec.name.starts_with("internal-dpl-aod-reader") && std::ranges::any_of(spec.outputs, [](OutputSpec const& output) {
701+
return DataSpecUtils::match(output, "TFN", "TFNumber", 0);
702+
});
703+
});
704+
if (tfnsource == workflow.end()) { // add normal reader algorithm only if no on-the-fly generator is injected
701705
reader->algorithm = CommonDataProcessors::wrapWithTimesliceConsumption(PluginManager::loadAlgorithmFromPlugin("O2FrameworkAnalysisSupport", "ROOTFileReader", ctx));
702706
} // otherwise the algorithm was set in injectServiceDevices
703707
}

Framework/Core/src/WorkflowHelpers.cxx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -458,13 +458,17 @@ void WorkflowHelpers::injectServiceDevices(WorkflowSpec& workflow, ConfigContext
458458

459459
// add the reader
460460
if (aodReader.outputs.empty() == false) {
461-
auto mctracks2aod = std::ranges::find_if(workflow, [](auto const& x) { return x.name == "mctracks-to-aod"; });
462-
if (mctracks2aod == workflow.end()) {
461+
auto tfnsource = std::ranges::find_if(workflow, [](DataProcessorSpec const& spec) {
462+
return std::ranges::any_of(spec.outputs, [](OutputSpec const& output) {
463+
return DataSpecUtils::match(output, "TFN", "TFNumber", 0);
464+
});
465+
});
466+
if (tfnsource == workflow.end()) {
463467
// add normal reader
464468
aodReader.outputs.emplace_back(OutputSpec{"TFN", "TFNumber"});
465469
aodReader.outputs.emplace_back(OutputSpec{"TFF", "TFFilename"});
466470
} else {
467-
// AODs are being injected on-the-fly, add error-handler reader
471+
// AODs are being injected the tfnsource is the entry point, add error-handler reader
468472
aodReader.algorithm = AlgorithmSpec{
469473
adaptStateful(
470474
[](DeviceSpec const& spec) {
@@ -742,6 +746,11 @@ void WorkflowHelpers::injectAODWriter(WorkflowSpec& workflow, ConfigContext cons
742746
return DataSpecUtils::partialMatch(spec, o2::header::DataOrigin("TFN"));
743747
});
744748
dec.isDangling[std::distance(dec.outputsInputs.begin(), it)] = false;
749+
750+
it = std::find_if(dec.outputsInputs.begin(), dec.outputsInputs.end(), [](InputSpec const& spec) -> bool {
751+
return DataSpecUtils::partialMatch(spec, o2::header::DataOrigin("TFF"));
752+
});
753+
dec.isDangling[std::distance(dec.outputsInputs.begin(), it)] = false;
745754
}
746755
}
747756

0 commit comments

Comments
 (0)