Project
Loading...
Searching...
No Matches
ASoA.h File Reference
#include "Framework/Pack.h"
#include "Framework/FunctionalHelpers.h"
#include "Headers/DataHeader.h"
#include "Headers/DataHeaderHelpers.h"
#include "Framework/CompilerBuiltins.h"
#include "Framework/Traits.h"
#include "Framework/Expressions.h"
#include "Framework/ArrowTypes.h"
#include "Framework/ArrowTableSlicingCache.h"
#include "Framework/SliceCache.h"
#include "Framework/VariantHelpers.h"
#include <arrow/table.h>
#include <arrow/array.h>
#include <arrow/util/config.h>
#include <gandiva/selection_vector.h>
#include <array>
#include <cassert>
#include <fmt/format.h>
#include <concepts>
#include <cstring>
#include <gsl/span>
#include <limits>
#include <ranges>

Go to the source code of this file.

Classes

struct  o2::soa::TableRef
 Generic identifier for a table type. More...
 
struct  o2::aod::TableMetadata< D, Cs >
 Base type for table metadata. More...
 
struct  o2::aod::MetadataTrait< D >
 
struct  o2::aod::Hash< H >
 
struct  o2::soa::Binding
 Type-checking index column binding. More...
 
struct  o2::soa::EquivalentIndex< B, E >
 
struct  o2::soa::EquivalentIndexNG< A, B >
 
struct  o2::soa::Chunked
 
struct  o2::soa::Flat
 
struct  o2::soa::unwrap< T >
 unwrapper More...
 
struct  o2::soa::unwrap< std::vector< T > >
 
struct  o2::soa::unwrap< bool >
 
class  o2::soa::ColumnIterator< T, ChunkingPolicy >
 
struct  o2::soa::Column< T, INHERIT >
 
struct  o2::soa::DynamicColumn< F, INHERIT >
 
struct  o2::soa::IndexColumn< INHERIT >
 
struct  o2::soa::MarkerColumn< INHERIT >
 
struct  o2::soa::Marker< M >
 
struct  o2::soa::Index< START, END >
 
struct  o2::soa::IndexPolicyBase
 
struct  o2::soa::RowViewSentinel
 
struct  o2::soa::FilteredIndexPolicy
 
struct  o2::soa::DefaultIndexPolicy
 
struct  o2::soa::ColumnDataHolder< C >
 
struct  o2::soa::TableIterator< D, O, IP, C >
 
struct  o2::soa::ArrowHelpers
 
struct  o2::framework::PreslicePolicyBase
 
struct  o2::framework::PreslicePolicySorted
 
struct  o2::framework::PreslicePolicyGeneral
 
struct  o2::framework::PresliceBase< T, Policy, OPT >
 
class  o2::soa::Table< L, D, O, Ts >
 
struct  o2::soa::Table< L, D, O, Ts >::TableIteratorBase< IP, Parent, T >
 
struct  o2::soa::JoinFull< D, Ts >
 
struct  o2::soa::Concat< Ts >
 
class  o2::soa::FilteredBase< T >
 
class  o2::soa::Filtered< T >
 
class  o2::soa::Filtered< Filtered< T > >
 
struct  o2::soa::IndexTable< L, D, O, Key, H, Ts >
 
struct  o2::soa::SmallGroupsBase< T, APPLY >
 

Namespaces

namespace  o2
 a couple of static helper functions to create timestamp values for CCDB queries or override obsolete objects
 
namespace  o2::framework
 Defining PrimaryVertex explicitly as messageable.
 
namespace  o2::soa
 
namespace  o2::aod
 
namespace  o2::soa::row_helpers
 

Concepts

concept  o2::soa::not_void
 
concept  o2::soa::is_persistent_column
 column identification concepts
 
concept  o2::soa::is_self_index_column
 
concept  o2::soa::is_index_column
 
concept  o2::aod::is_aod_hash
 hash identification concepts
 
concept  o2::aod::is_origin_hash
 
concept  o2::soa::has_parent_t
 
concept  o2::soa::is_metadata
 
concept  o2::soa::is_metadata_trait
 
concept  o2::soa::has_metadata
 
concept  o2::soa::has_extension
 
concept  o2::soa::has_configurable_extension
 
concept  o2::soa::is_spawnable_column
 
concept  o2::soa::is_indexing_column
 
concept  o2::soa::is_dynamic_column
 
concept  o2::soa::is_marker_column
 
concept  o2::soa::is_column
 
concept  o2::soa::is_table
 
concept  o2::soa::can_bind
 
concept  o2::soa::has_index
 
concept  o2::soa::is_iterator
 Helper to check if a type T is an iterator.
 
concept  o2::soa::with_originals
 
concept  o2::soa::with_sources
 
concept  o2::soa::with_base_table
 
concept  o2::soa::is_index_table
 
concept  o2::framework::is_preslice
 
concept  o2::soa::has_filtered_policy
 
concept  o2::soa::is_filtered_iterator
 
concept  o2::soa::is_filtered_table
 
concept  o2::soa::is_filtered
 
concept  o2::soa::is_not_filtered_table
 
concept  o2::soa::row_helpers::@4696::dynamic_with_common_getter
 
concept  o2::soa::row_helpers::@4696::persistent_with_common_getter
 
concept  o2::soa::is_join
 
concept  o2::soa::is_smallgroups
 

Macros

#define O2HASH(_Str_)
 Pre-declare Hash specialization for a generic string.
 
#define O2ORIGIN(_Str_)
 Pre-declare Hash specialization for an origin string.
 
#define DECLARE_EQUIVALENT_FOR_INDEX(_Base_, _Equiv_)
 
#define DECLARE_EQUIVALENT_FOR_INDEX_NG(_Base_, _Equiv_)
 
