Skip to content

Commit 515ba3a

Browse files
authored
Revert "DPL Analysis: cleanup AnalysisTask.h and ASoA.h (#14996)" (#15005)
This reverts commit 63e5c61.
1 parent fd54f4a commit 515ba3a

File tree

4 files changed

+149
-128
lines changed

4 files changed

+149
-128
lines changed

Framework/Core/include/Framework/ASoA.h

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -405,15 +405,15 @@ class Table;
405405
/// Type-checking index column binding
406406
struct Binding {
407407
void const* ptr = nullptr;
408-
uint32_t hash = 0;
409-
// std::span<TableRef const> refs;
408+
size_t hash = 0;
409+
std::span<TableRef const> refs;
410410

411411
template <typename T>
412412
void bind(T const* table)
413413
{
414414
ptr = table;
415415
hash = o2::framework::TypeIdHelpers::uniqueId<T>();
416-
// refs = std::span{T::originals};
416+
refs = std::span{T::originals};
417417
}
418418

419419
template <typename T>
@@ -1293,9 +1293,6 @@ struct ArrowHelpers {
12931293
template <typename T>
12941294
concept is_iterator = framework::base_of_template<TableIterator, T> || framework::specialization_of_template<TableIterator, T>;
12951295

1296-
template <typename T>
1297-
concept is_table_or_iterator = is_table<T> || is_iterator<T>;
1298-
12991296
template <typename T>
13001297
concept with_originals = requires {
13011298
T::originals.size();
@@ -2727,7 +2724,7 @@ consteval auto getIndexTargets()
27272724
return !(*mColumnIterator).empty(); \
27282725
} \
27292726
\
2730-
template <soa::is_table T> \
2727+
template <typename T> \
27312728
auto _Getter_##_as() const \
27322729
{ \
27332730
if (O2_BUILTIN_UNLIKELY(mBinding.ptr == nullptr)) { \
@@ -2737,15 +2734,10 @@ consteval auto getIndexTargets()
27372734
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
27382735
o2::soa::dereferenceWithWrongType(#_Getter_, #_Table_); \
27392736
} \
2740-
auto result = std::vector<typename T::unfiltered_iterator>(); \
2741-
result.reserve((*mColumnIterator).size()); \
2742-
for (auto& i : *mColumnIterator) { \
2743-
result.emplace_back(t->rawIteratorAt(i)); \
2744-
} \
2745-
return result; \
2737+
return getIterators<T>(); \
27462738
} \
27472739
\
2748-
template <soa::is_filtered_table T> \
2740+
template <typename T> \
27492741
auto filtered_##_Getter_##_as() const \
27502742
{ \
27512743
if (O2_BUILTIN_UNLIKELY(mBinding.ptr == nullptr)) { \
@@ -2755,17 +2747,37 @@ consteval auto getIndexTargets()
27552747
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
27562748
o2::soa::dereferenceWithWrongType(#_Getter_, #_Table_); \
27572749
} \
2758-
auto result = std::vector<typename T::iterator>(); \
2759-
result.reserve((*mColumnIterator).size()); \
2760-
for (auto const& i : *mColumnIterator) { \
2761-
auto pos = t->isInSelectedRows(i); \
2762-
if (pos > 0) { \
2763-
result.emplace_back(t->iteratorAt(pos)); \
2764-
} \
2750+
return getFilteredIterators<T>(); \
2751+
} \
2752+
\
2753+
template <typename T> \
2754+
auto getIterators() const \
2755+
{ \
2756+
auto result = std::vector<typename T::unfiltered_iterator>(); \
2757+
for (auto& i : *mColumnIterator) { \
2758+
result.push_back(mBinding.get<T>()->rawIteratorAt(i)); \
27652759
} \
27662760
return result; \
27672761
} \
27682762
\
2763+
template <typename T> \
2764+
std::vector<typename T::iterator> getFilteredIterators() const \
2765+
{ \
2766+
if constexpr (o2::soa::is_filtered_table<T>) { \
2767+
auto result = std::vector<typename T::iterator>(); \
2768+
for (auto const& i : *mColumnIterator) { \
2769+
auto pos = mBinding.get<T>()->isInSelectedRows(i); \
2770+
if (pos > 0) { \
2771+
result.emplace_back(mBinding.get<T>()->iteratorAt(pos)); \
2772+
} \
2773+
} \
2774+
return result; \
2775+
} else { \
2776+
static_assert(o2::framework::always_static_assert_v<T>, "T is not a Filtered type"); \
2777+
} \
2778+
return {}; \
2779+
} \
2780+
\
27692781
auto _Getter_() const \
27702782
{ \
27712783
return _Getter_##_as<binding_t>(); \
@@ -3078,9 +3090,15 @@ consteval auto getIndexTargets()
30783090
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
30793091
o2::soa::dereferenceWithWrongType(#_Getter_, "self"); \
30803092
} \
3093+
return getIterators<T>(); \
3094+
} \
3095+
\
3096+
template <typename T> \
3097+
auto getIterators() const \
3098+
{ \
30813099
auto result = std::vector<typename T::unfiltered_iterator>(); \
30823100
for (auto& i : *mColumnIterator) { \
3083-
result.push_back(t->rawIteratorAt(i)); \
3101+
result.push_back(mBinding.get<T>()->rawIteratorAt(i)); \
30843102
} \
30853103
return result; \
30863104
} \

Framework/Core/include/Framework/AnalysisManagers.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,12 @@ void bindExternalIndicesPartition(P& partition, T*... tables)
534534
}
535535

536536
/// Cache handling
537+
template <typename T>
538+
bool preInitializeCache(InitContext&, T&)
539+
{
540+
return false;
541+
}
542+
537543
template <typename T>
538544
bool initializeCache(ProcessingContext&, T&)
539545
{

0 commit comments

Comments
 (0)