CMS 3D CMS Logo

HLTDTROMonitorFilter.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author G. Cerminara - INFN Torino
5  */
6 
7 
16 #include "HLTDTROMonitorFilter.h"
17 
18 using namespace edm;
19 
20 
22 {
23  inputLabel = pset.getParameter<InputTag>("inputLabel");
24  inputToken = consumes<FEDRawDataCollection>(inputLabel);
25 }
26 
28 
29 void
32  desc.add<edm::InputTag>("inputLabel",edm::InputTag("source"));
33  descriptions.add("hltDTROMonitorFilter",desc);
34 }
35 
37  // get the raw data
39  event.getByToken(inputToken, rawdata);
40 
41  // Loop over the DT FEDs
42  int FEDIDmin = FEDNumbering::MINDTFEDID;
43  int FEDIDMax = FEDNumbering::MAXDTFEDID;
44 
45  // Definitions
46  const int wordSize_32 = 4;
47  const int wordSize_64 = 8;
48 
49  for (int dduID=FEDIDmin; dduID<=FEDIDMax; ++dduID) { // loop over all feds
50  const FEDRawData& feddata = rawdata->FEDData(dduID);
51  const int datasize = feddata.size();
52  if (datasize){ // check the FED payload
53  const unsigned int* index32 = reinterpret_cast<const unsigned int*>(feddata.data());
54  const int numberOf32Words = datasize/wordSize_32;
55 
56  const unsigned char* index8 = reinterpret_cast<const unsigned char*>(index32);
57 
58  // Check Status Words (1 x ROS)
59  for (int rosId = 0; rosId < 12; rosId++ ) {
60  int wordIndex8 = numberOf32Words*wordSize_32 - 3*wordSize_64 + rosId;
61  DTDDUFirstStatusWord statusWord(index8[wordIndex8]);
62  // check the error bit
63  if(statusWord.errorFromROS() != 0 || statusWord.eventTrailerLost() != 0) return true;
64  }
65  }
66  }
67 
68  // check the event error flag
69  return false;
70 }
71 
72 // declare this class as a framework plugin
T getParameter(std::string const &) const
HLTDTROMonitorFilter(const edm::ParameterSet &)
Constructor.
int errorFromROS() const
Definition: DTDDUWords.h:864
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
int eventTrailerLost() const
Definition: DTDDUWords.h:859
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
bool filter(edm::Event &event, const edm::EventSetup &setup) override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLT enums.
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
~HLTDTROMonitorFilter() override
Destructor.
Definition: event.py:1