diff --git a/Framework/Core/include/Framework/ASoA.h b/Framework/Core/include/Framework/ASoA.h index 3ab63fea856dd..929c6d00dd9b9 100644 --- a/Framework/Core/include/Framework/ASoA.h +++ b/Framework/Core/include/Framework/ASoA.h @@ -1018,7 +1018,7 @@ constexpr bool is_binding_compatible_v() } template -struct is_binding_compatible : std::conditional_t(), std::true_type, std::false_type> { +struct is_binding_compatible : std::conditional_t(), std::true_type, std::false_type> { }; //! Helper to check if a type T is an iterator @@ -1203,11 +1203,12 @@ class Table } template - inline arrow::ChunkedArray* getIndexToKey() { - if constexpr (framework::has_type_conditional_v) { - using IC = framework::pack_element_t(external_index_columns_t{}),external_index_columns_t>; + inline arrow::ChunkedArray* getIndexToKey() + { + if constexpr (framework::has_type_conditional_v) { + using IC = framework::pack_element_t(external_index_columns_t{}), external_index_columns_t>; return mColumnChunks[framework::has_type_at(persistent_columns_t{})]; - } else if constexpr (std::is_same_v) { + } else if constexpr (std::is_same_v) { return nullptr; } else { static_assert(framework::always_static_assert_v, "This table does not have an index to this type"); diff --git a/Framework/Core/include/Framework/AnalysisHelpers.h b/Framework/Core/include/Framework/AnalysisHelpers.h index 0c349c91a4382..f2f34be386c36 100644 --- a/Framework/Core/include/Framework/AnalysisHelpers.h +++ b/Framework/Core/include/Framework/AnalysisHelpers.h @@ -224,87 +224,92 @@ struct Spawns : TableTransform -inline arrow::ChunkedArray* getIndexToKey(arrow::Table* table) { - using IC = framework::pack_element_t(typename T::external_index_columns_t{}),typename T::external_index_columns_t>; - return table->column(framework::has_type_at(typename T::persistent_columns_t{})).get(); +inline arrow::ChunkedArray* getIndexToKey(arrow::Table* table) +{ + using IC = framework::pack_element_t(typename T::external_index_columns_t{}), typename T::external_index_columns_t>; + return table->column(framework::has_type_at(typename T::persistent_columns_t{})).get(); } template struct ColumnTrait { - static_assert(framework::is_base_of_template_v, "Not a column type!"); + static_assert(framework::is_base_of_template_v, "Not a column type!"); using column_t = C; - static constexpr auto listSize(){ - if constexpr (std::is_same_v>) { - return -1; - } else if constexpr (std::is_same_v) { - return 2; - } else { - return 1; - } + static constexpr auto listSize() + { + if constexpr (std::is_same_v>) { + return -1; + } else if constexpr (std::is_same_v) { + return 2; + } else { + return 1; + } } template static std::shared_ptr makeColumnBuilder(arrow::Table* table, arrow::MemoryPool* pool) { - if constexpr (!std::is_same_v) { - return std::make_shared(getIndexToKey(table), C::columnLabel(), listSize(), pool); + if constexpr (!std::is_same_v) { + return std::make_shared(getIndexToKey(table), C::columnLabel(), listSize(), pool); } else { return std::make_shared(C::columnLabel(), pool); } } }; -} +} // namespace template struct Reduction { - using type = typename std::conditional(),SelfIndexColumnBuilder,IndexColumnBuilder>::type; + using type = typename std::conditional(), SelfIndexColumnBuilder, IndexColumnBuilder>::type; }; template struct IndexBuilder { template - static auto indexBuilder(const char* label, std::vector>&& tables, framework::pack, framework::pack) + static auto indexBuilder(const char* label, std::vector>&& tables, framework::pack, framework::pack) { auto pool = arrow::default_memory_pool(); - SelfIndexColumnBuilder self{C1::columnLabel(),pool}; + SelfIndexColumnBuilder self{C1::columnLabel(), pool}; std::unique_ptr keyIndex = nullptr; int64_t counter = 0; - if constexpr (!std::is_same_v) { + if constexpr (!std::is_same_v) { keyIndex = std::make_unique(getIndexToKey(tables[0].get())); } std::array, sizeof...(Cs)> columnBuilders{ColumnTrait::template makeColumnBuilder(framework::pack{}), framework::pack>, Key>( tables[framework::has_type_at_v(framework::pack{}) + 1].get(), - pool)...}; + pool)...}; std::array finds; for (counter = 0; counter < tables[0]->num_rows(); ++counter) { auto idx = -1; - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { idx = counter; } else { idx = keyIndex->valueAt(counter); } - finds = {std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template find(idx)...}; - if constexpr (std::is_same_v) { - (std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template fill(idx),...); + finds = {std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template find(idx)...}; + if constexpr (std::is_same_v) { + (std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template fill(idx), ...); self.fill(counter); - } else if constexpr (std::is_same_v) { - if (std::none_of(finds.begin(),finds.end(),[](bool const x){ return x == false; })) { - (std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template fill(idx),...); + } else if constexpr (std::is_same_v) { + if (std::none_of(finds.begin(), finds.end(), [](bool const x) { return x == false; })) { + (std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template fill(idx), ...); self.fill(counter); } } } - std::vector> columns{self.template result(), std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template result()...}; - std::vector> fields{self.field(), std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->field()...}; + std::vector> columns{self.template result(), std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->template result()...}; + std::vector> fields{self.field(), std::static_pointer_cast::type>(columnBuilders[framework::has_type_at_v(framework::pack{})])->field()...}; auto schema = std::make_shared(fields); schema->WithMetadata( std::make_shared( diff --git a/Framework/Core/include/Framework/AnalysisManagers.h b/Framework/Core/include/Framework/AnalysisManagers.h index 089c6a7d2bf28..4ccc217cd7369 100644 --- a/Framework/Core/include/Framework/AnalysisManagers.h +++ b/Framework/Core/include/Framework/AnalysisManagers.h @@ -378,8 +378,8 @@ struct OutputManager> { static bool prepare(ProcessingContext& pc, Builds& what) { - return what.template build(what.pack(),what.originals_pack(), - extractOriginalsVector(what.originals_pack(), pc)); + return what.template build(what.pack(), what.originals_pack(), + extractOriginalsVector(what.originals_pack(), pc)); } static bool finalize(ProcessingContext& pc, Builds& what) diff --git a/Framework/Core/include/Framework/IndexBuilderHelpers.h b/Framework/Core/include/Framework/IndexBuilderHelpers.h index 779156c492f73..0e688b8d32f80 100644 --- a/Framework/Core/include/Framework/IndexBuilderHelpers.h +++ b/Framework/Core/include/Framework/IndexBuilderHelpers.h @@ -20,7 +20,8 @@ #include #include -namespace o2::framework { +namespace o2::framework +{ struct ChunkedArrayIterator { ChunkedArrayIterator(arrow::ChunkedArray* source); virtual ~ChunkedArrayIterator() {} @@ -57,7 +58,10 @@ struct SelfIndexColumnBuilder { } std::shared_ptr field() const; template - inline bool find(int) {return true;} + inline bool find(int) + { + return true; + } template inline void fill(int idx) @@ -65,14 +69,14 @@ struct SelfIndexColumnBuilder { (void)static_cast(mBuilder.get())->Append(idx); } - std::string mColumnName; std::unique_ptr mBuilder = nullptr; }; -class IndexColumnBuilder : public SelfIndexColumnBuilder, public ChunkedArrayIterator { +class IndexColumnBuilder : public SelfIndexColumnBuilder, public ChunkedArrayIterator +{ public: - IndexColumnBuilder(arrow::ChunkedArray* source, const char *name, int listSize, arrow::MemoryPool* pool); + IndexColumnBuilder(arrow::ChunkedArray* source, const char* name, int listSize, arrow::MemoryPool* pool); virtual ~IndexColumnBuilder() {} template @@ -88,7 +92,8 @@ class IndexColumnBuilder : public SelfIndexColumnBuilder, public ChunkedArrayIte } template - inline bool find(int idx) { + inline bool find(int idx) + { if constexpr (std::is_same_v>) { return findMulti(idx); } else if constexpr (std::is_same_v) { @@ -99,7 +104,8 @@ class IndexColumnBuilder : public SelfIndexColumnBuilder, public ChunkedArrayIte } template - inline void fill(int idx){ + inline void fill(int idx) + { ++mResultSize; if constexpr (std::is_same_v>) { fillMulti(idx); @@ -131,6 +137,6 @@ class IndexColumnBuilder : public SelfIndexColumnBuilder, public ChunkedArrayIte size_t mSourceSize = 0; size_t mResultSize = 0; }; -} +} // namespace o2::framework #endif // O2_FRAMEWORK_INDEXBUILDERHELPERS_H_ diff --git a/Framework/Foundation/include/Framework/Pack.h b/Framework/Foundation/include/Framework/Pack.h index fb4e822639daf..9d415efa85fd3 100644 --- a/Framework/Foundation/include/Framework/Pack.h +++ b/Framework/Foundation/include/Framework/Pack.h @@ -160,14 +160,14 @@ struct has_type> : std::disjunction...> { template inline constexpr bool has_type_v = has_type::value; -template