CMS 3D CMS Logo

TowerStatusTask.cc
Go to the documentation of this file.
2 
7 
12 
17 
18 namespace ecaldqm {
19 
20  TowerStatusTask::TowerStatusTask() : DQWorkerClient(), doDAQInfo_(false), doDCSInfo_(false) {
21  std::fill_n(daqStatus_, nDCC, 0.);
22  std::fill_n(dcsStatus_, nDCC, 0.);
23  }
24 
26  doDAQInfo_ = _params.getUntrackedParameter<bool>("doDAQInfo");
27  doDCSInfo_ = _params.getUntrackedParameter<bool>("doDCSInfo");
28 
29  if (doDAQInfo_ && doDCSInfo_)
30  return;
31  if (doDAQInfo_) {
32  MEs_.erase(std::string("DCSSummary"));
33  MEs_.erase(std::string("DCSSummaryMap"));
34  MEs_.erase(std::string("DCSContents"));
35  } else if (doDCSInfo_) {
36  MEs_.erase(std::string("DAQSummary"));
37  MEs_.erase(std::string("DAQSummaryMap"));
38  MEs_.erase(std::string("DAQContents"));
39  } else
40  throw cms::Exception("InvalidConfiguration") << "Nothing to do in TowerStatusTask";
41  }
42 
44  if (doDAQInfo_) {
45  std::fill_n(daqStatus_, nDCC, 1.);
46 
48  _es.get<EcalDAQTowerStatusRcd>().get(daqHndl);
49  if (daqHndl.isValid()) {
50  for (unsigned id(0); id < EcalTrigTowerDetId::kEBTotalTowers; id++) {
51  if (daqHndl->barrel(id).getStatusCode() != 0) {
53  daqStatus_[dccId(ttid) - 1] -= 25. / 1700.;
54  }
55  }
56  for (unsigned id(0); id < EcalScDetId::kSizeForDenseIndexing; id++) {
57  if (daqHndl->endcap(id).getStatusCode() != 0) {
59  unsigned dccid(dccId(scid));
60  daqStatus_[dccid - 1] -= double(scConstituents(scid).size()) / nCrystals(dccid);
61  }
62  }
63  } else
64  edm::LogWarning("EventSetup") << "EcalDAQTowerStatus record not valid";
65  }
66 
67  if (doDCSInfo_) {
68  std::fill_n(dcsStatus_, nDCC, 1.);
69 
71  _es.get<EcalDCSTowerStatusRcd>().get(dcsHndl);
72  if (dcsHndl.isValid()) {
73  for (unsigned id(0); id < EcalTrigTowerDetId::kEBTotalTowers; id++) {
74  if (dcsHndl->barrel(id).getStatusCode() != 0) {
76  dcsStatus_[dccId(ttid) - 1] -= 25. / 1700.;
77  }
78  }
79  for (unsigned id(0); id < EcalScDetId::kSizeForDenseIndexing; id++) {
80  if (dcsHndl->endcap(id).getStatusCode() != 0) {
82  unsigned dccid(dccId(scid));
83  dcsStatus_[dccid - 1] -= double(scConstituents(scid).size()) / nCrystals(dccid);
84  }
85  }
86  } else
87  edm::LogWarning("EventSetup") << "EcalDCSTowerStatus record not valid";
88  }
89  }
90 
92  if (doDAQInfo_)
94  if (doDCSInfo_)
96  }
97 
98  void TowerStatusTask::producePlotsTask_(float const* _status, std::string const& _type) {
99  MESet* meSummary(nullptr);
100  MESet* meSummaryMap(nullptr);
101  MESet* meContents(nullptr);
102  meSummary = &MEs_.at(_type + "Summary");
103  meSummaryMap = &MEs_.at(_type + "SummaryMap");
104  meContents = &MEs_.at(_type + "Contents");
105 
106  meSummary->reset(-1.);
107  meSummaryMap->resetAll(-1.);
108  meSummaryMap->reset();
109  meContents->reset(-1.);
110 
111  float totalFraction(0.);
112  for (int iDCC(0); iDCC < nDCC; iDCC++) {
113  meSummaryMap->setBinContent(iDCC + 1, _status[iDCC]);
114  meContents->fill(iDCC + 1, _status[iDCC]);
115  totalFraction += _status[iDCC] / nCrystals(iDCC + 1);
116  }
117 
118  meSummary->fill(totalFraction);
119  }
120 
122 } // namespace ecaldqm
size
Write out results.
T getUntrackedParameter(std::string const &, T const &) const
static EcalTrigTowerDetId detIdFromDenseIndex(uint32_t di)
const Item & endcap(size_t hashedIndex) const
#define DEFINE_ECALDQM_WORKER(TYPE)
Definition: DQWorker.h:112
Code getStatusCode() const
return decoded status
static EcalScDetId unhashIndex(int hi)
Definition: EcalScDetId.h:117
virtual void setBinContent(DetId const &, double)
Definition: MESet.h:51
void producePlots(ProcessType) override
void producePlotsTask_(float const *, std::string const &)
void setParams(edm::ParameterSet const &) override
unsigned nCrystals(unsigned)
virtual void reset(double=0., double=0., double=0.)
Definition: MESet.cc:98
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
virtual void fill(DetId const &, double=1., double=1., double=1.)
Definition: MESet.h:46
MESetCollection MEs_
Definition: DQWorker.h:78
virtual void resetAll(double=0., double=0., double=0.)
Definition: MESet.cc:105
uint16_t getStatusCode() const
const Item & barrel(size_t hashedIndex) const
T get() const
Definition: EventSetup.h:73
std::vector< DetId > scConstituents(EcalScDetId const &)
bool isValid() const
Definition: ESHandle.h:44
unsigned dccId(DetId const &)