File indexing completed on 2025-02-11 03:07:48
0001 #ifndef DataFormats_HGCalDigi_interface_HGCalECONDPacketInfoSoA_h
0002 #define DataFormats_HGCalDigi_interface_HGCalECONDPacketInfoSoA_h
0003
0004 #include <cstdint> // for uint8_t
0005
0006 #include <Eigen/Core>
0007
0008 #include "DataFormats/SoATemplate/interface/SoACommon.h"
0009 #include "DataFormats/SoATemplate/interface/SoALayout.h"
0010 #include "DataFormats/SoATemplate/interface/SoAView.h"
0011
0012 namespace hgcaldigi {
0013
0014
0015 using Matrix = Eigen ::Matrix<uint16_t, 12, 2>;
0016
0017 namespace ECONDFlag {
0018 constexpr uint8_t BITT_POS = 0, BITM_POS = 1, EBO_POS = 2, EBO_MASK = 0b11, HT_POS = 4, HT_MASK = 0b11,
0019 BITE_POS = 6, BITS_POS = 7;
0020 }
0021
0022
0023 inline bool truncatedFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITT_POS) & 0b1); }
0024 inline bool matchFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITM_POS) & 0b1); }
0025 inline uint8_t eboFlag(uint8_t econdFlag) {
0026 return ((econdFlag >> hgcaldigi::ECONDFlag::EBO_POS) & hgcaldigi::ECONDFlag::EBO_MASK);
0027 }
0028 inline uint8_t htFlag(uint8_t econdFlag) {
0029 return ((econdFlag >> hgcaldigi::ECONDFlag::HT_POS) & hgcaldigi::ECONDFlag::HT_MASK);
0030 }
0031 inline bool expectedFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITE_POS) & 0b1); }
0032 inline bool StatFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITS_POS) & 0b1); }
0033
0034
0035 GENERATE_SOA_LAYOUT(HGCalECONDPacketInfoSoALayout,
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 SOA_COLUMN(uint16_t, cbFlag),
0046
0047
0048
0049
0050
0051
0052
0053 SOA_COLUMN(uint8_t, econdFlag),
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064 SOA_COLUMN(uint8_t, exception),
0065
0066
0067
0068 SOA_COLUMN(uint32_t, location),
0069
0070
0071
0072 SOA_COLUMN(uint16_t, payloadLength),
0073 SOA_EIGEN_COLUMN(Matrix, cm))
0074 using HGCalECONDPacketInfoSoA = HGCalECONDPacketInfoSoALayout<>;
0075 }
0076
0077 #endif