Project
Loading...
Searching...
No Matches
ASoA.h File Reference
#include "Framework/Concepts.h"
#include "Framework/ConcreteDataMatcher.h"
#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 <fairmq/Version.h>
#include <arrow/array/array_binary.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>

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
 tracks origin in bindingKey matcher to handle the correct arguments More...
 
struct  o2::framework::PreslicePolicySorted
 
struct  o2::framework::PreslicePolicyGeneral
 
struct  o2::framework::PresliceBase< T, Policy, OPT >
 
struct  o2::framework::PresliceGroup
 
class  o2::soa::Table< L, D, O, Ts >
 
struct  o2::soa::Table< L, D, O, Ts >::TableIteratorBase< IP, Parent, T >
 
struct  o2::soa::Join< 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  fair
 
namespace  fair::mq
 
namespace  fair::mq::shmem
 
namespace  o2
 a couple of static helper functions to create timestamp values for CCDB queries or override obsolete objects
 
namespace  o2::framework
 Defining ITS Vertex explicitly as messageable.
 
namespace  o2::soa
 
namespace  o2::aod
 
namespace  o2::soa::row_helpers
 

Concepts

concept  o2::soa::needs_ptr_rec
 
concept  o2::soa::row_helpers::@4821::dynamic_with_common_getter
 
concept  o2::soa::row_helpers::@4821::persistent_with_common_getter
 
concept  o2::soa::is_a_selection
 

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_CCDB_COLUMN_FULL(_Name_, _Label_, _Getter_, _ConcreteType_, _CCDBQuery_)
 
#define DECLARE_SOA_CCDB_COLUMN(_Name_, _Getter_, _ConcreteType_, _CCDBQuery_)    DECLARE_SOA_CCDB_COLUMN_FULL(_Name_, "f" #_Name_, _Getter_, _ConcreteType_, _CCDBQuery_)
 
#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_NG(_Name_, _OriginalTable_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_EXTENDED_TABLE(_Name_, _Table_, _Description_, _Version_, ...)    DECLARE_SOA_EXTENDED_TABLE_NG(_Name_, _Table_, _Description_, _Version_, __VA_ARGS__)
 
#define DECLARE_SOA_EXTENDED_TABLE_USER(_Name_, _Table_, _Description_, ...)    DECLARE_SOA_EXTENDED_TABLE_NG(_Name_, _Table_, "EX" _Description_, 0, __VA_ARGS__)
 
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_NG(_Name_, _OriginalTable_, _Desc_, _Version_, ...)
 
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE(_Name_, _OriginalTable_, _Description_, ...)    DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_NG(_Name_, _OriginalTable_, "EX" _Description_, 0, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, _Version_, _Desc_, _Exclusive_, ...)
 
#define DECLARE_SOA_INDEX_TABLE(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, false, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, true, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_USER(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, false, __VA_ARGS__)
 
#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER(_Name_, _Key_, _Description_, ...)    DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, true, __VA_ARGS__)
 
#define DECLARE_SOA_TIMESTAMPED_TABLE_FULL(_Name_, _Label_, _TimestampSource_, _TimestampColumn_, _Version_, _Desc_, ...)
 
#define DECLARE_SOA_TIMESTAMPED_TABLE(_Name_, _TimestampSource_, _TimestampColumn_, _Version_, _Desc_, ...)
 

Typedefs

using o2::framework::PointerReconstructor = std::function< std::byte *(fair::mq::shmem::MetaHeader &&)>
 
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 , 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<soa::is_table T>
using o2::framework::PresliceUnsorted = PresliceBase< T, PreslicePolicyGeneral, false >
 
template<soa::is_table T>
using o2::framework::PresliceUnsortedOptional = PresliceBase< T, PreslicePolicyGeneral, true >
 
template<soa::is_table T>
using o2::framework::Preslice = PresliceBase< T, PreslicePolicySorted, false >
 
template<soa::is_table 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 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)
 
voido2::soa::extractCCDBPayload (char *payload, size_t size, TClass const *cl, const char *what)
 
constexpr char o2::soa::asciiToLower (char c)
 
template<typename... C>
auto o2::soa::createFieldsFromColumns (framework::pack< C... >)
 
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<soa::TableRef R>
constexpr framework::ConcreteDataMatcher o2::aod::matcher ()
 
template<size_t N, std::array< soa::TableRef, N > ar, o2::aod::is_origin_hash O>
consteval auto o2::aod::replaceOrigin ()
 Replace origins in the TableRef array.
 
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, std::span< const int64_t > const &selection)
 
