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_tOfflToChanInfo
 

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.

19{
20}

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 100 of file PD2HDChannelMapSP.cpp.

100 {
101 auto ci = OfflToChanInfo.find(offlineChannel);
102 if (ci == OfflToChanInfo.end())
103 {
104 HDChanInfo_t badInfo = {};
105 badInfo.valid = false;
106 return badInfo;
107 }
108 return ci->second;
109
110}
std::unordered_map< unsigned int, HDChanInfo_t > OfflToChanInfo
struct dune::PD2HDChannelMapSP::HDChanInfo HDChanInfo_t

◆ GetChanInfoFromWIBElements()

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

Definition at line 60 of file PD2HDChannelMapSP.cpp.

64 {
65
66 unsigned int wib = slot + 1;
67
68 HDChanInfo_t badInfo = {};
69 badInfo.valid = false;
70
71// a hack -- ununderstood crates are mapped to crate 2
72// for use in the Coldbox
73// crate 2 has the lowest-numbered offline channels
74// data with two ununderstood crates, or an ununderstood crate and crate 2,
75// will have duplicate channels.
76
77 auto fm1 = DetToChanInfo.find(crate);
78 if (fm1 == DetToChanInfo.end())
79 {
80 unsigned int substituteCrate = 2;
81 fm1 = DetToChanInfo.find(substituteCrate);
82 if (fm1 == DetToChanInfo.end()) return badInfo;
83 }
84 auto& m1 = fm1->second;
85
86 auto fm2 = m1.find(wib);
87 if (fm2 == m1.end()) return badInfo;
88 auto& m2 = fm2->second;
89
90 auto fm3 = m2.find(link);
91 if (fm3 == m2.end()) return badInfo;
92 auto& m3 = fm3->second;
93
94 auto fm4 = m3.find(wibframechan);
95 if (fm4 == m3.end()) return badInfo;
96 return fm4->second;
97}
std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, HDChanInfo_t > > > > DetToChanInfo
Definition wib.pb.cc:23

◆ ReadMapFromFile()

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

Definition at line 22 of file PD2HDChannelMapSP.cpp.

23{
24 std::ifstream inFile(fullname, std::ios::in);
25 std::string line;
26
27 while (std::getline(inFile,line)) {
28 std::stringstream linestream(line);
29
30 HDChanInfo_t chanInfo;
31 linestream
32 >> chanInfo.offlchan
33 >> chanInfo.crate
34 >> chanInfo.APAName
35 >> chanInfo.wib
36 >> chanInfo.link
37 >> chanInfo.femb_on_link
38 >> chanInfo.cebchan
39 >> chanInfo.plane
40 >> chanInfo.chan_in_plane
41 >> chanInfo.femb
42 >> chanInfo.asic
43 >> chanInfo.asicchan
44 >> chanInfo.wibframechan;
45
46 chanInfo.valid = true;
47
48 // fill maps.
49
50 check_offline_channel(chanInfo.offlchan);
51
52 DetToChanInfo[chanInfo.crate][chanInfo.wib][chanInfo.link][chanInfo.wibframechan] = chanInfo;
53 OfflToChanInfo[chanInfo.offlchan] = chanInfo;
54
55 }
56 inFile.close();
57
58}
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: