From d72798d7ddf8e6d8cec53af4e42cf970aa2fe256 Mon Sep 17 00:00:00 2001 From: Anton Alkin Date: Tue, 1 Apr 2025 11:14:42 +0200 Subject: [PATCH] DPL Analysis: fix combinations generator parsing in analysis task --- .../Core/include/Framework/AnalysisManagers.h | 4 +--- .../Core/include/Framework/GroupedCombinations.h | 14 +++++--------- Framework/Core/test/test_Concepts.cxx | 3 +++ 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisManagers.h b/Framework/Core/include/Framework/AnalysisManagers.h index ccabbd7a0a197..733e91706b4a8 100644 --- a/Framework/Core/include/Framework/AnalysisManagers.h +++ b/Framework/Core/include/Framework/AnalysisManagers.h @@ -495,16 +495,14 @@ bool initializeCache(ProcessingContext& context, T& cache) /// Combinations handling template - requires(!is_combinations_generator) void setGroupedCombination(C&, TG&, Ts&...) { } template - requires((sizeof...(Ts) > 0) && (C::compatible(framework::pack{}))) static void setGroupedCombination(C& comb, TG& grouping, std::tuple& associated) { - if constexpr (std::same_as) { + if constexpr (std::same_as>) { comb.setTables(grouping, associated); } } diff --git a/Framework/Core/include/Framework/GroupedCombinations.h b/Framework/Core/include/Framework/GroupedCombinations.h index bdbddee871baa..b0a6c9e658a10 100644 --- a/Framework/Core/include/Framework/GroupedCombinations.h +++ b/Framework/Core/include/Framework/GroupedCombinations.h @@ -48,17 +48,12 @@ expressions::BindingNode getMatchingIndexNode() } template + requires(sizeof...(As) > 0) struct GroupedCombinationsGenerator { using grouping_policy_t = GroupingPolicy; using g_t = G; using associated_pack_t = framework::pack; - template - static consteval bool compatible(framework::pack p) - { - return (framework::has_type(p) && ...); - } - using GroupedIteratorType = pack_to_tuple_t, pack>>; struct GroupedIterator : public GroupingPolicy { @@ -241,10 +236,11 @@ struct GroupedCombinationsGenerator { }; template -concept is_combinations_generator = requires(T t) { +concept is_combinations_generator = requires(T t, typename T::g_t const& g, pack_to_tuple_t& a) { typename T::GroupedIterator; - &T::begin; - &T::end; + t.setTables(g, a); + { t.begin() } -> std::same_as; + { t.end() } -> std::same_as; }; // Aliases for 2-particle correlations diff --git a/Framework/Core/test/test_Concepts.cxx b/Framework/Core/test/test_Concepts.cxx index 00ad931828b44..4bf4f977ec3a8 100644 --- a/Framework/Core/test/test_Concepts.cxx +++ b/Framework/Core/test/test_Concepts.cxx @@ -161,4 +161,7 @@ TEST_CASE("IdentificationConcepts") // Expressions expressions::Filter f = o2::aod::track::pt > 1.0f; REQUIRE(expressions::is_filter); + + using C = SameKindPair>; + REQUIRE(is_combinations_generator); }