Skip to content

[WIP] [QC-1088] Late Tasks as post-processing within the message passing framework#2665

Open
knopers8 wants to merge 2 commits intoAliceO2Group:masterfrom
knopers8:late-tasks-nice
Open

[WIP] [QC-1088] Late Tasks as post-processing within the message passing framework#2665
knopers8 wants to merge 2 commits intoAliceO2Group:masterfrom
knopers8:late-tasks-nice

Conversation

@knopers8
Copy link
Copy Markdown
Collaborator

Late Tasks can create new MonitorObjects based on existing MOs and QOs in the QC workflow.
I called them "late", because they would be typically executed close to the end of the processing chain.
When running QC workflows distributed over multiple nodes, with Mergers combining the results, they can be used to process the merged results.
The adequate use cases involve:

  • creating trends and correlations from other MonitorObjects and QualityObjects (trending a histogram average, trending quality)
  • creating plots which can only be constructed from merged objects (ratios, visualizations, ...)
  • creating summary canvases of QualityObjects available in the QC workflow

They are meant to slowly replace Post-Processing, at least in the use cases mentioned above.

Needs #2660 to have [WIP] removed.

knopers8 added 2 commits April 2, 2026 11:28
Actor is a template base class for all QC Data Processors. It is supposed to bring their commonalities together,
such as: service initialization, Data Processing Layer adoption, retrieving configuration and runtime parameters,
interactions with controlling entities (DPL driver, AliECS, ODC).

The design is based on CRTP (see the web for explanation), which allows us to:
- avoid code repetition in implementing aforementioned commonalities
- optionally perform certain actions depending on traits of an Actor specialization.
CRTP, in contrast to dynamic inheritance, is also advertised to avoid performance impact due to vtable lookups.
It is certainly a nice bonus in our case, but it was not the main motivation for CRTP-based approach.

To allow for compile-time customization of centralized Actor features, we require each concrete Actor to implement
an ActorTraits structure with certain parameters which is enforced with ValidActorTraits concept.
The traits are separated from the main Actor class to improve readability and allow for shorter compilation times
by allowing many helper functions avoid including Actor.h and a corresponding actor specialization. For additional
savings on compilation time and clutter in code, we validate ActorTraits specializations with a concept only in
Actor, but this could be revisited if proven wrong.

This commit paves the path for refactoring existing QC data processors as Actor specializations/children.
…amework

Late Tasks can create new MonitorObjects based on existing MOs and QOs in the QC workflow.
I called them "late", because they would be typically executed close to the end of the processing chain.
When running QC workflows distributed over multiple nodes, with Mergers combining the results, they can be used to process the merged results.
The adequate use cases involve:
* creating trends and correlations from other MonitorObjects and QualityObjects (trending a histogram average, trending quality)
* creating plots which can only be constructed from merged objects (ratios, visualizations, ...)
* creating summary canvases of QualityObjects available in the QC workflow

They are meant to slowly replace Post-Processing, at least in the use cases mentioned above.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant