CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripQualityStatistics Class Reference

#include <CalibTracker/SiStripQuality/plugins/SiStripQualityStatistics.cc>

Inheritance diagram for SiStripQualityStatistics:
DQMEDHarvester edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::EndProcessBlockProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &) override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
 SiStripQualityStatistics (const edm::ParameterSet &)
 
 ~SiStripQualityStatistics () override
 
- Public Member Functions inherited from DQMEDHarvester
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginJob () override
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &) override
 
virtual void dqmAnalyze (DQMStore::IBooker &, DQMStore::IGetter &, edm::Event const &, edm::EventSetup const &)
 
 DQMEDHarvester ()
 
 DQMEDHarvester (edm::ParameterSet const &iConfig)
 
virtual void dqmEndLuminosityBlock (DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndRun (DQMStore::IBooker &, DQMStore::IGetter &, edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &es) final
 
void endProcessBlockProduce (edm::ProcessBlock &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &es) final
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::EndProcessBlockProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void SetBadComponents (int, int, SiStripQuality::BadComponent &)
 
void updateAndSave (const SiStripQuality *siStripQuality)
 

Private Attributes

bool addBadCompFromFedErr_
 
std::string dataLabel_
 
const SiStripFedCablingfedCabling_
 
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcdfedCablingToken_
 
float fedErrCutoff_
 
unsigned long long m_cacheID_
 
int NBadComponent [4][19][4]
 
int NTkBadComponent [4]
 
SiStripDetInfoFileReaderreader
 
edm::RunID run_
 
bool saveTkHistoMap_
 
const SiStripQualitysiStripQuality_
 
std::stringstream ssV [4][19]
 
edm::ESGetToken< SiStripQuality, SiStripQualityRcdstripQualityToken_
 
edm::ESWatcher< SiStripQualityRcdstripQualityWatcher_
 
edm::ESGetToken< TkDetMap, TrackerTopologyRcdtkDetMapToken_
 
std::unique_ptr< TkHistoMaptkhisto
 
TrackerMaptkMap
 
std::string TkMapFileName_
 
TrackerMaptkMapFullIOVs
 
const TrackerTopologytTopo_
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 

Additional Inherited Members

- Public Types inherited from DQMEDHarvester
typedef dqm::harvesting::DQMStore DQMStore
 
typedef dqm::harvesting::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDHarvester
DQMStoredqmstore_
 
edm::GetterOfProducts< DQMTokenjobmegetter_
 
edm::EDPutTokenT< DQMTokenjobToken_
 
edm::GetterOfProducts< DQMTokenlumimegetter_
 
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::GetterOfProducts< DQMTokenrunmegetter_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 20 of file SiStripQualityStatistics.h.

Constructor & Destructor Documentation

◆ SiStripQualityStatistics()

SiStripQualityStatistics::SiStripQualityStatistics ( const edm::ParameterSet iConfig)
explicit

Definition at line 29 of file SiStripQualityStatistics.cc.

30  : m_cacheID_(0),
31  dataLabel_(iConfig.getUntrackedParameter<std::string>("dataLabel", "")),
32  TkMapFileName_(iConfig.getUntrackedParameter<std::string>("TkMapFileName", "")),
33  saveTkHistoMap_(iConfig.getUntrackedParameter<bool>("SaveTkHistoMap", true)),
34  tkMap(nullptr),
35  tkMapFullIOVs(nullptr),
36  addBadCompFromFedErr_(iConfig.getUntrackedParameter<bool>("AddBadComponentsFromFedErrors", false)),
37  fedErrCutoff_(float(iConfig.getUntrackedParameter<double>("FedErrorBadComponentsCutoff", 0.8))),
38  tTopoToken_(esConsumes<edm::Transition::EndRun>()),
39  tkDetMapToken_(esConsumes<edm::Transition::EndRun>()),
40  stripQualityToken_(esConsumes<edm::Transition::EndRun>()),
41  fedCablingToken_(addBadCompFromFedErr_ ? decltype(fedCablingToken_){esConsumes<edm::Transition::EndRun>()}
42  : decltype(fedCablingToken_){}) {
44  iConfig
45  .getUntrackedParameter<edm::FileInPath>("file",
46  edm::FileInPath("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat"))
47  .fullPath());
48 
49  tkMapFullIOVs = new TrackerMap("BadComponents");
50  tkhisto = nullptr;
51 }

◆ ~SiStripQualityStatistics()

