CMS 3D CMS Logo

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

#include <DQM/SiStripMonitorCluster/interface/SiStripDcsInfo.h>

Inheritance diagram for SiStripDcsInfo:
edm::EDAnalyzer edm::EDConsumerBase

Classes

struct  SubDetMEs
 

Public Member Functions

 SiStripDcsInfo (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~SiStripDcsInfo () override
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void addBadModules ()
 
void analyze (edm::Event const &, edm::EventSetup const &) override
 Analyze. More...
 
void beginJob () override
 BeginJob. More...
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &eSetup) override
 Begin Luminosity Block. More...
 
void beginRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 Begin Run. More...
 
void bookStatus ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup) override
 End Of Luminosity. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 EndRun. More...
 
void fillDummyStatus ()
 
void fillStatus ()
 
void readCabling (edm::EventSetup const &)
 
void readStatus (edm::EventSetup const &)
 

Private Attributes

bool bookedStatus_
 
MonitorElementDcsFraction_
 
edm::ESHandle< SiStripDetCablingdetCabling_
 
DQMStoredqmStore_
 
bool IsLumiGoodDcs_
 
unsigned long long m_cacheIDCabling_
 
unsigned long long m_cacheIDDcs_
 
float MaxAcceptableBadDcsLumi_ = 2
 
float MinAcceptableDcsDetFrac_ = 0.90
 
int nFEDConnected_
 
int nGoodDcsLumi_
 
int nLumiAnalysed_
 
edm::ESHandle< SiStripDetVOffsiStripDetVOff_
 
std::map< std::string, SubDetMEsSubDetMEsMap
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: Checks the # of SiStrip FEDs from DAQ Usage: <usage>

Definition at line 42 of file SiStripDcsInfo.h.

Constructor & Destructor Documentation

SiStripDcsInfo::SiStripDcsInfo ( const edm::ParameterSet ps)

Constructor.

Definition at line 33 of file SiStripDcsInfo.cc.

References LogDebug.

33  :
36  m_cacheIDDcs_(0),
37  bookedStatus_(false),
38  nLumiAnalysed_(0),
39  nGoodDcsLumi_(0)
40 {
41  // Create MessageSender
42  LogDebug( "SiStripDcsInfo") << "SiStripDcsInfo::Deleting SiStripDcsInfo ";
43 }
#define LogDebug(id)
DQMStore * dqmStore_
unsigned long long m_cacheIDDcs_
unsigned long long m_cacheIDCabling_
SiStripDcsInfo::~SiStripDcsInfo ( )
override

Destructor.

Definition at line 47 of file SiStripDcsInfo.cc.

References LogDebug.

47  {
48  LogDebug("SiStripDcsInfo") << "SiStripDcsInfo::Deleting SiStripDcsInfo ";
49 
50 }
#define LogDebug(id)

Member Function Documentation

void SiStripDcsInfo::addBadModules ( )
private

Definition at line 326 of file SiStripDcsInfo.cc.

References DQMStore::bookInt(), DQMStore::cd(), DEFINE_FWK_MODULE, dqmStore_, MonitorElement::Fill(), RemoveAddSevLevel::flag, DQMStore::get(), MonitorElement::getIntValue(), SiStripUtility::goToDir(), MaxAcceptableBadDcsLumi_, DQMStore::pwd(), MonitorElement::Reset(), SiStripUtility::setBadModuleFlag(), DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, SubDetMEsMap, and GlobalPosition_Frontier_DevDB_cff::tag.

Referenced by endRun().

