File indexing completed on 2024-04-06 12:05:12
0001 #ifndef DataFormats_SiPixelDigi_interface_SiPixelDigiConstants
0002 #define DataFormats_SiPixelDigi_interface_SiPixelDigiConstants
0003
0004 #include "FWCore/Utilities/interface/typedefs.h"
0005 #include <cstdint>
0006
0007 using Word64 = cms_uint64_t;
0008 using Word32 = cms_uint32_t;
0009
0010 namespace sipixelconstants {
0011 constexpr cms_uint32_t dummyDetId = 0xffffffff;
0012
0013 constexpr uint32_t CRC_bits = 1;
0014 constexpr uint32_t DCOL_bits = 5;
0015 constexpr uint32_t PXID_bits = 8;
0016 constexpr uint32_t ADC_bits = 8;
0017 constexpr uint32_t OMIT_ERR_bits = 1;
0018
0019 constexpr uint32_t LINK_bits = 6;
0020 constexpr uint32_t ROC_bits = 5;
0021
0022 constexpr uint32_t CRC_shift = 2;
0023 constexpr uint32_t ADC_shift = 0;
0024 constexpr uint32_t PXID_shift = ADC_shift + ADC_bits;
0025 constexpr uint32_t DCOL_shift = PXID_shift + PXID_bits;
0026 constexpr uint32_t ROC_shift = DCOL_shift + DCOL_bits;
0027 constexpr uint32_t LINK_shift = ROC_shift + ROC_bits;
0028 constexpr uint32_t OMIT_ERR_shift = 20;
0029
0030 constexpr uint64_t CRC_mask = ~(~Word64(0) << CRC_bits);
0031 constexpr uint32_t ERROR_mask = ~(~Word32(0) << ROC_bits);
0032 constexpr uint32_t LINK_mask = ~(~Word32(0) << LINK_bits);
0033 constexpr uint32_t ROC_mask = ~(~Word32(0) << ROC_bits);
0034 constexpr uint32_t OMIT_ERR_mask = ~(~Word32(0) << OMIT_ERR_bits);
0035 constexpr uint32_t DCOL_mask = ~(~Word32(0) << DCOL_bits);
0036 constexpr uint32_t PXID_mask = ~(~Word32(0) << PXID_bits);
0037 constexpr uint32_t ADC_mask = ~(~Word32(0) << ADC_bits);
0038
0039
0040 inline namespace phase1layer1 {
0041 constexpr uint32_t COL_bits1_l1 = 6;
0042 constexpr uint32_t ROW_bits1_l1 = 7;
0043 constexpr uint32_t ROW_shift = ADC_shift + ADC_bits;
0044 constexpr uint32_t COL_shift = ROW_shift + ROW_bits1_l1;
0045 constexpr uint32_t COL_mask = ~(~Word32(0) << COL_bits1_l1);
0046 constexpr uint32_t ROW_mask = ~(~Word32(0) << ROW_bits1_l1);
0047 }
0048
0049
0050 inline namespace functions {
0051 inline constexpr uint32_t getLink(uint32_t ww) { return ((ww >> LINK_shift) & LINK_mask); }
0052 inline constexpr uint32_t getROC(uint32_t ww) { return ((ww >> ROC_shift) & ROC_mask); }
0053 inline constexpr uint32_t getADC(uint32_t ww) { return ((ww >> ADC_shift) & ADC_mask); }
0054 inline constexpr uint32_t getCol(uint32_t ww) { return ((ww >> COL_shift) & COL_mask); }
0055 inline constexpr uint32_t getRow(uint32_t ww) { return ((ww >> ROW_shift) & ROW_mask); }
0056 inline constexpr uint32_t getDCol(uint32_t ww) { return ((ww >> DCOL_shift) & DCOL_mask); }
0057 inline constexpr uint32_t getPxId(uint32_t ww) { return ((ww >> PXID_shift) & PXID_mask); }
0058 inline constexpr uint32_t removeADC(uint32_t ww) { return (ww & ~(ADC_mask << ADC_shift)); }
0059 }
0060 }
0061
0062 #endif