DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dune::PD2HDChannelMapSP Class Reference

#include <PD2HDChannelMapSP.h>

Classes

struct  HDChanInfo

Public Types

typedef struct dune::PD2HDChannelMapSP::HDChanInfo HDChanInfo_t

Public Member Functions

 PD2HDChannelMapSP ()
void ReadMapFromFile (std::string &fullname)
HDChanInfo_t GetChanInfoFromWIBElements (unsigned int crate, unsigned int slot, unsigned int link, unsigned int wibframechan) const
HDChanInfo_t GetChanInfoFromOfflChan (unsigned int offlchan) const

Private Member Functions

void check_offline_channel (unsigned int offlineChannel) const

Private Attributes

const unsigned int fNChans = 2560*4
std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, HDChanInfo_t > > > > DetToChanInfo
std::unordered_map< unsigned int, HDChanInfo_t > OfflToChanInfo

Detailed Description

Definition at line 23 of file PD2HDChannelMapSP.h.

Member Typedef Documentation

◆ HDChanInfo_t

Constructor & Destructor Documentation

◆ PD2HDChannelMapSP()

dune::PD2HDChannelMapSP::PD2HDChannelMapSP ( )

Definition at line 18 of file PD2HDChannelMapSP.cpp.

18{}

Member Function Documentation

◆ check_offline_channel()

void dune::PD2HDChannelMapSP::check_offline_channel ( unsigned int offlineChannel) const
inlineprivate

Definition at line 81 of file PD2HDChannelMapSP.h.

82 {
83 if (offlineChannel >= fNChans)
84 {
85 throw std::range_error("PD2HDChannelMapSP offline Channel out of range");
86 }
87 };
const unsigned int fNChans

◆ GetChanInfoFromOfflChan()

dune::PD2HDChannelMapSP::HDChanInfo_t dune::PD2HDChannelMapSP::GetChanInfoFromOfflChan ( unsigned int offlchan) const

Definition at line 90 of file PD2HDChannelMapSP.cpp.

91{
92 auto ci = OfflToChanInfo.find(offlineChannel);
93 if (ci == OfflToChanInfo.end()) {
94 HDChanInfo_t badInfo = {};
95 badInfo.valid = false;
96 return badInfo;
97 }
98 return ci->second;
99}
struct dune::PD2HDChannelMapSP::HDChanInfo HDChanInfo_t
std::unordered_map< unsigned int, HDChanInfo_t > OfflToChanInfo

◆ GetChanInfoFromWIBElements()

dune::PD2HDChannelMapSP::HDChanInfo_t dune::PD2HDChannelMapSP::GetChanInfoFromWIBElements ( unsigned int crate,
unsigned int slot,
unsigned int link,
unsigned int wibframechan ) const

Definition at line 47 of file PD2HDChannelMapSP.cpp.

51{
52
53 unsigned int wib = slot + 1;
54
55 HDChanInfo_t badInfo = {};
56 badInfo.valid = false;
57
58 // a hack -- ununderstood crates are mapped to crate 2
59 // for use in the Coldbox
60 // crate 2 has the lowest-numbered offline channels
61 // data with two ununderstood crates, or an ununderstood crate and crate 2,
62 // will have duplicate channels.
63
64 auto fm1 = DetToChanInfo.find(crate);
65 if (fm1 == DetToChanInfo.end()) {
66 unsigned int substituteCrate = 2;
67 fm1 = DetToChanInfo.find(substituteCrate);
68 if (fm1 == DetToChanInfo.end())
69 return badInfo;
70 }
71 auto& m1 = fm1->second;
72
73 auto fm2 = m1.find(wib);
74 if (fm2 == m1.end())
75 return badInfo;
76 auto& m2 = fm2->second;
77
78 auto fm3 = m2.find(link);
79 if (fm3 == m2.end())
80 return badInfo;
81 auto& m3 = fm3->second;
82
83 auto fm4 = m3.find(wibframechan);
84 if (fm4 == m3.end())
85 return badInfo;
86 return fm4->second;
87}
std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, HDChanInfo_t > > > > DetToChanInfo

◆ ReadMapFromFile()

void dune::PD2HDChannelMapSP::ReadMapFromFile ( std::string & fullname)

Definition at line 21 of file PD2HDChannelMapSP.cpp.

22{
23 std::ifstream inFile(fullname, std::ios::in);
24 std::string line;
25
26 while (std::getline(inFile, line)) {
27 std::stringstream linestream(line);
28
29 HDChanInfo_t chanInfo;
30 linestream >> chanInfo.offlchan >> chanInfo.crate >> chanInfo.APAName >> chanInfo.wib >> chanInfo.link >>
31 chanInfo.femb_on_link >> chanInfo.cebchan >> chanInfo.plane >> chanInfo.chan_in_plane >> chanInfo.femb >>
32 chanInfo.asic >> chanInfo.asicchan >> chanInfo.wibframechan;
33
34 chanInfo.valid = true;
35
36 // fill maps.
37
38 check_offline_channel(chanInfo.offlchan);
39
40 DetToChanInfo[chanInfo.crate][chanInfo.wib][chanInfo.link][chanInfo.wibframechan] = chanInfo;
41 OfflToChanInfo[chanInfo.offlchan] = chanInfo;
42 }
43 inFile.close();
44}
void check_offline_channel(unsigned int offlineChannel) const

Member Data Documentation

◆ DetToChanInfo

std::unordered_map<unsigned int, std::unordered_map<unsigned int, std::unordered_map<unsigned int, std::unordered_map<unsigned int, HDChanInfo_t > > > > dune::PD2HDChannelMapSP::DetToChanInfo
private

Definition at line 73 of file PD2HDChannelMapSP.h.

◆ fNChans

const unsigned int dune::PD2HDChannelMapSP::fNChans = 2560*4
private

Definition at line 65 of file PD2HDChannelMapSP.h.

◆ OfflToChanInfo

std::unordered_map<unsigned int, HDChanInfo_t> dune::PD2HDChannelMapSP::OfflToChanInfo
private

Definition at line 77 of file PD2HDChannelMapSP.h.


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