326  {
327 
328  dqmStore_->cd();
329  std::string mdir = "MechanicalView";
330  if (!SiStripUtility::goToDir(dqmStore_, mdir)) {
331  dqmStore_->setCurrentFolder("SiStrip/"+mdir);
332  }
333  std::string mechanical_dir = dqmStore_->pwd();
334  std::string tag = "DCSError";
335 
336  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
337 
338  std::unordered_map<uint32_t,uint16_t> lumiCountBadModules = it->second.NLumiDetectorIsFaulty;
339  for(std::unordered_map<uint32_t,uint16_t>::iterator ilumibad = lumiCountBadModules.begin();
340  ilumibad != lumiCountBadModules.end(); ilumibad++) {
341  uint32_t ibad = (*ilumibad).first;
342  uint32_t nBadLumi = (*ilumibad).second;
343  if(nBadLumi <= MaxAcceptableBadDcsLumi_) continue;
344  std::string bad_module_folder = mechanical_dir + "/" +
345  it->second.folder_name + "/"
346  "BadModuleList";
347  dqmStore_->setCurrentFolder(bad_module_folder);
348 
349  std::ostringstream detid_str;
350  detid_str << ibad;
351  std::string full_path = bad_module_folder + "/" + detid_str.str();
352  MonitorElement* me = dqmStore_->get(full_path);
353  uint16_t flag = 0;
354  if (me) {
355  flag = me->getIntValue();
356  me->Reset();
357  } else me = dqmStore_->bookInt(detid_str.str());
359  me->Fill(flag);
360  }
361  }
362  dqmStore_->cd();
363 }
static void setBadModuleFlag(std::string &hname, uint16_t &flg)
DQMStore * dqmStore_
int64_t getIntValue() const
const std::string & pwd() const
Definition: DQMStore.cc:517
float MaxAcceptableBadDcsLumi_
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
Definition: DQMStore.cc:1610
void Reset()
reset ME (ie. contents, errors, etc)
void cd()
go to top directory (ie. root)
Definition: DQMStore.cc:522
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:744
static bool goToDir(DQMStore *dqm_store, std::string name)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:545
void SiStripDcsInfo::analyze ( edm::Event const &  event,
edm::EventSetup const &  eSetup 
)
overrideprivatevirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 133 of file SiStripDcsInfo.cc.

133  {
134 }
void SiStripDcsInfo::beginJob ( void  )
overrideprivatevirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 54 of file SiStripDcsInfo.cc.

References SiStripDcsInfo::SubDetMEs::DcsFractionME, SiStripDcsInfo::SubDetMEs::FaultyDetectors, SiStripDcsInfo::SubDetMEs::folder_name, AlCaHLTBitMon_QueryRunRegistry::string, SubDetMEsMap, GlobalPosition_Frontier_DevDB_cff::tag, and SiStripDcsInfo::SubDetMEs::TotalDetectors.

54  {
56  SubDetMEs local_mes;
57 
58  tag = "TIB";
59  local_mes.folder_name = "TIB";
60  local_mes.DcsFractionME = nullptr;
61  local_mes.TotalDetectors = 0;
62  local_mes.FaultyDetectors.clear();
63  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
64 
65  tag = "TOB";
66  local_mes.folder_name = "TOB";
67  local_mes.DcsFractionME = nullptr;
68  local_mes.TotalDetectors = 0;
69  local_mes.FaultyDetectors.clear();
70  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
71 
72  tag = "TECB";
73  local_mes.folder_name = "TEC/MINUS";
74  local_mes.DcsFractionME = nullptr;
75  local_mes.TotalDetectors = 0;
76  local_mes.FaultyDetectors.clear();
77  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
78 
79  tag = "TECF";
80  local_mes.folder_name = "TEC/PLUS";
81  local_mes.DcsFractionME = nullptr;
82  local_mes.TotalDetectors = 0;
83  local_mes.FaultyDetectors.clear();
84  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
85 
86  tag = "TIDB";
87  local_mes.folder_name = "TID/MINUS";
88  local_mes.DcsFractionME = nullptr;
89  local_mes.TotalDetectors = 0;
90  local_mes.FaultyDetectors.clear();
91  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
92 
93  tag = "TIDF";
94  local_mes.folder_name = "TID/PLUS";
95  local_mes.DcsFractionME = nullptr;
96  local_mes.TotalDetectors = 0;
97  local_mes.FaultyDetectors.clear();
98  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs >(tag, local_mes));
99 }
std::map< std::string, SubDetMEs > SubDetMEsMap
void SiStripDcsInfo::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  eSetup 
)
overrideprivatevirtual

Begin Luminosity Block.

Reimplemented from edm::EDAnalyzer.

Definition at line 138 of file SiStripDcsInfo.cc.

References LogDebug, nFEDConnected_, nLumiAnalysed_, readStatus(), and SubDetMEsMap.

138  {
139  LogDebug( "SiStripDcsInfo") << "SiStripDcsInfo::beginLuminosityBlock";
140 
141  if (nFEDConnected_ == 0) return;
142 
143  // initialise BadModule list
144  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
145  it->second.FaultyDetectors.clear();
146  }
147  readStatus(eSetup);
148  nLumiAnalysed_++;
149 }
#define LogDebug(id)
std::map< std::string, SubDetMEs > SubDetMEsMap
void readStatus(edm::EventSetup const &)
void SiStripDcsInfo::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
overrideprivatevirtual

Begin Run.

Reimplemented from edm::EDAnalyzer.

Definition at line 103 of file SiStripDcsInfo.cc.

References bookStatus(), fillDummyStatus(), edm::EventSetup::find(), edm::eventsetup::heterocontainer::HCTypeTag::findType(), edm::EventSetup::get(), edm::ESHandleBase::isValid(), LogDebug, RunInfo::m_fed_in, FEDNumbering::MAXSiStripFEDID, FEDNumbering::MINSiStripFEDID, nFEDConnected_, and readCabling().

103  {
104  LogDebug ("SiStripDcsInfo") <<"SiStripDcsInfo:: Begining of Run";
105  nFEDConnected_ = 0;
106  const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
107  const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
108 
109  // Count Tracker FEDs from RunInfo
111  if( eSetup.find( recordKey ) != nullptr) {
112 
113  edm::ESHandle<RunInfo> sumFED;
114  eSetup.get<RunInfoRcd>().get(sumFED);
115 
116  if ( sumFED.isValid() ) {
117  std::vector<int> FedsInIds= sumFED->m_fed_in;
118  for(unsigned int it = 0; it < FedsInIds.size(); ++it) {
119  int fedID = FedsInIds[it];
120  if(fedID>=siStripFedIdMin && fedID<=siStripFedIdMax) ++nFEDConnected_;
121  }
122  LogDebug ("SiStripDcsInfo") << " SiStripDcsInfo :: Connected FEDs " << nFEDConnected_;
123  }
124  }
125 
126  bookStatus();
127  fillDummyStatus();
128  if (nFEDConnected_ > 0) readCabling(eSetup);
129 }
#define LogDebug(id)
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
std::vector< int > m_fed_in
Definition: RunInfo.h:26
void readCabling(edm::EventSetup const &)
bool isValid() const
Definition: ESHandle.h:47
void SiStripDcsInfo::bookStatus ( )
private

Definition at line 178 of file SiStripDcsInfo.cc.

References bookedStatus_, DQMStore::bookFloat(), DQMStore::cd(), DcsFraction_, dqmStore_, SiStripUtility::getTopFolderPath(), DQMStore::setCurrentFolder(), MonitorElement::setLumiFlag(), AlCaHLTBitMon_QueryRunRegistry::string, and SubDetMEsMap.

Referenced by beginRun(), fillDummyStatus(), and fillStatus().

178  {
179  if (!bookedStatus_) {
180  std::string strip_dir = "";
181  SiStripUtility::getTopFolderPath(dqmStore_, "SiStrip", strip_dir);
182  if (!strip_dir.empty()) dqmStore_->setCurrentFolder(strip_dir+"/EventInfo");
183  else dqmStore_->setCurrentFolder("SiStrip/EventInfo");
184 
185  DcsFraction_= dqmStore_->bookFloat("DCSSummary");
186 
188 
189  dqmStore_->cd();
190  if (!strip_dir.empty()) dqmStore_->setCurrentFolder(strip_dir+"/EventInfo/DCSContents");
191  else dqmStore_->setCurrentFolder("SiStrip/EventInfo/DCSContents");
192  for (std::map<std::string,SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
193  SubDetMEs local_mes;
194  std::string me_name;
195  me_name = "SiStrip_" + it->first;
196  it->second.DcsFractionME = dqmStore_->bookFloat(me_name);
197  it->second.DcsFractionME->setLumiFlag();
198  }
199  bookedStatus_ = true;
200  dqmStore_->cd();
201  }
202 }
DQMStore * dqmStore_
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:774
void setLumiFlag()
this ME is meant to be stored for each luminosity section
std::map< std::string, SubDetMEs > SubDetMEsMap
void cd()
go to top directory (ie. root)
Definition: DQMStore.cc:522
MonitorElement * DcsFraction_
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:545
void SiStripDcsInfo::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

