CMS 3D CMS Logo

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

#include <DTDataIntegrityROSOffline.h>

Inheritance diagram for DTDataIntegrityROSOffline:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
 DTDataIntegrityROSOffline (const edm::ParameterSet &ps)
 
void fedEntry (int dduID)
 
void fedFatal (int dduID)
 
void fedNonFatal (int dduID)
 
void processFED (DTDDUData &dduData, const std::vector< DTROS25Data > &rosData, int dduID)
 
void processROS25 (DTROS25Data &data, int dduID, int ros)
 
 ~DTDataIntegrityROSOffline () override
 
- Public Member Functions inherited from DQMEDAnalyzer
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 ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Protected Member Functions

void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Private Member Functions

void bookHistos (DQMStore::IBooker &, const int fedMin, const int fedMax)
 
void bookHistos (DQMStore::IBooker &, std::string folder, DTROChainCoding code)
 
void bookHistosROS25 (DQMStore::IBooker &, DTROChainCoding code)
 
void channelsInCEROS (int cerosId, int chMask, std::vector< int > &channels)
 
void channelsInROS (int cerosMask, std::vector< int > &channels)
 
std::string topFolder (bool isFEDIntegrity) const
 

Private Attributes

edm::EDGetTokenT< DTDDUCollectiondduToken
 
bool eventErrorFlag
 
std::set< int > fedBXIds
 
std::map< std::string, std::map< int, MonitorElement * > > fedHistos
 
int FEDIDmax
 
int FEDIDmin
 
std::string fedIntegrityFolder
 
bool getSCInfo
 
MonitorElementhCorruptionSummary
 
MonitorElementhFEDEntry
 
MonitorElementhFEDFatal
 
MonitorElementhFEDNonFatal
 
MonitorElementhTTSSummary
 
MonitorElementnEventMonitor
 
int nevents
 
int neventsFED
 
int neventsROS
 
const int nROS = 12
 
edm::EDGetTokenT< DTROS25Collectionros25Token
 
std::map< int, std::set< int > > rosBxIdsPerFED
 
std::map< std::string, std::map< int, MonitorElement * > > rosHistos
 
std::map< int, std::set< int > > rosL1AIdsPerFED
 
std::map< std::string, std::map< int, MonitorElement * > > summaryHistos
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Class for DT Data Integrity.

Author
Marco Zanetti (INFN Padova), Gianluca Cerminara (INFN Torino)

Definition at line 33 of file DTDataIntegrityROSOffline.h.

Constructor & Destructor Documentation

◆ DTDataIntegrityROSOffline()

DTDataIntegrityROSOffline::DTDataIntegrityROSOffline ( const edm::ParameterSet ps)

Definition at line 29 of file DTDataIntegrityROSOffline.cc.

29  : nevents(0) {
30  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
31  << "[DTDataIntegrityROSOffline]: Constructor" << endl;
32 
33  dduToken = consumes<DTDDUCollection>(ps.getParameter<InputTag>("dtDDULabel"));
34  ros25Token = consumes<DTROS25Collection>(ps.getParameter<InputTag>("dtROS25Label"));
37 
38  neventsFED = 0;
39 
40  // Plot quantities about SC
41  getSCInfo = ps.getUntrackedParameter<bool>("getSCInfo", false);
42 
43  fedIntegrityFolder = ps.getUntrackedParameter<string>("fedIntegrityFolder", "DT/FEDIntegrity");
44 }

References dduToken, FEDIDmax, FEDIDmin, fedIntegrityFolder, edm::ParameterSet::getParameter(), getSCInfo, edm::ParameterSet::getUntrackedParameter(), LogTrace, FEDNumbering::MAXDTFEDID, FEDNumbering::MINDTFEDID, neventsFED, and ros25Token.

◆ ~DTDataIntegrityROSOffline()

DTDataIntegrityROSOffline::~DTDataIntegrityROSOffline ( )
override

Definition at line 46 of file DTDataIntegrityROSOffline.cc.

46  {
47  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
48  << "[DTDataIntegrityROSOffline]: Destructor. Analyzed " << neventsFED << " events" << endl;
49  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
50  << "[DTDataIntegrityROSOffline]: postEndJob called!" << endl;
51 }

References LogTrace, and neventsFED.

Member Function Documentation

◆ analyze()

void DTDataIntegrityROSOffline::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 713 of file DTDataIntegrityROSOffline.cc.

713  {
714  nevents++;
716 
717  LogTrace("DTRawToDigi|TDQM|DTMonitorModule|DTDataIntegrityROSOffline")
718  << "[DTDataIntegrityROSOffline]: preProcessEvent" << endl;
719 
720  //Legacy ROS
721  // clear the set of BXids from the ROSs
722  for (map<int, set<int> >::iterator rosBxIds = rosBxIdsPerFED.begin(); rosBxIds != rosBxIdsPerFED.end(); ++rosBxIds) {
723  (*rosBxIds).second.clear();
724  }
725 
726  fedBXIds.clear();
727 
728  for (map<int, set<int> >::iterator rosL1AIds = rosL1AIdsPerFED.begin(); rosL1AIds != rosL1AIdsPerFED.end();
729  ++rosL1AIds) {
730  (*rosL1AIds).second.clear();
731  }
732 
733  // reset the error flag
734  eventErrorFlag = false;
735 
736  // Digi collection
737  edm::Handle<DTDDUCollection> dduProduct;
738  e.getByToken(dduToken, dduProduct);
739  edm::Handle<DTROS25Collection> ros25Product;
740  e.getByToken(ros25Token, ros25Product);
741 
742  DTDDUData dduData;
743  std::vector<DTROS25Data> ros25Data;
744  if (dduProduct.isValid() && ros25Product.isValid()) {
745  for (unsigned int i = 0; i < dduProduct->size(); ++i) {
746  dduData = dduProduct->at(i);
747  ros25Data = ros25Product->at(i);
748  FEDHeader header = dduData.getDDUHeader();
749  int id = header.sourceID();
750  if (id > FEDIDmax || id < FEDIDmin)
751  continue; //SIM uses extra FEDs not monitored
752 
753  processFED(dduData, ros25Data, id);
754  for (unsigned int j = 0; j < ros25Data.size(); ++j) {
755  int rosid = j + 1;
756  processROS25(ros25Data[j], id, rosid);
757  }
758  }
759  }
760 }

