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::@5224::dynamic_with_common_getter
 
concept  o2::soa::row_helpers::@5224::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_, _RunDependent_, ...)
 
#define DECLARE_SOA_CCDB_COLUMN(_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_, _UniformitySource_, _UniformityColumn_, _Version_, _Desc_, ...)
 
#define DECLARE_SOA_TIMESTAMPED_TABLE(_Name_, _TimestampSource_, _TimestampColumn_, _Version_, _Desc_, ...)
 
#define DECLARE_SOA_UNIFORM_TABLE(_Name_, _TimestampSource_, _TimestampColumn_, _UniformitySource_, _UniformityColumn_, _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)
 
void * o2::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 char * o2::aod::label ()
 
template<soa::TableRef R>
consteval const char * o2::aod::origin_str ()
 
template<soa::TableRef R>
consteval header::DataOrigin o2::aod::origin ()
 
template<soa::TableRef R>
consteval const char * o2::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 ("EMB")
 
 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 2322 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 2328 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 2800 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 2801 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 2799 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 2663 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 2475 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(o2::framework::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:2445
uint32_t hash
unsigned int uint32_t
consteval uint32_t compile_time_hash(Ts... Vs)
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
VectorOfTObjectPtrs other

Definition at line 2447 of file ASoA.h.

◆ DECLARE_SOA_CCDB_COLUMN

#define DECLARE_SOA_CCDB_COLUMN (   _Name_,
  _Getter_,
  _ConcreteType_,
  _CCDBQuery_ 
)
Value:
DECLARE_SOA_CCDB_COLUMN_FULL(_Name_, "f" #_Name_, _Getter_, _ConcreteType_, _CCDBQuery_, 0, \
[](_ConcreteType_* ccdbObject) { return ccdbObject; })
#define DECLARE_SOA_CCDB_COLUMN_FULL(_Name_, _Label_, _Getter_, _ConcreteType_, _CCDBQuery_, _RunDependent_,...)
Definition ASoA.h:2363

Definition at line 2436 of file ASoA.h.

◆ DECLARE_SOA_CCDB_COLUMN_FULL

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