End Of Luminosity.

Reimplemented from edm::EDAnalyzer.

Definition at line 154 of file SiStripDcsInfo.cc.

References fillStatus(), LogDebug, nFEDConnected_, and readStatus().

154  {
155  LogDebug( "SiStripDcsInfo") << "SiStripDcsInfo::endLuminosityBlock";
156 
157  if (nFEDConnected_ == 0) return;
158  readStatus(eSetup);
159  fillStatus();
160 }
#define LogDebug(id)
void readStatus(edm::EventSetup const &)
void SiStripDcsInfo::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
overrideprivatevirtual

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 164 of file SiStripDcsInfo.cc.

References addBadModules(), LogDebug, nFEDConnected_, readStatus(), and SubDetMEsMap.

164  {
165  LogDebug ("SiStripDcsInfo") <<"SiStripDcsInfo::EndRun";
166 
167  if (nFEDConnected_ == 0) return;
168 
169  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
170  it->second.FaultyDetectors.clear();
171  }
172  readStatus(eSetup);
173  addBadModules();
174 }
#define LogDebug(id)
std::map< std::string, SubDetMEs > SubDetMEsMap
void readStatus(edm::EventSetup const &)
void SiStripDcsInfo::fillDummyStatus ( )
private

Definition at line 312 of file SiStripDcsInfo.cc.

References bookedStatus_, bookStatus(), DcsFraction_, MonitorElement::Fill(), MonitorElement::Reset(), and SubDetMEsMap.

Referenced by beginRun().

312  {
313  if (!bookedStatus_) bookStatus();
314  if (bookedStatus_) {
315  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
316  it->second.DcsFractionME->Reset();
317  it->second.DcsFractionME->Fill(-1.0);
318  }
319  DcsFraction_->Reset();
320  DcsFraction_->Fill(-1.0);
321  }
322 }
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
void Reset()
reset ME (ie. contents, errors, etc)
MonitorElement * DcsFraction_
void SiStripDcsInfo::fillStatus ( )
private

Definition at line 276 of file SiStripDcsInfo.cc.

References bookedStatus_, bookStatus(), DcsFraction_, MonitorElement::Fill(), dedxEstimators_cff::fraction, IsLumiGoodDcs_, MinAcceptableDcsDetFrac_, nFEDConnected_, nGoodDcsLumi_, MonitorElement::Reset(), and SubDetMEsMap.

Referenced by endLuminosityBlock().

276  {
277  if (!bookedStatus_) bookStatus();
278  if (bookedStatus_) {
279  float total_det = 0.0;
280  float faulty_det = 0.0;
281  float fraction;
282  for (std::map<std::string,SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
283  int total_subdet = it->second.TotalDetectors;
284  int faulty_subdet = it->second.FaultyDetectors.size();
285  if (nFEDConnected_ == 0 || total_subdet == 0) fraction = -1;
286  else fraction = 1.0 - faulty_subdet*1.0/total_subdet;
287  it->second.DcsFractionME->Reset();
288  it->second.DcsFractionME->Fill(fraction);
289  edm::LogInfo( "SiStripDcsInfo") << " SiStripDcsInfo::fillStatus : Sub Detector "
290  << it->first << " Total Number " << total_subdet
291  << " Faulty ones " << faulty_subdet;
292  total_det += total_subdet;
293  faulty_det += faulty_subdet;
294  }
295  if (nFEDConnected_ == 0 || total_det == 0) fraction = -1.0;
296  else fraction = 1 - faulty_det/total_det;
297  DcsFraction_->Reset();
298  DcsFraction_->Fill(fraction);
301  for (std::map<std::string,SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
302  for (std::vector<uint32_t>::iterator ifaulty = it->second.FaultyDetectors.begin(); ifaulty != it->second.FaultyDetectors.end(); ifaulty++) {
303  uint32_t detId_faulty = (*ifaulty);
304  if(IsLumiGoodDcs_) it->second.NLumiDetectorIsFaulty[detId_faulty]++;
305  }
306  }
307  }
308 }
float MinAcceptableDcsDetFrac_
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
void Reset()
reset ME (ie. contents, errors, etc)
MonitorElement * DcsFraction_
void SiStripDcsInfo::readCabling ( edm::EventSetup const &  eSetup)
private