References dduToken, MillePedeFileConverter_cfg::e, eventErrorFlag, fedBXIds, FEDIDmax, FEDIDmin, dqm::impl::MonitorElement::Fill(), DTDDUData::getDDUHeader(), RecoTauValidation_cfi::header, mps_fire::i, edm::HandleBase::isValid(), dqmiolumiharvest::j, LogTrace, genParticles_cff::map, nEventMonitor, nevents, processFED(), processROS25(), ros25Token, rosBxIdsPerFED, and rosL1AIdsPerFED.

◆ bookHistograms()

void DTDataIntegrityROSOffline::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 62 of file DTDataIntegrityROSOffline.cc.

64  {
65  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
66  << "[DTDataIntegrityROSOffline]: postBeginJob" << endl;
67 
68  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
69  << "[DTDataIntegrityROSOffline] Get DQMStore service" << endl;
70 
71  // Loop over the DT FEDs
72 
73  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
74  << " FEDS: " << FEDIDmin << " to " << FEDIDmax << " in the RO" << endl;
75 
76  // book FED integrity histos
77  bookHistos(ibooker, FEDIDmin, FEDIDmax);
78 
79  //Legacy ROS
80 
81  // static booking of the histograms
82 
83  for (int fed = FEDIDmin; fed <= FEDIDmax; ++fed) { // loop over the FEDs in the readout
84  DTROChainCoding code;
85  code.setDDU(fed);
86  bookHistos(ibooker, string("ROS_S"), code);
87 
88  bookHistos(ibooker, string("DDU"), code);
89 
90  for (int ros = 1; ros <= nROS; ++ros) { // loop over all ROS
91  code.setROS(ros);
92  bookHistosROS25(ibooker, code);
93  }
94  }
95 }

References bookHistos(), bookHistosROS25(), FEDIDmax, FEDIDmin, LogTrace, nROS, DTROChainCoding::setDDU(), and DTROChainCoding::setROS().

◆ bookHistos() [1/2]

void DTDataIntegrityROSOffline::bookHistos ( DQMStore::IBooker ibooker,
const int  fedMin,
const int  fedMax 
)
private

Definition at line 97 of file DTDataIntegrityROSOffline.cc.

97  {
98  ibooker.setCurrentFolder("DT/EventInfo/Counters");
99  nEventMonitor = ibooker.bookFloat("nProcessedEventsDataIntegrity");
100 
101  // Standard FED integrity histos
102  ibooker.setCurrentFolder(topFolder(true));
103 
104  int nFED = (fedMax - fedMin) + 1;
105 
106  hFEDEntry = ibooker.book1D("FEDEntries", "# entries per DT FED", nFED, fedMin, fedMax + 1);
107 
108  hFEDFatal = ibooker.book1D("FEDFatal", "# fatal errors DT FED", nFED, fedMin, fedMax + 1);
109  hFEDNonFatal = ibooker.book1D("FEDNonFatal", "# NON fatal errors DT FED", nFED, fedMin, fedMax + 1);
110 
111  ibooker.setCurrentFolder(topFolder(false));
112  hTTSSummary = ibooker.book2D("TTSSummary", "Summary Status TTS", nFED, fedMin, fedMax + 1, 9, 1, 10);
113  hTTSSummary->setAxisTitle("FED", 1);
114  hTTSSummary->setBinLabel(1, "ROS PAF", 2);
115  hTTSSummary->setBinLabel(2, "DDU PAF", 2);
116  hTTSSummary->setBinLabel(3, "ROS PAF", 2);
117  hTTSSummary->setBinLabel(4, "DDU PAF", 2);
118  hTTSSummary->setBinLabel(5, "DDU Full", 2);
119  hTTSSummary->setBinLabel(6, "L1A Mism.", 2);
120  hTTSSummary->setBinLabel(7, "ROS Error", 2);
121  hTTSSummary->setBinLabel(8, "BX Mism.", 2);
122  hTTSSummary->setBinLabel(9, "DDU Logic Err.", 2);
123 
124  // bookkeeping of the histos
126  ibooker.book2D("DataCorruptionSummary", "Data Corruption Sources", nFED, fedMin, fedMax + 1, 8, 1, 9);
127  hCorruptionSummary->setAxisTitle("FED", 1);
128  hCorruptionSummary->setBinLabel(1, "Miss Ch.", 2);
129  hCorruptionSummary->setBinLabel(2, "ROS BX mism", 2);
130  hCorruptionSummary->setBinLabel(3, "DDU BX mism", 2);
131  hCorruptionSummary->setBinLabel(4, "ROS L1A mism", 2);
132  hCorruptionSummary->setBinLabel(5, "Miss Payload", 2);
133  hCorruptionSummary->setBinLabel(6, "FCRC bit", 2);
134  hCorruptionSummary->setBinLabel(7, "Header check", 2);
135  hCorruptionSummary->setBinLabel(8, "Trailer Check", 2);
136 }

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookFloat(), hCorruptionSummary, hFEDEntry, hFEDFatal, hFEDNonFatal, hTTSSummary, nEventMonitor, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), and topFolder().

