DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase Class Reference

#include <PD2HDChannelMapSPPluginBase.hpp>

Inheritance diagram for dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase:
[legend]
Collaboration diagram for dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase:
[legend]

Public Member Functions

 PD2HDChannelMapSPPluginBase (uint det_id, const std::string &channel_map_path)
 Construct a new PD2HDChannelMapSPPluginBase object.
 
 PD2HDChannelMapSPPluginBase (const PD2HDChannelMapSPPluginBase &)=delete
 PD2HDChannelMapSPPluginBase is not copy-constructible.
 
PD2HDChannelMapSPPluginBaseoperator= (const PD2HDChannelMapSPPluginBase &)=delete
 PD2HDChannelMapSPPluginBase is not copy-assignable.
 
 PD2HDChannelMapSPPluginBase (PD2HDChannelMapSPPluginBase &&)=delete
 PD2HDChannelMapSPPluginBase is not move-constructible.
 
PD2HDChannelMapSPPluginBaseoperator= (PD2HDChannelMapSPPluginBase &&)=delete
 PD2HDChannelMapSPPluginBase is not move-assignable.
 
uint get_offline_channel_from_det_crate_slot_stream_chan (uint det, uint crate, uint slot, uint stream, uint channel) final
 Get the offline channel from detector crate slot stream chan object.
 
uint get_plane_from_offline_channel (uint offchannel) final
 Get the plane from offline channel object.
 
uint get_element_id_from_offline_channel (uint offchannel) final
 Get the element id from offline channel object.
 
std::string get_element_name_from_offline_channel (uint offchannel) final
 Get the tpc element name from offline channel object.
 
std::optional< TPCChannelMap::TPCChannelInfo > get_channel_info_from_offline_channel (uint offchannel) final
 

Protected Attributes

std::function< uint(std::string)> m_elem_name_id_converter
 

Private Attributes

const uint m_det_id
 
std::unique_ptr< dune::PD2HDChannelMapSPm_channel_map
 

Detailed Description

Definition at line 10 of file PD2HDChannelMapSPPluginBase.hpp.

Constructor & Destructor Documentation

◆ PD2HDChannelMapSPPluginBase() [1/3]

dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::PD2HDChannelMapSPPluginBase ( uint det_id,
const std::string & channel_map_path )
inlineexplicit

Construct a new PD2HDChannelMapSPPluginBase object.

Parameters
det_id
channel_map_path

Definition at line 24 of file PD2HDChannelMapSPPluginBase.hpp.

24 :
25 m_det_id(det_id) {
26
27 const char* detchannelmaps_share_cstr = getenv("DETCHANNELMAPS_SHARE");
28 if (!detchannelmaps_share_cstr) {
29 throw std::runtime_error("Environment variable DETCHANNELMAPS_SHARE is not set");
30 }
31 std::string detchannelmaps_share(detchannelmaps_share_cstr);
32 std::string channel_map_file = detchannelmaps_share + "/config/" + channel_map_path;
34 m_channel_map->ReadMapFromFile(channel_map_file);
35
36 }

◆ PD2HDChannelMapSPPluginBase() [2/3]

dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::PD2HDChannelMapSPPluginBase ( const PD2HDChannelMapSPPluginBase & )
delete

PD2HDChannelMapSPPluginBase is not copy-constructible.

◆ PD2HDChannelMapSPPluginBase() [3/3]

dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::PD2HDChannelMapSPPluginBase ( PD2HDChannelMapSPPluginBase && )
delete

PD2HDChannelMapSPPluginBase is not move-constructible.

Member Function Documentation

◆ get_channel_info_from_offline_channel()

std::optional< TPCChannelMap::TPCChannelInfo > dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::get_channel_info_from_offline_channel ( uint offchannel)
inlinefinal

Definition at line 141 of file PD2HDChannelMapSPPluginBase.hpp.

