diff --git a/Framework/Core/include/Framework/AnalysisManagers.h b/Framework/Core/include/Framework/AnalysisManagers.h index d9daf7ab89147..6bd4f46a649aa 100644 --- a/Framework/Core/include/Framework/AnalysisManagers.h +++ b/Framework/Core/include/Framework/AnalysisManagers.h @@ -45,7 +45,7 @@ struct GroupedCombinationManager 0, "There must be associated tables in process() for a correct pair"); static_assert(!soa::is_soa_iterator_t>::value, "Only full tables can be in process(), no grouping"); - if constexpr (std::conjunction_v, std::is_same>) { + if constexpr (std::is_same_v && std::is_same_v) { // Take respective unique associated tables for grouping auto associatedTuple = std::tuple(std::get(associated)...); comb.setTables(hashes, grouping, associatedTuple); diff --git a/Framework/Core/include/Framework/GroupedCombinations.h b/Framework/Core/include/Framework/GroupedCombinations.h index 5f2bb736c4c58..a4f64e1a4d94e 100644 --- a/Framework/Core/include/Framework/GroupedCombinations.h +++ b/Framework/Core/include/Framework/GroupedCombinations.h @@ -231,14 +231,18 @@ struct GroupedCombinationsGenerator, As... { setTables(hashes, grouping, associated); } + GroupedCombinationsGenerator(GroupedCombinationsGenerator const&) = default; + GroupedCombinationsGenerator& operator=(GroupedCombinationsGenerator const&) = default; ~GroupedCombinationsGenerator() = default; void setTables(H& hashes, G& grouping, std::tuple& associated) { - std::shared_ptr slicer_ptr = std::make_shared>(grouping, associated); - mBegin.setTables(hashes, grouping, slicer_ptr); - mEnd.setTables(hashes, grouping, slicer_ptr); - mEnd.moveToEnd(); + if (mSlicer == nullptr) { + mSlicer = std::make_shared>(grouping, associated); + mBegin.setTables(hashes, grouping, mSlicer); + mEnd.setTables(hashes, grouping, mSlicer); + mEnd.moveToEnd(); + } } private: @@ -247,6 +251,7 @@ struct GroupedCombinationsGenerator, As... const char* mCategory; const int mCatNeighbours; const T1 mOutsider; + std::shared_ptr> mSlicer = nullptr; }; // Aliases for 2-particle correlations @@ -254,13 +259,13 @@ struct GroupedCombinationsGenerator, As... template using joinedCollisions = typename soa::Join::table_t; template , joinedCollisions>> -using Pair = GroupedCombinationsGenerator>>; +using Pair = GroupedCombinationsGenerator>, A1, A2>; template , joinedCollisions>> using SameKindPair = GroupedCombinationsGenerator, A, A>; // Aliases for 3-particle correlations template , joinedCollisions, joinedCollisions>> -using Triple = GroupedCombinationsGenerator>>; +using Triple = GroupedCombinationsGenerator>, A1, A2, A3>; template , joinedCollisions, joinedCollisions>> using SameKindTriple = GroupedCombinationsGenerator, A, A, A>;