SiStripQualityStatistics::~SiStripQualityStatistics ( )
override

Definition at line 53 of file SiStripQualityStatistics.cc.

53 {}

Member Function Documentation

◆ dqmEndJob()

void SiStripQualityStatistics::dqmEndJob ( DQMStore::IBooker booker,
DQMStore::IGetter getter 
)
overridevirtual

Implements DQMEDHarvester.

Definition at line 55 of file SiStripQualityStatistics.cc.

55  {
57  SiStripQuality mergedQuality{*siStripQuality_};
58  auto fedErrQuality = sistrip::badStripFromFedErr(getter, *fedCabling_, fedErrCutoff_);
59  mergedQuality.add(fedErrQuality.get());
60  mergedQuality.cleanUp();
61  mergedQuality.fillBadComponents();
62  updateAndSave(&mergedQuality);
63  }
65  if (!filename.empty()) {
66  tkMapFullIOVs->save(false, 0, 0, filename);
67  filename.erase(filename.begin() + filename.find('.'), filename.end());
68  tkMapFullIOVs->print(false, 0, 0, filename);
69 
70  if (saveTkHistoMap_) {
71  tkhisto->save(filename + ".root");
72  tkhisto->saveAsCanvas(filename + "_Canvas.root", "E");
73  }
74  }
75 }

References addBadCompFromFedErr_, sistrip::badStripFromFedErr(), fedCabling_, fedErrCutoff_, corrVsCorr::filename, TrackerMap::print(), TrackerMap::save(), saveTkHistoMap_, siStripQuality_, AlCaHLTBitMon_QueryRunRegistry::string, tkhisto, TkMapFileName_, tkMapFullIOVs, and updateAndSave().

◆ endRun()

void SiStripQualityStatistics::endRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
override

Definition at line 77 of file SiStripQualityStatistics.cc.

77  {
78  tTopo_ = &iSetup.getData(tTopoToken_);
79  if ((!tkhisto) && (!TkMapFileName_.empty())) {
80  //here the baseline (the value of the empty,not assigned bins) is put to -1 (default is zero)
81  tkhisto = std::make_unique<TkHistoMap>(&iSetup.getData(tkDetMapToken_), "BadComp", "BadComp", -1.);
82  }
83 
84  if (stripQualityWatcher_.check(iSetup)) {
85  run_ = run.id();
86 
87  const auto stripQuality = &iSetup.getData(stripQualityToken_);
88  if (!addBadCompFromFedErr_) {
89  updateAndSave(stripQuality);
90  } else {
91  siStripQuality_ = stripQuality;
92  fedCabling_ = &iSetup.getData(fedCablingToken_);
93  }
94  }
95 }

References addBadCompFromFedErr_, edm::ESWatcher< T >::check(), fedCabling_, fedCablingToken_, edm::EventSetup::getData(), writedatasetfile::run, run_, siStripQuality_, stripQualityToken_, stripQualityWatcher_, tkDetMapToken_, tkhisto, TkMapFileName_, tTopo_, tTopoToken_, and updateAndSave().

◆ SetBadComponents()

void SiStripQualityStatistics::SetBadComponents ( int  i,
int  component,
SiStripQuality::BadComponent BC 
)
private

Definition at line 306 of file SiStripQualityStatistics.cc.

