Skip to content

Commit 753cbad

Browse files
authored
Merge pull request #322 from altsybee/master
move "Helper tasks" to the new top-level chapter "Analysis tools"
2 parents 3ab9d7f + 6b2a44b commit 753cbad

File tree

14 files changed

+844
-826
lines changed

14 files changed

+844
-826
lines changed

docs/analysis-tools/EventSelection.md

Lines changed: 367 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
sort: 1
3+
title: Multiplicity and centrality selection
4+
---
5+
6+
# Multiplicity and centrality selection in O2
7+
8+
## Multiplicity selection concept
9+
10+
The multiplicity and centrality selection in O2 is based on the concept of derived tables created in dedicated tasks from available AOD contents:
11+
12+
* _o2-analysis-multiplicity-table_ task [`Common/TableProducer/multiplicityTable.cxx`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/TableProducer/multiplicityTable.cxx) stores relevant multiplicity values (V0A, V0C, ZNA, ZNC) and their dynamic sums (V0M) in [`Mults`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/Multiplicity.h) table joinable with _Collisions_ table.
13+
* _o2-analysis-multiplicity-qa_ task [`Common/Tasks/multiplicityQa.cxx`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tasks/multiplicityQa.cxx) creates multiplicity distributions in minimum bias triggers necessary for centrality calibration.
14+
* _o2-analysis-centrality-table_ task [`Common/TableProducer/centralityTable.cxx`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/TableProducer/centralityTable.cxx) takes multiplicity values from the [`Mults`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/Multiplicity.h) table and stores centrality values in [`Cents`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/Centrality.h) table joinable with _Collisions_ table. Relevant cumulative multiplicity distributions are stored in [CCDB](http://alice-ccdb.cern.ch/browse/Centrality). The centrality calibration relies on 90% anchor points in Pb-Pb.
15+
* _o2-analysis-centrality-qa_ task [`Common/Tasks/centralityQa.cxx`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tasks/centralityQa.cxx) creates centrality distributions for minimum bias triggers and can be used for control and QA purposes.
16+
17+
Note that _o2-analysis-multiplicity-qa_ and _o2-analysis-centrality-qa_ tasks rely on the minimum bias trigger selection therefore one has to run event selection in stack with these tasks.
18+
19+
## Multiplicity selection usage in user tasks
20+
21+
One can check _o2-analysis-centrality-qa_ task for example usage: [`Common/Tasks/centralityQa.cxx`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/Tasks/centralityQa.cxx). Usually, analysers perform event selection before the centrality selection therefore one has to consider the following steps:
22+
23+
* add [`EventSelection.h`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/EventSelection.h) and [`Centrality.h`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/Centrality.h) headers:
24+
25+
``` c++
26+
#include "Common/DataModel/EventSelection.h"
27+
#include "Common/DataModel/Centrality.h"
28+
```
29+
30+
* join _Collisions_, _EvSels_ and _Cents_ tables and use corresponding iterator as an argument of the process function:
31+
32+
``` c++
33+
void process(soa::Join<aod::Collisions, aod::EvSels, aod::Cents>::iterator const& col, ...)
34+
```
35+
36+
* check if your trigger alias is fired if you run over Run1 or Run2 data (or future triggered Run3 data):
37+
38+
``` c++
39+
if (!col.alias_bit(kINT7))
40+
return;
41+
```
42+
43+
Bypass this check if you analyse MC or future continuous Run3 data.
44+
* apply further offline selection criteria:
45+
46+
``` c++
47+
if (!col.sel7())
48+
return;
49+
```
50+
51+
* apply centrality selection, for example:
52+
53+
``` c++
54+
// analyse 0-20% central events
55+
if (col.centV0M()>20)
56+
return;
57+
```
58+
59+
* run your tasks in stack with timestamp, event-selection, multiplicity and centrality tasks:
60+
61+
``` bash
62+
o2-analysis-timestamp --aod-file AO2D.root -b | o2-analysis-event-selection -b | o2-analysis-mulitplicity-table -b | o2-analysis-centrality-table -b | o2-analysis-user-task -b
63+
```
64+
65+
_o2-analysis-timestamp_ task is required to create per-event timestamps necessary to access relevant CCDB objects in the event selection and/or centrality tasks.
66+
67+
_o2-analysis-zdc-converter_ and _o2-analysis-collision-converter_ might be also necessary for old datasets to account for changes in the data model.
68+

docs/analysis-tools/PID.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
---
2+
sort: 2
3+
title: Particle identification (PID)
4+
---
5+
6+
# Particle identification (PID)
7+
8+
Table of contents:
9+
10+
* [Introduction](#introduction)
11+
* [Usage in user tasks](#usage-in-user-tasks)
12+
* [Task for TOF and TPC PID](#task-for-tof-and-tpc-pid)
13+
* [Example of tasks that use the PID tables (and how to run them)](#example-of-tasks-that-use-the-pid-tables-and-how-to-run-them)
14+
15+
Here are described the working principles of Particle Identification (PID) in O2 and how to get PID information (expected values, nSigma separation _et cetera_) in your analysis tasks if you plan to identify particles.
16+
17+
## Introduction
18+
19+
PID is handled in analysis by filling helper tables that can be joined to tracks (propagated or not).
20+
The parameterization of the expected detector response (e.g. signal, resolution, separation) is used in the PID tasks to fill the PID tables.
21+
These parameterizations are detector specific and handled by the detector experts; usually, they are shipped to the PID helper tasks from the CCDB to match the data-taking conditions.
22+
The interface between the detector and the Analysis Framework (i.e. your tracks) is fully enclosed in [`PIDResponse.h`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/DataModel/PIDResponse.h).
23+
Here are the defined tables for the PID information for all the detectors.
24+
25+
The filling of the PID tables is delegated to dedicated tasks in [`Common/TableProducer/PID/`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/TableProducer/PID)
26+
Examples of these tasks can be found in [`pidTOF.cxx`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/TableProducer/PID/pidTOF.cxx) and [`pidTPC.cxx`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/TableProducer/PID/pidTPC.cxx) for TOF and TPC tables, respectively.
27+
28+
## Usage in user tasks
29+
30+
Tables for PID values in O2 are defined in [`PIDResponse.h`](https://github.com/AliceO2Group/O2Physics/blob/master/Common/DataModel/PIDResponse.h).
31+
You can include it in your task with:
32+
33+
``` c++
34+
#include "Common/DataModel/PIDResponse.h"
35+
...
36+
37+
```
38+
39+
In the process functions, you can join the table to add the PID (per particle mass hypothesis) information to the track.
40+
In this case, we are using the mass hypothesis of the electron, but tables for nine (9) stable particle species are produced (`El`, `Mu`, `Pi`, `Ka`, `Pr`, `De`, `Tr`, `He`, `Al`).
41+
42+
* For the **TOF** PID as:
43+
44+
``` c++
45+
void process(soa::Join<aod::Tracks, aod::pidTOFEl>::iterator const& track) {
46+
track.tofNSigmaEl();
47+
}
48+
```
49+
50+
* For the **TPC** PID as:
51+
52+
``` c++
53+
void process(soa::Join<aod::Tracks, aod::pidTPCEl>::iterator const& track) {
54+
track.tpcNSigmaEl();
55+
}
56+
```
57+
58+
* For both TOF and TPC PID information as:
59+
60+
``` c++
61+
void process(soa::Join<aod::Tracks, aod::pidTOFEl, aod::pidTPCEl>::iterator const& track) {
62+
const float combNSigmaEl = std::sqrt( track.tofNSigmaEl() * track.tofNSigmaEl() + track.tpcNSigmaEl() * track.tpcNSigmaEl());
63+
}
64+
```
65+
66+
## Task for TOF and TPC PID
67+
68+
**In short:** O2 tasks dedicated to the filling of the PID tables are called with
69+
70+
* Filling TOF PID Table
71+
72+
``` bash
73+
o2-analysis-pid-tof
74+
```
75+
76+
This requires a helper class for the building of the event time information
77+
78+
``` bash
79+
o2-analysis-pid-tof-base
80+
```
81+
82+
These tasks can be configured according to the needs specified by the detector experts.
83+
If you are in doubt, you can contact them or take the configuration of the Hyperloop as a reference.
84+
85+
* Filling the TPC PID Table
86+
87+
``` bash
88+
o2-analysis-pid-tpc
89+
```
90+
91+
``` bash
92+
o2-analysis-pid-tpc-base
93+
```
94+
95+
These tasks can be configured according to the needs specified by the detector experts.
96+
If you are in doubt, you can contact them or take the configuration of the Hyperloop as a reference.
97+
98+
## Example of tasks that use the PID tables (and how to run them)
99+
100+
* TOF PID task [`pidTOF.cxx`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/TableProducer/PID/pidTOF.cxx)
101+
You can run the TOF spectra task with:
102+
103+
``` bash
104+
o2-analysis-pid-tof-qa --aod-file AO2D.root -b | o2-analysis-pid-tof -b | o2-analysis-pid-tof-base -b
105+
```
106+
107+
* TPC PID task [`pidTPC.cxx`](https://github.com/AliceO2Group/O2Physics/tree/master/Common/TableProducer/PID/pidTPC.cxx)
108+
You can run the TPC spectra task with:
109+
110+
``` bash
111+
o2-analysis-pid-tpc-qa --aod-file AO2D.root -b | o2-analysis-pid-tpc -b | o2-analysis-pid-tpc-base -b
112+
```
113+
114+
## Enabling QA histograms
115+
116+
* QA histograms should come with the PID tasks; they can be enabled by including the QA tasks in your workflow when running locally or with the corresponding QA tasks as in:
117+
118+
For the **TOF** QA plots
119+
120+
``` bash
121+
... | o2-analysis-pid-tof-qa | ...
122+
```
123+
124+
For the **TPC** QA plots
125+
126+
``` bash
127+
... | o2-analysis-pid-tpc-qa | ...
128+
```
129+
130+
Where by `...` we mean the other tasks in your workflow.
131+

docs/analysis-tools/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
sort: 3
3+
title: Analysis tools
4+
---
5+
6+
# Analysis tools
7+
8+
This section of the documentation is intended to explain basic analysis tools:
9+
10+
{% include list.liquid all=true %}

0 commit comments

Comments
 (0)