#define DECLARE_SOA_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_)
 
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)    DECLARE_SOA_COLUMN_FULL(_Name_, _Getter_, _Type_, "f" #_Name_)
 
#define MAKEINT(_Size_)   uint##_Size_##_t
 
#define DECLARE_SOA_BITMAP_COLUMN_FULL(_Name_, _Getter_, _Size_, _Label_)
 
#define DECLARE_SOA_BITMAP_COLUMN(_Name_, _Getter_, _Size_)    DECLARE_SOA_BITMAP_COLUMN_FULL(_Name_, _Getter_, _Size_, "f" #_Name_)
 
#define DECLARE_SOA_EXPRESSION_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_, _Expression_)
 
#define DECLARE_SOA_EXPRESSION_COLUMN(_Name_, _Getter_, _Type_, _Expression_)    DECLARE_SOA_EXPRESSION_COLUMN_FULL(_Name_, _Getter_, _Type_, "f" #_Name_, _Expression_);
 
#define DECLARE_SOA_CONFIGURABLE_EXPRESSION_COLUMN(_Name_, _Getter_, _Type_, _Label_)
 
#define DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, _Label_, _Suffix_)
 
#define DECLARE_SOA_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Table_, _Suffix_)   DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)
 
#define DECLARE_SOA_SLICE_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")
 
#define DECLARE_SOA_SLICE_INDEX_COLUMN_CUSTOM(_Name_, _Getter_, _Label_)   DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")
 
#define DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, _Label_, _Suffix_)
 ARRAY.
 
#define DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Table_, _Suffix_)   DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)
 
#define DECLARE_SOA_ARRAY_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")
 
#define DECLARE_SOA_ARRAY_INDEX_COLUMN_CUSTOM(_Name_, _Getter_, _Label_)   DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")
 
#define DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, _Label_, _Suffix_)
 NORMAL.
 
#define DECLARE_SOA_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Table_, _Suffix_)   DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)
 
#define DECLARE_SOA_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")
 
#define DECLARE_SOA_INDEX_COLUMN_CUSTOM(_Name_, _Getter_, _Label_)   DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")
 
#define DECLARE_SOA_SELF_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, _IndexTarget_)
 SELF.
 
#define DECLARE_SOA_SELF_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_)   DECLARE_SOA_SELF_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)
 
#define DECLARE_SOA_SELF_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_SELF_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, #_Name_)
 
#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, _IndexTarget_)
 SELF SLICE.
 
#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_)   DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)
 
#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, "_" #_Name_)
 
#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, _IndexTarget_)
 SELF ARRAY.
 
#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_)   DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)
 
#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(_Name_, _Getter_)   DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, "_" #_Name_)
 
#define DECLARE_SOA_DYNAMIC_COLUMN(_Name_, _Getter_, ...)
 
#define DECLARE_SOA_TABLE_METADATA(_Name_, _Desc_, _Version_, ...)    using _Name_##Metadata = TableMetadata<Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__>;
 
#define DECLARE_SOA_TABLE_METADATA_TRAIT(_Name_, _Desc_, _Version_)
 
#define DECLARE_SOA_TABLE_FULL_VERSIONED_(_Name_, _Label_, _Origin_, _Desc_, _Version_)
 
#define DECLARE_SOA_STAGE(_Name_, _Origin_, _Desc_, _Version_)
 
#define DECLARE_SOA_TABLE_FULL_VERSIONED(_Name_, _Label_, _Origin_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_TABLE_FULL(_Name_, _Label_, _Origin_, _Desc_, ...)
 
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_, ...)    DECLARE_SOA_TABLE_FULL(_Name_, #_Name_, _Origin_, _Desc_, __VA_ARGS__)
 
#define DECLARE_SOA_TABLE_VERSIONED(_Name_, _Origin_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_TABLE_STAGED_VERSIONED(_BaseName_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_TABLE_STAGED(_BaseName_, _Desc_, ...)    DECLARE_SOA_TABLE_STAGED_VERSIONED(_BaseName_, _Desc_, 0, __VA_ARGS__);
 
#define DECLARE_SOA_EXTENDED_TABLE_FULL(_Name_, _Label_, _OriginalTable_, _Origin_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_EXTENDED_TABLE(_Name_, _Table_, _Description_, _Version_, ...)
 
#define DECLARE_SOA_EXTENDED_TABLE_USER(_Name_, _Table_, _Description_, ...)
 
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_FULL(_Name_, _Label_, _OriginalTable_, _Origin_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE(_Name_, _Table_, _Description_, ...)
 
#define DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, _Origin_, _Version_, _Desc_, _Exclusive_, ...)
 
#define DECLARE_SOA_INDEX_TABLE(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "IDX", 0, _Description_, false, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "IDX", 0, _Description_, true, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_USER(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "AOD", 0, _Description_, false, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "AOD", 0, _Description_, true, __VA_ARGS__)
 

Typedefs

template<typename C >
using o2::soa::is_persistent_column_t = std::conditional_t< is_persistent_column< C >, std::true_type, std::false_type >
 
template<typename C >
using o2::soa::is_external_index_t = typename std::conditional_t< is_index_column< C >, std::true_type, std::false_type >
 
template<typename C >
using o2::soa::is_self_index_t = typename std::conditional_t< is_self_index_column< C >, std::true_type, std::false_type >
 
using o2::soa::SelectionVector = std::vector< int64_t >
 
template<typename T >
using o2::soa::unwrap_t = typename unwrap< T >::type
 
template<typename T >
using o2::soa::is_dynamic_t = std::conditional_t< is_dynamic_column< T >, std::true_type, std::false_type >
 
template<typename T >
using o2::soa::is_indexing_t = std::conditional_t< is_indexing_column< T >, std::true_type, std::false_type >
 
template<typename T , typename B >
using o2::soa::is_binding_compatible = std::conditional_t< is_binding_compatible_v< T, typename B::binding_t >(), std::true_type, std::false_type >
 
template<typename T >
using o2::framework::PresliceUnsorted = PresliceBase< T, PreslicePolicyGeneral, false >
 
template<typename T >
using o2::framework::PresliceUnsortedOptional = PresliceBase< T, PreslicePolicyGeneral, true >
 
template<typename T >
using o2::framework::Preslice = PresliceBase< T, PreslicePolicySorted, false >
 
template<typename T >
using o2::framework::PresliceOptional = PresliceBase< T, PreslicePolicySorted, true >
 
template<uint32_t D, soa::is_column... C>
using o2::soa::InPlaceTable = Table< o2::aod::Hash<"TEST"_h >, o2::aod::Hash< D >, o2::aod::Hash<"TEST"_h >, C... >
 
template<typename... Ts>
using o2::soa::Join = JoinFull< o2::aod::Hash<"JOIN/0"_h >, Ts... >
 
template<typename T >
using o2::soa::SmallGroups = SmallGroupsBase< T, true >
 
template<typename T >
using o2::soa::SmallGroupsUnfiltered = SmallGroupsBase< T, false >
 

Functions

std::string o2::framework::cutString (std::string &&str)
 
std::string o2::framework::strToUpper (std::string &&str)
 
void o2::soa::accessingInvalidIndexFor (const char *getter)
 
void o2::soa::dereferenceWithWrongType (const char *getter, const char *target)
 
void o2::soa::missingFilterDeclaration (int hash, int ai)
 
void o2::soa::notBoundTable (const char *tableName)
 
template<size_t N1, size_t N2, std::array< TableRef, N1 > ar1, std::array< TableRef, N2 > ar2>
consteval auto o2::soa::merge ()
 Helpers to manipulate TableRef arrays.
 
template<size_t N1, size_t N2, std::array< TableRef, N1 > ar1, std::array< TableRef, N2 > ar2, typename L >
consteval auto o2::soa::merge_if (L l)
 
template<size_t N, std::array< TableRef, N > ar, typename L >
consteval auto o2::soa::remove_if (L l)
 
template<size_t N1, size_t N2, std::array< TableRef, N1 > ar1, std::array< TableRef, N2 > ar2>
consteval auto o2::soa::intersect ()
 
template<typename T , typename... Ts>
requires (sizeof...(Ts) == 1)
consteval auto o2::soa::mergeOriginals ()
 
template<typename T , typename... Ts>
requires (sizeof...(Ts) > 1)
consteval auto o2::soa::mergeOriginals ()
 
template<typename T , typename... Ts>
requires (sizeof...(Ts) == 1)
consteval auto o2::soa::intersectOriginals ()
 
template<typename T , typename... Ts>
requires (sizeof...(Ts) > 1)
consteval auto o2::soa::intersectOriginals ()
 
template<size_t N, std::array< soa::TableRef, N > ar, typename Key >
consteval auto o2::aod::filterForKey ()
 Filter TableRef array for compatibility with Key table.
 
template<soa::TableRef R>
consteval const charo2::aod::label ()
 
template<soa::TableRef R>
consteval const charo2::aod::origin_str ()
 
template<soa::TableRef R>
consteval header::DataOrigin o2::aod::origin ()
 
template<soa::TableRef R>
consteval const charo2::aod::signature ()
 
template<typename... C>
auto o2::soa::createFieldsFromColumns (framework::pack< C... >)
 
template<size_t N1, std::array< TableRef, N1 > os1, size_t N2, std::array< TableRef, N2 > os2>
consteval bool o2::soa::is_compatible ()
 
template<with_originals T, with_originals B>
consteval bool o2::soa::is_binding_compatible_v ()
 
void o2::soa::notFoundColumn (const char *label, const char *key)
 
void o2::soa::missingOptionalPreslice (const char *label, const char *key)
 
SelectionVector o2::soa::selectionToVector (gandiva::Selection const &sel)
 
template<typename T , typename C , typename Policy , bool OPT>
requires std::same_as<Policy, framework::PreslicePolicySorted> && (o2::soa::is_binding_compatible_v<C, T>())
auto o2::soa::doSliceBy (T const *table, o2::framework::PresliceBase< C, Policy, OPT > const &container, int value)
 
template<soa::is_filtered_table T>
auto o2::soa::doSliceByHelper (T const *table, gsl::span< const int64_t > const &selection)
 
template<soa::is_table T>
requires (!soa::is_filtered_table<T>)
auto o2::soa::doSliceByHelper (T const *table, gsl::span< const int64_t > const &selection)
 
template<typename T , typename C , typename Policy , bool OPT>
requires std::same_as<Policy, framework::PreslicePolicyGeneral> && (o2::soa::is_binding_compatible_v<C, T>())
auto o2::soa::doSliceBy (T const *table, o2::framework::PresliceBase< C, Policy, OPT > const &container, int value)
 
SelectionVector o2::soa::sliceSelection (gsl::span< int64_t const > const &mSelectedRows, int64_t nrows, uint64_t offset)
 
template<soa::is_filtered_table T>
auto o2::soa::prepareFilteredSlice (T const *table, std::shared_ptr< arrow::Table > slice, uint64_t offset)
 
template<soa::is_filtered_table T, typename C , bool OPT>
requires (o2::soa::is_binding_compatible_v<C, T>())
auto o2::soa::doFilteredSliceBy (T const *table, o2::framework::PresliceBase< C, framework::PreslicePolicySorted, OPT > const &container, int value)
 
template<typename T >
auto o2::soa::doSliceByCached (T const *table, framework::expressions::BindingNode const &node, int value, o2::framework::SliceCache &cache)
 
template<typename T >
auto o2::soa::doFilteredSliceByCached (T const *table, framework::expressions::BindingNode const &node, int value, o2::framework::SliceCache &cache)
 
template<typename T >
auto o2::soa::doSliceByCachedUnsorted (T const *table, framework::expressions::BindingNode const &node, int value, o2::framework::SliceCache &cache)
 
template<with_originals T>
auto o2::soa::select (T const &t, framework::expressions::Filter const &f)
 
arrow::ChunkedArray * o2::soa::getIndexFromLabel (arrow::Table *table, std::string_view label)
 
template<typename D , typename O , typename IP , typename... C>
consteval auto o2::soa::base_iter (framework::pack< C... > &&) -> TableIterator< D, O, IP, C... >
 
template<TableRef ref, typename... Ts>
requires ((sizeof...(Ts) > 0) && (soa::is_column<Ts> && ...))
consteval auto o2::soa::getColumns ()
 
template<TableRef ref, typename... Ts>
requires ((sizeof...(Ts) > 0) && !(soa::is_column<Ts> || ...) && (ref.origin_hash == "CONC"_h))
consteval auto o2::soa::getColumns ()
 
template<TableRef ref, typename... Ts>
requires ((sizeof...(Ts) > 0) && !(soa::is_column<Ts> || ...) && (ref.origin_hash != "CONC"_h))
consteval auto o2::soa::getColumns ()
 
template<TableRef ref, typename... Ts>
requires (sizeof...(Ts) == 0 && soa::has_metadata<aod::MetadataTrait<o2::aod::Hash<ref.desc_hash>>>)
consteval auto o2::soa::getColumns ()
 
template<TableRef ref, typename... Ts>
requires ((sizeof...(Ts) == 0) || (o2::soa::is_column<Ts> && ...))
consteval auto o2::soa::computeOriginals ()
 
template<TableRef ref, typename... Ts>
requires ((sizeof...(Ts) > 0) && (!o2::soa::is_column<Ts> || ...))
consteval auto o2::soa::computeOriginals ()
 
void o2::soa::getterNotFound (const char *targetColumnLabel)
 
void o2::soa::emptyColumnLabel ()
 
template<soa::is_persistent_column... Cs>
std::array< arrow::ChunkedArray *, sizeof...(Cs)> o2::soa::row_helpers::getArrowColumns (arrow::Table *table, framework::pack< Cs... >)
 
template<soa::is_persistent_column... Cs>
std::array< std::shared_ptr< arrow::Array >, sizeof...(Cs)> o2::soa::row_helpers::getChunks (arrow::Table *table, framework::pack< Cs... >, uint64_t ci)
 
template<typename T , soa::is_persistent_column C>
C::type o2::soa::row_helpers::getSingleRowData (arrow::Table *table, T &rowIterator, uint64_t ci=std::numeric_limits< uint64_t >::max(), uint64_t ai=std::numeric_limits< uint64_t >::max(), uint64_t globalIndex=std::numeric_limits< uint64_t >::max())
 
template<typename T , typename... Cs>
std::tuple< typename Cs::type... > o2::soa::row_helpers::getRowData (arrow::Table *table, T rowIterator, uint64_t ci=std::numeric_limits< uint64_t >::max(), uint64_t ai=std::numeric_limits< uint64_t >::max(), uint64_t globalIndex=std::numeric_limits< uint64_t >::max())
 
template<typename R , typename T >
ColumnGetterFunction< R, typename T::iterator > o2::soa::row_helpers::getColumnGetterByLabel (const std::string_view &targetColumnLabel)
 
 o2::aod::O2ORIGIN ("AOD")
 
 o2::aod::O2ORIGIN ("AOD1")
 
 o2::aod::O2ORIGIN ("AOD2")
 
 o2::aod::O2ORIGIN ("DYN")
 
 o2::aod::O2ORIGIN ("IDX")
 
 o2::aod::O2ORIGIN ("JOIN")
 
 o2::aod::O2HASH ("JOIN/0")
 
 o2::aod::O2ORIGIN ("CONC")
 
 o2::aod::O2HASH ("CONC/0")
 
 o2::aod::O2ORIGIN ("TEST")
 
 o2::aod::O2HASH ("TEST/0")
 
template<o2::soa::is_table T>
consteval auto getIndexTargets ()
 SLICE.
 
template<typename... Ts>
constexpr auto o2::soa::join (Ts const &... t)
 
template<typename... Ts>
constexpr auto o2::soa::concat (Ts const &... t)
 

Variables

template<typename C >
constexpr bool o2::soa::is_persistent_v = is_persistent_column<C>
 
template<typename B , typename E >
constexpr bool o2::soa::is_index_equivalent_v = EquivalentIndex<B, E>::value || EquivalentIndex<E, B>::value
 
template<aod::is_aod_hash A, aod::is_aod_hash B>
constexpr bool o2::soa::is_ng_index_equivalent_v = EquivalentIndexNG<A, B>::value || EquivalentIndexNG<B, A>::value
 
template<typename T >
constexpr bool o2::soa::is_soa_filtered_v = is_filtered_table<T>
 
template<typename T >
constexpr bool o2::soa::is_soa_join_v = is_join<T>
 

Macro Definition Documentation

◆ DECLARE_EQUIVALENT_FOR_INDEX

#define DECLARE_EQUIVALENT_FOR_INDEX (   _Base_,
  _Equiv_ 
)
Value:
template <> \
struct EquivalentIndexNG<o2::aod::Hash<_Base_::ref.desc_hash>, o2::aod::Hash<_Equiv_::ref.desc_hash>> { \
constexpr static bool value = true; \
}
GLsizei const GLfloat * value
Definition glcorearb.h:819
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...

Definition at line 2296 of file ASoA.h.

◆ DECLARE_EQUIVALENT_FOR_INDEX_NG

#define DECLARE_EQUIVALENT_FOR_INDEX_NG (   _Base_,
  _Equiv_ 
)
Value:
template <> \
struct EquivalentIndexNG<o2::aod::Hash<_Base_ ""_h>, o2::aod::Hash<_Equiv_ ""_h>> { \
constexpr static bool value = true; \
}

