Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • L LHCb
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 165
    • Issues 165
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Jira
    • Jira
  • Merge requests 50
    • Merge requests 50
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Issue
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • LHCb
  • LHCb
  • Merge requests
  • !3088

New ODIN implementation

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Marco Clemencic requested to merge marcocle/odin-v7 into master Jun 07, 2021
  • Overview 111
  • Commits 31
  • Pipelines 23
  • Changes 32

This is an alternative to !3065 (closed)

I'm proposing a completely new implementation of the ODIN class, where the ODIN raw bank is decoded on demand and the internal storage is just the raw bank, reducing the object size (on top of DataObject) to 40 bytes instead of the current O(100) (it's difficult to judge from the number of data members).

The new class is in a dedicated (versioned) namespace to allow for multiple independent versions.

The changes are (and cannot be) backward compatible, in particular because I replaced some enums to enum class and because I renamed the enum TriggerType to TriggerTypes for consistency with the others.

I also refactored the encoding/decoding into the ODIN constructor and a special factory for decoding old versions of the bank (currently supporting only 7 and 6, but 6 can be dropped at some point). This partially addresses the issue with the copy of the decoding code in Allen.

The only issue still to be addressed is the fact that I cannot read an old ODIN object from a ROOT file. There are a few tests failing for this reason, but AFAIR we never really stored the ODIN object to file in production, so we could drop the tests or find how to implement a custom TStreamer to address schema evolution (which would be needed only to support Run2 data).

Closes #123 (closed)

Requires Lbcom!562 (merged) Rec!2464 (merged) Phys!950 (merged) Moore!877 (merged) Allen!587 (merged) Analysis!818 (merged) Panoptes!132 (merged) Castelao!114 (closed)

Includes !3250 (merged)

Edited Sep 29, 2021 by Marco Clemencic
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: marcocle/odin-v7