ATLAS Offline Software
Loading...
Searching...
No Matches
LArBadChannelState.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef LArBadChannelState_H
6#define LArBadChannelState_H
7
10
11#include <vector>
12#include <string>
13
14
16 public:
17
18 typedef std::pair<HWIdentifier, LArBadChannel> BadChanEntry;
19
20 enum {NCoolChannels=8};
22 enum PosNegEnum { NEG, POS};
24
26 public:
27
28 typedef std::vector<BadChanEntry> BadChanVec;
29
33
36 m_number(cc), m_entries(), m_changed(false) {}
37
38 void reset() {
39 m_entries.clear();
40 m_changed = false;
41 }
42
45 void add( const BadChanEntry& e) {
46 m_entries.push_back(e);
47 m_changed = true;
48 }
49
50 void setFromDB( const BadChanVec& stateVec) {
51 m_entries = stateVec;
52 m_changed = false;
53 }
54
55 void addFromDB( const BadChanVec& stateVec);
56
57 void addUpdate( const BadChanVec& stateVec) {
58 m_entries.insert( m_entries.end(), stateVec.begin(), stateVec.end());
59 m_changed = true;
60 }
61
63
64 CoolChannelEnum number() const { return m_number;}
65
66 bool changed() const { return m_changed;}
67
68 BadChanVec::const_iterator begin() const {
69 return m_entries.begin();
70 }
71 BadChanVec::iterator begin() {
72 return m_entries.begin();
73 }
74
75 BadChanVec::const_iterator end() const {
76 return m_entries.end();
77 }
78 BadChanVec::iterator end() {
79 return m_entries.end();
80 }
81
82 BadChanVec::size_type size() const {
83 return m_entries.size();
84 }
85
86 bool empty() const {
87 return m_entries.empty();
88 }
89
90 const BadChanVec& stateVector() const { return m_entries;}
91
92 private:
96 };
97
98
100
102
103 int nCoolChannels() const { return m_DataVec.size();}
104
106 bool empty() const {
107 for (const CoolChannelData& cd : m_DataVec) {
108 if (!cd.empty()) return false;
109 }
110 return true;
111 }
112
114 void reset();
115
117 void addFromDB( const BadChanVec& stateVec,
118 CoolChannelEnum chan);
119
121 void add( const BadChanEntry& entry, CoolChannelEnum chan);
122
124 void setFromDB( const BadChanVec& stateVec,
125 CoolChannelEnum chan);
126
129 void addUpdate( const BadChanVec& stateVec,
130 CoolChannelEnum chan) {
131 m_DataVec[chan].addUpdate( stateVec);
132 }
133
135 return m_DataVec.at(chan);
136 }
137
138 static std::string coolChannelName( CoolChannelEnum chan);
139
141 return static_cast<CoolChannelEnum>( 2 * static_cast<unsigned int>(part) +
142 1 - static_cast<unsigned int>(side));
143 }
144
145 static int barrelEndcap( CoolChannelEnum chan) {
146 if (chan == EMBA || chan == EMBC) return 0;
147 else return 1;
148 }
149
151 return static_cast<CaloPartEnum>(static_cast<int>(chan)/2);
152 }
153
154 static int posNeg( CoolChannelEnum chan) {
155 return (static_cast<int>(chan)+1) % 2;
156 }
157
158 static void mergeFlags( BadChanEntry& a, const BadChanEntry& b) {
159 a.second = LArBadChannel( a.second.packedData() | b.second.packedData());
160 }
161
162 //void CurrentState
163 private:
164
165 std::vector< CoolChannelData> m_DataVec;
166
167 // Non-const access to channel data
169 return m_DataVec.at( static_cast<CoolChannelEnum>(i));
170 }
171
172};
173
174#endif
static Double_t a
void addUpdate(const BadChanVec &stateVec)
void add(const BadChanEntry &e)
the entry is assumed to belong to the cool channel and is not checked.
BadChanVec::const_iterator end() const
void addFromDB(const BadChanVec &stateVec)
void setFromDB(const BadChanVec &stateVec)
const BadChanVec & stateVector() const
std::vector< BadChanEntry > BadChanVec
BadChanVec::const_iterator begin() const
CoolChannelData(CoolChannelEnum cc)
Construct an empty CoolChannelData.
BadChanVec::size_type size() const
CoolChannelData(CoolChannelEnum cc, const BadChanVec &entries)
Construct with bad channel data.
void setFromDB(const BadChanVec &stateVec, CoolChannelEnum chan)
Set cool channel from vector<BadChanEntry>, for example when reading from DB.
void add(const BadChanEntry &entry, CoolChannelEnum chan)
Add a bad channel entry to a specified cool channel data.
bool empty() const
Returns true if all cool channels are empty.
std::pair< HWIdentifier, LArBadChannel > BadChanEntry
static CoolChannelEnum coolChannelEnum(CaloPartEnum part, PosNegEnum side)
static CaloPartEnum caloPart(CoolChannelEnum chan)
static std::string coolChannelName(CoolChannelEnum chan)
CoolChannelData & coolChannel(int i)
static int barrelEndcap(CoolChannelEnum chan)
static void mergeFlags(BadChanEntry &a, const BadChanEntry &b)
void addFromDB(const BadChanVec &stateVec, CoolChannelEnum chan)
Add a complete cool channel from DB, with duplicate removal.
void reset()
Reset to an empty state, erasing all data in all cool channels.
void addUpdate(const BadChanVec &stateVec, CoolChannelEnum chan)
Add updates, e.g.
CoolChannelData::BadChanVec BadChanVec
std::vector< CoolChannelData > m_DataVec
const CoolChannelData & coolChannel(CoolChannelEnum chan) const
static int posNeg(CoolChannelEnum chan)
double entries
Definition listroot.cxx:49