Definition at line 2302 of file ASoA.h.

◆ DECLARE_SOA_ARRAY_INDEX_COLUMN

#define DECLARE_SOA_ARRAY_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")

Definition at line 2712 of file ASoA.h.

◆ DECLARE_SOA_ARRAY_INDEX_COLUMN_CUSTOM

#define DECLARE_SOA_ARRAY_INDEX_COLUMN_CUSTOM (   _Name_,
  _Getter_,
  _Label_ 
)    DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")

Definition at line 2713 of file ASoA.h.

◆ DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL

#define DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Suffix_ 
)    DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)

Definition at line 2711 of file ASoA.h.

◆ DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM

#define DECLARE_SOA_ARRAY_INDEX_COLUMN_FULL_CUSTOM (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Label_,
  _Suffix_ 
)

ARRAY.

Definition at line 2560 of file ASoA.h.

◆ DECLARE_SOA_BITMAP_COLUMN

#define DECLARE_SOA_BITMAP_COLUMN (   _Name_,
  _Getter_,
  _Size_ 
)     DECLARE_SOA_BITMAP_COLUMN_FULL(_Name_, _Getter_, _Size_, "f" #_Name_)

Definition at line 2372 of file ASoA.h.

◆ DECLARE_SOA_BITMAP_COLUMN_FULL

#define DECLARE_SOA_BITMAP_COLUMN_FULL (   _Name_,
  _Getter_,
  _Size_,
  _Label_ 
)
Value:
struct _Name_ : o2::soa::Column<MAKEINT(_Size_), _Name_> { \
static constexpr const char* mLabel = _Label_; \
static constexpr const uint32_t hash = crc32(namespace_prefix<_Name_>(), std::string_view{#_Getter_}); \
static_assert(!((*(mLabel + 1) == 'I' && *(mLabel + 2) == 'n' && *(mLabel + 3) == 'd' && *(mLabel + 4) == 'e' && *(mLabel + 5) == 'x')), "Index is not a valid column name"); \
using base = o2::soa::Column<MAKEINT(_Size_), _Name_>; \
using type = MAKEINT(_Size_); \
_Name_(arrow::ChunkedArray const* column) \
{ \
} \
\
_Name_() = default; \
_Name_(_Name_ const& other) = default; \
_Name_& operator=(_Name_ const& other) = default; \
\
decltype(auto) _Getter_##_raw() const \
{ \
return *mColumnIterator; \
} \
\
bool _Getter_##_bit(int bit) const \
{ \
return (*mColumnIterator & (static_cast<type>(1) << bit)) >> bit; \
} \
}; \
[[maybe_unused]] static constexpr o2::framework::expressions::BindingNode _Getter_ { _Label_, _Name_::hash, o2::framework::expressions::selectArrowType<MAKEINT(_Size_)>() }
#define MAKEINT(_Size_)
Definition ASoA.h:2342
consteval uint32_t crc32(char const *str, int length)
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
VectorOfTObjectPtrs other

Definition at line 2344 of file ASoA.h.

◆ DECLARE_SOA_COLUMN

#define DECLARE_SOA_COLUMN (   _Name_,
  _Getter_,
  _Type_ 
)     DECLARE_SOA_COLUMN_FULL(_Name_, _Getter_, _Type_, "f" #_Name_)

Definition at line 2337 of file ASoA.h.

◆ DECLARE_SOA_COLUMN_FULL

#define DECLARE_SOA_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Label_ 
)
Value:
struct _Name_ : o2::soa::Column<_Type_, _Name_> { \
static constexpr const char* mLabel = _Label_; \
static constexpr const uint32_t hash = crc32(namespace_prefix<_Name_>(), std::string_view{#_Getter_}); \
static_assert(!((*(mLabel + 1) == 'I' && *(mLabel + 2) == 'n' && *(mLabel + 3) == 'd' && *(mLabel + 4) == 'e' && *(mLabel + 5) == 'x')), "Index is not a valid column name"); \
using type = _Type_; \
using column_t = _Name_; \
_Name_(arrow::ChunkedArray const* column) \
{ \
} \
\
_Name_() = default; \
_Name_(_Name_ const& other) = default; \
_Name_& operator=(_Name_ const& other) = default; \
\
decltype(auto) _Getter_() const \
{ \
return *mColumnIterator; \
} \
\
decltype(auto) get() const \
{ \
return _Getter_(); \
} \
}; \
[[maybe_unused]] static constexpr o2::framework::expressions::BindingNode _Getter_ { _Label_, _Name_::hash, o2::framework::expressions::selectArrowType<_Type_>() }
An expression tree node corresponding to a column binding.

Definition at line 2308 of file ASoA.h.

◆ DECLARE_SOA_CONFIGURABLE_EXPRESSION_COLUMN

#define DECLARE_SOA_CONFIGURABLE_EXPRESSION_COLUMN (   _Name_,
  _Getter_,
  _Type_,
  _Label_ 
)
Value:
struct _Name_ : o2::soa::Column<_Type_, _Name_> { \
static constexpr const char* mLabel = _Label_; \
static constexpr const uint32_t hash = crc32(namespace_prefix<_Name_>(), std::string_view{#_Getter_}); \
static constexpr const int32_t mHash = _Label_ ""_h; \
using type = _Type_; \
using column_t = _Name_; \
using spawnable_t = std::true_type; \
_Name_(arrow::ChunkedArray const* column) \
{ \
} \
\
_Name_() = default; \
_Name_(_Name_ const& other) = default; \
_Name_& operator=(_Name_ const& other) = default; \
\
decltype(auto) _Getter_() const \
{ \
return *mColumnIterator; \
} \
\
decltype(auto) get() const \
{ \
return _Getter_(); \
} \
}; \
[[maybe_unused]] static constexpr o2::framework::expressions::BindingNode _Getter_ { _Label_, _Name_::hash, o2::framework::expressions::selectArrowType<_Type_>() }

A configurable 'expression' column. i.e. a column that can be calculated from other columns with gandiva based on dynamically supplied C++ expression or a string definition.

Definition at line 2416 of file ASoA.h.

◆ DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE

#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE (   _Name_,
  _Table_,
  _Description_,
  ... 
)
Value:
O2HASH(#_Name_ "CfgExtension"); \
DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_FULL(_Name_, #_Name_ "CfgExtension", _Table_, "AOD", "EX" _Description_, 0, __VA_ARGS__)
#define O2HASH(_Str_)
Pre-declare Hash specialization for a generic string.
Definition ASoA.h:277

Definition at line 3184 of file ASoA.h.

◆ DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_FULL

#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_FULL (   _Name_,
  _Label_,
  _OriginalTable_,
  _Origin_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
template <typename O> \
using _Name_##CfgExtensionFrom = soa::Table<o2::aod::Hash<_Label_ ""_h>, o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_##CfgExtension = _Name_##CfgExtensionFrom<o2::aod::Hash<_Origin_ ""_h>>; \
template <typename O = o2::aod::Hash<_Origin_ ""_h>> \
struct _Name_##CfgExtensionMetadataFrom : TableMetadata<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__> { \
using base_table_t = _OriginalTable_; \
using extension_table_t = _Name_##CfgExtensionFrom<O>; \
using placeholders_pack_t = framework::pack<__VA_ARGS__>; \
using configurable_t = std::true_type; \
static constexpr auto sources = _OriginalTable_::originals; \
}; \
using _Name_##CfgExtensionMetadata = _Name_##CfgExtensionMetadataFrom<o2::aod::Hash<_Origin_ ""_h>>; \
template <> \
struct MetadataTrait<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>> { \
using metadata = _Name_##CfgExtensionMetadata; \
}; \
template <typename O> \
using _Name_##From = o2::soa::JoinFull<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, _OriginalTable_, _Name_##CfgExtensionFrom<O>>; \
using _Name_ = _Name_##From<o2::aod::Hash<_Origin_ ""_h>>;
GLsizei GLenum * sources
Definition glcorearb.h:2516

Definition at line 3162 of file ASoA.h.

◆ DECLARE_SOA_DYNAMIC_COLUMN

#define DECLARE_SOA_DYNAMIC_COLUMN (   _Name_,
  _Getter_,
  ... 
)

A dynamic column is a column whose values are derived from those of other real columns. These can be used for example to provide different coordinate systems (e.g. polar, cylindrical) from a persister representation (e.g. cartesian). Name is a unique typename which will be associated with the column. Getter is a mnemonic to retrieve the value of the column in a given row. The variadic template argument (...) is used to capture a lambda or callable object which will be used to perform the transformation. Notice that the macro will define a template type Name which will have as template argument the types of the columns to be bound for the operation.

For example, let's assume you have:

namespace point {
DECLARE_SOA_COLUMN(X, x, float, "fX");
DECLARE_SOA_COLUMN(Y, y, float, "fY");
}
DECLARE_SOA_DYNAMIC_COLUMN(R2, r2, [](x, y) { return x*x + y+y; });
DECLARE_SOA_TABLE(Point, "MISC", "POINT",
X, Y, (R2<X,Y>));
#define DECLARE_SOA_DYNAMIC_COLUMN(_Name_, _Getter_,...)
Definition ASoA.h:3026
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_,...)
Definition ASoA.h:3112
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
Definition ASoA.h:2337
std::pair< double, double > Point
GLint GLenum GLint x
Definition glcorearb.h:403
GLint y
Definition glcorearb.h:270

Definition at line 3026 of file ASoA.h.

◆ DECLARE_SOA_EXPRESSION_COLUMN

#define DECLARE_SOA_EXPRESSION_COLUMN (   _Name_,
  _Getter_,
  _Type_,
  _Expression_ 
)     DECLARE_SOA_EXPRESSION_COLUMN_FULL(_Name_, _Getter_, _Type_, "f" #_Name_, _Expression_);

Definition at line 2411 of file ASoA.h.

◆ DECLARE_SOA_EXPRESSION_COLUMN_FULL

#define DECLARE_SOA_EXPRESSION_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Label_,
  _Expression_ 
)

An 'expression' column. i.e. a column that can be calculated from other columns with gandiva based on static C++ expression.

Definition at line 2377 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE

#define DECLARE_SOA_EXTENDED_TABLE (   _Name_,
  _Table_,
  _Description_,
  _Version_,
  ... 
)
Value:
O2HASH(#_Name_ "Extension"); \
DECLARE_SOA_EXTENDED_TABLE_FULL(_Name_, #_Name_ "Extension", _Table_, "DYN", _Description_, _Version_, __VA_ARGS__)

Definition at line 3154 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE_FULL

#define DECLARE_SOA_EXTENDED_TABLE_FULL (   _Name_,
  _Label_,
  _OriginalTable_,
  _Origin_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
template <typename O> \
using _Name_##ExtensionFrom = soa::Table<o2::aod::Hash<_Label_ ""_h>, o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_##Extension = _Name_##ExtensionFrom<o2::aod::Hash<_Origin_ ""_h>>; \
template <typename O = o2::aod::Hash<_Origin_ ""_h>> \
struct _Name_##ExtensionMetadataFrom : TableMetadata<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__> { \
using base_table_t = _OriginalTable_; \
using extension_table_t = _Name_##ExtensionFrom<O>; \
using expression_pack_t = framework::pack<__VA_ARGS__>; \
static constexpr auto sources = _OriginalTable_::originals; \
}; \
using _Name_##ExtensionMetadata = _Name_##ExtensionMetadataFrom<o2::aod::Hash<_Origin_ ""_h>>; \
template <> \
struct MetadataTrait<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>> { \
using metadata = _Name_##ExtensionMetadata; \
}; \
template <typename O> \
using _Name_##From = o2::soa::JoinFull<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, _OriginalTable_, _Name_##ExtensionFrom<O>>; \
using _Name_ = _Name_##From<o2::aod::Hash<_Origin_ ""_h>>;

Definition at line 3133 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE_USER

#define DECLARE_SOA_EXTENDED_TABLE_USER (   _Name_,
  _Table_,
  _Description_,
  ... 
)
Value:
O2HASH(#_Name_ "Extension"); \
DECLARE_SOA_EXTENDED_TABLE_FULL(_Name_, #_Name_ "Extension", _Table_, "AOD", "EX" _Description_, 0, __VA_ARGS__)

Definition at line 3158 of file ASoA.h.

◆ DECLARE_SOA_INDEX_COLUMN

#define DECLARE_SOA_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")

Definition at line 2794 of file ASoA.h.

◆ DECLARE_SOA_INDEX_COLUMN_CUSTOM

#define DECLARE_SOA_INDEX_COLUMN_CUSTOM (   _Name_,
  _Getter_,
  _Label_ 
)    DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")

Definition at line 2795 of file ASoA.h.

◆ DECLARE_SOA_INDEX_COLUMN_FULL

#define DECLARE_SOA_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Suffix_ 
)    DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)

