ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArBadChannelTool
src
LArBadChannelState.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArBadChannelTool/LArBadChannelState.h
"
6
7
#include <set>
8
9
LArBadChannelState::LArBadChannelState
()
10
{
11
for
(
unsigned
int
i=0; i<
NCoolChannels
; i++) {
12
m_DataVec
.emplace_back(
static_cast<
CoolChannelEnum
>
(i));
13
}
14
}
15
16
void
LArBadChannelState::add
(
const
BadChanEntry
& entry,
CoolChannelEnum
chan)
17
{
18
m_DataVec
[chan].add(entry);
19
}
20
21
void
LArBadChannelState::setFromDB
(
const
std::vector<BadChanEntry>& stateVec,
22
CoolChannelEnum
chan)
23
{
24
m_DataVec
[chan].setFromDB( stateVec);
25
}
26
27
void
LArBadChannelState::addFromDB
(
const
std::vector<BadChanEntry>& stateVec,
28
CoolChannelEnum
chan)
29
{
30
m_DataVec
[chan].addFromDB( stateVec);
31
}
32
33
void
LArBadChannelState::reset
()
34
{
35
for
(
unsigned
int
i=0; i<
NCoolChannels
; i++) {
36
m_DataVec
[i].reset();
37
}
38
}
39
40
std::string
LArBadChannelState::coolChannelName
(
CoolChannelEnum
chan)
41
{
42
switch
( chan) {
43
case
EMBA
:
44
return
"EMBA"
;
45
break
;
46
case
EMBC
:
47
return
"EMBC"
;
48
break
;
49
case
EMECA
:
50
return
"EMECA"
;
51
break
;
52
case
EMECC
:
53
return
"EMECC"
;
54
break
;
55
case
HECA
:
56
return
"HECA"
;
57
break
;
58
case
HECC
:
59
return
"HECC"
;
60
break
;
61
case
FCALA
:
62
return
"FCALA"
;
63
break
;
64
case
FCALC
:
65
return
"FCALC"
;
66
break
;
67
case
MAXCOOLCHAN
:
68
break
;
69
}
70
return
"Unknown"
;
71
}
72
73
void
LArBadChannelState::CoolChannelData::addFromDB
(
const
std::vector<BadChanEntry>& stateVec)
74
{
75
m_entries
.insert(
m_entries
.end(), stateVec.begin(), stateVec.end());
76
resolveDuplicateEntries
();
77
//sort( m_entries.begin(), m_entries.end())
78
m_changed
=
false
;
79
}
80
81
void
LArBadChannelState::CoolChannelData::resolveDuplicateEntries
()
82
{
83
// using namespace std;
84
typedef
std::vector<BadChanEntry>::iterator Iter;
85
86
std::multiset<Iter> toDelete;
87
for
(Iter i =
m_entries
.begin(); i !=
m_entries
.end(); ++i) {
88
for
(Iter j = i+1; j !=
m_entries
.end(); ++j) {
89
if
(i->first == j->first) {
90
mergeFlags
( *i, *j);
// j's flags are added to i's flags
91
toDelete.insert(j);
92
}
93
}
94
}
95
96
// We make a copy of the vector to avoid erasing elements
97
std::vector<BadChanEntry> tmp;
98
tmp.reserve(
m_entries
.size() - toDelete.size());
99
for
(Iter i =
m_entries
.begin(); i !=
m_entries
.end(); ++i) {
100
if
(toDelete.find(i) == toDelete.end()) {
101
tmp.push_back(*i);
// not one of the duplicates
102
}
103
}
104
105
m_entries
.swap( tmp);
106
}
LArBadChannelState.h
LArBadChannelState::CoolChannelData::m_entries
BadChanVec m_entries
Definition
LArBadChannelState.h:94
LArBadChannelState::CoolChannelData::m_changed
bool m_changed
Definition
LArBadChannelState.h:95
LArBadChannelState::CoolChannelData::addFromDB
void addFromDB(const BadChanVec &stateVec)
Definition
LArBadChannelState.cxx:73
LArBadChannelState::CoolChannelData::resolveDuplicateEntries
void resolveDuplicateEntries()
Definition
LArBadChannelState.cxx:81
LArBadChannelState::LArBadChannelState
LArBadChannelState()
Definition
LArBadChannelState.cxx:9
LArBadChannelState::setFromDB
void setFromDB(const BadChanVec &stateVec, CoolChannelEnum chan)
Set cool channel from vector<BadChanEntry>, for example when reading from DB.
Definition
LArBadChannelState.cxx:21
LArBadChannelState::CoolChannelEnum
CoolChannelEnum
Definition
LArBadChannelState.h:23
LArBadChannelState::HECA
@ HECA
Definition
LArBadChannelState.h:23
LArBadChannelState::FCALA
@ FCALA
Definition
LArBadChannelState.h:23
LArBadChannelState::EMBC
@ EMBC
Definition
LArBadChannelState.h:23
LArBadChannelState::EMBA
@ EMBA
Definition
LArBadChannelState.h:23
LArBadChannelState::FCALC
@ FCALC
Definition
LArBadChannelState.h:23
LArBadChannelState::EMECC
@ EMECC
Definition
LArBadChannelState.h:23
LArBadChannelState::MAXCOOLCHAN
@ MAXCOOLCHAN
Definition
LArBadChannelState.h:23
LArBadChannelState::EMECA
@ EMECA
Definition
LArBadChannelState.h:23
LArBadChannelState::HECC
@ HECC
Definition
LArBadChannelState.h:23
LArBadChannelState::add
void add(const BadChanEntry &entry, CoolChannelEnum chan)
Add a bad channel entry to a specified cool channel data.
Definition
LArBadChannelState.cxx:16
LArBadChannelState::BadChanEntry
std::pair< HWIdentifier, LArBadChannel > BadChanEntry
Definition
LArBadChannelState.h:18
LArBadChannelState::NCoolChannels
@ NCoolChannels
Definition
LArBadChannelState.h:20
LArBadChannelState::coolChannelName
static std::string coolChannelName(CoolChannelEnum chan)
Definition
LArBadChannelState.cxx:40
LArBadChannelState::mergeFlags
static void mergeFlags(BadChanEntry &a, const BadChanEntry &b)
Definition
LArBadChannelState.h:158
LArBadChannelState::addFromDB
void addFromDB(const BadChanVec &stateVec, CoolChannelEnum chan)
Add a complete cool channel from DB, with duplicate removal.
Definition
LArBadChannelState.cxx:27
LArBadChannelState::reset
void reset()
Reset to an empty state, erasing all data in all cool channels.
Definition
LArBadChannelState.cxx:33
LArBadChannelState::m_DataVec
std::vector< CoolChannelData > m_DataVec
Definition
LArBadChannelState.h:165
Generated on
for ATLAS Offline Software by
1.17.0