Referenced by bookHistograms(), and bookHistosROS25().

◆ bookHistos() [2/2]

void DTDataIntegrityROSOffline::bookHistos ( DQMStore::IBooker ,
std::string  folder,
DTROChainCoding  code 
)
private

◆ bookHistosROS25()

void DTDataIntegrityROSOffline::bookHistosROS25 ( DQMStore::IBooker ibooker,
DTROChainCoding  code 
)
private

Definition at line 305 of file DTDataIntegrityROSOffline.cc.

305  {
306  bookHistos(ibooker, string("ROS"), code);
307 }

References bookHistos().

Referenced by bookHistograms().

◆ channelsInCEROS()

void DTDataIntegrityROSOffline::channelsInCEROS ( int  cerosId,
int  chMask,
std::vector< int > &  channels 
)
private

Definition at line 693 of file DTDataIntegrityROSOffline.cc.

693  {
694  for (int iCh = 0; iCh < 6; ++iCh) {
695  if ((chMask >> iCh) & 0x1) {
696  channels.push_back(cerosId * 6 + iCh);
697  }
698  }
699  return;
700 }

References ewkTauDQM_cfi::channels, and testProducerWithPsetDescEmpty_cfi::x1.

Referenced by processROS25().

◆ channelsInROS()

void DTDataIntegrityROSOffline::channelsInROS ( int  cerosMask,
std::vector< int > &  channels 
)
private

Definition at line 702 of file DTDataIntegrityROSOffline.cc.

702  {
703  for (int iCeros = 0; iCeros < 5; ++iCeros) {
704  if ((cerosMask >> iCeros) & 0x1) {
705  for (int iCh = 0; iCh < 6; ++iCh) {
706  channels.push_back(iCeros * 6 + iCh);
707  }
708  }
709  }
710  return;
711 }

References ewkTauDQM_cfi::channels, and testProducerWithPsetDescEmpty_cfi::x1.

Referenced by processROS25().

◆ fedEntry()

void DTDataIntegrityROSOffline::fedEntry ( int  dduID)

Definition at line 679 of file DTDataIntegrityROSOffline.cc.

679 { hFEDEntry->Fill(dduID); }

References dqm::impl::MonitorElement::Fill(), and hFEDEntry.

◆ fedFatal()

void DTDataIntegrityROSOffline::fedFatal ( int  dduID)

Definition at line 682 of file DTDataIntegrityROSOffline.cc.

682 { hFEDFatal->Fill(dduID); }

References dqm::impl::MonitorElement::Fill(), and hFEDFatal.

◆ fedNonFatal()

void DTDataIntegrityROSOffline::fedNonFatal ( int  dduID)

Definition at line 685 of file DTDataIntegrityROSOffline.cc.

685 { hFEDNonFatal->Fill(dduID); }

References dqm::impl::MonitorElement::Fill(), and hFEDNonFatal.

◆ processFED()

void DTDataIntegrityROSOffline::processFED ( DTDDUData dduData,
const std::vector< DTROS25Data > &  rosData,
int  dduID 
)

Definition at line 543 of file DTDataIntegrityROSOffline.cc.

