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::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::@4669::dynamic_with_common_getter
 
concept  o2::soa::row_helpers::@4669::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_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_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 2273 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 2279 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 2655 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 2656 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 2654 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 2504 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 2349 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:2319
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
VectorOfTObjectPtrs other

Definition at line 2321 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 2314 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 2285 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:2967
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_,...)
Definition ASoA.h:3052
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
Definition ASoA.h:2314
std::pair< double, double > Point
GLint GLenum GLint x
Definition glcorearb.h:403
GLint y
Definition glcorearb.h:270

Definition at line 2967 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 2388 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 supplied C++ expression.

Definition at line 2354 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__)
#define O2HASH(_Str_)
Pre-declare Hash specialization for a generic string.
Definition ASoA.h:271

Definition at line 3094 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>>;
GLsizei GLenum * sources
Definition glcorearb.h:2516

Definition at line 3073 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 3098 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 2737 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 2738 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 2736 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 2659 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 3126 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 3129 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 3135 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:259
consteval auto mergeOriginals()
Definition ASoA.h:144
Base type for table metadata.
Definition ASoA.h:208

Definition at line 3102 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 3132 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 2937 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 2863 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 2936 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 2798 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 2741 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 2797 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 2861 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 2800 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 2860 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 2500 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 2501 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 2499 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 2418 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 3038 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 3052 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 3047 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:3019

Definition at line 3043 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 3028 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 3019 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 3022 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 3070 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 3060 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 3055 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 2319 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 271 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 279 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 2413 of file ASoA.h.