306  {
307  int napv = reader->getNumberOfApvsAndStripLength(BC.detid).first;
308 
309  ssV[i][component] << "\n\t\t " << BC.detid << " \t " << BC.BadModule << " \t " << ((BC.BadFibers) & 0x1) << " ";
310  if (napv == 4)
311  ssV[i][component] << "x " << ((BC.BadFibers >> 1) & 0x1);
312 
313  if (napv == 6)
314  ssV[i][component] << ((BC.BadFibers >> 1) & 0x1) << " " << ((BC.BadFibers >> 2) & 0x1);
315  ssV[i][component] << " \t " << ((BC.BadApvs) & 0x1) << " " << ((BC.BadApvs >> 1) & 0x1) << " ";
316  if (napv == 4)
317  ssV[i][component] << "x x " << ((BC.BadApvs >> 2) & 0x1) << " " << ((BC.BadApvs >> 3) & 0x1);
318  if (napv == 6)
319  ssV[i][component] << ((BC.BadApvs >> 2) & 0x1) << " " << ((BC.BadApvs >> 3) & 0x1) << " "
320  << ((BC.BadApvs >> 4) & 0x1) << " " << ((BC.BadApvs >> 5) & 0x1) << " ";
321 
322  if (BC.BadApvs) {
323  NBadComponent[i][0][2] += ((BC.BadApvs >> 5) & 0x1) + ((BC.BadApvs >> 4) & 0x1) + ((BC.BadApvs >> 3) & 0x1) +
324  ((BC.BadApvs >> 2) & 0x1) + ((BC.BadApvs >> 1) & 0x1) + ((BC.BadApvs) & 0x1);
325  NBadComponent[i][component][2] += ((BC.BadApvs >> 5) & 0x1) + ((BC.BadApvs >> 4) & 0x1) +
326  ((BC.BadApvs >> 3) & 0x1) + ((BC.BadApvs >> 2) & 0x1) +
327  ((BC.BadApvs >> 1) & 0x1) + ((BC.BadApvs) & 0x1);
328  tkMap->fillc(BC.detid, 0xff0000);
329  }
330  if (BC.BadFibers) {
331  NBadComponent[i][0][1] += ((BC.BadFibers >> 2) & 0x1) + ((BC.BadFibers >> 1) & 0x1) + ((BC.BadFibers) & 0x1);
332  NBadComponent[i][component][1] +=
333  ((BC.BadFibers >> 2) & 0x1) + ((BC.BadFibers >> 1) & 0x1) + ((BC.BadFibers) & 0x1);
334  tkMap->fillc(BC.detid, 0x0000ff);
335  }
336  if (BC.BadModule) {
337  NBadComponent[i][0][0]++;
338  NBadComponent[i][component][0]++;
339  tkMap->fillc(BC.detid, 0x0);
340  }
341 }

References SiStripQuality::BadComponent::BadApvs, SiStripQuality::BadComponent::BadFibers, SiStripQuality::BadComponent::BadModule, SiStripQuality::BadComponent::detid, TrackerMap::fillc(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), mps_fire::i, NBadComponent, reader, ssV, tkMap, and testProducerWithPsetDescEmpty_cfi::x1.

Referenced by updateAndSave().

◆ updateAndSave()

void SiStripQualityStatistics::updateAndSave ( const SiStripQuality siStripQuality)
private

Definition at line 97 of file SiStripQualityStatistics.cc.