Definition at line 2793 of file ASoA.h.

◆ DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM

#define DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Label_,
  _Suffix_ 
)

NORMAL.

Definition at line 2716 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE

#define DECLARE_SOA_INDEX_TABLE (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "IDX", 0, _Description_, false, __VA_ARGS__)

Definition at line 3212 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_EXCLUSIVE

#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "IDX", 0, _Description_, true, __VA_ARGS__)

Definition at line 3215 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER

#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "AOD", 0, _Description_, true, __VA_ARGS__)

Definition at line 3221 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_FULL

#define DECLARE_SOA_INDEX_TABLE_FULL (   _Name_,
  _Key_,
  _Origin_,
  _Version_,
  _Desc_,
  _Exclusive_,
  ... 
)
Value:
O2HASH(#_Name_); \
O2HASH(_Desc_ "/" #_Version_); \
template <typename O = o2::aod::Hash<_Origin_ ""_h>> \
struct _Name_##MetadataFrom : o2::aod::TableMetadata<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, soa::Index<>, __VA_ARGS__> { \
static constexpr bool exclusive = _Exclusive_; \
using Key = _Key_; \
using index_pack_t = framework::pack<__VA_ARGS__>; \
static constexpr const auto sources = []<typename... Cs>(framework::pack<Cs...>) { \
constexpr auto a = o2::soa::mergeOriginals<typename Cs::binding_t...>(); \
return o2::aod::filterForKey<a.size(), a, Key>(); \
}(framework::pack<__VA_ARGS__>{}); \
}; \
using _Name_##Metadata = _Name_##MetadataFrom<o2::aod::Hash<_Origin_ ""_h>>; \
\
template <typename O = o2::aod::Hash<_Origin_ ""_h>> \
using _Name_##From = o2::soa::IndexTable<o2::aod::Hash<#_Name_ ""_h>, o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, O, _Key_, __VA_ARGS__>; \
using _Name_ = _Name_##From<o2::aod::Hash<_Origin_ ""_h>>; \
\
template <> \
struct MetadataTrait<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>> { \
using metadata = _Name_##Metadata; \
};
o2::monitoring::tags::Key Key
GLboolean GLboolean GLboolean GLboolean a
Definition glcorearb.h:1233
consteval auto filterForKey()
Filter TableRef array for compatibility with Key table.
Definition ASoA.h:265
consteval auto mergeOriginals()
Definition ASoA.h:145
Base type for table metadata.
Definition ASoA.h:214

Definition at line 3188 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_USER

#define DECLARE_SOA_INDEX_TABLE_USER (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_FULL(_Name_, _Key_, "AOD", 0, _Description_, false, __VA_ARGS__)

Definition at line 3218 of file ASoA.h.

◆ DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN

#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, "_" #_Name_)

Definition at line 2996 of file ASoA.h.

◆ DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_COMPLETE

#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_COMPLETE (   _Name_,
  _Getter_,
  _Type_,
  _Label_,
  _IndexTarget_ 
)

