CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
SiStripDaqInfo Class Reference

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

Inheritance diagram for SiStripDaqInfo:
edm::EDAnalyzer edm::EDConsumerBase

Classes

struct  SubDetMEs
 

Public Member Functions

 SiStripDaqInfo (const edm::ParameterSet &ps)
 Constructor. More...
 
virtual ~SiStripDaqInfo ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void analyze (edm::Event const &, edm::EventSetup const &)
 Analyze. More...
 
void beginJob ()
 BeginJob. More...
 
void beginRun (edm::Run const &run, edm::EventSetup const &eSetup)
 Begin Run. More...
 
void bookStatus ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup)
 End Of Luminosity. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &eSetup)
 EndRun. More...
 
void fillDummyStatus ()
 
void findExcludedModule (unsigned short fed_id, const TrackerTopology *tTopo)
 
void readFedIds (const edm::ESHandle< SiStripFedCabling > &fedcabling, edm::EventSetup const &iSetup)
 
void readSubdetFedFractions (std::vector< int > &fed_ids, edm::EventSetup const &iSetup)
 

Private Attributes

bool bookedStatus_
 
MonitorElementDaqFraction_
 
DQMStoredqmStore_
 
edm::ESHandle< SiStripFedCablingfedCabling_
 
unsigned long long m_cacheID_
 
int nFedTotal
 
std::map< std::string,
std::vector< unsigned short > > 
subDetFedMap
 
std::map< std::string, SubDetMEsSubDetMEsMap
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- 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 41 of file SiStripDaqInfo.h.

Constructor & Destructor Documentation

SiStripDaqInfo::SiStripDaqInfo ( const edm::ParameterSet ps)

Constructor.

Definition at line 34 of file SiStripDaqInfo.cc.

References bookedStatus_, dqmStore_, nFedTotal, and cppFunctionSkipper::operator.

34  {
35  // Create MessageSender
36  edm::LogInfo( "SiStripDaqInfo") << "SiStripDaqInfo::Deleting SiStripDaqInfo ";
37 
38  // get back-end interface
40  nFedTotal = 0;
41  bookedStatus_ = false;
42 }
DQMStore * dqmStore_
SiStripDaqInfo::~SiStripDaqInfo ( )
virtual

Destructor.

Definition at line 43 of file SiStripDaqInfo.cc.

43  {
44  edm::LogInfo("SiStripDaqInfo") << "SiStripDaqInfo::Deleting SiStripDaqInfo ";
45 
46 }

Member Function Documentation

void SiStripDaqInfo::analyze ( edm::Event const &  event,
edm::EventSetup const &  eSetup 
)
privatevirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 160 of file SiStripDaqInfo.cc.

160  {
161 }
void SiStripDaqInfo::beginJob ( void  )
privatevirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 50 of file SiStripDaqInfo.cc.

50  {
51 
52 }
void SiStripDaqInfo::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
privatevirtual

Begin Run.

Reimplemented from edm::EDAnalyzer.

Definition at line 111 of file SiStripDaqInfo.cc.

References bookedStatus_, bookStatus(), DaqFraction_, fedCabling_, MonitorElement::Fill(), fillDummyStatus(), edm::EventSetup::find(), edm::eventsetup::heterocontainer::HCTypeTag::findType(), edm::EventSetup::get(), edm::ESHandleBase::isValid(), m_cacheID_, FEDNumbering::MAXSiStripFEDID, FEDNumbering::MINSiStripFEDID, nFedTotal, readFedIds(), readSubdetFedFractions(), and MonitorElement::Reset().

