CMS 3D CMS Logo

PixelDigi.h
Go to the documentation of this file.
1 #ifndef TRACKINGOBJECTS_PIXELDIGI_H
2 #define TRACKINGOBJECTS_PIXELDIGI_H
3 
4 // 25/06/06 - get rid of time(), change adc() from int to undigned short. d.k.
5 
6 #include <utility>
7 #include <algorithm>
9 
14 class PixelDigi {
15 public:
16  typedef unsigned int PackedDigiType;
17  typedef unsigned int ChannelType;
18 
19  explicit PixelDigi(PackedDigiType packed_value) : theData(packed_value) {}
20 
21  PixelDigi(int row, int col, int adc) { init(row, col, adc); }
22  PixelDigi(int row, int col, int adc, int flag) { init(row, col, adc, flag); }
23 
24  PixelDigi(int chan, int adc) {
25  std::pair<int, int> rc = channelToPixel(chan);
26  init(rc.first, rc.second, adc);
27  }
28 
29  PixelDigi() : theData(0) {}
30 
31  void init(int row, int col, int adc, int flag = 0) {
32 #ifdef FIXME_DEBUG
33  // This check is for the maximal row or col number that can be packed
34  // in a PixelDigi. The actual number of rows or columns in a detector
35  // may be smaller!
36  // it is done much better in Raw2Digi...
37  if (row < 0 || row > PixelChannelIdentifier::thePacking.max_row || col < 0 ||
39  std::cout << "PixelDigi constructor: row or column out packing range " << row << ' ' << col << std::endl;
40  }
41 #endif
42 
43  // Set adc to max_adc in case of overflow
45  : std::max(adc, 0);
46 
48  (col << PixelChannelIdentifier::thePacking.column_shift) |
51  }
52 
53  // Access to digi information
54  int row() const {
56  }
57  int column() const {
58  return (theData >> PixelChannelIdentifier::thePacking.column_shift) &
60  }
61  int flag() const {
63  }
64  unsigned short adc() const {
66  }
67  PackedDigiType packedData() const { return theData; }
68 
69  static std::pair<int, int> channelToPixel(int ch) {
72  return std::pair<int, int>(row, col);
73  }
74 
75  static int pixelToChannel(int row, int col) { return (row << PixelChannelIdentifier::thePacking.column_width) | col; }
76 
78 
79 private:
81 };
82 
83 // Comparison operators
84 
85 //inline bool operator<( const PixelDigi& one, const PixelDigi& other) {
86 // return one.channel() < other.channel();
87 //}
88 
89 inline bool operator<(const PixelDigi& one, const PixelDigi& other) {
90  return (one.packedData() & PixelChannelIdentifier::thePacking.rowcol_mask) <
92 }
93 
94 #include <iostream>
95 inline std::ostream& operator<<(std::ostream& o, const PixelDigi& digi) {
96  return o << " " << digi.channel() << " " << digi.adc();
97 }
98 
99 #endif
pixelchanelidentifierimpl::Packing::rowcol_mask
const PackedDigiType rowcol_mask
Definition: PixelChannelIdentifier.h:46
PixelDigi::packedData
PackedDigiType packedData() const
Definition: PixelDigi.h:67
SiPixelPI::one
Definition: SiPixelPayloadInspectorHelper.h:39
operator<<
std::ostream & operator<<(std::ostream &o, const PixelDigi &digi)
Definition: PixelDigi.h:95
PixelDigi::PixelDigi
PixelDigi(int row, int col, int adc)
Definition: PixelDigi.h:21
pixelchanelidentifierimpl::Packing::row_mask
const PackedDigiType row_mask
Definition: PixelChannelIdentifier.h:42
cuy.col
col
Definition: cuy.py:1009
gather_cfg.cout
cout
Definition: gather_cfg.py:144
PixelChannelIdentifier::thePacking
constexpr static Packing thePacking
Definition: PixelChannelIdentifier.h:72
PixelDigi
Definition: PixelDigi.h:14
pixelchanelidentifierimpl::Packing::max_adc
const int max_adc
Definition: PixelChannelIdentifier.h:50
PixelChannelIdentifier.h
PixelDigi::flag
int flag() const
Definition: PixelDigi.h:61
PixelDigi::channel
int channel() const
Definition: PixelDigi.h:77
PixelDigi::PixelDigi
PixelDigi(int row, int col, int adc, int flag)
Definition: PixelDigi.h:22
PixelDigi::PixelDigi
PixelDigi()
Definition: PixelDigi.h:29
EcalTangentSkim_cfg.o
o
Definition: EcalTangentSkim_cfg.py:42
operator<
bool operator<(const PixelDigi &one, const PixelDigi &other)
Definition: PixelDigi.h:89
PixelDigi::PixelDigi
PixelDigi(int chan, int adc)
Definition: PixelDigi.h:24
PixelChannelIdentifier::pixelToChannel
static int pixelToChannel(int row, int col)
Definition: PixelChannelIdentifier.h:65
PixelDigi::theData
PackedDigiType theData
Definition: PixelDigi.h:80
PixelDigi::PixelDigi
PixelDigi(PackedDigiType packed_value)
Definition: PixelDigi.h:19
trackingPlots.other
other
Definition: trackingPlots.py:1464
PixelDigi::pixelToChannel
static int pixelToChannel(int row, int col)
Definition: PixelDigi.h:75
PixelDigi::init
void init(int row, int col, int adc, int flag=0)
Definition: PixelDigi.h:31
pixelchanelidentifierimpl::Packing::adc_shift
const int adc_shift
Definition: PixelChannelIdentifier.h:40
PixelDigi::column
int column() const
Definition: PixelDigi.h:57
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
pixelchanelidentifierimpl::Packing::column_width
const int column_width
Definition: PixelChannelIdentifier.h:34
pixelchanelidentifierimpl::Packing::row_shift
const int row_shift
Definition: PixelChannelIdentifier.h:37
PixelDigi::row
int row() const
Definition: PixelDigi.h:54
officialStyle.chan
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi....
Definition: officialStyle.py:106
PixelDigi::adc
unsigned short adc() const
Definition: PixelDigi.h:64
PixelDigi::ChannelType
unsigned int ChannelType
Definition: PixelDigi.h:17
pixelchanelidentifierimpl::Packing::column_mask
const PackedDigiType column_mask
Definition: PixelChannelIdentifier.h:43
PixelDigi::PackedDigiType
unsigned int PackedDigiType
Definition: PixelDigi.h:16
pixelchanelidentifierimpl::Packing::adc_mask
const PackedDigiType adc_mask
Definition: PixelChannelIdentifier.h:45
PixelDigi::channelToPixel
static std::pair< int, int > channelToPixel(int ch)
Definition: PixelDigi.h:69
pixelchanelidentifierimpl::Packing::flag_mask
const PackedDigiType flag_mask
Definition: PixelChannelIdentifier.h:44