97  {
98  for (int i = 0; i < 4; ++i) {
99  NTkBadComponent[i] = 0;
100  for (int j = 0; j < 19; ++j) {
101  ssV[i][j].str("");
102  for (int k = 0; k < 4; ++k)
103  NBadComponent[i][j][k] = 0;
104  }
105  }
106 
107  if (tkMap)
108  delete tkMap;
109  tkMap = new TrackerMap("BadComponents");
110 
111  std::stringstream ss;
112  std::vector<uint32_t> detids = reader->getAllDetIds();
113  std::vector<uint32_t>::const_iterator idet = detids.begin();
114  for (; idet != detids.end(); ++idet) {
115  ss << "detid " << (*idet) << " IsModuleUsable " << siStripQuality->IsModuleUsable((*idet)) << "\n";
116  if (siStripQuality->IsModuleUsable((*idet)))
117  tkMap->fillc(*idet, 0x00ff00);
118  }
119  LogDebug("SiStripQualityStatistics") << ss.str() << std::endl;
120 
121  std::vector<SiStripQuality::BadComponent> BC = siStripQuality->getBadComponentList();
122 
123  for (size_t i = 0; i < BC.size(); ++i) {
124  //&&&&&&&&&&&&&
125  //Full Tk
126  //&&&&&&&&&&&&&
127 
128  if (BC[i].BadModule)
129  NTkBadComponent[0]++;
130  if (BC[i].BadFibers)
131  NTkBadComponent[1] += ((BC[i].BadFibers >> 2) & 0x1) + ((BC[i].BadFibers >> 1) & 0x1) + ((BC[i].BadFibers) & 0x1);
132  if (BC[i].BadApvs)
133  NTkBadComponent[2] += ((BC[i].BadApvs >> 5) & 0x1) + ((BC[i].BadApvs >> 4) & 0x1) + ((BC[i].BadApvs >> 3) & 0x1) +
134  ((BC[i].BadApvs >> 2) & 0x1) + ((BC[i].BadApvs >> 1) & 0x1) + ((BC[i].BadApvs) & 0x1);
135 
136  //&&&&&&&&&&&&&&&&&
137  //Single SubSyste
138  //&&&&&&&&&&&&&&&&&
139  int component;
140  DetId detectorId = DetId(BC[i].detid);
141  int subDet = detectorId.subdetId();
142  if (subDet == StripSubdetector::TIB) {
143  //&&&&&&&&&&&&&&&&&
144  //TIB
145  //&&&&&&&&&&&&&&&&&
146 
147  component = tTopo_->tibLayer(BC[i].detid);
148  SetBadComponents(0, component, BC[i]);
149 
150  } else if (subDet == StripSubdetector::TID) {
151  //&&&&&&&&&&&&&&&&&
152  //TID
153  //&&&&&&&&&&&&&&&&&
154 
155  component = tTopo_->tidSide(BC[i].detid) == 2 ? tTopo_->tidWheel(BC[i].detid) : tTopo_->tidWheel(BC[i].detid) + 3;
156  SetBadComponents(1, component, BC[i]);
157 
158  } else if (subDet == StripSubdetector::TOB) {
159  //&&&&&&&&&&&&&&&&&
160  //TOB
161  //&&&&&&&&&&&&&&&&&
162 
163  component = tTopo_->tobLayer(BC[i].detid);
164  SetBadComponents(2, component, BC[i]);
165 
166  } else if (subDet == StripSubdetector::TEC) {
167  //&&&&&&&&&&&&&&&&&
168  //TEC
169  //&&&&&&&&&&&&&&&&&
170 
171  component = tTopo_->tecSide(BC[i].detid) == 2 ? tTopo_->tecWheel(BC[i].detid) : tTopo_->tecWheel(BC[i].detid) + 9;
172  SetBadComponents(3, component, BC[i]);
173  }
174  }
175 
176  //&&&&&&&&&&&&&&&&&&
177  // Single Strip Info
178  //&&&&&&&&&&&&&&&&&&
179  float percentage = 0;
180 
181  SiStripQuality::RegistryIterator rbegin = siStripQuality->getRegistryVectorBegin();
183 
184  for (SiStripBadStrip::RegistryIterator rp = rbegin; rp != rend; ++rp) {
185  uint32_t detid = rp->detid;
186 
187  int subdet = -999;
188  int component = -999;
189  DetId detectorId = DetId(detid);
190  int subDet = detectorId.subdetId();
191  if (subDet == StripSubdetector::TIB) {
192  subdet = 0;
193  component = tTopo_->tibLayer(detid);
194  } else if (subDet == StripSubdetector::TID) {
195  subdet = 1;
196  component = tTopo_->tidSide(detid) == 2 ? tTopo_->tidWheel(detid) : tTopo_->tidWheel(detid) + 3;
197  } else if (subDet == StripSubdetector::TOB) {
198  subdet = 2;
199  component = tTopo_->tobLayer(detid);
200  } else if (subDet == StripSubdetector::TEC) {
201  subdet = 3;
202  component = tTopo_->tecSide(detid) == 2 ? tTopo_->tecWheel(detid) : tTopo_->tecWheel(detid) + 9;
203  }
204 
205  SiStripQuality::Range sqrange = SiStripQuality::Range(siStripQuality->getDataVectorBegin() + rp->ibegin,
206  siStripQuality->getDataVectorBegin() + rp->iend);
207 
208  percentage = 0;
209  for (int it = 0; it < sqrange.second - sqrange.first; it++) {
210  unsigned int range = siStripQuality->decode(*(sqrange.first + it)).range;
211  NTkBadComponent[3] += range;
212  NBadComponent[subdet][0][3] += range;
213  NBadComponent[subdet][component][3] += range;
214  percentage += range;
215  }
216  if (percentage != 0)
217  percentage /= 128. * reader->getNumberOfApvsAndStripLength(detid).first;
218  if (percentage > 1)
219  edm::LogError("SiStripQualityStatistics") << "PROBLEM detid " << detid << " value " << percentage << std::endl;
220 
221  //------- Global Statistics on percentage of bad components along the IOVs ------//
222  tkMapFullIOVs->fill(detid, percentage);
223  if (tkhisto != nullptr)
224  tkhisto->fill(detid, percentage);
225  }
226 
227  //&&&&&&&&&&&&&&&&&&
228  // printout
229  //&&&&&&&&&&&&&&&&&&
230 
231  ss.str("");
232  ss << "\n-----------------\nNew IOV starting from run " << run_.run() << " chacheID " << m_cacheID_
233  << "\n-----------------\n";
234  ss << "\n-----------------\nGlobal Info\n-----------------";
235  ss << "\nBadComponent \t Modules \tFibers "
236  "\tApvs\tStrips\n----------------------------------------------------------------";
237  ss << "\nTracker:\t\t" << NTkBadComponent[0] << "\t" << NTkBadComponent[1] << "\t" << NTkBadComponent[2] << "\t"
238  << NTkBadComponent[3];
239  ss << "\n";
240  ss << "\nTIB:\t\t\t" << NBadComponent[0][0][0] << "\t" << NBadComponent[0][0][1] << "\t" << NBadComponent[0][0][2]
241  << "\t" << NBadComponent[0][0][3];
242  ss << "\nTID:\t\t\t" << NBadComponent[1][0][0] << "\t" << NBadComponent[1][0][1] << "\t" << NBadComponent[1][0][2]
243  << "\t" << NBadComponent[1][0][3];
244  ss << "\nTOB:\t\t\t" << NBadComponent[2][0][0] << "\t" << NBadComponent[2][0][1] << "\t" << NBadComponent[2][0][2]
245  << "\t" << NBadComponent[2][0][3];
246  ss << "\nTEC:\t\t\t" << NBadComponent[3][0][0] << "\t" << NBadComponent[3][0][1] << "\t" << NBadComponent[3][0][2]
247  << "\t" << NBadComponent[3][0][3];
248  ss << "\n";
249 
250  for (int i = 1; i < 5; ++i)
251  ss << "\nTIB Layer " << i << " :\t\t" << NBadComponent[0][i][0] << "\t" << NBadComponent[0][i][1] << "\t"
252  << NBadComponent[0][i][2] << "\t" << NBadComponent[0][i][3];
253  ss << "\n";
254  for (int i = 1; i < 4; ++i)
255  ss << "\nTID+ Disk " << i << " :\t\t" << NBadComponent[1][i][0] << "\t" << NBadComponent[1][i][1] << "\t"
256  << NBadComponent[1][i][2] << "\t" << NBadComponent[1][i][3];
257  for (int i = 4; i < 7; ++i)
258  ss << "\nTID- Disk " << i - 3 << " :\t\t" << NBadComponent[1][i][0] << "\t" << NBadComponent[1][i][1] << "\t"
259  << NBadComponent[1][i][2] << "\t" << NBadComponent[1][i][3];
260  ss << "\n";
261  for (int i = 1; i < 7; ++i)
262  ss << "\nTOB Layer " << i << " :\t\t" << NBadComponent[2][i][0] << "\t" << NBadComponent[2][i][1] << "\t"
263  << NBadComponent[2][i][2] << "\t" << NBadComponent[2][i][3];
264  ss << "\n";
265  for (int i = 1; i < 10; ++i)
266  ss << "\nTEC+ Disk " << i << " :\t\t" << NBadComponent[3][i][0] << "\t" << NBadComponent[3][i][1] << "\t"
267  << NBadComponent[3][i][2] << "\t" << NBadComponent[3][i][3];
268  for (int i = 10; i < 19; ++i)
269  ss << "\nTEC- Disk " << i - 9 << " :\t\t" << NBadComponent[3][i][0] << "\t" << NBadComponent[3][i][1] << "\t"
270  << NBadComponent[3][i][2] << "\t" << NBadComponent[3][i][3];
271  ss << "\n";
272 
273  ss << "\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers "
274  "Apvs\n----------------------------------------------------------------";
275  for (int i = 1; i < 5; ++i)
276  ss << "\nTIB Layer " << i << " :" << ssV[0][i].str();
277  ss << "\n";
278  for (int i = 1; i < 4; ++i)
279  ss << "\nTID+ Disk " << i << " :" << ssV[1][i].str();
280  for (int i = 4; i < 7; ++i)
281  ss << "\nTID- Disk " << i - 3 << " :" << ssV[1][i].str();
282  ss << "\n";
283  for (int i = 1; i < 7; ++i)
284  ss << "\nTOB Layer " << i << " :" << ssV[2][i].str();
285  ss << "\n";
286  for (int i = 1; i < 10; ++i)
287  ss << "\nTEC+ Disk " << i << " :" << ssV[3][i].str();
288  for (int i = 10; i < 19; ++i)
289  ss << "\nTEC- Disk " << i - 9 << " :" << ssV[3][i].str();
290 
291  edm::LogInfo("SiStripQualityStatistics") << ss.str() << std::endl;
292 
294  std::stringstream sRun;
295  sRun.str("");
296  sRun << "_Run_" << std::setw(6) << std::setfill('0') << run_.run() << std::setw(0);
297 
298  if (!filename.empty()) {
299  filename.insert(filename.find('.'), sRun.str());
300  tkMap->save(true, 0, 0, filename);
301  filename.erase(filename.begin() + filename.find('.'), filename.end());
302  tkMap->print(true, 0, 0, filename);
303  }
304 }

