@@ -3336,53 +3336,53 @@ consteval auto getIndexTargets()
33363336// The columns of this table have to be CCDB_COLUMNS so that for each timestamp, we get a row
33373337// which points to the specified CCDB objectes described by those columns.
33383338#define DECLARE_SOA_TIMESTAMPED_TABLE_FULL (_Name_, _Label_, _TimestampSource_, _TimestampColumn_, _UniformitySource_, _UniformityColumn_, _Version_, _Desc_, ...) \
3339- O2HASH (_Desc_ " /" #_Version_); \
3340- template <typename O> \
3341- using _Name_##TimestampFrom = soa::Table<o2::aod::Hash<_Label_ " " _h>, o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>, O>; \
3342- using _Name_##Timestamp = _Name_##TimestampFrom<o2::aod::Hash< \
3343- " AOD" \
3344- " " _h>>; \
3345- struct _Name_ ##TimestampMetadata : TableMetadata<o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>, __VA_ARGS__> { \
3346- template <typename O = o2::aod::Hash<" AOD" \
3347- " " _h>> \
3348- using base_table_t = _TimestampSource_##From<O>; \
3349- template <typename O = o2::aod::Hash<" AOD" \
3350- " " _h>> \
3351- using extension_table_t = _Name_##TimestampFrom<O>; \
3352- static constexpr const auto ccdb_urls = []<typename ... Cs>(framework::pack<Cs...>) consteval { \
3353- return std::array<std::string_view, sizeof ...(Cs)>{Cs::query...}; \
3354- }(framework::pack<__VA_ARGS__>{}); \
3355- static constexpr const auto ccdb_bindings = []<typename ... Cs>(framework::pack<Cs...>) consteval { \
3356- return std::array<std::string_view, sizeof ...(Cs)>{Cs::mLabel ...}; \
3357- }(framework::pack<__VA_ARGS__>{}); \
3358- /* The uniformity column may live in a table other than the timestamp source (the run */ \
3359- /* number is on aod::BCs, the timestamp on aod::Timestamps). Both are handed to the */ \
3360- /* fetcher, which reads them positionally — sound because the two are row-aligned. */ \
3361- /* Row alignment cannot be checked here: ASoA encodes no type-level relation between */ \
3362- /* two tables that happen to have equal row counts (aod::BCs and aod::Timestamps have */ \
3363- /* disjoint originals). The CCDB fetcher verifies the lengths match before reading. */ \
3364- static constexpr auto N = o2::soa::mergeOriginals<_TimestampSource_, _UniformitySource_>().size(); \
3365- template <o2::aod::is_origin_hash O = o2::aod::Hash<" AOD" _h>> \
3366- static consteval auto generateSources () \
3367- { \
3368- return o2::soa::mergeOriginals<_TimestampSource_##From<O>, _UniformitySource_##From<O>>(); \
3369- } \
3370- static constexpr auto timestamp_column_label = _TimestampColumn_::mLabel ; \
3371- /* Rows sharing a uniformity value resolve to the same CCDB object, so the fetcher */ \
3372- /* need only query once per distinct value. Defaults to the timestamp column, i.e. */ \
3373- /* every distinct timestamp may yield a different object — the pre-existing behaviour.*/ \
3374- static constexpr auto uniformity_column_label = _UniformityColumn_::mLabel ; \
3375- /* static constexpr auto timestampColumn = _TimestampColumn_;*/ \
3376- }; \
3377- template <> \
3378- struct MetadataTrait <o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>> { \
3379- static constexpr void isMetadataTrait () {}; \
3380- using metadata = _Name_##TimestampMetadata; \
3381- }; \
3382- template <typename O> \
3383- using _Name_##From = o2::soa::Join<_TimestampSource_, _Name_##TimestampFrom<O>>; \
3384- using _Name_ = _Name_##From<o2::aod::Hash< \
3385- " AOD" \
3339+ O2HASH (_Desc_ " /" #_Version_); \
3340+ template <typename O> \
3341+ using _Name_##TimestampFrom = soa::Table<o2::aod::Hash<_Label_ " " _h>, o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>, O>; \
3342+ using _Name_##Timestamp = _Name_##TimestampFrom<o2::aod::Hash< \
3343+ " AOD" \
3344+ " " _h>>; \
3345+ struct _Name_ ##TimestampMetadata : TableMetadata<o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>, __VA_ARGS__> { \
3346+ template <typename O = o2::aod::Hash<" AOD" \
3347+ " " _h>> \
3348+ using base_table_t = _TimestampSource_##From<O>; \
3349+ template <typename O = o2::aod::Hash<" AOD" \
3350+ " " _h>> \
3351+ using extension_table_t = _Name_##TimestampFrom<O>; \
3352+ static constexpr const auto ccdb_urls = []<typename ... Cs>(framework::pack<Cs...>) consteval { \
3353+ return std::array<std::string_view, sizeof ...(Cs)>{Cs::query...}; \
3354+ }(framework::pack<__VA_ARGS__>{}); \
3355+ static constexpr const auto ccdb_bindings = []<typename ... Cs>(framework::pack<Cs...>) consteval { \
3356+ return std::array<std::string_view, sizeof ...(Cs)>{Cs::mLabel ...}; \
3357+ }(framework::pack<__VA_ARGS__>{}); \
3358+ /* The uniformity column may live in a table other than the timestamp source (the run */ \
3359+ /* number is on aod::BCs, the timestamp on aod::Timestamps). Both are handed to the */ \
3360+ /* fetcher, which reads them positionally — sound because the two are row-aligned. */ \
3361+ /* Row alignment cannot be checked here: ASoA encodes no type-level relation between */ \
3362+ /* two tables that happen to have equal row counts (aod::BCs and aod::Timestamps have */ \
3363+ /* disjoint originals). The CCDB fetcher verifies the lengths match before reading. */ \
3364+ static constexpr auto N = o2::soa::mergeOriginals<_TimestampSource_, _UniformitySource_>().size(); \
3365+ template <o2::aod::is_origin_hash O = o2::aod::Hash<" AOD" _h>> \
3366+ static consteval auto generateSources () \
3367+ { \
3368+ return o2::soa::mergeOriginals<_TimestampSource_##From<O>, _UniformitySource_##From<O>>(); \
3369+ } \
3370+ static constexpr auto timestamp_column_label = _TimestampColumn_::mLabel ; \
3371+ /* Rows sharing a uniformity value resolve to the same CCDB object, so the fetcher */ \
3372+ /* need only query once per distinct value. Defaults to the timestamp column, i.e. */ \
3373+ /* every distinct timestamp may yield a different object — the pre-existing behaviour.*/ \
3374+ static constexpr auto uniformity_column_label = _UniformityColumn_::mLabel ; \
3375+ /* static constexpr auto timestampColumn = _TimestampColumn_;*/ \
3376+ }; \
3377+ template <> \
3378+ struct MetadataTrait <o2::aod::Hash<_Desc_ " /" #_Version_ " " _h>> { \
3379+ static constexpr void isMetadataTrait () {}; \
3380+ using metadata = _Name_##TimestampMetadata; \
3381+ }; \
3382+ template <typename O> \
3383+ using _Name_##From = o2::soa::Join<_TimestampSource_, _Name_##TimestampFrom<O>>; \
3384+ using _Name_ = _Name_##From<o2::aod::Hash< \
3385+ " AOD" \
33863386 " " _h>>;
33873387
33883388/* Uniformity defaults to the timestamp column of the timestamp source: each distinct
0 commit comments