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>

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::@4681::dynamic_with_common_getter
 
concept  o2::soa::row_helpers::@4681::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 2281 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 2287 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 2695 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 2696 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 2694 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 2544 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 2357 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_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_, o2::framework::TypeIdHelpers::uniqueId<_Name_>(), \
o2::framework::expressions::selectArrowType<MAKEINT(_Size_)>() }
#define MAKEINT(_Size_)
Definition ASoA.h:2327
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
VectorOfTObjectPtrs other

Definition at line 2329 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 2322 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_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_, o2::framework::TypeIdHelpers::uniqueId<_Name_>(), \
o2::framework::expressions::selectArrowType<_Type_>() }
An expression tree node corresponding to a column binding.

Definition at line 2293 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 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_, o2::framework::TypeIdHelpers::uniqueId<_Name_>(), \
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 2401 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:276

Definition at line 3164 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 3142 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:3007
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_,...)
Definition ASoA.h:3092
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
Definition ASoA.h:2322
std::pair< double, double > Point
GLint GLenum GLint x
Definition glcorearb.h:403
GLint y
Definition glcorearb.h:270

Definition at line 3007 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 2396 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 2362 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 3134 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 3113 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 3138 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 2777 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 2778 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 2776 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 2699 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 3192 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 3195 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 3201 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:264
consteval auto mergeOriginals()
Definition ASoA.h:144
Base type for table metadata.
Definition ASoA.h:213

Definition at line 3168 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 3198 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 2977 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 2903 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 2976 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 2838 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 2781 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 2837 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 2901 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 2840 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 2900 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 2540 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 2541 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 2539 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 2458 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 3078 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 3092 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 3087 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:3059

Definition at line 3083 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 3068 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 3059 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 3062 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 3110 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 3100 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 3095 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 2327 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 276 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 284 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 2453 of file ASoA.h.