SELF ARRAY.

Definition at line 2921 of file ASoA.h.

◆ DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_FULL

#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Label_ 
)    DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)

Definition at line 2995 of file ASoA.h.

◆ DECLARE_SOA_SELF_INDEX_COLUMN

#define DECLARE_SOA_SELF_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_SELF_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, #_Name_)

Definition at line 2855 of file ASoA.h.

◆ DECLARE_SOA_SELF_INDEX_COLUMN_COMPLETE

#define DECLARE_SOA_SELF_INDEX_COLUMN_COMPLETE (   _Name_,
  _Getter_,
  _Type_,
  _Label_,
  _IndexTarget_ 
)

SELF.

Definition at line 2798 of file ASoA.h.

◆ DECLARE_SOA_SELF_INDEX_COLUMN_FULL

#define DECLARE_SOA_SELF_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Label_ 
)    DECLARE_SOA_SELF_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)

Definition at line 2854 of file ASoA.h.

◆ DECLARE_SOA_SELF_SLICE_INDEX_COLUMN

#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, "_" #_Name_)

Definition at line 2919 of file ASoA.h.

◆ DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_COMPLETE

#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_COMPLETE (   _Name_,
  _Getter_,
  _Type_,
  _Label_,
  _IndexTarget_ 
)

SELF SLICE.