111  {
112  edm::LogInfo ("SiStripDaqInfo") <<"SiStripDaqInfo:: Begining of Run";
113 
114  // Check latest Fed cabling and create TrackerMapCreator
115  unsigned long long cacheID = eSetup.get<SiStripFedCablingRcd>().cacheIdentifier();
116  if (m_cacheID_ != cacheID) {
117  m_cacheID_ = cacheID;
118 
119  eSetup.get<SiStripFedCablingRcd>().get(fedCabling_);
120 
121  readFedIds(fedCabling_, eSetup);
122  }
123  if (!bookedStatus_) bookStatus();
124  if (nFedTotal == 0) {
125  fillDummyStatus();
126  edm::LogInfo ("SiStripDaqInfo") <<" SiStripDaqInfo::No FEDs Connected!!!";
127  return;
128  }
129 
130  float nFEDConnected = 0.0;
131  const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
132  const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
133 
135  if( eSetup.find( recordKey ) != 0) {
136 
137  edm::ESHandle<RunInfo> sumFED;
138  eSetup.get<RunInfoRcd>().get(sumFED);
139 
140  if ( sumFED.isValid() ) {
141  std::vector<int> FedsInIds= sumFED->m_fed_in;
142  for(unsigned int it = 0; it < FedsInIds.size(); ++it) {
143  int fedID = FedsInIds[it];
144 
145  if(fedID>=siStripFedIdMin && fedID<=siStripFedIdMax) ++nFEDConnected;
146  }
147  edm::LogInfo ("SiStripDaqInfo") <<" SiStripDaqInfo::Total # of FEDs " << nFedTotal
148  << " Connected FEDs " << nFEDConnected;
149  if (nFEDConnected > 0) {
150  DaqFraction_->Reset();
151  DaqFraction_->Fill(nFEDConnected/nFedTotal);
152  readSubdetFedFractions(FedsInIds,eSetup);
153  }
154  }
155  }
156 }
void readFedIds(const edm::ESHandle< SiStripFedCabling > &fedcabling, edm::EventSetup const &iSetup)
void Fill(long long x)
edm::ESHandle< SiStripFedCabling > fedCabling_
void readSubdetFedFractions(std::vector< int > &fed_ids, edm::EventSetup const &iSetup)
void fillDummyStatus()
MonitorElement * DaqFraction_
bool isValid() const
Definition: ESHandle.h:37
unsigned long long m_cacheID_
void Reset(void)
reset ME (ie. contents, errors, etc)
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
Definition: HCTypeTag.cc:125
void SiStripDaqInfo::bookStatus ( )
private

Definition at line 56 of file SiStripDaqInfo.cc.

References bookedStatus_, DQMStore::bookFloat(), DQMStore::cd(), SiStripDaqInfo::SubDetMEs::ConnectedFeds, DaqFraction_, SiStripDaqInfo::SubDetMEs::DaqFractionME, dqmStore_, SiStripUtility::getTopFolderPath(), DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and SubDetMEsMap.

Referenced by beginRun(), and fillDummyStatus().

56  {
57  edm::LogInfo( "SiStripDcsInfo") << " SiStripDaqInfo::bookStatus " << bookedStatus_;
58  if (!bookedStatus_) {
59  dqmStore_->cd();
60  std::string strip_dir = "";
61  SiStripUtility::getTopFolderPath(dqmStore_, "SiStrip", strip_dir);
62  if (strip_dir.size() > 0) dqmStore_->setCurrentFolder(strip_dir+"/EventInfo");
63  else dqmStore_->setCurrentFolder("SiStrip/EventInfo");
64 
65 
66  DaqFraction_= dqmStore_->bookFloat("DAQSummary");
67 
68  dqmStore_->cd();
69  if (strip_dir.size() > 0) dqmStore_->setCurrentFolder(strip_dir+"/EventInfo/DAQContents");
70  else dqmStore_->setCurrentFolder("SiStrip/EventInfo/DAQContents");
71 
72  std::vector<std::string> det_type;
73  det_type.push_back("TIB");
74  det_type.push_back("TOB");
75  det_type.push_back("TIDF");
76  det_type.push_back("TIDB");
77  det_type.push_back("TECF");
78  det_type.push_back("TECB");
79 
80  for ( std::vector<std::string>::iterator it = det_type.begin(); it != det_type.end(); it++) {
81  std::string det = (*it);
82 
83  SubDetMEs local_mes;
84  std::string me_name;
85  me_name = "SiStrip_" + det;
86  local_mes.DaqFractionME = dqmStore_->bookFloat(me_name);
87  local_mes.ConnectedFeds = 0;
88  SubDetMEsMap.insert(make_pair(det, local_mes));
89  }
90  bookedStatus_ = true;
91  dqmStore_->cd();
92  }
93 }
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:632
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:879
DQMStore * dqmStore_
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * DaqFraction_
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655
void SiStripDaqInfo::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  iSetup 
)
privatevirtual

End Of Luminosity.

Reimplemented from edm::EDAnalyzer.

Definition at line 166 of file SiStripDaqInfo.cc.

166  {
167  edm::LogInfo( "SiStripDaqInfo") << "SiStripDaqInfo::endLuminosityBlock";
168 }
void SiStripDaqInfo::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
privatevirtual

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 172 of file SiStripDaqInfo.cc.

172  {
173  edm::LogInfo ("SiStripDaqInfo") <<"SiStripDaqInfo::EndRun";
174 }
void SiStripDaqInfo::fillDummyStatus ( )
private

Definition at line 97 of file SiStripDaqInfo.cc.

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

Referenced by beginRun().

97  {
98  if (!bookedStatus_) bookStatus();
99  if (bookedStatus_) {
100  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
101  it->second.DaqFractionME->Reset();
102  it->second.DaqFractionME->Fill(-1.0);
103  }
104  DaqFraction_->Reset();
105  DaqFraction_->Fill(-1.0);
106  }
107 }
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * DaqFraction_
void Reset(void)
reset ME (ie. contents, errors, etc)
void SiStripDaqInfo::findExcludedModule ( unsigned short  fed_id,
const TrackerTopology tTopo 
)
private

