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 struct : PresliceGroup {
100 Preslice<o2::aod::Tracks> pc = o2::aod::track::collisionId;
101 Preslice<o2::aod::McParticles> pmcc = o2::aod::mcparticle::mcCollisionId;
102 } preslices;
103 REQUIRE(is_preslice_group<decltype(preslices)>);
104 REQUIRE(is_preslice<decltype(preslices.pc)>);
105 REQUIRE(is_preslice<decltype(preslices.pmcc)>);
106
107 REQUIRE(has_filtered_policy<soa::Filtered<o2::aod::Tracks>::iterator>);
108
109 REQUIRE(is_filtered_iterator<soa::Filtered<o2::aod::Tracks>::iterator>);
110
111 REQUIRE(is_filtered_table<soa::Filtered<o2::aod::Tracks>>);
112
113 REQUIRE(is_filtered<soa::Filtered<o2::aod::Tracks>::iterator>);
114 REQUIRE(is_filtered<soa::Filtered<o2::aod::Tracks>>);
115
116 REQUIRE(is_not_filtered_table<o2::aod::Collisions>);
117
118 REQUIRE(is_join<o2::aod::Tracks>);
119
120 auto tl = []() -> SmallGroups<o2::aod::Collisions> { return {std::vector<std::shared_ptr<arrow::Table>>{}, SelectionVector{}, 0}; };
121 REQUIRE(is_smallgroups<decltype(tl())>);
122
123 // AnalysisHelpers
124 REQUIRE(is_producable<o2::aod::Collisions>);
125
127 REQUIRE(is_produces<decltype(prod)>);
128
129 struct : ProducesGroup {
131 } prodg;
132 REQUIRE(is_produces_group<decltype(prodg)>);
133
134 REQUIRE(is_spawnable<o2::aod::Tracks>);
135
137 REQUIRE(is_spawns<decltype(spw)>);
138
140 REQUIRE(is_builds<decltype(bld)>);
141
144 REQUIRE(is_defines<decltype(def)>);
145 REQUIRE(is_defines<decltype(ddef)>);
146
147 OutputObj<TH1F> oo{"test"};
148 REQUIRE(is_outputobj<decltype(oo)>);
149
151 REQUIRE(is_service<decltype(srv)>);
152
153 Partition<o2::aod::Tracks> part = o2::aod::track::collisionId >= 0;
154 REQUIRE(is_partition<decltype(part)>);
155
156 // AnalysisTask
158 REQUIRE(is_enumeration<decltype(en)>);
159
160 // Condition
161 Condition<int> c{""};
162 REQUIRE(is_condition<decltype(c)>);
163
164 struct : ConditionGroup {
166 } cg;
167 REQUIRE(is_condition_group<decltype(cg)>);
168
169 // Configurable
170 Configurable<int> cc{"", 1, ""};
171 REQUIRE(is_configurable<decltype(cc)>);
172
173 ConfigurableAxis ca{"", {0, 1, 2, 3}, ""};
174 REQUIRE(is_configurable_axis<decltype(ca)>);
175
176 REQUIRE(is_process_configurable<decltype(P::doprocess1)>);
177
178 struct : ConfigurableGroup {
179 Configurable<int> c{"", 1, ""};
180 } ccg;
181 REQUIRE(is_configurable_group<decltype(ccg)>);
182
183 // Expressions
184 expressions::Filter f = o2::aod::track::pt > 1.0f;
185 REQUIRE(expressions::is_filter<decltype(f)>);
186
187 // Combinations
189 REQUIRE(is_combinations_generator<C>);
190}
#define DECLARE_SOA_CONFIGURABLE_EXTENDED_TABLE(_Name_, _Table_, _Description_,...)
Definition ASoA.h:3202
#define DECLARE_SOA_CONFIGURABLE_EXPRESSION_COLUMN(_Name_, _Getter_, _Type_, _Label_)
Definition ASoA.h:2434
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:3659
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")