From 9722b6c64012c78e0eaa3fe48e3605cd5a656ab1 Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 20:39:59 +0100 Subject: [PATCH 1/9] Update TrackSelection.md --- docs/analysis-tools/TrackSelection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analysis-tools/TrackSelection.md b/docs/analysis-tools/TrackSelection.md index b148c687..eabae6de 100644 --- a/docs/analysis-tools/TrackSelection.md +++ b/docs/analysis-tools/TrackSelection.md @@ -1,5 +1,5 @@ --- -sort: 3 +sort: 4 title: Track selection and propagation --- From 06287686d17549f264bc42458d5d6d6371f78b8c Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 20:40:19 +0100 Subject: [PATCH 2/9] Update PID.md --- docs/analysis-tools/PID.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analysis-tools/PID.md b/docs/analysis-tools/PID.md index 086a2be2..9510d2c6 100644 --- a/docs/analysis-tools/PID.md +++ b/docs/analysis-tools/PID.md @@ -1,5 +1,5 @@ --- -sort: 2 +sort: 3 title: Particle identification (PID) --- From 1f4adb0e2458ea259a68afb78bd5f3a41d27666a Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 20:40:30 +0100 Subject: [PATCH 3/9] Update MultiplicityAndCentralitySelection.md --- docs/analysis-tools/MultiplicityAndCentralitySelection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analysis-tools/MultiplicityAndCentralitySelection.md b/docs/analysis-tools/MultiplicityAndCentralitySelection.md index 5288fe8a..4f166904 100644 --- a/docs/analysis-tools/MultiplicityAndCentralitySelection.md +++ b/docs/analysis-tools/MultiplicityAndCentralitySelection.md @@ -1,5 +1,5 @@ --- -sort: 1 +sort: 2 title: Multiplicity and centrality selection --- From f3f169fe1382c7303e10df8eb0ff30bead2d6150 Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:01:18 +0100 Subject: [PATCH 4/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 67 ++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index bddd7fe1..2cda849d 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -1,5 +1,5 @@ --- -sort: 0 +sort: 1 title: Event Selection --- @@ -365,3 +365,68 @@ One can set other configurables in the json file. This json file has to be provi * One has to apply offline selections in O2 explicitly in contrast to AliPhysics where these selections were applied together with trigger alias selection. * EvSel table might be also useful in user tasks relying on beam-beam and beam-gas decisions in forward detectors, e.g. in UPC tasks. + + +## Occupancy estimators and selection bits + + +In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. + +- The TPC has a long drift time (~100 µs), so tracks from multiple collisions can overlap in the detector. +- Higher occupancy worsens: + - **Tracking efficiency** + - **PID performance (dE/dx shifts, peak broadening)** +- Occupancy can be estimated using: + - the number of ITS tracks with ≥5 clusters from other collisions in a time window around a given event. In the analysis it can be retrieved as: + ``` c++ + int occupancyByTracks = col.trackOccupancyInTimeRange(); // range is from 0 up to ~15000 + ``` + - the summed FT0C amplitude from other collisions: + ``` c++ + float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); + ``` + In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from the collision-of-interest. + Both occupancy estimators are calculated per event in [EventSelectionModule.h](https://github.com/AliceO2Group/O2Physics/blob/daily-20251029-0000/Common/Tools/EventSelectionModule.h#L1361). + Estimators return the value of -1 if a collision is close to Time Frame borders (so, not enough information for the occupancy calculation; we need information -40 µs...+100 µs time range wrt a given collision). + + +--- +In addition to the occupancy estimators described above, several additional event selection bits are implemented for a better cleanup of various nearby effects from other collisions (related not only to the TPC, but also to the ITS, e.g. to high occupancies in the ITS Readout Frames). +The following table summarizes the event selection bits used to mitigate occupancy effects in ALICE Run 3. + +| **Bit** | **Definition** | **Strictness** | **Typical Effect / Event Loss** | +|---------|----------------|----------------|--------------------------------| +| `kNoCollInTimeRangeNarrow` | Rejects events if another collision within **±0.25 µs** | Narrow veto | Useful to suppress residual BC mis-associations; minimal loss | +| `kNoCollInTimeRangeStandard` | Rejects if: (1) another coll. within ±0.25 µs, or (2) multiplicity > threshold in −4…+2 µs | Medium | Further suppression of effects from nearby collisions; ~3-10% event loss depending on IR | +| `kNoCollInTimeRangeStrict` | Rejects events if another collision is within **±10 µs** | Very strict | Strongly reduces effects from nearby events; large loss of statistics at high IR (can exceed 30–40%) | +| `kNoCollInRofStrict` | Rejects events if >1 collision in the same **ITS Readout Frame** (~15 µs in Pb-Pb) | Very strict | Removes in-ROF pileup; at 38 kHz Pb–Pb cuts ~35% of events | +| `kNoCollInRofStandard` | Allows >1 collision per ROF but rejects if another has multiplicity > threshold (default: FT0C amplitude >5000 a.u. ≈ 500 tracks) | Medium | Retains more stats, but protects against large in-ROF pileup | +| `kNoHighMultCollInPrevRof` | Vetoes event if **previous ROF** has high multiplicity (FT0C >5000 a.u.) | only for cross-ROF ITS reco | Removes cases where previous ROF “steals” clusters; few % loss, but improves ITS tracking quality | + +These bits can be used as follows: +``` c++ +if (col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) { /* do analysis */ } +``` +--- + +More details can be found in the [report at the APW 2024](https://indico.cern.ch/event/1462154/#7-occupancy-effects), where the concepts and observations are explained (while some figures and indicated values might be outdated). + +Tight cuts on occupancy improve quality (better S/B, cleaner PID, less bias in kinematics), but reduce event statistics. +Sensitivity to the occupancy effects depends on analysis. Therefore, the suggested approach is to study how results of a given analysi change as a function of occupancy (one may try several occupancy "bins", e.g. [0,500), (500, 2000), (2000-4000)), +and in addition apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, and 'kNoCollInTimeRangeStandard' to make a further cleaunup. + +Note that the TPC-related occupancy effects are mostly pronounced in Pb-Pb runs, however, one may use the tools described above for occupancy studies also in pp and light-ion runs. + + + +## Usage of the RCT flags + +(to be updated) + + + + + + + + From 23762eed3f667ce1c69b03464ff251ff64dd646f Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:28:13 +0100 Subject: [PATCH 5/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 51 +++++++++++++++------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index 2cda849d..025d82aa 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -24,6 +24,7 @@ Table of contents: * [Configurables](#configurables) * [Remarks](#remarks) + ### Concept The main purpose of the event selection framework in O2 is to provide tools to select triggered events and reject pileup, beam-gas and poor quality collisions. @@ -367,59 +368,63 @@ One can set other configurables in the json file. This json file has to be provi -## Occupancy estimators and selection bits - +## Occupancy estimation In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. -- The TPC has a long drift time (~100 µs), so tracks from multiple collisions can overlap in the detector. +- The TPC has a long drift time (~100 µs), so clusters from particles originated from multiple collisions can overlap in the detector. - Higher occupancy worsens: - **Tracking efficiency** - **PID performance (dE/dx shifts, peak broadening)** -- Occupancy can be estimated using: - - the number of ITS tracks with ≥5 clusters from other collisions in a time window around a given event. In the analysis it can be retrieved as: - ``` c++ - int occupancyByTracks = col.trackOccupancyInTimeRange(); // range is from 0 up to ~15000 - ``` - - the summed FT0C amplitude from other collisions: - ``` c++ - float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); - ``` - In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from the collision-of-interest. + +### Occupancy estimators +Occupancy can be estimated using: +- the number of ITS tracks from other collisions in a time window around a given event. In the analysis it can be retrieved as: + ``` c++ + int occupancyByTracks = col.trackOccupancyInTimeRange(); // range is from 0 up to ~15k + ``` +- the alternative occupancy estimator is the summed FT0C amplitude from other collisions: + ``` c++ + float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); // range is from 0 up to ~150k + ``` +- In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from a collision-of-interest. Both occupancy estimators are calculated per event in [EventSelectionModule.h](https://github.com/AliceO2Group/O2Physics/blob/daily-20251029-0000/Common/Tools/EventSelectionModule.h#L1361). - Estimators return the value of -1 if a collision is close to Time Frame borders (so, not enough information for the occupancy calculation; we need information -40 µs...+100 µs time range wrt a given collision). +- Estimators return the value of -1 if a collision is close to Time Frame borders (so, not enough information for the occupancy calculation; we need information -40 µs...+100 µs time range wrt a given collision). ---- +### Occupancy selection bits In addition to the occupancy estimators described above, several additional event selection bits are implemented for a better cleanup of various nearby effects from other collisions (related not only to the TPC, but also to the ITS, e.g. to high occupancies in the ITS Readout Frames). The following table summarizes the event selection bits used to mitigate occupancy effects in ALICE Run 3. | **Bit** | **Definition** | **Strictness** | **Typical Effect / Event Loss** | |---------|----------------|----------------|--------------------------------| | `kNoCollInTimeRangeNarrow` | Rejects events if another collision within **±0.25 µs** | Narrow veto | Useful to suppress residual BC mis-associations; minimal loss | -| `kNoCollInTimeRangeStandard` | Rejects if: (1) another coll. within ±0.25 µs, or (2) multiplicity > threshold in −4…+2 µs | Medium | Further suppression of effects from nearby collisions; ~3-10% event loss depending on IR | +| `kNoCollInTimeRangeStandard` | Rejects if: (1) another coll. within ±0.25 µs, or (2) multiplicity of a coll. in dt −4…+2 µs > threshold | Medium | Further suppression of effects from nearby collisions; ~3-10% event loss depending on IR | | `kNoCollInTimeRangeStrict` | Rejects events if another collision is within **±10 µs** | Very strict | Strongly reduces effects from nearby events; large loss of statistics at high IR (can exceed 30–40%) | | `kNoCollInRofStrict` | Rejects events if >1 collision in the same **ITS Readout Frame** (~15 µs in Pb-Pb) | Very strict | Removes in-ROF pileup; at 38 kHz Pb–Pb cuts ~35% of events | | `kNoCollInRofStandard` | Allows >1 collision per ROF but rejects if another has multiplicity > threshold (default: FT0C amplitude >5000 a.u. ≈ 500 tracks) | Medium | Retains more stats, but protects against large in-ROF pileup | -| `kNoHighMultCollInPrevRof` | Vetoes event if **previous ROF** has high multiplicity (FT0C >5000 a.u.) | only for cross-ROF ITS reco | Removes cases where previous ROF “steals” clusters; few % loss, but improves ITS tracking quality | +| `kNoHighMultCollInPrevRof` | Vetoes event if **previous ROF** has high multiplicity (FT0C >5000 a.u.); only for cross-ROF ITS reco | Medium | Removes cases where previous ROF “steals” clusters; few % loss, but improves ITS tracking quality | These bits can be used as follows: ``` c++ if (col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) { /* do analysis */ } ``` ---- -More details can be found in the [report at the APW 2024](https://indico.cern.ch/event/1462154/#7-occupancy-effects), where the concepts and observations are explained (while some figures and indicated values might be outdated). + +### Discussion + +More details on occupancy in Pb-Pb can be found in the [report at the APW 2024](https://indico.cern.ch/event/1462154/#7-occupancy-effects), where the concepts and observations are explained (while some figures and indicated values might be outdated). Tight cuts on occupancy improve quality (better S/B, cleaner PID, less bias in kinematics), but reduce event statistics. -Sensitivity to the occupancy effects depends on analysis. Therefore, the suggested approach is to study how results of a given analysi change as a function of occupancy (one may try several occupancy "bins", e.g. [0,500), (500, 2000), (2000-4000)), -and in addition apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, and 'kNoCollInTimeRangeStandard' to make a further cleaunup. -Note that the TPC-related occupancy effects are mostly pronounced in Pb-Pb runs, however, one may use the tools described above for occupancy studies also in pp and light-ion runs. +However, sensitivity to the occupancy effects depends on analysis. +Therefore, the suggested approach is to study how results of a given analysi change as a function of occupancy: one may try several occupancy "bins", e.g. `[0,500), (500, 1000), (1000-2000), (2000-4000)`, etc., +and, in addition, apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, or `kNoCollInTimeRangeStandard` to make a further cleaunup. +Note that TPC-related occupancy effects are most pronounced in Pb–Pb runs, however, the tools described above can also be used for occupancy studies in pp and light-ion runs. -## Usage of the RCT flags +## Usage of RCT flags (to be updated) From 51469c50100af7f23e855fe79e30097974e14286 Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:40:25 +0100 Subject: [PATCH 6/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index 025d82aa..3914cca0 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -378,21 +378,25 @@ In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contam - **PID performance (dE/dx shifts, peak broadening)** ### Occupancy estimators -Occupancy can be estimated using: -- the number of ITS tracks from other collisions in a time window around a given event. In the analysis it can be retrieved as: + +A single-value "integrated" occupancy estimator for a given collision can be calculated by summing +- the number of ITS tracks from other collisions within a defined time window around the given event. In the analysis, it can be accessed as: ``` c++ - int occupancyByTracks = col.trackOccupancyInTimeRange(); // range is from 0 up to ~15k + int occupancyByTracks = col.trackOccupancyInTimeRange(); // range: from 0 up to ~15k ``` -- the alternative occupancy estimator is the summed FT0C amplitude from other collisions: +- alternatively, we can sum up FT0C amplitudes from other collisions: ``` c++ - float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); // range is from 0 up to ~150k + float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); // range: from 0 up to ~150k ``` -- In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from a collision-of-interest. - Both occupancy estimators are calculated per event in [EventSelectionModule.h](https://github.com/AliceO2Group/O2Physics/blob/daily-20251029-0000/Common/Tools/EventSelectionModule.h#L1361). -- Estimators return the value of -1 if a collision is close to Time Frame borders (so, not enough information for the occupancy calculation; we need information -40 µs...+100 µs time range wrt a given collision). + +Notes: +- Both occupancy estimators are calculated per each collision in the event selection routine, [EventSelectionModule.h](https://github.com/AliceO2Group/O2Physics/blob/daily-20251029-0000/Common/Tools/EventSelectionModule.h#L1361). +- In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from a collision-of-interest. +- Estimators return the value of `-1` if a given collision is close to Time Frame borders (so, not enough information for the occupancy calculation, while we need information within -40 µs...+100 µs time range wrt a given collision). ### Occupancy selection bits + In addition to the occupancy estimators described above, several additional event selection bits are implemented for a better cleanup of various nearby effects from other collisions (related not only to the TPC, but also to the ITS, e.g. to high occupancies in the ITS Readout Frames). The following table summarizes the event selection bits used to mitigate occupancy effects in ALICE Run 3. From c333c4e8cf3a614b4e5e9e81dff7bf88b5fbfd9d Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:42:56 +0100 Subject: [PATCH 7/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index 3914cca0..2607c76b 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -397,8 +397,9 @@ Notes: ### Occupancy selection bits -In addition to the occupancy estimators described above, several additional event selection bits are implemented for a better cleanup of various nearby effects from other collisions (related not only to the TPC, but also to the ITS, e.g. to high occupancies in the ITS Readout Frames). -The following table summarizes the event selection bits used to mitigate occupancy effects in ALICE Run 3. +In addition to the occupancy estimators described above, several special event selection bits are implemented for a better cleanup of various nearby effects from other collisions (related not only to the TPC, but also to the ITS, e.g. to high occupancies in the ITS Readout Frames). + +The following table summarizes the event selection bits used to mitigate occupancy effects in Pb-Pb: | **Bit** | **Definition** | **Strictness** | **Typical Effect / Event Loss** | |---------|----------------|----------------|--------------------------------| From 2f39e0571f290d7451844897f0b7beeae06abdaa Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:49:57 +0100 Subject: [PATCH 8/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index 2607c76b..cb931fa3 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -370,12 +370,12 @@ One can set other configurables in the json file. This json file has to be provi ## Occupancy estimation -In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. +In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. -- The TPC has a long drift time (~100 µs), so clusters from particles originated from multiple collisions can overlap in the detector. -- Higher occupancy worsens: - - **Tracking efficiency** - - **PID performance (dE/dx shifts, peak broadening)** +- The TPC has a long drift time (~100 µs), so clusters from particles originated from multiple collisions can overlap in the detector. +- Higher occupancy worsens: + - Tracking efficiency + - PID performance (dE/dx shifts, peak broadening) ### Occupancy estimators @@ -420,10 +420,10 @@ if (col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) { /* do analysi More details on occupancy in Pb-Pb can be found in the [report at the APW 2024](https://indico.cern.ch/event/1462154/#7-occupancy-effects), where the concepts and observations are explained (while some figures and indicated values might be outdated). -Tight cuts on occupancy improve quality (better S/B, cleaner PID, less bias in kinematics), but reduce event statistics. +Tight cuts on occupancy improve quality (better S/B, cleaner PID, less bias in kinematics), but reduce event statistics. -However, sensitivity to the occupancy effects depends on analysis. -Therefore, the suggested approach is to study how results of a given analysi change as a function of occupancy: one may try several occupancy "bins", e.g. `[0,500), (500, 1000), (1000-2000), (2000-4000)`, etc., +However, sensitivity to the occupancy effects depends on analysis. +Therefore, the suggested approach is to study how results of a given analysi change as a function of occupancy: one may try several occupancy "bins", e.g. `[0,500), (500, 1000), (1000-2000), (2000-4000)`, etc., and, in addition, apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, or `kNoCollInTimeRangeStandard` to make a further cleaunup. Note that TPC-related occupancy effects are most pronounced in Pb–Pb runs, however, the tools described above can also be used for occupancy studies in pp and light-ion runs. From 62eadbc418e1a044c7103b6b77153fc88eef6a69 Mon Sep 17 00:00:00 2001 From: altsybee Date: Wed, 29 Oct 2025 22:50:58 +0100 Subject: [PATCH 9/9] Update EventSelection.md --- docs/analysis-tools/EventSelection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analysis-tools/EventSelection.md b/docs/analysis-tools/EventSelection.md index cb931fa3..920e2690 100644 --- a/docs/analysis-tools/EventSelection.md +++ b/docs/analysis-tools/EventSelection.md @@ -370,7 +370,7 @@ One can set other configurables in the json file. This json file has to be provi ## Occupancy estimation -In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. +In ALICE Run 3 Pb–Pb collisions, **occupancy** in the TPC refers to the contamination of an event’s TPC clusters by signals from other nearby collisions within the TPC drift time window. - The TPC has a long drift time (~100 µs), so clusters from particles originated from multiple collisions can overlap in the detector. - Higher occupancy worsens: