|
|
#include <DTDataIntegrityUrosOffline.h>
|
void | analyze (const edm::Event &e, const edm::EventSetup &c) override |
|
| DTDataIntegrityUrosOffline (const edm::ParameterSet &ps) |
|
void | processFED (DTuROSFEDData &data, int fed) |
|
void | processuROS (DTuROSROSData &data, int fed, int uRos) |
|
| ~DTDataIntegrityUrosOffline () override |
|
void | accumulate (edm::Event const &event, edm::EventSetup const &setup) final |
|
void | beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final |
|
void | beginRun (edm::Run const &run, edm::EventSetup const &setup) final |
|
void | beginStream (edm::StreamID id) final |
|
virtual void | dqmBeginRun (edm::Run const &, edm::EventSetup const &) |
|
| DQMEDAnalyzer () |
|
void | endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final |
|
void | endRun (edm::Run const &run, edm::EventSetup const &setup) final |
|
virtual bool | getCanSaveByLumi () |
|
| EDProducer ()=default |
|
bool | hasAbilityToProduceInBeginLumis () const final |
|
bool | hasAbilityToProduceInBeginProcessBlocks () const final |
|
bool | hasAbilityToProduceInBeginRuns () const final |
|
bool | hasAbilityToProduceInEndLumis () const final |
|
bool | hasAbilityToProduceInEndProcessBlocks () const final |
|
bool | hasAbilityToProduceInEndRuns () const final |
|
|
void | bookHistos (DQMStore::IBooker &, const int fedMin, const int fedMax) |
|
void | bookHistos (DQMStore::IBooker &, std::string folder, const int fed) |
|
void | bookHistosROS (DQMStore::IBooker &, const int wheel, const int ros) |
|
void | bookHistosuROS (DQMStore::IBooker &, const int fed, const int uRos) |
|
int | theDDU (int crate, int slot, int link, bool tenDDU) |
|
int | theROS (int slot, int link) |
|
std::string | topFolder (bool isFEDIntegrity) const |
|
Class for DT Data Integrity Offline expected to monitor uROS to follow DTDataIntegrityTask which contains also MEs vs Time/LS
- Author
- Javier Fernandez (Uni. Oviedo)
Definition at line 33 of file DTDataIntegrityUrosOffline.h.
◆ histoTypes
◆ DTDataIntegrityUrosOffline()
DTDataIntegrityUrosOffline::DTDataIntegrityUrosOffline |
( |
const edm::ParameterSet & |
ps | ) |
|
Definition at line 27 of file DTDataIntegrityUrosOffline.cc.
28 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
29 <<
"[DTDataIntegrityUrosOffline]: Constructor" << endl;
References FEDIDmax, FEDIDmin, fedIntegrityFolder, fedToken, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), LogTrace, FEDNumbering::MAXDTUROSFEDID, FEDNumbering::MINDTUROSFEDID, neventsFED, and neventsuROS.
◆ ~DTDataIntegrityUrosOffline()
DTDataIntegrityUrosOffline::~DTDataIntegrityUrosOffline |
( |
| ) |
|
|
override |
Definition at line 41 of file DTDataIntegrityUrosOffline.cc.
42 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
43 <<
"[DTDataIntegrityUrosOffline]: Destructor. Analyzed " <<
neventsFED <<
" events" << endl;
44 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
45 <<
"[DTDataIntegrityUrosOffline]: postEndJob called!" << endl;
References LogTrace, and neventsFED.
◆ analyze()
Reimplemented from DQMEDAnalyzer.
Definition at line 488 of file DTDataIntegrityUrosOffline.cc.
492 LogTrace(
"DTRawToDigi|TDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
493 <<
"[DTDataIntegrityUrosOffline]: preProcessEvent" << endl;
502 for (
unsigned int j = 0;
j < fedCol->size(); ++
j) {
503 fedData = fedCol->at(
j);
504 int fed = fedData.
getfed();
506 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
507 <<
"[DTDataIntegrityUrosOffline]: analyze, FED ID " << fed <<
" not expected." << endl;
512 for (
int slot = 1; slot <=
DOCESLOTS; ++slot) {
513 urosData = fedData.
getuROS(slot);
References DOCESLOTS, MillePedeFileConverter_cfg::e, FEDIDmax, FEDIDmin, fedToken, dqm::impl::MonitorElement::Fill(), DTuROSFEDData::getfed(), DTuROSROSData::getslot(), DTuROSFEDData::getslotsize(), DTuROSFEDData::getuROS(), edm::HandleBase::isValid(), dqmiolumiharvest::j, LogTrace, nEventMonitor, nevents, processFED(), and processuROS().
◆ bookHistograms()
◆ bookHistos() [1/2]
void DTDataIntegrityUrosOffline::bookHistos |
( |
DQMStore::IBooker & |
ibooker, |
|
|
const int |
fedMin, |
|
|
const int |
fedMax |
|
) |
| |
|
private |
Definition at line 94 of file DTDataIntegrityUrosOffline.cc.
101 int nFED = (fedMax - fedMin) + 1;
103 hFEDEntry = ibooker.
book1D(
"FEDEntries",
"# entries per DT FED", nFED, fedMin, fedMax + 1);
105 string histoType =
"ROSSummary";
107 string wheel_s = to_string(
wheel);
108 string histoName =
"ROSSummary_W" + wheel_s;
109 string fed_s = to_string(
FEDIDmin + 1);
114 string histoTitle =
"Summary Wheel" + wheel_s +
" (FED " + fed_s +
")";
118 histo->setBinLabel(1,
"Error 1", 1);
119 histo->setBinLabel(2,
"Error 2", 1);
120 histo->setBinLabel(3,
"Error 3", 1);
121 histo->setBinLabel(4,
"Error 4", 1);
122 histo->setBinLabel(5,
"Not OKflag", 1);
124 histo->setBinLabel(6,
"TDC Fatal", 1);
125 histo->setBinLabel(7,
"TDC RO FIFO ov.", 1);
126 histo->setBinLabel(8,
"TDC L1 buf. ov.", 1);
127 histo->setBinLabel(9,
"TDC L1A FIFO ov.", 1);
128 histo->setBinLabel(10,
"TDC hit err.", 1);
129 histo->setBinLabel(11,
"TDC hit rej.", 1);
131 histo->setBinLabel(1,
"ROS1", 2);
132 histo->setBinLabel(2,
"ROS2", 2);
133 histo->setBinLabel(3,
"ROS3", 2);
134 histo->setBinLabel(4,
"ROS4", 2);
135 histo->setBinLabel(5,
"ROS5", 2);
136 histo->setBinLabel(6,
"ROS6", 2);
137 histo->setBinLabel(7,
"ROS7", 2);
138 histo->setBinLabel(8,
"ROS8", 2);
139 histo->setBinLabel(9,
"ROS9", 2);
140 histo->setBinLabel(10,
"ROS10", 2);
141 histo->setBinLabel(11,
"ROS11", 2);
142 histo->setBinLabel(12,
"ROS12", 2);
References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookFloat(), FEDIDmax, FEDIDmin, hFEDEntry, timingPdfMaker::histo, HltBtagPostValidation_cff::histoName, nEventMonitor, dqm::implementation::NavigatorBase::setCurrentFolder(), summaryHistos, topFolder(), and makeMuonMisalignmentScenario::wheel.
Referenced by bookHistograms().
◆ bookHistos() [2/2]
void DTDataIntegrityUrosOffline::bookHistos |
( |
DQMStore::IBooker & |
, |
|
|
std::string |
folder, |
|
|
const int |
fed |
|
) |
| |
|
private |
◆ bookHistosROS()
void DTDataIntegrityUrosOffline::bookHistosROS |
( |
DQMStore::IBooker & |
ibooker, |
|
|
const int |
wheel, |
|
|
const int |
ros |
|
) |
| |
|
private |
Definition at line 242 of file DTDataIntegrityUrosOffline.cc.
243 string wheel_s = to_string(
wheel);
244 string ros_s = to_string(ros);
247 string histoType =
"ROSError";
249 string linkDown_s = to_string(linkDown);
250 int linkUp = linkDown + 24;
251 string linkUp_s = to_string(linkUp);
252 string histoName =
"W" + wheel_s +
"_" +
"ROS" + ros_s +
"_" + histoType;
253 string histoTitle =
histoName +
" (Link " + linkDown_s +
"-" + linkUp_s +
" error summary)";
260 histo->setBinLabel(1,
"Error 1", 1);
261 histo->setBinLabel(2,
"Error 2", 1);
262 histo->setBinLabel(3,
"Error 3", 1);
263 histo->setBinLabel(4,
"Error 4", 1);
264 histo->setBinLabel(5,
"Not OKFlag", 1);
265 for (
int link = linkDown;
link < (linkUp + 1); ++
link) {
266 string link_s = to_string(
link);
267 histo->setBinLabel(
link + 1,
"Link" + link_s, 2);
References dqm::implementation::IBooker::book2D(), timingPdfMaker::histo, HltBtagPostValidation_cff::histoName, plotFactory::keyHisto, MainPageGenerator::link, dqm::implementation::NavigatorBase::setCurrentFolder(), topFolder(), uROSError, urosHistos, and makeMuonMisalignmentScenario::wheel.
Referenced by bookHistograms().
◆ bookHistosuROS()
void DTDataIntegrityUrosOffline::bookHistosuROS |
( |
DQMStore::IBooker & |
ibooker, |
|
|
const int |
fed, |
|
|
const int |
uRos |
|
) |
| |
|
private |
◆ processFED()
void DTDataIntegrityUrosOffline::processFED |
( |
DTuROSFEDData & |
data, |
|
|
int |
fed |
|
) |
| |
◆ processuROS()
void DTDataIntegrityUrosOffline::processuROS |
( |
DTuROSROSData & |
data, |
|
|
int |
fed, |
|
|
int |
uRos |
|
) |
| |
Definition at line 278 of file DTDataIntegrityUrosOffline.cc.
281 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
282 <<
"[DTDataIntegrityUrosOffline]: " <<
neventsuROS <<
" events analyzed by processuROS" << endl;
288 uROSStatus =
fedHistos[
"uROSStatus"][fed];
291 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
292 <<
"Trying to access non existing ME at FED " << fed << std::endl;
296 unsigned int slotMap = (
data.getboardId()) & 0xF;
299 int ros =
theROS(slotMap, 0);
300 int ddu =
theDDU(fed, slotMap, 0,
false);
301 int wheel = (ddu - 770) % 5 - 2;
310 int errorX[5][12] = {{0}};
318 if ((!uROSError2) || (!uROSError1) || (!uROSError0)) {
319 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
320 <<
"Trying to access non existing ME at uROS " << uRos << std::endl;
334 errorX[
value - 1][ros - 1] += 1;
336 }
else if (
link < 48) {
337 errorX[
value - 1][ros] += 1;
339 }
else if (
link < 72) {
340 errorX[
value - 1][ros + 1] += 1;
363 LogError(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
364 <<
"Trying to access non existing ME at uROS " << uRos << std::endl;
376 for (
unsigned int iros = 0; iros < 12; ++iros) {
377 for (
unsigned int bin = 0;
bin < 5; ++
bin) {
378 if (errorX[
bin][iros] != 0)
379 ROSSummary->
Fill(
bin, iros + 1);
392 for (
unsigned int icounter = 0; icounter <
data.geterrors().size(); ++icounter) {
393 int link =
data.geterrorROBID(icounter);
395 int tdcError_ROSSummary = 0;
396 int tdcError_ROSError = 0;
398 if (
error & 0x4000) {
399 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
400 <<
" ROS " << uRos <<
" ROB " <<
link <<
" Internal fatal Error 4000 in TDC " <<
error << endl;
402 tdcError_ROSSummary = 5;
403 tdcError_ROSError = 5;
405 }
else if (
error & 0x0249) {
406 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
407 <<
" ROS " << uRos <<
" ROB " <<
link <<
" TDC FIFO overflow in TDC " <<
error << endl;
409 tdcError_ROSSummary = 6;
410 tdcError_ROSError = 6;
412 }
else if (
error & 0x0492) {
413 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
414 <<
" ROS " << uRos <<
" ROB " <<
link <<
" TDC L1 buffer overflow in TDC " <<
error << endl;
416 tdcError_ROSSummary = 7;
417 tdcError_ROSError = 7;
419 }
else if (
error & 0x2000) {
420 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
421 <<
" ROS " << uRos <<
" ROB " <<
link <<
" TDC L1A FIFO overflow in TDC " <<
error << endl;
423 tdcError_ROSSummary = 8;
424 tdcError_ROSError = 8;
426 }
else if (
error & 0x0924) {
427 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
428 <<
" uROS " << uRos <<
" ROB " <<
link <<
" TDC hit error in TDC " <<
error << endl;
430 tdcError_ROSSummary = 9;
431 tdcError_ROSError = 9;
433 }
else if (
error & 0x1000) {
434 LogTrace(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
435 <<
" uROS " << uRos <<
" ROB " <<
link <<
" TDC hit rejected in TDC " <<
error << endl;
437 tdcError_ROSSummary = 10;
438 tdcError_ROSError = 10;
441 LogWarning(
"DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityUrosOffline")
442 <<
" TDC error code not known " <<
error << endl;
446 ROSSummary->
Fill(tdcError_ROSSummary,
link + 1);
452 ROSSummary->
Fill(tdcError_ROSSummary, ros);
453 uROSError0->
Fill(tdcError_ROSError,
link);
454 }
else if (
link < 48) {
455 ROSSummary->
Fill(tdcError_ROSSummary, ros + 1);
456 uROSError1->Fill(tdcError_ROSError,
link - 23);
457 }
else if (
link < 72) {
458 ROSSummary->
Fill(tdcError_ROSSummary, ros + 2);
459 uROSError2->Fill(tdcError_ROSError,
link - 47);
References newFWLiteAna::bin, data, relativeConstraints::error, fedHistos, dqm::impl::MonitorElement::Fill(), HcalObjRepresent::Fill(), RemoveAddSevLevel::flag, plotFactory::keyHisto, MainPageGenerator::link, LogTrace, neventsuROS, summaryHistos, theDDU(), theROS(), uROSError, urosHistos, makeMuonMisalignmentScenario::wheel, and testProducerWithPsetDescEmpty_cfi::x1.
Referenced by analyze().
◆ theDDU()
int DTDataIntegrityUrosOffline::theDDU |
( |
int |
crate, |
|
|
int |
slot, |
|
|
int |
link, |
|
|
bool |
tenDDU |
|
) |
| |
|
private |
◆ theROS()
int DTDataIntegrityUrosOffline::theROS |
( |
int |
slot, |
|
|
int |
link |
|
) |
| |
|
private |
◆ topFolder()
std::string DTDataIntegrityUrosOffline::topFolder |
( |
bool |
isFEDIntegrity | ) |
const |
|
private |
◆ fedHistos
std::map<std::string, std::map<int, MonitorElement*> > DTDataIntegrityUrosOffline::fedHistos |
|
private |
◆ FEDIDmax
int DTDataIntegrityUrosOffline::FEDIDmax |
|
private |
◆ FEDIDmin
int DTDataIntegrityUrosOffline::FEDIDmin |
|
private |
◆ fedIntegrityFolder
std::string DTDataIntegrityUrosOffline::fedIntegrityFolder |
|
private |
◆ fedToken
◆ hFEDEntry
◆ nEventMonitor
◆ nevents
int DTDataIntegrityUrosOffline::nevents |
|
private |
◆ neventsFED
int DTDataIntegrityUrosOffline::neventsFED |
|
private |
◆ nEventsLS
int DTDataIntegrityUrosOffline::nEventsLS |
|
private |
◆ neventsuROS
int DTDataIntegrityUrosOffline::neventsuROS |
|
private |
◆ NuROS
const int DTDataIntegrityUrosOffline::NuROS = 12 |
|
private |
◆ summaryHistos
std::map<std::string, std::map<int, MonitorElement*> > DTDataIntegrityUrosOffline::summaryHistos |
|
private |
◆ urosHistos
std::map<unsigned int, MonitorElement*> DTDataIntegrityUrosOffline::urosHistos |
|
private |
int getslotsize(int slot) const
void bookHistos(DQMStore::IBooker &, const int fedMin, const int fedMax)
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
std::string topFolder(bool isFEDIntegrity) const
virtual void setCurrentFolder(std::string const &fullpath)
T getUntrackedParameter(std::string const &, T const &) const
Log< level::Warning, false > LogWarning
void processFED(DTuROSFEDData &data, int fed)
void bookHistosROS(DQMStore::IBooker &, const int wheel, const int ros)
std::map< std::string, std::map< int, MonitorElement * > > fedHistos
DTuROSROSData getuROS(int slot) const
int theROS(int slot, int link)
void processuROS(DTuROSROSData &data, int fed, int uRos)
MonitorElement * nEventMonitor
std::map< unsigned int, MonitorElement * > urosHistos
static const int DOCESLOTS
Log< level::Error, false > LogError
MonitorElement * hFEDEntry
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::map< std::string, std::map< int, MonitorElement * > > summaryHistos
edm::EDGetTokenT< DTuROSFEDDataCollection > fedToken
std::string fedIntegrityFolder
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
T getParameter(std::string const &) const
char data[epos_bytes_allocation]
int theDDU(int crate, int slot, int link, bool tenDDU)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
void bookHistosuROS(DQMStore::IBooker &, const int fed, const int uRos)