Definition at line 206 of file SiStripDcsInfo.cc.

References SiStripDetCabling::addActiveDetectorsRawIds(), detCabling_, edm::EventSetup::get(), SiStripUtility::getSubDetectorTag(), LogDebug, m_cacheIDCabling_, edm::ESHandle< T >::product(), AlCaHLTBitMon_QueryRunRegistry::string, xuti::subdet_tag(), and SubDetMEsMap.

Referenced by beginRun().

206  {
207 
208  //Retrieve tracker topology from geometry
209  edm::ESHandle<TrackerTopology> tTopoHandle;
210  eSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
211  const TrackerTopology* const tTopo = tTopoHandle.product();
212 
213  unsigned long long cacheID = eSetup.get<SiStripFedCablingRcd>().cacheIdentifier();
214  if (m_cacheIDCabling_ != cacheID) {
215  m_cacheIDCabling_ = cacheID;
216  LogDebug("SiStripDcsInfo") <<"SiStripDcsInfo::readCabling : "
217  << " Change in Cache";
218  eSetup.get<SiStripDetCablingRcd>().get(detCabling_);
219 
220  std::vector<uint32_t> SelectedDetIds;
221  detCabling_->addActiveDetectorsRawIds(SelectedDetIds);
222  LogDebug( "SiStripDcsInfo") << " SiStripDcsInfo::readCabling : "
223  << " Total Detectors " << SelectedDetIds.size();
224 
225 
226  // initialise total # of detectors first
227  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
228  it->second.TotalDetectors = 0;
229  }
230 
231  for (std::vector<uint32_t>::const_iterator idetid=SelectedDetIds.begin(); idetid != SelectedDetIds.end(); ++idetid){
232  uint32_t detId = *idetid;
233  if (detId == 0 || detId == 0xFFFFFFFF) continue;
235  SiStripUtility::getSubDetectorTag(detId,subdet_tag,tTopo);
236 
237  std::map<std::string, SubDetMEs>::iterator iPos = SubDetMEsMap.find(subdet_tag);
238  if (iPos != SubDetMEsMap.end()){
239  iPos->second.TotalDetectors++;
240  }
241  }
242  }
243 }
#define LogDebug(id)
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
std::map< std::string, SubDetMEs > SubDetMEsMap
const std::string subdet_tag("SubDet")
static void getSubDetectorTag(uint32_t det_id, std::string &subdet_tag, const TrackerTopology *tTopo)
edm::ESHandle< SiStripDetCabling > detCabling_
unsigned long long m_cacheIDCabling_
T const * product() const
Definition: ESHandle.h:86
void SiStripDcsInfo::readStatus ( edm::EventSetup const &  eSetup)
private

Definition at line 247 of file SiStripDcsInfo.cc.

References detCabling_, spr::find(), edm::EventSetup::get(), SiStripDetVOff::getDetIds(), SiStripUtility::getSubDetectorTag(), SiStripDetCabling::IsConnected(), LogDebug, edm::ESHandle< T >::product(), siStripDetVOff_, AlCaHLTBitMon_QueryRunRegistry::string, xuti::subdet_tag(), and SubDetMEsMap.

Referenced by beginLuminosityBlock(), endLuminosityBlock(), and endRun().

