131 std::map<EcalLogicID, MonCrystalConsistencyDat> crystalConsistencies;
132 std::map<EcalLogicID, MonTTConsistencyDat> towerConsistencies;
133 std::map<EcalLogicID, MonMemChConsistencyDat> memChannelConsistencies;
134 std::map<EcalLogicID, MonMemTTConsistencyDat> memTowerConsistencies;
136 MESet
const& digiME(
source_.at(
"Digi"));
137 MESet
const& gainME(
source_.at(
"Gain"));
138 MESet
const& chidME(
source_.at(
"ChId"));
139 MESet
const& gainswitchME(
source_.at(
"GainSwitch"));
140 MESet
const& qualityME(
source_.at(
"Quality"));
142 MESet
const& toweridME(
source_.at(
"TowerId"));
143 MESet
const& blocksizeME(
source_.at(
"BlockSize"));
144 MESet
const& l1aME(
source_.at(
"L1AFE"));
145 MESet
const& bxME(
source_.at(
"BXFE"));
147 MESet
const& memdigiME(
source_.at(
"MEMDigi"));
148 MESet
const& memchidME(
source_.at(
"MEMChId"));
149 MESet
const& memgainME(
source_.at(
"MEMGain"));
150 MESet
const& pnqualityME(
source_.at(
"PNQuality"));
152 MESet
const& memtoweridME(
source_.at(
"MEMTowerId"));
153 MESet
const& memblocksizeME(
source_.at(
"MEMBlockSize"));
157 MESet::const_iterator dEnd(digiME.end());
158 MESet::const_iterator qItr(qualityME);
159 for(MESet::const_iterator dItr(digiME.beginChannel()); dItr != dEnd; dItr.toNextChannel()){
160 DetId id(dItr->getId());
162 int nDigis(dItr->getBinContent());
163 int gain(gainME.getBinContent(
id));
164 int chid(chidME.getBinContent(
id));
165 int gainswitch(gainswitchME.getBinContent(
id));
168 if(gain > 0 || chid > 0 || gainswitch > 0){
170 data.setProcessedEvents(nDigis);
171 data.setProblematicEvents(gain + chid + gainswitch);
172 data.setProblemsGainZero(gain);
173 data.setProblemsID(chid);
174 data.setProblemsGainSwitch(gainswitch);
176 int channelStatus(qItr->getBinContent());
177 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
178 data.setTaskStatus(channelBad);
187 for(
unsigned iTower(1); iTower <= 68; ++iTower){
188 if(!
ccuExists(iDCC + 1, iTower))
continue;
191 std::vector<DetId> channels(
getElectronicsMap()->dccTowerConstituents(iDCC + 1, iTower));
193 bool towerBad(
false);
194 for(
unsigned iD(0); iD < channels.size(); ++iD){
195 int n(digiME.getBinContent(channels[iD]));
196 if(
n > nDigis) nDigis =
n;
197 int channelStatus(qualityME.getBinContent(channels[iD]));
198 if(channelStatus ==
kBad || channelStatus ==
kMBad) towerBad =
true;
201 int towerid(toweridME.getBinContent(eid));
202 int blocksize(blocksizeME.getBinContent(eid));
203 int l1a(l1aME.getBinContent(iDCC + 1, iTower));
204 int bx(bxME.getBinContent(iDCC + 1, iTower));
206 if(towerid > 0 || blocksize > 0 || l1a > 0 || bx > 0){
208 data.setProcessedEvents(nDigis);
209 data.setProblematicEvents(towerid + blocksize + l1a + bx);
210 data.setProblemsID(towerid);
211 data.setProblemsSize(blocksize);
212 data.setProblemsLV1(l1a);
213 data.setProblemsBunchX(bx);
214 data.setTaskStatus(towerBad);
223 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
224 unsigned iDCC(
memDCC[iMD]);
228 for(
unsigned iPN(1); iPN <= 10; ++iPN){
231 int nDigis(memdigiME.getBinContent(pnid));
232 int memchid(memchidME.getBinContent(pnid));
233 int memgain(memgainME.getBinContent(pnid));
235 if(memchid > 0 || memgain > 0){
238 data.setProcessedEvents(nDigis);
239 data.setProblematicEvents(memchid + memgain);
240 data.setProblemsID(memchid);
241 data.setProblemsGainZero(memgain);
243 int channelStatus(pnqualityME.getBinContent(pnid));
244 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
245 data.setTaskStatus(channelBad);
251 for(
unsigned iTower(69); iTower <= 70; ++iTower){
255 bool towerBad(
false);
256 for(
unsigned iPN(1); iPN <= 10; ++iPN){
258 int n(memdigiME.getBinContent(pnid));
259 if(
n > nDigis) nDigis =
n;
260 int channelStatus(pnqualityME.getBinContent(pnid));
261 if(channelStatus ==
kBad || channelStatus ==
kMBad) towerBad =
true;
264 int towerid(memtoweridME.getBinContent(eid));
265 int blocksize(memblocksizeME.getBinContent(eid));
267 if(towerid > 0 || blocksize > 0){
270 data.setProcessedEvents(nDigis);
271 data.setProblematicEvents(towerid + blocksize);
272 data.setProblemsID(towerid);
273 data.setProblemsSize(blocksize);
274 data.setTaskStatus(towerBad);
284 if(crystalConsistencies.size() > 0){
288 if(towerConsistencies.size() > 0){
292 if(memChannelConsistencies.size() > 0){
296 if(memTowerConsistencies.size() > 0){
301 catch(std::runtime_error&
e){
302 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
std::vector< unsigned > const memDCC
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
EcalElectronicsMapping const * getElectronicsMap()
bool ccuExists(unsigned, unsigned)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
EcalLogicID memChannelID(EcalPnDiodeDetId const &)
bool qualityOK(int _quality)
char data[epos_bytes_allocation]
void insertDataArraySet(const std::map< EcalLogicID, DATT > *data, IOVT *iov)
EcalLogicID towerID(EcalElectronicsId const &)
EcalLogicID memTowerID(EcalElectronicsId const &)
EcalLogicID crystalID(DetId const &)