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 <iostream>
13
#include <fstream>
14
#include <sstream>
15
16
// so far, nothing needs to be done in the constructor
17
18
dune::PD2HDChannelMapSP::PD2HDChannelMapSP
()
19
{
20
}
21
22
void
dune::PD2HDChannelMapSP::ReadMapFromFile
(std::string &fullname)
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
}
59
60
dune::PD2HDChannelMapSP::HDChanInfo_t
dune::PD2HDChannelMapSP::GetChanInfoFromWIBElements
(
61
unsigned
int
crate,
62
unsigned
int
slot,
63
unsigned
int
link,
64
unsigned
int
wibframechan )
const
{
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
}
98
99
100
dune::PD2HDChannelMapSP::HDChanInfo_t
dune::PD2HDChannelMapSP::GetChanInfoFromOfflChan
(
unsigned
int
offlineChannel)
const
{
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
}
PD2HDChannelMapSP.h
dune::PD2HDChannelMapSP::ReadMapFromFile
void ReadMapFromFile(std::string &fullname)
Definition
PD2HDChannelMapSP.cpp:22
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:100
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:60
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.17.0