CMS 3D CMS Logo

HGCalWaferIndex.cc
Go to the documentation of this file.
2 
3 const int kHGCalWaferUOffset = 0;
4 const int kHGCalWaferUMask = 0x1F;
5 const int kHGCalWaferUSignOffset = 5;
6 const int kHGCalWaferUSignMask = 0x1;
7 const int kHGCalWaferVOffset = 6;
8 const int kHGCalWaferVMask = 0x1F;
9 const int kHGCalWaferVSignOffset = 11;
10 const int kHGCalWaferVSignMask = 0x1;
11 const int kHGCalLayerOffset = 18;
12 const int kHGCalLayerMask = 0x1F;
13 const int kHGCalWaferCopyOffset = 0;
14 const int kHGCalWaferCopyMask = 0x7FFFF;
15 const int kHGCalLayerOldMask = 0x1000000;
16 
17 int32_t HGCalWaferIndex::waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old) {
18  int32_t id(0);
19  if (old) {
20  id |= (((waferU & kHGCalWaferCopyMask) << kHGCalWaferCopyOffset) |
22  } else {
23  int waferUabs(std::abs(waferU)), waferVabs(std::abs(waferV));
24  int waferUsign = (waferU >= 0) ? 0 : 1;
25  int waferVsign = (waferV >= 0) ? 0 : 1;
26  id |= (((waferUabs & kHGCalWaferUMask) << kHGCalWaferUOffset) |
27  ((waferUsign & kHGCalWaferUSignMask) << kHGCalWaferUSignOffset) |
28  ((waferVabs & kHGCalWaferVMask) << kHGCalWaferVOffset) |
29  ((waferVsign & kHGCalWaferVSignMask) << kHGCalWaferVSignOffset) |
30  ((layer & kHGCalLayerMask) << kHGCalLayerOffset));
31  }
32  return id;
33 }
34 
35 int HGCalWaferIndex::waferLayer(const int32_t id) { return (id >> kHGCalLayerOffset) & kHGCalLayerMask; }
36 
37 int HGCalWaferIndex::waferU(const int32_t id) {
38  int32_t iu = (id >> kHGCalWaferUOffset) & kHGCalWaferUMask;
39  return (((id >> kHGCalWaferUSignOffset) & kHGCalWaferUSignMask) ? -iu : iu);
40 }
41 
42 int HGCalWaferIndex::waferV(const int32_t id) {
43  int32_t iv = (id >> kHGCalWaferVOffset) & kHGCalWaferVMask;
44  return (((id >> kHGCalWaferVSignOffset) & kHGCalWaferVSignMask) ? -iv : iv);
45 }
46 
47 int HGCalWaferIndex::waferCopy(const int32_t id) { return (id >> kHGCalWaferCopyOffset) & kHGCalWaferCopyMask; }
48 
49 bool HGCalWaferIndex::waferFormat(const int32_t id) { return ((id & kHGCalLayerOldMask) == 0); }
const int kHGCalWaferVMask
const int kHGCalWaferUSignMask
const int kHGCalWaferVSignOffset
static int32_t waferV(const int32_t index)
const int kHGCalWaferUMask
static int32_t waferCopy(const int32_t index)
const int kHGCalLayerMask
const int kHGCalLayerOldMask
const int kHGCalWaferCopyOffset
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static int32_t waferU(const int32_t index)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
const int kHGCalWaferVSignMask
static int32_t waferLayer(const int32_t index)
const int kHGCalWaferCopyMask
const int kHGCalLayerOffset
const int kHGCalWaferUOffset
static bool waferFormat(const int32_t index)
const int kHGCalWaferUSignOffset
const int kHGCalWaferVOffset