Skip to content
Snippets Groups Projects
Select Git revision
  • c459318c985ac4d6b22b260fc1a5e5e4f59118d4
  • master default protected
  • nightly_master
  • online_mvd_readconf_cleanup protected
  • online_much_readconf_cleanup protected
  • jul25_patches
  • cleanup_rich_v25a
  • jul24_patches
  • nov23_patches
  • DC_2404
  • nighly_master
  • DC_Jan24
  • DC_Nov23
  • DC_Oct23
  • feb23_patches
  • L1Algo-dev9
  • dec21_patches protected
  • apr21_patches protected
  • dev_2025_46
  • dev_2025_45
  • dev_2025_44
  • dev_2025_43
  • dev_2025_42
  • dev_2025_41
  • dev_2025_40
  • dev_2025_39
  • dev_2025_38
  • dev_2025_37
  • dev_2025_36
  • dev_2025_35
  • dev_2025_34
  • dev_2025_33
  • dev_2025_32
  • dev_2025_31
  • dev_2025_30
  • RC_jul25
  • dev_2025_29
  • dev_2025_28
38 results

Unpack.cxx

Blame
  • Unpack.cxx 1.34 KiB
    /* Copyright (C) 2024 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
       SPDX-License-Identifier: GPL-3.0-only
       Authors: Felix Weiglhofer [committer], Dominik Smith */
    
    #include "Unpack.h"
    
    #include "log.hpp"
    
    using namespace cbm::algo::rich;
    using fles::Subsystem;
    
    Unpack::Unpack(const ReadoutConfig& readout) : fReadout(readout)
    {
      constexpr i64 SystemTimeOffset = 100;
      constexpr u8 SystemVersion     = 0x03;
    
    
      // Create one algorithm per component for Bmon and configure it with parameters
      auto equipIdsRich = fReadout.GetEquipmentIds();
      for (auto& equip : equipIdsRich) {
        rich::UnpackPar par{};
        std::map<uint32_t, std::vector<double>> compMap = fReadout.Map(equip);
        for (auto const& val : compMap) {
          uint32_t address                       = val.first;
          par.fElinkParams[address].fToTshift    = val.second;
          par.fElinkParams[address].fTimeOffset  = SystemTimeOffset;
        }
        auto algo                      = std::make_unique<UnpackMS>(par);
        fAlgos[{equip, SystemVersion}] = std::move(algo);
    
        L_(info) << "--- Configured equipment " << equip << " with " << fReadout.GetNumElinks(equip) << " elinks";
      }
      L_(info) << "--- Configured " << fAlgos.size() << " unpacker algorithms for RICH.";
    }
    
    Unpack::Result_t Unpack::operator()(const fles::Timeslice& ts) const { return DoUnpack(Subsystem::RICH, ts); }