CMS 3D CMS Logo

SiStripBadComponentInfo.cc
Go to the documentation of this file.
4 
6 
10 
12 
13 #include <cmath>
14 #include <cstdio>
15 #include <iomanip>
16 #include <iostream>
17 #include <sstream>
18 #include <string>
19 
20 //
21 // -- Contructor
22 //
24  : bookedStatus_(false),
25  nSubSystem_(6),
26  tTopoToken_(esConsumes<edm::Transition::EndRun>()),
27  withFedErrHelper_{pSet, consumesCollector()} {
28  // Create MessageSender
29  LogDebug("SiStripBadComponentInfo") << "SiStripBadComponentInfo::Creating SiStripBadComponentInfo ";
30 }
31 
33  LogDebug("SiStripBadComponentInfo") << "SiStripBadComponentInfo::Deleting SiStripBadComponentInfo ";
34 }
35 
36 //
37 // -- Read Condition
38 //
40  LogDebug("SiStripBadComponentInfo") << "SiStripBadComponentInfo:: End of Run";
41 
42  // Retrieve tracker topology from geometry
43  tTopo_ = std::make_unique<TrackerTopology>(eSetup.getData(tTopoToken_));
44 
47  }
48 }
49 
51  auto const& BC = siStripQuality->getBadComponentList();
52 
53  for (size_t i = 0; i < BC.size(); ++i) {
54  int subdet = -999;
55  int component = -999;
56 
57  //&&&&&&&&&&&&&&&&&
58  // Single SubSyste
59  //&&&&&&&&&&&&&&&&&
60  int subDet = DetId(BC[i].detid).subdetId();
61  if (subDet == StripSubdetector::TIB) {
62  //&&&&&&&&&&&&&&&&&
63  // TIB
64  //&&&&&&&&&&&&&&&&&
65  subdet = 3;
66  component = tTopo_->tibLayer(BC[i].detid);
67  } else if (subDet == StripSubdetector::TID) {
68  //&&&&&&&&&&&&&&&&&
69  // TID
70  //&&&&&&&&&&&&&&&&&
71  if (tTopo_->tidSide(BC[i].detid) == 2)
72  subdet = 4;
73  else
74  subdet = 5;
75  component = tTopo_->tidWheel(BC[i].detid);
76  } else if (subDet == StripSubdetector::TOB) {
77  //&&&&&&&&&&&&&&&&&
78  // TOB
79  //&&&&&&&&&&&&&&&&&
80  subdet = 6;
81  component = tTopo_->tobLayer(BC[i].detid);
82  } else if (subDet == StripSubdetector::TEC) {
83  //&&&&&&&&&&&&&&&&&
84  // TEC
85  //&&&&&&&&&&&&&&&&&
86  if (tTopo_->tecSide(BC[i].detid) == 2)
87  subdet = 2;
88  else
89  subdet = 1;
90  component = tTopo_->tecWheel(BC[i].detid);
91  }
92  fillBadComponentMaps(subdet, component, BC[i]);
93  }
94 
95  //&&&&&&&&&&&&&&&&&&
96  // Single Strip Info
97  //&&&&&&&&&&&&&&&&&&
98 
101 
102  for (SiStripBadStrip::RegistryIterator rp = rbegin; rp != rend; ++rp) {
103  uint32_t detid = rp->detid;
104  int subdet = -999;
105  int component = -999;
106  DetId detectorId = DetId(detid);
107  int subDet = detectorId.subdetId();
108  if (subDet == StripSubdetector::TIB) {
109  subdet = 3;
110  component = tTopo_->tibLayer(detid);
111  } else if (subDet == StripSubdetector::TID) {
112  if (tTopo_->tidSide(detid) == 2)
113  subdet = 5;
114  else
115  subdet = 4;
116  component = tTopo_->tidWheel(detid);
117  } else if (subDet == StripSubdetector::TOB) {
118  subdet = 6;
119  component = tTopo_->tobLayer(detid);
120  } else if (subDet == StripSubdetector::TEC) {
121  if (tTopo_->tecSide(detid) == 2)
122  subdet = 2;
123  else
124  subdet = 1;
125  component = tTopo_->tecWheel(detid);
126  }
127 
128  SiStripQuality::Range sqrange = SiStripQuality::Range(siStripQuality->getDataVectorBegin() + rp->ibegin,
129  siStripQuality->getDataVectorBegin() + rp->iend);
130 
131  for (int it = 0; it < sqrange.second - sqrange.first; it++) {
132  unsigned int range = siStripQuality->decode(*(sqrange.first + it)).range;
133  float val = (mapBadStrip.find(std::make_pair(subdet, component)) != mapBadStrip.end())
134  ? mapBadStrip.at(std::make_pair(subdet, component))
135  : 0.;
136  val += range;
137  mapBadStrip[std::make_pair(subdet, component)] = val;
138  }
139  }
140 }
141 
143  LogDebug("SiStripBadComponentInfo") << "SiStripBadComponentInfo::dqmEndRun";
146  }
147  bookBadComponentHistos(ibooker, igetter);
151 }
152 //
153 // -- Book MEs for SiStrip Dcs Fraction
154 //
156  if (!bookedStatus_) {
157  std::string strip_dir = "";
158  ibooker.cd();
159  // SiStripUtility::getTopFolderPath(dqmStore_, "SiStrip", strip_dir);
160  if (igetter.dirExists("SiStrip")) {
161  ibooker.cd("SiStrip");
162  strip_dir = ibooker.pwd();
163  }
164  edm::LogInfo("SiStripBadComponentInfo")
165  << "SiStripBadComponentInfo::bookBadComponentHistos ==> " << strip_dir << " " << ibooker.pwd() << std::endl;
166  if (!strip_dir.empty())
167  ibooker.setCurrentFolder(strip_dir + "/EventInfo");
168  else
169  ibooker.setCurrentFolder("SiStrip/EventInfo");
170 
171  ibooker.cd();
172  if (!strip_dir.empty())
173  ibooker.setCurrentFolder(strip_dir + "/EventInfo/BadComponentContents");
174 
175  std::string hname, htitle;
176  hname = "BadAPVMap";
177  htitle = "SiStrip Bad APVs";
178  badAPVME_ = ibooker.book2D(hname, htitle, nSubSystem_, 0.5, nSubSystem_ + 0.5, 10, 0.5, 10.5);
179  badAPVME_->setAxisTitle("Sub Detector Type", 1);
180  badAPVME_->setAxisTitle("Layer/Disc Number", 2);
181 
182  hname = "BadFiberMap";
183  htitle = "SiStrip Bad Fibers";
184  badFiberME_ = ibooker.book2D(hname, htitle, nSubSystem_, 0.5, nSubSystem_ + 0.5, 10, 0.5, 10.5);
185  badFiberME_->setAxisTitle("Sub Detector Type", 1);
186  badFiberME_->setAxisTitle("Layer/Disc Number", 2);
187 
188  hname = "BadStripMap";
189  htitle = "SiStrip Bad Strips";
190  badStripME_ = ibooker.book2D(hname, htitle, nSubSystem_, 0.5, nSubSystem_ + 0.5, 10, 0.5, 10.5);
191  badStripME_->setAxisTitle("Sub Detector Type", 1);
192  badStripME_->setAxisTitle("Layer/Disc Number", 2);
193 
194  std::vector<std::string> names;
195  names.push_back("TECB");
196  names.push_back("TECF");
197  names.push_back("TIB");
198  names.push_back("TIDB");
199  names.push_back("TIDF");
200  names.push_back("TOB");
201 
202  for (unsigned int i = 0; i < names.size(); i++) {
203  badAPVME_->setBinLabel(i + 1, names[i]);
204  badFiberME_->setBinLabel(i + 1, names[i]);
205  badStripME_->setBinLabel(i + 1, names[i]);
206  }
207 
208  bookedStatus_ = true;
209  ibooker.cd();
210  }
211 }
212 
214  auto index = std::make_pair(xbin, component);
215 
216  if (BC.BadApvs) {
217  int ntot = std::bitset<16>(BC.BadApvs & 0x3f).count();
218  float val = (mapBadAPV.find(index) != mapBadAPV.end()) ? mapBadAPV.at(index) : 0.;
219  val += ntot;
220  mapBadAPV[index] = val;
221  }
222  if (BC.BadFibers) {
223  int ntot = std::bitset<16>(BC.BadFibers & 0x7).count();
224  float val = (mapBadFiber.find(index) != mapBadFiber.end()) ? mapBadFiber.at(index) : 0.;
225  val += ntot;
226  mapBadFiber[index] = val;
227  }
228 }
229 void SiStripBadComponentInfo::createSummary(MonitorElement* me, const std::map<std::pair<int, int>, float>& map) {
230  for (int i = 1; i < nSubSystem_ + 1; i++) {
231  float sum = 0.0;
232  for (int k = 1; k < me->getNbinsY(); k++) {
233  auto index = std::make_pair(i, k);
234  if (map.find(index) != map.end()) {
235  me->setBinContent(i, k, map.at(index)); // fill the layer/wheel bins
236  sum += map.at(index);
237  }
238  }
239  me->setBinContent(i, me->getNbinsY(), sum); // fill the summary bin (last one)
240  }
241 }
SiStripBadComponentInfo::bookedStatus_
bool bookedStatus_
Definition: SiStripBadComponentInfo.h:74
SiStripBadComponentInfo::tTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: SiStripBadComponentInfo.h:77
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
SiStripQualityWithFromFedErrorsHelper::getMergedQuality
const SiStripQuality & getMergedQuality(dqm::harvesting::DQMStore::IGetter &getter)
Definition: SiStripQualityWithFromFedErrorsHelper.cc:201
mps_fire.i
i
Definition: mps_fire.py:428
MessageLogger.h
SiStripFolderOrganizer.h
funct::false
false
Definition: Factorize.h:29
SiStripBadComponentInfo::SiStripBadComponentInfo
SiStripBadComponentInfo(edm::ParameterSet const &ps)
Constructor.
Definition: SiStripBadComponentInfo.cc:23
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
SiStripBadComponentInfo::~SiStripBadComponentInfo
~SiStripBadComponentInfo() override
Definition: SiStripBadComponentInfo.cc:32
SiStripBadComponentInfo::endRun
void endRun(edm::Run const &, edm::EventSetup const &) override
Definition: SiStripBadComponentInfo.cc:39
SiStripBadComponentInfo::createSummary
void createSummary(MonitorElement *me, const std::map< std::pair< int, int >, float > &map)
Definition: SiStripBadComponentInfo.cc:229
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
SiStripBadStrip::decode
data decode(const unsigned int &value) const
Definition: SiStripBadStrip.h:78
gpuPixelDoublets::ntot
__shared__ uint32_t ntot
Definition: gpuPixelDoubletsAlgos.h:67
SiStripBadComponentInfo::badStripME_
MonitorElement * badStripME_
Definition: SiStripBadComponentInfo.h:68
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:47
DQMStore.h
SiStripBadComponentInfo.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:462
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiStripBadStrip::getDataVectorBegin
ContainerIterator getDataVectorBegin() const
Definition: SiStripBadStrip.h:73
SiStripBadComponentInfo::mapBadFiber
std::map< std::pair< int, int >, float > mapBadFiber
Definition: SiStripBadComponentInfo.h:71
SiStripUtility.h
DetId
Definition: DetId.h:17
MakerMacros.h
SiStripBadStrip::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripBadStrip.h:53
SiStripQuality::getBadComponentList
const std::vector< BadComponent > & getBadComponentList() const
Definition: SiStripQuality.h:114
SiStripBadStrip::getRegistryVectorBegin
RegistryIterator getRegistryVectorBegin() const
Definition: SiStripBadStrip.h:75
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
SiStripBadComponentInfo::fillBadComponentMaps
void fillBadComponentMaps(const SiStripQuality *siStripQuality)
Definition: SiStripBadComponentInfo.cc:50
names
const std::string names[nVars_]
Definition: PhotonIDValueMapProducer.cc:124
SiStripBadComponentInfo::dqmEndJob
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
Definition: SiStripBadComponentInfo.cc:142
Service.h
SiStripBadComponentInfo::tTopo_
std::unique_ptr< TrackerTopology > tTopo_
Definition: SiStripBadComponentInfo.h:78
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
SiStripBadComponentInfo::bookBadComponentHistos
void bookBadComponentHistos(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
Definition: SiStripBadComponentInfo.cc:155
dqmdumpme.k
k
Definition: dqmdumpme.py:60
dqm::implementation::NavigatorBase::pwd
virtual std::string pwd()
Definition: DQMStore.cc:16
SiStripQuality::BadComponent::BadFibers
unsigned short BadFibers
Definition: SiStripQuality.h:37
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
SiStripBadComponentInfo::mapBadAPV
std::map< std::pair< int, int >, float > mapBadAPV
Definition: SiStripBadComponentInfo.h:70
edm::ParameterSet
Definition: ParameterSet.h:47
edm::Transition
Transition
Definition: Transition.h:12
SiStripBadComponentInfo::badFiberME_
MonitorElement * badFiberME_
Definition: SiStripBadComponentInfo.h:67
SiStripBadComponentInfo
Definition: SiStripBadComponentInfo.h:42
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
SiStripQuality::BadComponent::BadApvs
unsigned short BadApvs
Definition: SiStripQuality.h:36
edm::EventSetup
Definition: EventSetup.h:58
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
SiStripBadComponentInfo::nSubSystem_
int nSubSystem_
Definition: SiStripBadComponentInfo.h:75
SiStripBadComponentInfo::withFedErrHelper_
SiStripQualityWithFromFedErrorsHelper withFedErrHelper_
Definition: SiStripBadComponentInfo.h:79
heppy_batch.val
val
Definition: heppy_batch.py:351
writedatasetfile.run
run
Definition: writedatasetfile.py:27
SiStripQuality::BadComponent
Definition: SiStripQuality.h:34
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
dqm::implementation::IGetter
Definition: DQMStore.h:484
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SiStripBadComponentInfo::mapBadStrip
std::map< std::pair< int, int >, float > mapBadStrip
Definition: SiStripBadComponentInfo.h:72
SiStripBadStrip::RegistryIterator
Registry::const_iterator RegistryIterator
Definition: SiStripBadStrip.h:55
dqm::implementation::IBooker
Definition: DQMStore.h:43
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
SiStripBadStrip::data::range
unsigned short range
Definition: SiStripBadStrip.h:34
genParticles_cff.map
map
Definition: genParticles_cff.py:11
ParameterSet.h
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
SiStripQualityWithFromFedErrorsHelper::addBadCompFromFedErr
bool addBadCompFromFedErr() const
Definition: SiStripQualityWithFromFedErrorsHelper.h:75
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
StripSubdetector.h
SiStripBadComponentInfo::badAPVME_
MonitorElement * badAPVME_
Definition: SiStripBadComponentInfo.h:66
SiStripBadStrip::getRegistryVectorEnd
RegistryIterator getRegistryVectorEnd() const
Definition: SiStripBadStrip.h:76
dqm::implementation::IGetter::dirExists
virtual bool dirExists(std::string const &path) const
Definition: DQMStore.cc:730
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
SiStripQualityWithFromFedErrorsHelper::qualityToken
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > & qualityToken() const
Definition: SiStripQualityWithFromFedErrorsHelper.h:76
SiStripQualityWithFromFedErrorsHelper::endRun
bool endRun(const edm::EventSetup &)
Definition: SiStripQualityWithFromFedErrorsHelper.cc:186
SiStripQuality
Definition: SiStripQuality.h:32