Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }