Skip to content

Commit e881667

Browse files
committed
extract filters/transformations into helpers; merge identical functions
1 parent cbc4b65 commit e881667

File tree

5 files changed

+28
-63
lines changed

5 files changed

+28
-63
lines changed

Framework/Core/include/Framework/AnalysisSupportHelpers.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,6 @@ struct AnalysisSupportHelpers {
3939
std::vector<InputSpec> const& requestedSpecials,
4040
std::vector<InputSpec>& requestedAODs,
4141
DataProcessorSpec& publisher);
42-
static void addMissingOutputsToAnalysisCCDBFetcher(std::vector<OutputSpec> const& providedSpecials,
43-
std::vector<InputSpec> const& requestedSpecials,
44-
std::vector<InputSpec>& requestedAODs,
45-
std::vector<InputSpec>& requestedDYNs,
46-
DataProcessorSpec& publisher);
4742
static void addMissingOutputsToBuilder(std::vector<InputSpec> const& requestedSpecials,
4843
std::vector<InputSpec>& requestedAODs,
4944
std::vector<InputSpec>& requestedDYNs,

Framework/Core/include/Framework/DataSpecViews.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,25 @@ static auto filter_matching(auto const& provided)
3535
{
3636
return std::views::filter([&provided](auto const& input) { return std::any_of(provided.begin(), provided.end(), [&input](auto const& output) { return DataSpecUtils::match(input, output); }); });
3737
}
38+
39+
static auto filter_string_params_with(std::string match)
40+
{
41+
return std::views::filter([match](auto const& param) {
42+
return (param.type == VariantType::String) && (param.name.find(match) != std::string::npos);
43+
});
44+
}
45+
46+
static auto input_to_output_specs()
47+
{
48+
return std::views::transform([](auto const& input){ return DataSpecUtils::asOutputSpec(input); });
49+
}
50+
51+
static auto params_to_input_specs()
52+
{
53+
return std::views::transform([](auto const& param) {
54+
return DataSpecUtils::fromMetadataString(param.defaultValue.template get<std::string>());
55+
});
56+
}
3857
} // namespace o2::framework::views
3958
//
4059
namespace o2::framework::sinks

Framework/Core/src/AnalysisSupportHelpers.cxx

Lines changed: 7 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,7 @@ void AnalysisSupportHelpers::addMissingOutputsToReader(std::vector<OutputSpec> c
128128
{
129129
requestedInputs |
130130
views::filter_not_matching(providedOutputs) | // filter the inputs that are already provided
131-
std::views::transform([](auto const& req) { // create outputspecs for unmatched inputs
132-
return DataSpecUtils::asOutputSpec(req);
133-
}) |
131+
views::input_to_output_specs() |
134132
sinks::update_output_list{publisher.outputs}; // append them to the publisher outputs
135133
}
136134

@@ -141,20 +139,14 @@ void AnalysisSupportHelpers::addMissingOutputsToSpawner(std::vector<OutputSpec>
141139
{
142140
requestedSpecials |
143141
views::filter_not_matching(providedSpecials) | // filter the inputs that are already provided
144-
std::views::transform([](auto const& req) { // create outputspecs for unmatched inputs
145-
return DataSpecUtils::asOutputSpec(req);
146-
}) |
142+
views::input_to_output_specs() |
147143
sinks::append_to(publisher.outputs); // append them to the publisher outputs
148144

149145
std::vector<InputSpec> additionalInputs;
150146
for (auto& input : requestedSpecials | views::filter_not_matching(providedSpecials)) {
151147
input.metadata |
152-
std::views::filter([](auto const& param) { // filter config params that are strings starting with "input:"
153-
return (param.type == VariantType::String) && (param.name.find("input:") != std::string::npos);
154-
}) |
155-
std::views::transform([](auto const& param) { // parse them into InputSpecs
156-
return DataSpecUtils::fromMetadataString(param.defaultValue.template get<std::string>());
157-
}) |
148+
views::filter_string_params_with("input:") |
149+
views::params_to_input_specs() |
158150
sinks::update_input_list{additionalInputs}; // store into a temporary
159151
}
160152
additionalInputs | sinks::update_input_list{requestedAODs}; // update requestedAODs
@@ -167,55 +159,14 @@ void AnalysisSupportHelpers::addMissingOutputsToBuilder(std::vector<InputSpec> c
167159
DataProcessorSpec& publisher)
168160
{
169161
requestedSpecials |
170-
std::views::transform([](auto const& req) { // create outputspecs for inputs
171-
return DataSpecUtils::asOutputSpec(req);
172-
}) |
162+
views::input_to_output_specs() |
173163
sinks::append_to{publisher.outputs}; // append them to the publisher outputs
174164

175165
std::vector<InputSpec> additionalInputs;
176166
for (auto const& input : requestedSpecials) {
177167
input.metadata |
178-
std::views::filter([](auto const& param) { // filter config params that are strings starting with "input:"
179-
return (param.type == VariantType::String) && (param.name.find("input:") != std::string::npos);
180-
}) |
181-
std::views::transform([](auto const& param) { // parse them into InputSpecs
182-
return DataSpecUtils::fromMetadataString(param.defaultValue.template get<std::string>());
183-
}) |
184-
sinks::update_input_list{additionalInputs}; // store into a temporary
185-
}
186-
187-
additionalInputs | sinks::update_input_list(publisher.inputs); // update publisher inputs
188-
// FIXME: until we have a single list of pairs
189-
additionalInputs |
190-
views::partial_match_filter(AODOrigins) |
191-
sinks::update_input_list{requestedAODs}; // update requestedAODs
192-
additionalInputs |
193-
views::partial_match_filter(header::DataOrigin{"DYN"}) |
194-
sinks::update_input_list{requestedDYNs}; // update requestedDYNs
195-
}
196-
197-
void AnalysisSupportHelpers::addMissingOutputsToAnalysisCCDBFetcher(
198-
std::vector<OutputSpec> const& providedSpecials,
199-
std::vector<InputSpec> const& requestedSpecials,
200-
std::vector<InputSpec>& requestedAODs,
201-
std::vector<InputSpec>& requestedDYNs,
202-
DataProcessorSpec& publisher)
203-
{
204-
requestedSpecials |
205-
std::views::transform([](auto const& req) { // create outputspecs for inputs
206-
return DataSpecUtils::asOutputSpec(req);
207-
}) |
208-
sinks::append_to{publisher.outputs}; // append them to the publisher outputs
209-
210-
std::vector<InputSpec> additionalInputs;
211-
for (auto& input : requestedSpecials) {
212-
input.metadata |
213-
std::views::filter([](auto const& param) { // filter config params that are strings starting with "input:"
214-
return (param.type == VariantType::String) && (param.name.find("input:") != std::string::npos);
215-
}) |
216-
std::views::transform([](auto const& param) { // parse them into InputSpecs
217-
return DataSpecUtils::fromMetadataString(param.defaultValue.template get<std::string>());
218-
}) |
168+
views::filter_string_params_with("input:") |
169+
views::params_to_input_specs() |
219170
sinks::update_input_list{additionalInputs}; // store into a temporary
220171
}
221172

Framework/Core/src/ArrowSupport.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ o2::framework::ServiceSpec ArrowSupport::arrowBackendSpec()
658658
// FIXME: it should be made more generic, so it does not need replacement...
659659
// FIXME how can I make the lookup depend on DYN tables as well??
660660
analysisCCDB->algorithm = PluginManager::loadAlgorithmFromPlugin("O2FrameworkCCDBSupport", "AnalysisCCDBFetcherPlugin", ctx);
661-
AnalysisSupportHelpers::addMissingOutputsToAnalysisCCDBFetcher({}, ac.analysisCCDBInputs, ac.requestedAODs, ac.requestedDYNs, *analysisCCDB);
661+
AnalysisSupportHelpers::addMissingOutputsToBuilder(ac.analysisCCDBInputs, ac.requestedAODs, ac.requestedDYNs, *analysisCCDB);
662662
}
663663

664664
if (writer != workflow.end()) {

Framework/Core/src/WorkflowHelpers.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ void WorkflowHelpers::injectServiceDevices(WorkflowSpec& workflow, ConfigContext
397397
ac.requestedTIMs | views::filter_not_matching(ac.providedTIMs) | sinks::append_to{ac.analysisCCDBInputs};
398398
DeploymentMode deploymentMode = DefaultsHelpers::deploymentMode();
399399
if (deploymentMode != DeploymentMode::OnlineDDS && deploymentMode != DeploymentMode::OnlineECS) {
400-
AnalysisSupportHelpers::addMissingOutputsToAnalysisCCDBFetcher({}, ac.analysisCCDBInputs, ac.requestedAODs, ac.requestedTIMs, analysisCCDBBackend);
400+
AnalysisSupportHelpers::addMissingOutputsToBuilder(ac.analysisCCDBInputs, ac.requestedAODs, ac.requestedTIMs, analysisCCDBBackend);
401401
}
402402

403403
ac.requestedDYNs | views::filter_not_matching(ac.providedDYNs) | sinks::append_to{ac.spawnerInputs};

0 commit comments

Comments
 (0)