Add NSW Pad Trigger RDO

Yuval Zach requested to merge yzach/athena:feature/pad-trigger-rdo into 21.3

This MR adds class definitions for data coming from the pad trigger, following the data -> DataVector -> IdentifiableContainer hierarchy. Said data consists of:

  • Metadata (BCID, L1ID, sector, etc.)
  • Pad trigger input (i.e., a list of pFEB locations at which a hit was detected)
  • Pad trigger decision (band IDs, phi IDs, coincidence counts)

In addition to the data class definition, this MR also defines transient <-> persistent converters for pad trigger data containers, along with persistent representation structs, in MuonEventTPCnv. Additionally, it implements an AthenaPool converter under MuonEventAthenaPool, and registers it as a converter for NSW_PadTriggerRawDataContainer.

Outstanding questions:

  1. Are the data classes appropriate? Is anything missing / extraneous / problematic?
  2. Where should errors in conversion be handled? Should the AthenaPool converters be deemed noexcept, or can they throw (and terminate execution?)?
  3. When attempting to read the persistent array of pFEB hit lists with ROOT's TBrowser, ROOT segfaults. Is this an issue on ROOT's side, or does AthenaPool not support arrays of vectors?
  4. How should the collection's IdentifierHash, and the container's hashMax, be decided?

cc @ztarem @rozeny @gavner @rosati @lorne @nkoehler

Edited by Yuval Zach

Merge request reports