Skip to content
Snippets Groups Projects

Draft: Rich: Deterministic pixel addresses, introduce CbmRichAddress

Open Martin Beyer requested to merge ma.beyer/cbmroot:rich_address into master
3 unresolved threads

Context:
For the RICH CFV we decided to mask channels in the digitization step providing a masking file,
since the cameras are out of acceptance and the extra material is negligible for downstream detectors.
For more details see #3471

As mentioned by @f.uhlig in #2898, the current version uses
a simple counter for channel addresses and pmt Ids.
This may not be deterministic across different fairsoft versions, operating systems, compilers, etc.
-> A channel masking file may fail here

This MR:
Now the channel addresses and pmt Ids are derived from node paths (only supports v22-v24 for now),
instead of an unsafe counter. This is deterministic and allows to safely use a channel masking file.

Changes

  • Refactoring/cleanup of CbmRichDigiMapManger
  • Rename of CbmRichDigiMapManger -> CbmRichGeoHandler
  • Introduction of CbmRichAddress (similar to STS & FSD implementation)
  • In CbmRichGeoHandler mapping from RICH pmt pixel node paths to RichAddress (deterministic)
  • Remove obsolete class CbmRichMCbmDigiMapManager

TODO's

  • More testing
  • Add support for v25, as node structure changed
  • Should older geometry versions (<v22) still be supported, as they have a different nodePath structure (address counter as fallback?)
    -> Using for now old counter implementation for versions < v22
Edited by Martin Beyer

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • assigned to @f.uhlig

  • 316 Int_t posBP = static_cast<Int_t>(
    317 std::stoul(nodePath.substr(bpInd + 14,
    318 pmtVolInd - bpInd - 14))); // cut away "/pmt_cont_vol_" ; position on BP
    319
    320 Int_t x = (posBP / 10) + ((((pmtPosBP - 1) / 3) + 1) % 2);
    321 Int_t y = (posBP % 10) + (2 - ((pmtPosBP - 1) % 3));
    322
    323 Int_t DiRICH_Add = ((7 & 0xF) << 12) + ((x & 0xF) << 8) + ((y & 0xF) << 4) + (posAtPmt & 0xF);
    324 Int_t pixelUID = ((DiRICH_Add << 16) | (channel & 0x00FF));
    325 Int_t pmtUID = ((x & 0xF) << 4) + (y & 0xF);
    326
    327 channelAddr = pixelUID;
    328 pmtId = pmtUID;
    329
    330 return 0;
    331 }
    • Comment on lines +299 to +331
      Author Developer

      For the mRICH the software channel addresses are directly derived from the geometry paths (addresses are encoded there) and identical with the hardware addresses
      (which follow some scheme, but definitely not the same as CbmRichAddress).
      CbmRichAddress is not used/needed.

      @v.friese May I ask how it is done for mSTS?

      • Do hardware addresses follow the CbmStsAddress scheme?
      • Do software addresses match hardware addresses? (or is there a mapping?)

      Is there a common way how subsystems should do it, looking towards CBM?

    • Please register or sign in to reply
    • Author Developer

      Since the RICH will use a masking file in the digitization step (not sure if only RICH does it this way),
      it needs to be loaded somehow (manually or automatically).

      @v.friese Is there a decision yet how this is done,
      e.g. if the CFV setup is used (lets say sis100_electron_cfv), this is checked in the digitization step and masking files are automatically loaded.

      Users having to manually load the masking files might lead to oversights/confusion.

    • I would have loved to have this solution throughout, but it seems some detector needs distinct geometries for the CFV. An automatism for loading the correct digitization parameters depending on the setup is not yet foreseen, but it is a good suggestion, I think.

    • Please register or sign in to reply
  • Martin Beyer added 15 commits

    added 15 commits

    • cd3be0d2...3b849a44 - 12 commits from branch computing:master
    • 195150d2 - Implementation of CbmRichAddress, cleanup and rename of CbmRichDigiMapManager...
    • 5d142b2f - fallback for channel address and pmt id using previous counter implementation...
    • 718819b1 - write out institute in copyright header

    Compare with previous version

  • Martin Beyer changed title from Draft: Rich: Deterministic pixel addresses (CFV requirement), introduce CbmRichAddress to Draft: Rich: Deterministic pixel addresses, introduce CbmRichAddress

    changed title from Draft: Rich: Deterministic pixel addresses (CFV requirement), introduce CbmRichAddress to Draft: Rich: Deterministic pixel addresses, introduce CbmRichAddress

  • Martin Beyer changed the description

    changed the description

  • Please register or sign in to reply
    Loading