Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QC-910] Moving windows in asynchronous QC #2014

Merged
merged 6 commits into from
Oct 19, 2023

Conversation

knopers8
Copy link
Collaborator

@knopers8 knopers8 commented Oct 13, 2023

This commit allows to create objects containing data points for adjacent time windows alongside of having an integrated object for the whole run. The window length is set by the usual "cycleDurationSeconds" parameter and the windows are guaranteed not to overlap. The generated objects can be subject to Checks, just as integrated objects.

Technically, the commit brings a few major changes as well:

  • The decision on finishing a cycle is now up to Timekeeper (excluding end of stream), which is still timer-based in sync QC, but data-driven in async QC, i.e. a new cycle is started when a sample does not fall into currently processed window.
  • The QC file I/O has been refactored by bringing it into a dedicated class
  • The QC file structure was reorganized by having two directories at the top - "int" and "mw". The first contains the integrated plots in the usual structure. The latter contains moving windows in the hierarchy mw/<DET>/<TASK>/<MW START>. This should allow for easy usage by any user scripts (at the cost of a bit more complex walking algorithms for reading it back in the QC chain)

This commit allows to create objects containing data points for adjacent time windows alongside of having an integrated object for the whole run. The window length is set by the usual "cycleDurationSeconds" parameter and the windows are guaranteed not to overlap. The generated objects can be subject to Checks, just as integrated objects.

Technically, the commit brings a few major changes as well:
- The decision on finishing a cycle is now up to Timekeeper (excluding end of stream), which is still timer-based in sync QC, but data-driven in async QC, i.e. a new cycle is started when a sample does not fall into currently processed window.
- The QC file I/O has been refactored by bringing it into a dedicated class
- The QC file structure was reorganized by having two directories at the top - "int" and "mw". The first contains the integrated plots in the usual structure. The latter contains moving windows in the hierarchy "mw/<DET>/<TASK>/<MW START>". This should allow for easy usage by any user scripts (at the cost of a bit more complex walking algorithms for reading it back in the QC chain)
@knopers8 knopers8 requested a review from Barthelemy as a code owner October 13, 2023 13:14
@knopers8
Copy link
Collaborator Author

knopers8 commented Oct 13, 2023

an example file structure for ITS Clusters task with 30s window with two plots as moving windows.
image

@iravasen @JianLIUhep

@iravasen
Copy link
Collaborator

Hi @knopers8, thanks a lot! Sorry I missed your message! I see the timestamps are from Sept 20th, does it mean that the timestamps are taken relative to when the run started? I mean, are they taken from the TFs?

@knopers8
Copy link
Collaborator Author

Hi @iravasen, the timestamps are unix timestamps in ms (since epoch). They are computed based on TF IDs, nOrbitPerTF and SOR time from the CCDB (ccdb::BasicCCDBManager::instance().getRunDuration()). Thus, it is not super-precise, a possible improvement would be to use firstTForbit...

@iravasen
Copy link
Collaborator

Thank you, sounds already good like this to me. Don't know about the difference in seconds between SOR and firstTForbit but I guess it is quite small.

Copy link
Collaborator

@Barthelemy Barthelemy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice work. I took some time to read carefully all of it but could not find flaws. I have a few unimportant comments.

Framework/include/QualityControl/TaskRunner.h Outdated Show resolved Hide resolved
Framework/src/InfrastructureGenerator.cxx Show resolved Hide resolved
Framework/src/RootFileStorage.cxx Outdated Show resolved Hide resolved
@knopers8 knopers8 enabled auto-merge (squash) October 19, 2023 08:28
@knopers8 knopers8 merged commit 746f13f into AliceO2Group:master Oct 19, 2023
2 checks passed
@knopers8 knopers8 deleted the moving-windows-async branch October 19, 2023 12:06
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.

3 participants