543  {
544  neventsFED++;
545  if (neventsFED % 1000 == 0)
546  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
547  << "[DTDataIntegrityROSOffline]: " << neventsFED << " events analyzed by processFED" << endl;
548 
549  DTROChainCoding code;
550  code.setDDU(ddu);
551  if (code.getDDUID() < FEDIDmin || code.getDDUID() > FEDIDmax)
552  return;
553 
554  hFEDEntry->Fill(code.getDDUID());
555 
556  const FEDTrailer& trailer = data.getDDUTrailer();
557  const FEDHeader& header = data.getDDUHeader();
558 
559  // check consistency of header and trailer
560  if (!header.check()) {
561  // error code 7
562  hFEDFatal->Fill(code.getDDUID());
563  hCorruptionSummary->Fill(code.getDDUID(), 7);
564  }
565 
566  if (!trailer.check()) {
567  // error code 8
568  hFEDFatal->Fill(code.getDDUID());
569  hCorruptionSummary->Fill(code.getDDUID(), 8);
570  }
571 
572  // check CRC error bit set by DAQ before sending data on SLink
573  if (data.crcErrorBit()) {
574  // error code 6
575  hFEDFatal->Fill(code.getDDUID());
576  hCorruptionSummary->Fill(code.getDDUID(), 6);
577  }
578 
579  const DTDDUSecondStatusWord& secondWord = data.getSecondStatusWord();
580 
581  //2D HISTO: ROS VS STATUS (8 BIT = 8 BIN) from 1st-2nd status words (9th BIN FROM LIST OF ROS in 2nd status word)
582  MonitorElement* hROSStatus = fedHistos["ROSStatus"][code.getDDUID()];
583  //1D HISTO: NUMBER OF ROS IN THE EVENTS from 2nd status word
584 
585  int rosList = secondWord.rosList();
586  set<int> rosPositions;
587  for (int i = 0; i < 12; i++) {
588  if (rosList & 0x1) {
589  rosPositions.insert(i);
590  //9th BIN FROM LIST OF ROS in 2nd status word
591  hROSStatus->Fill(8, i, 1);
592  }
593  rosList >>= 1;
594  }
595 
596  int channel = 0;
597  for (vector<DTDDUFirstStatusWord>::const_iterator fsw_it = data.getFirstStatusWord().begin();
598  fsw_it != data.getFirstStatusWord().end();
599  fsw_it++) {
600  // assuming association one-to-one between DDU channel and ROS
601  hROSStatus->Fill(0, channel, (*fsw_it).channelEnabled());
602  hROSStatus->Fill(1, channel, (*fsw_it).timeout());
603  hROSStatus->Fill(2, channel, (*fsw_it).eventTrailerLost());
604  hROSStatus->Fill(3, channel, (*fsw_it).opticalFiberSignalLost());
605  hROSStatus->Fill(4, channel, (*fsw_it).tlkPropagationError());
606  hROSStatus->Fill(5, channel, (*fsw_it).tlkPatternError());
607  hROSStatus->Fill(6, channel, (*fsw_it).tlkSignalLost());
608  hROSStatus->Fill(7, channel, (*fsw_it).errorFromROS());
609  // check that the enabled channel was also in the read-out
610  if ((*fsw_it).channelEnabled() == 1 && rosPositions.find(channel) == rosPositions.end()) {
611  hROSStatus->Fill(9, channel, 1);
612  // error code 1
613  hFEDFatal->Fill(code.getDDUID());
614  hCorruptionSummary->Fill(code.getDDUID(), 1);
615  }
616  channel++;
617  }
618 
619  // ---------------------------------------------------------------------
620  // cross checks between FED and ROS data
621  // check the BX ID against the ROSs
622  set<int> rosBXIds = rosBxIdsPerFED[ddu];
623  if ((rosBXIds.size() > 1 || rosBXIds.find(header.bxID()) == rosBXIds.end()) &&
624  !rosBXIds.empty()) { // in this case look for faulty ROSs
625  for (vector<DTROS25Data>::const_iterator rosControlData = rosData.begin(); rosControlData != rosData.end();
626  ++rosControlData) { // loop over the ROS data
627  for (vector<DTROSDebugWord>::const_iterator debug_it = (*rosControlData).getROSDebugs().begin();
628  debug_it != (*rosControlData).getROSDebugs().end();
629  debug_it++) { // Loop over ROS debug words
630  if ((*debug_it).debugType() == 0 && (*debug_it).debugMessage() != header.bxID()) { // check the BX
631  int ros = (*rosControlData).getROSID();
632  // fill the error bin
633  hROSStatus->Fill(11, ros - 1);
634  // error code 2
635  hFEDFatal->Fill(code.getDDUID());
636  hCorruptionSummary->Fill(code.getDDUID(), 2);
637  }
638  }
639  }
640  }
641 
642  // check the BX ID against other FEDs
643  fedBXIds.insert(header.bxID());
644  if (fedBXIds.size() != 1) {
645  LogWarning("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
646  << "ERROR: FED " << ddu << " BX ID different from other feds: " << header.bxID() << endl;
647  // error code 3
648  hFEDFatal->Fill(code.getDDUID());
649  hCorruptionSummary->Fill(code.getDDUID(), 3);
650  }
651 
652  // check the L1A ID against the ROSs
653  set<int> rosL1AIds = rosL1AIdsPerFED[ddu];
654  if ((rosL1AIds.size() > 1 || rosL1AIds.find(header.lvl1ID() - 1) == rosL1AIds.end()) &&
655  !rosL1AIds.empty()) { // in this case look for faulty ROSs
656  //If L1A_ID error identify which ROS has wrong L1A
657  for (vector<DTROS25Data>::const_iterator rosControlData = rosData.begin(); rosControlData != rosData.end();
658  rosControlData++) { // loop over the ROS data
659  unsigned int ROSHeader_TTCCount =
660  ((*rosControlData).getROSHeader().TTCEventCounter() + 1) %
661  0x1000000; // fix comparison in case of last counting bin in ROS /first one in DDU
662  if (ROSHeader_TTCCount != header.lvl1ID()) {
663  int ros = (*rosControlData).getROSID();
664  hROSStatus->Fill(10, ros - 1);
665  // error code 4
666  hFEDFatal->Fill(code.getDDUID());
667  hCorruptionSummary->Fill(code.getDDUID(), 4);
668  }
669  }
670  }
671 
672  //1D HISTOS: EVENT LENGHT from trailer
673  int fedEvtLength = trailer.fragmentLength() * 8;
674  // if(fedEvtLength > 16000) fedEvtLength = 16000; // overflow bin
675  fedHistos["EventLength"][code.getDDUID()]->Fill(fedEvtLength);
676 }

References FEDTrailer::check(), data, fedBXIds, fedHistos, FEDIDmax, FEDIDmin, dqm::impl::MonitorElement::Fill(), FEDTrailer::fragmentLength(), DTROChainCoding::getDDUID(), hCorruptionSummary, RecoTauValidation_cfi::header, hFEDEntry, hFEDFatal, mps_fire::i, LogTrace, neventsFED, rosBxIdsPerFED, rosL1AIdsPerFED, DTDDUSecondStatusWord::rosList(), DTROChainCoding::setDDU(), and testProducerWithPsetDescEmpty_cfi::x1.

Referenced by analyze().

◆ processROS25()

void DTDataIntegrityROSOffline::processROS25 ( DTROS25Data data,
int  dduID,
int  ros 
)

Definition at line 309 of file DTDataIntegrityROSOffline.cc.

309  {
310  neventsROS++;
311 
312  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
313  << "[DTDataIntegrityROSOffline]: " << neventsROS << " events analyzed by processROS25" << endl;
314 
315  // The ID of the RO board (used to map the histos)
316  DTROChainCoding code;
317  code.setDDU(ddu);
318  code.setROS(ros);
319 
320  MonitorElement* ROSSummary = summaryHistos["ROSSummary"][code.getDDUID()];
321 
322  // Summary of all ROB errors
323  MonitorElement* ROSError = nullptr;
324  ROSError = rosHistos["ROSError"][code.getROSID()];
325 
326  if ((!ROSError)) {
327  LogError("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
328  << "Trying to access non existing ME at ROSID " << code.getROSID() << std::endl;
329  return;
330  }
331 
332  // L1A ids to be checked against FED one
333  rosL1AIdsPerFED[ddu].insert(data.getROSHeader().TTCEventCounter());
334 
335  // ROS errors
336 
337  // check for TPX errors
338  if (data.getROSTrailer().TPX() != 0) {
339  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
340  << " TXP error en ROS " << code.getROS() << endl;
341  ROSSummary->Fill(9, code.getROS());
342  }
343 
344  // L1 Buffer almost full (non-critical error!)
345  if (data.getROSTrailer().l1AFifoOccupancy() > 31) {
346  ROSSummary->Fill(10, code.getROS());
347  }
348 
349  for (vector<DTROSErrorWord>::const_iterator error_it = data.getROSErrors().begin();
350  error_it != data.getROSErrors().end();
351  error_it++) { // Loop over ROS error words
352 
353  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
354  << " Error in ROS " << code.getROS() << " ROB Id " << (*error_it).robID() << " Error type "
355  << (*error_it).errorType() << endl;
356 
357  // Fill the ROSSummary (1 per FED) histo
358  ROSSummary->Fill((*error_it).errorType(), code.getROS());
359  if ((*error_it).errorType() <= 11) { // set error flag
360  eventErrorFlag = true;
361  }
362 
363  // Fill the ROB Summary (1 per ROS) histo
364  if ((*error_it).robID() != 31) {
365  ROSError->Fill((*error_it).errorType(), (*error_it).robID());
366  } else if ((*error_it).errorType() == 4) {
367  vector<int> channelBins;
368  channelsInROS((*error_it).cerosID(), channelBins);
369  vector<int>::const_iterator channelIt = channelBins.begin();
370  vector<int>::const_iterator channelEnd = channelBins.end();
371  for (; channelIt != channelEnd; ++channelIt) {
372  ROSError->Fill(4, (*channelIt));
373  }
374  }
375  }
376 
377  int ROSDebug_BunchNumber = -1;
378 
379  for (vector<DTROSDebugWord>::const_iterator debug_it = data.getROSDebugs().begin();
380  debug_it != data.getROSDebugs().end();
381  debug_it++) { // Loop over ROS debug words
382 
383  int debugROSSummary = 0;
384  int debugROSError = 0;
385  vector<int> debugBins;
386  bool hasEvIdMis = false;
387  vector<int> evIdMisBins;
388 
389  if ((*debug_it).debugType() == 0) {
390  ROSDebug_BunchNumber = (*debug_it).debugMessage();
391  } else if ((*debug_it).debugType() == 1) {
392  // not used
393  // ROSDebug_BcntResCntLow = (*debug_it).debugMessage();
394  } else if ((*debug_it).debugType() == 2) {
395  // not used
396  // ROSDebug_BcntResCntHigh = (*debug_it).debugMessage();
397  } else if ((*debug_it).debugType() == 3) {
398  if ((*debug_it).dontRead()) {
399  debugROSSummary = 11;
400  debugROSError = 8;
401  channelsInCEROS((*debug_it).cerosIdCerosStatus(), (*debug_it).dontRead(), debugBins);
402  }
403  if ((*debug_it).evIdMis()) {
404  hasEvIdMis = true;
405  channelsInCEROS((*debug_it).cerosIdCerosStatus(), (*debug_it).evIdMis(), evIdMisBins);
406  }
407  } else if ((*debug_it).debugType() == 4 && (*debug_it).cerosIdRosStatus()) {
408  debugROSSummary = 13;
409  debugROSError = 10;
410  channelsInROS((*debug_it).cerosIdRosStatus(), debugBins);
411  }
412 
413  if (debugROSSummary) {
414  ROSSummary->Fill(debugROSSummary, code.getROS());
415  vector<int>::const_iterator channelIt = debugBins.begin();
416  vector<int>::const_iterator channelEnd = debugBins.end();
417  for (; channelIt != channelEnd; ++channelIt) {
418  ROSError->Fill(debugROSError, (*channelIt));
419  }
420  }
421 
422  if (hasEvIdMis) {
423  ROSSummary->Fill(12, code.getROS());
424  vector<int>::const_iterator channelIt = evIdMisBins.begin();
425  vector<int>::const_iterator channelEnd = evIdMisBins.end();
426  for (; channelIt != channelEnd; ++channelIt) {
427  ROSError->Fill(9, (*channelIt));
428  }
429  }
430  }
431 
432  // ROB Group Header
433  // Check the BX of the ROB headers against the BX of the ROS
434  for (vector<DTROBHeader>::const_iterator rob_it = data.getROBHeaders().begin(); rob_it != data.getROBHeaders().end();
435  rob_it++) { // loop over ROB headers
436 
437  code.setROB((*rob_it).first);
438  DTROBHeaderWord robheader = (*rob_it).second;
439 
440  rosBxIdsPerFED[ddu].insert(ROSDebug_BunchNumber);
441 
442  if (robheader.bunchID() != ROSDebug_BunchNumber) {
443  // fill ROS Summary plot
444  ROSSummary->Fill(8, code.getROS());
445  eventErrorFlag = true;
446 
447  // fill ROB Summary plot for that particular ROS
448  ROSError->Fill(7, robheader.robID());
449  }
450  }
451 
452  // TDC Data
453  for (vector<DTTDCData>::const_iterator tdc_it = data.getTDCData().begin(); tdc_it != data.getTDCData().end();
454  tdc_it++) { // loop over TDC data
455 
456  DTTDCMeasurementWord tdcDatum = (*tdc_it).second;
457 
458  if (tdcDatum.PC() != 0) {
459  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
460  << " PC error in ROS " << code.getROS() << " TDC " << (*tdc_it).first << endl;
461  // fill ROS Summary plot
462  ROSSummary->Fill(7, code.getROS());
463 
464  eventErrorFlag = true;
465 
466  // fill ROB Summary plot for that particular ROS
467  ROSError->Fill(6, (*tdc_it).first);
468  }
469  }
470 
471  // TDC Error
472  for (vector<DTTDCError>::const_iterator tdc_it = data.getTDCError().begin(); tdc_it != data.getTDCError().end();
473  tdc_it++) { // loop over TDC errors
474 
475  code.setROB((*tdc_it).first);
476 
477  int tdcError_ROSSummary = 0;
478  int tdcError_ROSError = 0;
479 
480  if (((*tdc_it).second).tdcError() & 0x4000) {
481  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
482  << " ROS " << code.getROS() << " ROB " << code.getROB() << " Internal fatal Error 4000 in TDC "
483  << (*tdc_it).first << endl;
484 
485  tdcError_ROSSummary = 14;
486  tdcError_ROSError = 11;
487 
488  } else if (((*tdc_it).second).tdcError() & 0x0249) {
489  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
490  << " ROS " << code.getROS() << " ROB " << code.getROB() << " TDC FIFO overflow in TDC " << (*tdc_it).first
491  << endl;
492 
493  tdcError_ROSSummary = 15;
494  tdcError_ROSError = 12;
495 
496  } else if (((*tdc_it).second).tdcError() & 0x0492) {
497  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
498  << " ROS " << code.getROS() << " ROB " << code.getROB() << " TDC L1 buffer overflow in TDC "
499  << (*tdc_it).first << endl;
500 
501  tdcError_ROSSummary = 16;
502  tdcError_ROSError = 13;
503 
504  } else if (((*tdc_it).second).tdcError() & 0x2000) {
505  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
506  << " ROS " << code.getROS() << " ROB " << code.getROB() << " TDC L1A FIFO overflow in TDC " << (*tdc_it).first
507  << endl;
508 
509  tdcError_ROSSummary = 17;
510  tdcError_ROSError = 14;
511 
512  } else if (((*tdc_it).second).tdcError() & 0x0924) {
513  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
514  << " ROS " << code.getROS() << " ROB " << code.getROB() << " TDC hit error in TDC " << (*tdc_it).first
515  << endl;
516 
517  tdcError_ROSSummary = 18;
518  tdcError_ROSError = 15;
519 
520  } else if (((*tdc_it).second).tdcError() & 0x1000) {
521  LogTrace("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
522  << " ROS " << code.getROS() << " ROB " << code.getROB() << " TDC hit rejected in TDC " << (*tdc_it).first
523  << endl;
524 
525  tdcError_ROSSummary = 19;
526  tdcError_ROSError = 16;
527 
528  } else {
529  LogWarning("DTRawToDigi|DTDQM|DTMonitorModule|DTDataIntegrityROSOffline")
530  << " TDC error code not known " << ((*tdc_it).second).tdcError() << endl;
531  }
532 
533  ROSSummary->Fill(tdcError_ROSSummary, code.getROS());
534 
535  if (tdcError_ROSSummary <= 15) {
536  eventErrorFlag = true;
537  }
538 
539  ROSError->Fill(tdcError_ROSError, (*tdc_it).first);
540  }
541 }

References DTROBHeaderWord::bunchID(), channelsInCEROS(), channelsInROS(), data, eventErrorFlag, dqm::impl::MonitorElement::Fill(), DTROChainCoding::getDDUID(), DTROChainCoding::getROB(), DTROChainCoding::getROS(), DTROChainCoding::getROSID(), LogTrace, neventsROS, DTTDCMeasurementWord::PC(), DTROBHeaderWord::robID(), rosBxIdsPerFED, rosHistos, rosL1AIdsPerFED, DTROChainCoding::setDDU(), DTROChainCoding::setROB(), DTROChainCoding::setROS(), and summaryHistos.

Referenced by analyze().

◆ topFolder()

std::string DTDataIntegrityROSOffline::topFolder ( bool  isFEDIntegrity) const
private

Definition at line 687 of file DTDataIntegrityROSOffline.cc.

687  {
688  string folder = "DT/00-DataIntegrity/";
689 
690  return folder;
691 }

References printsummarytable::folder.

Referenced by bookHistos().

Member Data Documentation

◆ dduToken

edm::EDGetTokenT<DTDDUCollection> DTDataIntegrityROSOffline::dduToken
private

Definition at line 107 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), and DTDataIntegrityROSOffline().

◆ eventErrorFlag

bool DTDataIntegrityROSOffline::eventErrorFlag
private

Definition at line 98 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), and processROS25().

◆ fedBXIds

std::set<int> DTDataIntegrityROSOffline::fedBXIds
private

Definition at line 101 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), and processFED().

◆ fedHistos

std::map<std::string, std::map<int, MonitorElement*> > DTDataIntegrityROSOffline::fedHistos
private

Definition at line 72 of file DTDataIntegrityROSOffline.h.

Referenced by processFED().

◆ FEDIDmax

int DTDataIntegrityROSOffline::FEDIDmax
private

◆ FEDIDmin

int DTDataIntegrityROSOffline::FEDIDmin
private

◆ fedIntegrityFolder

std::string DTDataIntegrityROSOffline::fedIntegrityFolder
private

Definition at line 104 of file DTDataIntegrityROSOffline.h.

Referenced by DTDataIntegrityROSOffline().

◆ getSCInfo

bool DTDataIntegrityROSOffline::getSCInfo
private

Definition at line 65 of file DTDataIntegrityROSOffline.h.

Referenced by DTDataIntegrityROSOffline().

◆ hCorruptionSummary

MonitorElement* DTDataIntegrityROSOffline::hCorruptionSummary
private

Definition at line 82 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistos(), and processFED().

◆ hFEDEntry

MonitorElement* DTDataIntegrityROSOffline::hFEDEntry
private

Definition at line 79 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistos(), fedEntry(), and processFED().

◆ hFEDFatal

MonitorElement* DTDataIntegrityROSOffline::hFEDFatal
private

Definition at line 80 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistos(), fedFatal(), and processFED().

◆ hFEDNonFatal

MonitorElement* DTDataIntegrityROSOffline::hFEDNonFatal
private

Definition at line 81 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistos(), and fedNonFatal().

◆ hTTSSummary

MonitorElement* DTDataIntegrityROSOffline::hTTSSummary
private

Definition at line 85 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistos().

◆ nEventMonitor

MonitorElement* DTDataIntegrityROSOffline::nEventMonitor
private

Definition at line 70 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), and bookHistos().

◆ nevents

int DTDataIntegrityROSOffline::nevents
private

Definition at line 67 of file DTDataIntegrityROSOffline.h.

Referenced by analyze().

◆ neventsFED

int DTDataIntegrityROSOffline::neventsFED
private

◆ neventsROS

int DTDataIntegrityROSOffline::neventsROS
private

Definition at line 88 of file DTDataIntegrityROSOffline.h.

Referenced by processROS25().

◆ nROS

const int DTDataIntegrityROSOffline::nROS = 12
private

Definition at line 91 of file DTDataIntegrityROSOffline.h.

Referenced by bookHistograms().

◆ ros25Token

edm::EDGetTokenT<DTROS25Collection> DTDataIntegrityROSOffline::ros25Token
private