Definition at line 257 of file SiStripDaqInfo.cc.

References DQMStore::bookInt(), DQMStore::cd(), DQMStore::dirExists(), dqmStore_, fedCabling_, MonitorElement::Fill(), archive::flag, DQMStore::get(), MonitorElement::getIntValue(), SiStripFolderOrganizer::getSubDetFolder(), SiStripUtility::goToDir(), DQMStore::pwd(), MonitorElement::Reset(), SiStripUtility::setBadModuleFlag(), DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and GlobalPosition_Frontier_DevDB_cff::tag.

Referenced by readSubdetFedFractions().

257  {
258  dqmStore_->cd();
259  std::string mdir = "MechanicalView";
260  if (!SiStripUtility::goToDir(dqmStore_, mdir)) {
261  dqmStore_->setCurrentFolder("SiStrip/"+mdir);
262  }
263  std::string mechanical_dir = dqmStore_->pwd();
264  auto fedChannels = fedCabling_->fedConnections(fed_id);
265  int ichannel = 0;
266  std::string tag = "ExcludedFedChannel";
267  std::string bad_module_folder;
268  for (std::vector<FedChannelConnection>::const_iterator iconn = fedChannels.begin();
269  iconn < fedChannels.end(); iconn++){
270  if (!iconn->isConnected()) continue;
271  uint32_t detId = iconn->detId();
272  if (detId == 0 || detId == 0xFFFFFFFF) continue;
273 
274  ichannel++;
275  if (ichannel == 1) {
276  std::string subdet_folder ;
277  SiStripFolderOrganizer folder_organizer;
278  folder_organizer.getSubDetFolder(detId,tTopo,subdet_folder);
279  if (!dqmStore_->dirExists(subdet_folder)) {
280  subdet_folder = mechanical_dir + subdet_folder.substr(subdet_folder.find(mdir)+mdir.size());
281  }
282  bad_module_folder = subdet_folder + "/" + "BadModuleList";
283  dqmStore_->setCurrentFolder(bad_module_folder);
284  }
285  std::ostringstream detid_str;
286  detid_str << detId;
287  std::string full_path = bad_module_folder + "/" + detid_str.str();
288  MonitorElement* me = dqmStore_->get(full_path);
289  uint16_t flag = 0;
290  if (me) {
291  flag = me->getIntValue();
292  me->Reset();
293  } else me = dqmStore_->bookInt(detid_str.str());
295  me->Fill(flag);
296  }
297  dqmStore_->cd();
298 }
static void setBadModuleFlag(std::string &hname, uint16_t &flg)
void getSubDetFolder(const uint32_t &detid, const TrackerTopology *tTopo, std::string &folder_name)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:632
void Fill(long long x)
edm::ESHandle< SiStripFedCabling > fedCabling_
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1693
DQMStore * dqmStore_
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:720
int64_t getIntValue(void) const
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:849
void Reset(void)
reset ME (ie. contents, errors, etc)
static bool goToDir(DQMStore *dqm_store, std::string name)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655
const std::string & pwd(void) const
Definition: DQMStore.cc:627
void SiStripDaqInfo::readFedIds ( const edm::ESHandle< SiStripFedCabling > &  fedcabling,
edm::EventSetup const &  iSetup 
)
private

Definition at line 178 of file SiStripDaqInfo.cc.

References fedCabling_, edm::EventSetup::get(), SiStripUtility::getSubDetectorTag(), nFedTotal, edm::ESHandle< class >::product(), AlCaHLTBitMon_QueryRunRegistry::string, xuti::subdet_tag(), and subDetFedMap.

Referenced by beginRun().

178  {
179 
180  //Retrieve tracker topology from geometry
181  edm::ESHandle<TrackerTopology> tTopoHandle;
182  iSetup.get<IdealGeometryRecord>().get(tTopoHandle);
183  const TrackerTopology* const tTopo = tTopoHandle.product();
184 
185  auto feds = fedCabling_->fedIds();
186 
187  nFedTotal = feds.size();
188  for(std::vector<unsigned short>::const_iterator ifed = feds.begin(); ifed != feds.end(); ifed++){
189  auto fedChannels = fedCabling_->fedConnections( *ifed );
190  for (auto iconn = fedChannels.begin(); iconn < fedChannels.end(); iconn++){
191  if (!iconn->isConnected()) continue;
192  uint32_t detId = iconn->detId();
193  if (detId == 0 || detId == 0xFFFFFFFF) continue;
195  SiStripUtility::getSubDetectorTag(detId,subdet_tag,tTopo);
196  subDetFedMap[subdet_tag].push_back(*ifed);
197  break;
198  }
199  }
200 }
edm::ESHandle< SiStripFedCabling > fedCabling_
const std::string subdet_tag("SubDet")
std::map< std::string, std::vector< unsigned short > > subDetFedMap
T const * product() const
Definition: ESHandle.h:62
static void getSubDetectorTag(uint32_t det_id, std::string &subdet_tag, const TrackerTopology *tTopo)
void SiStripDaqInfo::readSubdetFedFractions ( std::vector< int > &  fed_ids,
edm::EventSetup const &  iSetup 
)
private