References SiStripBadStrip::decode(), corrVsCorr::filename, TrackerMap::fill(), TrackerMap::fillc(), SiStripDetInfoFileReader::getAllDetIds(), SiStripQuality::getBadComponentList(), SiStripBadStrip::getDataVectorBegin(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), SiStripBadStrip::getRegistryVectorBegin(), SiStripBadStrip::getRegistryVectorEnd(), mps_fire::i, SiStripQuality::IsModuleUsable(), dqmiolumiharvest::j, dqmdumpme::k, LogDebug, m_cacheID_, NBadComponent, NTkBadComponent, TrackerMap::print(), FastTimerService_cff::range, SiStripBadStrip::data::range, reader, edm::RunID::run(), run_, TrackerMap::save(), SetBadComponents(), contentValuesCheck::ss, ssV, str, AlCaHLTBitMon_QueryRunRegistry::string, DetId::subdetId(), StripSubdetector::TEC, TrackerTopology::tecSide(), TrackerTopology::tecWheel(), StripSubdetector::TIB, TrackerTopology::tibLayer(), StripSubdetector::TID, TrackerTopology::tidSide(), TrackerTopology::tidWheel(), tkhisto, tkMap, TkMapFileName_, tkMapFullIOVs, StripSubdetector::TOB, TrackerTopology::tobLayer(), tTopo_, and testProducerWithPsetDescEmpty_cfi::x1.

