LCOV - code coverage report
Current view: top level - detchannelmaps/plugins - PD2VDTPCChannelMap.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 32 0
Test Date: 2025-12-21 13:07:08 Functions: 0.0 % 8 0

            Line data    Source code
       1              : #include "detchannelmaps/TPCChannelMap.hpp"
       2              : #include "TPCChannelMapSP.h"
       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              : 
      14            0 :   explicit PD2VDTPCChannelMap() {
      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              :   /**
      34              :    * @brief Get the offline channel from detector crate slot stream chan object
      35              :    * 
      36              :    * @param det 
      37              :    * @param crate 
      38              :    * @param slot 
      39              :    * @param stream 
      40              :    * @param channel 
      41              :    * 
      42              :    * @return offline channel identifier
      43              :    */
      44              :   uint 
      45            0 :   get_offline_channel_from_det_crate_slot_stream_chan(uint det, uint crate, uint slot, uint stream, uint channel) final {
      46              :   
      47            0 :     auto ch_info = m_channel_map->GetChanInfoFromElectronicsIDs(det, crate, slot, stream, channel );
      48            0 :     return ( ch_info.valid ? ch_info.offlchan : -1 );
      49              :   }
      50              : 
      51              : 
      52              :   /**
      53              :    * @brief Get the plane from offline channel object
      54              :    * 
      55              :    * @param offchannel 
      56              :    * @return plane id (0, 1 or 2) 
      57              :    */
      58              :   uint 
      59            0 :   get_plane_from_offline_channel(uint offchannel) final {
      60            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      61              : 
      62            0 :     if (!chan_info.valid) {
      63              :       return -1;
      64              :     }
      65              : 
      66            0 :     return chan_info.plane;
      67              :   };
      68              : 
      69              : 
      70              :   /**
      71              :    * @brief Get the element id from offline channel object
      72              :    * 
      73              :    * @param offchannel 
      74              :    * @return uint 
      75              :    */
      76              :   uint
      77            0 :   get_element_id_from_offline_channel( uint offchannel) {
      78            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      79              : 
      80            0 :     if (!chan_info.valid) {
      81              :       return -1;
      82              :     }
      83              : 
      84            0 :     return chan_info.detelement;
      85              :   }
      86              : 
      87              :   /**
      88              :    * @brief Get the tpc element name from offline channel object
      89              :    * 
      90              :    * @param offchannel 
      91              :    * @return std::string 
      92              :    */
      93              :   std::string 
      94            0 :   get_element_name_from_offline_channel( uint offchannel) {
      95            0 :     auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
      96              : 
      97            0 :     if (!chan_info.valid) {
      98            0 :       return "xxx";
      99              :     }
     100              : 
     101            0 :     return fmt::format("CRP{:d}", chan_info.detelement);
     102              :   }
     103              : 
     104              :   std::optional<TPCChannelInfo> 
     105            0 :   get_channel_info_from_offline_channel(uint offchannel) {
     106            0 :     auto ci = m_channel_map->GetChanInfoFromOfflChan(offchannel);
     107              : 
     108            0 :     if ( !ci.valid) {
     109            0 :       return std::nullopt;
     110              :     }
     111            0 :     return TPCChannelInfo{ci.detid, ci.crate, ci.slot, ci.stream, ci.streamchan, ci.detelement};
     112              :   }
     113              : 
     114              : 
     115              : 
     116              : private:
     117              : 
     118              :   std::unique_ptr<dune::TPCChannelMapSP> m_channel_map;
     119              : 
     120              :   
     121              : };
     122              : 
     123            0 : DEFINE_DUNE_DET_TPCCHANNEL_MAP(dunedaq::detchannelmaps::PD2VDTPCChannelMap)
     124              : 
     125              : 
     126              : } // namespace detchannelmaps
     127              : } // namespace dunedaq
        

Generated by: LCOV version 2.0-1