|
| 1 | +--- |
| 2 | +sort: 11 |
| 3 | +title: Glossary |
| 4 | +--- |
| 5 | + |
| 6 | +# Glossary |
| 7 | + |
| 8 | +```warning |
| 9 | +Work in progress. Help wanted. |
| 10 | +``` |
| 11 | + |
| 12 | +## General |
| 13 | + |
| 14 | +O<sup>2</sup> <a id="o2" /> |
| 15 | +: acronym which stands for "online–offline" which refers to the online and offline reconstruction |
| 16 | + |
| 17 | +DPL <a id="dpl" /> |
| 18 | +: Data Processing Layer |
| 19 | +: core [O<sup>2</sup>](#o2) framework for data processing, built on top of [FairMQ](https://helmholtz.software/software/fairmq) |
| 20 | + |
| 21 | +Arrow <a id="arrow" /> |
| 22 | +: the [Apache Arrow](https://arrow.apache.org/) format in which [tables](#table) are processed in [O<sup>2</sup>](#o2) |
| 23 | + |
| 24 | +JSON <a id="json" /> |
| 25 | +: format used for [configuration](#configurable) of [devices](#device) |
| 26 | + |
| 27 | +## Data reconstruction |
| 28 | + |
| 29 | +timeframe, TF <a id="timeframe" /> |
| 30 | +: snapshot of detector data over a given time window |
| 31 | + |
| 32 | +dataframe, DF <a id="dataframe" /> |
| 33 | +: self-contained unit of processing |
| 34 | + |
| 35 | +FLP <a id="flp" /> |
| 36 | +: First Level Processor |
| 37 | + |
| 38 | +EPN <a id="epn" /> |
| 39 | +: Event Processing Node |
| 40 | + |
| 41 | +PDP <a id="pdp" /> |
| 42 | +: Physics Data Processing |
| 43 | + |
| 44 | +particle collision <a id="particle-collision" /> |
| 45 | +: interaction of energetic particles (real or simulated). |
| 46 | +Simulated particle collisions are stored in the `McCollisions` [table](#table). |
| 47 | +Simulated particles are stored in the `McParticles` table. |
| 48 | + |
| 49 | +reconstructed collision <a id="reconstructed-collision" /> |
| 50 | +: primary vertex reconstructed from an observed activity in the detector suspected to be associated with a [particle collision](#particle-collision). |
| 51 | +Reconstructed collision are stored in the `Collisions` [table](#table). |
| 52 | +Reconstructed charged particles are stored in the `Tracks` table. |
| 53 | + |
| 54 | +## Data structures |
| 55 | + |
| 56 | +AO2D <a id="ao2d" /> |
| 57 | +: format of saving [tables](#table) in ROOT files (typically called `AO2D.root`) |
| 58 | + |
| 59 | +table <a id="table" /> |
| 60 | +: data format storing a collection of columns for each entry (table row). |
| 61 | +Rows represent objects of the given table type and columns represent properties of these objects. |
| 62 | +A table definition defines a C++ type and therefore must be unique. |
| 63 | +Declared with the `DECLARE_SOA_TABLE(...)` macros. |
| 64 | +Stored in [AO2D](#ao2d) as `TTree`. |
| 65 | + |
| 66 | +## Data processing |
| 67 | + |
| 68 | +task <a id="task" /> |
| 69 | +: C++ `struct` which can process and produce [tables](#table) and produce other output (e.g. histograms). |
| 70 | +A task is executed as a [device](#device) of a [workflow](#workflow). |
| 71 | + |
| 72 | +configurable <a id="configurable" /> |
| 73 | +: [task](#task) parameter, whose value can be set without editing the code of the task. |
| 74 | +Implemented as a task member of type `Configurable(...)`. |
| 75 | +Can be set via [JSON](#json) configuration. |
| 76 | + |
| 77 | +process function <a id="process-function" /> |
| 78 | +: [task](#task) method, which subscribes to [tables](#table) (i.e. consumes them as input) and performs some operations with their content (e.g. fills output tables or histograms). |
| 79 | + |
| 80 | +process function switch <a id="process-function-switch" /> |
| 81 | +: `PROCESS_SWITCH` macro which defines a [configurable](#configurable) which allows to enable and disable the execution of a given [process function](#process-function). |
| 82 | + |
| 83 | +device (DPL device) <a id="device" /> |
| 84 | +: execution sub-unit of a [workflow](#workflow). |
| 85 | +Implemented as a [task](#task). |
| 86 | +Can be configured via [configurables](#configurable). |
| 87 | +The device name is generated from the task name, unless it is provided explicitly, using `TaskName("device-name")` as an argument of `adaptAnalysisTask`. |
| 88 | + |
| 89 | +workflow (DPL workflow) <a id="workflow" /> |
| 90 | +: execution unit in [DPL](#dpl), consisting of one or several [devices](#device). |
| 91 | +Implemented as a C++ `.cxx` file, compiled into a single executable binary file. |
| 92 | +The workflow name is generated from the arguments of the `o2physics_add_dpl_workflow` function in the `CMakeLists.txt` file. |
| 93 | +For workflows files located in `PWG..` directories, a corresponding prefix is added: `o2-<component>-[<pwg>-]<name>`. |
| 94 | +: Example: `o2-analysis-hf-task-d0` |
| 95 | + |
| 96 | +- `<component>` is `analysis`, derived from `COMPONENT_NAME Analysis`, |
| 97 | +- `<pwg>` is `hf`, derived from the `PWGHF` directory name, |
| 98 | +- `<name>` is `task-d0`, provided in `o2physics_add_dpl_workflow(task-d0`. |
| 99 | + |
| 100 | +workflow topology <a id="workflow-topology" /> |
| 101 | +: the connection between running [workflows](#workflow), based on their [inputs](#table) and outputs |
| 102 | + |
| 103 | +## Table content |
| 104 | + |
| 105 | +static column <a id="static-column" /> |
| 106 | +: [table](#table) column which stores a value provided when it is filled. |
| 107 | +Declared with the `DECLARE_SOA_COLUMN(...)` macros. |
| 108 | +: Example: The `Collisions` table of collisions has a static column `PosZ` which stores the value of the _z_ coordinate of the primary vertex. |
| 109 | +The value has to be provided when a new collision row is being added in the table. |
| 110 | + |
| 111 | +dynamic column <a id="dynamic-column" /> |
| 112 | +: [table](#table) column which behaves as a function of other (static or expression) columns of the same table. |
| 113 | +Declared with the `DECLARE_SOA_DYNAMIC_COLUMN(...)` macros. |
| 114 | +The value is calculated only when the [column getter](#column-getter) is called. |
| 115 | +: Dynamic column definitions can have free parameters, which have to be provided as arguments of the getter. |
| 116 | +Values of dynamic columns are not written in [AO2D](#ao2d) files and cannot be used for table [filtering](#filter). |
| 117 | +Additional dynamic columns can be attached to a table inside a [process function](#process-function) with `Attach`. |
| 118 | +: Example: The `Tracks` table of tracks has a dynamic column `Px`, representing the _x_ component of the track momentum, defined as a function of other static columns. |
| 119 | +It's value is calculated every time the corresponding `px` getter is called. |
| 120 | + |
| 121 | +expression column <a id="expression-column" /> |
| 122 | +: [table](#table) column which stores a value which is calculated by evaluating an expression when the table is written. |
| 123 | +Declared with the `DECLARE_SOA_EXPRESSION_COLUMN(...)` macros. |
| 124 | +Values of expression columns are written in [AO2D](#ao2d) files and can be used for table [filtering](#filter). |
| 125 | +: Additional expression columns can be attached to a table inside a [process function](#process-function) with `Extend`. |
| 126 | +: Example: The `Tracks` table of tracks has an expression column `Phi`, representing the azimuth of the track momentum, defined as a function of other static columns. |
| 127 | +All values of the `Phi` column are calculated for all tracks together (in bulk) when the `Tracks` table is written in the [AO2D](#ao2d) file. |
| 128 | + |
| 129 | +index column <a id="index-column" /> |
| 130 | +: [table](#table) column which stores the index of a table row. |
| 131 | +Declared with the `DECLARE_SOA_INDEX_COLUMN(...)` macros. |
| 132 | +: Example: The `Tracks` table of tracks has an index column pointing to rows of the `Collisions` table, which links each track to its collision. |
| 133 | +Calling the `collision` getter returns an iterator pointing to a given collision. |
| 134 | +Calling the `collisionId` getter returns the value of the index itself (i.e. the position of the row in the `Collisions` table). |
| 135 | + |
| 136 | +column getter <a id="column-getter" /> |
| 137 | +: method that returns the value stored in the column. |
| 138 | +: Example: The value of the transverse momentum of a given `track` in the `Tracks` table is stored in the `Pt` column. |
| 139 | +This value can be obtained by calling the corresponding `pt` getter as `track.pt()`. |
| 140 | + |
| 141 | +data model <a id="data-model" /> |
| 142 | +: collection of [table](#table) definitions. |
| 143 | +Defined in header files in [`DataModel`](../gettingstarted/theo2physicsrepo.md#folder-structure) directories. |
| 144 | + |
| 145 | +extended table <a id="extended-table" /> |
| 146 | +: [table](#table) consisting of [expression columns](#expression-column) which extends another table. |
| 147 | +Declared with the `DECLARE_SOA_EXTENDED_TABLE(...)` macros. |
| 148 | + |
| 149 | +index table <a id="index-table" /> |
| 150 | +: [table](#table) consisting of [index columns](#index-column). |
| 151 | +Declared with the `DECLARE_SOA_INDEX_TABLE(...)` macros. |
| 152 | + |
| 153 | +## Table production |
| 154 | + |
| 155 | +`Produces` <a id="produces" /> |
| 156 | +: A `Produces<...>` [task](#task) member defines a [table](#table) cursor which creates a new table row when called. |
| 157 | + |
| 158 | +`Spawns` <a id="spawns" /> |
| 159 | +: A `Spawns<...>` [task](#task) member defines a handle to an [extended table](#extended-table). |
| 160 | +The extended table is created before the execution of the [process functions](#process-function). |
| 161 | + |
| 162 | +`Builds` <a id="builds" /> |
| 163 | +: A `Builds<...>` [task](#task) member defines a handle to an [index table](#index-table). |
| 164 | +The index table is created before the execution of the [process functions](#process-function). |
| 165 | + |
| 166 | +## Table manipulation |
| 167 | + |
| 168 | +`Join` <a id="join" /> |
| 169 | +: Declaration of a `Join<...>` object defines a [table](#table) view which joins columns of matching rows in multiple tables of the same length. |
| 170 | + |
| 171 | +grouping <a id="grouping" /> |
| 172 | +: Subscription to the iterator of a [table](#table) defines a loop over that table where the rows of other tables are grouped by the index of the iterated table. |
| 173 | +For each iteration only the subset of the other tables linked to the given iterator (via the [index column](#index-column)) is available. |
| 174 | + |
| 175 | +`SmallGroups` <a id="small-groups" /> |
| 176 | +: TODO |
| 177 | + |
| 178 | +`Filter` <a id="filter" /> |
| 179 | +: Definition of a `Filter` [task](#task) member applies the corresponding condition to all compatible [tables](#table) subscribed using `Filtered<...>`. |
| 180 | +Only the filtered subsets of the tables are available. |
| 181 | +: Filter definitions can reference [configurables](#configurable). |
| 182 | +Filter definitions cannot reference [dynamic columns](#dynamic-column). |
| 183 | +Filter definitions can contain conditional expressions with `ifnode`. |
| 184 | +: Filtered tables can be [grouped](#grouping). |
| 185 | +Filtered tables can be created inside [process functions](#process-function) with `select`. |
| 186 | + |
| 187 | +`Partition` <a id="partition" /> |
| 188 | +: Definition of a `Partition<...>` [task](#task) member creates a [table](#table) view for a subset of a table according to the corresponding condition. |
| 189 | +: Multiple partitions of the same table can co-exist together with the full table. |
| 190 | +Partitions can be [filtered](#filter). |
| 191 | +Partitions cannot be [grouped](#grouping) and have to be [sliced](#slicing) instead. |
| 192 | +Partitions can be created inside [process functions](#process-function). |
| 193 | + |
| 194 | +slicing <a id="slicing" /> |
| 195 | +: A [partition](#partition) slice corresponding to a given value of a given [index column](#index-column) can be created using the `sliceBy(...)` methods of the partition. |
| 196 | + |
| 197 | +`Preslice` <a id="preslice" /> |
| 198 | +: TODO |
| 199 | + |
| 200 | +## AliHyperloop |
| 201 | + |
| 202 | +wagon <a id="wagon" /> |
| 203 | +: instance of a [workflow](#workflow) on AliHyperloop, defined by its dependencies, [configuration](#configurable) of [devices](#device) and [outputs](#derived-data) |
| 204 | + |
| 205 | +train <a id="train" /> |
| 206 | +: collection of [wagons](#wagon) executed on AliHyperloop |
| 207 | + |
| 208 | +derived data <a id="derived-data" /> |
| 209 | +: [AO2D](#ao2d) file with [tables](#table) produced as a result of processing another [AO2D](#ao2d) file (parent) |
| 210 | + |
| 211 | +linked derived data <a id="linked-derived-data" /> |
| 212 | +: [derived data](#derived-data) containing [tables](#table) with [index columns](#index-column) pointing to tables in its parent files. |
| 213 | +Processing of linked derived data requires access to the parent files. |
| 214 | + |
| 215 | +self-contained derived data <a id="self-contained-derived-data" /> |
| 216 | +: [derived data](#derived-data) containing [tables](#table) without [index columns](#index-column) pointing to tables in other files. |
0 commit comments