Definition at line 204 of file SiStripDaqInfo.cc.

References findExcludedModule(), edm::EventSetup::get(), python.multivaluedict::map(), FEDNumbering::MAXSiStripFEDID, FEDNumbering::MINSiStripFEDID, mergeVDriftHistosByStation::name, edm::ESHandle< class >::product(), AlCaHLTBitMon_QueryRunRegistry::string, subDetFedMap, and SubDetMEsMap.

Referenced by beginRun().

204  {
205 
206  //Retrieve tracker topology from geometry
207  edm::ESHandle<TrackerTopology> tTopoHandle;
208  iSetup.get<IdealGeometryRecord>().get(tTopoHandle);
209  const TrackerTopology* const tTopo = tTopoHandle.product();
210 
211  const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
212  const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
213 
214  // initialiase
215  for (std::map<std::string, std::vector<unsigned short> >::const_iterator it = subDetFedMap.begin();
216  it != subDetFedMap.end(); it++) {
217  std::string name = it->first;
218  std::map<std::string, SubDetMEs>::iterator iPos = SubDetMEsMap.find(name);
219  if (iPos == SubDetMEsMap.end()) continue;
220  iPos->second.ConnectedFeds = 0;
221  }
222  // count sub detector feds
223 
224 
225  for (std::map<std::string, std::vector<unsigned short> >::const_iterator it = subDetFedMap.begin();
226  it != subDetFedMap.end(); it++) {
227  std::string name = it->first;
228  std::vector<unsigned short> subdetIds = it->second;
229  std::map<std::string, SubDetMEs>::iterator iPos = SubDetMEsMap.find(name);
230  if (iPos == SubDetMEsMap.end()) continue;
231  iPos->second.ConnectedFeds = 0;
232  for (std::vector<unsigned short>::iterator iv = subdetIds.begin();
233  iv != subdetIds.end(); iv++) {
234  bool fedid_found = false;
235  for(unsigned int it = 0; it < fed_ids.size(); ++it) {
236  unsigned short fedID = fed_ids[it];
237  if(fedID < siStripFedIdMin || fedID > siStripFedIdMax) continue;
238  if ((*iv) == fedID) {
239  fedid_found = true;
240  iPos->second.ConnectedFeds++;
241  break;
242  }
243  }
244  if (!fedid_found) findExcludedModule((*iv),tTopo);
245  }
246  int nFedsConnected = iPos->second.ConnectedFeds;
247  int nFedSubDet = subdetIds.size();
248  if (nFedSubDet > 0) {
249  iPos->second.DaqFractionME->Reset();
250  iPos->second.DaqFractionME->Fill(nFedsConnected*1.0/nFedSubDet);
251  }
252  }
253 }
void findExcludedModule(unsigned short fed_id, const TrackerTopology *tTopo)
std::map< std::string, SubDetMEs > SubDetMEsMap
std::map< std::string, std::vector< unsigned short > > subDetFedMap
T const * product() const
Definition: ESHandle.h:62

Member Data Documentation

bool SiStripDaqInfo::bookedStatus_
private

Definition at line 91 of file SiStripDaqInfo.h.

Referenced by beginRun(), bookStatus(), fillDummyStatus(), and SiStripDaqInfo().

MonitorElement* SiStripDaqInfo::DaqFraction_
private

Definition at line 80 of file SiStripDaqInfo.h.

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

DQMStore* SiStripDaqInfo::dqmStore_
private

Definition at line 79 of file SiStripDaqInfo.h.

Referenced by bookStatus(), findExcludedModule(), and SiStripDaqInfo().

edm::ESHandle< SiStripFedCabling > SiStripDaqInfo::fedCabling_
private

Definition at line 93 of file SiStripDaqInfo.h.

Referenced by beginRun(), findExcludedModule(), and readFedIds().

unsigned long long SiStripDaqInfo::m_cacheID_
private

Definition at line 89 of file SiStripDaqInfo.h.

Referenced by beginRun().

int SiStripDaqInfo::nFedTotal
private

Definition at line 90 of file SiStripDaqInfo.h.

Referenced by beginRun(), readFedIds(), and SiStripDaqInfo().

std::map<std::string,std::vector<unsigned short> > SiStripDaqInfo::subDetFedMap
private

Definition at line 77 of file SiStripDaqInfo.h.

Referenced by readFedIds(), and readSubdetFedFractions().

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

Definition at line 87 of file SiStripDaqInfo.h.

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