Definition at line 2857 of file ASoA.h.

◆ DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_FULL

#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Label_ 
)    DECLARE_SOA_SELF_SLICE_INDEX_COLUMN_COMPLETE(_Name_, _Getter_, _Type_, _Label_, void)

Definition at line 2918 of file ASoA.h.

◆ DECLARE_SOA_SLICE_INDEX_COLUMN

#define DECLARE_SOA_SLICE_INDEX_COLUMN (   _Name_,
  _Getter_ 
)    DECLARE_SOA_SLICE_INDEX_COLUMN_FULL(_Name_, _Getter_, int32_t, _Name_##s, "")

Definition at line 2556 of file ASoA.h.

◆ DECLARE_SOA_SLICE_INDEX_COLUMN_CUSTOM

#define DECLARE_SOA_SLICE_INDEX_COLUMN_CUSTOM (   _Name_,
  _Getter_,
  _Label_ 
)    DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, int32_t, _Name_##s, _Label_, "")

Definition at line 2557 of file ASoA.h.

◆ DECLARE_SOA_SLICE_INDEX_COLUMN_FULL

#define DECLARE_SOA_SLICE_INDEX_COLUMN_FULL (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Suffix_ 
)    DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM(_Name_, _Getter_, _Type_, _Table_, #_Table_, _Suffix_)

Definition at line 2555 of file ASoA.h.

◆ DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM

#define DECLARE_SOA_SLICE_INDEX_COLUMN_FULL_CUSTOM (   _Name_,
  _Getter_,
  _Type_,
  _Table_,
  _Label_,
  _Suffix_ 
)

