Project
Loading...
Searching...
No Matches
test_Concepts.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#include <TH1.h>
13#include "Framework/ASoA.h"
18#include "Framework/Condition.h"
20
21#include <catch_amalgamated.hpp>
22
23using namespace o2::framework;
24using namespace o2::soa;
25using namespace o2;
26
27struct P {
29 {
30 }
31
33};
34
35namespace o2::aod
36{
37namespace ct
38{
40}
41DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE(TracksMore, TracksIU, "TRKMORE", ct::Test);
42} // namespace o2::aod
43
44TEST_CASE("IdentificationConcepts")
45{
46 // ASoA
47 int i;
48 REQUIRE(not_void<decltype(i)>);
49
50 REQUIRE(is_persistent_column<o2::aod::track::CollisionId>);
51
52 REQUIRE(is_self_index_column<o2::aod::mcparticle::DaughtersIdSlice>);
53
54 REQUIRE(!is_index_column<o2::aod::mcparticle::DaughtersIdSlice>);
55 REQUIRE(is_index_column<o2::aod::track::CollisionId>);
56 REQUIRE(is_index_column<o2::aod::indices::CollisionIds>);
57
60
61 REQUIRE(has_parent_t<o2::aod::Track>);
62
63 REQUIRE(is_metadata<o2::aod::TracksIUExtensionMetadata>);
64
65 REQUIRE(is_metadata_trait<o2::aod::MetadataTrait<o2::aod::Hash<"TRACK/0"_h>>>);
66
68
69 REQUIRE(has_extension<o2::aod::MetadataTrait<o2::aod::Hash<"EXTRACK/0"_h>>::metadata>);
70
71 REQUIRE(is_spawnable_column<o2::aod::track::Pt>);
72
73 REQUIRE(is_indexing_column<Index<>>);
74
75 REQUIRE(is_dynamic_column<o2::aod::track::Energy<o2::aod::track::Signed1Pt, o2::aod::track::Tgl>>);
76
77 REQUIRE(is_marker_column<o2::soa::Marker<1>>);
78
79 REQUIRE(is_column<o2::aod::track::Pt>);
80 REQUIRE(is_column<Index<>>);
81 REQUIRE(is_column<o2::aod::track::Energy<o2::aod::track::Signed1Pt, o2::aod::track::Tgl>>);
82 REQUIRE(is_column<o2::soa::Marker<1>>);
83
84 REQUIRE(is_table<o2::aod::Collisions>);
85
86 REQUIRE(is_iterator<o2::aod::Collision>);
87
88 REQUIRE(with_originals<o2::aod::Collisions>);
89
90 REQUIRE(with_sources<o2::aod::MetadataTrait<o2::aod::Hash<"MA_RN3_SP/0"_h>>::metadata>);
91
92 REQUIRE(with_base_table<o2::aod::Tracks>);
93
94 REQUIRE(is_index_table<o2::aod::Run3MatchedSparse>);
95
96 Preslice<o2::aod::Tracks> ps = o2::aod::track::collisionId;
97 REQUIRE(is_preslice<decltype(ps)>);
98
99 REQUIRE(has_filtered_policy<soa::Filtered<o2::aod::Tracks>::iterator>);
100
101 REQUIRE(is_filtered_iterator<soa::Filtered<o2::aod::Tracks>::iterator>);
102
103 REQUIRE(is_filtered_table<soa::Filtered<o2::aod::Tracks>>);
104
105 REQUIRE(is_filtered<soa::Filtered<o2::aod::Tracks>::iterator>);
106 REQUIRE(is_filtered<soa::Filtered<o2::aod::Tracks>>);
107
108 REQUIRE(is_not_filtered_table<o2::aod::Collisions>);
109
110 REQUIRE(is_join<o2::aod::Tracks>);
111
112 auto tl = []() -> SmallGroups<o2::aod::Collisions> { return {std::vector<std::shared_ptr<arrow::Table>>{}, SelectionVector{}, 0}; };
113 REQUIRE(is_smallgroups<decltype(tl())>);
114
115 // AnalysisHelpers
116 REQUIRE(is_producable<o2::aod::Collisions>);
117
119 REQUIRE(is_produces<decltype(prod)>);
120
121 struct : ProducesGroup {
123 } prodg;
124 REQUIRE(is_produces_group<decltype(prodg)>);
125
126 REQUIRE(is_spawnable<o2::aod::Tracks>);
127
129 REQUIRE(is_spawns<decltype(spw)>);
130
132 REQUIRE(is_builds<decltype(bld)>);
133
136 REQUIRE(is_defines<decltype(def)>);
137 REQUIRE(is_defines<decltype(ddef)>);
138
139 OutputObj<TH1F> oo{"test"};
140 REQUIRE(is_outputobj<decltype(oo)>);
141
143 REQUIRE(is_service<decltype(srv)>);
144
145 Partition<o2::aod::Tracks> part = o2::aod::track::collisionId >= 0;
146 REQUIRE(is_partition<decltype(part)>);
147
148 // AnalysisTask
150 REQUIRE(is_enumeration<decltype(en)>);
151
152 // Condition
153 Condition<int> c{""};
154 REQUIRE(is_condition<decltype(c)>);
155
156 struct : ConditionGroup {
158 } cg;
159 REQUIRE(is_condition_group<decltype(cg)>);
160
161 // Configurable
162 Configurable<int> cc{"", 1, ""};
163 REQUIRE(is_configurable<decltype(cc)>);
164
165 ConfigurableAxis ca{"", {0, 1, 2, 3}, ""};
166 REQUIRE(is_configurable_axis<decltype(ca)>);
167
168 REQUIRE(is_process_configurable<decltype(P::doprocess1)>);
169
170 struct : ConfigurableGroup {
171 Configurable<int> c{"", 1, ""};
172 } ccg;
173 REQUIRE(is_configurable_group<decltype(ccg)>);
174
175 // Expressions
176 expressions::Filter f = o2::aod::track::pt > 1.0f;
177 REQUIRE(expressions::is_filter<decltype(f)>);
178
180 REQUIRE(is_combinations_generator<C>);
181}
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE(_Name_, _Table_, _Description_,...)
Definition ASoA.h:3184
#define DECLARE_SOA_CONFIGURABLE_EXPRESSION_COLUMN(_Name_, _Getter_, _Type_, _Label_)
Definition ASoA.h:2416
int32_t i
Test
Definition Utils.h:55
uint32_t c
Definition RawData.h:2
T::template iterator_template_o< FilteredIndexPolicy, self_t > iterator
Definition ASoA.h:3641
hash identification concepts
Definition ASoA.h:364
GLdouble f
Definition glcorearb.h:310
Collisions_001 Collisions
Defining PrimaryVertex explicitly as messageable.
Definition TFIDInfo.h:20
std::vector< int64_t > SelectionVector
Definition ASoA.h:412
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
FIXME: do not use data model tables.
void process1(aod::Collisions const &)
PROCESS_SWITCH(P, process1, "", true)
A struct, containing the root of the expression tree.
std::vector< o2::mch::ChannelCode > cc
TEST_CASE("IdentificationConcepts")