13 Tk_HM_ = std::make_unique<TkHistoMap>(tkDetMap,
"SiStrip/Histo_Map",
"Quality_TkMap", 0.);
26 for (
const auto det : selectedDetIds) {
32 ModMEs selModME_ = _selModME_;
38 for (
int istrip = 0; istrip < nStrip; ++istrip) {
45 for (
const auto det : selectedDetIds) {
66 float numberOfBadStrips = 0;
77 int subDetId_ = ((selDetId_ >> 25) & 0x7);
79 if (subDetId_ < 3 || subDetId_ > 6) {
80 edm::LogError(
"SiStripQualityDQM") <<
"[SiStripQualityDQM::fillMEsForLayer] WRONG INPUT : no such " 82 << subDetId_ <<
" no folder set!" << std::endl;
93 selME_ = selMEsMapIter_->second;
97 std::vector<uint32_t> sameLayerDetIds_;
98 sameLayerDetIds_.clear();
112 for (
unsigned int i = 0;
i < sameLayerDetIds_.size();
i++) {
116 numberOfBadStrips = 0;
118 for (
int istrip = 0; istrip < nStrip; ++istrip) {
124 float fr = 100 *
float(numberOfBadStrips) / nStrip;
128 sprintf(
c,
"%d", sameLayerDetIds_[
i]);
134 Tk_HM_->setBinContent(sameLayerDetIds_[
i], fr);
171 ME[0] =
dqmStore_->
book1D(hSummary_BadModules_name, hSummary_BadModules_name, NchX, LowX, HighX);
172 ME[0]->setAxisTitle(hSummary_BadObjects_xTitle, 1);
173 ME[0]->setAxisTitle(hSummary_BadModules_yTitle, 2);
175 ME[1] =
dqmStore_->
book1D(hSummary_BadFibers_name, hSummary_BadFibers_name, NchX, LowX, HighX);
176 ME[1]->setAxisTitle(hSummary_BadObjects_xTitle, 1);
177 ME[1]->setAxisTitle(hSummary_BadFibers_yTitle, 2);
179 ME[2] =
dqmStore_->
book1D(hSummary_BadApvs_name, hSummary_BadApvs_name, NchX, LowX, HighX);
180 ME[2]->setAxisTitle(hSummary_BadObjects_xTitle, 1);
181 ME[2]->setAxisTitle(hSummary_BadApvs_yTitle, 2);
183 ME[3] =
dqmStore_->
book1D(hSummary_BadStrips_name, hSummary_BadStrips_name, NchX, LowX, HighX);
184 ME[3]->setAxisTitle(hSummary_BadObjects_xTitle, 1);
185 ME[3]->setAxisTitle(hSummary_BadStrips_yTitle, 2);
189 for (
int i = 0;
i < 4; ++
i) {
191 for (
int j = 0;
j < 19; ++
j) {
193 for (
int k = 0;
k < 4; ++
k)
198 std::stringstream
ss;
203 LogDebug(
"SiStripQualityDQM") <<
ss.str() << std::endl;
207 for (
size_t i = 0;
i < BC.size(); ++
i) {
218 ((BC[
i].BadApvs >> 2) & 0
x1) + ((BC[
i].BadApvs >> 1) & 0
x1) + ((BC[
i].BadApvs) & 0
x1);
268 uint32_t detid = rp->detid;
273 if (
a.subdetId() == 3) {
276 }
else if (
a.subdetId() == 4) {
279 }
else if (
a.subdetId() == 5) {
282 }
else if (
a.subdetId() == 6) {
290 for (
int it = 0;
it < sqrange.second - sqrange.first;
it++) {
303 ss <<
"\n-----------------\nGlobal Info\n-----------------";
304 ss <<
"\nBadComponent \t Modules \tFibers " 305 "\tApvs\tStrips\n------------------------------------------------------" 320 for (
int i = 1;
i < 5; ++
i) {
323 std::stringstream binlabel;
324 binlabel <<
"TIB L " <<
i;
326 for (
int j = 0;
j < 4;
j++) {
328 ME[
j]->setBinLabel(
i, binlabel.str());
332 for (
int i = 1;
i < 4; ++
i) {
335 std::stringstream binlabel;
336 binlabel <<
"TID+ D " <<
i;
338 for (
int j = 0;
j < 4;
j++) {
340 ME[
j]->setBinLabel(
i + 4, binlabel.str());
343 for (
int i = 4;
i < 7; ++
i) {
346 std::stringstream binlabel;
347 binlabel <<
"TID- D " <<
i - 3;
349 for (
int j = 0;
j < 4;
j++) {
351 ME[
j]->setBinLabel(
i + 4, binlabel.str());
355 for (
int i = 1;
i < 7; ++
i) {
358 std::stringstream binlabel;
359 binlabel <<
"TOB L " <<
i;
361 for (
int j = 0;
j < 4;
j++) {
363 ME[
j]->setBinLabel(
i + 10, binlabel.str());
367 for (
int i = 1;
i < 10; ++
i) {
370 std::stringstream binlabel;
371 binlabel <<
"TEC+ D " <<
i;
373 for (
int j = 0;
j < 4;
j++) {
375 ME[
j]->setBinLabel(
i + 16, binlabel.str());
378 for (
int i = 10;
i < 19; ++
i) {
381 std::stringstream binlabel;
382 binlabel <<
"TEC- D " <<
i - 9;
384 for (
int j = 0;
j < 4;
j++) {
386 ME[
j]->setBinLabel(
i + 16, binlabel.str());
391 ss <<
"\n----------------------------------------------------------------" 392 "\n\t\t Detid \tModules Fibers " 393 "Apvs\n---------------------------------------------------------------" 395 for (
int i = 1;
i < 5; ++
i)
396 ss <<
"\nTIB Layer " <<
i <<
" :" <<
ssV[0][
i].
str();
398 for (
int i = 1;
i < 4; ++
i)
399 ss <<
"\nTID+ Disk " <<
i <<
" :" <<
ssV[1][
i].
str();
400 for (
int i = 4;
i < 7; ++
i)
401 ss <<
"\nTID- Disk " <<
i - 3 <<
" :" <<
ssV[1][
i].
str();
403 for (
int i = 1;
i < 7; ++
i)
404 ss <<
"\nTOB Layer " <<
i <<
" :" <<
ssV[2][
i].
str();
406 for (
int i = 1;
i < 10; ++
i)
407 ss <<
"\nTEC+ Disk " <<
i <<
" :" <<
ssV[3][
i].
str();
408 for (
int i = 10;
i < 19; ++
i)
409 ss <<
"\nTEC- Disk " <<
i - 9 <<
" :" <<
ssV[3][
i].
str();
413 for (
int i = 0;
i < 4;
i++) {
415 ME[
i]->getTH1()->Draw();
void getModMEs(ModMEs &CondObj_ME, const uint32_t &detId_)
ContainerIterator getDataVectorBegin() const
T getParameter(std::string const &) const
unsigned int tobLayer(const DetId &id) const
int NBadComponent[4][19][4]
const TrackerTopology * tTopo_
static constexpr auto TID
unsigned int tidSide(const DetId &id) const
SiStripQualityDQM(edm::ESGetToken< SiStripQuality, SiStripQualityRcd > token, edm::RunNumber_t iRun, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet, const TrackerTopology *tTopo, const TkDetMap *tkDetMap)
unsigned int tidWheel(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
void fillSummaryMEs(const std::vector< uint32_t > &selectedDetIds) override
void setCurrentFolder(std::string const &fullpath) override
Registry::const_iterator RegistryIterator
Log< level::Error, false > LogError
const Range getRange(const uint32_t detID) const
void getDetIds(std::vector< uint32_t > &DetIds_) const
void fillTkMap(const uint32_t &detid, const float &value)
const std::vector< BadComponent > & getBadComponentList() const
const SiStripQuality * condObj_
U second(std::pair< T, U > const &p)
std::map< uint32_t, ModMEs > SummaryMEsMap_
std::stringstream ssV[4][19]
unsigned int tecSide(const DetId &id) const
void SetBadComponents(int i, int component, SiStripQuality::BadComponent &BC)
void fillMEsForDet(const ModMEs &selModME_, uint32_t selDetId_) override
RegistryIterator getRegistryVectorEnd() const
MonitorElement * ProfileDistr
void fillModMEs(const std::vector< uint32_t > &selectedDetIds) override
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)
static constexpr auto TOB
virtual std::string getTitle() const
get MonitorElement title
Log< level::Info, false > LogInfo
Detector identifier class for the strip tracker.
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
void getConditionObject(const edm::EventSetup &eSetup) override
bool IsStripBad(uint32_t detid, short strip) const
std::vector< uint32_t > alreadyFilledLayers
~SiStripQualityDQM() override
static constexpr auto TIB
std::pair< std::string, uint32_t > getLayerNameAndId(const uint32_t &detId_)
virtual TH1 * getTH1() const
std::vector< uint32_t > GetSameLayerDetId(const std::vector< uint32_t > &activeDetIds, uint32_t selDetId)
std::pair< ContainerIterator, ContainerIterator > Range
MonitorElement * SummaryDistr
void fillMEsForLayer(uint32_t selDetId_) override
void fillGrandSummaryMEs()
std::vector< uint32_t > activeDetIds
data decode(const unsigned int &value) const
unsigned int tibLayer(const DetId &id) const
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
bool IsModuleUsable(uint32_t detid) const
void getSummaryMEs(ModMEs &CondObj_ME, const uint32_t &detId_)
const std::vector< uint32_t > & getAllDetIds() const noexcept
RegistryIterator getRegistryVectorBegin() const
SiStripHistoId hidmanager
std::unique_ptr< TkHistoMap > Tk_HM_
static constexpr auto TEC
void getActiveDetIds(const edm::EventSetup &eSetup) override