Skip to content

Commit 63e5c61

Browse files
aalkinalibuild
andauthored
DPL Analysis: cleanup AnalysisTask.h and ASoA.h (#14996)
* remove unnecessary include; unnecessary mutability; too specific requires; unused function * use non-capturing lambdas; restrict template * we only expect void process functions * improve getIterators * improve homogeneous_apply_ref --------- Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 0bb564d commit 63e5c61

File tree

4 files changed

+128
-149
lines changed

4 files changed

+128
-149
lines changed

Framework/Core/include/Framework/ASoA.h

Lines changed: 22 additions & 40 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-
size_t hash = 0;
409-
std::span<TableRef const> refs;
408+
uint32_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,6 +1293,9 @@ 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+
12961299
template <typename T>
12971300
concept with_originals = requires {
12981301
T::originals.size();
@@ -2724,7 +2727,7 @@ consteval auto getIndexTargets()
27242727
return !(*mColumnIterator).empty(); \
27252728
} \
27262729
\
2727-
template <typename T> \
2730+
template <soa::is_table T> \
27282731
auto _Getter_##_as() const \
27292732
{ \
27302733
if (O2_BUILTIN_UNLIKELY(mBinding.ptr == nullptr)) { \
@@ -2734,10 +2737,15 @@ consteval auto getIndexTargets()
27342737
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
27352738
o2::soa::dereferenceWithWrongType(#_Getter_, #_Table_); \
27362739
} \
2737-
return getIterators<T>(); \
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; \
27382746
} \
27392747
\
2740-
template <typename T> \
2748+
template <soa::is_filtered_table T> \
27412749
auto filtered_##_Getter_##_as() const \
27422750
{ \
27432751
if (O2_BUILTIN_UNLIKELY(mBinding.ptr == nullptr)) { \
@@ -2747,35 +2755,15 @@ consteval auto getIndexTargets()
27472755
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
27482756
o2::soa::dereferenceWithWrongType(#_Getter_, #_Table_); \
27492757
} \
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)); \
2759-
} \
2760-
return result; \
2761-
} \
2762-
\
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-
} \
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)); \
27732764
} \
2774-
return result; \
2775-
} else { \
2776-
static_assert(o2::framework::always_static_assert_v<T>, "T is not a Filtered type"); \
27772765
} \
2778-
return {}; \
2766+
return result; \
27792767
} \
27802768
\
27812769
auto _Getter_() const \
@@ -3090,15 +3078,9 @@ consteval auto getIndexTargets()
30903078
if (O2_BUILTIN_UNLIKELY(t == nullptr)) { \
30913079
o2::soa::dereferenceWithWrongType(#_Getter_, "self"); \
30923080
} \
3093-
return getIterators<T>(); \
3094-
} \
3095-
\
3096-
template <typename T> \
3097-
auto getIterators() const \
3098-
{ \
30993081
auto result = std::vector<typename T::unfiltered_iterator>(); \
31003082
for (auto& i : *mColumnIterator) { \
3101-
result.push_back(mBinding.get<T>()->rawIteratorAt(i)); \
3083+
result.push_back(t->rawIteratorAt(i)); \
31023084
} \
31033085
return result; \
31043086
} \

Framework/Core/include/Framework/AnalysisManagers.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -534,12 +534,6 @@ 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-
543537
template <typename T>
544538
bool initializeCache(ProcessingContext&, T&)
545539
{

0 commit comments

Comments
 (0)