Referenced by dqmEndJob(), and endRun().

Member Data Documentation

◆ addBadCompFromFedErr_

bool SiStripQualityStatistics::addBadCompFromFedErr_
private

Definition at line 48 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), and endRun().

◆ dataLabel_

std::string SiStripQualityStatistics::dataLabel_
private

Definition at line 34 of file SiStripQualityStatistics.h.

◆ fedCabling_

const SiStripFedCabling* SiStripQualityStatistics::fedCabling_
private

Definition at line 56 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), and endRun().

◆ fedCablingToken_

edm::ESGetToken<SiStripFedCabling, SiStripFedCablingRcd> SiStripQualityStatistics::fedCablingToken_
private

Definition at line 53 of file SiStripQualityStatistics.h.

Referenced by endRun().

◆ fedErrCutoff_

float SiStripQualityStatistics::fedErrCutoff_
private

Definition at line 49 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob().

◆ m_cacheID_

unsigned long long SiStripQualityStatistics::m_cacheID_
private

Definition at line 32 of file SiStripQualityStatistics.h.

Referenced by updateAndSave().

◆ NBadComponent

int SiStripQualityStatistics::NBadComponent[4][19][4]
private

Definition at line 39 of file SiStripQualityStatistics.h.

Referenced by SetBadComponents(), and updateAndSave().

◆ NTkBadComponent

int SiStripQualityStatistics::NTkBadComponent[4]
private

Definition at line 38 of file SiStripQualityStatistics.h.

Referenced by updateAndSave().

◆ reader

SiStripDetInfoFileReader* SiStripQualityStatistics::reader
private

Definition at line 46 of file SiStripQualityStatistics.h.

Referenced by SetBadComponents(), and updateAndSave().

◆ run_

edm::RunID SiStripQualityStatistics::run_
private

Definition at line 33 of file SiStripQualityStatistics.h.

Referenced by endRun(), and updateAndSave().

◆ saveTkHistoMap_

bool SiStripQualityStatistics::saveTkHistoMap_
private

Definition at line 36 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob().

◆ siStripQuality_

const SiStripQuality* SiStripQualityStatistics::siStripQuality_
private

Definition at line 57 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), and endRun().

◆ ssV

std::stringstream SiStripQualityStatistics::ssV[4][19]
private

Definition at line 43 of file SiStripQualityStatistics.h.

Referenced by SetBadComponents(), and updateAndSave().

◆ stripQualityToken_

edm::ESGetToken<SiStripQuality, SiStripQualityRcd> SiStripQualityStatistics::stripQualityToken_
private

Definition at line 52 of file SiStripQualityStatistics.h.

