DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
detchannelmaps
src
PD2HDChannelMapSP.cpp
Go to the documentation of this file.
1
2
// Class: PD2HDChannelMapSP
3
// Module type: standalone algorithm
4
// File: PD2HDChannelMapSP.cxx
5
// Author: Tom Junk, May 2022
6
//
7
// Implementation of hardware-offline channel mapping reading from a file.
9
10
#include "
PD2HDChannelMapSP.h
"
11
12
#include <fstream>
13
#include <iostream>
14
#include <sstream>
15
16
// so far, nothing needs to be done in the constructor
17
18
dune::PD2HDChannelMapSP::PD2HDChannelMapSP
() {}
19
20
void
21
dune::PD2HDChannelMapSP::ReadMapFromFile
(std::string& fullname)
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
}
45
46
dune::PD2HDChannelMapSP::HDChanInfo_t
47
dune::PD2HDChannelMapSP::GetChanInfoFromWIBElements
(
unsigned
int
crate,
48
unsigned
int
slot,
49
unsigned
int
link,
50
unsigned
int
wibframechan)
const
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
}
88
89
dune::PD2HDChannelMapSP::HDChanInfo_t
90
dune::PD2HDChannelMapSP::GetChanInfoFromOfflChan
(
unsigned
int
offlineChannel)
const
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
}
PD2HDChannelMapSP.h
dune::PD2HDChannelMapSP::ReadMapFromFile
void ReadMapFromFile(std::string &fullname)
Definition
PD2HDChannelMapSP.cpp:21
dune::PD2HDChannelMapSP::HDChanInfo_t
struct dune::PD2HDChannelMapSP::HDChanInfo HDChanInfo_t
dune::PD2HDChannelMapSP::DetToChanInfo
std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, std::unordered_map< unsigned int, HDChanInfo_t > > > > DetToChanInfo
Definition
PD2HDChannelMapSP.h:73
dune::PD2HDChannelMapSP::OfflToChanInfo
std::unordered_map< unsigned int, HDChanInfo_t > OfflToChanInfo
Definition
PD2HDChannelMapSP.h:77
dune::PD2HDChannelMapSP::PD2HDChannelMapSP
PD2HDChannelMapSP()
Definition
PD2HDChannelMapSP.cpp:18
dune::PD2HDChannelMapSP::GetChanInfoFromOfflChan
HDChanInfo_t GetChanInfoFromOfflChan(unsigned int offlchan) const
Definition
PD2HDChannelMapSP.cpp:90
dune::PD2HDChannelMapSP::check_offline_channel
void check_offline_channel(unsigned int offlineChannel) const
Definition
PD2HDChannelMapSP.h:81
dune::PD2HDChannelMapSP::GetChanInfoFromWIBElements
HDChanInfo_t GetChanInfoFromWIBElements(unsigned int crate, unsigned int slot, unsigned int link, unsigned int wibframechan) const
Definition
PD2HDChannelMapSP.cpp:47
wib
Definition
wib.pb.cc:23
dune::PD2HDChannelMapSP::HDChanInfo::asicchan
unsigned int asicchan
Definition
PD2HDChannelMapSP.h:39
dune::PD2HDChannelMapSP::HDChanInfo::offlchan
unsigned int offlchan
Definition
PD2HDChannelMapSP.h:28
dune::PD2HDChannelMapSP::HDChanInfo::APAName
std::string APAName
Definition
PD2HDChannelMapSP.h:30
dune::PD2HDChannelMapSP::HDChanInfo::asic
unsigned int asic
Definition
PD2HDChannelMapSP.h:38
dune::PD2HDChannelMapSP::HDChanInfo::link
unsigned int link
Definition
PD2HDChannelMapSP.h:32
dune::PD2HDChannelMapSP::HDChanInfo::wib
unsigned int wib
Definition
PD2HDChannelMapSP.h:31
dune::PD2HDChannelMapSP::HDChanInfo::femb
unsigned int femb
Definition
PD2HDChannelMapSP.h:37
dune::PD2HDChannelMapSP::HDChanInfo::valid
bool valid
Definition
PD2HDChannelMapSP.h:41
dune::PD2HDChannelMapSP::HDChanInfo::plane
unsigned int plane
Definition
PD2HDChannelMapSP.h:35
dune::PD2HDChannelMapSP::HDChanInfo::crate
unsigned int crate
Definition
PD2HDChannelMapSP.h:29
dune::PD2HDChannelMapSP::HDChanInfo::chan_in_plane
unsigned int chan_in_plane
Definition
PD2HDChannelMapSP.h:36
dune::PD2HDChannelMapSP::HDChanInfo::wibframechan
unsigned int wibframechan
Definition
PD2HDChannelMapSP.h:40
dune::PD2HDChannelMapSP::HDChanInfo::femb_on_link
unsigned int femb_on_link
Definition
PD2HDChannelMapSP.h:33
dune::PD2HDChannelMapSP::HDChanInfo::cebchan
unsigned int cebchan
Definition
PD2HDChannelMapSP.h:34
Generated on
for DUNE-DAQ by
1.18.0