141 {
142 auto ci = m_channel_map->GetChanInfoFromOfflChan(offchannel);
143
144 if ( !ci.valid) {
145 return std::nullopt;
146 }
147 constexpr uint n_chan_per_stream = 64;
148 uint16_t slot_id = ci.wib-1;
149 uint16_t stream_id = ci.link*n_chan_per_stream+ci.wibframechan/n_chan_per_stream;
150 uint16_t chan_id = ci.wibframechan%n_chan_per_stream;
151
152 return TPCChannelMap::TPCChannelInfo{m_det_id, ci.crate, slot_id, stream_id, chan_id, m_elem_name_id_converter(ci.APAName)};
153 }

◆ get_element_id_from_offline_channel()

uint dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::get_element_id_from_offline_channel ( uint offchannel)
inlinefinal

Get the element id from offline channel object.

Parameters
offchannel
Returns
uint

Definition at line 109 of file PD2HDChannelMapSPPluginBase.hpp.

109 {
110 auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
111
112 if (!chan_info.valid) {
113 return -1;
114 }
115
116 return m_elem_name_id_converter(chan_info.APAName);
117
118 // There is only one element
119 return 0;
120 }

◆ get_element_name_from_offline_channel()

std::string dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::get_element_name_from_offline_channel ( uint offchannel)
inlinefinal

Get the tpc element name from offline channel object.

Parameters
offchannel
Returns
std::string

Definition at line 129 of file PD2HDChannelMapSPPluginBase.hpp.

129 {
130 auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
131
132 if (!chan_info.valid) {
133 return "";
134 }
135
136 return chan_info.APAName;
137 }

◆ get_offline_channel_from_det_crate_slot_stream_chan()

uint dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::get_offline_channel_from_det_crate_slot_stream_chan ( uint det,
uint crate,
uint slot,
uint stream,
uint channel )
inlinefinal

Get the offline channel from detector crate slot stream chan object.

Parameters
det
crate
slot
stream
channel
Returns
offline channel identifier

Definition at line 56 of file PD2HDChannelMapSPPluginBase.hpp.

56 {
57
58 // Must be a BDE channel
59 if( det != m_det_id)
60 return -1;
61
62 // if stream number looks wrong (not 0,1,2,3 or 64,65,66,67)
63 if( (stream & 0xbc) )
64 return -1;
65
66 constexpr uint n_chan_per_stream = 64;
67
68 uint link = (stream >> 6) & 1;
69 uint stream_in_link = (stream & 0x3);
70 uint wibframechan = n_chan_per_stream*stream_in_link+channel;
71
72 auto chan_info = m_channel_map->GetChanInfoFromWIBElements(
73 crate, slot, link, wibframechan
74 );
75
76 if (!chan_info.valid) {
77 return -1;
78 }
79
80 return chan_info.offlchan;
81 }

◆ get_plane_from_offline_channel()

uint dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::get_plane_from_offline_channel ( uint offchannel)
inlinefinal

Get the plane from offline channel object.

Parameters
offchannel
Returns
plane id (0, 1 or 2)

Definition at line 91 of file PD2HDChannelMapSPPluginBase.hpp.

91 {
92 auto chan_info = m_channel_map->GetChanInfoFromOfflChan(offchannel);
93
94 if (!chan_info.valid) {
95 return -1;
96 }
97
98 return chan_info.plane;
99 };

◆ operator=() [1/2]

PD2HDChannelMapSPPluginBase & dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::operator= ( const PD2HDChannelMapSPPluginBase & )
delete

PD2HDChannelMapSPPluginBase is not copy-assignable.

◆ operator=() [2/2]

PD2HDChannelMapSPPluginBase & dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::operator= ( PD2HDChannelMapSPPluginBase && )
delete

PD2HDChannelMapSPPluginBase is not move-assignable.

Member Data Documentation

◆ m_channel_map

std::unique_ptr<dune::PD2HDChannelMapSP> dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::m_channel_map
private

Definition at line 13 of file PD2HDChannelMapSPPluginBase.hpp.

◆ m_det_id

const uint dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::m_det_id
private

Definition at line 12 of file PD2HDChannelMapSPPluginBase.hpp.

◆ m_elem_name_id_converter

std::function<uint(std::string)> dunedaq::detchannelmaps::PD2HDChannelMapSPPluginBase::m_elem_name_id_converter
protected

Definition at line 15 of file PD2HDChannelMapSPPluginBase.hpp.


The documentation for this class was generated from the following file: