Glossary
Warning
Work in progress. Help wanted.
General
- O2
- acronym which stands for "online–offline" which refers to the online and offline reconstruction
- DPL
- Data Processing Layer
- core O2 framework for data processing, built on top of FairMQ
- Arrow
- the Apache Arrow format in which tables are processed in O2
- JSON
- format used for configuration of devices
Data reconstruction
- timeframe, TF
- snapshot of detector data over a given time window
- dataframe, DF
- self-contained unit of processing
- FLP
- First Level Processor
- EPN
- Event Processing Node
- PDP
- Physics Data Processing
- particle collision
- interaction of energetic particles (real or simulated).
Simulated particle collisions are stored in the
McCollisions
table. Simulated particles are stored in theMcParticles
table. - reconstructed collision
- primary vertex reconstructed from an observed activity in the detector suspected to be associated with a particle collision.
Reconstructed collision are stored in the
Collisions
table. Reconstructed charged particles are stored in theTracks
table.
Data structures
- AO2D
- format of saving tables in ROOT files (typically called
AO2D.root
) - table
- data format storing a collection of columns for each entry (table row).
Rows represent objects of the given table type and columns represent properties of these objects.
A table definition defines a C++ type and therefore must be unique.
Declared with the
DECLARE_SOA_TABLE(...)
macros. Stored in AO2D asTTree
.
Data processing
- task
- C++
struct
which can process and produce tables and produce other output (e.g. histograms). A task is executed as a device of a workflow. - configurable
- task parameter, whose value can be set without editing the code of the task.
Implemented as a task member of type
Configurable(...)
. Can be set via JSON configuration. - process function
- task method, which subscribes to tables (i.e. consumes them as input) and performs some operations with their content (e.g. fills output tables or histograms).
- process function switch
PROCESS_SWITCH
macro which defines a configurable which allows to enable and disable the execution of a given process function.- device (DPL device)
- execution sub-unit of a workflow.
Implemented as a task.
Can be configured via configurables.
The device name is generated from the task name, unless it is provided explicitly, using
TaskName("device-name")
as an argument ofadaptAnalysisTask
. - workflow (DPL workflow)
- execution unit in DPL, consisting of one or several devices.
Implemented as a C++
.cxx
file, compiled into a single executable binary file. The workflow name is generated from the arguments of theo2physics_add_dpl_workflow
function in theCMakeLists.txt
file. For workflows files located inPWG..
directories, a corresponding prefix is added:o2-<component>-[<pwg>-]<name>
. - Example:
o2-analysis-hf-task-d0
<component>
isanalysis
, derived fromCOMPONENT_NAME Analysis
,<pwg>
ishf
, derived from thePWGHF
directory name,<name>
istask-d0
, provided ino2physics_add_dpl_workflow(task-d0
.
Table content
- static column
- table column which stores a value provided when it is filled.
Declared with the
DECLARE_SOA_COLUMN(...)
macros. - Example: The
Collisions
table of collisions has a static columnPosZ
which stores the value of the z coordinate of the primary vertex. The value has to be provided when a new collision row is being added in the table. - dynamic column
- table column which behaves as a function of other (static or expression) columns of the same table.
Declared with the
DECLARE_SOA_DYNAMIC_COLUMN(...)
macros. The value is calculated only when the column getter is called. - Dynamic column definitions can have free parameters, which have to be provided as arguments of the getter.
Values of dynamic columns are not written in AO2D files and cannot be used for table filtering.
Additional dynamic columns can be attached to a table inside a process function with
Attach
. - Example: The
Tracks
table of tracks has a dynamic columnPx
, representing the x component of the track momentum, defined as a function of other static columns. It's value is calculated every time the correspondingpx
getter is called. - expression column
- table column which stores a value which is calculated by evaluating an expression when the table is written.
Declared with the
DECLARE_SOA_EXPRESSION_COLUMN(...)
macros. Values of expression columns are written in AO2D files and can be used for table filtering. - Additional expression columns can be attached to a table inside a process function with
Extend
. - Example: The
Tracks
table of tracks has an expression columnPhi
, representing the azimuth of the track momentum, defined as a function of other static columns. All values of thePhi
column are calculated for all tracks together (in bulk) when theTracks
table is written in the AO2D file. - index column
- table column which stores the index of a table row.
Declared with the
DECLARE_SOA_INDEX_COLUMN(...)
macros. - Example: The
Tracks
table of tracks has an index column pointing to rows of theCollisions
table, which links each track to its collision. Calling thecollision
getter returns an iterator pointing to a given collision. Calling thecollisionId
getter returns the value of the index itself (i.e. the position of the row in theCollisions
table). - column getter
- method that returns the value stored in the column.
- Example: The value of the transverse momentum of a given
track
in theTracks
table is stored in thePt
column. This value can be obtained by calling the correspondingpt
getter astrack.pt()
. - data model
- collection of table definitions.
Defined in header files in
DataModel
directories. - extended table
- table consisting of expression columns which extends another table.
Declared with the
DECLARE_SOA_EXTENDED_TABLE(...)
macros. - index table
- table consisting of index columns.
Declared with the
DECLARE_SOA_INDEX_TABLE(...)
macros.
Table production
Produces
- A
Produces<...>
task member defines a table cursor which creates a new table row when called. Spawns
- A
Spawns<...>
task member defines a handle to an extended table. The extended table is created before the execution of the process functions. Builds
- A
Builds<...>
task member defines a handle to an index table. The index table is created before the execution of the process functions.
Table manipulation
Join
- Declaration of a
Join<...>
object defines a table view which joins columns of matching rows in multiple tables of the same length. - grouping
- Subscription to the iterator of a table defines a loop over that table where the rows of other tables are grouped by the index of the iterated table. For each iteration only the subset of the other tables linked to the given iterator (via the index column) is available.
SmallGroups
- TODO
Filter
- Definition of a
Filter
task member applies the corresponding condition to all compatible tables subscribed usingFiltered<...>
. Only the filtered subsets of the tables are available. - Filter definitions can reference configurables.
Filter definitions cannot reference dynamic columns.
Filter definitions can contain conditional expressions with
ifnode
. - Filtered tables can be grouped.
Filtered tables can be created inside process functions with
select
. Partition
- Definition of a
Partition<...>
task member creates a table view for a subset of a table according to the corresponding condition. - Multiple partitions of the same table can co-exist together with the full table. Partitions can be filtered. Partitions cannot be grouped and have to be sliced instead. Partitions can be created inside process functions.
- slicing
- A partition slice corresponding to a given value of a given index column can be created using the
sliceBy(...)
methods of the partition. Preslice
- TODO
AliHyperloop
- wagon
- instance of a workflow on AliHyperloop, defined by its dependencies, configuration of devices and outputs
- train
- collection of wagons executed on AliHyperloop
- derived data
- AO2D file with tables produced as a result of processing another AO2D file (parent)
- linked derived data
- derived data containing tables with index columns pointing to tables in its parent files. Processing of linked derived data requires access to the parent files.
- self-contained derived data
- derived data containing tables without index columns pointing to tables in other files.