Definition at line 2363 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 2440 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(o2::framework::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 2334 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(o2::framework::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_>() }
configStandalone Reconstruction rec_tpc multiplier for the combined cluster track error during track following area in cm for the search of for z only used if decrease removal by when above this local occupancy rowx Shift of TPC revert cluster flag edge bit distance to edge exceeds this ZOffset for secondary multiple of radius max P of electron K BB bands crossing max P of electron p BB bands crossing max P of electron d BB bands crossing max P of electron t BB bands crossing min accepted dEdxMaxTPC of the track Additive extra cluster error for Y2 if edge flag set Additive extra cluster error for Y2 if single set Additive extra cluster error for Y2 if or single set Additive extra cluster error for Z2 if or single set Extra errors to add to track when crossing depending on addErrorsCECrossing Inner portion of y range in sector that is not used in searching for extrapolated track candidates factor2YS for track merging factor2K for track merging Margin in cm of Y position when rejecting edge clusters based on uncorrected track Y Max fraction of shared clusters for tracklet Except pad from cluster finding if total number of charges in a fragment is above this Except pad from cluster finding if number of consecutive charges in a fragment is above this Threshold where a timebin is considered disabling the noisy pad check for that pad Treat signal above this minimum as saturated Smoothing factor for the exponential Highly Ionising Particle tail filter Number of timebins to use for the averaging Add additional custom track errors when crossing relative as fraction of Do N fit passes in final fit of< 0:reject at max -n hits") AddOptionRTC(rejectIFCLowRadiusCluster, uint8_t, 1, "", 0, "Reject clusters that get the IFC mask error during refit") AddOptionRTC(dEdxTruncLow, uint8_t, 2, "", 0, "Low truncation threshold, fraction of 128") AddOptionRTC(dEdxTruncHigh, uint8_t, 77, "", 0, "High truncation threshold, fraction of 128") AddOptionRTC(extrapolationTracking, int8_t, 1, "", 0, "Enable Extrapolation Tracking(prolong tracks to adjacent sectors to find short segments)") AddOptionRTC(disableRefitAttachment, uint8_t, 0, "", 0, "Bitmask to disable certain attachment steps during refit(1:attachment, 2:propagation, 4:loop following, 8:mirroring)") AddOptionRTC(rejectionStrategy, uint8_t, o2::gpu::GPUSettings::RejectionStrategyA, "", 0, "Enable rejection of TPC clusters for compression(0=no, 1=strategy A, 2=strategy B)") AddOptionRTC(mergeLoopersAfterburner, uint8_t, 1, "", 0, "Run afterburner for additional looper merging") AddOptionRTC(compressionTypeMask, uint8_t, o2::gpu::GPUSettings::CompressionFull, "", 0, "TPC Compression mode bits(1=truncate charge/width LSB, 2=differences, 4=track-model)") AddOptionRTC(compressionSortOrder, uint8_t, o2::gpu::GPUSettings::SortTime, "", 0, "Sort order of TPC compression(0=time, 1=pad, 2=Z-time-pad, 3=Z-pad-time, 4=no sorting(use incoming order))") AddOptionRTC(sigBitsCharge, uint8_t, 4, "", 0, "Number of significant bits for TPC cluster charge in compression mode 1") AddOptionRTC(sigBitsWidth, uint8_t, 3, "", 0, "Number of significant bits for TPC cluster width in compression mode 1") AddOptionRTC(dropLoopers, uint8_t, 0, "", 0, "Drop looping tracks starting from second loop") AddOptionRTC(mergerInterpolateErrors, uint8_t, 1, "", 0, "Use interpolation instead of extrapolation for chi2 based cluster rejection") AddOptionRTC(mergerInterpolateRejectAlsoOnCurrentPosition, uint8_t, 1, "", 0, "When using mergerInterpolateErrors, reject based on chi2 twice computed with interpolated and current track position starting from NDF > mergerNonInterpolateRejectMinNDF Merge tracks accross the central electrode Enable PID response Add sub threshold clusters in TPC dEdx computation OR mask of TPC flags that will reject the cluster in alternative dEdx Reject edge clusters based on uncorrected track Y during track fit Increase decrease removal by when on this number of pads from the edge h configStandalone Reconstruction rec_trd Max chi2 for TRD tracklets to be matched to a track Chi2 cut for strict matching mode Number of sigmas for ITS TPC track time error estimate Addition to search road around track prolongation along Y in cm Optimal tracklet rphi resolution in maximum chi2 per attached tracklet for TRD tracks take into account the full likelihood of the slope including exponential tails Tracks with less attached tracklets are discarded after the tracking Post trigger Pile up integration time in BCs fits all iterations but the last one in projections Use material lookup table for TPC refit Apply workarounds to avoid cyclic merge should not be needed tpc dyn configStandalone Processing proc_rtc Replace constant variables static by constexpr expressions Compile RTC in deterministic with NO_FAST_MATH flags and GPUCA_DETERMINISTIC_MODE define Use RTC to optimize GPU code h configStandalone Processing proc_rtctech Use a file lock to serialize access to the cache folder int32_t

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 2519 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 3281 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 3252 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:3108
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_,...)
Definition ASoA.h:3196
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
Definition ASoA.h:2440
std::pair< double, double > Point
GLint GLenum GLint x
Definition glcorearb.h:403
GLint y
Definition glcorearb.h:270

Definition at line 3108 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 2514 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 2480 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 3246 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 3218 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 3249 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 2882 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 2883 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 2881 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 2804 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 3317 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 3320 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 3326 of file ASoA.h.

◆ DECLARE_SOA_INDEX_TABLE_NG

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

Definition at line 3284 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 3323 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 3078 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 3009 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 3077 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 2943 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 2886 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 2942 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 3007 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 2945 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 3006 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 2659 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 2660 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 2658 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 2576 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 3182 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 3196 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 3191 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:3161

Definition at line 3187 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 3171 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 3161 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 3164 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 3215 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_); \
using StoredEMB##_BaseName_ = Stored##_BaseName_##From<o2::aod::Hash<"EMB"_h>>;

Definition at line 3204 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 3199 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_, _TimestampSource_, _TimestampColumn_, _Version_, _Desc_, __VA_ARGS__)

Definition at line 3393 of file ASoA.h.

◆ DECLARE_SOA_TIMESTAMPED_TABLE_FULL

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

Definition at line 3334 of file ASoA.h.

◆ DECLARE_SOA_UNIFORM_TABLE

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

Definition at line 3400 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 2445 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 2571 of file ASoA.h.