template<soa::is_table T>
requires (!soa::is_filtered_table<T>)
auto o2::soa::doSliceByHelper (T const *table, std::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 (std::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, o2::soa::ArrowTableRef slice)
 
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)
 
std::function< framework::ConcreteDataMatcher(framework::ConcreteDataMatcher &&)> o2::soa::originReplacement (header::DataOrigin newOrigin)
 
template<soa::is_table T>
auto o2::soa::doSliceByCached (T const *table, framework::expressions::BindingNode const &node, int value, o2::framework::SliceCache &cache)
 
template<soa::is_filtered_table T>
auto o2::soa::doFilteredSliceByCached (T const *table, framework::expressions::BindingNode const &node, int value, o2::framework::SliceCache &cache)
 
template<soa::is_table 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<typename R , typename T , typename C >
R o2::soa::row_helpers::getColumnValue (const T &rowIterator)
 
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 ("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>
 column identification
 
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 2331 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 2337 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 2785 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 2786 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 2784 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 2648 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 2460 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 = compile_time_hash(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:2430
uint32_t hash
consteval uint32_t compile_time_hash(Ts... Vs)
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
VectorOfTObjectPtrs other

Definition at line 2432 of file ASoA.h.

◆ DECLARE_SOA_CCDB_COLUMN

#define DECLARE_SOA_CCDB_COLUMN (   _Name_,
  _Getter_,
  _ConcreteType_,
  _CCDBQuery_ 
)     DECLARE_SOA_CCDB_COLUMN_FULL(_Name_, "f" #_Name_, _Getter_, _ConcreteType_, _CCDBQuery_)

Definition at line 2422 of file ASoA.h.

◆ DECLARE_SOA_CCDB_COLUMN_FULL

#define DECLARE_SOA_CCDB_COLUMN_FULL (   _Name_,
  _Label_,
  _Getter_,
  _ConcreteType_,
  _CCDBQuery_ 
)

Definition at line 2372 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 2425 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 = compile_time_hash(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 2343 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 = compile_time_hash(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 2504 of file ASoA.h.

◆ DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE

#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE (   _Name_,
  _OriginalTable_,
  _Description_,
  ... 
)     DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_NG(_Name_, _OriginalTable_, "EX" _Description_, 0, __VA_ARGS__)

Definition at line 3265 of file ASoA.h.

◆ DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_NG

#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE_NG (   _Name_,
  _OriginalTable_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
O2HASH(#_Name_ "CfgExtension"); \
template <typename O> \
using _Name_##CfgExtensionFrom = soa::Table<o2::aod::Hash<#_Name_ "CfgExtension"_h>, o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_##CfgExtension = _Name_##CfgExtensionFrom<o2::aod::Hash<"AOD"_h>>; \
struct _Name_##CfgExtensionMetadata : TableMetadata<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__> { \
using base_table_t = _OriginalTable_; \
template <o2::aod::is_origin_hash O> \
using extension_table_t_from = _Name_##CfgExtensionFrom<O>; \
using extension_table_t = _Name_##CfgExtension; \
using placeholders_pack_t = framework::pack<__VA_ARGS__>; \
using configurable_t = std::true_type; \
static constexpr auto N = _OriginalTable_::originals.size(); \
template <o2::aod::is_origin_hash O = o2::aod::Hash<"AOD"_h>> \
static consteval auto generateSources() \
{ \
return _OriginalTable_##From<O>::originals; \
} \
}; \
template <> \
struct MetadataTrait<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>> { \
static constexpr void isMetadataTrait() {}; \
using metadata = _Name_##CfgExtensionMetadata; \
}; \
template <typename O> \
using _Name_##From = o2::soa::Join<_OriginalTable_##From<O>, _Name_##CfgExtensionFrom<O>>; \
using _Name_ = _Name_##From<o2::aod::Hash<"AOD"_h>>;
#define O2HASH(_Str_)
Pre-declare Hash specialization for a generic string.
Definition ASoA.h:299

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

Definition at line 3093 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 2499 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 2465 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE

#define DECLARE_SOA_EXTENDED_TABLE (   _Name_,
  _Table_,
  _Description_,
  _Version_,
  ... 
)     DECLARE_SOA_EXTENDED_TABLE_NG(_Name_, _Table_, _Description_, _Version_, __VA_ARGS__)

Definition at line 3230 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE_NG

#define DECLARE_SOA_EXTENDED_TABLE_NG (   _Name_,
  _OriginalTable_,
  _Desc_,
  _Version_,
  ... 
)
Value:
O2HASH(_Desc_ "/" #_Version_); \
O2HASH(#_Name_ "Extension"); \
template <typename O> \
using _Name_##ExtensionFrom = soa::Table<o2::aod::Hash<#_Name_ "Extension"_h>, o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, O>; \
using _Name_##Extension = _Name_##ExtensionFrom<o2::aod::Hash<"AOD"_h>>; \
struct _Name_##ExtensionMetadata : TableMetadata<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>, __VA_ARGS__> { \
using base_table_t = _OriginalTable_; \
template <o2::aod::is_origin_hash O> \
using extension_table_t_from = _Name_##ExtensionFrom<O>; \
using extension_table_t = _Name_##Extension; \
using expression_pack_t = framework::pack<__VA_ARGS__>; \
static constexpr auto N = _OriginalTable_::originals.size(); \
template <o2::aod::is_origin_hash O = o2::aod::Hash<"AOD"_h>> \
static consteval auto generateSources() \
{ \
return _OriginalTable_##From<O>::originals; \
} \
}; \
template <> \
struct MetadataTrait<o2::aod::Hash<_Desc_ "/" #_Version_ ""_h>> { \
static constexpr void isMetadataTrait() {}; \
using metadata = _Name_##ExtensionMetadata; \
}; \
template <typename O> \
using _Name_##From = o2::soa::Join<_OriginalTable_##From<O>, _Name_##ExtensionFrom<O>>; \
using _Name_ = _Name_##From<o2::aod::Hash<"AOD"_h>>;

