Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#include "Geometry/HGCalCommonData/interface/HGCalProperty.h"
#include "Geometry/HGCalCommonData/interface/HGCalWaferIndex.h"

int32_t HGCalWaferIndex::waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old) {
  int32_t id(0);
  if (old) {
    id |= (((waferU & HGCalProperty::kHGCalWaferCopyMask) << HGCalProperty::kHGCalWaferCopyOffset) |
           ((layer & HGCalProperty::kHGCalLayerMask) << HGCalProperty::kHGCalLayerOffset) |
           HGCalProperty::kHGCalLayerOldMask);
  } else {
    int waferUabs(std::abs(waferU)), waferVabs(std::abs(waferV));
    int waferUsign = (waferU >= 0) ? 0 : 1;
    int waferVsign = (waferV >= 0) ? 0 : 1;
    id |= (((waferUabs & HGCalProperty::kHGCalWaferUMask) << HGCalProperty::kHGCalWaferUOffset) |
           ((waferUsign & HGCalProperty::kHGCalWaferUSignMask) << HGCalProperty::kHGCalWaferUSignOffset) |
           ((waferVabs & HGCalProperty::kHGCalWaferVMask) << HGCalProperty::kHGCalWaferVOffset) |
           ((waferVsign & HGCalProperty::kHGCalWaferVSignMask) << HGCalProperty::kHGCalWaferVSignOffset) |
           ((layer & HGCalProperty::kHGCalLayerMask) << HGCalProperty::kHGCalLayerOffset));
  }
  return id;
}

int32_t HGCalWaferIndex::waferLayer(const int32_t id) {
  return (id >> HGCalProperty::kHGCalLayerOffset) & HGCalProperty::kHGCalLayerMask;
}

int32_t HGCalWaferIndex::waferU(const int32_t id) {
  int32_t iu = (id >> HGCalProperty::kHGCalWaferUOffset) & HGCalProperty::kHGCalWaferUMask;
  return (((id >> HGCalProperty::kHGCalWaferUSignOffset) & HGCalProperty::kHGCalWaferUSignMask) ? -iu : iu);
}

int32_t HGCalWaferIndex::waferV(const int32_t id) {
  int32_t iv = (id >> HGCalProperty::kHGCalWaferVOffset) & HGCalProperty::kHGCalWaferVMask;
  return (((id >> HGCalProperty::kHGCalWaferVSignOffset) & HGCalProperty::kHGCalWaferVSignMask) ? -iv : iv);
}

int32_t HGCalWaferIndex::waferCopy(const int32_t id) {
  return (id >> HGCalProperty::kHGCalWaferCopyOffset) & HGCalProperty::kHGCalWaferCopyMask;
}

bool HGCalWaferIndex::waferFormat(const int32_t id) { return ((id & HGCalProperty::kHGCalLayerOldMask) == 0); }