LCOV - code coverage report
Current view: top level - detchannelmaps/plugins - PD2VDTPCChannelMap.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 33 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 8 0

            Line data    Source code
       1              : #include "TPCChannelMapSP.h"
       2              : #include "detchannelmaps/TPCChannelMap.hpp"
       3              : #include "fmt/core.h"
       4              : 
       5              : #include "logging/Logging.hpp" // NOLINT
       6              : 
       7              : namespace dunedaq {
       8              : namespace detchannelmaps {
       9              : 
      10              : class PD2VDTPCChannelMap : public TPCChannelMap
      11              : {
      12              : public:
      13            0 :   explicit PD2VDTPCChannelMap()
      14            0 :   {
      15              : 
      16            0 :     const char* detchannelmaps_share_cstr = getenv("DETCHANNELMAPS_SHARE");
      17            0 :     if (!detchannelmaps_share_cstr) {
      18            0 :       throw std::runtime_error("Environment variable DETCHANNELMAPS_SHARE is not set");
      19              :     }
      20            0 :     std::string detchannelmaps_share(detchannelmaps_share_cstr);
      21            0 :     std::string channel_map_file = detchannelmaps_share + "/config/pd2vd/PD2VDTPCChannelMap_v2.txt";
      22            0 :     m_channel_map.reset(new dune::TPCChannelMapSP());
      23            0 :     m_channel_map->ReadMapFromFile(channel_map_file);
      24            0 :     TLOG_DEBUG(10) << "PD2VDTPCChannelMap Created";
      25            0 :   }
      26              : 
      27              :   PD2VDTPCChannelMap(const PD2VDTPCChannelMap&) = delete;            ///< PD2VDTPCChannelMap is not copy-constructible
      28              :   PD2VDTPCChannelMap& operator=(const PD2VDTPCChannelMap&) = delete; ///< PD2VDTPCChannelMap is not copy-assignable
      29              :   PD2VDTPCChannelMap(PD2VDTPCChannelMap&&) = delete;                 ///< PD2VDTPCChannelMap is not move-constructible
      30              :   PD2VDTPCChannelMap& operator=(PD2VDTPCChannelMap&&) = delete;      ///< PD2VDTPCChannelMap is not move-assignable
      31              : 
      32              :   /**
      33              :    * @brief Get the offline channel from detector crate slot stream chan object
      34              :    *
      35              :    * @param det
      36              :    * @param crate
      37              :    * @param slot
      38              :    * @param stream
      39              :    * @param channel
      40              :    *
      41              :    * @return offline channel identifier
      42              :    */
      43            0 :   uint get_offline_channel_from_det_crate_slot_stream_chan(uint det,
      44              :                                                            uint crate,
      45              :                                                            uint slot,
      46              :                                                            uint stream,
      47              :                                                            uint channel) final
      48              :   {
      49              : 
      50            0 :     auto ch_info = m_channel_map->GetChanInfoFromElectronicsIDs(det, crate, slot, stream, channel);
      51            0 :     return (ch_info.valid ? ch_info.offlchan : -1);
      52              :   }
      53              : 
      54              :   /**
      55              :    * @brief Get the plane from offline channel object
      56              :    *
      57              :    * @param offchannel
      58              :    * @return plane id (0, 1 or 2)
      59              :    */
      60            0 :   uint get_plane_from_offline_channel(uint offchannel) final
      61              :   {
      62            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      63              : 
      64            0 :     if (!chan_info.valid) {
      65              :       return -1;
      66              :     }
      67              : 
      68            0 :     return chan_info.plane;
      69              :   };
      70              : 
      71              :   /**
      72              :    * @brief Get the element id from offline channel object
      73              :    *
      74              :    * @param offchannel
      75              :    * @return uint
      76              :    */
      77            0 :   uint get_element_id_from_offline_channel(uint offchannel)
      78              :   {
      79            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      80              : 
      81            0 :     if (!chan_info.valid) {
      82              :       return -1;
      83              :     }
      84              : 
      85            0 :     return chan_info.detelement;
      86              :   }
      87              : 
      88              :   /**
      89              :    * @brief Get the tpc element name from offline channel object
      90              :    *
      91              :    * @param offchannel
      92              :    * @return std::string
      93              :    */
      94            0 :   std::string get_element_name_from_offline_channel(uint offchannel)
      95              :   {
      96            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      97              : 
      98            0 :     if (!chan_info.valid) {
      99            0 :       return "xxx";
     100              :     }
     101              : 
     102            0 :     return fmt::format("CRP{:d}", chan_info.detelement);
     103              :   }
     104              : 
     105            0 :   std::optional<TPCChannelInfo> get_channel_info_from_offline_channel(uint offchannel)
     106              :   {
     107            0 :     auto ci = m_channel_map->GetChanInfoFromOfflChan(offchannel);
     108              : 
     109            0 :     if (!ci.valid) {
     110            0 :       return std::nullopt;
     111              :     }
     112            0 :     return TPCChannelInfo{ ci.detid, ci.crate, ci.slot, ci.stream, ci.streamchan, ci.detelement };
     113              :   }
     114              : 
     115              : private:
     116              :   std::unique_ptr<dune::TPCChannelMapSP> m_channel_map;
     117              : };
     118              : 
     119            0 : DEFINE_DUNE_DET_TPCCHANNEL_MAP(dunedaq::detchannelmaps::PD2VDTPCChannelMap)
     120              : 
     121              : } // namespace detchannelmaps
     122              : } // namespace dunedaq
        

Generated by: LCOV version 2.0-1