247  {
248 
249  //Retrieve tracker topology from geometry
250  edm::ESHandle<TrackerTopology> tTopoHandle;
251  eSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
252  const TrackerTopology* const tTopo = tTopoHandle.product();
253 
254  eSetup.get<SiStripDetVOffRcd>().get(siStripDetVOff_);
255  std::vector <uint32_t> FaultyDetIds;
256  siStripDetVOff_->getDetIds(FaultyDetIds);
257  LogDebug( "SiStripDcsInfo") << " SiStripDcsInfo::readStatus : "
258  << " Faulty Detectors " << FaultyDetIds.size();
259  // Read and fille bad modules
260  for (std::vector<uint32_t>::const_iterator ihvoff=FaultyDetIds.begin(); ihvoff!=FaultyDetIds.end();++ihvoff){
261  uint32_t detId_hvoff = (*ihvoff);
262  if (!detCabling_->IsConnected(detId_hvoff)) continue;
264  SiStripUtility::getSubDetectorTag(detId_hvoff,subdet_tag,tTopo);
265 
266  std::map<std::string, SubDetMEs>::iterator iPos = SubDetMEsMap.find(subdet_tag);
267  if (iPos != SubDetMEsMap.end()){
268  std::vector<uint32_t>::iterator ibad = std::find(iPos->second.FaultyDetectors.begin(), iPos->second.FaultyDetectors.end(), detId_hvoff);
269  if (ibad == iPos->second.FaultyDetectors.end()) iPos->second.FaultyDetectors.push_back( detId_hvoff);
270  }
271  }
272 }
#define LogDebug(id)
bool IsConnected(const uint32_t &det_id) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
void getDetIds(std::vector< uint32_t > &DetIds_) const
std::map< std::string, SubDetMEs > SubDetMEsMap
const std::string subdet_tag("SubDet")
edm::ESHandle< SiStripDetVOff > siStripDetVOff_
static void getSubDetectorTag(uint32_t det_id, std::string &subdet_tag, const TrackerTopology *tTopo)
edm::ESHandle< SiStripDetCabling > detCabling_
T const * product() const
Definition: ESHandle.h:86

Member Data Documentation

bool SiStripDcsInfo::bookedStatus_
private

Definition at line 96 of file SiStripDcsInfo.h.

Referenced by bookStatus(), fillDummyStatus(), and fillStatus().

MonitorElement* SiStripDcsInfo::DcsFraction_
private

Definition at line 83 of file SiStripDcsInfo.h.

Referenced by bookStatus(), fillDummyStatus(), and fillStatus().

edm::ESHandle< SiStripDetCabling > SiStripDcsInfo::detCabling_
private

Definition at line 108 of file SiStripDcsInfo.h.

Referenced by readCabling(), and readStatus().

DQMStore* SiStripDcsInfo::dqmStore_
private

Definition at line 82 of file SiStripDcsInfo.h.

Referenced by addBadModules(), and bookStatus().

bool SiStripDcsInfo::IsLumiGoodDcs_
private

Definition at line 103 of file SiStripDcsInfo.h.

Referenced by fillStatus().

unsigned long long SiStripDcsInfo::m_cacheIDCabling_
private

Definition at line 94 of file SiStripDcsInfo.h.

Referenced by readCabling().

unsigned long long SiStripDcsInfo::m_cacheIDDcs_
private

Definition at line 95 of file SiStripDcsInfo.h.

float SiStripDcsInfo::MaxAcceptableBadDcsLumi_ = 2
private

Definition at line 106 of file SiStripDcsInfo.h.

Referenced by addBadModules().

float SiStripDcsInfo::MinAcceptableDcsDetFrac_ = 0.90
private

Definition at line 105 of file SiStripDcsInfo.h.

Referenced by fillStatus().

int SiStripDcsInfo::nFEDConnected_
private
int SiStripDcsInfo::nGoodDcsLumi_
private

Definition at line 104 of file SiStripDcsInfo.h.

Referenced by fillStatus().

int SiStripDcsInfo::nLumiAnalysed_
private

Definition at line 101 of file SiStripDcsInfo.h.

Referenced by beginLuminosityBlock().

edm::ESHandle<SiStripDetVOff> SiStripDcsInfo::siStripDetVOff_
private

Definition at line 98 of file SiStripDcsInfo.h.

Referenced by readStatus().

std::map<std::string, SubDetMEs> SiStripDcsInfo::SubDetMEsMap
private