Referenced by endRun().

◆ stripQualityWatcher_

edm::ESWatcher<SiStripQualityRcd> SiStripQualityStatistics::stripQualityWatcher_
private

Definition at line 54 of file SiStripQualityStatistics.h.

Referenced by endRun().

◆ tkDetMapToken_

edm::ESGetToken<TkDetMap, TrackerTopologyRcd> SiStripQualityStatistics::tkDetMapToken_
private

Definition at line 51 of file SiStripQualityStatistics.h.

Referenced by endRun().

◆ tkhisto

std::unique_ptr<TkHistoMap> SiStripQualityStatistics::tkhisto
private

Definition at line 47 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), endRun(), and updateAndSave().

◆ tkMap

TrackerMap* SiStripQualityStatistics::tkMap
private

Definition at line 45 of file SiStripQualityStatistics.h.

Referenced by SetBadComponents(), and updateAndSave().

◆ TkMapFileName_

std::string SiStripQualityStatistics::TkMapFileName_
private

Definition at line 35 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), endRun(), and updateAndSave().

◆ tkMapFullIOVs

TrackerMap * SiStripQualityStatistics::tkMapFullIOVs
private

Definition at line 45 of file SiStripQualityStatistics.h.

Referenced by dqmEndJob(), and updateAndSave().

◆ tTopo_

const TrackerTopology* SiStripQualityStatistics::tTopo_
private

Definition at line 55 of file SiStripQualityStatistics.h.

Referenced by endRun(), and updateAndSave().

◆ tTopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> SiStripQualityStatistics::tTopoToken_
private

Definition at line 50 of file SiStripQualityStatistics.h.

Referenced by endRun().

