CMS 3D CMS Logo

ETLSample.h
Go to the documentation of this file.
1 #ifndef DIGIFTL_ETLSAMPLE_H
2 #define DIGIFTL_ETLSAMPLE_H
3 
4 #include <iostream>
5 #include <ostream>
6 #include <cstdint>
7 
13 class ETLSample {
14 public:
16  kThreshMask = 0x1,
17  kModeMask = 0x1,
18  kColumnMask = 0x1f,
19  kRowMask = 0x3f,
20  kToAMask = 0x7ff,
21  kDataMask = 0xff
22  };
25  kModeShift = 30,
27  kRowShift = 19,
28  kToAShift = 8,
30  };
31 
35  ETLSample() : value_(0) {}
36  ETLSample(uint32_t value) : value_(value) {}
38 
42  void setThreshold(bool thr) { setWord(thr, kThreshMask, kThreshShift); }
45  void setRow(uint8_t row) { setWord(row, kRowMask, kRowShift); }
46  void setToA(uint16_t toa) { setWord(toa, kToAMask, kToAShift); }
47  void setData(uint16_t data) { setWord(data, kDataMask, kDataShift); }
48  void set(bool thr, bool mode, uint16_t toa, uint16_t data, uint8_t row, uint8_t col) {
49  value_ = (((uint32_t)thr & kThreshMask) << kThreshShift | ((uint32_t)mode & kModeMask) << kModeShift |
50  ((uint32_t)col & kColumnMask) << kColumnShift | ((uint32_t)row & kRowMask) << kRowShift |
51  ((uint32_t)toa & kToAMask) << kToAShift | ((uint32_t)data & kDataMask) << kDataShift);
52  }
53  void print(std::ostream& out = std::cout) {
54  out << "(row,col) : (" << row() << ',' << column() << ") "
55  << "THR: " << threshold() << " Mode: " << mode() << " ToA: " << toa() << " Data: " << data() << " Raw=0x"
56  << std::hex << raw() << std::dec << std::endl;
57  }
58 
62  uint32_t raw() const { return value_; }
63  bool threshold() const { return ((value_ >> kThreshShift) & kThreshMask); }
64  bool mode() const { return ((value_ >> kModeShift) & kModeMask); }
65  uint32_t column() const { return ((value_ >> kColumnShift) & kColumnMask); }
66  uint32_t row() const { return ((value_ >> kRowShift) & kRowMask); }
67  uint32_t toa() const { return ((value_ >> kToAShift) & kToAMask); }
68  uint32_t data() const { return ((value_ >> kDataShift) & kDataMask); }
69  uint32_t operator()() { return value_; }
70 
71 private:
75  void setWord(uint32_t word, uint32_t mask, uint32_t pos) {
76  //clear required bits
77  value_ &= ~(mask << pos);
78  //now set the new value
79  value_ |= ((word & mask) << pos);
80  }
81 
82  // a 32-bit word
83  uint32_t value_;
84 };
85 
86 #endif
ETLSample::kThreshMask
Definition: ETLSample.h:16
ETLSample::kModeShift
Definition: ETLSample.h:25
ETLSample::kDataMask
Definition: ETLSample.h:21
ETLSample::setMode
void setMode(bool mode)
Definition: ETLSample.h:43
cuy.col
col
Definition: cuy.py:1010
ETLSample::setToA
void setToA(uint16_t toa)
Definition: ETLSample.h:46
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pos
Definition: PixelAliasList.h:18
ETLSample::kColumnShift
Definition: ETLSample.h:26
ETLSample::toa
uint32_t toa() const
Definition: ETLSample.h:67
ETLSample::set
void set(bool thr, bool mode, uint16_t toa, uint16_t data, uint8_t row, uint8_t col)
Definition: ETLSample.h:48
ETLSample::value_
uint32_t value_
Definition: ETLSample.h:83
ETLSample::setData
void setData(uint16_t data)
Definition: ETLSample.h:47
EcalTangentSkim_cfg.o
o
Definition: EcalTangentSkim_cfg.py:36
ETLSample::threshold
bool threshold() const
Definition: ETLSample.h:63
word
uint64_t word
Definition: CTPPSTotemDataFormatter.cc:29
ETLSample::kThreshShift
Definition: ETLSample.h:24
ETLSample::kToAMask
Definition: ETLSample.h:20
ETLSample::ETLSampleMasks
ETLSampleMasks
Definition: ETLSample.h:15
ETLSample
wrapper for a data word
Definition: ETLSample.h:13
ETLSample::ETLSampleShifts
ETLSampleShifts
Definition: ETLSample.h:23
ETLSample::ETLSample
ETLSample(uint32_t value)
Definition: ETLSample.h:36
ETLSample::kDataShift
Definition: ETLSample.h:29
ETLSample::row
uint32_t row() const
Definition: ETLSample.h:66
ETLSample::mode
bool mode() const
Definition: ETLSample.h:64
ETLSample::column
uint32_t column() const
Definition: ETLSample.h:65
ETLSample::setRow
void setRow(uint8_t row)
Definition: ETLSample.h:45
value
Definition: value.py:1
ETLSample::kModeMask
Definition: ETLSample.h:17
ETLSample::operator()
uint32_t operator()()
Definition: ETLSample.h:69
ETLSample::ETLSample
ETLSample()
CTOR.
Definition: ETLSample.h:35
ETLSample::setThreshold
void setThreshold(bool thr)
setters
Definition: ETLSample.h:42
ETLSample::kColumnMask
Definition: ETLSample.h:18
ETLSample::kRowShift
Definition: ETLSample.h:27
ETLSample::data
uint32_t data() const
Definition: ETLSample.h:68
ETLSample::setColumn
void setColumn(uint8_t col)
Definition: ETLSample.h:44
ETLSample::kToAShift
Definition: ETLSample.h:28
ETLSample::print
void print(std::ostream &out=std::cout)
Definition: ETLSample.h:53
ETLSample::raw
uint32_t raw() const
getters
Definition: ETLSample.h:62
ETLSample::setWord
void setWord(uint32_t word, uint32_t mask, uint32_t pos)
wrapper to reset words at a given position
Definition: ETLSample.h:75
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
ETLSample::kRowMask
Definition: ETLSample.h:19
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
ETLSample::ETLSample
ETLSample(const ETLSample &o)
Definition: ETLSample.h:37