CMS 3D CMS Logo

RecordCD.cc
Go to the documentation of this file.
2 
3 #include <vector>
4 
5 using namespace rpcrawtodigi;
6 using namespace std;
7 
8 RecordCD::RecordCD(int lbInLink, int partitionNumber, int eod, int halfP, const std::vector<int>& packedStrips)
9  : DataRecord(0) {
10  theData = 0;
11 
12  theData |= (lbInLink << CHAMBER_SHIFT);
13 
14  theData |= (partitionNumber << PARTITION_NUMBER_SHIFT);
15 
16  theData |= (eod << EOD_SHIFT);
17 
18  theData |= (halfP << HALFP_SHIFT);
19 
20  int partitionData = 0;
21  for (vector<int>::const_iterator iv = packedStrips.begin(); iv != packedStrips.end(); iv++) {
22  int ibit = (partitionNumber) ? (*iv) % (partitionNumber * BITS_PER_PARTITION) : (*iv);
23  partitionData |= (1 << ibit);
24  }
25  theData |= (partitionData << PARTITION_DATA_SHIFT);
26 }
27 
28 int RecordCD::lbInLink() const { return (theData >> CHAMBER_SHIFT) & CHAMBER_MASK; }
29 
31 
32 int RecordCD::eod() const { return (theData >> EOD_SHIFT) & EOD_MASK; }
33 
34 int RecordCD::halfP() const { return (theData >> HALFP_SHIFT) & HALFP_MASK; }
35 
37 
38 std::vector<int> RecordCD::packedStrips() const {
39  int partitionNumber = this->partitionNumber();
40  int partitionData = this->partitionData();
41  std::vector<int> strips;
42  for (int ib = 0; ib < 8; ++ib) {
43  if ((partitionData >> ib) & 1)
44  strips.push_back(partitionNumber * BITS_PER_PARTITION + ib);
45  }
46  return strips;
47 }
48 
50  std::ostringstream str;
51  str << " DATA";
52  return str.str();
53 }
int eod() const
Definition: RecordCD.cc:32
int lbInLink() const
Definition: RecordCD.cc:28
static const int HALFP_SHIFT
Definition: RecordCD.h:20
static const int HALFP_MASK
Definition: RecordCD.h:19
static const int CHAMBER_SHIFT
Definition: RecordCD.h:26
static const int EOD_MASK
Definition: RecordCD.h:22
int partitionData() const
Definition: RecordCD.cc:36
std::string print() const
Definition: RecordCD.cc:49
static const int PARTITION_DATA_MASK
Definition: RecordCD.h:13
int halfP() const
Definition: RecordCD.cc:34
static const int CHAMBER_MASK
Definition: RecordCD.h:25
int partitionNumber() const
Definition: RecordCD.cc:30
static const int PARTITION_DATA_SHIFT
Definition: RecordCD.h:14
std::vector< int > packedStrips() const
Definition: RecordCD.cc:38
static const int PARTITION_NUMBER_SHIFT
Definition: RecordCD.h:17
static const int PARTITION_NUMBER_MASK
Definition: RecordCD.h:16
#define str(s)
static const int EOD_SHIFT
Definition: RecordCD.h:23
static const int BITS_PER_PARTITION
Definition: RecordCD.h:28
ib
Definition: cuy.py:662