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
McCollisionstable. Simulated particles are stored in theMcParticlestable. - 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
Collisionstable. Reconstructed charged particles are stored in theTrackstable.
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++
structwhich 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_SWITCHmacro 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++
.cxxfile, compiled into a single executable binary file. The workflow name is generated from the arguments of theo2physics_add_dpl_workflowfunction in theCMakeLists.txtfile. 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 thePWGHFdirectory 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
Collisionstable of collisions has a static columnPosZwhich 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
Trackstable 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 correspondingpxgetter 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
Trackstable of tracks has an expression columnPhi, representing the azimuth of the track momentum, defined as a function of other static columns. All values of thePhicolumn are calculated for all tracks together (in bulk) when theTrackstable 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
Trackstable of tracks has an index column pointing to rows of theCollisionstable, which links each track to its collision. Calling thecollisiongetter returns an iterator pointing to a given collision. Calling thecollisionIdgetter returns the value of the index itself (i.e. the position of the row in theCollisionstable). - column getter
- method that returns the value stored in the column.
- Example: The value of the transverse momentum of a given
trackin theTrackstable is stored in thePtcolumn. This value can be obtained by calling the correspondingptgetter astrack.pt(). - data model
- collection of table definitions.
Defined in header files in
DataModeldirectories. - 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
Filtertask 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.
