CMS 3D CMS Logo

MTDChannelIdentifier.h
Go to the documentation of this file.
1 #ifndef DATAFORMATS_MTDCHANNELIDENTIFIER_H
2 #define DATAFORMATS_MTDCHANNELIDENTIFIER_H
3 
4 #include <utility>
6 
8 public:
9  static const MTDChannelIdentifier& GetInstance() {
10  static const MTDChannelIdentifier instance(6, 5, 12, 9);
11  return instance;
12  }
13 
14  typedef unsigned int PackedDigiType;
15  typedef unsigned int ChannelType;
16 
17  static std::pair<int, int> channelToPixel(int ch) {
18  int row = (ch >> GetInstance().column_width) & GetInstance().row_mask;
19  int col = ch & GetInstance().column_mask;
20  return std::pair<int, int>(row, col);
21  }
22 
23  static int pixelToChannel(int row, int col) { return (row << GetInstance().column_width) | col; }
24 
25 private:
26  MTDChannelIdentifier(unsigned int row_w, unsigned int column_w, unsigned int time_w, unsigned int adc_w)
27  : row_width(row_w),
28  column_width(column_w),
29  adc_width(adc_w),
30  row_shift(0),
31  column_shift(row_shift + row_w),
32  time_shift(column_shift + column_w),
33  adc_shift(time_shift + time_w),
34  row_mask(~(~0U << row_w)),
35  column_mask(~(~0U << column_w)),
36  time_mask(~(~0U << time_w)),
37  adc_mask(~(~0U << adc_w)),
38  rowcol_mask(~(~0U << (column_w + row_w))),
41  max_adc(adc_mask) {}
42 
43  ~MTDChannelIdentifier() = default;
44 
49 
50  const int row_width;
51  const int column_width;
52  const int adc_width;
53 
54  const int row_shift;
55  const int column_shift;
56  const int time_shift;
57  const int adc_shift;
58 
59  const PackedDigiType row_mask;
60  const PackedDigiType column_mask;
61  const PackedDigiType time_mask;
62  const PackedDigiType adc_mask;
63  const PackedDigiType rowcol_mask;
64 
65  const int max_row;
66  const int max_column;
67  const int max_adc;
68 };
69 
70 #endif
MTDChannelIdentifier & operator=(const MTDChannelIdentifier &)=delete
static PFTauRenderPlugin instance
static std::pair< int, int > channelToPixel(int ch)
MTDChannelIdentifier(unsigned int row_w, unsigned int column_w, unsigned int time_w, unsigned int adc_w)
const PackedDigiType time_mask
~MTDChannelIdentifier()=default
const PackedDigiType column_mask
static int pixelToChannel(int row, int col)
const PackedDigiType adc_mask
const PackedDigiType row_mask
const PackedDigiType rowcol_mask
col
Definition: cuy.py:1010
static const MTDChannelIdentifier & GetInstance()