You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/analysis-tools/EventSelection.md
+28-23Lines changed: 28 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,7 @@ Table of contents:
24
24
*[Configurables](#configurables)
25
25
*[Remarks](#remarks)
26
26
27
+
27
28
### Concept
28
29
29
30
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
367
368
368
369
369
370
370
-
## Occupancy estimators and selection bits
371
-
371
+
## Occupancy estimation
372
372
373
373
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.
374
374
375
-
- The TPC has a long drift time (~100 µs), so tracks from multiple collisions can overlap in the detector.
375
+
- The TPC has a long drift time (~100 µs), so clusters from particles originated from multiple collisions can overlap in the detector.
In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from the collision-of-interest.
379
+
380
+
### Occupancy estimators
381
+
Occupancy can be estimated using:
382
+
- the number of ITS tracks from other collisions in a time window around a given event. In the analysis it can be retrieved as:
383
+
``` c++
384
+
int occupancyByTracks = col.trackOccupancyInTimeRange(); // range is from 0 up to ~15k
385
+
```
386
+
- the alternative occupancy estimator is the summed FT0C amplitude from other collisions:
387
+
``` c++
388
+
float occupancyByFT0C = col.ft0cOccupancyInTimeRange(); // range is from 0 up to ~150k
389
+
```
390
+
- In the occupancy calculation, multiplicities of nearby collisions are "weighted" according to their time separation from a collision-of-interest.
389
391
Both occupancy estimators are calculated per event in [EventSelectionModule.h](https://github.com/AliceO2Group/O2Physics/blob/daily-20251029-0000/Common/Tools/EventSelectionModule.h#L1361).
390
-
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).
392
+
- 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).
391
393
392
394
393
-
---
395
+
### Occupancy selection bits
394
396
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).
395
397
The following table summarizes the event selection bits used to mitigate occupancy effects in ALICE Run 3.
| `kNoCollInTimeRangeNarrow` | Rejects events if another collision within **±0.25 µs** | Narrow veto | Useful to suppress residual BC mis-associations; minimal loss |
400
-
| `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 |
402
+
| `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 |
401
403
| `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%) |
402
404
| `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 |
403
405
| `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 |
404
-
| `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 |
406
+
| `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 |
405
407
406
408
These bits can be used as follows:
407
409
``` c++
408
410
if (col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) { /* do analysis */ }
409
411
```
410
-
---
411
412
412
-
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).
413
+
414
+
### Discussion
415
+
416
+
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).
413
417
414
418
Tight cuts on occupancy improve quality (better S/B, cleaner PID, less bias in kinematics), but reduce event statistics.
415
-
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)),
416
-
and in addition apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, and 'kNoCollInTimeRangeStandard' to make a further cleaunup.
417
419
418
-
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.
420
+
However, sensitivity to the occupancy effects depends on analysis.
421
+
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.,
422
+
and, in addition, apply occupancy selection bits, e.g. `kNoCollInTimeRangeNarrow` to eliminate the bc-collision mismatches, or `kNoCollInTimeRangeStandard` to make a further cleaunup.
419
423
424
+
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.
0 commit comments