Definition at line 109 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), and DTDataIntegrityROSOffline().

◆ rosBxIdsPerFED

std::map<int, std::set<int> > DTDataIntegrityROSOffline::rosBxIdsPerFED
private

Definition at line 100 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), processFED(), and processROS25().

◆ rosHistos

std::map<std::string, std::map<int, MonitorElement*> > DTDataIntegrityROSOffline::rosHistos
private

Definition at line 76 of file DTDataIntegrityROSOffline.h.

Referenced by processROS25().

◆ rosL1AIdsPerFED

std::map<int, std::set<int> > DTDataIntegrityROSOffline::rosL1AIdsPerFED
private

Definition at line 102 of file DTDataIntegrityROSOffline.h.

Referenced by analyze(), processFED(), and processROS25().

◆ summaryHistos

std::map<std::string, std::map<int, MonitorElement*> > DTDataIntegrityROSOffline::summaryHistos
private

Definition at line 74 of file DTDataIntegrityROSOffline.h.

Referenced by processROS25().

DTROChainCoding::getROSID
int getROSID() const
Definition: DTROChainCoding.h:61
DTTDCMeasurementWord
Definition: DTDDUWords.h:475
DTROBHeaderWord::robID
int robID() const
Definition: DTDDUWords.h:353
DTDataIntegrityROSOffline::topFolder
std::string topFolder(bool isFEDIntegrity) const
Definition: DTDataIntegrityROSOffline.cc:687
mps_fire.i
i
Definition: mps_fire.py:355
DTROBHeaderWord
Definition: DTDDUWords.h:341
DTDataIntegrityROSOffline::processROS25
void processROS25(DTROS25Data &data, int dduID, int ros)
Definition: DTDataIntegrityROSOffline.cc:309
DTDataIntegrityROSOffline::channelsInROS
void channelsInROS(int cerosMask, std::vector< int > &channels)
Definition: DTDataIntegrityROSOffline.cc:702
DTDataIntegrityROSOffline::nROS
const int nROS
Definition: DTDataIntegrityROSOffline.h:91
DTDataIntegrityROSOffline::rosHistos
std::map< std::string, std::map< int, MonitorElement * > > rosHistos
Definition: DTDataIntegrityROSOffline.h:76
printsummarytable.folder
folder
Definition: printsummarytable.py:7
DTROChainCoding::setDDU
void setDDU(const int &ID)
need to reset the bits before setting
Definition: DTROChainCoding.h:50
DTDDUSecondStatusWord::rosList
int rosList() const
Definition: DTDDUWords.h:690
DTTDCMeasurementWord::PC
int PC() const
Definition: DTDDUWords.h:487
DTDataIntegrityROSOffline::bookHistos
void bookHistos(DQMStore::IBooker &, const int fedMin, const int fedMax)
Definition: DTDataIntegrityROSOffline.cc:97
DTDataIntegrityROSOffline::fedIntegrityFolder
std::string fedIntegrityFolder
Definition: DTDataIntegrityROSOffline.h:104
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
DTDataIntegrityROSOffline::hFEDFatal
MonitorElement * hFEDFatal
Definition: DTDataIntegrityROSOffline.h:80
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::Handle
Definition: AssociativeIterator.h:50
DTDataIntegrityROSOffline::hFEDEntry
MonitorElement * hFEDEntry
Definition: DTDataIntegrityROSOffline.h:79
FEDTrailer::check
bool check() const
Check that the trailer is OK.
Definition: FEDTrailer.cc:45
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
DTROChainCoding::getROB
int getROB() const
Definition: DTROChainCoding.h:62
DTDataIntegrityROSOffline::rosBxIdsPerFED
std::map< int, std::set< int > > rosBxIdsPerFED
Definition: DTDataIntegrityROSOffline.h:100
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
DTDataIntegrityROSOffline::neventsROS
int neventsROS
Definition: DTDataIntegrityROSOffline.h:88
DTDataIntegrityROSOffline::ros25Token
edm::EDGetTokenT< DTROS25Collection > ros25Token
Definition: DTDataIntegrityROSOffline.h:109
DTDataIntegrityROSOffline::getSCInfo
bool getSCInfo
Definition: DTDataIntegrityROSOffline.h:65
DTDataIntegrityROSOffline::nEventMonitor
MonitorElement * nEventMonitor
Definition: DTDataIntegrityROSOffline.h:70
DTDataIntegrityROSOffline::fedHistos
std::map< std::string, std::map< int, MonitorElement * > > fedHistos
Definition: DTDataIntegrityROSOffline.h:72
FEDNumbering::MAXDTFEDID
Definition: FEDNumbering.h:56
edm::LogWarning
Definition: MessageLogger.h:141
DTDataIntegrityROSOffline::hTTSSummary
MonitorElement * hTTSSummary
Definition: DTDataIntegrityROSOffline.h:85
edm::LogError
Definition: MessageLogger.h:183
FEDTrailer
Definition: FEDTrailer.h:14
DTDataIntegrityROSOffline::neventsFED
int neventsFED
Definition: DTDataIntegrityROSOffline.h:87
DTDataIntegrityROSOffline::fedBXIds
std::set< int > fedBXIds
Definition: DTDataIntegrityROSOffline.h:101
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
DTROChainCoding::setROB
void setROB(const int &ID)
Definition: DTROChainCoding.h:52
DTDataIntegrityROSOffline::summaryHistos
std::map< std::string, std::map< int, MonitorElement * > > summaryHistos
Definition: DTDataIntegrityROSOffline.h:74
FEDNumbering::MINDTFEDID
Definition: FEDNumbering.h:55
DTDataIntegrityROSOffline::hCorruptionSummary
MonitorElement * hCorruptionSummary
Definition: DTDataIntegrityROSOffline.h:82
DTDDUSecondStatusWord
Definition: DTDDUWords.h:670
DTROChainCoding::getROS
int getROS() const
Definition: DTROChainCoding.h:60
DTROChainCoding::setROS
void setROS(const int &ID)
Definition: DTROChainCoding.h:51
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
DTROChainCoding
FIXEME:
Definition: DTROChainCoding.h:28
DTDataIntegrityROSOffline::eventErrorFlag
bool eventErrorFlag
Definition: DTDataIntegrityROSOffline.h:98
DTDataIntegrityROSOffline::FEDIDmin
int FEDIDmin
Definition: DTDataIntegrityROSOffline.h:93
DTDDUData
Definition: DTControlData.h:104
DTDataIntegrityROSOffline::rosL1AIdsPerFED
std::map< int, std::set< int > > rosL1AIdsPerFED
Definition: DTDataIntegrityROSOffline.h:102
DTDataIntegrityROSOffline::hFEDNonFatal
MonitorElement * hFEDNonFatal
Definition: DTDataIntegrityROSOffline.h:81
DTDataIntegrityROSOffline::bookHistosROS25
void bookHistosROS25(DQMStore::IBooker &, DTROChainCoding code)
Definition: DTDataIntegrityROSOffline.cc:305
DTDDUData::getDDUHeader
const FEDHeader & getDDUHeader() const
Getters.
Definition: DTControlData.h:126
DTROBHeaderWord::bunchID
int bunchID() const
Definition: DTDDUWords.h:355
ewkTauDQM_cfi.channels
channels
Definition: ewkTauDQM_cfi.py:14
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
RecoTauValidation_cfi.header
header
Definition: RecoTauValidation_cfi.py:292
genParticles_cff.map
map
Definition: genParticles_cff.py:11
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
DTDataIntegrityROSOffline::processFED
void processFED(DTDDUData &dduData, const std::vector< DTROS25Data > &rosData, int dduID)
Definition: DTDataIntegrityROSOffline.cc:543
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
FEDHeader
Definition: FEDHeader.h:14
DTDataIntegrityROSOffline::dduToken
edm::EDGetTokenT< DTDDUCollection > dduToken
Definition: DTDataIntegrityROSOffline.h:107
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
edm::InputTag
Definition: InputTag.h:15
DTROChainCoding::getDDUID
int getDDUID() const
Definition: DTROChainCoding.h:59
DTDataIntegrityROSOffline::channelsInCEROS
void channelsInCEROS(int cerosId, int chMask, std::vector< int > &channels)
Definition: DTDataIntegrityROSOffline.cc:693
DTDataIntegrityROSOffline::FEDIDmax
int FEDIDmax
Definition: DTDataIntegrityROSOffline.h:94
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
FEDTrailer::fragmentLength
uint32_t fragmentLength() const
The length of the event fragment counted in 64-bit words including header and trailer.
Definition: FEDTrailer.cc:13
DTDataIntegrityROSOffline::nevents
int nevents
Definition: DTDataIntegrityROSOffline.h:67