File indexing completed on 2024-05-04 04:04:19
0001 #include "DataFormats/HGCalDigi/interface/HGCalElectronicsId.h"
0002
0003
0004 HGCalElectronicsId::HGCalElectronicsId(
0005 bool zside, uint16_t fedid, uint8_t captureblock, uint8_t econdidx, uint8_t econderx, uint8_t halfrocch) {
0006 value_ = ((zside & kZsideMask) << kZsideShift) | ((fedid & kLocalFEDIDMask) << kLocalFEDIDShift) |
0007 ((captureblock & kCaptureBlockMask) << kCaptureBlockShift) | ((econdidx & kECONDIdxMask) << kECONDIdxShift) |
0008 ((econderx & kECONDeRxMask) << kECONDeRxShift) | ((halfrocch & kHalfROCChannelMask) << kHalfROCChannelShift);
0009 }
0010
0011
0012 uint16_t HGCalElectronicsId::localFEDId() const { return (value_ >> kLocalFEDIDShift) & kLocalFEDIDMask; }
0013
0014
0015 bool HGCalElectronicsId::zSide() const { return (value_ >> kZsideShift) & kZsideMask; }
0016
0017
0018 bool HGCalElectronicsId::isCM() const {
0019 uint8_t halfrocch = halfrocChannel();
0020 return (halfrocch == 37) || (halfrocch == 38);
0021 }
0022
0023
0024 uint8_t HGCalElectronicsId::captureBlock() const { return (value_ >> kCaptureBlockShift) & kCaptureBlockMask; }
0025
0026
0027 uint8_t HGCalElectronicsId::econdIdx() const { return (value_ >> kECONDIdxShift) & kECONDIdxMask; }
0028
0029
0030 uint8_t HGCalElectronicsId::econdeRx() const { return (value_ >> kECONDeRxShift) & kECONDeRxMask; }
0031
0032
0033 uint8_t HGCalElectronicsId::halfrocChannel() const { return (value_ >> kHalfROCChannelShift) & kHalfROCChannelMask; }
0034
0035
0036 uint8_t HGCalElectronicsId::cmWord() const { return halfrocChannel() - 37; }
0037
0038
0039 uint8_t HGCalElectronicsId::rocChannel() const {
0040 if (isCM())
0041 return cmWord() + 2 * (econdeRx() % 2);
0042 return halfrocChannel() + 37 * (econdeRx() % 2);
0043 }