CMS 3D CMS Logo

CSCWireDigi.cc
Go to the documentation of this file.
1 
9 #include <iostream>
10 #include <cstdint>
11 
13 
14 CSCWireDigi::CSCWireDigi(int wire, unsigned int tbinb) {
16  wire_ = wire & 0x0000FFFF;
17  tbinb_ = tbinb;
19  wireBX_ = (wire >> 16) & 0x0000FFFF;
21  wireBXandWires_ = wire;
22 }
23 
26  wire_ = 0;
27  tbinb_ = 0;
28  wireBX_ = 0;
29  wireBXandWires_ = 0;
30 }
31 
36  uint32_t tbit = 1;
37  int tbin = -1;
38  for (int i = 0; i < 32; i++) {
39  if (tbit & tbinb_)
40  tbin = i;
41  if (tbin > -1)
42  break;
43  tbit = tbit << 1;
44  }
45  return tbin;
46 }
48 std::vector<int> CSCWireDigi::getTimeBinsOn() const {
49  std::vector<int> tbins;
50  uint32_t tbit = tbinb_;
51  uint32_t one = 1;
52  for (int i = 0; i < 32; i++) {
53  if (tbit & one)
54  tbins.push_back(i);
55  tbit = tbit >> 1;
56  if (tbit == 0)
57  break;
58  }
59  return tbins;
60 }
61 
63 
64 void CSCWireDigi::print() const {
65  std::ostringstream ost;
66  ost << "CSCWireDigi | wg " << getWireGroup() << " | "
67  << " BX # " << getWireGroupBX() << " | "
68  << " BX + Wire " << std::hex << getBXandWireGroup() << " | " << std::dec << " First Time Bin On " << getTimeBin()
69  << " | Time Bins On ";
70  std::vector<int> tbins = getTimeBinsOn();
71  std::copy(tbins.begin(), tbins.end(), std::ostream_iterator<int>(ost, " "));
72  edm::LogVerbatim("CSCDigi") << ost.str();
73 }
74 
75 std::ostream& operator<<(std::ostream& o, const CSCWireDigi& digi) {
76  o << " CSCWireDigi wg: " << digi.getWireGroup() << ", First Time Bin On: " << digi.getTimeBin() << ", Time Bins On: ";
77  std::vector<int> tbins = digi.getTimeBinsOn();
78  std::copy(tbins.begin(), tbins.end(), std::ostream_iterator<int>(o, " "));
79  return o;
80 }
Log< level::Info, true > LogVerbatim
CSCWireDigi()
wiregroup#, tbin bit word
Definition: CSCWireDigi.cc:25
void print() const
Print content of digi.
Definition: CSCWireDigi.cc:64
int getWireGroupBX() const
return BX assigned for the wire group (16 upper bits from the wire group number)
Definition: CSCWireDigi.h:24
int wireBXandWires_
BX in the wire digis (16 upper bits from the wire group number)
Definition: CSCWireDigi.h:47
int getTimeBin() const
return first tbin ON number
Definition: CSCWireDigi.cc:35
std::vector< int > getTimeBinsOn() const
return vector of time bins ON
Definition: CSCWireDigi.cc:48
std::ostream & operator<<(std::ostream &o, const CSCWireDigi &digi)
Definition: CSCWireDigi.cc:75
int getBXandWireGroup() const
Definition: CSCWireDigi.h:27
int getBeamCrossingTag() const
return tbin number, (obsolete, use getTimeBin() instead)
Definition: CSCWireDigi.cc:33
uint32_t tbinb_
Definition: CSCWireDigi.h:45
int getWireGroup() const
default
Definition: CSCWireDigi.h:22