SiStripQualityStatistics::reader
SiStripDetInfoFileReader * reader
Definition: SiStripQualityStatistics.h:46
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
SiStripQuality::BadComponent::detid
uint32_t detid
Definition: SiStripQuality.h:35
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
mps_fire.i
i
Definition: mps_fire.py:428
SiStripQualityStatistics::stripQualityToken_
edm::ESGetToken< SiStripQuality, SiStripQualityRcd > stripQualityToken_
Definition: SiStripQualityStatistics.h:52
edm::RunID::run
RunNumber_t run() const
Definition: RunID.h:36
SiStripQualityStatistics::saveTkHistoMap_
bool saveTkHistoMap_
Definition: SiStripQualityStatistics.h:36
sistrip::badStripFromFedErr
std::unique_ptr< SiStripQuality > badStripFromFedErr(dqm::harvesting::DQMStore::IGetter &dqmStore, const SiStripFedCabling &fedCabling, float cutoff)
Definition: SiStripQualityHelpers.cc:52
contentValuesFiles.fullPath
fullPath
Definition: contentValuesFiles.py:64
SiStripQualityStatistics::fedCablingToken_
edm::ESGetToken< SiStripFedCabling, SiStripFedCablingRcd > fedCablingToken_
Definition: SiStripQualityStatistics.h:53
SiStripBadStrip::decode
data decode(const unsigned int &value) const
Definition: SiStripBadStrip.h:78
SiStripQuality::IsModuleUsable
bool IsModuleUsable(const uint32_t &detid) const
Definition: SiStripQuality.cc:585
SiStripQualityStatistics::TkMapFileName_
std::string TkMapFileName_
Definition: SiStripQualityStatistics.h:35
TrackerMap::fill
void fill(int layer, int ring, int nmod, float x)
Definition: TrackerMap.cc:3288
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiStripQualityStatistics::fedErrCutoff_
float fedErrCutoff_
Definition: SiStripQualityStatistics.h:49
SiStripQualityStatistics::tkDetMapToken_
edm::ESGetToken< TkDetMap, TrackerTopologyRcd > tkDetMapToken_
Definition: SiStripQualityStatistics.h:51
SiStripDetInfoFileReader
Definition: SiStripDetInfoFileReader.h:30
SiStripBadStrip::getDataVectorBegin
ContainerIterator getDataVectorBegin() const
Definition: SiStripBadStrip.h:73
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
SiStripQualityStatistics::addBadCompFromFedErr_
bool addBadCompFromFedErr_
Definition: SiStripQualityStatistics.h:48
SiStripQualityStatistics::NTkBadComponent
int NTkBadComponent[4]
Definition: SiStripQualityStatistics.h:38
SiStripQualityStatistics::tkMap
TrackerMap * tkMap
Definition: SiStripQualityStatistics.h:45
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
DetId
Definition: DetId.h:17
edm::FileInPath
Definition: FileInPath.h:64
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
SiStripBadStrip::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripBadStrip.h:53
SiStripQuality::getBadComponentList
const std::vector< BadComponent > & getBadComponentList() const
Definition: SiStripQuality.h:119
SiStripBadStrip::getRegistryVectorBegin
RegistryIterator getRegistryVectorBegin() const
Definition: SiStripBadStrip.h:75
SiStripQualityStatistics::NBadComponent
int NBadComponent[4][19][4]
Definition: SiStripQualityStatistics.h:39
str
#define str(s)
Definition: TestProcessor.cc:51
corrVsCorr.filename
filename
Definition: corrVsCorr.py:123
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
TrackerMap
Definition: TrackerMap.h:76
dqmdumpme.k
k
Definition: dqmdumpme.py:60
TrackerMap::print
void print(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap")
Definition: TrackerMap.cc:2942
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
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripQualityStatistics::tTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: SiStripQualityStatistics.h:50
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
SiStripQuality::BadComponent::BadModule
bool BadModule
Definition: SiStripQuality.h:38
TrackerTopology::tidSide
unsigned int tidSide(const DetId &id) const
Definition: TrackerTopology.h:190
SiStripQualityStatistics::stripQualityWatcher_
edm::ESWatcher< SiStripQualityRcd > stripQualityWatcher_
Definition: SiStripQualityStatistics.h:54
SiStripQuality::BadComponent::BadApvs
unsigned short BadApvs
Definition: SiStripQuality.h:36
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
SiStripDetInfoFileReader::getAllDetIds
const std::vector< uint32_t > & getAllDetIds() const
Definition: SiStripDetInfoFileReader.h:52
TrackerMap::save
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
Definition: TrackerMap.cc:810
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
SiStripDetInfoFileReader::getNumberOfApvsAndStripLength
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
Definition: SiStripDetInfoFileReader.cc:101
writedatasetfile.run
run
Definition: writedatasetfile.py:27
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
SiStripQualityStatistics::ssV
std::stringstream ssV[4][19]
Definition: SiStripQualityStatistics.h:43
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SiStripBadStrip::RegistryIterator
Registry::const_iterator RegistryIterator
Definition: SiStripBadStrip.h:55
SiStripQualityStatistics::run_
edm::RunID run_
Definition: SiStripQualityStatistics.h:33
SiStripBadStrip::data::range
unsigned short range
Definition: SiStripBadStrip.h:34
SiStripQualityStatistics::dataLabel_
std::string dataLabel_
Definition: SiStripQualityStatistics.h:34
SiStripQualityStatistics::tTopo_
const TrackerTopology * tTopo_
Definition: SiStripQualityStatistics.h:55
SiStripQualityStatistics::SetBadComponents
void SetBadComponents(int, int, SiStripQuality::BadComponent &)
Definition: SiStripQualityStatistics.cc:306
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
SiStripQualityStatistics::tkMapFullIOVs
TrackerMap * tkMapFullIOVs
Definition: SiStripQualityStatistics.h:45
SiStripQualityStatistics::tkhisto
std::unique_ptr< TkHistoMap > tkhisto
Definition: SiStripQualityStatistics.h:47
SiStripQualityStatistics::m_cacheID_
unsigned long long m_cacheID_
Definition: SiStripQualityStatistics.h:32
TrackerTopology::tecWheel
unsigned int tecWheel(const DetId &id) const
Definition: TrackerTopology.h:198
SiStripQualityStatistics::fedCabling_
const SiStripFedCabling * fedCabling_
Definition: SiStripQualityStatistics.h:56
SiStripBadStrip::getRegistryVectorEnd
RegistryIterator getRegistryVectorEnd() const
Definition: SiStripBadStrip.h:76
SiStripQualityStatistics::siStripQuality_
const SiStripQuality * siStripQuality_
Definition: SiStripQualityStatistics.h:57
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
TrackerMap::fillc
void fillc(int idmod, int RGBcode)
Definition: TrackerMap.h:135
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150
SiStripQuality
Definition: SiStripQuality.h:32
SiStripQualityStatistics::updateAndSave
void updateAndSave(const SiStripQuality *siStripQuality)
Definition: SiStripQualityStatistics.cc:97
TrackerTopology::tecSide
unsigned int tecSide(const DetId &id) const
Definition: TrackerTopology.h:184