Definition at line 2473 of file ASoA.h.

◆ DECLARE_SOA_STAGE

#define DECLARE_SOA_STAGE (   _Name_,
  _Origin_,
  _Desc_,
  _Version_ 
)
Value:
template <typename O> \
using _Name_##From = o2::soa::Table<Hash<#_Name_ ""_h>, Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_ = _Name_##From<Hash<_Origin_ ""_h>>;

Definition at line 3098 of file ASoA.h.

◆ DECLARE_SOA_TABLE

#define DECLARE_SOA_TABLE (   _Name_,
  _Origin_,
  _Desc_,
  ... 
)     DECLARE_SOA_TABLE_FULL(_Name_, #_Name_, _Origin_, _Desc_, __VA_ARGS__)

Definition at line 3112 of file ASoA.h.

◆ DECLARE_SOA_TABLE_FULL

#define DECLARE_SOA_TABLE_FULL (   _Name_,
  _Label_,
  _Origin_,
  _Desc_,
  ... 
)
Value:
O2HASH(_Label_); \
DECLARE_SOA_TABLE_METADATA(_Name_, _Desc_, 0, __VA_ARGS__); \
DECLARE_SOA_TABLE_FULL_VERSIONED_(_Name_, _Label_, _Origin_, _Desc_, 0)

