Particle identification (PID)
Table of contents:
- Introduction
- Usage in user tasks
- Task for TOF and TPC PID
- Example of tasks that use the PID tables (and how to run them)
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.
Introduction
PID is handled in analysis by filling helper tables that can be joined to tracks (propagated or not).
The parameterization of the expected detector response (e.g. signal, resolution, separation) is used in the PID tasks to fill the PID tables.
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.
The interface between the detector and the Analysis Framework (i.e. your tracks) is fully enclosed in PIDResponse.h.
Here are the defined tables for the PID information for all the detectors.
The filling of the PID tables is delegated to dedicated tasks in Common/TableProducer/PID/
Examples of these tasks can be found in pidTOF.cxx and pidTPC.cxx for TOF and TPC tables, respectively.
Usage in user tasks
Tables for PID values in O2 are defined in PIDResponse.h.
You can include it in your task with:
#include "Common/DataModel/PIDResponse.h"
...
In the process functions, you can join the table to add the PID (per particle mass hypothesis) information to the track.
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).
-
For the TOF PID as:
void process(soa::Join<aod::Tracks, aod::pidTOFEl>::iterator const& track) { track.tofNSigmaEl(); } -
For the TPC PID as:
void process(soa::Join<aod::Tracks, aod::pidTPCEl>::iterator const& track) { track.tpcNSigmaEl(); } -
For both TOF and TPC PID information as:
void process(soa::Join<aod::Tracks, aod::pidTOFEl, aod::pidTPCEl>::iterator const& track) { const float combNSigmaEl = std::sqrt( track.tofNSigmaEl() * track.tofNSigmaEl() + track.tpcNSigmaEl() * track.tpcNSigmaEl()); }
Task for TOF and TPC PID
In short: O2 tasks dedicated to the filling of the PID tables are called with
-
Filling TOF PID Table
o2-analysis-pid-tofThis requires a helper class for the building of the event time information
o2-analysis-pid-tof-baseThese tasks can be configured according to the needs specified by the detector experts. If you are in doubt, you can contact them or take the configuration of the Hyperloop as a reference.
-
Filling the TPC PID Table
o2-analysis-pid-tpco2-analysis-pid-tpc-baseThese tasks can be configured according to the needs specified by the detector experts. If you are in doubt, you can contact them or take the configuration of the Hyperloop as a reference.
Example of tasks that use the PID tables (and how to run them)
-
TOF PID task
pidTOF.cxxYou can run the TOF spectra task with:o2-analysis-pid-tof-qa --aod-file AO2D.root -b | o2-analysis-pid-tof -b | o2-analysis-pid-tof-base -b -
TPC PID task
pidTPC.cxxYou can run the TPC spectra task with:o2-analysis-pid-tpc-qa --aod-file AO2D.root -b | o2-analysis-pid-tpc -b | o2-analysis-pid-tpc-base -b
Enabling QA histograms
-
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:
For the TOF QA plots
... | o2-analysis-pid-tof-qa | ...For the TPC QA plots
... | o2-analysis-pid-tpc-qa | ...Where by
...we mean the other tasks in your workflow.