Definition at line 3202 of file ASoA.h.

◆ DECLARE_SOA_EXTENDED_TABLE_USER

#define DECLARE_SOA_EXTENDED_TABLE_USER (   _Name_,
  _Table_,
  _Description_,
  ... 
)     DECLARE_SOA_EXTENDED_TABLE_NG(_Name_, _Table_, "EX" _Description_, 0, __VA_ARGS__)

Definition at line 3233 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 2867 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 2868 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 2866 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 2789 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE

#define DECLARE_SOA_INDEX_TABLE (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, false, __VA_ARGS__)

Definition at line 3301 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_EXCLUSIVE

#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, true, __VA_ARGS__)

Definition at line 3304 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER

#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE_USER (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, true, __VA_ARGS__)

Definition at line 3310 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_NG

#define DECLARE_SOA_INDEX_TABLE_NG (   _Name_,
  _Key_,
  _Version_,
  _Desc_,
  _Exclusive_,
  ... 
)

Definition at line 3268 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_USER

#define DECLARE_SOA_INDEX_TABLE_USER (   _Name_,
  _Key_,
  _Description_,
  ... 
)     DECLARE_SOA_INDEX_TABLE_NG(_Name_, _Key_, 0, _Description_, false, __VA_ARGS__)

Definition at line 3307 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 3063 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 2994 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 3062 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 2928 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 2871 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 2927 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 2992 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 2930 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 2991 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 2644 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 2645 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 2643 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 2561 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 3167 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 3181 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 3176 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:3146

Definition at line 3172 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>> { \
static constexpr void isMetadataTrait() {}; \
using metadata = _Name_##Metadata; \
};

Definition at line 3156 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 3146 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>> { \
static constexpr void isMetadataTrait() {}; \
using metadata = _Name_##Metadata; \
};

Definition at line 3149 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 3199 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 3189 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 3184 of file ASoA.h.

◆ DECLARE_SOA_TIMESTAMPED_TABLE

#define DECLARE_SOA_TIMESTAMPED_TABLE (   _Name_,
  _TimestampSource_,
  _TimestampColumn_,
  _Version_,
  _Desc_,
  ... 
)
Value:
O2HASH(#_Name_ "Timestamped"); \
DECLARE_SOA_TIMESTAMPED_TABLE_FULL(_Name_, #_Name_ "Timestamped", _TimestampSource_, _TimestampColumn_, _Version_, _Desc_, __VA_ARGS__)

Definition at line 3358 of file ASoA.h.

◆ DECLARE_SOA_TIMESTAMPED_TABLE_FULL

#define DECLARE_SOA_TIMESTAMPED_TABLE_FULL (   _Name_,
  _Label_,
  _TimestampSource_,
  _TimestampColumn_,
  _Version_,
  _Desc_,
  ... 
)

Definition at line 3318 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 2430 of file ASoA.h.

◆ O2HASH

#define O2HASH (   _Str_)
Value:
template <> \
struct Hash<_Str_ ""_h> { \
static constexpr void isHash() {}; \
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 299 of file ASoA.h.

◆ O2ORIGIN

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

Pre-declare Hash specialization for an origin string.

Definition at line 308 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 2556 of file ASoA.h.