Definition at line 3107 of file ASoA.h.

◆ DECLARE_SOA_TABLE_FULL_VERSIONED

#define DECLARE_SOA_TABLE_FULL_VERSIONED (   _Name_,
  _Label_,
  _Origin_,
  _Desc_,
  _Version_,
  ... 
)
Value:
DECLARE_SOA_TABLE_METADATA(_Name_, _Desc_, _Version_, __VA_ARGS__); \
DECLARE_SOA_TABLE_FULL_VERSIONED_(_Name_, _Label_, _Origin_, _Desc_, _Version_);
#define DECLARE_SOA_TABLE_METADATA(_Name_, _Desc_, _Version_,...)
Definition ASoA.h:3079

Definition at line 3103 of file ASoA.h.

◆ DECLARE_SOA_TABLE_FULL_VERSIONED_

#define DECLARE_SOA_TABLE_FULL_VERSIONED_ (   _Name_,
  _Label_,
  _Origin_,
  _Desc_,
  _Version_ 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
template <typename O> \
using _Name_##From = o2::soa::Table<Hash<_Label_ ""_h>, Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_ = _Name_##From<Hash<_Origin_ ""_h>>; \
template <> \
struct MetadataTrait<Hash<_Desc_ "/" #_Version_ ""_h>> { \
using metadata = _Name_##Metadata; \
};

Definition at line 3088 of file ASoA.h.

◆ DECLARE_SOA_TABLE_METADATA

#define DECLARE_SOA_TABLE_METADATA (   _Name_,
  _Desc_,
  _Version_,
  ... 
)     using _Name_##Metadata = TableMetadata<Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__>;

Definition at line 3079 of file ASoA.h.

◆ DECLARE_SOA_TABLE_METADATA_TRAIT

#define DECLARE_SOA_TABLE_METADATA_TRAIT (   _Name_,
  _Desc_,
  _Version_ 
)
Value:
template <> \
struct MetadataTrait<Hash<_Desc_ "/" #_Version_ ""_h>> { \
using metadata = _Name_##Metadata; \
};

Definition at line 3082 of file ASoA.h.

◆ DECLARE_SOA_TABLE_STAGED

#define DECLARE_SOA_TABLE_STAGED (   _BaseName_,
  _Desc_,
  ... 
)     DECLARE_SOA_TABLE_STAGED_VERSIONED(_BaseName_, _Desc_, 0, __VA_ARGS__);

Definition at line 3130 of file ASoA.h.

◆ DECLARE_SOA_TABLE_STAGED_VERSIONED

#define DECLARE_SOA_TABLE_STAGED_VERSIONED (   _BaseName_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
O2HASH(#_BaseName_); \
O2HASH("Stored" #_BaseName_); \
DECLARE_SOA_TABLE_METADATA(_BaseName_, _Desc_, _Version_, __VA_ARGS__); \
using Stored##_BaseName_##Metadata = _BaseName_##Metadata; \
DECLARE_SOA_TABLE_METADATA_TRAIT(_BaseName_, _Desc_, _Version_); \
DECLARE_SOA_STAGE(_BaseName_, "AOD", _Desc_, _Version_); \
DECLARE_SOA_STAGE(Stored##_BaseName_, "AOD1", _Desc_, _Version_);

Definition at line 3120 of file ASoA.h.

◆ DECLARE_SOA_TABLE_VERSIONED

#define DECLARE_SOA_TABLE_VERSIONED (   _Name_,
  _Origin_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(#_Name_); \
DECLARE_SOA_TABLE_METADATA(_Name_, _Desc_, _Version_, __VA_ARGS__); \
DECLARE_SOA_TABLE_FULL_VERSIONED_(_Name_, #_Name_, _Origin_, _Desc_, _Version_)

Definition at line 3115 of file ASoA.h.

◆ MAKEINT

#define MAKEINT (   _Size_)    uint##_Size_##_t

A 'bitmap' column, i.e. a int-based column with custom accessors to check individual bits

Definition at line 2342 of file ASoA.h.

◆ O2HASH

#define O2HASH (   _Str_)
Value:
template <> \
struct Hash<_Str_ ""_h> { \
static constexpr uint32_t hash = _Str_ ""_h; \
static constexpr char const* const str{_Str_}; \
};
const std::string str

Pre-declare Hash specialization for a generic string.

Definition at line 277 of file ASoA.h.

◆ O2ORIGIN

#define O2ORIGIN (   _Str_)
Value:
template <> \
struct Hash<_Str_ ""_h> { \
static constexpr header::DataOrigin origin{_Str_}; \
static constexpr uint32_t hash = _Str_ ""_h; \
static constexpr char const* const str{_Str_}; \
};

Pre-declare Hash specialization for an origin string.

Definition at line 285 of file ASoA.h.

Function Documentation

◆ getIndexTargets()

template<o2::soa::is_table T>
consteval auto getIndexTargets ( )

SLICE.

An index column is a column of indices to elements / of another table named Name##s. The column name will be Name##Id and will always be stored in "fIndex"#_Table_#[Suffix]. If Suffix is not empty it has to begin with _ (underscore) to make the columns identifiable for the table merging It will also have two special methods, setCurrent(...) and getCurrent(...) which allow you to set / retrieve associated table. It also exposes a getter Getter which allows you to retrieve the pointed object. Notice how in order to define an index column, the table it points to must be already declared. This is therefore only useful to express child -> parent relationships. In case one needs to go from parent to child, the only way is to either have a separate "association" with the two indices, or to use the standard grouping mechanism of AnalysisTask.

Normal index: returns iterator to a bound table Slice index: return an instance of the bound table type with a slice defined by the values in 0 and 1st elements Array index: return an array of iterators, defined by values in its elements

Definition at line 2468 of file ASoA.h.