CMS 3D CMS Logo

DCCTCCBlock.cc
Go to the documentation of this file.
1 /*--------------------------------------------------------------*/
2 /* DCC TCC BLOCK CLASS */
3 /* */
4 /* Author : N.Almeida (LIP) Date : 30/05/2005 */
5 /*--------------------------------------------------------------*/
6 
7 #include "DCCTCCBlock.h"
8 
9 /*-------------------------------------------------*/
10 /* DCCTBTCCBlock::DCCTBTCCBlock */
11 /* class constructor */
12 /*-------------------------------------------------*/
15  const uint32_t* buffer,
16  uint32_t numbBytes,
17  uint32_t wordsToEnd,
18  uint32_t wordEventOffset,
19  uint32_t expectedId)
20  : DCCTBBlockPrototype(parser, "TCC", buffer, numbBytes, wordsToEnd, wordEventOffset),
21  dccBlock_(dccBlock),
22  expectedId_(expectedId) {
23  //Reset error counters
24  errors_["TCC::HEADER"] = 0;
25  errors_["TCC::BLOCKID"] = 0;
26 
27  //Get data fields from the mapper and retrieve data
28  if (parser_->numbTTs() == 68) {
30  } else if (parser_->numbTTs() == 32) {
32  } else if (parser_->numbTTs() == 16) {
34  }
35 
36  parseData();
37 
38  // check internal data
39  if (parser_->debug())
40  dataCheck();
41 }
42 
43 /*---------------------------------------------------*/
44 /* DCCTBTCCBlock::dataCheck */
45 /* check data with data fields */
46 /*---------------------------------------------------*/
48  std::pair<bool, std::string> res; //check result
49  std::string checkErrors(""); //error string
50 
51  //check BX(LOCAL) field (1st word bit 16)
52  res = checkDataField("BX", BXMASK & (dccBlock_->getDataField("BX")));
53  if (!res.first) {
54  checkErrors += res.second;
55  (errors_["TCC::HEADER"])++;
56  }
57 
58  //check LV1(LOCAL) field (1st word bit 32)
59  res = checkDataField("LV1", L1MASK & (dccBlock_->getDataField("LV1")));
60  if (!res.first) {
61  checkErrors += res.second;
62  (errors_["TCC::HEADER"])++;
63  }
64 
65  //check TCC ID field (1st word bit 0)
66  res = checkDataField("TCC ID", expectedId_);
67  if (!res.first) {
68  checkErrors += res.second;
69  (errors_["TCC::HEADER"])++;
70  }
71 
72  if (!checkErrors.empty()) {
73  blockError_ = true;
74  errorString_ += "\n ======================================================================\n";
75  errorString_ += std::string(" ") + name_ + std::string("( ID = ") + parser_->getDecString((uint32_t)(expectedId_)) +
76  std::string(" ) errors : ");
77  errorString_ += checkErrors;
78  errorString_ += "\n ======================================================================";
79  }
80 }
81 
82 /*--------------------------------------------------*/
83 /* DCCTBTCCBlock::increment */
84 /* increment a TCC block */
85 /*--------------------------------------------------*/
86 
87 void DCCTBTCCBlock::increment(uint32_t numb) {
88  //if no debug is required increments the number of blocks
89  //otherwise checks if block id is really B'011'=3
90  if (!parser_->debug()) {
92  } else {
93  for (uint32_t counter = 0; counter < numb; counter++, dataP_++, wordCounter_++) {
94  uint32_t blockID = (*dataP_) >> BPOSITION_BLOCKID;
95  if (blockID != BLOCKID) {
96  (errors_["TCC::BLOCKID"])++;
97  //errorString_ += std::string("\n") + parser_->index(nunb)+(" blockId has value ") + parser_->getDecString(blockID);
98  //errorString += std::string(", while ")+parser_->getDecString(BLOCKID)+std::string(" is expected");
99  }
100  }
101  }
102 }
103 
104 std::vector<std::pair<int, bool> > DCCTBTCCBlock::triggerSamples() {
105  std::vector<std::pair<int, bool> > data;
106 
107  for (unsigned int i = 1; i <= parser_->numbTTs(); i++) {
109  int tpgValue = getDataField(name);
110  std::pair<int, bool> tpg(tpgValue & ETMASK, bool(tpgValue >> BPOSITION_FGVB));
111  data.push_back(tpg);
112  }
113 
114  return data;
115 }
116 
117 std::vector<int> DCCTBTCCBlock::triggerFlags() {
118  std::vector<int> data;
119 
120  for (unsigned int i = 1; i <= parser_->numbTTs(); i++) {
122 
123  data.push_back(getDataField(name));
124  }
125 
126  return data;
127 }
DCCTBTCCBlock::BPOSITION_BLOCKID
Definition: DCCTCCBlock.h:62
counter
Definition: counter.py:1
DCCTBBlockPrototype::mapperFields_
std::set< DCCTBDataField *, DCCTBDataFieldComparator > * mapperFields_
Definition: DCCBlockPrototype.h:86
mps_fire.i
i
Definition: mps_fire.py:428
DCCTBEventBlock
Definition: DCCEventBlock.h:16
DCCTBDataMapper::tcc16Fields
std::set< DCCTBDataField *, DCCTBDataFieldComparator > * tcc16Fields()
Definition: DCCDataMapper.h:108
writedatasetfile.parser
parser
Definition: writedatasetfile.py:7
DCCTBTCCBlock::increment
void increment(uint32_t numb)
Definition: DCCTCCBlock.cc:87
DCCTBBlockPrototype::wordCounter_
uint32_t wordCounter_
Definition: DCCBlockPrototype.h:70
DCCTBBlockPrototype::checkDataField
virtual std::pair< bool, std::string > checkDataField(std::string name, uint32_t data)
Definition: DCCBlockPrototype.cc:173
DCCTBDataParser::debug
bool debug()
Definition: DCCDataParser.h:194
DCCTBDataParser::getDecString
std::string getDecString(uint32_t data)
Definition: DCCDataParser.cc:290
edmScanValgrind.buffer
buffer
Definition: edmScanValgrind.py:171
DCCTBBlockPrototype::errors_
std::map< std::string, uint32_t > errors_
Definition: DCCBlockPrototype.h:84
DCCTBDataMapper::tcc68Fields
std::set< DCCTBDataField *, DCCTBDataFieldComparator > * tcc68Fields()
Definition: DCCDataMapper.h:106
DCCTBBlockPrototype::parser_
DCCTBDataParser * parser_
Definition: DCCBlockPrototype.h:81
DCCTBTCCBlock::BLOCKID
Definition: DCCTCCBlock.h:63
DCCTBBlockPrototype::increment
virtual void increment(uint32_t numb, std::string msg="")
Definition: DCCBlockPrototype.cc:113
DCCTBTCCBlock::expectedId_
uint32_t expectedId_
Definition: DCCTCCBlock.h:69
DCCTBTCCBlock::L1MASK
Definition: DCCTCCBlock.h:61
DCCTBBlockPrototype::name
std::string name()
Definition: DCCBlockPrototype.h:46
DCCTBTCCBlock::ETMASK
Definition: DCCTCCBlock.h:65
DCCTBBlockPrototype::getDataField
virtual uint32_t getDataField(std::string name)
Definition: DCCBlockPrototype.cc:194
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
DCCTBTCCBlock::triggerSamples
std::vector< std::pair< int, bool > > triggerSamples()
Definition: DCCTCCBlock.cc:104
DCCTBTCCBlock::DCCTBTCCBlock
DCCTBTCCBlock(DCCTBEventBlock *dccBlock, DCCTBDataParser *parser, const uint32_t *buffer, uint32_t numbBytes, uint32_t wordsToEnd, uint32_t wordEventOffset, uint32_t expectedId)
Definition: DCCTCCBlock.cc:13
DCCTBBlockPrototype::parseData
virtual void parseData()
Definition: DCCBlockPrototype.cc:38
DCCTBTCCBlock::dccBlock_
DCCTBEventBlock * dccBlock_
Definition: DCCTCCBlock.h:68
DCCTCCBlock.h
DCCTBTCCBlock::BXMASK
Definition: DCCTCCBlock.h:60
DCCTBBlockPrototype::blockError_
bool blockError_
Definition: DCCBlockPrototype.h:74
DCCTBDataParser::numbTTs
uint32_t numbTTs()
Definition: DCCDataParser.h:177
DCCTBTCCBlock::dataCheck
void dataCheck()
Definition: DCCTCCBlock.cc:47
res
Definition: Electron.h:6
DCCTBBlockPrototype::errorString_
std::string errorString_
Definition: DCCBlockPrototype.h:77
DCCTBDataMapper::tcc32Fields
std::set< DCCTBDataField *, DCCTBDataFieldComparator > * tcc32Fields()
Definition: DCCDataMapper.h:107
DCCTBBlockPrototype::dataP_
const uint32_t * dataP_
Definition: DCCBlockPrototype.h:66
DCCTBDataParser::mapper
DCCTBDataMapper * mapper()
Definition: DCCDataParser.h:172
DCCTBDataParser
Definition: DCCDataParser.h:25
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
DCCTBBlockPrototype::name_
std::string name_
Definition: DCCBlockPrototype.h:76
DCCTBTCCBlock::triggerFlags
std::vector< int > triggerFlags()
Definition: DCCTCCBlock.cc:117
DCCTBBlockPrototype
Definition: DCCBlockPrototype.h:21
DCCTBTCCBlock::BPOSITION_FGVB
Definition: DCCTCCBlock.h:64